From 64ffde996061ee46fc925cd571d10fb4039e4e13 Mon Sep 17 00:00:00 2001 From: sehugg Date: Mon, 19 Oct 2026 10:39:45 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=208bitwork?= =?UTF-8?q?shop/8bitworkshop@09d99f2c3028e27b397df8471baec29975ec154b=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- css/ui.css | 6 + ...{apple2-KBEJHM6Z.js => apple2-RKL5OQLE.js} | 4 +- ...KBEJHM6Z.js.map => apple2-RKL5OQLE.js.map} | 0 gen/{arm32-KWBC45CY.js => arm32-SQFCAWO3.js} | 4 +- ...-KWBC45CY.js.map => arm32-SQFCAWO3.js.map} | 0 ...cade-YPJ5JSVL.js => astrocade-CFGBJILJ.js} | 4 +- ...5JSVL.js.map => astrocade-CFGBJILJ.js.map} | 0 ...7800-ISTONEBP.js => atari7800-ZOUJP6JR.js} | 4 +- ...ONEBP.js.map => atari7800-ZOUJP6JR.js.map} | 0 ...{atari8-CM7XWBCH.js => atari8-C234KZYT.js} | 4 +- ...CM7XWBCH.js.map => atari8-C234KZYT.js.map} | 0 gen/{c64-4QH6N5TU.js => c64-KUYP5S4X.js} | 4 +- ...64-4QH6N5TU.js.map => c64-KUYP5S4X.js.map} | 0 ...nnelf-EKQFKL6Q.js => channelf-XZIEWXOD.js} | 4 +- ...QFKL6Q.js.map => channelf-XZIEWXOD.js.map} | 0 gen/{chunk-MQGCXKDS.js => chunk-3H6WIH6E.js} | 4 +- ...-MQGCXKDS.js.map => chunk-3H6WIH6E.js.map} | 0 gen/chunk-4YTESWOC.js | 30 ++++ gen/chunk-4YTESWOC.js.map | 7 + gen/chunk-FFJHITEL.js | 30 ---- gen/chunk-FFJHITEL.js.map | 7 - gen/{chunk-UNDRK5PG.js => chunk-JELKPLZC.js} | 4 +- ...-UNDRK5PG.js.map => chunk-JELKPLZC.js.map} | 0 gen/{chunk-Q6XQLGXR.js => chunk-PKBI5W34.js} | 4 +- ...-Q6XQLGXR.js.map => chunk-PKBI5W34.js.map} | 0 ...{coleco-OJFZRPF2.js => coleco-NPYYZM2X.js} | 4 +- ...OJFZRPF2.js.map => coleco-NPYYZM2X.js.map} | 0 gen/common/audio.js | 83 +++++++++- gen/common/audio.js.map | 2 +- gen/{cpc-PND5VPIB.js => cpc-BDRGBH6L.js} | 4 +- ...pc-PND5VPIB.js.map => cpc-BDRGBH6L.js.map} | 0 gen/{devel-NF5PPKHA.js => devel-DS2JT5JJ.js} | 4 +- ...-NF5PPKHA.js.map => devel-DS2JT5JJ.js.map} | 0 gen/embedui.js | 2 +- gen/{exidy-EY3YDB6L.js => exidy-XIUHGVKQ.js} | 4 +- ...-EY3YDB6L.js.map => exidy-XIUHGVKQ.js.map} | 0 ...axian-574VKGFX.js => galaxian-KOF65FZ3.js} | 4 +- ...4VKGFX.js.map => galaxian-KOF65FZ3.js.map} | 0 gen/{gb-QINPLCGV.js => gb-4WE7DNZW.js} | 4 +- ...{gb-QINPLCGV.js.map => gb-4WE7DNZW.js.map} | 0 gen/ide/ui.js | 23 +++ gen/ide/ui.js.map | 2 +- gen/{kim1-LJE4QR3M.js => kim1-AISOICBO.js} | 4 +- ...1-LJE4QR3M.js.map => kim1-AISOICBO.js.map} | 0 gen/{mcr-4QQEKZH5.js => mcr-OVINHUAG.js} | 4 +- ...cr-4QQEKZH5.js.map => mcr-OVINHUAG.js.map} | 0 gen/{msx-JFMR6U4A.js => msx-H6UPVVEE.js} | 4 +- ...sx-JFMR6U4A.js.map => msx-H6UPVVEE.js.map} | 0 ...080bw-ZZ2TCUYV.js => mw8080bw-3UNGEVVC.js} | 4 +- ...2TCUYV.js.map => mw8080bw-3UNGEVVC.js.map} | 0 gen/{nes-KNS3DDZZ.js => nes-ID4YFIRR.js} | 4 +- ...es-KNS3DDZZ.js.map => nes-ID4YFIRR.js.map} | 0 ...{pacman-5A7HXGRT.js => pacman-I4CSCLAQ.js} | 4 +- ...5A7HXGRT.js.map => pacman-I4CSCLAQ.js.map} | 0 gen/{pce-7DNGDGLS.js => pce-JCSZGFZE.js} | 4 +- ...ce-7DNGDGLS.js.map => pce-JCSZGFZE.js.map} | 0 gen/{sms-53SPECTY.js => sms-VRS2E636.js} | 4 +- ...ms-53SPECTY.js.map => sms-VRS2E636.js.map} | 0 ...i-VGRKDSAC.js => sound_konami-7HJCEIDB.js} | 4 +- ...AC.js.map => sound_konami-7HJCEIDB.js.map} | 0 ...RA4OKZ2H.js => sound_williams-BAYSXQOA.js} | 4 +- ....js.map => sound_williams-BAYSXQOA.js.map} | 0 gen/src/common/audio.js | 83 +++++++++- gen/src/common/audio.js.map | 2 +- gen/src/ide/ui.js | 23 +++ gen/src/ide/ui.js.map | 2 +- gen/test/unit/testaudio.js | 47 ++++++ gen/test/unit/testaudio.js.map | 2 +- gen/ui.js | 142 +++++++++--------- gen/ui.js.map | 6 +- gen/{vcs-WW5CTLPM.js => vcs-WPVNDSYO.js} | 4 +- ...cs-WW5CTLPM.js.map => vcs-WPVNDSYO.js.map} | 0 gen/vector-IN7XZ7UY.js | 2 + ...RHDIYCTV.js.map => vector-IN7XZ7UY.js.map} | 2 +- gen/vector-RHDIYCTV.js | 2 - ...ectrex-JTHLKXJ5.js => vectrex-MBXYZA7J.js} | 4 +- ...THLKXJ5.js.map => vectrex-MBXYZA7J.js.map} | 0 ...erilog-SIMIKVTX.js => verilog-TQARZKQO.js} | 4 +- ...IMIKVTX.js.map => verilog-TQARZKQO.js.map} | 0 gen/{vic20-CSSBR2HQ.js => vic20-J6H7NL3P.js} | 4 +- ...-CSSBR2HQ.js.map => vic20-J6H7NL3P.js.map} | 0 ...icdual-XMXP2GDR.js => vicdual-YSEHHGWL.js} | 4 +- ...MXP2GDR.js.map => vicdual-YSEHHGWL.js.map} | 0 ...liams-E5LRE2GA.js => williams-4C24P37E.js} | 4 +- ...LRE2GA.js.map => williams-4C24P37E.js.map} | 0 ...chine-XLBF33XO.js => zmachine-ETVX7HXB.js} | 4 +- ...BF33XO.js.map => zmachine-ETVX7HXB.js.map} | 0 gen/{zx-XGKGGZ4C.js => zx-VTTLD5PT.js} | 4 +- ...{zx-XGKGGZ4C.js.map => zx-VTTLD5PT.js.map} | 0 index.html | 1 + src/common/audio.ts | 83 +++++++++- src/ide/ui.ts | 21 +++ 93 files changed, 541 insertions(+), 207 deletions(-) rename gen/{apple2-KBEJHM6Z.js => apple2-RKL5OQLE.js} (99%) rename gen/{apple2-KBEJHM6Z.js.map => apple2-RKL5OQLE.js.map} (100%) rename gen/{arm32-KWBC45CY.js => arm32-SQFCAWO3.js} (99%) rename gen/{arm32-KWBC45CY.js.map => arm32-SQFCAWO3.js.map} (100%) rename gen/{astrocade-YPJ5JSVL.js => astrocade-CFGBJILJ.js} (99%) rename gen/{astrocade-YPJ5JSVL.js.map => astrocade-CFGBJILJ.js.map} (100%) rename gen/{atari7800-ISTONEBP.js => atari7800-ZOUJP6JR.js} (98%) rename gen/{atari7800-ISTONEBP.js.map => atari7800-ZOUJP6JR.js.map} (100%) rename gen/{atari8-CM7XWBCH.js => atari8-C234KZYT.js} (99%) rename gen/{atari8-CM7XWBCH.js.map => atari8-C234KZYT.js.map} (100%) rename gen/{c64-4QH6N5TU.js => c64-KUYP5S4X.js} (98%) rename gen/{c64-4QH6N5TU.js.map => c64-KUYP5S4X.js.map} (100%) rename gen/{channelf-EKQFKL6Q.js => channelf-XZIEWXOD.js} (98%) rename gen/{channelf-EKQFKL6Q.js.map => channelf-XZIEWXOD.js.map} (100%) rename gen/{chunk-MQGCXKDS.js => chunk-3H6WIH6E.js} (73%) rename gen/{chunk-MQGCXKDS.js.map => chunk-3H6WIH6E.js.map} (100%) create mode 100644 gen/chunk-4YTESWOC.js create mode 100644 gen/chunk-4YTESWOC.js.map delete mode 100644 gen/chunk-FFJHITEL.js delete mode 100644 gen/chunk-FFJHITEL.js.map rename gen/{chunk-UNDRK5PG.js => chunk-JELKPLZC.js} (98%) rename gen/{chunk-UNDRK5PG.js.map => chunk-JELKPLZC.js.map} (100%) rename gen/{chunk-Q6XQLGXR.js => chunk-PKBI5W34.js} (99%) rename gen/{chunk-Q6XQLGXR.js.map => chunk-PKBI5W34.js.map} (100%) rename gen/{coleco-OJFZRPF2.js => coleco-NPYYZM2X.js} (95%) rename gen/{coleco-OJFZRPF2.js.map => coleco-NPYYZM2X.js.map} (100%) rename gen/{cpc-PND5VPIB.js => cpc-BDRGBH6L.js} (96%) rename gen/{cpc-PND5VPIB.js.map => cpc-BDRGBH6L.js.map} (100%) rename gen/{devel-NF5PPKHA.js => devel-DS2JT5JJ.js} (97%) rename gen/{devel-NF5PPKHA.js.map => devel-DS2JT5JJ.js.map} (100%) rename gen/{exidy-EY3YDB6L.js => exidy-XIUHGVKQ.js} (98%) rename gen/{exidy-EY3YDB6L.js.map => exidy-XIUHGVKQ.js.map} (100%) rename gen/{galaxian-574VKGFX.js => galaxian-KOF65FZ3.js} (97%) rename gen/{galaxian-574VKGFX.js.map => galaxian-KOF65FZ3.js.map} (100%) rename gen/{gb-QINPLCGV.js => gb-4WE7DNZW.js} (99%) rename gen/{gb-QINPLCGV.js.map => gb-4WE7DNZW.js.map} (100%) rename gen/{kim1-LJE4QR3M.js => kim1-AISOICBO.js} (97%) rename gen/{kim1-LJE4QR3M.js.map => kim1-AISOICBO.js.map} (100%) rename gen/{mcr-4QQEKZH5.js => mcr-OVINHUAG.js} (96%) rename gen/{mcr-4QQEKZH5.js.map => mcr-OVINHUAG.js.map} (100%) rename gen/{msx-JFMR6U4A.js => msx-H6UPVVEE.js} (98%) rename gen/{msx-JFMR6U4A.js.map => msx-H6UPVVEE.js.map} (100%) rename gen/{mw8080bw-ZZ2TCUYV.js => mw8080bw-3UNGEVVC.js} (95%) rename gen/{mw8080bw-ZZ2TCUYV.js.map => mw8080bw-3UNGEVVC.js.map} (100%) rename gen/{nes-KNS3DDZZ.js => nes-ID4YFIRR.js} (99%) rename gen/{nes-KNS3DDZZ.js.map => nes-ID4YFIRR.js.map} (100%) rename gen/{pacman-5A7HXGRT.js => pacman-I4CSCLAQ.js} (98%) rename gen/{pacman-5A7HXGRT.js.map => pacman-I4CSCLAQ.js.map} (100%) rename gen/{pce-7DNGDGLS.js => pce-JCSZGFZE.js} (99%) rename gen/{pce-7DNGDGLS.js.map => pce-JCSZGFZE.js.map} (100%) rename gen/{sms-53SPECTY.js => sms-VRS2E636.js} (96%) rename gen/{sms-53SPECTY.js.map => sms-VRS2E636.js.map} (100%) rename gen/{sound_konami-VGRKDSAC.js => sound_konami-7HJCEIDB.js} (93%) rename gen/{sound_konami-VGRKDSAC.js.map => sound_konami-7HJCEIDB.js.map} (100%) rename gen/{sound_williams-RA4OKZ2H.js => sound_williams-BAYSXQOA.js} (92%) rename gen/{sound_williams-RA4OKZ2H.js.map => sound_williams-BAYSXQOA.js.map} (100%) rename gen/{vcs-WW5CTLPM.js => vcs-WPVNDSYO.js} (99%) rename gen/{vcs-WW5CTLPM.js.map => vcs-WPVNDSYO.js.map} (100%) create mode 100644 gen/vector-IN7XZ7UY.js rename gen/{vector-RHDIYCTV.js.map => vector-IN7XZ7UY.js.map} (99%) delete mode 100644 gen/vector-RHDIYCTV.js rename gen/{vectrex-JTHLKXJ5.js => vectrex-MBXYZA7J.js} (97%) rename gen/{vectrex-JTHLKXJ5.js.map => vectrex-MBXYZA7J.js.map} (100%) rename gen/{verilog-SIMIKVTX.js => verilog-TQARZKQO.js} (99%) rename gen/{verilog-SIMIKVTX.js.map => verilog-TQARZKQO.js.map} (100%) rename gen/{vic20-CSSBR2HQ.js => vic20-J6H7NL3P.js} (96%) rename gen/{vic20-CSSBR2HQ.js.map => vic20-J6H7NL3P.js.map} (100%) rename gen/{vicdual-XMXP2GDR.js => vicdual-YSEHHGWL.js} (94%) rename gen/{vicdual-XMXP2GDR.js.map => vicdual-YSEHHGWL.js.map} (100%) rename gen/{williams-E5LRE2GA.js => williams-4C24P37E.js} (98%) rename gen/{williams-E5LRE2GA.js.map => williams-4C24P37E.js.map} (100%) rename gen/{zmachine-XLBF33XO.js => zmachine-ETVX7HXB.js} (98%) rename gen/{zmachine-XLBF33XO.js.map => zmachine-ETVX7HXB.js.map} (100%) rename gen/{zx-XGKGGZ4C.js => zx-VTTLD5PT.js} (96%) rename gen/{zx-XGKGGZ4C.js.map => zx-VTTLD5PT.js.map} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d417eb2..74080bf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,7 +44,7 @@ See [extension/CHANGELOG.md](extension/CHANGELOG.md). - "Share Playable Link" packs the game into the URL fragment instead of the query string, so it no longer hits the web server's ~8 KB request-line limit, and encodes it as URL-safe Base64 to avoid percent-encoding. Old `?r=` links still play. - Removed the Markdown/Showdown platform, the old `script` platform, Google Analytics, Sentry (replaced with a new error-reporting endpoint) and the HTTPS redirect. - "Highlight Executed Lines" draws a hot/cold heat map: lines run since the last update are colored by how often they have run (blue = cold, red = hot) and disappear once they stop executing. -- Audio reliably unlocks under the browser autoplay policy: the emulator resumes its `AudioContext` on the first click/keypress anywhere on the page, not only when the emulator canvas gets focus. +- Audio reliably unlocks under the browser autoplay policy: the emulator resumes its `AudioContext` on the first click/keypress anywhere on the page, not only when the emulator canvas gets focus. A hint under the emulator screen says so until it is unlocked. - Memory Map: a Modules column shows each object file's slice of every SDCC or cc65 segment (`Segment.modules`; SDCC from the `.rel` sizes in link order, with the remainder as `(libraries)`; cc65 from the ld65 map's module list, library members by name). - Memory Browser: a symbol label covers only its reported size, and an unsized symbol stops at its segment boundary instead of running into the next segment. diff --git a/css/ui.css b/css/ui.css index 0c030a3b..405c6b76 100644 --- a/css/ui.css +++ b/css/ui.css @@ -1029,6 +1029,12 @@ div.asset_toolbar { margin-top: auto; margin-bottom: 2em; } +.audio-hint { + color: #ccc; + margin-top: 0.5em; + margin-left: 1em; + margin-right: 1em; +} .control-key { border: 2px solid rgba(0,0,0,0.2); border-radius: 0.6em; diff --git a/gen/apple2-KBEJHM6Z.js b/gen/apple2-RKL5OQLE.js similarity index 99% rename from gen/apple2-KBEJHM6Z.js rename to gen/apple2-RKL5OQLE.js index 04c85004..2870854b 100644 --- a/gen/apple2-KBEJHM6Z.js +++ b/gen/apple2-RKL5OQLE.js @@ -1,4 +1,4 @@ -import{a as f0}from"./chunk-J4XYKWJN.js";import{a as u0}from"./chunk-UNDRK5PG.js";import{B as h0,I as o0,d as r0,e as i0,n as c0,t as n0}from"./chunk-FFJHITEL.js";import{h as U}from"./chunk-UXRCACYH.js";import{P as L,g as x0,i as a0,l as e0,m as t0,s as s0,u as b}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var P=class extends n0{constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.cpuCyclesPaddleUnit=11;this.cpuCyclesPaddleMax=255*this.cpuCyclesPaddleUnit;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new c0;this.grdirty=new Array(384);this.grparams={dirty:this.grdirty,grswitch:F,mem:this.ram};this.kbdlatch=0;this.soundstate=0;this.auxRAMselected=!1;this.auxRAMbank=1;this.writeinhibit=!0;this.bank2rdoffset=0;this.bank2wroffset=0;this.paddleValues=[0,0,0,0];this.paddleButtons=[!1,!1,!1];this.paddleLastTriggered=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var e=this.cpu.getPC();if(e>=50688&&e<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,e)=>{}};this.loadBIOS(new e0().decode(t0(atob(k0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96,this.mb=new Y(this.cpuFrequency),this.slots[4]=this.mb}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),paddleValues:this.paddleValues.slice(),paddleButtons:this.paddleButtons.slice(),inputs:this.ram.slice(0,0)}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var e=0;e>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var e=x>>8&7;return(this.slots[e]&&this.slots[e].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var e=x>>4&15;switch(e){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:var s=(x&7)-1;return this.paddleButtons[s]?this.floatbus()|128:this.floatbus()&127;case 4:case 5:case 6:case 7:var t=(x&15)-4,n=this.frameCycles-this.paddleLastTriggered;return n=49408&&x<51200){var e=x>>8&7;return(this.slots[e]&&this.slots[e].readROM(x&255))|0}return this.floatbus()}write(x,e){if(x&=65535,e&=255,x<49152)this.ram[x]=e,this.grdirty[x>>7]=1;else if(x<49296)this.read(x);else if(x<49408){var s=x>>4&15;this.slots[s-8]&&this.slots[s-8].write(x&15,e),this.probe.logIOWrite(x,e)}else if(x>=49408&&x<51200){var s=x>>8&7,t=this.slots[s];t&&t.writeROM&&t.writeROM(x&255,e),this.probe.logIOWrite(x,e)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=e:this.ram[x+this.bank2wroffset]=e)}floatbus(){var x=this.frameCycles,e=Math.floor(x/65),s=Math.floor(x%65),t=this.ap2disp.getAddressForScanline(e);return this.readConst(t+s)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new g0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var e=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),e}postFrame(){this.paddleLastTriggered-=this.frameCycles,this.paddleLastTriggered<-this.cpuCyclesPaddleMax&&(this.paddleLastTriggered=-this.cpuCyclesPaddleMax)}advanceCPU(){return this.audio.feedSample(this.soundstate,1),this.mb&&(this.mb.step(),this.mb.irq()&&this.cpu.IRQ()),super.advanceCPU()}startAudio(){this.mb&&this.mb.startAudio()}stopAudio(){this.mb&&this.mb.stopAudio()}setKeyInput(x,e,s){if(console.log(`setKeyInput: ${x} ${e} ${s}`),s&1){switch(e=0,x){case 16:case 17:case 18:case 91:return;case 8:if(e=8,s&2){this.cpu.reset();return}break;case 13:e=13;break;case 27:e=27;break;case 37:e=8;break;case 39:e=21;break;case 38:e=11;break;case 40:e=10;break;case 48:e=s&2?41:48;break;case 49:e=s&2?33:49;break;case 50:e=s&2?64:50;break;case 51:e=s&2?35:51;break;case 52:e=s&2?36:52;break;case 53:e=s&2?37:53;break;case 54:e=s&2?94:54;break;case 55:e=s&2?38:55;break;case 56:e=s&2?42:56;break;case 57:e=s&2?40:57;break;case 61:e=s&2?95:45;break;case 173:e=s&2?43:61;break;case 59:e=s&2?58:59;break;case 186:e=s&2?58:59;break;case 187:e=s&2?43:61;break;case 188:e=s&2?60:44;break;case 189:e=s&2?95:45;break;case 190:e=s&2?62:46;break;case 191:e=s&2?63:47;break;case 222:e=s&2?34:39;break;default:e=x,e>=97&&e<=122&&(e-=32),e>=65&&e<91&&s&4&&(e-=64)}e&&(this.kbdlatch=(e|128)&255)}}setPaddleInput(x,e){x>=0&&x=0&&x{var e=this.cpu.getPC();if(e>=50688&&e<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,e)=>{}};this.loadBIOS(new e0().decode(t0(atob(k0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96,this.mb=new Y(this.cpuFrequency),this.slots[4]=this.mb}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),paddleValues:this.paddleValues.slice(),paddleButtons:this.paddleButtons.slice(),inputs:this.ram.slice(0,0)}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var e=0;e>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var e=x>>8&7;return(this.slots[e]&&this.slots[e].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var e=x>>4&15;switch(e){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:var s=(x&7)-1;return this.paddleButtons[s]?this.floatbus()|128:this.floatbus()&127;case 4:case 5:case 6:case 7:var t=(x&15)-4,n=this.frameCycles-this.paddleLastTriggered;return n=49408&&x<51200){var e=x>>8&7;return(this.slots[e]&&this.slots[e].readROM(x&255))|0}return this.floatbus()}write(x,e){if(x&=65535,e&=255,x<49152)this.ram[x]=e,this.grdirty[x>>7]=1;else if(x<49296)this.read(x);else if(x<49408){var s=x>>4&15;this.slots[s-8]&&this.slots[s-8].write(x&15,e),this.probe.logIOWrite(x,e)}else if(x>=49408&&x<51200){var s=x>>8&7,t=this.slots[s];t&&t.writeROM&&t.writeROM(x&255,e),this.probe.logIOWrite(x,e)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=e:this.ram[x+this.bank2wroffset]=e)}floatbus(){var x=this.frameCycles,e=Math.floor(x/65),s=Math.floor(x%65),t=this.ap2disp.getAddressForScanline(e);return this.readConst(t+s)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new g0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var e=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),e}postFrame(){this.paddleLastTriggered-=this.frameCycles,this.paddleLastTriggered<-this.cpuCyclesPaddleMax&&(this.paddleLastTriggered=-this.cpuCyclesPaddleMax)}advanceCPU(){return this.audio.feedSample(this.soundstate,1),this.mb&&(this.mb.step(),this.mb.irq()&&this.cpu.IRQ()),super.advanceCPU()}startAudio(){this.mb&&this.mb.startAudio()}stopAudio(){this.mb&&this.mb.stopAudio()}setKeyInput(x,e,s){if(console.log(`setKeyInput: ${x} ${e} ${s}`),s&1){switch(e=0,x){case 16:case 17:case 18:case 91:return;case 8:if(e=8,s&2){this.cpu.reset();return}break;case 13:e=13;break;case 27:e=27;break;case 37:e=8;break;case 39:e=21;break;case 38:e=11;break;case 40:e=10;break;case 48:e=s&2?41:48;break;case 49:e=s&2?33:49;break;case 50:e=s&2?64:50;break;case 51:e=s&2?35:51;break;case 52:e=s&2?36:52;break;case 53:e=s&2?37:53;break;case 54:e=s&2?94:54;break;case 55:e=s&2?38:55;break;case 56:e=s&2?42:56;break;case 57:e=s&2?40:57;break;case 61:e=s&2?95:45;break;case 173:e=s&2?43:61;break;case 59:e=s&2?58:59;break;case 186:e=s&2?58:59;break;case 187:e=s&2?43:61;break;case 188:e=s&2?60:44;break;case 189:e=s&2?95:45;break;case 190:e=s&2?62:46;break;case 191:e=s&2?63:47;break;case 222:e=s&2?34:39;break;default:e=x,e>=97&&e<=122&&(e-=32),e>=65&&e<91&&s&4&&(e-=64)}e&&(this.kbdlatch=(e|128)&255)}}setPaddleInput(x,e){x>=0&&x=0&&x>1&3,e==(t-1&3)?t>0&&t--:e==(t+1&3)&&t>1],console.log("track",t/2)):this.track_data=null,this.track=t;break;case 8:this.motor=!1;break;case 9:this.motor=!0;break;case 10:break;case 11:break;case 15:this.read_mode=!1;case 12:if(this.read_mode)return this.read_latch();break;case 14:this.read_mode=!0;case 13:return x>=0&&!this.read_mode&&!this.write_protect&&this.write_latch(x),this.write_protect?128:0}return this.emu.floatbus()}},N=[150,151,154,155,157,158,159,166,167,171,172,173,174,175,178,179,180,181,182,183,185,186,187,188,189,190,191,203,205,206,207,211,214,215,217,218,219,220,221,222,223,229,230,231,233,234,235,236,237,238,239,242,243,244,245,246,247,249,250,251,252,253,254,255],B0=[0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15];function D0(c,a,x,e,s,t,n){var h,p,k,l,A=new Uint8Array(258);for(l=0,h=0;h<14;h++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=150,t[n++]=c>>1|170,t[n++]=c|170,p=c,t[n++]=a>>1|170,t[n++]=a|170,p^=a,t[n++]=x>>1|170,t[n++]=x|170,p^=x,t[n++]=p>>1|170,t[n++]=p|170,t[n++]=222,t[n++]=170,t[n++]=235,h=0;h<6;h++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=173,h=0;h<256;h++)A[h]=e[h+s]&255;for(A[256]=0,A[257]=0,k=0,h=0;h<86;h++)l=(A[h]&1)<<1,l|=(A[h]&2)>>1,l|=(A[h+86]&1)<<3,l|=(A[h+86]&2)<<1,l|=(A[h+172]&1)<<5,l|=(A[h+172]&2)<<3,t[n++]=N[l^k],k=l;for(h=0;h<256;h++)l=A[h]>>2,t[n++]=N[l^k],k=l;t[n++]=N[l],t[n++]=222,t[n++]=170,t[n++]=235}function w0(c,a,x){for(var e=new Uint8Array(_),s=0,t=0;t<16;t++)D0(c,a,t,x,B0[t]<<8,e,s),s+=S0;for(;s<_;)e[s++]=255;return e}var E=0,v0=1,I0=2,M0=3,Z=class{constructor(a,x){this.via=new f0(this);this.ayFunc=E;this.addressLatched=!1;this.ay=new i0(a),this.ay.psg.setClock(x*2)}reset(){this.via.reset(),this.ay.reset(),this.ayFunc=E,this.addressLatched=!1}step(){this.via.step0(),this.via.step1()}irq(){return(this.via.ifr&128)!=0}read(a,x=!1){return this.via.read(a&15,x)}write(a,x){this.via.write(a&15,x)}saveState(){return{via:this.via.saveState(),ayFunc:this.ayFunc,addressLatched:this.addressLatched,ayRegs:this.ay.psg.register.slice(0)}}loadState(a){this.via.loadState(a.via),this.ayFunc=a.ayFunc,this.addressLatched=a.addressLatched,this.ay.psg.register.set(a.ayRegs)}readPortB(){return 0}readPortA(){if(this.ayFunc==v0&&this.addressLatched)return this.ay.readData()}writePortB(a){if((a&4)==0){this.ay.reset(),this.ayFunc=E,this.addressLatched=!1;return}let x=a&3;if(this.ayFunc==E)switch(x){case I0:this.addressLatched&&this.ay.setData(this.via.ora);break;case M0:this.via.ora<=15&&(this.ay.selectRegister(this.via.ora),this.addressLatched=!0);break}this.ayFunc=x}writePortA(a){}},Y=class{constructor(a){this.units=[];this.master=new r0;for(var x=0;x<2;x++){var e=new Z(this.master,a);e.reset(),this.units.push(e)}}unit(a){return this.units[a>>7&1]}startAudio(){this.master.start()}stopAudio(){this.master.stop()}reset(){for(var a of this.units)a.reset()}step(){for(var a of this.units)a.step()}irq(){return this.units.some(a=>a.irq())}readROM(a){return this.unit(a).read(a)}readConst(a){return this.unit(a).read(a,!0)}read(a){return this.unit(a).read(a)}write(a,x){this.unit(a).write(a,x)}writeROM(a,x){this.unit(a).write(a,x)}saveState(){return this.units.map(a=>a.saveState())}loadState(a){for(var x=0;x>e,i.shifterCarryOut=a&1<>31?(i.shifterOperand=4294967295,i.shifterCarryOut=2147483648):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1Immediate=function(r){var t=this.cpu;return function(){t.shifterOperand=r,t.shifterCarryOut=t.cpsrC}};n.prototype.constructAddressingMode1ImmediateRotate=function(r,t){var i=this.cpu;return function(){i.shifterOperand=r>>>t|r<<32-t,i.shifterCarryOut=i.shifterOperand>>31}};n.prototype.constructAddressingMode1LSL=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a<>>e,i.shifterCarryOut=a&1<>31):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1ROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4);var c=e&31;e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):c?(i.shifterOperand=s[t]>>>c|s[t]<<32-c,i.shifterCarryOut=a&1<>31)}};n.prototype.constructAddressingMode23Immediate=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Immediate[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode23Register=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Register[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode2RegisterShifted=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode2RegisterShifted[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode4=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[t]+r;return e}};n.prototype.constructAddressingMode4Writeback=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(c){var u=a[i]+r;return c&&s&&e.mmu.store32(a[i]+r-4,a[i]),a[i]+=t,u}};n.prototype.constructNOP=function(){return this.writesPC=!1,function(){}};n.prototype.constructADC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0);a[r]=(a[t]>>>0)+c}}};n.prototype.constructADCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0),u=(a[t]>>>0)+c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=u>4294967295,e.cpsrV=a[t]>>31==c>>31&&a[t]>>31!=u>>31&&c>>31!=u>>31),a[r]=u}}};n.prototype.constructADD=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=(a[t]>>>0)+(e.shifterOperand>>>0))}};n.prototype.constructADDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructAND=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand)}};n.prototype.constructANDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructB=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[15]+=r}};n.prototype.constructBIC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand)}};n.prototype.constructBICS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructBL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[14]=s[15]-4,s[15]+=r}};n.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),i.switchExecMode(s[r]&1),s[15]=s[r]&4294967294}};n.prototype.constructCMN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31}}};n.prototype.constructCMP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31}}};n.prototype.constructEOR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand)}};n.prototype.constructEORS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructLDM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(e[F]=a.load32(c&4294967292),c+=4,++u);a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p=s.mode;s.switchMode(31);var F,R;for(F=r,R=0;F;F>>=1,++R)F&1&&(e[R]=a.load32(c&4294967292),c+=4,++u);s.switchMode(p),a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load32(a),s.mmu.wait32(a),++s.cycles}}};n.prototype.constructLDRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructMLA=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e()))if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t]}};n.prototype.constructMLAS=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t];a.cpsrN=c[r]>>31,a.cpsrZ=!(c[r]&4294967295)}}};n.prototype.constructMOV=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand)}};n.prototype.constructMOVS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructMRS=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch32(e[15]),!(i&&!i())&&(t?e[r]=s.spsr:e[r]=s.packCPSR())}};n.prototype.constructMSR=function(r,t,i,s,e){var a=this.cpu,c=a.gprs,u=i&65536,p=i&524288;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){var F;i&33554432?F=s:F=c[r];var R=(u?255:0)|(p?4278190080:0);t?(R&=Cr|lr|Tr,a.spsr=a.spsr&~R|F&R):(R&Cr&&(a.cpsrN=F>>31,a.cpsrZ=F&1073741824,a.cpsrC=F&536870912,a.cpsrV=F&268435456),a.mode!=16&&R&lr&&(a.switchMode(F&15|16),a.cpsrI=F&128,a.cpsrF=F&64))}}};n.prototype.constructMUL=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s()))if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t]}};n.prototype.constructMULS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t];e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295)}}};n.prototype.constructMVN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand)}};n.prototype.constructMVNS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructORR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand)}};n.prototype.constructORRS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructRSB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand-a[t])}};n.prototype.constructRSBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=e.shifterOperand-a[t];r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterOperand>>>0>=a[t]>>>0,e.cpsrV=e.shifterOperand>>31!=a[t]>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructRSC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1);a[r]=(e.shifterOperand>>>0)-c}}};n.prototype.constructRSCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1),u=(e.shifterOperand>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=e.shifterOperand>>>0>=u>>>0,e.cpsrV=e.shifterOperand>>31!=c>>31&&e.shifterOperand>>31!=u>>31),a[r]=u}}};n.prototype.constructSBC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1);a[r]=(a[t]>>>0)-c}}};n.prototype.constructSBCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1),u=(a[t]>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=a[t]>>>0>=u>>>0,e.cpsrV=a[t]>>31!=c>>31&&a[t]>>31!=u>>31),a[r]=u}}};n.prototype.constructSMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c)}}};n.prototype.constructSMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c)}}};n.prototype.constructSMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSTM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=t(!0),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(a.store32(c,e[F]),c+=4,++u);a.waitMulti32(c,u)}};n.prototype.constructSTMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=s.mode,u=t(!0),p=0,F,R;for(s.switchMode(31),F=r,R=0;F;F>>=1,++R)F&1&&(a.store32(u,e[R]),u+=4,++p);s.switchMode(c),a.waitMulti32(u,p)}};n.prototype.constructSTR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store32(a,e[r]),s.mmu.wait32(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store8(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store16(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSUB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]-e.shifterOperand)}};n.prototype.constructSUBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31),a[r]=c}}};n.prototype.constructSWI=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.irq.swi32(r),i.mmu.waitPrefetch32(s[15])}};n.prototype.constructSWP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait32(a[t]),e.mmu.wait32(a[t]);var c=e.mmu.load32(a[t]);e.mmu.store32(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructSWPB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait(a[t]),e.mmu.wait(a[t]);var c=e.mmu.loadU8(a[t]);e.mmu.store8(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructTEQ=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]^e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructTST=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]&e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructUMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c}}};n.prototype.constructUMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructUMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0}}};n.prototype.constructUMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructVFP3Register=function(r,t,i,s,e,a,c){var u=this.cpu,p=e?u.dfprs:u.sfprs;return function(){if(u.mmu.waitPrefetch32(u.gprs[15]),!(r&&!r())){switch(t){case 2:if(a===0){p[s]=p[i]*p[c];return}break;case 3:switch(a){case 0:p[s]=p[i]+p[c];return;case 2:p[s]=p[i]-p[c];return}break;case 8:if(a===0){p[s]=p[i]/p[c];return}break}console.log("Unsupported instruction: "+E(t)+" "+E(a))}}};n.prototype.constructVCVT=function(r,t,i,s,e,a,c,u){var p=this.cpu,F=p.sfprs,R=p.dfprs,m=p.ifprs;return function(){if(p.mmu.waitPrefetch32(p.gprs[15]),!(r&&!r())){var v,o;s&&e?v=R[i]:s?v=F[i]:v=m[i],s?o=c?Math.floor(v):Math.round(v):o=v,s?m[t]=o:e?R[t]=o:F[t]=o}}};n.prototype.constructVCVTF=function(r,t,i,s){var e=this.cpu,a=e.sfprs,c=e.dfprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),!(r&&!r())){var u=s?c[i]:a[i];s?a[t]=u:c[t]=u}}};n.prototype.constructVLDR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?a[t]=e.mmu.load32(c):(a[t]=e.mmu.load32(c),a[t+1]=e.mmu.load32(c+4)),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVSTR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?e.mmu.store32(c,a[t]):(e.mmu.store32(c,a[t]),e.mmu.store32(c+4,a[t+1])),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVPUSH=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=e.gprs[13]-i*4;e.gprs[13]=c;for(let u=0;u>>0)+(i.cpsrC?1:0),a=s[r],c=(a>>>0)+e,u=a>>31,p=c>>31,F=e>>31;i.cpsrN=p,i.cpsrZ=!(c&4294967295),i.cpsrC=c>4294967295,i.cpsrV=u==F&&u!=p&&F!=p,s[r]=c}};h.prototype.constructADD1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!(e[t]>>31)&&(e[t]>>31^a)>>31&&a>>31,e[r]=a}};h.prototype.constructADD2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=!(s[r]>>31)&&(s[r]^e)>>31&&(t^e)>>31,s[r]=e}};h.prototype.constructADD3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+(e[i]>>>0);s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!((e[t]^e[i])>>31)&&(e[t]^a)>>31&&(e[i]^a)>>31,e[r]=a}};h.prototype.constructADD4=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]+=s[t]}};h.prototype.constructADD5=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=(s[15]&4294967292)+t}};h.prototype.constructADD6=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[13]+t}};h.prototype.constructADD7=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[13]+=r}};h.prototype.constructAND=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructASR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,s.cpsrC?e[r]=4294967295:e[r]=0):(s.cpsrC=e[t]&1<>i),s.cpsrN=e[r]>>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructASR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>=e):(i.cpsrC=s[r]>>31,i.cpsrC?s[r]=4294967295:s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructB1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),t()&&(s[15]+=r)}};h.prototype.constructB2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[15]+=r}};h.prototype.constructBIC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructBL1=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[14]=i[15]+r}};h.prototype.constructBL2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]);var s=i[15];i[15]=i[14]+(r<<1),i[14]=s-1}};h.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),i.switchExecMode(s[t]&1);var e=0;t==15&&(e=s[t]&2),s[15]=s[t]&4294967294-e}};h.prototype.constructCMN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+(s[t]>>>0);i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=s[r]>>31==s[t]>>31&&s[r]>>31!=e>>31&&s[t]>>31!=e>>31}};h.prototype.constructCMP1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31}};h.prototype.constructCMP2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=s[t],c=e-a,u=c>>31,p=e>>31;i.cpsrN=u,i.cpsrZ=!(c&4294967295),i.cpsrC=e>>>0>=a>>>0,i.cpsrV=p!=a>>31&&p!=u}};h.prototype.constructCMP3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=s[t]>>>0,i.cpsrV=(s[r]^s[t])>>31&&(s[r]^e)>>31}};h.prototype.constructEOR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]^s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLDMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)t&c&&(s[u]=i.mmu.load32(e),e+=4,++a);i.mmu.waitMulti32(e,a),1<>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSL2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<<32-e,s[r]<<=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]&1,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLSR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,e[r]=0):(s.cpsrC=e[t]&1<>>i),s.cpsrN=0,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>>=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]>>31,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMOV1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=t,i.cpsrN=t>>31,i.cpsrZ=!(t&4294967295)}};h.prototype.constructMOV2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=0,s.cpsrV=0,e[r]=a}};h.prototype.constructMOV3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[t]}};h.prototype.constructMUL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(i.mmu.waitPrefetch(s[15]),i.mmu.waitMul(s[t]),s[t]&4294901760&&s[r]&4294901760){var e=(s[r]&4294901760)*s[t]&4294967295,a=(s[r]&65535)*s[t]&4294967295;s[r]=e+a&4294967295}else s[r]*=s[t];i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMVN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructNEG=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=0>=e>>>0,i.cpsrV=s[t]>>31&&e>>31,s[r]=e}};h.prototype.constructORR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]|s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructPOP=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),++i.cycles;var e=s[13],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)r&c&&(i.mmu.waitSeq32(e),s[u]=i.mmu.load32(e),e+=4,++a);t&&(s[15]=i.mmu.load32(e)&4294967294,e+=4,++a),i.mmu.waitMulti32(e,a),s[13]=e}};h.prototype.constructPUSH=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[13]-4,a=0;i.mmu.waitPrefetch(s[15]),t&&(i.mmu.store32(e,s[14]),e-=4,++a);var c,u;for(c=128,u=7;c;c>>=1,--u)if(r&c){i.mmu.store32(e,s[u]),e-=4,++a;break}for(c>>=1,--u;c;c>>=1,--u)r&c&&(i.mmu.store32(e,s[u]),e-=4,++a);i.mmu.waitMulti32(e,a),s[13]=e+4}};h.prototype.constructROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;if(e){var a=e&31;a>0?(i.cpsrC=s[r]&1<>>a|s[r]<<32-a):i.cpsrC=s[r]>>31}i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructSBC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[t]>>>0)+(i.cpsrC?0:1),a=(s[r]>>>0)-e;i.cpsrN=a>>31,i.cpsrZ=!(a&4294967295),i.cpsrC=s[r]>>>0>=a>>>0,i.cpsrV=(s[r]^e)>>31&&(s[r]^a)>>31,s[r]=a}};h.prototype.constructSTMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.wait(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)if(t&c){i.mmu.store32(e,s[u]),e+=4,++a;break}for(c<<=1,++u;u<8;c<<=1,++u)t&c&&(i.mmu.store32(e,s[u]),e+=4,++a);i.mmu.waitMulti32(e,a),s[r]=e}};h.prototype.constructSTR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store32(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait32(a)}};h.prototype.constructSTR2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store32(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait32(e[t]+e[i])}};h.prototype.constructSTR3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.store32(s[13]+t,s[r]),i.mmu.wait(s[15]),i.mmu.wait32(s[13]+t)}};h.prototype.constructSTRB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store8(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRB2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store8(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSTRH1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store16(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRH2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store16(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSUB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=i,s.cpsrV=e[t]>>31&&(e[t]^a)>>31,e[r]=a}};h.prototype.constructSUB2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31,s[r]=e}};h.prototype.constructSUB3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-e[i];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=e[i]>>>0,s.cpsrV=e[t]>>31!=e[i]>>31&&e[t]>>31!=a>>31,e[r]=a}};h.prototype.constructSWI=function(r){var t=this.cpu,i=t.gprs;return function(){t.irq.swi(r),t.mmu.waitPrefetch(i[15])}};h.prototype.constructTST=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]&s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295)}};function A(){this.SP=13,this.LR=14,this.PC=15,this.MODE_ARM=0,this.MODE_THUMB=1,this.MODE_USER=16,this.MODE_FIQ=17,this.MODE_IRQ=18,this.MODE_SUPERVISOR=19,this.MODE_ABORT=23,this.MODE_UNDEFINED=27,this.MODE_SYSTEM=31,this.BANK_NONE=0,this.BANK_FIQ=1,this.BANK_IRQ=2,this.BANK_SUPERVISOR=3,this.BANK_ABORT=4,this.BANK_UNDEFINED=5,this.WORD_SIZE_ARM=4,this.WORD_SIZE_THUMB=2,this.BASE_RESET=0,this.BASE_UNDEF=4,this.BASE_SWI=8,this.BASE_PABT=12,this.BASE_DABT=16,this.BASE_IRQ=24,this.BASE_FIQ=28,this.armCompiler=new n(this),this.thumbCompiler=new h(this),this.generateConds(),this.gprs=new Int32Array(16),this.dfprs=new Float64Array(16),this.sfprs=new Float32Array(this.dfprs.buffer),this.ifprs=new Int32Array(this.dfprs.buffer)}A.prototype.resetCPU=function(r){for(var t=0;t<15;++t)this.gprs[t]=0;this.gprs[15]=r+4,this.dfprs.set(0),this.loadInstruction=this.loadInstructionArm,this.execMode=0,this.instructionWidth=4,this.mode=31,this.cpsrI=!1,this.cpsrF=!1,this.cpsrV=!1,this.cpsrC=!1,this.cpsrZ=!1,this.cpsrN=!1,this.bankedRegisters=[new Int32Array(7),new Int32Array(7),new Int32Array(2),new Int32Array(2),new Int32Array(2),new Int32Array(2)],this.spsr=0,this.bankedSPSRs=new Int32Array(6),this.cycles=0,this.shifterOperand=0,this.shifterCarryOut=0,this.page=null,this.pageId=0,this.pageRegion=-1,this.instruction=null,this.irq.clear();var i=this.gprs,s=this.mmu;this.step=function(){var e=this.instruction||(this.instruction=this.loadInstruction(i[15]-this.instructionWidth));if(i[15]+=this.instructionWidth,this.conditionPassed=!0,e(),!e.writesPC)this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next);else if(this.conditionPassed){var a=i[15]&=4294967294;this.execMode==0?(s.wait32(a),s.waitPrefetch32(a)):(s.wait(a),s.waitPrefetch(a)),i[15]+=this.instructionWidth,e.fixedJump?this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next):this.instruction=null}else this.instruction=null;this.irq.updateTimers()}};A.prototype.freeze=function(){return{PC:this.gprs[15]-this.instructionWidth,SP:this.gprs[13],gprs:[this.gprs[0],this.gprs[1],this.gprs[2],this.gprs[3],this.gprs[4],this.gprs[5],this.gprs[6],this.gprs[7],this.gprs[8],this.gprs[9],this.gprs[10],this.gprs[11],this.gprs[12],this.gprs[13],this.gprs[14],this.gprs[15]],sfprs:this.sfprs.slice(),dfprs:this.dfprs.slice(),ifprs:this.ifprs.slice(),mode:this.mode,cpsrI:this.cpsrI,cpsrF:this.cpsrF,cpsrV:this.cpsrV,cpsrC:this.cpsrC,cpsrZ:this.cpsrZ,cpsrN:this.cpsrN,bankedRegisters:[[this.bankedRegisters[0][0],this.bankedRegisters[0][1],this.bankedRegisters[0][2],this.bankedRegisters[0][3],this.bankedRegisters[0][4],this.bankedRegisters[0][5],this.bankedRegisters[0][6]],[this.bankedRegisters[1][0],this.bankedRegisters[1][1],this.bankedRegisters[1][2],this.bankedRegisters[1][3],this.bankedRegisters[1][4],this.bankedRegisters[1][5],this.bankedRegisters[1][6]],[this.bankedRegisters[2][0],this.bankedRegisters[2][1]],[this.bankedRegisters[3][0],this.bankedRegisters[3][1]],[this.bankedRegisters[4][0],this.bankedRegisters[4][1]],[this.bankedRegisters[5][0],this.bankedRegisters[5][1]]],spsr:this.spsr,bankedSPSRs:[this.bankedSPSRs[0],this.bankedSPSRs[1],this.bankedSPSRs[2],this.bankedSPSRs[3],this.bankedSPSRs[4],this.bankedSPSRs[5]],cycles:this.cycles,instructionWidth:this.instructionWidth}};A.prototype.defrost=function(r){this.instruction=null,this.page=null,this.pageId=0,this.pageRegion=-1,this.gprs[0]=r.gprs[0],this.gprs[1]=r.gprs[1],this.gprs[2]=r.gprs[2],this.gprs[3]=r.gprs[3],this.gprs[4]=r.gprs[4],this.gprs[5]=r.gprs[5],this.gprs[6]=r.gprs[6],this.gprs[7]=r.gprs[7],this.gprs[8]=r.gprs[8],this.gprs[9]=r.gprs[9],this.gprs[10]=r.gprs[10],this.gprs[11]=r.gprs[11],this.gprs[12]=r.gprs[12],this.gprs[13]=r.gprs[13],this.gprs[14]=r.gprs[14],this.gprs[15]=r.gprs[15],this.ifprs.set(r.ifprs),this.mode=r.mode,this.cpsrI=r.cpsrI,this.cpsrF=r.cpsrF,this.cpsrV=r.cpsrV,this.cpsrC=r.cpsrC,this.cpsrZ=r.cpsrZ,this.cpsrN=r.cpsrN,this.bankedRegisters[0][0]=r.bankedRegisters[0][0],this.bankedRegisters[0][1]=r.bankedRegisters[0][1],this.bankedRegisters[0][2]=r.bankedRegisters[0][2],this.bankedRegisters[0][3]=r.bankedRegisters[0][3],this.bankedRegisters[0][4]=r.bankedRegisters[0][4],this.bankedRegisters[0][5]=r.bankedRegisters[0][5],this.bankedRegisters[0][6]=r.bankedRegisters[0][6],this.bankedRegisters[1][0]=r.bankedRegisters[1][0],this.bankedRegisters[1][1]=r.bankedRegisters[1][1],this.bankedRegisters[1][2]=r.bankedRegisters[1][2],this.bankedRegisters[1][3]=r.bankedRegisters[1][3],this.bankedRegisters[1][4]=r.bankedRegisters[1][4],this.bankedRegisters[1][5]=r.bankedRegisters[1][5],this.bankedRegisters[1][6]=r.bankedRegisters[1][6],this.bankedRegisters[2][0]=r.bankedRegisters[2][0],this.bankedRegisters[2][1]=r.bankedRegisters[2][1],this.bankedRegisters[3][0]=r.bankedRegisters[3][0],this.bankedRegisters[3][1]=r.bankedRegisters[3][1],this.bankedRegisters[4][0]=r.bankedRegisters[4][0],this.bankedRegisters[4][1]=r.bankedRegisters[4][1],this.bankedRegisters[5][0]=r.bankedRegisters[5][0],this.bankedRegisters[5][1]=r.bankedRegisters[5][1],this.spsr=r.spsr,this.bankedSPSRs[0]=r.bankedSPSRs[0],this.bankedSPSRs[1]=r.bankedSPSRs[1],this.bankedSPSRs[2]=r.bankedSPSRs[2],this.bankedSPSRs[3]=r.bankedSPSRs[3],this.bankedSPSRs[4]=r.bankedSPSRs[4],this.bankedSPSRs[5]=r.bankedSPSRs[5],this.cycles=r.cycles,this.instructionWidth=r.instructionWidth,this.loadInstruction=r.instructionWidth==2?this.loadInstructionThumb:this.loadInstructionArm,this.execMode=r.instructionWidth==2?1:0};A.prototype.fetchPage=function(r){var t=this.mmu,i=r>>>t.BASE_OFFSET,s=t.addressToPage(i,r&t.OFFSET_MASK);if(i==this.pageRegion){if(s==this.pageId&&!this.page.invalid)return;this.pageId=s}else this.pageMask=t.memory[i].PAGE_MASK,this.pageRegion=i,this.pageId=s;this.page=t.accessPage(i,s)};A.prototype.loadInstructionArm=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>2;if(t=this.page.arm[i],t)return t;var s=this.mmu.load32(r)>>>0;return t=this.compileArm(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.arm[i]=t,t};A.prototype.loadInstructionThumb=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>1;if(t=this.page.thumb[i],t)return t;var s=this.mmu.load16(r);return t=this.compileThumb(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.thumb[i]=t,t};A.prototype.selectBank=function(r){switch(r){case 16:case 31:return 0;case 17:return 1;case 18:return 2;case 19:return 3;case 23:return 4;case 27:return 5;default:throw new N("Invalid user mode "+r+" passed to selectBank")}};A.prototype.switchExecMode=function(r){this.execMode!=r&&(this.execMode=r,r==0?(this.instructionWidth=4,this.loadInstruction=this.loadInstructionArm):(this.instructionWidth=2,this.loadInstruction=this.loadInstructionThumb))};A.prototype.switchMode=function(r){if(r!=this.mode){if(r!=16||r!=31){var t=this.selectBank(r),i=this.selectBank(this.mode);if(t!=i){if(r==17||this.mode==17){var s=i==1?1:0,e=t==1?1:0;this.bankedRegisters[s][2]=this.gprs[8],this.bankedRegisters[s][3]=this.gprs[9],this.bankedRegisters[s][4]=this.gprs[10],this.bankedRegisters[s][5]=this.gprs[11],this.bankedRegisters[s][6]=this.gprs[12],this.gprs[8]=this.bankedRegisters[e][2],this.gprs[9]=this.bankedRegisters[e][3],this.gprs[10]=this.bankedRegisters[e][4],this.gprs[11]=this.bankedRegisters[e][5],this.gprs[12]=this.bankedRegisters[e][6]}this.bankedRegisters[i][0]=this.gprs[13],this.bankedRegisters[i][1]=this.gprs[14],this.gprs[13]=this.bankedRegisters[t][0],this.gprs[14]=this.bankedRegisters[t][1],this.bankedSPSRs[i]=this.spsr,this.spsr=this.bankedSPSRs[t]}}this.mode=r}};A.prototype.packCPSR=function(){return this.mode|this.execMode<<5|this.cpsrF<<6|this.cpsrI<<7|this.cpsrN<<31|this.cpsrZ<<30|this.cpsrC<<29|this.cpsrV<<28};A.prototype.unpackCPSR=function(r){this.switchMode(r&31),this.switchExecMode(!!(r&32)),this.cpsrF=r&64,this.cpsrI=r&128,this.cpsrN=r&2147483648,this.cpsrZ=r&1073741824,this.cpsrC=r&536870912,this.cpsrV=r&268435456,this.irq.testIRQ()};A.prototype.hasSPSR=function(){return this.mode!=31&&this.mode!=16};A.prototype.raiseIRQ=function(){if(!this.cpsrI){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(18),this.spsr=r,this.gprs[14]=this.gprs[15]-t+4,this.gprs[15]=this.BASE_IRQ+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0}};A.prototype.raiseTrap=function(){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(19),this.spsr=r,this.gprs[14]=this.gprs[15]-t,this.gprs[15]=this.BASE_SWI+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0};A.prototype.badOp=function(r){var t=function(){throw new N("Illegal instruction: 0x"+r.toString(16))};return t.writesPC=!0,t.fixedJump=!1,t};A.prototype.generateConds=function(){var r=this;this.conds=[function(){return r.conditionPassed=r.cpsrZ},function(){return r.conditionPassed=!r.cpsrZ},function(){return r.conditionPassed=r.cpsrC},function(){return r.conditionPassed=!r.cpsrC},function(){return r.conditionPassed=r.cpsrN},function(){return r.conditionPassed=!r.cpsrN},function(){return r.conditionPassed=r.cpsrV},function(){return r.conditionPassed=!r.cpsrV},function(){return r.conditionPassed=r.cpsrC&&!r.cpsrZ},function(){return r.conditionPassed=!r.cpsrC||r.cpsrZ},function(){return r.conditionPassed=!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=!r.cpsrN!=!r.cpsrV},function(){return r.conditionPassed=!r.cpsrZ&&!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=r.cpsrZ||!r.cpsrN!=!r.cpsrV},null,null]};A.prototype.barrelShiftImmediate=function(r,t,i){var s=this,e=this.gprs,a=this.badOp;switch(r){case 0:t?a=function(){s.shifterOperand=e[i]<>>t,s.shifterCarryOut=e[i]&1<>t,s.shifterCarryOut=e[i]&1<>>t|e[i]<<32-t,s.shifterCarryOut=e[i]&1<>>1,s.shifterCarryOut=e[i]&1};break}return a};A.prototype.compileArm=function(r){var t=this.badOp(r),i=r&234881024,s=this,e=this.gprs,a=this.conds[(r&4026531840)>>>28];if((r&268435440)==19922704){var c=r&15;t=this.armCompiler.constructBX(c,a),t.writesPC=!0,t.fixedJump=!1}else if(!(r&201326592)&&(i==33554432||(r&144)!=144)){var u=r&31457280,p=r&1048576,F=!1;if((u&25165824)==16777216&&!p){var R=r&4194304;if((r&11595776)==2158592){var c=r&15,m=r&255,v=(r&3840)>>7;m=m>>>v|m<<32-v,t=this.armCompiler.constructMSR(c,R,r,m,a),t.writesPC=!1}else if((r&12517376)==983040){var o=(r&61440)>>12;t=this.armCompiler.constructMRS(o,R,a),t.writesPC=o==15}}else{var f=(r&983040)>>16,o=(r&61440)>>12,U=r&96,c=r&15,g=function(){throw new N("BUG: invalid barrel shifter")};if(r&33554432){var m=r&255,ir=(r&3840)>>7;ir?g=this.armCompiler.constructAddressingMode1ImmediateRotate(m,ir):g=this.armCompiler.constructAddressingMode1Immediate(m)}else if(r&16){var l=(r&3840)>>8;switch(F=!0,U){case 0:g=this.armCompiler.constructAddressingMode1LSL(l,c);break;case 32:g=this.armCompiler.constructAddressingMode1LSR(l,c);break;case 64:g=this.armCompiler.constructAddressingMode1ASR(l,c);break;case 96:g=this.armCompiler.constructAddressingMode1ROR(l,c);break}}else{var m=(r&3968)>>7;g=this.barrelShiftImmediate(U,m,c)}switch(u){case 0:p?t=this.armCompiler.constructANDS(o,f,g,a):t=this.armCompiler.constructAND(o,f,g,a);break;case 2097152:p?t=this.armCompiler.constructEORS(o,f,g,a):t=this.armCompiler.constructEOR(o,f,g,a);break;case 4194304:p?t=this.armCompiler.constructSUBS(o,f,g,a):t=this.armCompiler.constructSUB(o,f,g,a);break;case 6291456:p?t=this.armCompiler.constructRSBS(o,f,g,a):t=this.armCompiler.constructRSB(o,f,g,a);break;case 8388608:p?t=this.armCompiler.constructADDS(o,f,g,a):t=this.armCompiler.constructADD(o,f,g,a);break;case 10485760:p?t=this.armCompiler.constructADCS(o,f,g,a):t=this.armCompiler.constructADC(o,f,g,a);break;case 12582912:p?t=this.armCompiler.constructSBCS(o,f,g,a):t=this.armCompiler.constructSBC(o,f,g,a);break;case 14680064:p?t=this.armCompiler.constructRSCS(o,f,g,a):t=this.armCompiler.constructRSC(o,f,g,a);break;case 16777216:t=this.armCompiler.constructTST(o,f,g,a);break;case 18874368:t=this.armCompiler.constructTEQ(o,f,g,a);break;case 20971520:t=this.armCompiler.constructCMP(o,f,g,a);break;case 23068672:t=this.armCompiler.constructCMN(o,f,g,a);break;case 25165824:p?t=this.armCompiler.constructORRS(o,f,g,a):t=this.armCompiler.constructORR(o,f,g,a);break;case 27262976:p?t=this.armCompiler.constructMOVS(o,f,g,a):t=this.armCompiler.constructMOV(o,f,g,a);break;case 29360128:p?t=this.armCompiler.constructBICS(o,f,g,a):t=this.armCompiler.constructBIC(o,f,g,a);break;case 31457280:p?t=this.armCompiler.constructMVNS(o,f,g,a):t=this.armCompiler.constructMVN(o,f,g,a);break}t.writesPC=o==15}}else if((r&263196656)==16777360){var c=r&15,o=r>>12&15,f=r>>16&15;r&4194304?t=this.armCompiler.constructSWPB(o,f,c,a):t=this.armCompiler.constructSWP(o,f,c,a),t.writesPC=o==15}else switch(i){case 0:if((r&16777456)==144){var o=(r&983040)>>16,f=(r&61440)>>12,l=(r&3840)>>8,c=r&15;switch(r&15728640){case 0:t=this.armCompiler.constructMUL(o,l,c,a);break;case 1048576:t=this.armCompiler.constructMULS(o,l,c,a);break;case 2097152:t=this.armCompiler.constructMLA(o,f,l,c,a);break;case 3145728:t=this.armCompiler.constructMLAS(o,f,l,c,a);break;case 8388608:t=this.armCompiler.constructUMULL(o,f,l,c,a);break;case 9437184:t=this.armCompiler.constructUMULLS(o,f,l,c,a);break;case 10485760:t=this.armCompiler.constructUMLAL(o,f,l,c,a);break;case 11534336:t=this.armCompiler.constructUMLALS(o,f,l,c,a);break;case 12582912:t=this.armCompiler.constructSMULL(o,f,l,c,a);break;case 13631488:t=this.armCompiler.constructSMULLS(o,f,l,c,a);break;case 14680064:t=this.armCompiler.constructSMLAL(o,f,l,c,a);break;case 15728640:t=this.armCompiler.constructSMLALS(o,f,l,c,a);break}t.writesPC=o==15}else{var _=r&1048576,o=(r&61440)>>12,dr=(r&3840)>>4,Pr=c=r&15,ar=r&32,p=r&64,L=r&2097152,i=r&4194304,C;if(i){var m=Pr|dr;C=this.armCompiler.constructAddressingMode23Immediate(r,m,a)}else C=this.armCompiler.constructAddressingMode23Register(r,c,a);C.writesPC=!!L&&f==15,(r&144)==144&&(_?ar?p?t=this.armCompiler.constructLDRSH(o,C,a):t=this.armCompiler.constructLDRH(o,C,a):p&&(t=this.armCompiler.constructLDRSB(o,C,a)):!p&&ar&&(t=this.armCompiler.constructSTRH(o,C,a))),t.writesPC=o==15||C.writesPC}break;case 67108864:case 100663296:var o=(r&61440)>>12,_=r&1048576,cr=r&4194304,i=r&33554432;if((r&4293918960)==-403701520){var m=r&15;throw new N("Program exited ("+m+")",void 0,!0)}var C=function(){throw new N("Unimplemented memory access: 0x"+r.toString(16))};if(~r&16777216&&(r&=4292870143),i){var c=r&15,U=r&96,ur=(r&3968)>>7;U||ur?(g=this.barrelShiftImmediate(U,ur,c),C=this.armCompiler.constructAddressingMode2RegisterShifted(r,g,a)):C=this.armCompiler.constructAddressingMode23Register(r,c,a)}else{var O=r&4095;C=this.armCompiler.constructAddressingMode23Immediate(r,O,a)}_?cr?t=this.armCompiler.constructLDRB(o,C,a):t=this.armCompiler.constructLDR(o,C,a):cr?t=this.armCompiler.constructSTRB(o,C,a):t=this.armCompiler.constructSTR(o,C,a),t.writesPC=_&&(o==15||C.writesPC);break;case 134217728:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,l=r&65535,f=(r&983040)>>16,C,m=0,O=0,Z=!1;if(J){j&&(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),O+=4)}else{j||(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),m-=4,O-=4)}L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?(B?t=this.armCompiler.constructLDMS(l,C,a):t=this.armCompiler.constructLDM(l,C,a),t.writesPC=!!(l&32768)):(B?t=this.armCompiler.constructSTMS(l,C,a):t=this.armCompiler.constructSTM(l,C,a),t.writesPC=!1);break;case 167772160:var m=r&16777215;m&8388608&&(m|=4278190080),m<<=2;var br=r&16777216;br?t=this.armCompiler.constructBL(m,a):t=this.armCompiler.constructB(m,a),t.writesPC=!0,t.fixedJump=!0;break;case 201326592:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,f=(r&983040)>>16,W=(r&61440)>>12,Or=(r&3840)>>8,m=r&255,yr=r>>28&15,a=this.conds[yr];if((r&264179456)==221055488)t=this.armCompiler.constructVPUSH(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==221055744)t=this.armCompiler.constructVPUSH(a,((B?16:0)|W)*2,m,!1);else if((r&264179456)==213715456)t=this.armCompiler.constructVPOP(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==213715712)t=this.armCompiler.constructVPOP(a,((B?16:0)|W)*2,m,!1);else if((r&253759232)==218106368){m*=4,J||(m=-m);var Z=!1,K=W<<1|(B?1:0),C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!0):t=this.armCompiler.constructVSTR(a,K,C,!0)}else if((r&253759232)==218106624){m*=4,J||(m=-m);var Z=!1,K=((B?16:0)|W)*2,C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!1):t=this.armCompiler.constructVSTR(a,K,C,!1)}break;case 234881024:if((r&251658240)==251658240){var m=r&16777215;t=this.armCompiler.constructSWI(m,a),t.writesPC=!1}else if((r&263720528)==246942272){let k=r>>28&15,d=r>>22&1,x=r>>16&7,M=r>>12&15,P=r>>8&1,y=r>>7&1,b=r>>5&1,S=r&15,w=x&4,V=P!=0,G=w?x&1:0,$=y!=0,rr=!1,Sr=P?(d?16:0)|M:M<<1|(d?1:0),wr=P?(b?16:0)|S:S<<1|(b?1:0);t=this.armCompiler.constructVCVT(a,Sr,wr,w,V,G,$,rr),t.writesPC=!1}else if((r&264179408)==246876864){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>5&1,y=r&15,b=M!=0,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(P?16:0)|y:y<<1|(P?1:0);t=this.armCompiler.constructVCVTF(a,S,w,b),t.writesPC=!1}else if((r&262147600)==236980736){let k=r>>28&15,d=r>>22&1,x=r>>7&1,M=r>>5&1,P=(r&15728640)>>20,y=(r&983040)>>16,b=(r&61440)>>12,S=(r&224)>>5,w=r&15,V=r>>8&1,G=V?(d?16:0)|b:b<<1|(d?1:0),$=V?(M?16:0)|w:w<<1|(M?1:0),rr=V?(x?16:0)|y:y<<1|(x?1:0);var a=this.conds[k];t=this.armCompiler.constructVFP3Register(a,P,rr,G,V,S,$),t.writesPC=!1}else if((r&263195728)==243271680){let k=r>>28&15,d=r>>22&1,x=r>>16&15,M=r>>12&15,P=r>>8&3,y=r>>7&1,b=r>>5&1,S=r&15,w=P==3?(d?16:0)|M:M<<1|(d?1:0),V=P==3?(b?16:0)|S:S<<1|(b?1:0),G=P==3?(y?16:0)|x:x<<1|(y?1:0);t=this.armCompiler.constructVFP3Register(a,8,G,w,P==3,0,V),t.writesPC=!1}else if((r&264179280)==246680128){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP(a,S,x,M,P,w,b),t.writesPC=!1}else if((r&264179455)==246745664){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP0(a,S,x,M,P,w,b),t.writesPC=!1}else if(r==4008835600)t=this.armCompiler.constructNOP();else if((r&266342160)==234883600){let k=r>>28&15,d=r>>20&1,x=r>>16&15,M=r>>12&15,P=r>>7&1;var a=this.conds[k];t=this.armCompiler.constructVMOV(a,d,x<<1|(P?1:0),M)}else r==3992980240?t=this.armCompiler.constructVMOV(a,!1,0,0):r==3995081488&&(t=this.armCompiler.constructVMOV(a,!1,1,1));break;default:throw new N("Bad opcode: 0x"+r.toString(16))}return t.execMode=0,t.fixedJump=t.fixedJump||!1,t};A.prototype.compileThumb=function(r){var t=this.badOp(r&65535),i=this,s=this.gprs;if((r&64512)==16384){var e=(r&56)>>3,a=r&7;switch(r&960){case 0:t=this.thumbCompiler.constructAND(a,e);break;case 64:t=this.thumbCompiler.constructEOR(a,e);break;case 128:t=this.thumbCompiler.constructLSL2(a,e);break;case 192:t=this.thumbCompiler.constructLSR2(a,e);break;case 256:t=this.thumbCompiler.constructASR2(a,e);break;case 320:t=this.thumbCompiler.constructADC(a,e);break;case 384:t=this.thumbCompiler.constructSBC(a,e);break;case 448:t=this.thumbCompiler.constructROR(a,e);break;case 512:t=this.thumbCompiler.constructTST(a,e);break;case 576:t=this.thumbCompiler.constructNEG(a,e);break;case 640:t=this.thumbCompiler.constructCMP2(a,e);break;case 704:t=this.thumbCompiler.constructCMN(a,e);break;case 768:t=this.thumbCompiler.constructORR(a,e);break;case 832:t=this.thumbCompiler.constructMUL(a,e);break;case 896:t=this.thumbCompiler.constructBIC(a,e);break;case 960:t=this.thumbCompiler.constructMVN(a,e);break}t.writesPC=!1}else if((r&64512)==17408){var e=(r&120)>>3,c=r&7,u=r&128,a=c|u>>4;switch(r&768){case 0:t=this.thumbCompiler.constructADD4(a,e),t.writesPC=a==15;break;case 256:t=this.thumbCompiler.constructCMP3(a,e),t.writesPC=!1;break;case 512:t=this.thumbCompiler.constructMOV3(a,e),t.writesPC=a==15;break;case 768:t=this.thumbCompiler.constructBX(a,e),t.writesPC=!0,t.fixedJump=!1;break}}else if((r&63488)==6144){var e=(r&448)>>6,c=(r&56)>>3,a=r&7;switch(r&1536){case 0:t=this.thumbCompiler.constructADD3(a,c,e);break;case 512:t=this.thumbCompiler.constructSUB3(a,c,e);break;case 1024:var p=(r&448)>>6;p?t=this.thumbCompiler.constructADD1(a,c,p):t=this.thumbCompiler.constructMOV2(a,c,e);break;case 1536:var p=(r&448)>>6;t=this.thumbCompiler.constructSUB1(a,c,p);break}t.writesPC=!1}else if(r&57344)if((r&57344)==8192){var p=r&255,c=(r&1792)>>8;switch(r&6144){case 0:t=this.thumbCompiler.constructMOV1(c,p);break;case 2048:t=this.thumbCompiler.constructCMP1(c,p);break;case 4096:t=this.thumbCompiler.constructADD2(c,p);break;case 6144:t=this.thumbCompiler.constructSUB2(c,p);break}t.writesPC=!1}else if((r&63488)==18432){var a=(r&1792)>>8,p=(r&255)<<2;t=this.thumbCompiler.constructLDR3(a,p),t.writesPC=!1}else if((r&61440)==20480){var a=r&7,c=(r&56)>>3,e=(r&448)>>6,F=r&3584;switch(F){case 0:t=this.thumbCompiler.constructSTR2(a,c,e);break;case 512:t=this.thumbCompiler.constructSTRH2(a,c,e);break;case 1024:t=this.thumbCompiler.constructSTRB2(a,c,e);break;case 1536:t=this.thumbCompiler.constructLDRSB(a,c,e);break;case 2048:t=this.thumbCompiler.constructLDR2(a,c,e);break;case 2560:t=this.thumbCompiler.constructLDRH2(a,c,e);break;case 3072:t=this.thumbCompiler.constructLDRB2(a,c,e);break;case 3584:t=this.thumbCompiler.constructLDRSH(a,c,e);break}t.writesPC=!1}else if((r&57344)==24576){var a=r&7,c=(r&56)>>3,p=(r&1984)>>4,R=r&4096;R&&(p>>=2);var m=r&2048;m?R?t=this.thumbCompiler.constructLDRB1(a,c,p):t=this.thumbCompiler.constructLDR1(a,c,p):R?t=this.thumbCompiler.constructSTRB1(a,c,p):t=this.thumbCompiler.constructSTR1(a,c,p),t.writesPC=!1}else if((r&62976)==46080){var v=!!(r&256),o=r&255;r&2048?(t=this.thumbCompiler.constructPOP(o,v),t.writesPC=v,t.fixedJump=!1):(t=this.thumbCompiler.constructPUSH(o,v),t.writesPC=!1)}else if(r&32768)switch(r&28672){case 0:var a=r&7,c=(r&56)>>3,p=(r&1984)>>5;r&2048?t=this.thumbCompiler.constructLDRH1(a,c,p):t=this.thumbCompiler.constructSTRH1(a,c,p),t.writesPC=!1;break;case 4096:var a=(r&1792)>>8,p=(r&255)<<2,m=r&2048;m?t=this.thumbCompiler.constructLDR4(a,p):t=this.thumbCompiler.constructSTR3(a,p),t.writesPC=!1;break;case 8192:var a=(r&1792)>>8,p=(r&255)<<2;r&2048?t=this.thumbCompiler.constructADD6(a,p):t=this.thumbCompiler.constructADD5(a,p),t.writesPC=!1;break;case 12288:if(!(r&3840)){var R=r&128,p=(r&127)<<2;R&&(p=-p),t=this.thumbCompiler.constructADD7(p),t.writesPC=!1}break;case 16384:var c=(r&1792)>>8,o=r&255;r&2048?t=this.thumbCompiler.constructLDMIA(c,o):t=this.thumbCompiler.constructSTMIA(c,o),t.writesPC=!1;break;case 20480:var f=(r&3840)>>8,p=r&255;if(f==15)t=this.thumbCompiler.constructSWI(p),t.writesPC=!1;else{r&128&&(p|=4294967040),p<<=1;var U=this.conds[f];t=this.thumbCompiler.constructB1(p,U),t.writesPC=!0,t.fixedJump=!0}break;case 24576:case 28672:var p=r&2047,g=r&6144;switch(g){case 0:p&1024&&(p|=4294965248),p<<=1,t=this.thumbCompiler.constructB2(p),t.writesPC=!0,t.fixedJump=!0;break;case 2048:break;case 4096:p&1024&&(p|=4294966272),p<<=12,t=this.thumbCompiler.constructBL1(p),t.writesPC=!1;break;case 6144:t=this.thumbCompiler.constructBL2(p),t.writesPC=!0,t.fixedJump=!1;break}break;default:throw new N("Undefined instruction: 0x"+r.toString(16))}else throw new N("Bad opcode: 0x"+r.toString(16));else{var a=r&7,e=(r&56)>>3,p=(r&1984)>>6;switch(r&6144){case 0:t=this.thumbCompiler.constructLSL1(a,e,p);break;case 2048:t=this.thumbCompiler.constructLSR1(a,e,p);break;case 4096:t=this.thumbCompiler.constructASR1(a,e,p);break;case 6144:break}t.writesPC=!1}return t.execMode=1,t.fixedJump=t.fixedJump||!1,t};var Y=class{constructor(){this.f64arr=new Float64Array(1);this.f32arr=new Float32Array(this.f64arr.buffer);this.i32arr=new Int32Array(this.f64arr.buffer);this.BASE_OFFSET=24;this.OFFSET_MASK=16777215;this.core=new A,this.core.irq=this,this.core.mmu=this,this.resetMemory()}resetMemory(){this.memory=[];for(var t=0;t<256;t++)this.memory[t]={PAGE_MASK:2047,ICACHE_PAGE_BITS:10,icache:new Array}}advanceInsn(){var t=this.core.cycles;return this.core.step(),t-=this.core.cycles,t>0?t:1}getPC(){return this.core.gprs[15]-this.core.instructionWidth}getSP(){return this.core.gprs[13]}isStable(){return!0}connectMemoryBus(t){this.bus=t}reset(){this.resetMemory();let t=this.load32(0);this.core.resetCPU(t)}saveState(){return this.core.freeze()}loadState(t){this.core.defrost(t)}load8(t){return this.bus.read(t)<<24>>24}loadU8(t){return this.bus.read(t)&255}load16(t){return this.loadU16(t)<<16>>16}loadU16(t){return this.bus.read(t)|this.bus.read(t+1)<<8}load32(t){var i=this.bus.read32(t);return i}store8(t,i){this.bus.write(t,i&255)}store16(t,i){this.bus.write(t,i&255),this.bus.write(t+1,i>>8&255)}store32(t,i){this.bus.write32(t,i)}wait(t){++this.core.cycles}wait32(t){++this.core.cycles}waitSeq32(t){++this.core.cycles}waitMul(t){(t&4294967040)==4294967040||!(t&4294967040)?this.core.cycles+=1:(t&4294901760)==4294901760||!(t&4294901760)?this.core.cycles+=2:(t&4278190080)==4278190080||!(t&4278190080)?this.core.cycles+=3:this.core.cycles+=4}waitMulti32(t,i){this.core.cycles+=2}waitPrefetch(t){++this.core.cycles}waitPrefetch32(t){++this.core.cycles}addressToPage(t,i){return i>>this.memory[t].ICACHE_PAGE_BITS}accessPage(t,i){var s=this.memory[t],e=s.icache[i];return(!e||e.invalid)&&(e={thumb:new Array(1<>16)}clear(){}updateTimers(){}testIRQ(){}isThumb(){return this.core.instructionWidth==2}getDebugTree(){return{state:this.saveState(),mmu:this.core.mmu}}};var kr=fr([[T.A,0,1],[T.B,0,2],[T.GP_A,0,1],[T.GP_B,0,2],[T.SELECT,0,4],[T.START,0,8],[T.RIGHT,0,16],[T.LEFT,0,32],[T.UP,0,64],[T.DOWN,0,128]]),D=0,I=1048576,Mr=0,X=67108864,z=256,Er=1e6,xr=4e6,Ar=3991793133,q=class extends Rr{constructor(){super();this.cpuFrequency=xr;this.canvasWidth=160;this.numTotalScanlines=256;this.numVisibleScanlines=128;this.cpuCyclesPerLine=Math.floor(xr/(256*60));this.defaultROMSize=I-Mr;this.sampleRate=1;this.cpu=new Y;this.ram=new Uint8Array(I);this.ram16=new Uint16Array(this.ram.buffer);this.ram32=new Uint32Array(this.ram.buffer);this.rombase=Mr;this.brightness=255;this.ioregs=new Uint8Array(z);this.ioregs32=new Uint32Array(this.ioregs.buffer);this.read=er([[D,D+I-1,I-1,i=>this.ram[i]],[X,X+z-1,z-1,(i,s)=>this.readIO(i)]],{defaultval:Ar&255});this.write=er([[D,D+I-1,I-1,(i,s)=>{this.ram[i]=s}],[X,X+z-1,z-1,(i,s)=>{this.writeIO(i,s)}]]);this.read32=i=>i>=D&&i>2]:this.read(i)|this.read(i+1)<<8|this.read(i+2)<<16|this.read(i+3)<<24;this.write32=(i,s)=>{i>=D&&i>2]=s:(this.write(i,s&255),this.write(i+1,s>>8&255),this.write(i+2,s>>16&255),this.write(i+3,s>>24&255))};this.connectCPUMemoryBus(this),this.handler=hr(this.inputs,kr)}connectVideo(i){super.connectVideo(i),this.pixels32=i,this.pixels8=new Uint8Array(i.buffer)}connectSerialIO(i){this.serial=i}loadROM(i){super.loadROM(i)}reset(){this.ram.fill(0),this.rom&&this.ram.set(this.rom,this.rombase),super.reset(),this.serialOut=[],this.serialIn=[]}readAddress(i){return i>=D&&i>8;case 36:return this.getRasterX();case 37:return this.getRasterX()>>8;case 64:return(this.serial.byteAvailable()?128:0)|(this.serial.clearToSend()?64:0);case 68:let s=this.serialIn.shift();return s!=null?(this.serialOut.push(s),s.value):0;default:return 0}}writeIO(i,s){this.ioregs[i]=s,i===72&&this.serialOut.length>1&1048575,a=this.brightness<<24,c=0;c>5&31)<<11|(u>>10&31)<<19}}getDebugCategories(){return["CPU","Stack","FPU"]}getDebugInfo(i,s){switch(i){case"Stack":for(var u="",p=s.c,e=p.gprs[13],a=p.gprs[11],c=0;c<16&&(u+=E(e,8)+" "+E(this.ram32[e-D>>2],8),e==a&&(u+=" FP"),u+=` +import{J as gr,v as Rr}from"./chunk-4YTESWOC.js";import{d as mr}from"./chunk-UXRCACYH.js";import{G as or,P as Fr,Y as N,a as Q,ba as T,ca as hr,ea as fr,g as E,ha as er}from"./chunk-VZWSP3EG.js";import{a as pr,b as nr}from"./chunk-N7W4C4V2.js";var Cr=4026531840,lr=223,Tr=32;function n(r){this.cpu=r,this.addressingMode23Immediate=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]+i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode23Register=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-e[i]};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return c};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode2RegisterShifted=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]-=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]+=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]-r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]-r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]+r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]+r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null]}n.prototype.constructAddressingMode1ASR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a>>e,i.shifterCarryOut=a&1<>31?(i.shifterOperand=4294967295,i.shifterCarryOut=2147483648):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1Immediate=function(r){var t=this.cpu;return function(){t.shifterOperand=r,t.shifterCarryOut=t.cpsrC}};n.prototype.constructAddressingMode1ImmediateRotate=function(r,t){var i=this.cpu;return function(){i.shifterOperand=r>>>t|r<<32-t,i.shifterCarryOut=i.shifterOperand>>31}};n.prototype.constructAddressingMode1LSL=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a<>>e,i.shifterCarryOut=a&1<>31):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1ROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4);var c=e&31;e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):c?(i.shifterOperand=s[t]>>>c|s[t]<<32-c,i.shifterCarryOut=a&1<>31)}};n.prototype.constructAddressingMode23Immediate=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Immediate[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode23Register=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Register[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode2RegisterShifted=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode2RegisterShifted[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode4=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[t]+r;return e}};n.prototype.constructAddressingMode4Writeback=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(c){var u=a[i]+r;return c&&s&&e.mmu.store32(a[i]+r-4,a[i]),a[i]+=t,u}};n.prototype.constructNOP=function(){return this.writesPC=!1,function(){}};n.prototype.constructADC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0);a[r]=(a[t]>>>0)+c}}};n.prototype.constructADCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?1:0),u=(a[t]>>>0)+c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=u>4294967295,e.cpsrV=a[t]>>31==c>>31&&a[t]>>31!=u>>31&&c>>31!=u>>31),a[r]=u}}};n.prototype.constructADD=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=(a[t]>>>0)+(e.shifterOperand>>>0))}};n.prototype.constructADDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructAND=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand)}};n.prototype.constructANDS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructB=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[15]+=r}};n.prototype.constructBIC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand)}};n.prototype.constructBICS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]&~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructBL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),s[14]=s[15]-4,s[15]+=r}};n.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.mmu.waitPrefetch32(s[15]),i.switchExecMode(s[r]&1),s[15]=s[r]&4294967294}};n.prototype.constructCMN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.shifterOperand>>>0);e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=c>4294967295,e.cpsrV=a[t]>>31==e.shifterOperand>>31&&a[t]>>31!=c>>31&&e.shifterOperand>>31!=c>>31}}};n.prototype.constructCMP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31}}};n.prototype.constructEOR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand)}};n.prototype.constructEORS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]^e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructLDM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(e[F]=a.load32(c&4294967292),c+=4,++u);a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(a.waitPrefetch32(e[15]),!(i&&!i())){var c=t(!1),u=0,p=s.mode;s.switchMode(31);var F,R;for(F=r,R=0;F;F>>=1,++R)F&1&&(e[R]=a.load32(c&4294967292),c+=4,++u);s.switchMode(p),a.waitMulti32(c,u),++s.cycles}}};n.prototype.constructLDR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load32(a),s.mmu.wait32(a),++s.cycles}}};n.prototype.constructLDRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.loadU16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load8(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructLDRSH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(s.mmu.waitPrefetch32(e[15]),!(i&&!i())){var a=t();e[r]=s.mmu.load16(a),s.mmu.wait(a),++s.cycles}}};n.prototype.constructMLA=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e()))if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t]}};n.prototype.constructMLAS=function(r,t,i,s,e){var a=this.cpu,c=a.gprs;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){if(++a.cycles,a.mmu.waitMul(i),c[s]&4294901760&&c[i]&4294901760){var u=(c[s]&4294901760)*c[i]&4294967295,p=(c[s]&65535)*c[i]&4294967295;c[r]=u+p+c[t]&4294967295}else c[r]=c[s]*c[i]+c[t];a.cpsrN=c[r]>>31,a.cpsrZ=!(c[r]&4294967295)}}};n.prototype.constructMOV=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand)}};n.prototype.constructMOVS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructMRS=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch32(e[15]),!(i&&!i())&&(t?e[r]=s.spsr:e[r]=s.packCPSR())}};n.prototype.constructMSR=function(r,t,i,s,e){var a=this.cpu,c=a.gprs,u=i&65536,p=i&524288;return function(){if(a.mmu.waitPrefetch32(c[15]),!(e&&!e())){var F;i&33554432?F=s:F=c[r];var R=(u?255:0)|(p?4278190080:0);t?(R&=Cr|lr|Tr,a.spsr=a.spsr&~R|F&R):(R&Cr&&(a.cpsrN=F>>31,a.cpsrZ=F&1073741824,a.cpsrC=F&536870912,a.cpsrV=F&268435456),a.mode!=16&&R&lr&&(a.switchMode(F&15|16),a.cpsrI=F&128,a.cpsrF=F&64))}}};n.prototype.constructMUL=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s()))if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t]}};n.prototype.constructMULS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){if(e.mmu.waitMul(a[t]),a[i]&4294901760&&a[t]&4294901760){var c=(a[i]&4294901760)*a[t]|0,u=(a[i]&65535)*a[t]|0;a[r]=c+u}else a[r]=a[i]*a[t];e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295)}}};n.prototype.constructMVN=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand)}};n.prototype.constructMVNS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=~e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructORR=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand)}};n.prototype.constructORRS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]|e.shifterOperand,r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=a[r]>>31,e.cpsrZ=!(a[r]&4294967295),e.cpsrC=e.shifterCarryOut))}};n.prototype.constructRSB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=e.shifterOperand-a[t])}};n.prototype.constructRSBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=e.shifterOperand-a[t];r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterOperand>>>0>=a[t]>>>0,e.cpsrV=e.shifterOperand>>31!=a[t]>>31&&e.shifterOperand>>31!=c>>31),a[r]=c}}};n.prototype.constructRSC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1);a[r]=(e.shifterOperand>>>0)-c}}};n.prototype.constructRSCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(a[t]>>>0)+(e.cpsrC?0:1),u=(e.shifterOperand>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=e.shifterOperand>>>0>=u>>>0,e.cpsrV=e.shifterOperand>>31!=c>>31&&e.shifterOperand>>31!=u>>31),a[r]=u}}};n.prototype.constructSBC=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1);a[r]=(a[t]>>>0)-c}}};n.prototype.constructSBCS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=(e.shifterOperand>>>0)+(e.cpsrC?0:1),u=(a[t]>>>0)-c;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=u>>31,e.cpsrZ=!(u&4294967295),e.cpsrC=a[t]>>>0>=u>>>0,e.cpsrV=a[t]>>31!=c>>31&&a[t]>>31!=u>>31),a[r]=u}}};n.prototype.constructSMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c)}}};n.prototype.constructSMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=(u[s]&4294901760)*u[i],F=(u[s]&65535)*u[i],R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=Math.floor(R*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c)}}};n.prototype.constructSMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>0)*(u[i]>>0),F=((u[s]&65535)>>0)*(u[i]>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=Math.floor(p*c+F*c),a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructSTM=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=t(!0),u=0,p,F;for(p=r,F=0;p;p>>=1,++F)p&1&&(a.store32(c,e[F]),c+=4,++u);a.waitMulti32(c,u)}};n.prototype.constructSTMS=function(r,t,i){var s=this.cpu,e=s.gprs,a=s.mmu;return function(){if(i&&!i()){a.waitPrefetch32(e[15]);return}a.wait32(e[15]);var c=s.mode,u=t(!0),p=0,F,R;for(s.switchMode(31),F=r,R=0;F;F>>=1,++R)F&1&&(a.store32(u,e[R]),u+=4,++p);s.switchMode(c),a.waitMulti32(u,p)}};n.prototype.constructSTR=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store32(a,e[r]),s.mmu.wait32(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRB=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store8(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSTRH=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){if(i&&!i()){s.mmu.waitPrefetch32(e[15]);return}var a=t();s.mmu.store16(a,e[r]),s.mmu.wait(a),s.mmu.wait32(e[15])}};n.prototype.constructSUB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){e.mmu.waitPrefetch32(a[15]),!(s&&!s())&&(i(),a[r]=a[t]-e.shifterOperand)}};n.prototype.constructSUBS=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]-e.shifterOperand;r==15&&e.hasSPSR()?e.unpackCPSR(e.spsr):(e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=a[t]>>>0>=e.shifterOperand>>>0,e.cpsrV=a[t]>>31!=e.shifterOperand>>31&&a[t]>>31!=c>>31),a[r]=c}}};n.prototype.constructSWI=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(t&&!t()){i.mmu.waitPrefetch32(s[15]);return}i.irq.swi32(r),i.mmu.waitPrefetch32(s[15])}};n.prototype.constructSWP=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait32(a[t]),e.mmu.wait32(a[t]);var c=e.mmu.load32(a[t]);e.mmu.store32(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructSWPB=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){e.mmu.wait(a[t]),e.mmu.wait(a[t]);var c=e.mmu.loadU8(a[t]);e.mmu.store8(a[t],a[i]),a[r]=c,++e.cycles}}};n.prototype.constructTEQ=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]^e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructTST=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(){if(e.mmu.waitPrefetch32(a[15]),!(s&&!s())){i();var c=a[t]&e.shifterOperand;e.cpsrN=c>>31,e.cpsrZ=!(c&4294967295),e.cpsrC=e.shifterCarryOut}}};n.prototype.constructUMLAL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c}}};n.prototype.constructUMLALS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){a.cycles+=2,a.mmu.waitMul(i);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=(u[s]&65535)*(u[i]>>>0),R=(u[t]>>>0)+p+F;u[t]=R,u[r]+=R*c,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructUMULL=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0}}};n.prototype.constructUMULLS=function(r,t,i,s,e){var a=this.cpu,c=1/4294967296,u=a.gprs;return function(){if(a.mmu.waitPrefetch32(u[15]),!(e&&!e())){++a.cycles,a.mmu.waitMul(u[i]);var p=((u[s]&4294901760)>>>0)*(u[i]>>>0),F=((u[s]&65535)>>>0)*(u[i]>>>0);u[t]=(p&4294967295)+(F&4294967295)&4294967295,u[r]=p*c+F*c>>>0,a.cpsrN=u[r]>>31,a.cpsrZ=!(u[r]&4294967295||u[t]&4294967295)}}};n.prototype.constructVFP3Register=function(r,t,i,s,e,a,c){var u=this.cpu,p=e?u.dfprs:u.sfprs;return function(){if(u.mmu.waitPrefetch32(u.gprs[15]),!(r&&!r())){switch(t){case 2:if(a===0){p[s]=p[i]*p[c];return}break;case 3:switch(a){case 0:p[s]=p[i]+p[c];return;case 2:p[s]=p[i]-p[c];return}break;case 8:if(a===0){p[s]=p[i]/p[c];return}break}console.log("Unsupported instruction: "+E(t)+" "+E(a))}}};n.prototype.constructVCVT=function(r,t,i,s,e,a,c,u){var p=this.cpu,F=p.sfprs,R=p.dfprs,m=p.ifprs;return function(){if(p.mmu.waitPrefetch32(p.gprs[15]),!(r&&!r())){var v,o;s&&e?v=R[i]:s?v=F[i]:v=m[i],s?o=c?Math.floor(v):Math.round(v):o=v,s?m[t]=o:e?R[t]=o:F[t]=o}}};n.prototype.constructVCVTF=function(r,t,i,s){var e=this.cpu,a=e.sfprs,c=e.dfprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),!(r&&!r())){var u=s?c[i]:a[i];s?a[t]=u:c[t]=u}}};n.prototype.constructVLDR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?a[t]=e.mmu.load32(c):(a[t]=e.mmu.load32(c),a[t+1]=e.mmu.load32(c+4)),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVSTR=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=i();s?e.mmu.store32(c,a[t]):(e.mmu.store32(c,a[t]),e.mmu.store32(c+4,a[t+1])),e.mmu.wait32(c),e.mmu.wait32(e.gprs[15])}};n.prototype.constructVPUSH=function(r,t,i,s){var e=this.cpu,a=e.ifprs;return function(){if(e.mmu.waitPrefetch32(e.gprs[15]),r&&!r())return;let c=e.gprs[13]-i*4;e.gprs[13]=c;for(let u=0;u>>0)+(i.cpsrC?1:0),a=s[r],c=(a>>>0)+e,u=a>>31,p=c>>31,F=e>>31;i.cpsrN=p,i.cpsrZ=!(c&4294967295),i.cpsrC=c>4294967295,i.cpsrV=u==F&&u!=p&&F!=p,s[r]=c}};h.prototype.constructADD1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!(e[t]>>31)&&(e[t]>>31^a)>>31&&a>>31,e[r]=a}};h.prototype.constructADD2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=!(s[r]>>31)&&(s[r]^e)>>31&&(t^e)>>31,s[r]=e}};h.prototype.constructADD3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=(e[t]>>>0)+(e[i]>>>0);s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=a>4294967295,s.cpsrV=!((e[t]^e[i])>>31)&&(e[t]^a)>>31&&(e[i]^a)>>31,e[r]=a}};h.prototype.constructADD4=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]+=s[t]}};h.prototype.constructADD5=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=(s[15]&4294967292)+t}};h.prototype.constructADD6=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[13]+t}};h.prototype.constructADD7=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[13]+=r}};h.prototype.constructAND=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructASR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,s.cpsrC?e[r]=4294967295:e[r]=0):(s.cpsrC=e[t]&1<>i),s.cpsrN=e[r]>>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructASR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>=e):(i.cpsrC=s[r]>>31,i.cpsrC?s[r]=4294967295:s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructB1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),t()&&(s[15]+=r)}};h.prototype.constructB2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[15]+=r}};h.prototype.constructBIC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]&~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructBL1=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]),i[14]=i[15]+r}};h.prototype.constructBL2=function(r){var t=this.cpu,i=t.gprs;return function(){t.mmu.waitPrefetch(i[15]);var s=i[15];i[15]=i[14]+(r<<1),i[14]=s-1}};h.prototype.constructBX=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),i.switchExecMode(s[t]&1);var e=0;t==15&&(e=s[t]&2),s[15]=s[t]&4294967294-e}};h.prototype.constructCMN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[r]>>>0)+(s[t]>>>0);i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=e>4294967295,i.cpsrV=s[r]>>31==s[t]>>31&&s[r]>>31!=e>>31&&s[t]>>31!=e>>31}};h.prototype.constructCMP1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31}};h.prototype.constructCMP2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=s[t],c=e-a,u=c>>31,p=e>>31;i.cpsrN=u,i.cpsrZ=!(c&4294967295),i.cpsrC=e>>>0>=a>>>0,i.cpsrV=p!=a>>31&&p!=u}};h.prototype.constructCMP3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=s[t]>>>0,i.cpsrV=(s[r]^s[t])>>31&&(s[r]^e)>>31}};h.prototype.constructEOR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]^s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLDMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)t&c&&(s[u]=i.mmu.load32(e),e+=4,++a);i.mmu.waitMulti32(e,a),1<>31,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSL2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<<32-e,s[r]<<=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]&1,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructLSR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]),i==0?(s.cpsrC=e[t]>>31,e[r]=0):(s.cpsrC=e[t]&1<>>i),s.cpsrN=0,s.cpsrZ=!(e[r]&4294967295)}};h.prototype.constructLSR2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;e&&(e<32?(i.cpsrC=s[r]&1<>>=e):(e>32?i.cpsrC=0:i.cpsrC=s[r]>>31,s[r]=0)),i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMOV1=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=t,i.cpsrN=t>>31,i.cpsrZ=!(t&4294967295)}};h.prototype.constructMOV2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=0,s.cpsrV=0,e[r]=a}};h.prototype.constructMOV3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[t]}};h.prototype.constructMUL=function(r,t){var i=this.cpu,s=i.gprs;return function(){if(i.mmu.waitPrefetch(s[15]),i.mmu.waitMul(s[t]),s[t]&4294901760&&s[r]&4294901760){var e=(s[r]&4294901760)*s[t]&4294967295,a=(s[r]&65535)*s[t]&4294967295;s[r]=e+a&4294967295}else s[r]*=s[t];i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructMVN=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=~s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructNEG=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=-s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=0>=e>>>0,i.cpsrV=s[t]>>31&&e>>31,s[r]=e}};h.prototype.constructORR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),s[r]=s[r]|s[t],i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructPOP=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]),++i.cycles;var e=s[13],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)r&c&&(i.mmu.waitSeq32(e),s[u]=i.mmu.load32(e),e+=4,++a);t&&(s[15]=i.mmu.load32(e)&4294967294,e+=4,++a),i.mmu.waitMulti32(e,a),s[13]=e}};h.prototype.constructPUSH=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[13]-4,a=0;i.mmu.waitPrefetch(s[15]),t&&(i.mmu.store32(e,s[14]),e-=4,++a);var c,u;for(c=128,u=7;c;c>>=1,--u)if(r&c){i.mmu.store32(e,s[u]),e-=4,++a;break}for(c>>=1,--u;c;c>>=1,--u)r&c&&(i.mmu.store32(e,s[u]),e-=4,++a);i.mmu.waitMulti32(e,a),s[13]=e+4}};h.prototype.constructROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[t]&255;if(e){var a=e&31;a>0?(i.cpsrC=s[r]&1<>>a|s[r]<<32-a):i.cpsrC=s[r]>>31}i.cpsrN=s[r]>>31,i.cpsrZ=!(s[r]&4294967295)}};h.prototype.constructSBC=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=(s[t]>>>0)+(i.cpsrC?0:1),a=(s[r]>>>0)-e;i.cpsrN=a>>31,i.cpsrZ=!(a&4294967295),i.cpsrC=s[r]>>>0>=a>>>0,i.cpsrV=(s[r]^e)>>31&&(s[r]^a)>>31,s[r]=a}};h.prototype.constructSTMIA=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.wait(s[15]);var e=s[r],a=0,c,u;for(c=1,u=0;u<8;c<<=1,++u)if(t&c){i.mmu.store32(e,s[u]),e+=4,++a;break}for(c<<=1,++u;u<8;c<<=1,++u)t&c&&(i.mmu.store32(e,s[u]),e+=4,++a);i.mmu.waitMulti32(e,a),s[r]=e}};h.prototype.constructSTR1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store32(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait32(a)}};h.prototype.constructSTR2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store32(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait32(e[t]+e[i])}};h.prototype.constructSTR3=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.store32(s[13]+t,s[r]),i.mmu.wait(s[15]),i.mmu.wait32(s[13]+t)}};h.prototype.constructSTRB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store8(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRB2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store8(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSTRH1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){var a=e[t]+i;s.mmu.store16(a,e[r]),s.mmu.wait(e[15]),s.mmu.wait(a)}};h.prototype.constructSTRH2=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.store16(e[t]+e[i],e[r]),s.mmu.wait(e[15]),s.mmu.wait(e[t]+e[i])}};h.prototype.constructSUB1=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-i;s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=i,s.cpsrV=e[t]>>31&&(e[t]^a)>>31,e[r]=a}};h.prototype.constructSUB2=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]-t;i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295),i.cpsrC=s[r]>>>0>=t,i.cpsrV=s[r]>>31&&(s[r]^e)>>31,s[r]=e}};h.prototype.constructSUB3=function(r,t,i){var s=this.cpu,e=s.gprs;return function(){s.mmu.waitPrefetch(e[15]);var a=e[t]-e[i];s.cpsrN=a>>31,s.cpsrZ=!(a&4294967295),s.cpsrC=e[t]>>>0>=e[i]>>>0,s.cpsrV=e[t]>>31!=e[i]>>31&&e[t]>>31!=a>>31,e[r]=a}};h.prototype.constructSWI=function(r){var t=this.cpu,i=t.gprs;return function(){t.irq.swi(r),t.mmu.waitPrefetch(i[15])}};h.prototype.constructTST=function(r,t){var i=this.cpu,s=i.gprs;return function(){i.mmu.waitPrefetch(s[15]);var e=s[r]&s[t];i.cpsrN=e>>31,i.cpsrZ=!(e&4294967295)}};function A(){this.SP=13,this.LR=14,this.PC=15,this.MODE_ARM=0,this.MODE_THUMB=1,this.MODE_USER=16,this.MODE_FIQ=17,this.MODE_IRQ=18,this.MODE_SUPERVISOR=19,this.MODE_ABORT=23,this.MODE_UNDEFINED=27,this.MODE_SYSTEM=31,this.BANK_NONE=0,this.BANK_FIQ=1,this.BANK_IRQ=2,this.BANK_SUPERVISOR=3,this.BANK_ABORT=4,this.BANK_UNDEFINED=5,this.WORD_SIZE_ARM=4,this.WORD_SIZE_THUMB=2,this.BASE_RESET=0,this.BASE_UNDEF=4,this.BASE_SWI=8,this.BASE_PABT=12,this.BASE_DABT=16,this.BASE_IRQ=24,this.BASE_FIQ=28,this.armCompiler=new n(this),this.thumbCompiler=new h(this),this.generateConds(),this.gprs=new Int32Array(16),this.dfprs=new Float64Array(16),this.sfprs=new Float32Array(this.dfprs.buffer),this.ifprs=new Int32Array(this.dfprs.buffer)}A.prototype.resetCPU=function(r){for(var t=0;t<15;++t)this.gprs[t]=0;this.gprs[15]=r+4,this.dfprs.set(0),this.loadInstruction=this.loadInstructionArm,this.execMode=0,this.instructionWidth=4,this.mode=31,this.cpsrI=!1,this.cpsrF=!1,this.cpsrV=!1,this.cpsrC=!1,this.cpsrZ=!1,this.cpsrN=!1,this.bankedRegisters=[new Int32Array(7),new Int32Array(7),new Int32Array(2),new Int32Array(2),new Int32Array(2),new Int32Array(2)],this.spsr=0,this.bankedSPSRs=new Int32Array(6),this.cycles=0,this.shifterOperand=0,this.shifterCarryOut=0,this.page=null,this.pageId=0,this.pageRegion=-1,this.instruction=null,this.irq.clear();var i=this.gprs,s=this.mmu;this.step=function(){var e=this.instruction||(this.instruction=this.loadInstruction(i[15]-this.instructionWidth));if(i[15]+=this.instructionWidth,this.conditionPassed=!0,e(),!e.writesPC)this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next);else if(this.conditionPassed){var a=i[15]&=4294967294;this.execMode==0?(s.wait32(a),s.waitPrefetch32(a)):(s.wait(a),s.waitPrefetch(a)),i[15]+=this.instructionWidth,e.fixedJump?this.instruction!=null&&((e.next==null||e.next.page.invalid)&&(e.next=this.loadInstruction(i[15]-this.instructionWidth)),this.instruction=e.next):this.instruction=null}else this.instruction=null;this.irq.updateTimers()}};A.prototype.freeze=function(){return{PC:this.gprs[15]-this.instructionWidth,SP:this.gprs[13],gprs:[this.gprs[0],this.gprs[1],this.gprs[2],this.gprs[3],this.gprs[4],this.gprs[5],this.gprs[6],this.gprs[7],this.gprs[8],this.gprs[9],this.gprs[10],this.gprs[11],this.gprs[12],this.gprs[13],this.gprs[14],this.gprs[15]],sfprs:this.sfprs.slice(),dfprs:this.dfprs.slice(),ifprs:this.ifprs.slice(),mode:this.mode,cpsrI:this.cpsrI,cpsrF:this.cpsrF,cpsrV:this.cpsrV,cpsrC:this.cpsrC,cpsrZ:this.cpsrZ,cpsrN:this.cpsrN,bankedRegisters:[[this.bankedRegisters[0][0],this.bankedRegisters[0][1],this.bankedRegisters[0][2],this.bankedRegisters[0][3],this.bankedRegisters[0][4],this.bankedRegisters[0][5],this.bankedRegisters[0][6]],[this.bankedRegisters[1][0],this.bankedRegisters[1][1],this.bankedRegisters[1][2],this.bankedRegisters[1][3],this.bankedRegisters[1][4],this.bankedRegisters[1][5],this.bankedRegisters[1][6]],[this.bankedRegisters[2][0],this.bankedRegisters[2][1]],[this.bankedRegisters[3][0],this.bankedRegisters[3][1]],[this.bankedRegisters[4][0],this.bankedRegisters[4][1]],[this.bankedRegisters[5][0],this.bankedRegisters[5][1]]],spsr:this.spsr,bankedSPSRs:[this.bankedSPSRs[0],this.bankedSPSRs[1],this.bankedSPSRs[2],this.bankedSPSRs[3],this.bankedSPSRs[4],this.bankedSPSRs[5]],cycles:this.cycles,instructionWidth:this.instructionWidth}};A.prototype.defrost=function(r){this.instruction=null,this.page=null,this.pageId=0,this.pageRegion=-1,this.gprs[0]=r.gprs[0],this.gprs[1]=r.gprs[1],this.gprs[2]=r.gprs[2],this.gprs[3]=r.gprs[3],this.gprs[4]=r.gprs[4],this.gprs[5]=r.gprs[5],this.gprs[6]=r.gprs[6],this.gprs[7]=r.gprs[7],this.gprs[8]=r.gprs[8],this.gprs[9]=r.gprs[9],this.gprs[10]=r.gprs[10],this.gprs[11]=r.gprs[11],this.gprs[12]=r.gprs[12],this.gprs[13]=r.gprs[13],this.gprs[14]=r.gprs[14],this.gprs[15]=r.gprs[15],this.ifprs.set(r.ifprs),this.mode=r.mode,this.cpsrI=r.cpsrI,this.cpsrF=r.cpsrF,this.cpsrV=r.cpsrV,this.cpsrC=r.cpsrC,this.cpsrZ=r.cpsrZ,this.cpsrN=r.cpsrN,this.bankedRegisters[0][0]=r.bankedRegisters[0][0],this.bankedRegisters[0][1]=r.bankedRegisters[0][1],this.bankedRegisters[0][2]=r.bankedRegisters[0][2],this.bankedRegisters[0][3]=r.bankedRegisters[0][3],this.bankedRegisters[0][4]=r.bankedRegisters[0][4],this.bankedRegisters[0][5]=r.bankedRegisters[0][5],this.bankedRegisters[0][6]=r.bankedRegisters[0][6],this.bankedRegisters[1][0]=r.bankedRegisters[1][0],this.bankedRegisters[1][1]=r.bankedRegisters[1][1],this.bankedRegisters[1][2]=r.bankedRegisters[1][2],this.bankedRegisters[1][3]=r.bankedRegisters[1][3],this.bankedRegisters[1][4]=r.bankedRegisters[1][4],this.bankedRegisters[1][5]=r.bankedRegisters[1][5],this.bankedRegisters[1][6]=r.bankedRegisters[1][6],this.bankedRegisters[2][0]=r.bankedRegisters[2][0],this.bankedRegisters[2][1]=r.bankedRegisters[2][1],this.bankedRegisters[3][0]=r.bankedRegisters[3][0],this.bankedRegisters[3][1]=r.bankedRegisters[3][1],this.bankedRegisters[4][0]=r.bankedRegisters[4][0],this.bankedRegisters[4][1]=r.bankedRegisters[4][1],this.bankedRegisters[5][0]=r.bankedRegisters[5][0],this.bankedRegisters[5][1]=r.bankedRegisters[5][1],this.spsr=r.spsr,this.bankedSPSRs[0]=r.bankedSPSRs[0],this.bankedSPSRs[1]=r.bankedSPSRs[1],this.bankedSPSRs[2]=r.bankedSPSRs[2],this.bankedSPSRs[3]=r.bankedSPSRs[3],this.bankedSPSRs[4]=r.bankedSPSRs[4],this.bankedSPSRs[5]=r.bankedSPSRs[5],this.cycles=r.cycles,this.instructionWidth=r.instructionWidth,this.loadInstruction=r.instructionWidth==2?this.loadInstructionThumb:this.loadInstructionArm,this.execMode=r.instructionWidth==2?1:0};A.prototype.fetchPage=function(r){var t=this.mmu,i=r>>>t.BASE_OFFSET,s=t.addressToPage(i,r&t.OFFSET_MASK);if(i==this.pageRegion){if(s==this.pageId&&!this.page.invalid)return;this.pageId=s}else this.pageMask=t.memory[i].PAGE_MASK,this.pageRegion=i,this.pageId=s;this.page=t.accessPage(i,s)};A.prototype.loadInstructionArm=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>2;if(t=this.page.arm[i],t)return t;var s=this.mmu.load32(r)>>>0;return t=this.compileArm(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.arm[i]=t,t};A.prototype.loadInstructionThumb=function(r){var t=null;this.fetchPage(r);var i=(r&this.pageMask)>>1;if(t=this.page.thumb[i],t)return t;var s=this.mmu.load16(r);return t=this.compileThumb(s),t.next=null,t.page=this.page,t.address=r,t.opcode=s,this.page.thumb[i]=t,t};A.prototype.selectBank=function(r){switch(r){case 16:case 31:return 0;case 17:return 1;case 18:return 2;case 19:return 3;case 23:return 4;case 27:return 5;default:throw new N("Invalid user mode "+r+" passed to selectBank")}};A.prototype.switchExecMode=function(r){this.execMode!=r&&(this.execMode=r,r==0?(this.instructionWidth=4,this.loadInstruction=this.loadInstructionArm):(this.instructionWidth=2,this.loadInstruction=this.loadInstructionThumb))};A.prototype.switchMode=function(r){if(r!=this.mode){if(r!=16||r!=31){var t=this.selectBank(r),i=this.selectBank(this.mode);if(t!=i){if(r==17||this.mode==17){var s=i==1?1:0,e=t==1?1:0;this.bankedRegisters[s][2]=this.gprs[8],this.bankedRegisters[s][3]=this.gprs[9],this.bankedRegisters[s][4]=this.gprs[10],this.bankedRegisters[s][5]=this.gprs[11],this.bankedRegisters[s][6]=this.gprs[12],this.gprs[8]=this.bankedRegisters[e][2],this.gprs[9]=this.bankedRegisters[e][3],this.gprs[10]=this.bankedRegisters[e][4],this.gprs[11]=this.bankedRegisters[e][5],this.gprs[12]=this.bankedRegisters[e][6]}this.bankedRegisters[i][0]=this.gprs[13],this.bankedRegisters[i][1]=this.gprs[14],this.gprs[13]=this.bankedRegisters[t][0],this.gprs[14]=this.bankedRegisters[t][1],this.bankedSPSRs[i]=this.spsr,this.spsr=this.bankedSPSRs[t]}}this.mode=r}};A.prototype.packCPSR=function(){return this.mode|this.execMode<<5|this.cpsrF<<6|this.cpsrI<<7|this.cpsrN<<31|this.cpsrZ<<30|this.cpsrC<<29|this.cpsrV<<28};A.prototype.unpackCPSR=function(r){this.switchMode(r&31),this.switchExecMode(!!(r&32)),this.cpsrF=r&64,this.cpsrI=r&128,this.cpsrN=r&2147483648,this.cpsrZ=r&1073741824,this.cpsrC=r&536870912,this.cpsrV=r&268435456,this.irq.testIRQ()};A.prototype.hasSPSR=function(){return this.mode!=31&&this.mode!=16};A.prototype.raiseIRQ=function(){if(!this.cpsrI){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(18),this.spsr=r,this.gprs[14]=this.gprs[15]-t+4,this.gprs[15]=this.BASE_IRQ+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0}};A.prototype.raiseTrap=function(){var r=this.packCPSR(),t=this.instructionWidth;this.switchMode(19),this.spsr=r,this.gprs[14]=this.gprs[15]-t,this.gprs[15]=this.BASE_SWI+4,this.instruction=null,this.switchExecMode(0),this.cpsrI=!0};A.prototype.badOp=function(r){var t=function(){throw new N("Illegal instruction: 0x"+r.toString(16))};return t.writesPC=!0,t.fixedJump=!1,t};A.prototype.generateConds=function(){var r=this;this.conds=[function(){return r.conditionPassed=r.cpsrZ},function(){return r.conditionPassed=!r.cpsrZ},function(){return r.conditionPassed=r.cpsrC},function(){return r.conditionPassed=!r.cpsrC},function(){return r.conditionPassed=r.cpsrN},function(){return r.conditionPassed=!r.cpsrN},function(){return r.conditionPassed=r.cpsrV},function(){return r.conditionPassed=!r.cpsrV},function(){return r.conditionPassed=r.cpsrC&&!r.cpsrZ},function(){return r.conditionPassed=!r.cpsrC||r.cpsrZ},function(){return r.conditionPassed=!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=!r.cpsrN!=!r.cpsrV},function(){return r.conditionPassed=!r.cpsrZ&&!r.cpsrN==!r.cpsrV},function(){return r.conditionPassed=r.cpsrZ||!r.cpsrN!=!r.cpsrV},null,null]};A.prototype.barrelShiftImmediate=function(r,t,i){var s=this,e=this.gprs,a=this.badOp;switch(r){case 0:t?a=function(){s.shifterOperand=e[i]<>>t,s.shifterCarryOut=e[i]&1<>t,s.shifterCarryOut=e[i]&1<>>t|e[i]<<32-t,s.shifterCarryOut=e[i]&1<>>1,s.shifterCarryOut=e[i]&1};break}return a};A.prototype.compileArm=function(r){var t=this.badOp(r),i=r&234881024,s=this,e=this.gprs,a=this.conds[(r&4026531840)>>>28];if((r&268435440)==19922704){var c=r&15;t=this.armCompiler.constructBX(c,a),t.writesPC=!0,t.fixedJump=!1}else if(!(r&201326592)&&(i==33554432||(r&144)!=144)){var u=r&31457280,p=r&1048576,F=!1;if((u&25165824)==16777216&&!p){var R=r&4194304;if((r&11595776)==2158592){var c=r&15,m=r&255,v=(r&3840)>>7;m=m>>>v|m<<32-v,t=this.armCompiler.constructMSR(c,R,r,m,a),t.writesPC=!1}else if((r&12517376)==983040){var o=(r&61440)>>12;t=this.armCompiler.constructMRS(o,R,a),t.writesPC=o==15}}else{var f=(r&983040)>>16,o=(r&61440)>>12,U=r&96,c=r&15,g=function(){throw new N("BUG: invalid barrel shifter")};if(r&33554432){var m=r&255,ir=(r&3840)>>7;ir?g=this.armCompiler.constructAddressingMode1ImmediateRotate(m,ir):g=this.armCompiler.constructAddressingMode1Immediate(m)}else if(r&16){var l=(r&3840)>>8;switch(F=!0,U){case 0:g=this.armCompiler.constructAddressingMode1LSL(l,c);break;case 32:g=this.armCompiler.constructAddressingMode1LSR(l,c);break;case 64:g=this.armCompiler.constructAddressingMode1ASR(l,c);break;case 96:g=this.armCompiler.constructAddressingMode1ROR(l,c);break}}else{var m=(r&3968)>>7;g=this.barrelShiftImmediate(U,m,c)}switch(u){case 0:p?t=this.armCompiler.constructANDS(o,f,g,a):t=this.armCompiler.constructAND(o,f,g,a);break;case 2097152:p?t=this.armCompiler.constructEORS(o,f,g,a):t=this.armCompiler.constructEOR(o,f,g,a);break;case 4194304:p?t=this.armCompiler.constructSUBS(o,f,g,a):t=this.armCompiler.constructSUB(o,f,g,a);break;case 6291456:p?t=this.armCompiler.constructRSBS(o,f,g,a):t=this.armCompiler.constructRSB(o,f,g,a);break;case 8388608:p?t=this.armCompiler.constructADDS(o,f,g,a):t=this.armCompiler.constructADD(o,f,g,a);break;case 10485760:p?t=this.armCompiler.constructADCS(o,f,g,a):t=this.armCompiler.constructADC(o,f,g,a);break;case 12582912:p?t=this.armCompiler.constructSBCS(o,f,g,a):t=this.armCompiler.constructSBC(o,f,g,a);break;case 14680064:p?t=this.armCompiler.constructRSCS(o,f,g,a):t=this.armCompiler.constructRSC(o,f,g,a);break;case 16777216:t=this.armCompiler.constructTST(o,f,g,a);break;case 18874368:t=this.armCompiler.constructTEQ(o,f,g,a);break;case 20971520:t=this.armCompiler.constructCMP(o,f,g,a);break;case 23068672:t=this.armCompiler.constructCMN(o,f,g,a);break;case 25165824:p?t=this.armCompiler.constructORRS(o,f,g,a):t=this.armCompiler.constructORR(o,f,g,a);break;case 27262976:p?t=this.armCompiler.constructMOVS(o,f,g,a):t=this.armCompiler.constructMOV(o,f,g,a);break;case 29360128:p?t=this.armCompiler.constructBICS(o,f,g,a):t=this.armCompiler.constructBIC(o,f,g,a);break;case 31457280:p?t=this.armCompiler.constructMVNS(o,f,g,a):t=this.armCompiler.constructMVN(o,f,g,a);break}t.writesPC=o==15}}else if((r&263196656)==16777360){var c=r&15,o=r>>12&15,f=r>>16&15;r&4194304?t=this.armCompiler.constructSWPB(o,f,c,a):t=this.armCompiler.constructSWP(o,f,c,a),t.writesPC=o==15}else switch(i){case 0:if((r&16777456)==144){var o=(r&983040)>>16,f=(r&61440)>>12,l=(r&3840)>>8,c=r&15;switch(r&15728640){case 0:t=this.armCompiler.constructMUL(o,l,c,a);break;case 1048576:t=this.armCompiler.constructMULS(o,l,c,a);break;case 2097152:t=this.armCompiler.constructMLA(o,f,l,c,a);break;case 3145728:t=this.armCompiler.constructMLAS(o,f,l,c,a);break;case 8388608:t=this.armCompiler.constructUMULL(o,f,l,c,a);break;case 9437184:t=this.armCompiler.constructUMULLS(o,f,l,c,a);break;case 10485760:t=this.armCompiler.constructUMLAL(o,f,l,c,a);break;case 11534336:t=this.armCompiler.constructUMLALS(o,f,l,c,a);break;case 12582912:t=this.armCompiler.constructSMULL(o,f,l,c,a);break;case 13631488:t=this.armCompiler.constructSMULLS(o,f,l,c,a);break;case 14680064:t=this.armCompiler.constructSMLAL(o,f,l,c,a);break;case 15728640:t=this.armCompiler.constructSMLALS(o,f,l,c,a);break}t.writesPC=o==15}else{var _=r&1048576,o=(r&61440)>>12,dr=(r&3840)>>4,Pr=c=r&15,ar=r&32,p=r&64,L=r&2097152,i=r&4194304,C;if(i){var m=Pr|dr;C=this.armCompiler.constructAddressingMode23Immediate(r,m,a)}else C=this.armCompiler.constructAddressingMode23Register(r,c,a);C.writesPC=!!L&&f==15,(r&144)==144&&(_?ar?p?t=this.armCompiler.constructLDRSH(o,C,a):t=this.armCompiler.constructLDRH(o,C,a):p&&(t=this.armCompiler.constructLDRSB(o,C,a)):!p&&ar&&(t=this.armCompiler.constructSTRH(o,C,a))),t.writesPC=o==15||C.writesPC}break;case 67108864:case 100663296:var o=(r&61440)>>12,_=r&1048576,cr=r&4194304,i=r&33554432;if((r&4293918960)==-403701520){var m=r&15;throw new N("Program exited ("+m+")",void 0,!0)}var C=function(){throw new N("Unimplemented memory access: 0x"+r.toString(16))};if(~r&16777216&&(r&=4292870143),i){var c=r&15,U=r&96,ur=(r&3968)>>7;U||ur?(g=this.barrelShiftImmediate(U,ur,c),C=this.armCompiler.constructAddressingMode2RegisterShifted(r,g,a)):C=this.armCompiler.constructAddressingMode23Register(r,c,a)}else{var O=r&4095;C=this.armCompiler.constructAddressingMode23Immediate(r,O,a)}_?cr?t=this.armCompiler.constructLDRB(o,C,a):t=this.armCompiler.constructLDR(o,C,a):cr?t=this.armCompiler.constructSTRB(o,C,a):t=this.armCompiler.constructSTR(o,C,a),t.writesPC=_&&(o==15||C.writesPC);break;case 134217728:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,l=r&65535,f=(r&983040)>>16,C,m=0,O=0,Z=!1;if(J){j&&(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),O+=4)}else{j||(m=4);for(var H=1,i=0;i<16;H<<=1,++i)l&H&&(L&&i==f&&!O&&(l&=~H,m+=4,Z=!0),m-=4,O-=4)}L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?(B?t=this.armCompiler.constructLDMS(l,C,a):t=this.armCompiler.constructLDM(l,C,a),t.writesPC=!!(l&32768)):(B?t=this.armCompiler.constructSTMS(l,C,a):t=this.armCompiler.constructSTM(l,C,a),t.writesPC=!1);break;case 167772160:var m=r&16777215;m&8388608&&(m|=4278190080),m<<=2;var br=r&16777216;br?t=this.armCompiler.constructBL(m,a):t=this.armCompiler.constructB(m,a),t.writesPC=!0,t.fixedJump=!0;break;case 201326592:var _=r&1048576,L=r&2097152,B=r&4194304,J=r&8388608,j=r&16777216,f=(r&983040)>>16,W=(r&61440)>>12,Or=(r&3840)>>8,m=r&255,yr=r>>28&15,a=this.conds[yr];if((r&264179456)==221055488)t=this.armCompiler.constructVPUSH(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==221055744)t=this.armCompiler.constructVPUSH(a,((B?16:0)|W)*2,m,!1);else if((r&264179456)==213715456)t=this.armCompiler.constructVPOP(a,W<<1|(B?1:0),m,!0);else if((r&264179456)==213715712)t=this.armCompiler.constructVPOP(a,((B?16:0)|W)*2,m,!1);else if((r&253759232)==218106368){m*=4,J||(m=-m);var Z=!1,K=W<<1|(B?1:0),C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!0):t=this.armCompiler.constructVSTR(a,K,C,!0)}else if((r&253759232)==218106624){m*=4,J||(m=-m);var Z=!1,K=((B?16:0)|W)*2,C;L?C=this.armCompiler.constructAddressingMode4Writeback(m,O,f,Z):C=this.armCompiler.constructAddressingMode4(m,f),_?t=this.armCompiler.constructVLDR(a,K,C,!1):t=this.armCompiler.constructVSTR(a,K,C,!1)}break;case 234881024:if((r&251658240)==251658240){var m=r&16777215;t=this.armCompiler.constructSWI(m,a),t.writesPC=!1}else if((r&263720528)==246942272){let k=r>>28&15,d=r>>22&1,x=r>>16&7,M=r>>12&15,P=r>>8&1,y=r>>7&1,b=r>>5&1,S=r&15,w=x&4,V=P!=0,G=w?x&1:0,$=y!=0,rr=!1,Sr=P?(d?16:0)|M:M<<1|(d?1:0),wr=P?(b?16:0)|S:S<<1|(b?1:0);t=this.armCompiler.constructVCVT(a,Sr,wr,w,V,G,$,rr),t.writesPC=!1}else if((r&264179408)==246876864){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>5&1,y=r&15,b=M!=0,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(P?16:0)|y:y<<1|(P?1:0);t=this.armCompiler.constructVCVTF(a,S,w,b),t.writesPC=!1}else if((r&262147600)==236980736){let k=r>>28&15,d=r>>22&1,x=r>>7&1,M=r>>5&1,P=(r&15728640)>>20,y=(r&983040)>>16,b=(r&61440)>>12,S=(r&224)>>5,w=r&15,V=r>>8&1,G=V?(d?16:0)|b:b<<1|(d?1:0),$=V?(M?16:0)|w:w<<1|(M?1:0),rr=V?(x?16:0)|y:y<<1|(x?1:0);var a=this.conds[k];t=this.armCompiler.constructVFP3Register(a,P,rr,G,V,S,$),t.writesPC=!1}else if((r&263195728)==243271680){let k=r>>28&15,d=r>>22&1,x=r>>16&15,M=r>>12&15,P=r>>8&3,y=r>>7&1,b=r>>5&1,S=r&15,w=P==3?(d?16:0)|M:M<<1|(d?1:0),V=P==3?(b?16:0)|S:S<<1|(b?1:0),G=P==3?(y?16:0)|x:x<<1|(y?1:0);t=this.armCompiler.constructVFP3Register(a,8,G,w,P==3,0,V),t.writesPC=!1}else if((r&264179280)==246680128){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP(a,S,x,M,P,w,b),t.writesPC=!1}else if((r&264179455)==246745664){let k=r>>28&15,d=r>>22&1,x=r>>12&15,M=r>>8&1,P=r>>7&1,y=r>>5&1,b=r&15,S=M?(d?16:0)|x:x<<1|(d?1:0),w=M?(y?16:0)|b:b<<1|(y?1:0);var a=this.conds[k];t=this.armCompiler.constructVCMP0(a,S,x,M,P,w,b),t.writesPC=!1}else if(r==4008835600)t=this.armCompiler.constructNOP();else if((r&266342160)==234883600){let k=r>>28&15,d=r>>20&1,x=r>>16&15,M=r>>12&15,P=r>>7&1;var a=this.conds[k];t=this.armCompiler.constructVMOV(a,d,x<<1|(P?1:0),M)}else r==3992980240?t=this.armCompiler.constructVMOV(a,!1,0,0):r==3995081488&&(t=this.armCompiler.constructVMOV(a,!1,1,1));break;default:throw new N("Bad opcode: 0x"+r.toString(16))}return t.execMode=0,t.fixedJump=t.fixedJump||!1,t};A.prototype.compileThumb=function(r){var t=this.badOp(r&65535),i=this,s=this.gprs;if((r&64512)==16384){var e=(r&56)>>3,a=r&7;switch(r&960){case 0:t=this.thumbCompiler.constructAND(a,e);break;case 64:t=this.thumbCompiler.constructEOR(a,e);break;case 128:t=this.thumbCompiler.constructLSL2(a,e);break;case 192:t=this.thumbCompiler.constructLSR2(a,e);break;case 256:t=this.thumbCompiler.constructASR2(a,e);break;case 320:t=this.thumbCompiler.constructADC(a,e);break;case 384:t=this.thumbCompiler.constructSBC(a,e);break;case 448:t=this.thumbCompiler.constructROR(a,e);break;case 512:t=this.thumbCompiler.constructTST(a,e);break;case 576:t=this.thumbCompiler.constructNEG(a,e);break;case 640:t=this.thumbCompiler.constructCMP2(a,e);break;case 704:t=this.thumbCompiler.constructCMN(a,e);break;case 768:t=this.thumbCompiler.constructORR(a,e);break;case 832:t=this.thumbCompiler.constructMUL(a,e);break;case 896:t=this.thumbCompiler.constructBIC(a,e);break;case 960:t=this.thumbCompiler.constructMVN(a,e);break}t.writesPC=!1}else if((r&64512)==17408){var e=(r&120)>>3,c=r&7,u=r&128,a=c|u>>4;switch(r&768){case 0:t=this.thumbCompiler.constructADD4(a,e),t.writesPC=a==15;break;case 256:t=this.thumbCompiler.constructCMP3(a,e),t.writesPC=!1;break;case 512:t=this.thumbCompiler.constructMOV3(a,e),t.writesPC=a==15;break;case 768:t=this.thumbCompiler.constructBX(a,e),t.writesPC=!0,t.fixedJump=!1;break}}else if((r&63488)==6144){var e=(r&448)>>6,c=(r&56)>>3,a=r&7;switch(r&1536){case 0:t=this.thumbCompiler.constructADD3(a,c,e);break;case 512:t=this.thumbCompiler.constructSUB3(a,c,e);break;case 1024:var p=(r&448)>>6;p?t=this.thumbCompiler.constructADD1(a,c,p):t=this.thumbCompiler.constructMOV2(a,c,e);break;case 1536:var p=(r&448)>>6;t=this.thumbCompiler.constructSUB1(a,c,p);break}t.writesPC=!1}else if(r&57344)if((r&57344)==8192){var p=r&255,c=(r&1792)>>8;switch(r&6144){case 0:t=this.thumbCompiler.constructMOV1(c,p);break;case 2048:t=this.thumbCompiler.constructCMP1(c,p);break;case 4096:t=this.thumbCompiler.constructADD2(c,p);break;case 6144:t=this.thumbCompiler.constructSUB2(c,p);break}t.writesPC=!1}else if((r&63488)==18432){var a=(r&1792)>>8,p=(r&255)<<2;t=this.thumbCompiler.constructLDR3(a,p),t.writesPC=!1}else if((r&61440)==20480){var a=r&7,c=(r&56)>>3,e=(r&448)>>6,F=r&3584;switch(F){case 0:t=this.thumbCompiler.constructSTR2(a,c,e);break;case 512:t=this.thumbCompiler.constructSTRH2(a,c,e);break;case 1024:t=this.thumbCompiler.constructSTRB2(a,c,e);break;case 1536:t=this.thumbCompiler.constructLDRSB(a,c,e);break;case 2048:t=this.thumbCompiler.constructLDR2(a,c,e);break;case 2560:t=this.thumbCompiler.constructLDRH2(a,c,e);break;case 3072:t=this.thumbCompiler.constructLDRB2(a,c,e);break;case 3584:t=this.thumbCompiler.constructLDRSH(a,c,e);break}t.writesPC=!1}else if((r&57344)==24576){var a=r&7,c=(r&56)>>3,p=(r&1984)>>4,R=r&4096;R&&(p>>=2);var m=r&2048;m?R?t=this.thumbCompiler.constructLDRB1(a,c,p):t=this.thumbCompiler.constructLDR1(a,c,p):R?t=this.thumbCompiler.constructSTRB1(a,c,p):t=this.thumbCompiler.constructSTR1(a,c,p),t.writesPC=!1}else if((r&62976)==46080){var v=!!(r&256),o=r&255;r&2048?(t=this.thumbCompiler.constructPOP(o,v),t.writesPC=v,t.fixedJump=!1):(t=this.thumbCompiler.constructPUSH(o,v),t.writesPC=!1)}else if(r&32768)switch(r&28672){case 0:var a=r&7,c=(r&56)>>3,p=(r&1984)>>5;r&2048?t=this.thumbCompiler.constructLDRH1(a,c,p):t=this.thumbCompiler.constructSTRH1(a,c,p),t.writesPC=!1;break;case 4096:var a=(r&1792)>>8,p=(r&255)<<2,m=r&2048;m?t=this.thumbCompiler.constructLDR4(a,p):t=this.thumbCompiler.constructSTR3(a,p),t.writesPC=!1;break;case 8192:var a=(r&1792)>>8,p=(r&255)<<2;r&2048?t=this.thumbCompiler.constructADD6(a,p):t=this.thumbCompiler.constructADD5(a,p),t.writesPC=!1;break;case 12288:if(!(r&3840)){var R=r&128,p=(r&127)<<2;R&&(p=-p),t=this.thumbCompiler.constructADD7(p),t.writesPC=!1}break;case 16384:var c=(r&1792)>>8,o=r&255;r&2048?t=this.thumbCompiler.constructLDMIA(c,o):t=this.thumbCompiler.constructSTMIA(c,o),t.writesPC=!1;break;case 20480:var f=(r&3840)>>8,p=r&255;if(f==15)t=this.thumbCompiler.constructSWI(p),t.writesPC=!1;else{r&128&&(p|=4294967040),p<<=1;var U=this.conds[f];t=this.thumbCompiler.constructB1(p,U),t.writesPC=!0,t.fixedJump=!0}break;case 24576:case 28672:var p=r&2047,g=r&6144;switch(g){case 0:p&1024&&(p|=4294965248),p<<=1,t=this.thumbCompiler.constructB2(p),t.writesPC=!0,t.fixedJump=!0;break;case 2048:break;case 4096:p&1024&&(p|=4294966272),p<<=12,t=this.thumbCompiler.constructBL1(p),t.writesPC=!1;break;case 6144:t=this.thumbCompiler.constructBL2(p),t.writesPC=!0,t.fixedJump=!1;break}break;default:throw new N("Undefined instruction: 0x"+r.toString(16))}else throw new N("Bad opcode: 0x"+r.toString(16));else{var a=r&7,e=(r&56)>>3,p=(r&1984)>>6;switch(r&6144){case 0:t=this.thumbCompiler.constructLSL1(a,e,p);break;case 2048:t=this.thumbCompiler.constructLSR1(a,e,p);break;case 4096:t=this.thumbCompiler.constructASR1(a,e,p);break;case 6144:break}t.writesPC=!1}return t.execMode=1,t.fixedJump=t.fixedJump||!1,t};var Y=class{constructor(){this.f64arr=new Float64Array(1);this.f32arr=new Float32Array(this.f64arr.buffer);this.i32arr=new Int32Array(this.f64arr.buffer);this.BASE_OFFSET=24;this.OFFSET_MASK=16777215;this.core=new A,this.core.irq=this,this.core.mmu=this,this.resetMemory()}resetMemory(){this.memory=[];for(var t=0;t<256;t++)this.memory[t]={PAGE_MASK:2047,ICACHE_PAGE_BITS:10,icache:new Array}}advanceInsn(){var t=this.core.cycles;return this.core.step(),t-=this.core.cycles,t>0?t:1}getPC(){return this.core.gprs[15]-this.core.instructionWidth}getSP(){return this.core.gprs[13]}isStable(){return!0}connectMemoryBus(t){this.bus=t}reset(){this.resetMemory();let t=this.load32(0);this.core.resetCPU(t)}saveState(){return this.core.freeze()}loadState(t){this.core.defrost(t)}load8(t){return this.bus.read(t)<<24>>24}loadU8(t){return this.bus.read(t)&255}load16(t){return this.loadU16(t)<<16>>16}loadU16(t){return this.bus.read(t)|this.bus.read(t+1)<<8}load32(t){var i=this.bus.read32(t);return i}store8(t,i){this.bus.write(t,i&255)}store16(t,i){this.bus.write(t,i&255),this.bus.write(t+1,i>>8&255)}store32(t,i){this.bus.write32(t,i)}wait(t){++this.core.cycles}wait32(t){++this.core.cycles}waitSeq32(t){++this.core.cycles}waitMul(t){(t&4294967040)==4294967040||!(t&4294967040)?this.core.cycles+=1:(t&4294901760)==4294901760||!(t&4294901760)?this.core.cycles+=2:(t&4278190080)==4278190080||!(t&4278190080)?this.core.cycles+=3:this.core.cycles+=4}waitMulti32(t,i){this.core.cycles+=2}waitPrefetch(t){++this.core.cycles}waitPrefetch32(t){++this.core.cycles}addressToPage(t,i){return i>>this.memory[t].ICACHE_PAGE_BITS}accessPage(t,i){var s=this.memory[t],e=s.icache[i];return(!e||e.invalid)&&(e={thumb:new Array(1<>16)}clear(){}updateTimers(){}testIRQ(){}isThumb(){return this.core.instructionWidth==2}getDebugTree(){return{state:this.saveState(),mmu:this.core.mmu}}};var kr=fr([[T.A,0,1],[T.B,0,2],[T.GP_A,0,1],[T.GP_B,0,2],[T.SELECT,0,4],[T.START,0,8],[T.RIGHT,0,16],[T.LEFT,0,32],[T.UP,0,64],[T.DOWN,0,128]]),D=0,I=1048576,Mr=0,X=67108864,z=256,Er=1e6,xr=4e6,Ar=3991793133,q=class extends Rr{constructor(){super();this.cpuFrequency=xr;this.canvasWidth=160;this.numTotalScanlines=256;this.numVisibleScanlines=128;this.cpuCyclesPerLine=Math.floor(xr/(256*60));this.defaultROMSize=I-Mr;this.sampleRate=1;this.cpu=new Y;this.ram=new Uint8Array(I);this.ram16=new Uint16Array(this.ram.buffer);this.ram32=new Uint32Array(this.ram.buffer);this.rombase=Mr;this.brightness=255;this.ioregs=new Uint8Array(z);this.ioregs32=new Uint32Array(this.ioregs.buffer);this.read=er([[D,D+I-1,I-1,i=>this.ram[i]],[X,X+z-1,z-1,(i,s)=>this.readIO(i)]],{defaultval:Ar&255});this.write=er([[D,D+I-1,I-1,(i,s)=>{this.ram[i]=s}],[X,X+z-1,z-1,(i,s)=>{this.writeIO(i,s)}]]);this.read32=i=>i>=D&&i>2]:this.read(i)|this.read(i+1)<<8|this.read(i+2)<<16|this.read(i+3)<<24;this.write32=(i,s)=>{i>=D&&i>2]=s:(this.write(i,s&255),this.write(i+1,s>>8&255),this.write(i+2,s>>16&255),this.write(i+3,s>>24&255))};this.connectCPUMemoryBus(this),this.handler=hr(this.inputs,kr)}connectVideo(i){super.connectVideo(i),this.pixels32=i,this.pixels8=new Uint8Array(i.buffer)}connectSerialIO(i){this.serial=i}loadROM(i){super.loadROM(i)}reset(){this.ram.fill(0),this.rom&&this.ram.set(this.rom,this.rombase),super.reset(),this.serialOut=[],this.serialIn=[]}readAddress(i){return i>=D&&i>8;case 36:return this.getRasterX();case 37:return this.getRasterX()>>8;case 64:return(this.serial.byteAvailable()?128:0)|(this.serial.clearToSend()?64:0);case 68:let s=this.serialIn.shift();return s!=null?(this.serialOut.push(s),s.value):0;default:return 0}}writeIO(i,s){this.ioregs[i]=s,i===72&&this.serialOut.length>1&1048575,a=this.brightness<<24,c=0;c>5&31)<<11|(u>>10&31)<<19}}getDebugCategories(){return["CPU","Stack","FPU"]}getDebugInfo(i,s){switch(i){case"Stack":for(var u="",p=s.c,e=p.gprs[13],a=p.gprs[11],c=0;c<16&&(u+=E(e,8)+" "+E(this.ram32[e-D>>2],8),e==a&&(u+=" FP"),u+=` `,e+=4,!(e>=D+I));c++);return u;case"CPU":var u="",p=s.c;let F={2:"Thumb",4:"ARM"},R={15:"PC",14:"LR",13:"SP",12:"IP",11:"FP",9:"SB"};for(var c=0;c<8;c++){let v=c+8;u+=Q("r"+c,5)+" "+E(p.gprs[c],8)+" ",u+=Q("r"+v,5)+" "+E(p.gprs[v],8)+Q(R[v]||"",3)+` `}return u+="Flags ",u+=p.cpsrN?" N":" -",u+=p.cpsrV?" V":" -",u+=p.cpsrF?" F":" -",u+=p.cpsrZ?" Z":" -",u+=p.cpsrC?" C":" -",u+=p.cpsrI?" I":" -",u+=` `,u+="MODE "+F[p.instructionWidth]+" "+Dr[p.mode]+` @@ -6,4 +6,4 @@ import{H as gr,t as Rr}from"./chunk-FFJHITEL.js";import{d as mr}from"./chunk-UXR `,u+="cycl "+p.cycles+` `,u;case"FPU":for(var u="",p=s.c,c=0;c<16;c++)u+=Q("s"+c,5)+" "+E(p.ifprs[c],8)+" "+p.sfprs[c].toPrecision(6),c&1&&(u+=Q("d"+(c>>1),5)+" "+p.dfprs[c>>1].toPrecision(12)),u+=` `;return u}}saveState(){var i=super.saveState();return i.serial={sin:this.serialIn.slice(0),sout:this.serialOut.slice(0)},i}loadState(i){super.loadState(i),this.serialIn=i.serial.sin,this.serialOut=i.serial.sout}},Dr={16:"USER",17:"FIQ",18:"IRQ",19:"SUPERVISOR",23:"ABORT",27:"UNDEFINED",31:"SYSTEM"};var Ir=[{id:"vidfill.c",name:"Video Memory Fill"}],tr=class extends gr{constructor(){super(...arguments);this.getToolForFilename=mr}getPresets(){return Ir}getDefaultExtensions(){return[".c",".armips",".vasm"]}},sr=class extends tr{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"ROM",start:0,size:1048576,type:"ram"},{name:"I/O",start:67108864,size:256,type:"io"}]}}}async start(){super.start(),console.log("Loading Capstone"),await or("./lib/capstone-arm.min.js"),this.capstone_arm=new cs.Capstone(cs.ARCH_ARM,cs.MODE_ARM),this.capstone_thumb=new cs.Capstone(cs.ARCH_ARM,cs.MODE_THUMB)}newMachine(){return new q}readAddress(i){return this.machine.read(i)}getPlatformName(){return"ARM7"}getDebugTree(){return nr(pr({},this.machine.cpu.getDebugTree()),{dwarf:this.debugSymbols.debuginfo})}disassemble(i,s){for(var e=this.machine.cpu.isThumb(),a=e?this.capstone_thumb:this.capstone_arm,c=[],u=0;u<4;u++)c[u]=s(i+u);var p=a.disasm(c,i,4),F=p&&p[0];return F?{nbytes:F.size,line:F.mnemonic+" "+F.op_str,isaddr:F.address>0,iscall:F.mnemonic=="bl"||F.mnemonic=="blx"}:{nbytes:4,line:"???",isaddr:!1}}};Fr.arm32=sr;export{tr as BaseARMMachinePlatform}; -//# sourceMappingURL=arm32-KWBC45CY.js.map +//# sourceMappingURL=arm32-SQFCAWO3.js.map diff --git a/gen/arm32-KWBC45CY.js.map b/gen/arm32-SQFCAWO3.js.map similarity index 100% rename from gen/arm32-KWBC45CY.js.map rename to gen/arm32-SQFCAWO3.js.map diff --git a/gen/astrocade-YPJ5JSVL.js b/gen/astrocade-CFGBJILJ.js similarity index 99% rename from gen/astrocade-YPJ5JSVL.js rename to gen/astrocade-CFGBJILJ.js index 24add4b3..bf5e77d9 100644 --- a/gen/astrocade-YPJ5JSVL.js +++ b/gen/astrocade-CFGBJILJ.js @@ -1,4 +1,4 @@ -import{J as D0,c as l0,d as u0,e as X0,l as m0,t as E0}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{P as O,ba as F,ca as h0,ea as C0,g as l,ga as x0,ha as N,l as o0,m as B0,t as g0}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var p0=72e4,P0=C0([[F.UP,16,1],[F.DOWN,16,2],[F.LEFT,16,4],[F.RIGHT,16,8],[F.A,16,16],[F.P2_UP,17,1],[F.P2_DOWN,17,2],[F.P2_LEFT,17,4],[F.P2_RIGHT,17,8],[F.P2_A,17,16],[F.VK_P,20,1],[F.VK_SLASH,20,2],[F.VK_X,20,4],[F.VK_MINUS,20,8],[F.VK_COMMA,20,16],[F.VK_EQUALS,20,32],[F.VK_O,21,1],[F.VK_L,21,2],[F.VK_9,21,4],[F.VK_6,21,8],[F.VK_3,21,16],[F.VK_PERIOD,21,32],[F.VK_I,22,1],[F.VK_K,22,2],[F.VK_8,22,4],[F.VK_5,22,8],[F.VK_2,22,16],[F.VK_0,22,32],[F.VK_U,23,1],[F.VK_J,23,2],[F.VK_7,23,4],[F.VK_4,23,8],[F.VK_1,23,16],[F.VK_BACK_SLASH,23,32]]),R0=2,G0=function(o){var a,e,i,c,U,X,W,r0,J;let y=o?320:160,K=o?204:102,A0=y>>2,Y0=o?16383:4095,T0=256,H0=4293848814,k0=4278190080,w0=o?3:1,Q0=.7;var n0=0,b=new Uint8Array(32),g=0,Y=0,m=!1,w=0,Q=0,h=0,I=0,C=0,S=K,j=new Uint32Array(8),v=new Uint8Array(8),Z=0,T=new Uint8Array(o?262:131),E=new Uint8Array(4),D=0,M=0,u=0,L=0,B=new Uint8Array(8),V=0;function S0(){return a.scanline=(Q&63)?0:4;r0[A--]=j[p+(t&3)],t>>=2}}function a0(x){for(var t=x*y/4,A=0;A>=4);for(var n=0;n<4;n++){var p=t&1?Y>>2&3:Y&3;A|=p<>=1}t=A,m=!m}if(g&4){if(D&4){var f=2*(~D&3);t=(E[3]>>f&3)<<6|(E[2]>>f&3)<<4|(E[1]>>f&3)<<2|(E[0]>>f&3)<<0}else{E[D++&3]=t;return}D++}else{var f=(g&3)<<1,A=t>>f|w;w=t<<8-f&255,t=A}if(g&64&&(t=(t&3)<<6|(t&12)<<2|(t&48)>>2|(t&192)>>6),g&48){var s=i[x],r=0;s&192&&t&192&&(r|=1),s&48&&t&48&&(r|=2),s&12&&t&12&&(r|=4),s&3&&t&3&&(r|=8),g&16?t|=s:t^=s,M=M&15|r|r<<4}_(x,t)}function q(x,t){v[x&7]=t&255,j[x&7]=s0[t&255],H()}function V0(){var x=Q>>6}function H(){Z=K}function I0(){let x=B[0]|B[1]<<8,t=B[2]&63,A=B[3],n=V&255|B[4]<<8,p=B[5],f=B[6],s,r=0,d=0,N0=u;r=0,(t&2)===0&&(r=1);function f0(){r&&(t&4)!==0&&(s!==0||(t&8)===0)&&x++,(t&2)!==0&&(r^=1)}function d0(){s!==0&&((t&32)!==0?n++:n--)}for(;f>=0;){let $;for(s=p;s>=0;){let k,e0;k=(t&1)===0?x:n,s===0&&(t&8)!==0?e0=0:e0=c.read(k&65535),(t&1)===0?f0():d0(),k=(t&1)!==0?x:n,c.write(k&65535,e0),(t&1)===0?d0():f0(),d+=4,s--}$=(n&255)+A&256,n=n&65280|n+A&255,(t&16)===0?n+=$:n-=$^256,f--}u=N0+d}this.drawScanline=x=>{x==I&&h&8?(e.retryInterrupts=!(h&4),this.probe&&this.probe.logInterrupt(C),e.interrupt(C)):o&&h&18&&(e.retryInterrupts=!(h&1),this.probe&&this.probe.logInterrupt(C&240),e.interrupt(C&240)),x0?(T[x]=0,a0(x),Z--):T[x]&&(T[x]=0,a0(x))},this.init=(x,t,A,n,p)=>{a=x,n0=x.cpuCyclesPerLine*Q0,e=t,i=A,b=n,J=p,o?c={read:N([[16384,32767,16383,function(s){return z(),i[s]}],[53248,57343,4095,function(s){return i[s+16384]}],[0,16383,16383,function(s){return X?X[s]:0}],[32768,49151,16383,function(s){return X?X[s+32768]:0}]]),write:N([[16384,32767,16383,_],[0,16383,16383,c0],[53248,57343,4095,function(s,r){i[s+16384]=r}]])}:(W=x0(new o0().decode(B0(atob(y0))),8192),c={read:N([[0,8191,8191,function(s){return W[s]}],[8192,16383,8191,function(s){return X?X[s]:0}],[16384,20479,4095,function(s){return z(),i[s]}]]),write:N([[16384,20479,4095,_],[0,16383,4095,c0]])}),U={read:function(s){var r=s>>8&255;s&=31;var d;switch(s){case 8:d=M,M=0;break;case 18:d=b[s],a.sc01&&a.sc01.ready&&(d|=128);break;case 23:a.sc01&&a.speechOut(r),d=b[s];break;default:d=b[s];break}return d},write:function(s,r){if(s!=42331){if(s&=255,s>=120&&s<127){B[s&7]=r,s==122&&(V=0),s==124&&(V=V+B[3]&255),s==126&&I0();return}switch(s&=31,r&=255,s){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:q(s,r);break;case 9:Q=r,V0(),H();break;case 10:o||(S=r>>1,H());break;case 11:var d=e.saveState();q((d.BC>>8)-1,c.read(d.HL));break;case 12:g=r,w=0,D=0,m=!1;break;case 13:C=r;break;case 14:h=r;break;case 15:I=o?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:J.setACRegister(s,r);break;case 24:var d=e.saveState();J.setACRegister((d.BC>>8)-1,c.read(d.HL));break;case 25:Y=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},x.connectCPUMemoryBus(c),x.connectCPUIOBus(U),this.membus=c,this.iobus=U;for(var f=0;f<8;f++)q(f,f)},this.resetWaitStates=function(){var x=u;return u=0,x},this.peek=function(x){var t=u,A=c.read(x);return u=t,A},this.loadState=x=>{e.loadState(x.c),i.set(x.ram),j.set(x.palette),v.set(x.palinds),g=x.magicop,Y=x.xpand,m=x.xplower,w=x.shift2,Q=x.horcb,h=x.inmod,I=x.inlin,C=x.infbk,S=x.verbl,D=x.rotcount,E.set(x.rotdata),M=x.intst,L=x.slotphase|0,b.set(x.inputs),B.set(x.patboard),V=x.patdest,H()},this.saveState=()=>({c:e.saveState(),ram:i.slice(0),inputs:b.slice(0),palette:j.slice(0),palinds:v.slice(0),magicop:g,xpand:Y,xplower:m,shift2:w,horcb:Q,inmod:h,inlin:I,infbk:C,verbl:S,rotcount:D,rotdata:E.slice(0),intst:M,slotphase:L,patboard:B.slice(0),patdest:V}),this.reset=()=>{g=Y=h=I=C=w=Q=0,S=K,m=!1},this.toLongString=x=>{var t="";t+=` +import{L as D0,c as l0,d as u0,e as X0,n as m0,v as E0}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P as O,ba as F,ca as h0,ea as C0,g as l,ga as x0,ha as N,l as o0,m as B0,t as g0}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var p0=72e4,P0=C0([[F.UP,16,1],[F.DOWN,16,2],[F.LEFT,16,4],[F.RIGHT,16,8],[F.A,16,16],[F.P2_UP,17,1],[F.P2_DOWN,17,2],[F.P2_LEFT,17,4],[F.P2_RIGHT,17,8],[F.P2_A,17,16],[F.VK_P,20,1],[F.VK_SLASH,20,2],[F.VK_X,20,4],[F.VK_MINUS,20,8],[F.VK_COMMA,20,16],[F.VK_EQUALS,20,32],[F.VK_O,21,1],[F.VK_L,21,2],[F.VK_9,21,4],[F.VK_6,21,8],[F.VK_3,21,16],[F.VK_PERIOD,21,32],[F.VK_I,22,1],[F.VK_K,22,2],[F.VK_8,22,4],[F.VK_5,22,8],[F.VK_2,22,16],[F.VK_0,22,32],[F.VK_U,23,1],[F.VK_J,23,2],[F.VK_7,23,4],[F.VK_4,23,8],[F.VK_1,23,16],[F.VK_BACK_SLASH,23,32]]),R0=2,G0=function(o){var a,e,i,c,U,X,W,r0,J;let y=o?320:160,K=o?204:102,A0=y>>2,Y0=o?16383:4095,T0=256,H0=4293848814,k0=4278190080,w0=o?3:1,Q0=.7;var n0=0,b=new Uint8Array(32),g=0,Y=0,m=!1,w=0,Q=0,h=0,I=0,C=0,S=K,j=new Uint32Array(8),v=new Uint8Array(8),Z=0,T=new Uint8Array(o?262:131),E=new Uint8Array(4),D=0,M=0,u=0,L=0,B=new Uint8Array(8),V=0;function S0(){return a.scanline=(Q&63)?0:4;r0[A--]=j[p+(t&3)],t>>=2}}function a0(x){for(var t=x*y/4,A=0;A>=4);for(var n=0;n<4;n++){var p=t&1?Y>>2&3:Y&3;A|=p<>=1}t=A,m=!m}if(g&4){if(D&4){var f=2*(~D&3);t=(E[3]>>f&3)<<6|(E[2]>>f&3)<<4|(E[1]>>f&3)<<2|(E[0]>>f&3)<<0}else{E[D++&3]=t;return}D++}else{var f=(g&3)<<1,A=t>>f|w;w=t<<8-f&255,t=A}if(g&64&&(t=(t&3)<<6|(t&12)<<2|(t&48)>>2|(t&192)>>6),g&48){var s=i[x],r=0;s&192&&t&192&&(r|=1),s&48&&t&48&&(r|=2),s&12&&t&12&&(r|=4),s&3&&t&3&&(r|=8),g&16?t|=s:t^=s,M=M&15|r|r<<4}_(x,t)}function q(x,t){v[x&7]=t&255,j[x&7]=s0[t&255],H()}function V0(){var x=Q>>6}function H(){Z=K}function I0(){let x=B[0]|B[1]<<8,t=B[2]&63,A=B[3],n=V&255|B[4]<<8,p=B[5],f=B[6],s,r=0,d=0,N0=u;r=0,(t&2)===0&&(r=1);function f0(){r&&(t&4)!==0&&(s!==0||(t&8)===0)&&x++,(t&2)!==0&&(r^=1)}function d0(){s!==0&&((t&32)!==0?n++:n--)}for(;f>=0;){let $;for(s=p;s>=0;){let k,e0;k=(t&1)===0?x:n,s===0&&(t&8)!==0?e0=0:e0=c.read(k&65535),(t&1)===0?f0():d0(),k=(t&1)!==0?x:n,c.write(k&65535,e0),(t&1)===0?d0():f0(),d+=4,s--}$=(n&255)+A&256,n=n&65280|n+A&255,(t&16)===0?n+=$:n-=$^256,f--}u=N0+d}this.drawScanline=x=>{x==I&&h&8?(e.retryInterrupts=!(h&4),this.probe&&this.probe.logInterrupt(C),e.interrupt(C)):o&&h&18&&(e.retryInterrupts=!(h&1),this.probe&&this.probe.logInterrupt(C&240),e.interrupt(C&240)),x0?(T[x]=0,a0(x),Z--):T[x]&&(T[x]=0,a0(x))},this.init=(x,t,A,n,p)=>{a=x,n0=x.cpuCyclesPerLine*Q0,e=t,i=A,b=n,J=p,o?c={read:N([[16384,32767,16383,function(s){return z(),i[s]}],[53248,57343,4095,function(s){return i[s+16384]}],[0,16383,16383,function(s){return X?X[s]:0}],[32768,49151,16383,function(s){return X?X[s+32768]:0}]]),write:N([[16384,32767,16383,_],[0,16383,16383,c0],[53248,57343,4095,function(s,r){i[s+16384]=r}]])}:(W=x0(new o0().decode(B0(atob(y0))),8192),c={read:N([[0,8191,8191,function(s){return W[s]}],[8192,16383,8191,function(s){return X?X[s]:0}],[16384,20479,4095,function(s){return z(),i[s]}]]),write:N([[16384,20479,4095,_],[0,16383,4095,c0]])}),U={read:function(s){var r=s>>8&255;s&=31;var d;switch(s){case 8:d=M,M=0;break;case 18:d=b[s],a.sc01&&a.sc01.ready&&(d|=128);break;case 23:a.sc01&&a.speechOut(r),d=b[s];break;default:d=b[s];break}return d},write:function(s,r){if(s!=42331){if(s&=255,s>=120&&s<127){B[s&7]=r,s==122&&(V=0),s==124&&(V=V+B[3]&255),s==126&&I0();return}switch(s&=31,r&=255,s){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:q(s,r);break;case 9:Q=r,V0(),H();break;case 10:o||(S=r>>1,H());break;case 11:var d=e.saveState();q((d.BC>>8)-1,c.read(d.HL));break;case 12:g=r,w=0,D=0,m=!1;break;case 13:C=r;break;case 14:h=r;break;case 15:I=o?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:J.setACRegister(s,r);break;case 24:var d=e.saveState();J.setACRegister((d.BC>>8)-1,c.read(d.HL));break;case 25:Y=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},x.connectCPUMemoryBus(c),x.connectCPUIOBus(U),this.membus=c,this.iobus=U;for(var f=0;f<8;f++)q(f,f)},this.resetWaitStates=function(){var x=u;return u=0,x},this.peek=function(x){var t=u,A=c.read(x);return u=t,A},this.loadState=x=>{e.loadState(x.c),i.set(x.ram),j.set(x.palette),v.set(x.palinds),g=x.magicop,Y=x.xpand,m=x.xplower,w=x.shift2,Q=x.horcb,h=x.inmod,I=x.inlin,C=x.infbk,S=x.verbl,D=x.rotcount,E.set(x.rotdata),M=x.intst,L=x.slotphase|0,b.set(x.inputs),B.set(x.patboard),V=x.patdest,H()},this.saveState=()=>({c:e.saveState(),ram:i.slice(0),inputs:b.slice(0),palette:j.slice(0),palinds:v.slice(0),magicop:g,xpand:Y,xplower:m,shift2:w,horcb:Q,inmod:h,inlin:I,infbk:C,verbl:S,rotcount:D,rotdata:E.slice(0),intst:M,slotphase:L,patboard:B.slice(0),patdest:V}),this.reset=()=>{g=Y=h=I=C=w=Q=0,S=K,m=!1},this.toLongString=x=>{var t="";t+=` INLIN: `+x.inlin,t+=` VERBL: `+x.verbl,t+=` MAGICOP: $`+l(x.magicop),t+=` @@ -12,4 +12,4 @@ XPLOWER: `+x.xplower,t+=` Palette: `;for(var A=0;A<8;A++)t+=l(v[A]);return t+=` `,t},this.connectVideo=function(x){r0=x},this.loadROM=function(x){X=x},this.loadBIOS=function(x){W=x},this.getVisiblePixelWords=function(){return S*y}},R=class extends E0{constructor(e){super();this.cpuFrequency=1789e3;this.sc01Cycles=0;this.speechCount=0;this.rotate=0;this.arcade=e,this.cpu=new l0,this.psg=new t0(new u0),this.numTotalScanlines=e?262:131;var i=R0*(e?1:2);this.sampleRate=60*this.numTotalScanlines*i,this.audioadapter=new m0(this.psg.psg,i,this.sampleRate),this.handler=h0(this.inputs,P0),this.defaultROMSize=e?49152:8192,this.ram=new Uint8Array(e?20480:4096),this.numVisibleScanlines=e?204:102,this.canvasWidth=e?320:160,this.cpuCyclesPerLine=this.cpuFrequency/(60*this.numVisibleScanlines*1.286)|0,this.m=new G0(e),this.m.init(this,this.cpu,this.ram,this.inputs,this.psg),e&&(this.inputs[16]=255,this.inputs[17]=255,this.inputs[18]=0,this.inputs[19]=8)}read(e){return this.m.peek(e)}write(e,i){this.m.membus.write(e,i)}connectVideo(e){super.connectVideo(e),this.frontbuffer=e,this.backbuffer=new Uint32Array(e.length),this.m.connectVideo(this.backbuffer)}preFrame(){this.m.resetWaitStates()}postFrame(){var e=this.m.getVisiblePixelWords();this.frontbuffer.set(this.backbuffer.slice(0,e),0),this.frontbuffer.fill(0,e)}setPaddleInput(e,i){switch(e){case 0:this.inputs[28]=i&255;break;case 1:this.inputs[29]=i&255;break}}startScanline(){if(this.audio&&this.audioadapter.generate(this.audio),this.sc01){this.sc01Cycles+=this.sc01.clock/(60*this.numTotalScanlines);let e=this.sc01Cycles|0;this.sc01Cycles-=e,this.sc01.step(e)}}speechOut(e){let i=this.sc01;i.clock=e&64?782e3:756e3,this.speechCount++,i.load(e&63,e&128?0:2)}drawScanline(){var e=this.scanline;this.m.drawScanline(e)}advanceCPU(){var e=super.advanceCPU(),i=this.m.resetWaitStates();return i&&(e+=i,this.probe.logClocks(i)),e}loadROM(e){super.loadROM(e),this.m.loadROM(this.rom),this.reset()}loadBIOS(e){this.m.loadBIOS(x0(e,8192)),this.reset()}reset(){var e;super.reset(),this.m.reset(),this.sc01&&(this.sc01.clock=p0,this.sc01.reset(),this.sc01Cycles=0,(e=this.speech)==null||e.stop())}loadState(e){this.m.loadState(e),this.sc01&&e.sc01&&(this.sc01.loadState(e.sc01),this.sc01Cycles=e.sc01Cycles||0,this.sc01.clock=e.sc01Clock||p0)}saveState(){var e=this.m.saveState();return this.sc01&&(e.sc01=this.sc01.saveState(),e.sc01Cycles=this.sc01Cycles,e.sc01Clock=this.sc01.clock),e}getDebugCategories(){return["CPU","Stack","Astro"]}getDebugInfo(e,i){if(e==="Astro"){var c=this.m.toLongString(i);return this.sc01&&(c+=` SC-01: `+this.speechCount+" phonemes, "+(this.sc01.ready?"ready":"busy")),c}}getRasterCanvasPosition(){return{x:this.getRasterX(),y:this.getRasterY()}}getVideoParams(){return this.arcade?{width:320,height:204,rotate:this.rotate}:{width:160,height:102}}},t0=class extends X0{setACRegister(a,e){switch(a&=7,e&=255,a){case 0:this.psg.setClock(1789e3*16/(e+1)),this.psg.writeRegisterAY(7,248);break;case 1:case 2:case 3:var i=(a-1)*2,c=e*2+1;this.psg.writeRegisterAY(i,c&255),this.psg.writeRegisterAY(i+1,c>>8&255);break;case 5:this.psg.writeRegisterAY(10,e&15);break;case 6:this.psg.writeRegisterAY(8,e&15),this.psg.writeRegisterAY(9,e>>4&15);break}}},s0=[0,2368548,4737096,7171437,9539985,11974326,14342874,16777215,2425019,4784352,7213567,9582079,12016383,14384895,16753663,16762879,4784304,7143637,9568761,11937279,14306047,16740095,16749311,16758783,6946975,9306307,11731175,14096639,16465151,16736767,16745983,16755199,8847495,11206827,13631696,15994612,16724735,16733951,16743423,16752639,10420330,12779662,15138995,16713687,16723195,16732415,16741631,16751103,11534409,13959277,16318610,16713142,16722394,16731647,16741119,16750335,12255269,14680137,16711790,16713362,16722615,16732123,16741375,16750847,12517376,14876708,16711752,16714605,16724113,16733366,16742874,16752127,12255232,14680064,16711715,16716871,16726380,16735632,16745141,16754393,11534336,13959168,16318464,16720164,16729416,16738924,16748177,16757685,10420224,12779520,15141888,16723971,16733479,16742731,16752240,16761492,8847360,11206656,13639168,16007680,16738058,16747310,16756563,16766071,6946816,9309440,11743488,14112256,16480768,16752151,16761659,16770911,4784128,7151872,9585920,11954688,14323200,16757509,16766761,16776270,2429184,4797696,7232e3,9600512,12034816,14403328,16771870,16777027,9472,2377984,4746496,7180800,9549312,11983616,14352155,16777023,14080,23296,2326528,4695040,7129344,9497856,11927326,14286659,18176,27648,36864,2405376,4774144,7142661,9568041,11927374,21760,30976,40192,246272,2614784,4980503,7405371,9764703,24320,33536,43008,52224,716810,3079982,5504851,7864183,25856,35328,44544,53763,63271,1572683,3932016,6291348,26624,35840,45312,54564,63816,393068,2752401,5177269,26112,35584,44835,54343,63596,65424,2031541,4456409,24832,34084,43592,52845,62353,65462,1834970,4194302,22565,31817,41326,50578,60087,65499,2031615,4456447,19273,28781,38034,47542,56794,393215,2752511,5177343,15466,24718,34227,43479,52987,1569535,3932159,6291455,10887,20395,29648,38900,703743,3072255,5505023,7864319,6047,15299,24807,230655,2599167,4967935,7401983,9764863,688,10197,19449,2388223,4756735,7125503,9559551,11927551,187,5088,2308095,4676607,7110911,9479423,11913727,14282239];for(P=0;P<256;P++)b0=s0[P],s0[P]=g0(b0)|4278190080;var b0,P;var y0="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";var K0=[{id:"01-helloworlds.asm",name:"Hello World (ASM)"},{id:"02-telephone.asm",name:"Telephone (ASM)"},{id:"03-horcbpal.asm",name:"Paddle Demo (ASM)"},{id:"hello.c",name:"Hello Graphics"},{id:"lines.c",name:"Lines"},{id:"sprites.c",name:"Sprites"},{id:"vsync.c",name:"Sprites w/ VSYNC"},{id:"fastsprites.c",name:"Fast Sprites"},{id:"music.c",name:"Music"},{id:"rotate.c",name:"Rotate Op"},{id:"rainbow.c",name:"Rainbow"},{id:"cosmic.c",name:"Cosmic Impalas Game"},{id:"racing.c",name:"Pseudo 3-D Racing Game"}],j0=[{id:"bios.c",name:"BIOS"}],v0=[{id:"hello.c",name:"Hello Graphics"}],G=class extends D0{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"BIOS",start:0,size:8192,type:"rom"},{name:"Screen RAM",start:16384,size:4096,type:"ram"},{name:"BIOS Variables",start:20430,size:50,type:"ram"}]}}}newMachine(){return new R(!1)}getPresets(){return K0}readAddress(e){return this.machine.read(e)}showHelp(){return"https://8bitworkshop.com/docs/platforms/astrocade/"}},F0=class extends G{getPresets(){return j0}loadROM(a,e){this.machine.loadBIOS(e)}},i0=class extends G{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"ROM",start:0,size:16384,type:"rom"},{name:"Magic RAM",start:0,size:16384,type:"ram"},{name:"Screen RAM",start:16384,size:16384,type:"ram"},{name:"ROM",start:32768,size:16384,type:"rom"}]}}}newMachine(){let e=new R(!0);return this.options.rotate!=null&&(e.rotate=parseFloat(this.options.rotate)||0),e}getPresets(){return v0}};O.astrocade=G;O["astrocade-bios"]=F0;O["astrocade-arcade"]=i0; -//# sourceMappingURL=astrocade-YPJ5JSVL.js.map +//# sourceMappingURL=astrocade-CFGBJILJ.js.map diff --git a/gen/astrocade-YPJ5JSVL.js.map b/gen/astrocade-CFGBJILJ.js.map similarity index 100% rename from gen/astrocade-YPJ5JSVL.js.map rename to gen/astrocade-CFGBJILJ.js.map diff --git a/gen/atari7800-ISTONEBP.js b/gen/atari7800-ZOUJP6JR.js similarity index 98% rename from gen/atari7800-ISTONEBP.js rename to gen/atari7800-ZOUJP6JR.js index 5f4c539f..f76b4299 100644 --- a/gen/atari7800-ISTONEBP.js +++ b/gen/atari7800-ZOUJP6JR.js @@ -1,7 +1,7 @@ -import{a as j}from"./chunk-4HX34MCE.js";import{I as $,h as z,l as Y,n as K,s as V}from"./chunk-FFJHITEL.js";import{f as H}from"./chunk-UXRCACYH.js";import{P as O,aa as R,ba as o,ca as E,ea as N,g as S,ga as W,ha as _}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var b=0,F=2,v=8,Z=N([[o.A,v+0,128],[o.B,v+1,128],[o.GP_A,v+0,128],[o.GP_B,v+1,128],[o.SELECT,F,-2],[o.START,F,-1],[o.UP,b,-16],[o.DOWN,b,-32],[o.LEFT,b,-64],[o.RIGHT,b,-128],[o.P2_A,v+2,128],[o.P2_B,v+3,128],[o.P2_UP,b,-1],[o.P2_DOWN,b,-2],[o.P2_LEFT,b,-4],[o.P2_RIGHT,b,-8]]);var M=263,G=242,C=451,tt=28,et=16,rt=24,q=2,X=M*60*q,I=class{constructor(){this.regs=new Uint8Array(32)}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t}saveState(){return{regs:this.regs.slice(0)}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t])}static stateToLongString(r){let t="";return t+=R(r.regs,0,32),t}},L=class{constructor(){this.cycles=0;this.regs=new Uint8Array(32);this.offset=-1;this.dll=0;this.dlstart=0;this.dli=!1;this.h16=!1;this.h8=!1;this.writemode=0;this.indirect=!1;this.pixels=new Uint8Array(320);this.WSYNC=0}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t,r==4&&this.WSYNC++}saveState(){return{regs:this.regs.slice(0),offset:this.offset,dll:this.dll,dlstart:this.dlstart,dli:this.dli,h16:this.h16,h8:this.h8,indirect:this.indirect,writemode:this.writemode}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t]|0);this.offset=r.offset|0,this.dll=r.dll|0,this.dlstart=r.dlstart|0,this.dli=!!r.dli,this.h16=!!r.h16,this.h8=!!r.h8,this.indirect=!!r.indirect,this.writemode=r.writemode|0}isDMAEnabled(){return(this.regs[28]&96)==64}getDLLStart(){return(this.regs[12]<<8)+this.regs[16]}getCharBaseAddress(){return(this.regs[20]<<8)+this.offset}setVBLANK(r){r?(this.regs[8]|=128,this.offset=-1,this.dll=this.getDLLStart(),this.dli=this.bus&&(this.bus.read(this.dll)&128)!=0):this.regs[8]&=-129}readDLLEntry(r){if(this.dll>=16384)return;let t=r.read(this.dll);this.offset=t&15,this.h16=(t&64)!=0,this.h8=(t&32)!=0,this.dlstart=(r.read(this.dll+1)<<8)+r.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(r.read(this.dll)&128)!=0}isHoley(r){return this.indirect?!1:!!(r&32768&&(this.h16&&r&4096||this.h8&&r&2048))}readDMA(r){return this.isHoley(r)?0:(this.cycles+=3,this.bus.read(r))}doDMA(r){this.bus=r,this.cycles=0;let t=this.pixels;if(t.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=this.offset==0?rt:et,this.offset<0&&this.readDLLEntry(r);let u=this.dlstart&65280,c=this.dlstart&255;do{let x=r.read(u+(c+0&511)),m=r.read(u+(c+1&511));if(m==0||u>=16384)break;let l=r.read(u+(c+2&511)),p=r.read(u+(c+3&511)),g=!1;if((m&31)==0){var e=p>>5,n=32-(p&31),i=r.read(u+(c+4&511));g=(m&32)!=0,c+=5,this.cycles+=10,this.writemode=m&128}else{var i=p,e=m>>5,n=32-(m&31);c+=4,this.cycles+=8}this.indirect=g;let y=x+((l+(g?0:this.offset)&255)<<8);i*=2;let d=this.regs[28],k=(d&3)+(this.writemode?4:0),A=(d&4)!=0,w=g&&(d&16)!=0;w&&(n*=2);for(var s=0;s>1):y+s);if(g){let P=(this.regs[20]+this.offset<<8)+h;w&&s&1&&(P++,this.cycles-=3),h=this.readDMA(P)}switch(k){case 0:for(let a=0;a<4;a++){let f=h>>6&3;(f||A)&&(t[i]=t[i+1]=this.regs[(e<<2)+f]),h<<=2,i=i+2&511}break;case 3:for(let a=0;a<8;a++){let f=(h&128)>>6;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 4:for(let a=0;a<2;a++){let f=(h>>6&3)+(h&12);(f&3||A)&&(t[i]=t[i+1]=t[i+2]=t[i+3]=this.regs[((e&4)<<2)+f]),h<<=2,i=i+2&511}break;case 6:for(let a=0;a<4;a++){let f=(h&128)>>6|(h&8)>>3;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 2:for(let a=0;a<8;a++){let f=(h&128)>>6;f+=a&1?e&1:e>>1&1,(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 7:let P=h;for(let a=0;a<4;a++){a==2&&(P<<=2);let f=(h&128)>>6,Q=e&4|P>>2&3;(f||A)&&(t[i]=this.regs[(Q<<2)+f]),h<<=1,i=i+1&511}break}}}while(this.cycles=16384)return;let t=r.read(this.dll);this.offset=t&15,this.h16=(t&64)!=0,this.h8=(t&32)!=0,this.dlstart=(r.read(this.dll+1)<<8)+r.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(r.read(this.dll)&128)!=0}isHoley(r){return this.indirect?!1:!!(r&32768&&(this.h16&&r&4096||this.h8&&r&2048))}readDMA(r){return this.isHoley(r)?0:(this.cycles+=3,this.bus.read(r))}doDMA(r){this.bus=r,this.cycles=0;let t=this.pixels;if(t.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=this.offset==0?rt:et,this.offset<0&&this.readDLLEntry(r);let u=this.dlstart&65280,c=this.dlstart&255;do{let x=r.read(u+(c+0&511)),m=r.read(u+(c+1&511));if(m==0||u>=16384)break;let l=r.read(u+(c+2&511)),p=r.read(u+(c+3&511)),g=!1;if((m&31)==0){var e=p>>5,n=32-(p&31),i=r.read(u+(c+4&511));g=(m&32)!=0,c+=5,this.cycles+=10,this.writemode=m&128}else{var i=p,e=m>>5,n=32-(m&31);c+=4,this.cycles+=8}this.indirect=g;let y=x+((l+(g?0:this.offset)&255)<<8);i*=2;let d=this.regs[28],k=(d&3)+(this.writemode?4:0),A=(d&4)!=0,w=g&&(d&16)!=0;w&&(n*=2);for(var s=0;s>1):y+s);if(g){let P=(this.regs[20]+this.offset<<8)+h;w&&s&1&&(P++,this.cycles-=3),h=this.readDMA(P)}switch(k){case 0:for(let a=0;a<4;a++){let f=h>>6&3;(f||A)&&(t[i]=t[i+1]=this.regs[(e<<2)+f]),h<<=2,i=i+2&511}break;case 3:for(let a=0;a<8;a++){let f=(h&128)>>6;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 4:for(let a=0;a<2;a++){let f=(h>>6&3)+(h&12);(f&3||A)&&(t[i]=t[i+1]=t[i+2]=t[i+3]=this.regs[((e&4)<<2)+f]),h<<=2,i=i+2&511}break;case 6:for(let a=0;a<4;a++){let f=(h&128)>>6|(h&8)>>3;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 2:for(let a=0;a<8;a++){let f=(h&128)>>6;f+=a&1?e&1:e>>1&1,(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 7:let P=h;for(let a=0;a<4;a++){a==2&&(P<<=2);let f=(h&128)>>6,Q=e&4|P>>2&3;(f||A)&&(t[i]=this.regs[(Q<<2)+f]),h<<=1,i=i+1&511}break}}}while(this.cycles(this.xtracyc++,this.readInput(t))],[0,31,31,t=>(this.xtracyc++,this.tia.read(t))],[32,63,31,t=>this.maria.read(t)],[64,255,255,t=>this.ram[t+2048]],[256,319,255,t=>this.read(t)],[320,511,511,t=>this.ram[t+2048]],[640,767,127,t=>(this.xtracyc++,this.readPIA(t))],[6144,10239,65535,t=>this.ram[t-6144]],[10240,16383,2047,t=>this.read(t|8192)],[16384,65535,65535,t=>this.rom?this.rom[t-16384]:0],[0,65535,65535,t=>this.probe&&this.probe.logIllegal(t)]]),this.write=_([[21,26,31,(t,e)=>{this.xtracyc++,this.pokey1.setTIARegister(t,e)}],[0,31,31,(t,e)=>{this.xtracyc++,this.tia.write(t,e)}],[32,63,31,(t,e)=>{this.maria.write(t,e)}],[64,255,255,(t,e)=>{this.ram[t+2048]=e}],[256,319,255,(t,e)=>{this.write(t,e)}],[320,511,511,(t,e)=>{this.ram[t+2048]=e}],[640,767,127,(t,e)=>{this.xtracyc++,this.writePIA(t,e)}],[6144,10239,65535,(t,e)=>{this.ram[t-6144]=e}],[10240,16383,2047,(t,e)=>{this.write(t|8192,e)}],[49151,49151,65535,(t,e)=>{}],[0,65535,65535,(t,e)=>{this.probe&&this.probe.logIllegal(t)}]]),this.connectCPUMemoryBus(this),this.dmaBus=this.probeDMABus(this),this.handler=E(this.inputs,Z),this.pokey1=new z,this.audioadapter=new Y(this.pokey1,q,X)}readConst(t){let e=this.probe;this.probe=null;let n=this.read(t);return this.probe=e,n}readInput(t){switch(t){case 12:return~this.inputs[8]&128;case 13:return~this.inputs[9]&128;default:return this.inputs[t]|0}}readPIA(t){switch(t){case 0:case 2:return this.inputs[t];case 1:case 3:return this.regs6532[t];case 4:return this.getPIATimerValue();default:return 0}}writePIA(t,e){switch(t){case 0:case 1:case 2:case 3:this.regs6532[t]=e;return;case 20:this.setPIATimer(e,0);return;case 21:this.setPIATimer(e,3);return;case 22:this.setPIATimer(e,6);return;case 23:this.setPIATimer(e,10);return;case 24:this.setPIATimer(e,6);return}}setPIATimer(t,e){this.piatimer=t+1<0?t>>this.timerinterval:t&255}advanceCPU(){var t=super.advanceCPU();return this.tickPIATimer(t),this.xtracyc&&(t+=this.xtracyc,this.tickClocks(this.xtracyc),this.xtracyc=0),t}tickClocks(t){this.probe.logClocks(t),this.tickPIATimer(t)}tickPIATimer(t){this.piatimer=Math.max(-256,this.piatimer-t)}advanceFrame(t){var e=this.pixels,n=0,i,s=0,u=0,c=0;this.lastFrameCycles=-1,this.probe.logNewFrame();for(var x=0;x>2),s+=p,e){let d=(this.maria.regs[28]&128)!=0?15:255;for(var l=0;l<320;l++)e[n++]=J[this.maria.pixels[l]&d]}}for((m||x==M-1)&&this.maria.doInterrupt()&&(this.probe.logInterrupt(0),this.cpu.NMI());s>2),s=C;break}if(t&&t()){t=null,x=999,this.lastFrameCycles=s;break}s+=this.advanceCPU()<<2,c++}this.audio&&this.audioadapter.generate(this.audio),s-=C,u+=s,this.probe.logNewScanline()}return c}getRasterX(){return(this.lastFrameCycles+C)%C}getRasterY(){return this.scanline}getRasterCanvasPosition(){return{x:this.getRasterX(),y:this.getRasterY()}}loadROM(t){t.length==49280&&(t=t.slice(128)),this.rom=W(t,this.defaultROMSize,!0)}reset(){super.reset(),this.tia.reset(),this.maria.reset(),this.inputs.fill(0),this.inputs[b]=255,this.inputs[F]=11,this.setPIATimer(0,0)}readAddress(t){return this.read(t)|0}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.tia.loadState(t.tia),this.maria.loadState(t.maria),this.regs6532.set(t.regs6532),this.piatimer=t.pia.timer,this.timerinterval=t.pia.interval,this.loadControlsState(t)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),tia:this.tia.saveState(),maria:this.maria.saveState(),regs6532:this.regs6532.slice(0),inputs:this.inputs.slice(0),pia:{timer:this.piatimer,interval:this.timerinterval}}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}getDebugCategories(){return["CPU","Stack","TIA","MARIA"]}getDebugInfo(t,e){switch(t){case"TIA":return I.stateToLongString(e.tia);case"MARIA":return L.stateToLongString(e.maria)+` Scanline: `+this.scanline}}getDebugDisplayLists(){let t={},e=this.maria.getDLLStart(),n=0;for(;n<240;){let i=this.readConst(e),s=i&15,u=(i&64)!=0,c=(i&32)!=0,x=(this.readConst(e+1)<<8)+this.readConst(e+2);e=e+3&65535;let m=(this.readConst(e)&128)!=0,l="DL $"+S(x,4)+" "+n+"-"+(n+s);u&&(l+=" H16"),c&&(l+=" H8"),m&&(l+=" DLI"),t[l]={$$:this._readDebugDisplayList(x)},n+=s+1}return t}_readDebugDisplayList(t){return()=>this.readDebugDisplayList(t)}readDebugDisplayList(t){let e=[],n=t&65280,i=t&255;do{let x=this.maria.regs[28],m=this.readConst(n+(i+0&511)),l=this.readConst(n+(i+1&511));if(l==0)break;let p=this.readConst(n+(i+2&511)),g=this.readConst(n+(i+3&511)),y=!1,d="",k,A=(x&3)+(l&128?4:0);if((l&31)==0){var s=g>>5,u=32-(g&31),c=this.readConst(n+(i+4&511));y=(l&32)!=0,k=l&128,i+=5}else{var c=g,s=l>>5,u=32-(l&31);i+=4}d+="X="+c+" W="+u+" P="+s,k&&(d+=" WM=1"),y&&(d+=" CHR=$"+S(this.maria.regs[20]+this.maria.offset&255)+"xx");let w=m+((p+(y?0:this.maria.offset)&255)<<8);d=" $"+S(w,4)+" "+d,d=["160A","?","320D","320A","160B","?","320B","320C"][A]+" "+d,e.push(d)}while(i<512);return e}},J=new Uint32Array(256);for(D=0;D<256;D++)J[D]=j(D);var D;var it=[{id:"sprites.dasm",name:"Sprites (ASM)",category:"Assembly"},{id:"wsync.c",name:"WSYNC",category:"CC65"},{id:"sprites.c",name:"Double Buffering"},{id:"scroll.c",name:"Scrolling"},{id:"test_conio.c78",name:"Conio Test",category:"cc7800"},{id:"example_small_sprites.c78",name:"Small Sprites"},{id:"example_vertical_scrolling.c78",name:"Vertical Scrolling"}],U=class extends ${constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"TIA",start:0,size:32,type:"io"},{name:"MARIA",start:32,size:32,type:"io"},{name:"RAM (6166 Block 0)",start:64,size:192,type:"ram"},{name:"RAM (6166 Block 1)",start:320,size:192,type:"ram"},{name:"PIA",start:640,size:24,type:"io"},{name:"RAM",start:6144,size:4096,type:"ram"},{name:"Cartridge ROM",start:16384,size:49146,type:"rom"},{name:"CPU Vectors",start:65530,size:6,type:"rom"}]}};this.getToolForFilename=H}newMachine(){return new T}getPresets(){return it}getDefaultExtensions(){return[...super.getDefaultExtensions(),".cc7800"]}readAddress(t){return this.machine.readConst(t)}getROMExtension(){return".a78"}getDebugTree(){let t=super.getDebugTree();return t.display_list=this.machine.getDebugDisplayLists(),t}};O.atari7800=U; -//# sourceMappingURL=atari7800-ISTONEBP.js.map +//# sourceMappingURL=atari7800-ZOUJP6JR.js.map diff --git a/gen/atari7800-ISTONEBP.js.map b/gen/atari7800-ZOUJP6JR.js.map similarity index 100% rename from gen/atari7800-ISTONEBP.js.map rename to gen/atari7800-ZOUJP6JR.js.map diff --git a/gen/atari8-CM7XWBCH.js b/gen/atari8-C234KZYT.js similarity index 99% rename from gen/atari8-CM7XWBCH.js rename to gen/atari8-C234KZYT.js index 1cc43321..c9a3e11c 100644 --- a/gen/atari8-CM7XWBCH.js +++ b/gen/atari8-C234KZYT.js @@ -1,7 +1,7 @@ -import{a as ft}from"./chunk-UNDRK5PG.js";import{b as dt,c as xt,d as Q}from"./chunk-4HX34MCE.js";import{B as lt,I as ct,g as at,l as nt,n as ht,t as ot}from"./chunk-FFJHITEL.js";import{g as H}from"./chunk-UXRCACYH.js";import{P as T,a as Y,aa as D,ba as i,ca as it,ea as rt,g as _,ha as k,r as I}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var Mt=[0,25,17,9],vt=[0,89,97,105],y=0,Ct=1,B=2,z=3,Lt=4,Kt=5,Pt=7,Vt=9,L=10,wt=11,Nt=12,Ut=13,ut=14,Ft=15,K=15;var Yt=13,Ht=106,Qt=105,X=[0,0,8,10,8,16,8,16,8,4,4,2,1,2,1,1],Bt=[0,0,2,2,2,2,4,4,8,8,4,4,4,2,2,2],zt=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],mt=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],M=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[ut]=0,this.regs[K]=127,this.regs[Nt]=0,this.regs[Ut]=255,this.setReg(y,0),this.h=this.v=0,this.startaddr=this.scanaddr=0,this.dmaclock=0}saveState(){return I(0,{},this)}loadState(e){I(0,this,e),this.setReg(y,e.regs[y])}static stateToLongString(e){let t="";return t+="H: "+Y(e.h,3)+" V: "+Y(e.v,3)+` +import{a as ft}from"./chunk-JELKPLZC.js";import{b as dt,c as xt,d as Q}from"./chunk-4HX34MCE.js";import{D as lt,K as ct,g as at,n as nt,p as ht,v as ot}from"./chunk-4YTESWOC.js";import{g as H}from"./chunk-UXRCACYH.js";import{P as T,a as Y,aa as D,ba as i,ca as it,ea as rt,g as _,ha as k,r as I}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var Mt=[0,25,17,9],vt=[0,89,97,105],y=0,Ct=1,B=2,z=3,Lt=4,Kt=5,Pt=7,Vt=9,L=10,wt=11,Nt=12,Ut=13,ut=14,Ft=15,K=15;var Yt=13,Ht=106,Qt=105,X=[0,0,8,10,8,16,8,16,8,4,4,2,1,2,1,1],Bt=[0,0,2,2,2,2,4,4,8,8,4,4,4,2,2,2],zt=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],mt=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],M=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[ut]=0,this.regs[K]=127,this.regs[Nt]=0,this.regs[Ut]=255,this.setReg(y,0),this.h=this.v=0,this.startaddr=this.scanaddr=0,this.dmaclock=0}saveState(){return I(0,{},this)}loadState(e){I(0,this,e),this.setReg(y,e.regs[y])}static stateToLongString(e){let t="";return t+="H: "+Y(e.h,3)+" V: "+Y(e.v,3)+` `,t+="DLIOp: "+_(e.dliop,2)+" Lines: "+e.yofs+"/"+e.linesleft,t+=" DMA "+(e.dma_enabled?"ON ":"off"),e.dma_enabled&&(t+=" idx "+e.dmaidx+" clk "+_(e.dmaclock)),t+=` `,t+="Addr: "+_(e.scanaddr,4)+` `,t+=D(e.regs,0,16).replace("$00","Regs"),t}setReg(e,t){switch(e){case L:this.regs[L]=255;return;case Ft:this.regs[K]=31;return}this.regs[e]=t}readReg(e){switch(e){case K:return this.regs[e];case wt:return this.v>>1;default:return 255}}processDLIEntry(){if(this.mode==0)this.linesleft=(this.dliop>>4&7)+1,this.dmaclock=0;else{this.linesleft=X[this.mode],this.period=Bt[this.mode],this.jmp?(this.regs[B]=this.dlarg_lo,this.regs[z]=this.dlarg_hi,this.mode=this.period=0,this.dliop&64&&(this.linesleft=1,this.dma_enabled=!1),this.dmaclock=0):this.lms&&(this.scanaddr=this.dlarg_lo+(this.dlarg_hi<<8)),this.startaddr=this.scanaddr;let e=this.regs[y]&3,t=this.dliop&16?(this.regs[Lt]&15)>>1:0;this.dliop&16&&e<3&&e++,this.left=Mt[e]+t,this.right=vt[e]+t;let s=this.regs[Kt]&15;this.dliop&32^this.in_vscroll&&(this.in_vscroll?this.linesleft=s+1:(this.linesleft-=s,this.yofs+=s),this.linesleft&=15,this.in_vscroll^=32)}}nextLine(){this.linesleft>0&&(this.linesleft--,this.yofs++,this.isfirstline=!1,this.mode>=8&&this.linesleft&&(this.scanaddr=this.startaddr))}triggerNMI(e){this.regs[K]=e|31,this.regs[ut]&e&&this.nmi()}getDlistAddr(){return this.regs[B]+(this.regs[z]<<8)}nextInsn(){let e=this.getDlistAddr(),t=this.read(e);return e=e+1&1023|e&-1024,this.regs[B]=e&255,this.regs[z]=e>>8,t}nextScreen(){let e=this.read(this.scanaddr);return this.incScanAddr(),e}incScanAddr(){this.scanaddr=this.scanaddr+1&4095|this.scanaddr&-4096}dlDMAEnabled(){return this.regs[y]&32}isVisibleScanline(){return this.v>=8&&this.v<248}isPlayfieldDMAEnabled(){return this.dma_enabled&&!this.linesleft}isPlayerDMAEnabled(){return this.regs[y]&8}isMissileDMAEnabled(){return this.regs[y]&12}isWSYNC(){return this.regs[L]!=0}clockPulse(){let e=this.isWSYNC();if(!this.isVisibleScanline())this.doVBlank();else{switch(this.h){case 0:this.isMissileDMAEnabled()&&(this.doPlayerMissileDMA(3),e=!0);break;case 1:if(this.isPlayfieldDMAEnabled()){let t=this.nextInsn();this.jmp=(t&-65)==1,this.lms=(t&64)!=0&&(t&15)!=0,this.mode=t&15,this.dliop=t,this.yofs=0,this.isfirstline=!0,e=!0}break;case 2:case 3:case 4:case 5:this.isPlayerDMAEnabled()&&(this.doPlayerMissileDMA(this.h+2),e=!0);break;case 6:case 7:this.isPlayfieldDMAEnabled()&&this.isfirstline&&(this.jmp||this.lms)&&(this.h==6&&(this.dlarg_lo=this.nextInsn()),this.h==7&&(this.dlarg_hi=this.nextInsn()),e=!0);break;case 8:this.isfirstline&&this.processDLIEntry(),this.dliop&128&&this.linesleft==1&&this.triggerNMI(128);break;case 9:break;case 111:this.dma_enabled&&this.nextLine(),++this.v;break}if(this.output=0,this.mode>=2&&this.period){let t=this.h<=Qt;this.dmaclock=this.dmaclock<<1&511,this.dmaclock&1<=8&&this.incScanAddr(),e=t),this.output=this.h>=this.left+3&&this.h<=this.right+2?4:0}}return(this.hHt)&&(this.output=2),this.incHorizCounter(),!e&&this.dramrefresh&&(this.read(0),this.dramrefresh=!1,e=!0),e}incHorizCounter(){switch(this.h){case 25:case 29:case 33:case 37:case 41:case 45:case 49:case 53:case 57:this.dramrefresh=!0;break;case 102:this.regs[L]=0;break;case 113:this.h=0;return}++this.h}doVBlank(){this.linesleft=this.mode=this.period=0,this.h==111&&this.v++,this.v==248&&this.h==0&&this.triggerNMI(64),this.v==262&&this.h==112&&(this.v=0),this.v==7&&this.h==113&&(this.dma_enabled=this.dlDMAEnabled()!=0),this.output=2,this.dmaclock=0}doPlayerMissileDMA(e){let t=this.regs[y]&16,s=this.regs[Pt]<<8;t?(s&=63488,s|=e<<8,s|=this.v&255):(s&=64512,s|=e<<7,s|=this.v>>1),this.read(s)}readBitmapData(){let e=this.mode;if(e<8){let t=this.ch,s=this.yofs>>zt[this.mode],r=s&7,a=this.regs[Vt];(e&14)==6?(t&=63,a&=254):(t&=127,a&=252);let o=(t<<3)+(a<<8);if((e&14)==2){let h=this.regs[Ct],c=e==3&&(t&96)==96;h&4?this.pfbyte=this.read(o+(r^7)):this.pfbyte=this.read(o+r),c&&s<2&&(this.pfbyte=0),!c&&s>7&&(this.pfbyte=0),this.ch&128&&(h&1&&(this.pfbyte=0),h&2&&(this.pfbyte^=255))}else this.pfbyte=this.read(o+r)}else this.pfbyte=this.nextScreen()}shiftout(){if(this.output==4)switch(this.mode){case 2:case 3:case 15:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?8:6}case 6:case 7:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?(this.ch>>6)+4:0}case 9:case 11:case 12:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?4:0}case 4:case 5:{let e=this.pfbyte>>6&3;return this.pfbyte<<=2,this.ch&128?[0,4,5,7][e]:[0,4,5,6][e]}case 8:case 10:case 13:case 14:{let e=this.pfbyte>>6&3;return this.pfbyte<<=2,[0,4,5,6][e]}}return this.output}};var f=0;var Xt=2;var gt=4;var _t=6;var p=8,qt=9,Gt=10,Wt=11,jt=13,q=14,S=15;var Zt=8,$t=9,Jt=10,te=13,O=14,P=15;var pt=128,bt=64,ee=32,yt=16,Et=8;var se=1,St=28,ie=114;var At=511,It=131071,m=0,g=1,b=2,u=3,E=114,re=15;var ae=8;var G,V;function ne(){G=new Uint8Array(511),V=new Uint8Array(16385);let n=511;for(let e=0;e<511;e++)n=(((n>>5^n)&1)<<8)+(n>>1),G[e]=n;n=131071;for(let e=0;e<16385;e++)n=(((n>>5^n)&255)<<9)+(n>>8),V[e]=n>>1}var v=class{constructor(e,t){this.irq=e;this.antic_xpos=t;this.regs=new Uint8Array(16);this.readregs=new Uint8Array(16);this.divnirq=new Uint32Array(4);this.divnmax=new Uint32Array(4);this.pot_inputs=new Uint8Array(8);this.basemult=0;this.pot_scanline=0;this.random_scanline_counter=0;this.kbcode=0;this.DELAYED_SERIN_IRQ=0;this.DELAYED_SEROUT_IRQ=0;this.DELAYED_XMTDONE_IRQ=0;this.init()}saveState(){return I(0,{},this)}loadState(e){I(0,this,e)}init(){this.readregs.fill(255),this.readregs[P]=239,this.basemult=St,this.pot_inputs.fill(128),ne()}read(e){let t=this.readregs[e];switch(e&=15,e){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:return t=this.pot_inputs[e],t>3;s&=7,t=(V[r]>>s)+(V[r+1]<<8-s)}}break}return t&255}write(e,t){switch(e&=15,this.regs[e]=t,e){case p:t&se?this.basemult=ie:this.basemult=St,this.update_counter(1<=3?(this.readregs[O]|=8,this.DELAYED_XMTDONE_IRQ=2*this.DELAYED_SEROUT_IRQ-2):(this.DELAYED_SEROUT_IRQ=0,this.DELAYED_XMTDONE_IRQ=0));break;case qt:this.divnirq[m]=this.divnmax[m],this.divnirq[g]=this.divnmax[g],this.divnirq[b]=this.divnmax[b],this.divnirq[u]=this.divnmax[u];break;case S:t&4&&(this.pot_scanline=228),(t&3)==0&&(this.DELAYED_SERIN_IRQ=0,this.DELAYED_SEROUT_IRQ=0,this.DELAYED_XMTDONE_IRQ=0);break}this.snd_update(e)}update_counter(e){e&1<0&&--this.DELAYED_SERIN_IRQ==0&&(this.readregs[te]=this.SIO_GetByte(),this.generateIRQ(32)),this.DELAYED_SEROUT_IRQ>0&&--this.DELAYED_SEROUT_IRQ==0&&this.generateIRQ(16),this.DELAYED_XMTDONE_IRQ>0&&--this.DELAYED_XMTDONE_IRQ==0&&this.generateIRQ(8),this.advanceIRQTimer(m,1),this.advanceIRQTimer(g,2),this.advanceIRQTimer(u,4))}advanceIRQTimer(e,t){(this.divnirq[e]-=E)<0&&(this.divnirq[e]+=this.divnmax[e],this.generateIRQ(t))}generateIRQ(e){this.regs[q]&e&&(this.irq(),this.readregs[O]&=~e)}static stateToLongString(e){let t="";return t+=`Write Registers: `,t+=D(e.regs,0,16),t+=`Read Registers: `,t+=D(e.readregs,0,16),t}CASSETTE_IOLineStatus(){return 0}siocheck(){return((this.regs[f+b]==40||this.regs[f+b]==16||this.regs[f+b]==8||this.regs[f+b]==10)&&this.regs[f+u]==0||(this.regs[S]&120)==40)&&(this.regs[p]&40)==40}SIO_PutByte(e){console.log("SIO put byte",e)}SIO_GetByte(){return 0}};var w=class{constructor(e){if(this.data=e,e.length>=16&&(e[0]|e[1]<<8)==662){let s=(e[2]|e[3]<<8)*16,r=e[4]|e[5]<<8;this.sectorsize=r==256?256:128,this.sectorsize==256?this.numsectors=3+Math.floor((s-16-384)/256):this.numsectors=Math.floor((s-16)/128)}else this.sectorsize=128,this.numsectors=Math.floor(e.length/128)}sectorOffset(e){return this.sectorsize==256?e<3?16+e*128:400+(e-3)*256:16+e*128}readSector(e,t){let s=e-1;if(s<0||s>=this.numsectors)return null;let r=this.sectorOffset(s);return this.data.subarray(r,Math.min(r+t,this.data.length))}writeSector(e,t,s){let r=e-1;if(r<0||r>=this.numsectors)return!1;let a=this.sectorOffset(r);return this.data.set(t.subarray(0,Math.min(s,this.data.length-a)),a),!0}};var W=160,he=240,oe=241,Ot=242,le=[173,0,3,201,49,144,12,201,64,176,8,141,240,213,173,241,213,168,96,76,80,233],ce=[i.VK_L,i.VK_J,i.VK_SEMICOLON,i.VK_F4,i.VK_F5,i.VK_K,i.VK_BACK_SLASH,i.VK_TILDE,i.VK_O,null,i.VK_P,i.VK_U,i.VK_ENTER,i.VK_I,i.VK_MINUS2,i.VK_EQUALS2,i.VK_V,i.VK_F7,i.VK_C,i.VK_F6,i.VK_F4,i.VK_B,i.VK_X,i.VK_Z,i.VK_4,null,i.VK_3,i.VK_6,i.VK_ESCAPE,i.VK_5,i.VK_2,i.VK_1,i.VK_COMMA,i.VK_SPACE,i.VK_PERIOD,i.VK_N,null,i.VK_M,i.VK_SLASH,null,i.VK_R,null,i.VK_E,i.VK_Y,i.VK_TAB,i.VK_T,i.VK_W,i.VK_Q,i.VK_9,null,i.VK_0,i.VK_7,i.VK_BACK_SPACE,i.VK_8,null,null,i.VK_F,i.VK_H,i.VK_D,null,i.VK_CAPS_LOCK,i.VK_G,i.VK_S,i.VK_A],fe=rt([[i.UP,0,1],[i.DOWN,0,2],[i.LEFT,0,4],[i.RIGHT,0,8],[{c:16,n:"Shift",plyr:0,button:0},2,1],[i.VK_F1,3,1],[i.VK_F2,3,2],[i.VK_F3,3,4]]),C=class extends ot{constructor(){super();this.cpuFrequency=1789773;this.numTotalScanlines=262;this.cpuCyclesPerLine=114;this.canvasWidth=336;this.numVisibleScanlines=224;this.aspectRatio=this.canvasWidth/this.numVisibleScanlines*.857;this.firstVisibleScanline=16;this.firstVisibleClock=76;this.defaultROMSize=32768;this.overscan=!0;this.audioOversample=2;this.sampleRate=this.numTotalScanlines*60*this.audioOversample;this.run_address=-1;this.inputs=new Uint8Array(4);this.linergb=new Uint32Array(this.canvasWidth);this.lastdmabyte=0;this.keycode=0;this.cart_80=!1;this.cart_a0=!1;this.xexdata=null;this.xexofs=0;this.xexstubofs=0;this.xexrunaddr=-1;this.disk=null;this.keyboard_active=!0;this.d500=new Uint8Array(256);this.cpu=new ht,this.ram=new Uint8Array(65536),this.bios=new Uint8Array(10240),this.bus=this.newBus(),this.connectCPUMemoryBus(this.bus),this.antic=new M(this.readDMA.bind(this),this.antic_nmi.bind(this)),this.gtia=new Q,this.irq_pokey=new v(this.pokey_irq.bind(this),()=>this.antic.h),this.audio_pokey=at(1),this.audioadapter=new nt(this.audio_pokey.pokey1,this.audioOversample,this.sampleRate),this.handler=it(this.inputs,fe,this.getKeyboardFunction(),!0)}newBus(){return{read:k([[0,32767,65535,t=>this.ram[t]],[32768,40959,65535,t=>this.cart_80?this.rom[t-32768]:this.ram[t]],[40960,49151,65535,t=>this.cart_a0?this.rom[t-32768]:this.ram[t]],[53248,53503,31,t=>this.gtia.readReg(t)],[53760,54015,15,t=>this.readPokey(t)],[54016,54271,15,t=>this.readPIA(t)],[54272,54527,15,t=>this.antic.readReg(t)],[54528,54783,255,t=>this.d500[t]],[55296,65535,65535,t=>this.bios[t-55296]]]),write:k([[0,49146,65535,(t,s)=>{this.ram[t]=s}],[49147,49151,65535,(t,s)=>{this.ram[t]=s,this.initCartA()}],[53248,53503,31,(t,s)=>{this.gtia.setReg(t,s)}],[53760,54015,15,(t,s)=>{this.writePokey(t,s)}],[54272,54527,15,(t,s)=>{this.antic.setReg(t,s)}],[54528,54783,255,(t,s)=>{this.writeMapper(t,s)}]])}}loadBIOS(t){this.bios.set(t),this.installSIOStub()}installSIOStub(){this.bios[3161]=76,this.bios[3162]=54528+W&255,this.bios[3163]=54528+W>>8,this.d500.set(le,W)}reset(){super.reset(),this.antic.reset(),this.gtia.reset(),this.keycode=0}read(t){return this.bus.read(t)}readDMA(t){let s=this.bus.read(t);return this.probe.logDMARead(t,s),this.lastdmabyte=s,s}readConst(t){return t<53248||t>=54528?this.bus.read(t):255}write(t,s){this.bus.write(t,s)}readPokey(t){switch(t&15){case 9:return this.keycode&255;case 15:return~this.keycode>>6&4|~this.keycode>>3&8|18;default:return this.irq_pokey.read(t)}}readPIA(t){if(t==0||t==1)return~this.inputs[t]}writePokey(t,s){this.audio_pokey.pokey1.setRegister(t,s),this.irq_pokey.write(t,s)}startScanline(){this.gtia.sync();for(let t=0;t<4;t++)this.gtia.readregs[dt+t]=~this.inputs[2]>>t&1;this.gtia.readregs[xt]=~this.inputs[3]&7,this.audio&&this.audioadapter.generate(this.audio),this.irq_pokey.advanceScanline()}drawScanline(){let t=this.antic.v-this.firstVisibleScanline;t>=0&&t{this.gtia.clockPulse1(),this.linergb[t++]=this.gtia.rgb},r=()=>{this.gtia.clockPulse2(),this.linergb[t++]=this.gtia.rgb};this.gtia.clockPulse4(),this.antic.dliop&16&&this.antic.regs[4]&1?(t+=2,this.gtia.setBias(-1)):this.gtia.setBias(0);let a=mt[this.antic.mode],o=this.antic.h&1;return(a<8||o)&&(this.gtia.an=this.antic.shiftout()),s(),a==1&&(this.gtia.an=this.antic.shiftout()),r(),a<=2&&(this.gtia.an=this.antic.shiftout()),s(),a==1&&(this.gtia.an=this.antic.shiftout()),r(),1}loadState(t){this.loadControlsState(t),this.cpu.loadState(t.c),this.ram.set(t.ram),this.antic.loadState(t.antic),this.gtia.loadState(t.gtia),this.irq_pokey.loadState(t.pokey),this.lastdmabyte=t.lastdmabyte,this.cart_80=t.cart_80,this.cart_a0=t.cart_a0}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),antic:this.antic.saveState(),gtia:this.gtia.saveState(),pokey:this.irq_pokey.saveState(),inputs:this.inputs.slice(0),lastdmabyte:this.lastdmabyte,keycode:this.keycode,cart_80:this.cart_80,cart_a0:this.cart_a0}}loadControlsState(t){this.inputs.set(t.inputs),this.keycode=t.keycode}saveControlsState(){return{inputs:this.inputs.slice(0),keycode:this.keycode}}getRasterY(){return this.antic.v}getRasterX(){return this.antic.h}getRasterCanvasPosition(){return{x:this.antic.h*4-this.firstVisibleClock,y:this.antic.v-this.firstVisibleScanline}}getDebugCategories(){return["CPU","Stack","ANTIC","GTIA","POKEY"]}getDebugInfo(t,s){switch(t){case"ANTIC":return M.stateToLongString(s.antic);case"GTIA":return Q.stateToLongString(s.gtia);case"POKEY":return v.stateToLongString(s.pokey)}}getKeyboardFunction(){return(t,s,r,a)=>{if(!this.keyboard_active)return!1;if(a&65){var o=ce;if(s==i.VK_F9.c)return this.irq_pokey.generateIRQ(128),!0;for(var h=0;ht.length)throw new Error("Bad .XEX file format");if(o==736&&h==737&&(this.xexrunaddr=this.ram[736]+this.ram[737]*256,console.log("XEX run",_(this.xexrunaddr))),o==738&&h==739){var a=this.ram[738]+this.ram[739]*256;console.log("XEX init",_(a));let c=this.xexstubofs;s.set([32,a&255,a>>8,141,Ot,213],c),this.xexstubofs=c+6,this.xexofs=r,this.run_address=54528,this.ram[10]=0,this.ram[11]=213;return}}if(this.xexofs=r,this.xexrunaddr>=0){let o=this.xexstubofs;s.set([169,160,141,255,213,76,this.xexrunaddr&255,this.xexrunaddr>>8],o),this.xexstubofs=o+8,this.run_address=54528,this.ram[10]=0,this.ram[11]=213}}initCartA(){this.cpu.getPC()==61823&&this.xexdata&&this.loadXEX(this.xexdata)}setPaddleInput(t,s){this.irq_pokey.pot_inputs[t]=255-s}getDebugDisplayList(){let t=this.antic.getDlistAddr(),s=()=>{let h=this.read(t);return t=t+1&1023|t&-1024,h},r=new Set,a=[],o=0;for(let h=0;h<256&&o<240;h++){let c=t;r.add(t);let l=s(),d=l&15,x="",A=!1,R;if(d==0)R=(l>>4&7)+1,x+=" blank="+R;else{R=X[d],x+=" mode="+_(d),x+=" lines="+R,A=(l&-65)==1;let tt=(l&64)!=0&&(l&15)!=0;if(l&16&&(x+=" HSCROL"),l&32&&(x+=" VSCROL"),l&128&&(x+=" DLI"),A&&l&64?x+=" JVB":A?x+=" JMP":tt&&(x+=" LMS"),A||tt){let et=s(),st=s();x+=" $"+_(st)+_(et),A&&(t=et+st*256)}}if(a.push("$"+_(c)+" y="+o+" "+x),A&&r.has(t))break;o+=R}return a}},N=class extends C{newBus(){return{read:k([[0,16383,65535,e=>this.ram[e]],[16384,49151,65535,e=>this.rom?this.rom[e-16384]:0],[49152,53247,31,e=>this.gtia.readReg(e)],[54272,54527,15,e=>this.antic.readReg(e)],[59392,61439,15,e=>this.readPokey(e)],[63488,65535,2047,e=>this.bios[e]]]),write:k([[0,16383,65535,(e,t)=>{this.ram[e]=t}],[49152,53247,31,(e,t)=>{this.gtia.setReg(e,t)}],[54272,54527,15,(e,t)=>{this.antic.setReg(e,t)}],[59392,61439,15,(e,t)=>{this.writePokey(e,t)}]])}}};var J=[{id:"hello.dasm",name:"Hello World",category:"Assembly"},{id:"hellopm.dasm",name:"Hello Sprites"},{id:"helloconio.c",name:"Text Mode",category:"C"},{id:"siegegame.c",name:"Siege Game"},{id:"hellodlist.c",name:"Display List"}],Rt=J.concat([{id:"tgidemo.c",name:"TGI Demo"},{id:"icepiano.c",name:"Ice Piano (TGI Demo)"},{id:"libdemo.c",name:"Library Demo"},{id:"scrolldemo.c",name:"Scrolling"},{id:"hello.cpp",name:"Hello Oscar64",category:"Oscar64"},{id:"libdemo.cpp",name:"Library Demo Oscar64"},{id:"sieve.bas",name:"Benchmark",category:"FastBasic"},{id:"pmtest.bas",name:"Sprites Test"},{id:"dli.bas",name:"DLI Test"},{id:"joyas.bas",name:"Match-3 Game"}]),Tt={main:[{name:"RAM",start:0,size:49152,type:"ram"},{name:"Left Cartridge ROM",start:40960,size:8192,type:"rom"},{name:"GTIA",start:53248,size:32,type:"io"},{name:"POKEY",start:53760,size:16,type:"io"},{name:"PIA",start:54016,size:4,type:"io"},{name:"ANTIC",start:54272,size:16,type:"io"},{name:"Cartridge Control Line",start:54784,size:256,type:"io"},{name:"ROM",start:55296,size:2048,type:"rom"},{name:"Character Set",start:57344,size:1024,type:"rom"},{name:"ROM",start:58368,size:7168,type:"rom"}]},Dt={main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"Cartridge ROM",start:16384,size:32768,type:"rom"},{name:"GTIA",start:49152,size:32,type:"io"},{name:"ANTIC",start:54272,size:16,type:"io"},{name:"POKEY",start:59392,size:16,type:"io"},{name:"ATARI Character Set",start:63488,size:1024,type:"rom"},{name:"ROM",start:64512,size:1024,type:"rom"}]},U=class extends ct{constructor(){super(...arguments);this.getToolForFilename=H;this.showHelp=kt;this.getROMExtension=de;this.biosPath="res/atari8/altirra/kernel.rom"}newMachine(){return new C}getPresets(){return Rt}getDefaultExtensions(){return[...super.getDefaultExtensions(),".bas"]}readAddress(t){return this.machine.readConst(t)}getMemoryMap(){return Tt}async start(){let t=await this.loadKernel();await super.start(),this.machine.loadBIOS(t)}async loadKernel(){var t=await fetch(this.biosPath);if(t.status==200||t.size){var s=await t.arrayBuffer();return new Uint8Array(s)}else throw new Error("could not load BIOS file")}getDebugTree(){let t=super.getDebugTree();return t.display_list=this.machine.getDebugDisplayList(),t}},j=class extends U{constructor(){super(...arguments);this.biosPath="res/atari8/altirra/superkernel.rom"}getPresets(){return J}newMachine(){return new N}getMemoryMap(){return Dt}},F=class extends ft{constructor(){super(...arguments);this.getToolForFilename=H;this.getOpcodeMetadata=lt;this.showHelp=kt}getPresets(){return J}getDefaultExtensions(){return[".c",".bas",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}},Z=class extends F{constructor(){super(...arguments);this.getMemoryMap=function(){return Tt}}getPresets(){return Rt.filter(t=>!t.id.endsWith(".cpp"))}loadROM(t,s){this.started?(this.loadROMFile(s),this.loadRegion(":cartleft:cart:rom",s)):this.startModule(this.mainElement,{jsfile:"mame8bitws.js",biosfile:"a800xl.zip",cfgfile:"a800xl.cfg",driver:"a800xl",width:336*2,height:450,romfn:"/emulator/cart.rom",romdata:new Uint8Array(s),romsize:8192,preInit:function(r){}})}start(){}},$=class extends F{loadROM(e,t){this.started?(this.loadROMFile(t),this.loadRegion(":cartleft:cart:rom",t)):this.startModule(this.mainElement,{jsfile:"mame8bitws.js",biosfile:"a5200/5200.rom",cfgfile:"a5200.cfg",driver:"a5200",width:336*2,height:450,romfn:"/emulator/cart.rom",romdata:new Uint8Array(t),romsize:32768,preInit:function(s){}})}start(){}getMemoryMap(){return Dt}};function de(n){return n==null?".bin":n[0]==150&&n[1]==2?".atr":n[0]==255&&n[1]==255?".xex":".rom"}function kt(){return"https://8bitworkshop.com/docs/platforms/atari8/"}T["atari8-800.xlmame"]=Z;T["atari8-5200.mame"]=$;T["atari8-800"]=U;T["atari8-5200"]=j; -//# sourceMappingURL=atari8-CM7XWBCH.js.map +//# sourceMappingURL=atari8-C234KZYT.js.map diff --git a/gen/atari8-CM7XWBCH.js.map b/gen/atari8-C234KZYT.js.map similarity index 100% rename from gen/atari8-CM7XWBCH.js.map rename to gen/atari8-C234KZYT.js.map diff --git a/gen/c64-4QH6N5TU.js b/gen/c64-KUYP5S4X.js similarity index 98% rename from gen/c64-4QH6N5TU.js rename to gen/c64-KUYP5S4X.js index 3ca18752..017d6367 100644 --- a/gen/c64-4QH6N5TU.js +++ b/gen/c64-KUYP5S4X.js @@ -1,4 +1,4 @@ -import{a as k}from"./chunk-UNDRK5PG.js";import{B as v,I as R,u as C}from"./chunk-FFJHITEL.js";import{a as S}from"./chunk-UXRCACYH.js";import{P as h,a as d,aa as u,g as a,v as f}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var n=0,y=1,g=2,O=3,m=class extends C{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=63;this.joymask0=0;this.joymask1=0;this.joystickPort=n;this.joystickDetected=!1;this.lightpen_x=0;this.lightpen_y=0;this.cia1ofs=-1}loadBIOS(e){super.loadBIOS(e)}reset(){super.reset();for(var e=0;e<128;e++)this.exports.machine_key_up(this.sys,e);if(this.romptr&&this.romlen){if(this.exports.machine_load_rom(this.sys,this.romptr,this.romlen),this.prgstart=this.romarr[0]+(this.romarr[1]<<8),this.prgstart==2049)if(this.romarr[6]==158){for(var i=0,t=0;t<5;t++){var e=this.romarr[7+t];if(e==155||e==0)break;i=i*10+(e&15)}this.prgstart=i,console.log("SYS",i,a(i))}else this.prgstart=this.romarr[2]+(this.romarr[3]<<8)+2,console.log("RUN",this.prgstart,a(this.prgstart));if(this.prgstart<32768){this.exports.machine_exec(this.sys,25e4);for(var s="\rSYS "+this.prgstart,t=0;t9?1:0;e=(t>>4)+(s>>4)+h;let r=e>9?1:0;this.clrOZCS();let i=this.doAdd(t,s);this.setSZ(i);let n=0;return r&&(n|=160),h&&(n|=10),n&&(this.clrOZCS(),i=this.doAdd(i,n),this.setSZ(i)),i}getScratchpadIndex(t){if(t<12)return t;if(t===12)return this.IS&63;if(t===13){let s=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,s}if(t===14){let s=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,s}return 0}advanceInsn(){if(this.irqRequest&&this.W&o)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~o,6;let t=this.fetchPC0();this.o=t,this.stable=!0;let s=4,e,h;switch(t){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,s=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],s=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],s=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],s=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,s=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],s=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],s=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,s=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),s=6;break;case 23:this.storeDC0(this.A),s=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:e=this.W&b?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,e),this.setSZ(this.A);break;case 26:this.W&=~o;break;case 27:this.W|=o;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),s=6;break;case 33:e=this.fetchPC0(),this.A=this.A&e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 34:e=this.fetchPC0(),this.A=this.A|e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 35:e=this.fetchPC0(),this.A=this.A^e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 36:e=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,e),this.setSZ(this.A),s=6;break;case 37:e=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,e,1),this.setSZ(this.doAdd(~this.A&255,e,1)),s=6;break;case 38:e=this.fetchPC0(),this.A=this.iobus.read(e)&255,this.clrOZCS(),this.setSZ(this.A),s=8;break;case 39:e=this.fetchPC0(),this.iobus.write(e,this.A),s=8;break;case 40:{let r=this.fetchPC0(),i=this.fetchPC0();this.PC1=this.PC0,this.PC0=r<<8|i,s=12;break}case 41:{let r=this.fetchPC0(),i=this.fetchPC0();this.PC0=r<<8|i,s=10;break}case 42:{let r=this.fetchPC0(),i=this.fetchPC0();this.DC0=r<<8|i,s=10;break}case 43:break;case 44:e=this.DC0,this.DC0=this.DC1,this.DC1=e;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:h=this.getScratchpadIndex(t&15),this.clrOZCS(),this.R[h]=this.doAdd(this.R[h],255),this.setSZ(this.R[h]),s=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:h=this.getScratchpadIndex(t&15),this.A=this.R[h];break;case 79:break;case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:h=this.getScratchpadIndex(t&15),this.R[h]=this.A;break;case 95:break;case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:this.IS=this.IS&7|(t&7)<<3;break;case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:this.IS=this.IS&56|t&7;break;case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:this.A=t&15;break;case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:{let r=t&7,i=this.fetchPC0();this.W&r&&(this.PC0=this.PC0+(i&128?i-256:i)&65535),s=6;break}case 136:e=this.fetchDC0(),this.clrOZCS(),this.A=this.doAdd(this.A,e),this.setSZ(this.A),s=6;break;case 137:e=this.fetchDC0(),this.A=this.doAddDecimal(this.A,e),s=6;break;case 138:e=this.fetchDC0(),this.A=this.A&e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 139:e=this.fetchDC0(),this.A=this.A|e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 140:e=this.fetchDC0(),this.A=this.A^e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 141:e=this.fetchDC0(),this.clrOZCS();{let r=this.doAdd(~this.A&255,e,1);this.setSZ(r)}s=6;break;case 142:this.DC0=this.DC0+(this.A&128?this.A-256:this.A)&65535,s=6;break;case 143:{let r=this.fetchPC0();(this.IS&7)!==7&&(this.PC0=this.PC0+(r&128?r-256:r)&65535),s=6;break}case 144:case 145:case 146:case 147:case 148:case 149:case 150:case 151:case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:{let r=t&15,i=this.fetchPC0();(r===0||!(this.W&r))&&(this.PC0=this.PC0+(i&128?i-256:i)&65535),s=6;break}case 160:case 161:this.A=this.iobus.read(t&1)&255,this.clrOZCS(),this.setSZ(this.A);break;case 162:case 163:break;case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:this.A=this.iobus.read(t&15)&255,this.clrOZCS(),this.setSZ(this.A),s=8;break;case 176:case 177:this.iobus.write(t&1,this.A);break;case 178:case 179:break;case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:this.iobus.write(t&15,this.A),s=8;break;case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:h=this.getScratchpadIndex(t&15),this.clrOZCS(),this.A=this.doAdd(this.A,this.R[h]),this.setSZ(this.A);break;case 207:break;case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:h=this.getScratchpadIndex(t&15),this.A=this.doAddDecimal(this.A,this.R[h]),s=8;break;case 223:break;case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:h=this.getScratchpadIndex(t&15),this.A=(this.A^this.R[h])&255,this.clrOZCS(),this.setSZ(this.A);break;case 239:break;case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:h=this.getScratchpadIndex(t&15),this.A=this.A&this.R[h]&255,this.clrOZCS(),this.setSZ(this.A);break;case 255:break}return s}};var W=[4282927176,4283498320,4283453695,4286611584,4294922320,4283498320,4283453695,4286611584,4282927176,4294922320,4283453695,4286611584,4282927176,4283498320,4294922320,4286611584],I=1,B=2,Z=4,v=8,E=16,O=32,_=64,g=128,u=class extends f{constructor(){super();this.cpuFrequency=1789773;this.defaultROMSize=65536;this.canvasWidth=128;this.numVisibleScanlines=64;this.numTotalScanlines=64;this.cpuCyclesPerLine=this.cpuFrequency/60/64;this.sampleRate=this.cpuFrequency/2;this.cpu=new F;this.ram=new Uint8Array(65536);this.vram=new Uint8Array(8192);this.port0=0;this.port1=0;this.port4=0;this.port5=0;this.row_reg=0;this.col_reg=0;this.color=0;this.soundMode=0;this.soundCounter=0;this.soundEnvelope=0;this.soundOnTime=0;this.read=C([[0,2047,2047,s=>this.bios[s]],[2048,65535,65535,s=>this.rom&&this.rom[s-2048]||0]],{gmask:65535});this.write=C([[10240,12287,2047,(s,e)=>{this.rom&&(this.rom[s-2048]=e)}]],{gmask:65535});this.bios=new Uint8Array(2048),this.connectCPUMemoryBus(this),this.cpu.connectIOBus(this.newIOBus())}newIOBus(){return this.probeIOBus({read:s=>this.readPort(s),write:(s,e)=>{this.writePort(s,e)}})}readPort(s){switch(s&255){case 0:return~this.inputs[0]&255;case 1:return~this.inputs[1]&255;case 4:return~this.inputs[2]&255;default:return 255}}writePort(s,e){switch(s&255){case 0:this.port0=e;break;case 1:this.port1=e,this.col_reg=e;break;case 4:this.port4=e;break;case 5:this.port5=e,this.soundMode=e>>6&3,this.soundMode>0&&(this.soundEnvelope=1023,this.soundOnTime=60),this.row_reg=e&63,this.writePixel();break}}writePixel(){let s=this.row_reg,e=this.col_reg&127;if(s<64&&e<128){let h=this.port1>>6&3,r=s*128+e;this.vram[r]=h}}readConst(s){return s<2048?this.bios[s]:this.rom&&this.rom[s-2048]||0}loadROM(s){this.rom||(this.rom=new Uint8Array(this.defaultROMSize)),this.rom.set(s),this.reset()}loadBIOS(s){this.bios=l(s,2048),this.reset()}reset(){super.reset(),this.vram.fill(0),this.port0=0,this.port1=0,this.port4=0,this.port5=0,this.row_reg=0,this.col_reg=0,this.soundMode=0,this.soundCounter=0,this.soundEnvelope=0}advanceFrame(s){var e=0,h=this.cpuFrequency/60;for(this.probe.logNewFrame();e>1)*4;for(let i=0;i<128;i++){let n=this.vram[s*128+i]&3,w=W[e+n];this.pixels[s*128+i]=w}}}generateAudio(s){if(!this.audio)return;let e=Math.floor(this.sampleRate/60);for(let h=0;h0&&this.soundEnvelope>0){let i;switch(this.soundMode){case 1:i=1e3;break;case 2:i=500;break;case 3:i=120;break;default:i=0}if(i>0){let n=Math.floor(this.sampleRate/i);this.soundCounter=(this.soundCounter+1)%n,r=this.soundCounter0?this.soundOnTime--:(this.soundEnvelope-=2,this.soundEnvelope<0&&(this.soundEnvelope=0))}this.audio.feedSample(r,1)}}setKeyInput(s,e,h){let r=!!(h&1),i=!!(h&64);s===c.VK_1.c&&(r?this.inputs[0]|=1:i&&(this.inputs[0]&=-2)),s===c.VK_2.c&&(r?this.inputs[0]|=2:i&&(this.inputs[0]&=-3)),s===c.VK_3.c&&(r?this.inputs[0]|=4:i&&(this.inputs[0]&=-5)),s===c.VK_4.c&&(r?this.inputs[0]|=8:i&&(this.inputs[0]&=-9)),(s===c.VK_UP.c||s===c.VK_W.c)&&(r?this.inputs[1]|=v:i&&(this.inputs[1]&=~v)),(s===c.VK_DOWN.c||s===c.VK_S.c)&&(r?this.inputs[1]|=Z:i&&(this.inputs[1]&=~Z)),(s===c.VK_LEFT.c||s===c.VK_A.c)&&(r?this.inputs[1]|=B:i&&(this.inputs[1]&=~B)),(s===c.VK_RIGHT.c||s===c.VK_D.c)&&(r?this.inputs[1]|=I:i&&(this.inputs[1]&=~I)),s===c.VK_Q.c&&(r?this.inputs[1]|=E:i&&(this.inputs[1]&=~E)),s===c.VK_E.c&&(r?this.inputs[1]|=O:i&&(this.inputs[1]&=~O)),s===c.VK_R.c&&(r?this.inputs[1]|=g:i&&(this.inputs[1]&=~g)),s===c.VK_F.c&&(r?this.inputs[1]|=_:i&&(this.inputs[1]&=~_))}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0),vram:this.vram.slice(0),port0:this.port0,port1:this.port1,port4:this.port4,port5:this.port5,row_reg:this.row_reg,col_reg:this.col_reg,soundMode:this.soundMode,soundCounter:this.soundCounter,soundEnvelope:this.soundEnvelope}}loadState(s){this.cpu.loadState(s.c),this.ram.set(s.ram),this.inputs.set(s.inputs),this.vram.set(s.vram),this.port0=s.port0,this.port1=s.port1,this.port4=s.port4,this.port5=s.port5,this.row_reg=s.row_reg,this.col_reg=s.col_reg,this.soundMode=s.soundMode,this.soundCounter=s.soundCounter,this.soundEnvelope=s.soundEnvelope}};var M=[];function U(x){return"PC0 = "+a(x.PC0,4)+" PC1 = "+a(x.PC1,4)+` +import{a as P}from"./chunk-JRMUDXWR.js";import{J as S,u as f}from"./chunk-4YTESWOC.js";import{j as p}from"./chunk-UXRCACYH.js";import{P as m,ba as c,g as a,ga as l,ha as C,s as d}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var D=1,b=2,k=4,R=8,o=16,F=class{constructor(){this.PC0=0;this.PC1=0;this.DC0=0;this.DC1=0;this.A=0;this.W=0;this.IS=0;this.R=new Uint8Array(64);this.o=0;this.stable=!0;this.irqRequest=!1}connectMemoryBus(t){this.bus=t}connectIOBus(t){this.iobus=t}reset(){this.PC0=0,this.PC1=0,this.DC0=0,this.DC1=0,this.A=0,this.W=0,this.IS=0,this.R.fill(0),this.irqRequest=!1}interrupt(t){this.irqRequest=!0}getPC(){return this.PC0}getSP(){return this.PC1}isStable(){return this.stable}saveState(){return{PC:this.PC0,PC0:this.PC0,PC1:this.PC1,DC0:this.DC0,DC1:this.DC1,A:this.A,W:this.W,IS:this.IS,R:Array.from(this.R),o:this.o,irq:this.irqRequest}}loadState(t){var s;this.PC0=(s=t.PC0)!=null?s:t.PC,this.PC1=t.PC1,this.DC0=t.DC0,this.DC1=t.DC1,this.A=t.A,this.W=t.W,this.IS=t.IS;for(let e=0;e<64;e++)this.R[e]=t.R[e];this.o=t.o,this.irqRequest=t.irq}fetchPC0(){let t=this.bus.read(this.PC0);return this.PC0=this.PC0+1&65535,t}fetchDC0(){let t=this.bus.read(this.DC0);return this.DC0=this.DC0+1&65535,t}storeDC0(t){this.bus.write(this.DC0,t),this.DC0=this.DC0+1&65535}clrOZCS(){this.W&=~(R|k|b|D)}setSZ(t){(t&255)===0&&(this.W|=k),(t&128)===0&&(this.W|=D)}doAdd(t,s,e=0){let h=(t&255)+(s&255)+(e&1);return h&256&&(this.W|=b),((t^h)&(s^h)&128)!==0&&(this.W|=R),h&255}doAddDecimal(t,s){let e=(t&15)+(s&15),h=e>9?1:0;e=(t>>4)+(s>>4)+h;let r=e>9?1:0;this.clrOZCS();let i=this.doAdd(t,s);this.setSZ(i);let n=0;return r&&(n|=160),h&&(n|=10),n&&(this.clrOZCS(),i=this.doAdd(i,n),this.setSZ(i)),i}getScratchpadIndex(t){if(t<12)return t;if(t===12)return this.IS&63;if(t===13){let s=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,s}if(t===14){let s=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,s}return 0}advanceInsn(){if(this.irqRequest&&this.W&o)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~o,6;let t=this.fetchPC0();this.o=t,this.stable=!0;let s=4,e,h;switch(t){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,s=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],s=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],s=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],s=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,s=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],s=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],s=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,s=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),s=6;break;case 23:this.storeDC0(this.A),s=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:e=this.W&b?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,e),this.setSZ(this.A);break;case 26:this.W&=~o;break;case 27:this.W|=o;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),s=6;break;case 33:e=this.fetchPC0(),this.A=this.A&e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 34:e=this.fetchPC0(),this.A=this.A|e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 35:e=this.fetchPC0(),this.A=this.A^e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 36:e=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,e),this.setSZ(this.A),s=6;break;case 37:e=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,e,1),this.setSZ(this.doAdd(~this.A&255,e,1)),s=6;break;case 38:e=this.fetchPC0(),this.A=this.iobus.read(e)&255,this.clrOZCS(),this.setSZ(this.A),s=8;break;case 39:e=this.fetchPC0(),this.iobus.write(e,this.A),s=8;break;case 40:{let r=this.fetchPC0(),i=this.fetchPC0();this.PC1=this.PC0,this.PC0=r<<8|i,s=12;break}case 41:{let r=this.fetchPC0(),i=this.fetchPC0();this.PC0=r<<8|i,s=10;break}case 42:{let r=this.fetchPC0(),i=this.fetchPC0();this.DC0=r<<8|i,s=10;break}case 43:break;case 44:e=this.DC0,this.DC0=this.DC1,this.DC1=e;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:h=this.getScratchpadIndex(t&15),this.clrOZCS(),this.R[h]=this.doAdd(this.R[h],255),this.setSZ(this.R[h]),s=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:h=this.getScratchpadIndex(t&15),this.A=this.R[h];break;case 79:break;case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:h=this.getScratchpadIndex(t&15),this.R[h]=this.A;break;case 95:break;case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:this.IS=this.IS&7|(t&7)<<3;break;case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:this.IS=this.IS&56|t&7;break;case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:this.A=t&15;break;case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:{let r=t&7,i=this.fetchPC0();this.W&r&&(this.PC0=this.PC0+(i&128?i-256:i)&65535),s=6;break}case 136:e=this.fetchDC0(),this.clrOZCS(),this.A=this.doAdd(this.A,e),this.setSZ(this.A),s=6;break;case 137:e=this.fetchDC0(),this.A=this.doAddDecimal(this.A,e),s=6;break;case 138:e=this.fetchDC0(),this.A=this.A&e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 139:e=this.fetchDC0(),this.A=this.A|e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 140:e=this.fetchDC0(),this.A=this.A^e,this.clrOZCS(),this.setSZ(this.A),s=6;break;case 141:e=this.fetchDC0(),this.clrOZCS();{let r=this.doAdd(~this.A&255,e,1);this.setSZ(r)}s=6;break;case 142:this.DC0=this.DC0+(this.A&128?this.A-256:this.A)&65535,s=6;break;case 143:{let r=this.fetchPC0();(this.IS&7)!==7&&(this.PC0=this.PC0+(r&128?r-256:r)&65535),s=6;break}case 144:case 145:case 146:case 147:case 148:case 149:case 150:case 151:case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:{let r=t&15,i=this.fetchPC0();(r===0||!(this.W&r))&&(this.PC0=this.PC0+(i&128?i-256:i)&65535),s=6;break}case 160:case 161:this.A=this.iobus.read(t&1)&255,this.clrOZCS(),this.setSZ(this.A);break;case 162:case 163:break;case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:this.A=this.iobus.read(t&15)&255,this.clrOZCS(),this.setSZ(this.A),s=8;break;case 176:case 177:this.iobus.write(t&1,this.A);break;case 178:case 179:break;case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:this.iobus.write(t&15,this.A),s=8;break;case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:h=this.getScratchpadIndex(t&15),this.clrOZCS(),this.A=this.doAdd(this.A,this.R[h]),this.setSZ(this.A);break;case 207:break;case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:h=this.getScratchpadIndex(t&15),this.A=this.doAddDecimal(this.A,this.R[h]),s=8;break;case 223:break;case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:h=this.getScratchpadIndex(t&15),this.A=(this.A^this.R[h])&255,this.clrOZCS(),this.setSZ(this.A);break;case 239:break;case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:h=this.getScratchpadIndex(t&15),this.A=this.A&this.R[h]&255,this.clrOZCS(),this.setSZ(this.A);break;case 255:break}return s}};var W=[4282927176,4283498320,4283453695,4286611584,4294922320,4283498320,4283453695,4286611584,4282927176,4294922320,4283453695,4286611584,4282927176,4283498320,4294922320,4286611584],I=1,B=2,Z=4,v=8,E=16,O=32,_=64,g=128,u=class extends f{constructor(){super();this.cpuFrequency=1789773;this.defaultROMSize=65536;this.canvasWidth=128;this.numVisibleScanlines=64;this.numTotalScanlines=64;this.cpuCyclesPerLine=this.cpuFrequency/60/64;this.sampleRate=this.cpuFrequency/2;this.cpu=new F;this.ram=new Uint8Array(65536);this.vram=new Uint8Array(8192);this.port0=0;this.port1=0;this.port4=0;this.port5=0;this.row_reg=0;this.col_reg=0;this.color=0;this.soundMode=0;this.soundCounter=0;this.soundEnvelope=0;this.soundOnTime=0;this.read=C([[0,2047,2047,s=>this.bios[s]],[2048,65535,65535,s=>this.rom&&this.rom[s-2048]||0]],{gmask:65535});this.write=C([[10240,12287,2047,(s,e)=>{this.rom&&(this.rom[s-2048]=e)}]],{gmask:65535});this.bios=new Uint8Array(2048),this.connectCPUMemoryBus(this),this.cpu.connectIOBus(this.newIOBus())}newIOBus(){return this.probeIOBus({read:s=>this.readPort(s),write:(s,e)=>{this.writePort(s,e)}})}readPort(s){switch(s&255){case 0:return~this.inputs[0]&255;case 1:return~this.inputs[1]&255;case 4:return~this.inputs[2]&255;default:return 255}}writePort(s,e){switch(s&255){case 0:this.port0=e;break;case 1:this.port1=e,this.col_reg=e;break;case 4:this.port4=e;break;case 5:this.port5=e,this.soundMode=e>>6&3,this.soundMode>0&&(this.soundEnvelope=1023,this.soundOnTime=60),this.row_reg=e&63,this.writePixel();break}}writePixel(){let s=this.row_reg,e=this.col_reg&127;if(s<64&&e<128){let h=this.port1>>6&3,r=s*128+e;this.vram[r]=h}}readConst(s){return s<2048?this.bios[s]:this.rom&&this.rom[s-2048]||0}loadROM(s){this.rom||(this.rom=new Uint8Array(this.defaultROMSize)),this.rom.set(s),this.reset()}loadBIOS(s){this.bios=l(s,2048),this.reset()}reset(){super.reset(),this.vram.fill(0),this.port0=0,this.port1=0,this.port4=0,this.port5=0,this.row_reg=0,this.col_reg=0,this.soundMode=0,this.soundCounter=0,this.soundEnvelope=0}advanceFrame(s){var e=0,h=this.cpuFrequency/60;for(this.probe.logNewFrame();e>1)*4;for(let i=0;i<128;i++){let n=this.vram[s*128+i]&3,w=W[e+n];this.pixels[s*128+i]=w}}}generateAudio(s){if(!this.audio)return;let e=Math.floor(this.sampleRate/60);for(let h=0;h0&&this.soundEnvelope>0){let i;switch(this.soundMode){case 1:i=1e3;break;case 2:i=500;break;case 3:i=120;break;default:i=0}if(i>0){let n=Math.floor(this.sampleRate/i);this.soundCounter=(this.soundCounter+1)%n,r=this.soundCounter0?this.soundOnTime--:(this.soundEnvelope-=2,this.soundEnvelope<0&&(this.soundEnvelope=0))}this.audio.feedSample(r,1)}}setKeyInput(s,e,h){let r=!!(h&1),i=!!(h&64);s===c.VK_1.c&&(r?this.inputs[0]|=1:i&&(this.inputs[0]&=-2)),s===c.VK_2.c&&(r?this.inputs[0]|=2:i&&(this.inputs[0]&=-3)),s===c.VK_3.c&&(r?this.inputs[0]|=4:i&&(this.inputs[0]&=-5)),s===c.VK_4.c&&(r?this.inputs[0]|=8:i&&(this.inputs[0]&=-9)),(s===c.VK_UP.c||s===c.VK_W.c)&&(r?this.inputs[1]|=v:i&&(this.inputs[1]&=~v)),(s===c.VK_DOWN.c||s===c.VK_S.c)&&(r?this.inputs[1]|=Z:i&&(this.inputs[1]&=~Z)),(s===c.VK_LEFT.c||s===c.VK_A.c)&&(r?this.inputs[1]|=B:i&&(this.inputs[1]&=~B)),(s===c.VK_RIGHT.c||s===c.VK_D.c)&&(r?this.inputs[1]|=I:i&&(this.inputs[1]&=~I)),s===c.VK_Q.c&&(r?this.inputs[1]|=E:i&&(this.inputs[1]&=~E)),s===c.VK_E.c&&(r?this.inputs[1]|=O:i&&(this.inputs[1]&=~O)),s===c.VK_R.c&&(r?this.inputs[1]|=g:i&&(this.inputs[1]&=~g)),s===c.VK_F.c&&(r?this.inputs[1]|=_:i&&(this.inputs[1]&=~_))}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0),vram:this.vram.slice(0),port0:this.port0,port1:this.port1,port4:this.port4,port5:this.port5,row_reg:this.row_reg,col_reg:this.col_reg,soundMode:this.soundMode,soundCounter:this.soundCounter,soundEnvelope:this.soundEnvelope}}loadState(s){this.cpu.loadState(s.c),this.ram.set(s.ram),this.inputs.set(s.inputs),this.vram.set(s.vram),this.port0=s.port0,this.port1=s.port1,this.port4=s.port4,this.port5=s.port5,this.row_reg=s.row_reg,this.col_reg=s.col_reg,this.soundMode=s.soundMode,this.soundCounter=s.soundCounter,this.soundEnvelope=s.soundEnvelope}};var M=[];function U(x){return"PC0 = "+a(x.PC0,4)+" PC1 = "+a(x.PC1,4)+` DC0 = `+a(x.DC0,4)+" DC1 = "+a(x.DC1,4)+` A = `+a(x.A,2)+" W = "+a(x.W,2)+` IS = `+a(x.IS,2)+` @@ -14,4 +14,4 @@ Port 5: `+a(e.port5||0,2)+` Row: `+a(e.row_reg||0,2)+` Col: `+a(e.col_reg||0,2)+` `;case"VRAM":return"";default:return""}}getMemoryMap(){return{main:[{name:"BIOS",start:0,size:2048,type:"rom"},{name:"Cart ROM",start:2048,size:30720,type:"rom"}]}}};m.channelf=A; -//# sourceMappingURL=channelf-EKQFKL6Q.js.map +//# sourceMappingURL=channelf-XZIEWXOD.js.map diff --git a/gen/channelf-EKQFKL6Q.js.map b/gen/channelf-XZIEWXOD.js.map similarity index 100% rename from gen/channelf-EKQFKL6Q.js.map rename to gen/channelf-XZIEWXOD.js.map diff --git a/gen/chunk-MQGCXKDS.js b/gen/chunk-3H6WIH6E.js similarity index 73% rename from gen/chunk-MQGCXKDS.js rename to gen/chunk-3H6WIH6E.js index 56223b76..98dc196d 100644 --- a/gen/chunk-MQGCXKDS.js +++ b/gen/chunk-3H6WIH6E.js @@ -1,2 +1,2 @@ -import{R as b,S as w}from"./chunk-VZWSP3EG.js";import{e as E}from"./chunk-N7W4C4V2.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-KBEJHM6Z.js");case"arm32":return import("./arm32-KWBC45CY.js");case"astrocade":return import("./astrocade-YPJ5JSVL.js");case"atari7800":return import("./atari7800-ISTONEBP.js");case"atari8":return import("./atari8-CM7XWBCH.js");case"basic":return import("./basic-EDJPWBKW.js");case"c64":return import("./c64-4QH6N5TU.js");case"channelf":return import("./channelf-EKQFKL6Q.js");case"coleco":return import("./coleco-OJFZRPF2.js");case"cpc":return import("./cpc-PND5VPIB.js");case"devel":return import("./devel-NF5PPKHA.js");case"exidy":return import("./exidy-EY3YDB6L.js");case"galaxian":return import("./galaxian-574VKGFX.js");case"gb":return import("./gb-QINPLCGV.js");case"gameboy":return import("./gb-QINPLCGV.js");case"kim1":return import("./kim1-LJE4QR3M.js");case"mcr":return import("./mcr-4QQEKZH5.js");case"msx":return import("./msx-JFMR6U4A.js");case"mw8080bw":return import("./mw8080bw-ZZ2TCUYV.js");case"nes":return import("./nes-KNS3DDZZ.js");case"pacman":return import("./pacman-5A7HXGRT.js");case"pce":return import("./pce-7DNGDGLS.js");case"sms":return import("./sms-53SPECTY.js");case"sound_konami":return import("./sound_konami-VGRKDSAC.js");case"sound_williams":return import("./sound_williams-RA4OKZ2H.js");case"vcs":return import("./vcs-WW5CTLPM.js");case"vector":return import("./vector-RHDIYCTV.js");case"vectrex":return import("./vectrex-JTHLKXJ5.js");case"verilog":return import("./verilog-SIMIKVTX.js");case"vic20":return import("./vic20-CSSBR2HQ.js");case"vicdual":return import("./vicdual-XMXP2GDR.js");case"williams":return import("./williams-E5LRE2GA.js");case"x86":return import("./x86-7G3ENGFG.js");case"zmachine":return import("./zmachine-XLBF33XO.js");case"zx":return import("./zx-XGKGGZ4C.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{g as a,R as b,y as c}; -//# sourceMappingURL=chunk-MQGCXKDS.js.map +import{R as b,S as w}from"./chunk-VZWSP3EG.js";import{e as E}from"./chunk-N7W4C4V2.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFramethis.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-RKL5OQLE.js");case"arm32":return import("./arm32-SQFCAWO3.js");case"astrocade":return import("./astrocade-CFGBJILJ.js");case"atari7800":return import("./atari7800-ZOUJP6JR.js");case"atari8":return import("./atari8-C234KZYT.js");case"basic":return import("./basic-EDJPWBKW.js");case"c64":return import("./c64-KUYP5S4X.js");case"channelf":return import("./channelf-XZIEWXOD.js");case"coleco":return import("./coleco-NPYYZM2X.js");case"cpc":return import("./cpc-BDRGBH6L.js");case"devel":return import("./devel-DS2JT5JJ.js");case"exidy":return import("./exidy-XIUHGVKQ.js");case"galaxian":return import("./galaxian-KOF65FZ3.js");case"gb":return import("./gb-4WE7DNZW.js");case"gameboy":return import("./gb-4WE7DNZW.js");case"kim1":return import("./kim1-AISOICBO.js");case"mcr":return import("./mcr-OVINHUAG.js");case"msx":return import("./msx-H6UPVVEE.js");case"mw8080bw":return import("./mw8080bw-3UNGEVVC.js");case"nes":return import("./nes-ID4YFIRR.js");case"pacman":return import("./pacman-I4CSCLAQ.js");case"pce":return import("./pce-JCSZGFZE.js");case"sms":return import("./sms-VRS2E636.js");case"sound_konami":return import("./sound_konami-7HJCEIDB.js");case"sound_williams":return import("./sound_williams-BAYSXQOA.js");case"vcs":return import("./vcs-WPVNDSYO.js");case"vector":return import("./vector-IN7XZ7UY.js");case"vectrex":return import("./vectrex-MBXYZA7J.js");case"verilog":return import("./verilog-TQARZKQO.js");case"vic20":return import("./vic20-J6H7NL3P.js");case"vicdual":return import("./vicdual-YSEHHGWL.js");case"williams":return import("./williams-4C24P37E.js");case"x86":return import("./x86-7G3ENGFG.js");case"zmachine":return import("./zmachine-ETVX7HXB.js");case"zx":return import("./zx-VTTLD5PT.js");default:throw new Error(`Platform not recognized: '${l}'`)}}export{g as a,R as b,y as c}; +//# sourceMappingURL=chunk-3H6WIH6E.js.map diff --git a/gen/chunk-MQGCXKDS.js.map b/gen/chunk-3H6WIH6E.js.map similarity index 100% rename from gen/chunk-MQGCXKDS.js.map rename to gen/chunk-3H6WIH6E.js.map diff --git a/gen/chunk-4YTESWOC.js b/gen/chunk-4YTESWOC.js new file mode 100644 index 00000000..65650de6 --- /dev/null +++ b/gen/chunk-4YTESWOC.js @@ -0,0 +1,30 @@ +import{a as ct,b as ot,c as ut}from"./chunk-UXRCACYH.js";import{$ as Et,F as It,U as Lt,V as Ot,Y as z0,aa as st,fa as Zt,g as $,j as yt,s as W0}from"./chunk-VZWSP3EG.js";var Bn=[{mn:"BRK",am:"",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:"SI"},{mn:"ORA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHP",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"ORA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BPL",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ORA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"ORA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SLO",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"JSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:"S"},{mn:"AND",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BIT",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PLP",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SCZIDVN"},{mn:"AND",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"BIT",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BMI",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"AND",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"SEC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"AND",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RLA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTI",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"SCZIDVN"},{mn:"EOR",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHA",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"EOR",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ASR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"JMP",am:"AAAA",nb:3,il:0,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"EOR",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BVC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"EOR",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"EOR",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SRE",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTS",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"S"},{mn:"ADC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"PLA",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SAZN"},{mn:"ADC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ARR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"JMP",am:"(AAAA)",nb:3,il:0,c1:5,c2:0,nw:0,br:1,mod:""},{mn:"ADC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BVS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ADC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SEI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"ADC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RRA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"STA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"DEY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"TXA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ANE",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"BCC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"STA",am:"(aa),y",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SHA",am:"(aa),y",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa,y",nb:3,il:1,c1:4,c2:0,nw:1,br:1,mod:""},{mn:"TYA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STA",am:"AAAA,y",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"TXS",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"S"},{mn:"SHS",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:"S"},{mn:"SHY",am:"AAAA,x",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA,x",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHX",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHA",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"LDY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"TAY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"TAX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LXA",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"BCS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"LDA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"LAX",am:"(aa),y",nb:2,il:1,c1:5,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa,y",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"CLV",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"V"},{mn:"LDA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"TSX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAS",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"SAXZN"},{mn:"LDY",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"CPY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"INY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"CMP",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBX",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"XCZN"},{mn:"CPY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"BNE",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"CMP",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"CZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"DCP",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CLD",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"CMP",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"CPX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"INX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"CPX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BEQ",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"SBC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"ISB",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SED",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"SBC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"}];function xt(d,t,n,i){var x=Bn[t];if(x==null)return{line:"???",nbytes:1,isaddr:!1};var o=x.mn,b=x.am,u=!1;if(b=="branch"){var f=n<128?d+2+n:d+2-(256-n);f&=65535,b="$"+$(f,4),u=!0}else b=b.replace("aa","$"+$(n,2)),b=b.replace("AAAA","$"+$(n+(i<<8),4)),b.indexOf("#")<0&&b.indexOf("$")>=0&&(u=!0);return{line:x.mn+" "+b,nbytes:x.nb,isaddr:u,iscall:x.mn=="JSR"}}function Nn(d){let t=d;if(!t||typeof t.mem_read!="function"||typeof t.mem_write!="function"||typeof t.io_read!="function"||typeof t.io_write!="function")throw"Z80: Core object is missing required functions.";let n=0,i=0,x=0,o=0,b=0,u=0,f=0,W=0,N=0,g=0,B=0,_=0,ae=0,_e=0,h=0,R=0,te=0,H=0,K=0,s=0,c={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},ue={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},Ne=0,T=0,pe=0,p=!1,C=!1,Ve=!1,M=0;function X(){return{PC:s,SP:K,IX:h,IY:R,AF:(n<<8)+Ue(),BC:(i<<8)+x,DE:(o<<8)+b,HL:(u<<8)+f,AF_:(W<<8)+Ye(),BC_:(N<<8)+g,DE_:(B<<8)+_,HL_:(ae<<8)+_e,IR:(te<<8)+H,im:Ne,iff1:T,iff2:pe,halted:p,do_delayed_di:C,do_delayed_ei:Ve,cycle_counter:M}}function me(e){s=e.PC,K=e.SP,h=e.IX,R=e.IY,n=e.AF>>8&255,Fe(e.AF),i=e.BC>>8&255,x=e.BC&255,o=e.DE>>8&255,b=e.DE&255,u=e.HL>>8&255,f=e.HL&255,W=e.AF_>>8&255,De(e.AF_),N=e.BC_>>8&255,g=e.BC_&255,B=e.DE_>>8&255,_=e.DE_&255,ae=e.HL_>>8&255,_e=e.HL_&255,te=e.IR>>8&255,H=e.IR&255,Ne=e.im,T=e.iff1,pe=e.iff2,p=e.halted,C=e.do_delayed_di,Ve=e.do_delayed_ei,M=e.cycle_counter}let U=function(){K=0,s=0,n=0,H=0,Fe(0),Ne=0,T=0,pe=0,p=!1,C=!1,Ve=!1,M=0},y=function(){if(p)return 1;var e=!1,a=!1;C?(C=!1,e=!0):Ve&&(Ve=!1,a=!0),H=H&128|(H&127)+1&127;var P=t.mem_read(s);xe(P),s=s+1&65535,e?(T=0,pe=0):a&&(T=1,pe=1);var Le=M;return M=0,Le},ve=function(e,a){if(e)return H=H&128|(H&127)+1&127,p=!1,pe=T,T=0,Ee(s),s=102,M+=11,!0;if(T){if(H=H&128|(H&127)+1&127,p=!1,T=0,pe=0,Ne===0)s=s-1&65535,xe(a),s=s+1&65535,M+=2;else if(Ne===1)Ee(s),s=56,M+=13;else if(Ne===2){Ee(s);var P=te<<8|a;s=t.mem_read(P)|t.mem_read(P+1&65535)<<8,M+=19}return!0}},xe=function(e){var a=function(Oe){return(Oe&7)===0?i:(Oe&7)===1?x:(Oe&7)===2?o:(Oe&7)===3?b:(Oe&7)===4?u:(Oe&7)===5?f:(Oe&7)===6?t.mem_read(f|u<<8):n};if(e===118)p=!0;else if(e>=64&&e<128){var P=a(e);(e&56)>>>3?(e&56)>>>3===1?x=P:(e&56)>>>3===2?o=P:(e&56)>>>3===3?b=P:(e&56)>>>3===4?u=P:(e&56)>>>3===5?f=P:(e&56)>>>3===6?t.mem_write(f|u<<8,P):(e&56)>>>3===7&&(n=P):i=P}else if(e>=128&&e<192){var P=a(e),Le=[ce,ie,E,k,se,ee,Z,F];Le[(e&56)>>>3](P)}else{var $e=v[e];$e()}M+=l[e]},I=function(e){return e&=255,e&128&&(e=-((255&~e)+1)),e},Ue=function(){return c.S<<7|c.Z<<6|c.Y<<5|c.H<<4|c.X<<3|c.P<<2|c.N<<1|c.C},Ye=function(){return ue.S<<7|ue.Z<<6|ue.Y<<5|ue.H<<4|ue.X<<3|ue.P<<2|ue.N<<1|ue.C},Fe=function(e){c.S=(e&128)>>>7,c.Z=(e&64)>>>6,c.Y=(e&32)>>>5,c.H=(e&16)>>>4,c.X=(e&8)>>>3,c.P=(e&4)>>>2,c.N=(e&2)>>>1,c.C=e&1},De=function(e){ue.S=(e&128)>>>7,ue.Z=(e&64)>>>6,ue.Y=(e&32)>>>5,ue.H=(e&16)>>>4,ue.X=(e&8)>>>3,ue.P=(e&4)>>>2,ue.N=(e&2)>>>1,ue.C=e&1},Q=function(e){c.Y=(e&32)>>>5,c.X=(e&8)>>>3},be=function(e){var a=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];return a[e]},Ee=function(e){K=K-1&65535,t.mem_write(K,(e&65280)>>>8),K=K-1&65535,t.mem_write(K,e&255)},de=function(){var e=t.mem_read(K)&255;return K=K+1&65535,e|=t.mem_read(K)<<8,K=K+1&65535,e},ye=function(e){e?(s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},We=function(e){if(e){M+=5;var a=I(t.mem_read(s+1&65535));s=s+a+1&65535}else s=s+1&65535},Ze=function(e){e?(M+=7,Ee(s+3&65535),s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},Te=function(e){e&&(M+=6,s=de()-1&65535)},ke=function(e){Ee(s+1&65535),s=e-1&65535},ce=function(e){var a=n+e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,Q(n)},ie=function(e){var a=n+e+c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)+c.C&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,Q(n)},E=function(e){var a=n-e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,Q(n)},k=function(e){var a=n-e-c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)-c.C&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,Q(n)},F=function(e){var a=n;E(e),n=a,Q(e)},se=function(e){n&=e&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=1,c.P=be(n),c.N=0,c.C=0,Q(n)},Z=function(e){n=(e|n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=be(n),c.N=0,c.C=0,Q(n)},ee=function(e){n=(e^n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=be(n),c.N=0,c.C=0,Q(n)},L=function(e){var a=e+1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===15?1:0,c.P=e===127?1:0,c.N=0,a&=255,Q(a),a},O=function(e){var a=e-1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===0?1:0,c.P=e===128?1:0,c.N=1,a&=255,Q(a),a},we=function(e){var a=f|u<<8,P=a+e;c.N=0,c.C=P&65536?1:0,c.H=(a&4095)+(e&4095)&4096?1:0,f=P&255,u=(P&65280)>>>8,Q(u)},Y=function(e){e+=c.C;var a=f|u<<8,P=a+e;c.S=P&32768?1:0,c.Z=P&65535?0:1,c.H=(a&4095)+(e&4095)&4096?1:0,c.P=(a&32768)===(e&32768)&&(P&32768)!==(a&32768)?1:0,c.N=0,c.C=P&65536?1:0,f=P&255,u=P>>>8&255,Q(u)},ne=function(e){e+=c.C;var a=f|u<<8,P=a-e;c.S=P&32768?1:0,c.Z=P&65535?0:1,c.H=(a&4095)-(e&4095)&4096?1:0,c.P=(a&32768)!==(e&32768)&&(P&32768)!==(a&32768)?1:0,c.N=1,c.C=P&65536?1:0,f=P&255,u=P>>>8&255,Q(u)},Se=function(e){var a=t.io_read(e);return c.S=a&128?1:0,c.Z=a?0:1,c.H=0,c.P=be(a)?1:0,c.N=0,Q(a),a},J=function(){n!==128&&(n=I(n),n=-n&255),c.S=n&128?1:0,c.Z=n?0:1,c.H=(-n&15)>0?1:0,c.P=n===128?1:0,c.N=1,c.C=n?1:0,Q(n)},le=function(){var e=t.mem_read(f|u<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)+1;b=a&255,o=(a&65280)>>>8,a=(f|u<<8)+1,f=a&255,u=(a&65280)>>>8,a=(x|i<<8)-1,x=a&255,i=(a&65280)>>>8,c.H=0,c.P=x||i?1:0,c.N=0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},Ie=function(){var e=c.C,a=t.mem_read(f|u<<8);F(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var P=(f|u<<8)+1;f=P&255,u=(P&65280)>>>8,P=(x|i<<8)-1,x=P&255,i=(P&65280)>>>8,c.P=P?1:0},z=function(){i=O(i),t.mem_write(f|u<<8,t.io_read(i<<8|x));var e=(f|u<<8)+1;f=e&255,u=(e&65280)>>>8,c.N=1},He=function(){t.io_write(i<<8|x,t.mem_read(f|u<<8));var e=(f|u<<8)+1;f=e&255,u=(e&65280)>>>8,i=O(i),c.N=1},re=function(){c.N=0,c.H=0;var e=t.mem_read(f|u<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)-1;b=a&255,o=(a&65280)>>>8,a=(f|u<<8)-1,f=a&255,u=(a&65280)>>>8,a=(x|i<<8)-1,x=a&255,i=(a&65280)>>>8,c.P=x||i?1:0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},oe=function(){var e=c.C,a=t.mem_read(f|u<<8);F(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var P=(f|u<<8)-1;f=P&255,u=(P&65280)>>>8,P=(x|i<<8)-1,x=P&255,i=(P&65280)>>>8,c.P=P?1:0},Re=function(){i=O(i),t.mem_write(f|u<<8,t.io_read(i<<8|x));var e=(f|u<<8)-1;f=e&255,u=(e&65280)>>>8,c.N=1},Be=function(){t.io_write(i<<8|x,t.mem_read(f|u<<8));var e=(f|u<<8)-1;f=e&255,u=(e&65280)>>>8,i=O(i),c.N=1},Xe=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=(e<<1|c.C)&255,c.Z=e?0:1,c.P=be(e),c.S=e&128?1:0,Q(e),e},fe=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|c.C<<7,c.Z=e&255?0:1,c.P=be(e),c.S=e&128?1:0,Q(e),e&255},he=function(e){c.N=0,c.H=0;var a=c.C;return c.C=(e&128)>>>7,e=(e<<1|a)&255,c.Z=e?0:1,c.P=be(e),c.S=e&128?1:0,Q(e),e},Ae=function(e){c.N=0,c.H=0;var a=c.C;return c.C=e&1,e=e>>>1&127|a<<7,c.Z=e?0:1,c.P=be(e),c.S=e&128?1:0,Q(e),e},ze=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255,c.Z=e?0:1,c.P=be(e),c.S=e&128?1:0,Q(e),e},V=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|e&128,c.Z=e?0:1,c.P=be(e),c.S=e&128?1:0,Q(e),e},qe=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255|1,c.Z=e?0:1,c.P=be(e),c.S=e&128?1:0,Q(e),e},je=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127,c.Z=e?0:1,c.P=be(e),c.S=0,Q(e),e},Ge=function(e){c.N=0;var a=h+e;c.C=a&65536?1:0,c.H=(h&4095)+(e&4095)&4096?1:0,Q((a&65280)>>>8),h=a&65535},v=[];v[0]=function(){},v[1]=function(){s=s+1&65535,x=t.mem_read(s),s=s+1&65535,i=t.mem_read(s)},v[2]=function(){t.mem_write(x|i<<8,n)},v[3]=function(){var e=x|i<<8;e+=1,x=e&255,i=(e&65280)>>>8},v[4]=function(){i=L(i)},v[5]=function(){i=O(i)},v[6]=function(){s=s+1&65535,i=t.mem_read(s)},v[7]=function(){var e=c.S,a=c.Z,P=c.P;n=Xe(n),c.S=e,c.Z=a,c.P=P},v[8]=function(){var e=n;n=W,W=e,e=Ue(),Fe(Ye()),De(e)},v[9]=function(){we(x|i<<8)},v[10]=function(){n=t.mem_read(x|i<<8)},v[11]=function(){var e=x|i<<8;e-=1,x=e&255,i=(e&65280)>>>8},v[12]=function(){x=L(x)},v[13]=function(){x=O(x)},v[14]=function(){s=s+1&65535,x=t.mem_read(s)},v[15]=function(){var e=c.S,a=c.Z,P=c.P;n=fe(n),c.S=e,c.Z=a,c.P=P},v[16]=function(){i=i-1&255,We(i!==0)},v[17]=function(){s=s+1&65535,b=t.mem_read(s),s=s+1&65535,o=t.mem_read(s)},v[18]=function(){t.mem_write(b|o<<8,n)},v[19]=function(){var e=b|o<<8;e+=1,b=e&255,o=(e&65280)>>>8},v[20]=function(){o=L(o)},v[21]=function(){o=O(o)},v[22]=function(){s=s+1&65535,o=t.mem_read(s)},v[23]=function(){var e=c.S,a=c.Z,P=c.P;n=he(n),c.S=e,c.Z=a,c.P=P},v[24]=function(){var e=I(t.mem_read(s+1&65535));s=s+e+1&65535},v[25]=function(){we(b|o<<8)},v[26]=function(){n=t.mem_read(b|o<<8)},v[27]=function(){var e=b|o<<8;e-=1,b=e&255,o=(e&65280)>>>8},v[28]=function(){b=L(b)},v[29]=function(){b=O(b)},v[30]=function(){s=s+1&65535,b=t.mem_read(s)},v[31]=function(){var e=c.S,a=c.Z,P=c.P;n=Ae(n),c.S=e,c.Z=a,c.P=P},v[32]=function(){We(!c.Z)},v[33]=function(){s=s+1&65535,f=t.mem_read(s),s=s+1&65535,u=t.mem_read(s)},v[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,u)},v[35]=function(){var e=f|u<<8;e+=1,f=e&255,u=(e&65280)>>>8},v[36]=function(){u=L(u)},v[37]=function(){u=O(u)},v[38]=function(){s=s+1&65535,u=t.mem_read(s)},v[39]=function(){var e=n;c.N?((c.H||(n&15)>9)&&(e-=6),(c.C||n>153)&&(e-=96)):((c.H||(n&15)>9)&&(e+=6),(c.C||n>153)&&(e+=96)),c.S=e&128?1:0,c.Z=e&255?0:1,c.H=n&16^e&16?1:0,c.P=be(e&255),c.C=c.C||n>153?1:0,n=e&255,Q(n)},v[40]=function(){We(!!c.Z)},v[41]=function(){we(f|u<<8)},v[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),u=t.mem_read(e+1&65535)},v[43]=function(){var e=f|u<<8;e-=1,f=e&255,u=(e&65280)>>>8},v[44]=function(){f=L(f)},v[45]=function(){f=O(f)},v[46]=function(){s=s+1&65535,f=t.mem_read(s)},v[47]=function(){n=~n&255,c.N=1,c.H=1,Q(n)},v[48]=function(){We(!c.C)},v[49]=function(){K=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s+2&65535},v[50]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,n)},v[51]=function(){K=K+1&65535},v[52]=function(){var e=f|u<<8;t.mem_write(e,L(t.mem_read(e)))},v[53]=function(){var e=f|u<<8;t.mem_write(e,O(t.mem_read(e)))},v[54]=function(){s=s+1&65535,t.mem_write(f|u<<8,t.mem_read(s))},v[55]=function(){c.N=0,c.H=0,c.C=1,Q(n)},v[56]=function(){We(!!c.C)},v[57]=function(){we(K)},v[58]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,n=t.mem_read(e)},v[59]=function(){K=K-1&65535},v[60]=function(){n=L(n)},v[61]=function(){n=O(n)},v[62]=function(){n=t.mem_read(s+1&65535),s=s+1&65535},v[63]=function(){c.N=0,c.H=c.C,c.C=c.C?0:1,Q(n)},v[192]=function(){Te(!c.Z)},v[193]=function(){var e=de();x=e&255,i=(e&65280)>>>8},v[194]=function(){ye(!c.Z)},v[195]=function(){s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535},v[196]=function(){Ze(!c.Z)},v[197]=function(){Ee(x|i<<8)},v[198]=function(){s=s+1&65535,ce(t.mem_read(s))},v[199]=function(){ke(0)},v[200]=function(){Te(!!c.Z)},v[201]=function(){s=de()-1&65535},v[202]=function(){ye(!!c.Z)},v[203]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=(e&56)>>>3,P=e&7;if(e<64){var Le=[Xe,fe,he,Ae,ze,V,qe,je];P===0?i=Le[a](i):P===1?x=Le[a](x):P===2?o=Le[a](o):P===3?b=Le[a](b):P===4?u=Le[a](u):P===5?f=Le[a](f):P===6?t.mem_write(f|u<<8,Le[a](t.mem_read(f|u<<8))):P===7&&(n=Le[a](n))}else e<128?(P===0?c.Z=i&1<>>8},v[210]=function(){ye(!c.C)},v[211]=function(){s=s+1&65535,t.io_write(n<<8|t.mem_read(s),n)},v[212]=function(){Ze(!c.C)},v[213]=function(){Ee(b|o<<8)},v[214]=function(){s=s+1&65535,E(t.mem_read(s))},v[215]=function(){ke(16)},v[216]=function(){Te(!!c.C)},v[217]=function(){var e=i;i=N,N=e,e=x,x=g,g=e,e=o,o=B,B=e,e=b,b=_,_=e,e=u,u=ae,ae=e,e=f,f=_e,_e=e},v[218]=function(){ye(!!c.C)},v[219]=function(){s=s+1&65535,n=t.io_read(n<<8|t.mem_read(s))},v[220]=function(){Ze(!!c.C)},v[221]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=w[e];a?(a(),M+=q[e]):(s=s-1&65535,M+=l[0])},v[222]=function(){s=s+1&65535,k(t.mem_read(s))},v[223]=function(){ke(24)},v[224]=function(){Te(!c.P)},v[225]=function(){var e=de();f=e&255,u=(e&65280)>>>8},v[226]=function(){ye(!c.P)},v[227]=function(){var e=t.mem_read(K);t.mem_write(K,f),f=e,e=t.mem_read(K+1&65535),t.mem_write(K+1&65535,u),u=e},v[228]=function(){Ze(!c.P)},v[229]=function(){Ee(f|u<<8)},v[230]=function(){s=s+1&65535,se(t.mem_read(s))},v[231]=function(){ke(32)},v[232]=function(){Te(!!c.P)},v[233]=function(){s=f|u<<8,s=s-1&65535},v[234]=function(){ye(!!c.P)},v[235]=function(){var e=o;o=u,u=e,e=b,b=f,f=e},v[236]=function(){Ze(!!c.P)},v[237]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=D[e];a?(a(),M+=r[e]):M+=l[0]},v[238]=function(){s=s+1&65535,ee(t.mem_read(s))},v[239]=function(){ke(40)},v[240]=function(){Te(!c.S)},v[241]=function(){var e=de();Fe(e&255),n=(e&65280)>>>8},v[242]=function(){ye(!c.S)},v[243]=function(){C=!0},v[244]=function(){Ze(!c.S)},v[245]=function(){Ee(Ue()|n<<8)},v[246]=function(){s=s+1&65535,Z(t.mem_read(s))},v[247]=function(){ke(48)},v[248]=function(){Te(!!c.S)},v[249]=function(){K=f|u<<8},v[250]=function(){ye(!!c.S)},v[251]=function(){Ve=!0},v[252]=function(){Ze(!!c.S)},v[253]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=w[e];if(a){var P=h;h=R,a(),R=h,h=P,M+=q[e]}else s=s-1&65535,M+=l[0]},v[254]=function(){s=s+1&65535,F(t.mem_read(s))},v[255]=function(){ke(56)};let D=[];D[64]=function(){i=Se(i<<8|x)},D[65]=function(){t.io_write(i<<8|x,i)},D[66]=function(){ne(x|i<<8)},D[67]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,x),t.mem_write(e+1&65535,i)},D[68]=function(){J()},D[69]=function(){s=de()-1&65535,T=pe},D[70]=function(){Ne=0},D[71]=function(){te=n},D[72]=function(){x=Se(i<<8|x)},D[73]=function(){t.io_write(i<<8|x,x)},D[74]=function(){Y(x|i<<8)},D[75]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,x=t.mem_read(e),i=t.mem_read(e+1&65535)},D[76]=function(){J()},D[77]=function(){s=de()-1&65535},D[78]=function(){Ne=0},D[79]=function(){H=n},D[80]=function(){o=Se(i<<8|x)},D[81]=function(){t.io_write(i<<8|x,o)},D[82]=function(){ne(b|o<<8)},D[83]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,b),t.mem_write(e+1&65535,o)},D[84]=function(){J()},D[85]=function(){s=de()-1&65535,T=pe},D[86]=function(){Ne=1},D[87]=function(){n=te,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=pe,c.N=0,Q(n)},D[88]=function(){b=Se(i<<8|x)},D[89]=function(){t.io_write(i<<8|x,b)},D[90]=function(){Y(b|o<<8)},D[91]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,b=t.mem_read(e),o=t.mem_read(e+1&65535)},D[92]=function(){J()},D[93]=function(){s=de()-1&65535,T=pe},D[94]=function(){Ne=2},D[95]=function(){n=H,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=pe,c.N=0,Q(n)},D[96]=function(){u=Se(i<<8|x)},D[97]=function(){t.io_write(i<<8|x,u)},D[98]=function(){ne(f|u<<8)},D[99]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,u)},D[100]=function(){J()},D[101]=function(){s=de()-1&65535,T=pe},D[102]=function(){Ne=0},D[103]=function(){var e=t.mem_read(f|u<<8),a=e&15,P=n&15;e=(e&240)>>>4|P<<4,n=n&240|a,t.mem_write(f|u<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=be(n)?1:0,c.N=0,Q(n)},D[104]=function(){f=Se(i<<8|x)},D[105]=function(){t.io_write(i<<8|x,f)},D[106]=function(){Y(f|u<<8)},D[107]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),u=t.mem_read(e+1&65535)},D[108]=function(){J()},D[109]=function(){s=de()-1&65535,T=pe},D[110]=function(){Ne=0},D[111]=function(){var e=t.mem_read(f|u<<8),a=e&240,P=n&15;e=(e&15)<<4|P,n=n&240|a>>>4,t.mem_write(f|u<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=be(n)?1:0,c.N=0,Q(n)},D[112]=function(){Se(i<<8|x)},D[113]=function(){t.io_write(i<<8|x,0)},D[114]=function(){ne(K)},D[115]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,K&255),t.mem_write(e+1&65535,K>>>8&255)},D[116]=function(){J()},D[117]=function(){s=de()-1&65535,T=pe},D[118]=function(){Ne=1},D[120]=function(){n=Se(i<<8|x)},D[121]=function(){t.io_write(i<<8|x,n)},D[122]=function(){Y(K)},D[123]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,K=t.mem_read(e),K|=t.mem_read(e+1&65535)<<8},D[124]=function(){J()},D[125]=function(){s=de()-1&65535,T=pe},D[126]=function(){Ne=2},D[160]=function(){le()},D[161]=function(){Ie()},D[162]=function(){z()},D[163]=function(){He()},D[168]=function(){re()},D[169]=function(){oe()},D[170]=function(){Re()},D[171]=function(){Be()},D[176]=function(){le(),(i||x)&&(M+=5,s=s-2&65535)},D[177]=function(){Ie(),!c.Z&&(i||x)&&(M+=5,s=s-2&65535)},D[178]=function(){z(),i&&(M+=5,s=s-2&65535)},D[179]=function(){He(),i&&(M+=5,s=s-2&65535)},D[184]=function(){re(),(i||x)&&(M+=5,s=s-2&65535)},D[185]=function(){oe(),!c.Z&&(i||x)&&(M+=5,s=s-2&65535)},D[186]=function(){Re(),i&&(M+=5,s=s-2&65535)},D[187]=function(){Be(),i&&(M+=5,s=s-2&65535)};let w=[];w[9]=function(){Ge(x|i<<8)},w[25]=function(){Ge(b|o<<8)},w[33]=function(){s=s+1&65535,h=t.mem_read(s),s=s+1&65535,h|=t.mem_read(s)<<8},w[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,h&255),t.mem_write(e+1&65535,h>>>8&255)},w[35]=function(){h=h+1&65535},w[36]=function(){h=L(h>>>8)<<8|h&255},w[37]=function(){h=O(h>>>8)<<8|h&255},w[38]=function(){s=s+1&65535,h=t.mem_read(s)<<8|h&255},w[41]=function(){Ge(h)},w[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,h=t.mem_read(e),h|=t.mem_read(e+1&65535)<<8},w[43]=function(){h=h-1&65535},w[44]=function(){h=L(h&255)|h&65280},w[45]=function(){h=O(h&255)|h&65280},w[46]=function(){s=s+1&65535,h=t.mem_read(s)&255|h&65280},w[52]=function(){s=s+1&65535;var e=I(t.mem_read(s)),a=t.mem_read(e+h&65535);t.mem_write(e+h&65535,L(a))},w[53]=function(){s=s+1&65535;var e=I(t.mem_read(s)),a=t.mem_read(e+h&65535);t.mem_write(e+h&65535,O(a))},w[54]=function(){s=s+1&65535;var e=I(t.mem_read(s));s=s+1&65535,t.mem_write(h+e&65535,t.mem_read(s))},w[57]=function(){Ge(K)},w[68]=function(){i=h>>>8&255},w[69]=function(){i=h&255},w[70]=function(){s=s+1&65535;var e=I(t.mem_read(s));i=t.mem_read(h+e&65535)},w[76]=function(){x=h>>>8&255},w[77]=function(){x=h&255},w[78]=function(){s=s+1&65535;var e=I(t.mem_read(s));x=t.mem_read(h+e&65535)},w[84]=function(){o=h>>>8&255},w[85]=function(){o=h&255},w[86]=function(){s=s+1&65535;var e=I(t.mem_read(s));o=t.mem_read(h+e&65535)},w[92]=function(){b=h>>>8&255},w[93]=function(){b=h&255},w[94]=function(){s=s+1&65535;var e=I(t.mem_read(s));b=t.mem_read(h+e&65535)},w[96]=function(){h=h&255|i<<8},w[97]=function(){h=h&255|x<<8},w[98]=function(){h=h&255|o<<8},w[99]=function(){h=h&255|b<<8},w[100]=function(){},w[101]=function(){h=h&255|(h&255)<<8},w[102]=function(){s=s+1&65535;var e=I(t.mem_read(s));u=t.mem_read(h+e&65535)},w[103]=function(){h=h&255|n<<8},w[104]=function(){h=h&65280|i},w[105]=function(){h=h&65280|x},w[106]=function(){h=h&65280|o},w[107]=function(){h=h&65280|b},w[108]=function(){h=h&65280|h>>>8},w[109]=function(){},w[110]=function(){s=s+1&65535;var e=I(t.mem_read(s));f=t.mem_read(h+e&65535)},w[111]=function(){h=h&65280|n},w[112]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,i)},w[113]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,x)},w[114]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,o)},w[115]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,b)},w[116]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,u)},w[117]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,f)},w[119]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,n)},w[124]=function(){n=h>>>8&255},w[125]=function(){n=h&255},w[126]=function(){s=s+1&65535;var e=I(t.mem_read(s));n=t.mem_read(h+e&65535)},w[132]=function(){ce(h>>>8&255)},w[133]=function(){ce(h&255)},w[134]=function(){s=s+1&65535;var e=I(t.mem_read(s));ce(t.mem_read(h+e&65535))},w[140]=function(){ie(h>>>8&255)},w[141]=function(){ie(h&255)},w[142]=function(){s=s+1&65535;var e=I(t.mem_read(s));ie(t.mem_read(h+e&65535))},w[148]=function(){E(h>>>8&255)},w[149]=function(){E(h&255)},w[150]=function(){s=s+1&65535;var e=I(t.mem_read(s));E(t.mem_read(h+e&65535))},w[156]=function(){k(h>>>8&255)},w[157]=function(){k(h&255)},w[158]=function(){s=s+1&65535;var e=I(t.mem_read(s));k(t.mem_read(h+e&65535))},w[164]=function(){se(h>>>8&255)},w[165]=function(){se(h&255)},w[166]=function(){s=s+1&65535;var e=I(t.mem_read(s));se(t.mem_read(h+e&65535))},w[172]=function(){ee(h>>>8&255)},w[173]=function(){ee(h&255)},w[174]=function(){s=s+1&65535;var e=I(t.mem_read(s));ee(t.mem_read(h+e&65535))},w[180]=function(){Z(h>>>8&255)},w[181]=function(){Z(h&255)},w[182]=function(){s=s+1&65535;var e=I(t.mem_read(s));Z(t.mem_read(h+e&65535))},w[188]=function(){F(h>>>8&255)},w[189]=function(){F(h&255)},w[190]=function(){s=s+1&65535;var e=I(t.mem_read(s));F(t.mem_read(h+e&65535))},w[203]=function(){s=s+1&65535;var e=I(t.mem_read(s));s=s+1&65535;var a=t.mem_read(s),P;if(a<64){var Le=[Xe,fe,he,Ae,ze,V,qe,je],$e=Le[(a&56)>>>3],P=$e(t.mem_read(h+e&65535));t.mem_write(h+e&65535,P)}else{var Oe=(a&56)>>>3;a<128?(c.N=0,c.H=1,c.Z=t.mem_read(h+e&65535)&1<>>8&255)},w[229]=function(){Ee(h)},w[233]=function(){s=h-1&65535},w[249]=function(){K=h};let l=[4,10,7,6,4,4,7,4,4,11,7,6,4,4,7,4,8,10,7,6,4,4,7,4,12,11,7,6,4,4,7,4,7,10,16,6,4,4,7,4,7,11,16,6,4,4,7,4,7,10,13,6,11,11,10,4,7,11,13,6,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,7,7,7,7,7,7,4,7,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,5,10,10,10,10,11,7,11,5,10,10,0,10,17,7,11,5,10,10,11,10,11,7,11,5,4,10,11,10,0,7,11,5,10,10,19,10,11,7,11,5,4,10,4,10,0,7,11,5,10,10,4,10,11,7,11,5,6,10,4,10,0,7,11],r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,0,12,12,15,20,8,14,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],S=[8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8],q=[0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,14,20,10,8,8,11,0,0,15,20,10,8,8,11,0,0,0,0,0,23,23,19,0,0,15,0,0,0,0,0,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,8,8,8,8,8,8,19,8,8,8,8,8,8,8,19,8,19,19,19,19,19,19,0,19,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,23,0,15,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0];this.saveState=X,this.loadState=me,this.reset=U,this.advanceInsn=y,this.interrupt=ve,this.getPC=()=>s,this.getSP=()=>K,this.getHalted=()=>p}var K0=class{constructor(){this.retryInterrupts=!1;this.retryData=-1}buildCPU(){this.memBus&&this.ioBus&&!this.cpu&&(this.cpu=new Nn({mem_read:t=>this.memBus.read(t),mem_write:(t,n)=>this.memBus.write(t,n),io_read:t=>this.ioBus.read(t),io_write:(t,n)=>this.ioBus.write(t,n)}))}connectMemoryBus(t){this.memBus=t,this.buildCPU()}connectIOBus(t){this.ioBus=t,this.buildCPU()}advanceInsn(){return this.retryInterrupts&&this.retryData>=0&&this.cpu.interrupt(!1,this.retryData)&&(this.retryData=-1),this.cpu.advanceInsn()}reset(){this.cpu.reset()}interrupt(t){!this.cpu.interrupt(!1,t)&&this.retryInterrupts&&(this.retryData=t)}NMI(){this.cpu.interrupt(!0,0)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.getHalted()}saveState(){return this.cpu.saveState()}loadState(t){this.cpu.loadState(t)}isStable(){return!0}};var mt=class{constructor(){this.master=new MasterChannel}start(){this.looper||(this.looper=new AudioLooper(512),this.looper.setChannel(this.master),this.looper.activate(),dt(this.looper.audioContext))}stop(){this.looper&&(this.looper.setChannel(null),this.looper=null)}},Mt=class{constructor(t){this.psg=new PsgDeviceChannel;this.curreg=0;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),t.master.addChannel(this.psg)}reset(){for(var t=15;t>=0;t--)this.selectRegister(t),this.setData(0)}selectRegister(t){this.curreg=t&15}setData(t){this.psg.writeRegisterAY(this.curreg,t&255)}readData(){return this.psg.readRegister(this.curreg)}currentRegister(){return this.curreg}},Ft=class{constructor(t){this.psg=new PsgDeviceChannel;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_SN76489),t.master.addChannel(this.psg)}reset(){}setData(t){this.psg.writeRegisterSN(0,t&255)}};function jn(d){for(var t=new mt,n=1;n<=d;n++){var i=new yn;t["pokey"+n]=i,t.master.addChannel(i)}return t}function B0(d,t){for(var n=new Uint8Array(d.length*t.length),i=0,x=0;x.5?1:0;var Ye=B0(I,U),Fe=B0(U,me),De=[Ye,U,Fe,U,I,X,me,X],Q=j0(2),be=j0(6),Ee=j0(31),de=j0(93),ye=B0(ve,me),We=B0(U,Q),Ze=B0(U,be),Te=[M,me,ye,Fe,Q,Q,Ee,We,y,U,Ee,M,be,be,de,Ze],ke=new Uint8Array(16),ce=new Float32Array(4),ie=new Float32Array(4),E=new Float32Array(4),k=new Uint8Array(4),F=[M,M,M,M],se,Z,ee,L,O=!0;this.setBufferLength=function(Y){se=new Int32Array(Y)},this.getBuffer=function(){return se},this.setSampleRate=function(Y){Z=Y,L=C/Y};function we(Y){var ne=ke[8],Se=ne&B?ae:_,J,le=Y&4,Ie=le>>1,z=le>>2;ne&f>>z?(ne&b>>z?J=ke[le+2]*256+ke[le+0]+7:J=(ke[le+2]*256+ke[le+0]+1)*Se,ie[Ie+1]=L/J,ie[Ie+0]=0):(ne&b>>z?J=ke[le+0]+4:J=(ke[le+0]+1)*Se,ie[Ie+0]=L/J,J=(ke[le+2]+1)*Se,ie[Ie+1]=L/J)}this.setRegister=function(Y,ne){if(Y&=15,ne&=255,ke[Y]!=ne)switch(ke[Y]=ne,Y){case 0:case 2:case 4:case 6:case 8:O=!0;break;case 1:case 3:case 5:case 7:E[Y>>1]=ne&15,F[Y>>1]=De[ne>>5];break}},this.getRegister=function(Y){return Y&=15,ke[Y]},this.setTIARegister=function(Y,ne){switch(Y){case 23:case 24:ke[(Y&1)*4]=ne&31,O=!0;break;case 21:case 22:F[(Y&1)*2]=Te[ne&15];break;case 25:case 26:E[(Y&1)*2]=ne&15;break}},this.generate=function(Y){O&&(we(0),we(4),O=!1);for(var ne=0;ne0&&le<1&&Ie>0){var z=F[J],He=ce[J]+=le;He>z.length&&(He=ce[J]=He-Math.floor(He/z.length)*z.length);var re=z[Math.floor(He)];re&&(Se+=Ie)}}Se*=64,se[ne]=Se,se[ne+1]=Se}}},$n=function(d){var t,n,i=[],x=0;d.onmessage=function(o){o&&o.data&&o.data.samples&&n&&(i.push(o.data.samples),x+=o.data.samples.length)},this.setBufferLength=function(o){n=new Int16Array(o),x=0},this.getBuffer=function(){return n},this.setSampleRate=function(o){t=o,d.postMessage({sampleRate:o})},this.generate=function(o){if(x{d.state==="running"?w0.delete(d):d.state==="closed"&&($0.delete(d),w0.delete(d)),N0()}),N0())}function Jn(){for(let d of $0)if(d.state!=="running"&&w0.has(d))return!0;return!1}function Gn(d){return bt.add(d),()=>{bt.delete(d)}}function Xt(d){let t=d.resume();t&&typeof t.then=="function"&&t.then(()=>{d.state==="running"?Ln(d):N0()},()=>{})}function dt(d){if(!d||d.state==="closed")return;if(On(d),d.state==="running"){w0.delete(d);return}if(w0.add(d),N0(),Xt(d),typeof document=="undefined"||lt.has(d))return;lt.add(d);let t=()=>{if(Xt(d),d.state==="running"){for(let n of Ut)document.removeEventListener(n,t,!0);lt.delete(d)}};for(let n of Ut)document.addEventListener(n,t,!0)}var En=function(d){var t=this,n,i,x,o,b,u,f,W,N,g=0,B=0,_=0,ae=null,_e=!1,h=1,R=1,te=0,H=0,K=1.5,s=.05,c=.004,ue=.01,Ne=500,T=8,pe=T;function p(M){var X=M.outputBuffer.getChannelData(0),me=this.module;if(me||(me=M.srcElement.module),!!me)if(me.callback){me.callback(X);return}else if(W>N){_e&&ae[Math.min(W-N,T)]++,te+=(W-N-te)*s;for(var U=u[N%T],y=0;y=o.length)){if(b=0,t.stream){var X=o;o=new Float32Array(t.bufferlen),t.stream.push(X);return}if(u[f]=o,W++,W-N>=pe){N++,g++;var me=Date.now();me-B>1e3&&(console.warn("SampleAudio: skipped audio buffer(s), total="+g+", fill="+(W-N)+"/"+pe+", contextRate="+t.sr+", requestedBuf="+t.bufferlen+", expectedIntervalMs="+(t.bufferlen*1e3/t.sr).toFixed(2)),B=me)}f=(f+1)%T,o=u[f];var U=Date.now();if(U-H>Ne){H=U;var y=1+c*(K-te);y>1+ue?y=1+ue:y<1-ue&&(y=1-ue),R=y,i=h*R}}},this.feedSample=function(M,X){if(x+=M*X,n+=i*X,n>=1){for(x/=n;n>=1;)this.addSingleSample(x*i),n-=1;x*=n}},this.getStats=function(){var M=0,X=0,me=0;if(ae)for(var U=0;U0&&U>me&&(me=U)}return{maxBuffers:T,targetDepth:pe,sampleRate:t.sr||0,bufferLength:t.bufferlen||0,fillHistogram:ae?ae.slice():[],meanFill:M>0?X/M:0,maxFill:me,samples:M,skippedBuffers:g,underruns:_,fillAvg:te,trim:R}},this.setStatsEnabled=function(M){_e=!!M,ae=_e?new Array(T+1).fill(0):null}},J0=class{constructor(t){this.sa=new En(t)}feedSample(t,n){this.sa.feedSample(t,n)}start(){this.sa.start()}stop(){this.sa.stop()}reset(){this.sa.reset()}getStats(){return this.sa.getStats?this.sa.getStats():null}setStatsEnabled(t){this.sa.setStatsEnabled&&this.sa.setStatsEnabled(t)}get sampleRate(){return this.sa.sr||0}},Ht=class{constructor(t,n,i){this.audioGain=1/8192;this.bufferLength=n*2,this.channels=t.generate?[t]:t,this.channels.forEach(x=>{x.setBufferLength(this.bufferLength),x.setSampleRate(i)})}generate(t){var n=this.bufferLength,i=this.channels.map(o=>o.getBuffer());this.channels.forEach(o=>{o.generate(n)});for(let o=0;ox+=b[o]),t.feedSample(x*this.audioGain,1)}}};function qn(d){return Object.keys(d).map(t=>d[t])}var G0=class{constructor(t,n){this.idx=0;this.sl=0;this.cur_sp=-1;this.singleFrame=!0;this.m=t,this.reset(n||1048576)}start(){this.m.connectProbe(this)}stop(){this.m.connectProbe(null)}reset(t){t&&(this.buf=new Uint32Array(t)),this.sl=0,this.cur_sp=-1,this.clear()}clear(){this.idx=0}logData(t){this.log(t)}log(t){this.idx>=this.buf.length||(this.buf[this.idx++]=t)}relog(t){this.buf[this.idx-1]=t}lastOp(){return this.idx>0?this.buf[this.idx-1]&4278190080:-1}lastAddr(){return this.idx>0?this.buf[this.idx-1]&16777215:-1}addLogBuffer(t){this.idx+t.length>this.buf.length&&(t=t.slice(0,this.buf.length-this.idx)),this.buf.set(t,this.idx),this.idx+=t.length}logClocks(t){t|=0,t>0&&(this.lastOp()==0?this.relog(this.lastAddr()+t|0):this.log(t|0))}logNewScanline(){this.log(2113929216),this.sl++}logNewFrame(){this.log(2130706432),this.sl=0,this.singleFrame&&this.clear()}logExecute(t,n){this.cur_sp!==n&&(nthis.cur_sp&&this.log(184549376|n),this.cur_sp=n),this.log(t|16777216)}logInterrupt(t){this.log(t|134217728)}logValue(t,n,i){this.log(t&65535|(n&255)<<16|i)}logRead(t,n){this.logValue(t,n,301989888)}logWrite(t,n){this.logValue(t,n,318767104)}logIORead(t,n){this.logValue(t,n,335544320)}logIOWrite(t,n){this.logValue(t,n,352321536)}logVRAMRead(t,n){this.logValue(t,n,369098752)}logVRAMWrite(t,n){this.logValue(t,n,385875968)}logIllegal(t){this.log(t|150994944)}logWait(t){this.log(t|520093696)}logDMARead(t,n){this.logValue(t,n,402653184)}logDMAWrite(t,n){this.logValue(t,n,419430400)}countEvents(t){for(var n=0,i=0;ithis.rom.length)throw new Error(`ROM too big: ${t.length} > ${this.rom.length}`);this.rom.set(t)}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.inputs.set(t.inputs)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0)}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}advanceCPU(){var t=this.cpu,n=1;return this.probing&&this.cpu.isStable()&&this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),t.advanceClock?t.advanceClock():t.advanceInsn&&(n=t.advanceInsn(1)),this.probing&&this.probe.logClocks(n),n}probeMemoryBus(t){return{read:n=>{let i=t.read(n);return this.probe.logRead(n,i),i},write:(n,i)=>{this.probe.logWrite(n,i),t.write(n,i)},read32:n=>{let i=t.read32(n);return this.probe.logRead(n,i),i},write32:(n,i)=>{this.probe.logWrite(n,i),t.write32(n,i)}}}connectCPUMemoryBus(t){this.cpuMemoryBus=t,this.rewireCPUBuses()}probeIOBus(t){return{read:n=>{let i=t.read(n);return this.probe.logIORead(n,i),i},write:(n,i)=>{this.probe.logIOWrite(n,i),t.write(n,i)}}}probeDMABus(t){return{read:n=>{let i=t.read(n);return this.probe.logDMARead(n,i),i},write:(n,i)=>{this.probe.logDMAWrite(n,i),t.write(n,i)}}}connectCPUIOBus(t){this.cpuIOBus=t,this.rewireCPUBuses()}},At=class extends ht{constructor(){super(...arguments);this.overscan=!1;this.rotate=0}getAudioParams(){return{sampleRate:this.sampleRate,stereo:!1}}connectAudio(n){this.audio=n}getVideoParams(){return{width:this.canvasWidth,height:this.numVisibleScanlines,aspect:this.aspectRatio,overscan:this.overscan,rotate:this.rotate}}connectVideo(n){this.pixels=n}},Vt=class extends At{advanceFrame(t){this.preFrame();var n=0,i=0;this.probe.logNewFrame(),this.frameCycles=0;for(var x=0;x=64&&n<=127&&(u=Wt[n-64]),n>=160&&n<=191&&(u=Wt[n-160+64]),b++;break;case 221:case 253:var g=t==221?"ix":"iy";n==203?(u=zt[x],f[2]=x,f[3]=i,b++):u=Yt[n],u=u.replace(/[(]hl[)]/,"("+g+"+x)"),u=u.replace(/\bhl\b/,g),b++;break;default:u=Yt[t];break}if((!u||!u.length)&&(u="??"),N=/^(call|rst)/.test(u),/\bxx\b/.test(u))u=u.replace(/\bxx\b/,"$"+$(f[b]+(f[b+1]<<8),4)),b+=2,W=!0;else if(/\bx\b/.test(u)){if(u.startsWith("j")){var B=n<128?d+2+n:d+2-(256-n);B&=65535,u=u.replace(/\bx\b/,"$"+$(B,4)),W=!0}else u=u.replace(/\bx\b/,"$"+$(f[b],2));b+=1}return{line:u.toUpperCase(),nbytes:b,isaddr:W,iscall:N}}function Q0(){var d,t,n,i,x,o,b,u,f,W,N=1,g=2,B=4,_=8,ae=16,_e=32,h=64,R=128,te=65534,H=65532,K=65530,s=65528,c=65526,ue=65524,Ne=65522,T=0,pe,p,C,Ve=[6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,0,0,2,4,0,0,5,9,0,2,3,0,3,2,8,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,0,5,3,6,9,11,0,19,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,7,0,0,7,7,0,7,7,7,7,7,0,7,7,4,7,2,2,2,4,2,2,2,0,2,2,2,2,4,7,3,0,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,5,5,5,7,5,5,5,5,5,5,5,5,7,8,6,6,2,2,2,4,2,2,2,0,2,2,2,2,3,0,3,0,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,6,6,6,6],M=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,4,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,8,0,0,0,0,0,0,0,0,8,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7],X=[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8],me=function(l,r,S){f|=((l^r^S^S>>1)&128)>>6},U=function(l,r,S){f|=((l^r^S^S>>1)&32768)>>14},y=function(){return(t<<8)+n},ve=function(l){t=l>>8&255,n=l&255},xe=function(l){p(--b,l&255)},I=function(l){p(--b,l&255),p(--b,l>>8&255)},Ue=function(l){p(--o,l&255)},Ye=function(l){p(--o,l&255),p(--o,l>>8&255)},Fe=function(){return C(b++)},De=function(){return C(b++)*256+C(b++)},Q=function(){return C(o++)},be=function(){return C(o++)*256+C(o++)},Ee=function(l){var r=0;l&128&&(I(u),r+=2),l&64&&(I(o),r+=2),l&32&&(I(x),r+=2),l&16&&(I(i),r+=2),l&8&&(xe(W),r++),l&4&&(xe(n),r++),l&2&&(xe(t),r++),l&1&&(xe(f),r++),T+=r},de=function(l){var r=0;l&128&&(Ye(u),r+=2),l&64&&(Ye(b),r+=2),l&32&&(Ye(x),r+=2),l&16&&(Ye(i),r+=2),l&8&&(Ue(W),r++),l&4&&(Ue(n),r++),l&2&&(Ue(t),r++),l&1&&(Ue(f),r++),T+=r},ye=function(l){var r=0;l&1&&(f=Fe(),r++),l&2&&(t=Fe(),r++),l&4&&(n=Fe(),r++),l&8&&(W=Fe(),r++),l&16&&(i=De(),r+=2),l&32&&(x=De(),r+=2),l&64&&(o=De(),r+=2),l&128&&(u=De(),r+=2),T+=r},We=function(l){var r=0;l&1&&(f=Q(),r++),l&2&&(t=Q(),r++),l&4&&(n=Q(),r++),l&8&&(W=Q(),r++),l&16&&(i=be(),r+=2),l&32&&(x=be(),r+=2),l&64&&(b=be(),r+=2),l&128&&(u=be(),r+=2),T+=r},Ze=function(l){switch(l&15){case 0:return y();case 1:return i;case 2:return x;case 3:return o;case 4:return b;case 5:return u;case 8:return t;case 9:return n;case 10:return f;case 11:return W;default:return null}},Te=function(l,r){switch(l&15){case 0:ve(r);return;case 1:i=r;return;case 2:x=r;return;case 3:o=r;return;case 4:b=r;return;case 5:u=r;return;case 8:t=r;return;case 9:n=r;return;case 10:f=r;return;case 11:W=r;return;default:return}},ke=function(l,r){var S=l&136;(S==128||S==8)&&(S=0),r?(S=Ze(l>>4),Te(l>>4,Ze(l)),Te(l,S)):Te(l,Ze(l>>4))},ce=function(l){return l>127?l-256:l},ie=function(l){return l>32767?l-65536:l},E=function(){var l=C(u++);return u&=65535,l},k=function(){var l=C(u++);u&=65535;var r=C(u++);return u&=65535,l*256+r},F=function(l){var r=C(l++);l&=65535;var S=C(l++);return l&=65535,r*256+S},se=function(l,r){p(l++,r>>8&255),l&=65535,p(l,r&255)},Z=function(){var l=E(),r;switch(l&96){case 0:r=i;break;case 32:r=x;break;case 64:r=o;break;case 96:r=b;break}var S=null,q=null,e;if(l&128){switch(l&15){case 0:q=r,S=r+1,T+=2;break;case 1:q=r,S=r+2,T+=3;break;case 2:S=r-1,q=S,T+=2;break;case 3:S=r-2,q=S,T+=3;break;case 4:q=r;break;case 5:q=r+ce(n),T+=1;break;case 6:q=r+ce(t),T+=1;break;case 7:q=0;break;case 8:q=r+ce(E()),T+=1;break;case 9:q=r+ie(k()),T+=4;break;case 10:q=0;break;case 11:T+=4,q=r+y();break;case 12:e=ce(E()),q=u+e,T+=1;break;case 13:e=ie(k()),q=u+e,T+=5;break;case 14:q=0;break;case 15:T+=5,q=k();break}q&=65535,l&16&&(q=C(q)*256+C(q+1&65535),T+=3)}else{var a=l&31;a>15&&(a-=32),q=r+a,T+=1}if(S!==null)switch(l&96){case 0:i=S;break;case 32:x=S;break;case 64:o=S;break;case 96:b=S;break}return q&65535},ee=function(l){f&=~(B|_),l===0&&(f|=B),l&32768&&(f|=_)},L=function(l){return l++,l&=255,f&=~(B|g|_),f|=X[l],(l===0||l==128)&&(f|=g),l},O=function(l){return l--,l&=255,f&=~(B|g|_),f|=X[l],(l===127||l==255)&&(f|=g),l},we=function(l,r){var S=l-r;return f&=~(N|B|g|_),f|=X[S&255],S&256&&(f|=N),me(l,r,S),S&255},Y=function(l,r){var S=l-r;return f&=~(N|B|g|_),(S&65535)===0&&(f|=B),S&32768&&(f|=_),S&65536&&(f|=N),U(l,r,S),S&65535},ne=function(l,r){var S=l+r;return f&=~(_e|N|B|g|_),f|=X[S&255],S&256&&(f|=N),me(l,r,S),(S^l^r)&16&&(f|=_e),S&255},Se=function(l,r){var S=l+r;return f&=~(N|B|g|_),(S&65535)===0&&(f|=B),S&32768&&(f|=_),S&65536&&(f|=N),U(l,r,S),S&65535},J=function(l,r){var S=l+r+(f&N);return f&=~(_e|N|B|g|_),f|=X[S&255],S&256&&(f|=N),me(l,r,S),(S^l^r)&16&&(f|=_e),S&255},le=function(l,r){var S=l-r-(f&N);return f&=~(N|B|g|_),f|=X[S&255],S&256&&(f|=N),me(l,r,S),S&255},Ie=function(l,r){var S=l-r;f&=~(N|B|g|_),f|=X[S&255],S&256&&(f|=N),me(l,r,S)},z=function(l,r){var S=l-r;f&=~(N|B|g|_),(S&65535)===0&&(f|=B),S&32768&&(f|=_),S&65536&&(f|=N),U(l,r,S)},He=function(l){return f&=~(N|B|g|_),l==128&&(f|=g),l=(~l&255)+1,l===0&&(f|=B),l&128&&(f|=_|N),l},re=function(l){return f&=~(B|N|_),l&1&&(f|=N),l>>=1,l===0&&(f|=B),l&255},oe=function(l){return f&=~(B|N|_),l&1&&(f|=N),l=l&128|l>>1,f|=X[l],l},Re=function(l){var r=l;return f&=~(B|N|_|g),l&128&&(f|=N),l<<=1,f|=X[l],(l^r)&128&&(f|=g),l},Be=function(l){var r=l,S=f&N;return f&=~(B|N|_|g),l&128&&(f|=N),l=l<<1|S,f|=X[l],(l^r)&128&&(f|=g),l},Xe=function(l){var r=f&N;return f&=~(B|N|_),l&1&&(f|=N),l=l>>1|r<<7,f|=X[l],l},fe=function(l,r){return f&=~(B|_|g),l^=r,f|=X[l],l},he=function(l,r){return f&=~(B|_|g),l|=r,f|=X[l],l},Ae=function(l,r){return f&=~(B|_|g),l&=r,f|=X[l],l},ze=function(l){return f&=~(B|_|g),l^=255,f|=X[l],f|=N,l},V=function(){return W*256+E()},qe=function(){var l=T,r=null,S=null,q=u,e=E();switch(T+=Ve[e],e){case 0:r=V(),p(r,He(C(r)));break;case 3:r=V(),p(r,ze(C(r)));break;case 4:r=V(),p(r,re(C(r)));break;case 6:r=V(),p(r,Xe(C(r)));break;case 7:r=V(),p(r,oe(C(r)));break;case 8:r=V(),p(r,Re(C(r)));break;case 9:r=V(),p(r,Be(C(r)));break;case 10:r=V(),p(r,O(C(r)));break;case 12:r=V(),p(r,L(C(r)));break;case 13:r=V(),S=C(r),f&=~(B|_|g),f|=X[S];break;case 14:r=V(),u=r;break;case 15:r=V(),p(r,0),f&=~(N|_|g),f|=B;break;case 18:break;case 19:break;case 22:r=ie(k()),u+=r;break;case 23:r=ie(k()),I(u),u+=r;break;case 25:var a=0,P=t&240,Le=t&15;(Le>9||f&32)&&(a|=6),P>128&&Le>9&&(a|=96),(P>144||f&1)&&(a|=96),r=a+t,f&=~(N|_|B|g),r&256&&(f|=N),t=r&255,f|=X[t];break;case 26:f|=E();break;case 28:f&=E();break;case 29:t=n&128?255:0,ee(y()),f&=~g;break;case 30:S=E(),ke(S,!0);break;case 31:S=E(),ke(S,!1);break;case 32:r=ce(E()),u+=r;break;case 33:r=ce(E());break;case 34:r=ce(E()),f&(N|B)||(u+=r);break;case 35:r=ce(E()),f&(N|B)&&(u+=r);break;case 36:r=ce(E()),f&N||(u+=r);break;case 37:r=ce(E()),f&N&&(u+=r);break;case 38:r=ce(E()),f&B||(u+=r);break;case 39:r=ce(E()),f&B&&(u+=r);break;case 40:r=ce(E()),f&g||(u+=r);break;case 41:r=ce(E()),f&g&&(u+=r);break;case 42:r=ce(E()),f&_||(u+=r);break;case 43:r=ce(E()),f&_&&(u+=r);break;case 44:r=ce(E()),f&_^(f&g)<<2||(u+=r);break;case 45:r=ce(E()),f&_^(f&g)<<2&&(u+=r);break;case 46:r=ce(E()),f&_^(f&g)<<2||f&B||(u+=r);break;case 47:r=ce(E()),(f&_^(f&g)<<2||f&B)&&(u+=r);break;case 48:i=Z(),i===0?f|=B:f&=~B;break;case 49:x=Z(),x===0?f|=B:f&=~B;break;case 50:b=Z();break;case 51:o=Z();break;case 52:Ee(E());break;case 53:ye(E());break;case 54:de(E());break;case 55:We(E());break;case 57:u=De();break;case 58:i+=n;break;case 59:f=Fe(),f&R&&(T+=9,t=Fe(),n=Fe(),W=Fe(),i=De(),x=De(),o=De()),u=De();break;case 60:f&=E();break;case 61:r=t*n,r===0?f|=B:f&=~B,r&128?f|=N:f&=~N,ve(r);break;case 63:f|=R,I(u),I(o),I(x),I(i),xe(W),xe(n),xe(t),xe(f),f|=ae|h,u=F(K);break;case 64:t=He(t);break;case 67:t=ze(t);break;case 68:t=re(t);break;case 70:t=Xe(t);break;case 71:t=oe(t);break;case 72:t=Re(t);break;case 73:t=Be(t);break;case 74:t=O(t);break;case 76:t=L(t);break;case 77:f&=~(B|_|g),f|=X[t];break;case 79:t=0,f&=~(_|g|N),f|=B;break;case 80:n=He(n);break;case 83:n=ze(n);break;case 84:n=re(n);break;case 86:n=Xe(n);break;case 87:n=oe(n);break;case 88:n=Re(n);break;case 89:n=Be(n);break;case 90:n=O(n);break;case 92:n=L(n);break;case 93:f&=~(B|_|g),f|=X[n];break;case 95:n=0,f&=~(_|g|N),f|=B;break;case 96:r=Z(),p(r,He(C(r)));break;case 99:r=Z(),p(r,ze(C(r)));break;case 100:r=Z(),p(r,re(C(r)));break;case 102:r=Z(),p(r,Xe(C(r)));break;case 103:r=Z(),p(r,oe(C(r)));break;case 104:r=Z(),p(r,Re(C(r)));break;case 105:r=Z(),p(r,Be(C(r)));break;case 106:r=Z(),p(r,O(C(r)));break;case 108:r=Z(),p(r,L(C(r)));break;case 109:r=Z(),S=C(r),f&=~(B|_|g),f|=X[S];break;case 110:r=Z(),u=r;break;case 111:r=Z(),p(r,0),f&=~(N|_|g),f|=B;break;case 112:r=k(),p(r,He(C(r)));break;case 115:r=k(),p(r,ze(C(r)));break;case 116:r=k(),p(r,re(C(r)));break;case 118:r=k(),p(r,Xe(C(r)));break;case 119:r=k(),p(r,oe(C(r)));break;case 120:r=k(),p(r,Re(C(r)));break;case 121:r=k(),p(r,Be(C(r)));break;case 122:r=k(),p(r,O(C(r)));break;case 124:r=k(),p(r,L(C(r)));break;case 125:r=k(),S=C(r),f&=~(B|_|g),f|=X[S];break;case 126:r=k(),u=r;break;case 127:r=k(),p(r,0),f&=~(N|_|g),f|=B;break;case 128:t=we(t,E());break;case 129:Ie(t,E());break;case 130:t=le(t,E());break;case 131:ve(Y(y(),k()));break;case 132:t=Ae(t,E());break;case 133:Ae(t,E());break;case 134:t=E(),f&=~(B|_|g),f|=X[t];break;case 136:t=fe(t,E());break;case 137:t=J(t,E());break;case 138:t=he(t,E());break;case 139:t=ne(t,E());break;case 140:z(i,k());break;case 141:r=ce(E()),I(u),u+=r;break;case 142:i=k(),ee(i),f&=~g;break;case 144:r=V(),t=we(t,C(r));break;case 145:r=V(),Ie(t,C(r));break;case 146:r=V(),t=le(t,C(r));break;case 147:r=V(),ve(Y(y(),F(r)));break;case 148:r=V(),t=Ae(t,C(r));break;case 149:r=V(),Ae(t,C(r));break;case 150:r=V(),t=C(r),f&=~(B|_|g),f|=X[t];break;case 151:r=V(),p(r,t),f&=~(B|_|g),f|=X[t];break;case 152:r=V(),t=fe(t,C(r));break;case 153:r=V(),t=J(t,C(r));break;case 154:r=V(),t=he(t,C(r));break;case 155:r=V(),t=ne(t,C(r));break;case 156:r=V(),z(i,F(r));break;case 157:r=V(),I(u),u=r;break;case 158:r=V(),i=F(r),ee(i),f&=~g;break;case 159:r=V(),se(r,i),ee(i),f&=~g;break;case 160:r=Z(),t=we(t,C(r));break;case 161:r=Z(),Ie(t,C(r));break;case 162:r=Z(),t=le(t,C(r));break;case 163:r=Z(),ve(Y(y(),F(r)));break;case 164:r=Z(),t=Ae(t,C(r));break;case 165:r=Z(),Ae(t,C(r));break;case 166:r=Z(),t=C(r),f&=~(B|_|g),f|=X[t];break;case 167:r=Z(),p(r,t),f&=~(B|_|g),f|=X[t];break;case 168:r=Z(),t=fe(t,C(r));break;case 169:r=Z(),t=J(t,C(r));break;case 170:r=Z(),t=he(t,C(r));break;case 171:r=Z(),t=ne(t,C(r));break;case 172:r=Z(),z(i,F(r));break;case 173:r=Z(),I(u),u=r;break;case 174:r=Z(),i=F(r),ee(i),f&=~g;break;case 175:r=Z(),se(r,i),ee(i),f&=~g;break;case 176:r=k(),t=we(t,C(r));break;case 177:r=k(),Ie(t,C(r));break;case 178:r=k(),t=le(t,C(r));break;case 179:r=k(),ve(Y(y(),F(r)));break;case 180:r=k(),t=Ae(t,C(r));break;case 181:r=k(),Ae(t,C(r));break;case 182:r=k(),t=C(r),f&=~(B|_|g),f|=X[t];break;case 183:r=k(),p(r,t),f&=~(B|_|g),f|=X[t];break;case 184:r=k(),t=fe(t,C(r));break;case 185:r=k(),t=J(t,C(r));break;case 186:r=k(),t=he(t,C(r));break;case 187:r=k(),t=ne(t,C(r));break;case 188:r=k(),z(i,F(r));break;case 189:r=k(),I(u),u=r;break;case 190:r=k(),i=F(r),ee(i),f&=~g;break;case 191:r=k(),se(r,i),ee(i),f&=~g;break;case 192:n=we(n,E());break;case 193:Ie(n,E());break;case 194:n=le(n,E());break;case 195:ve(Se(y(),k()));break;case 196:n=Ae(n,E());break;case 197:Ae(n,E());break;case 198:n=E(),f&=~(B|_|g),f|=X[n];break;case 200:n=fe(n,E());break;case 201:n=J(n,E());break;case 202:n=he(n,E());break;case 203:n=ne(n,E());break;case 204:r=k(),ve(r),ee(r),f&=~g;break;case 206:o=k(),ee(o),f&=~g;break;case 208:r=V(),n=we(n,C(r));break;case 209:r=V(),Ie(n,C(r));break;case 210:r=V(),n=le(n,C(r));break;case 211:r=V(),ve(Se(y(),F(r)));break;case 212:r=V(),n=Ae(n,C(r));break;case 213:r=V(),Ae(n,C(r));break;case 214:r=V(),n=C(r),f&=~(B|_|g),f|=X[n];break;case 215:r=V(),p(r,n),f&=~(B|_|g),f|=X[n];break;case 216:r=V(),n=fe(n,C(r));break;case 217:r=V(),n=J(n,C(r));break;case 218:r=V(),n=he(n,C(r));break;case 219:r=V(),n=ne(n,C(r));break;case 220:r=V(),S=F(r),ve(S),ee(S),f&=~g;break;case 221:r=V(),se(r,y()),f&=~g;break;case 222:r=V(),o=F(r),ee(o),f&=~g;break;case 223:r=V(),se(r,o),ee(o),f&=~g;break;case 224:r=Z(),n=we(n,C(r));break;case 225:r=Z(),Ie(n,C(r));break;case 226:r=Z(),n=le(n,C(r));break;case 227:r=Z(),ve(Se(y(),F(r)));break;case 228:r=Z(),n=Ae(n,C(r));break;case 229:r=Z(),Ae(n,C(r));break;case 230:r=Z(),n=C(r),f&=~(B|_|g),f|=X[n];break;case 231:r=Z(),p(r,n),f&=~(B|_|g),f|=X[n];break;case 232:r=Z(),n=fe(n,C(r));break;case 233:r=Z(),n=J(n,C(r));break;case 234:r=Z(),n=he(n,C(r));break;case 235:r=Z(),n=ne(n,C(r));break;case 236:r=Z(),S=F(r),ve(S),ee(S),f&=~g;break;case 237:r=Z(),se(r,y()),f&=~g;break;case 238:r=Z(),o=F(r),ee(o),f&=~g;break;case 239:r=Z(),se(r,o),ee(o),f&=~g;break;case 240:r=k(),n=we(n,C(r));break;case 241:r=k(),Ie(n,C(r));break;case 242:r=k(),n=le(n,C(r));break;case 243:r=k(),ve(Se(y(),F(r)));break;case 244:r=k(),n=Ae(n,C(r));break;case 245:r=k(),Ae(n,C(r));break;case 246:r=k(),n=C(r),f&=~(B|_|g),f|=X[n];break;case 247:r=k(),p(r,n),f&=~(B|_|g),f|=X[n];break;case 248:r=k(),n=fe(n,C(r));break;case 249:r=k(),n=J(n,C(r));break;case 250:r=k(),n=he(n,C(r));break;case 251:r=k(),n=ne(n,C(r));break;case 252:r=k(),S=F(r),ve(S),ee(S),f&=~g;break;case 253:r=k(),se(r,y()),f&=~g;break;case 254:r=k(),o=F(r),ee(o),f&=~g;break;case 255:r=k(),se(r,o),ee(o),f&=~g;break;case 16:switch(e=E(),T+=M[e],e){case 33:r=ie(k());break;case 34:r=ie(k()),f&(N|B)||(u+=r);break;case 35:r=ie(k()),f&(N|B)&&(u+=r);break;case 36:r=ie(k()),f&N||(u+=r);break;case 37:r=ie(k()),f&N&&(u+=r);break;case 38:r=ie(k()),f&B||(u+=r);break;case 39:r=ie(k()),f&B&&(u+=r);break;case 40:r=ie(k()),f&g||(u+=r);break;case 41:r=ie(k()),f&g&&(u+=r);break;case 42:r=ie(k()),f&_||(u+=r);break;case 43:r=ie(k()),f&_&&(u+=r);break;case 44:r=ie(k()),f&_^(f&g)<<2||(u+=r);break;case 45:r=ie(k()),f&_^(f&g)<<2&&(u+=r);break;case 46:r=ie(k()),f&_^(f&g)<<2||f&B||(u+=r);break;case 47:r=ie(k()),(f&_^(f&g)<<2||f&B)&&(u+=r);break;case 63:f|=R,I(u),I(o),I(x),I(i),xe(W),xe(n),xe(t),xe(f),f|=ae|h,u=F(ue);break;case 131:z(y(),k());break;case 140:z(x,k());break;case 142:x=k(),ee(x),f&=~g;break;case 147:r=V(),z(y(),F(r));break;case 156:r=V(),z(x,F(r));break;case 158:r=V(),x=F(r),ee(x),f&=~g;break;case 159:r=V(),se(r,x),ee(x),f&=~g;break;case 163:r=Z(),z(y(),F(r));break;case 172:r=Z(),z(x,F(r));break;case 174:r=Z(),x=F(r),ee(x),f&=~g;break;case 175:r=Z(),se(r,x),ee(x),f&=~g;break;case 179:r=k(),z(y(),F(r));break;case 188:r=k(),z(x,F(r));break;case 190:r=k(),x=F(r),ee(x),f&=~g;break;case 191:r=k(),se(r,x),ee(x),f&=~g;break;case 206:b=k(),ee(b),f&=~g;break;case 222:r=V(),b=F(r),ee(b),f&=~g;break;case 223:r=V(),se(r,b),ee(b),f&=~g;break;case 238:r=Z(),b=F(r),ee(b),f&=~g;break;case 239:r=Z(),se(r,b),ee(b),f&=~g;break;case 254:r=k(),b=F(r),ee(b),f&=~g;break;case 255:r=k(),se(r,b),ee(b),f&=~g;break}break;case 17:switch(e=E(),T+=M[e],e){case 63:f|=R,I(u),I(o),I(x),I(i),xe(W),xe(n),xe(t),xe(f),f|=ae|h,u=F(Ne);break;case 131:z(o,k());break;case 140:z(b,k());break;case 147:r=V(),z(o,F(r));break;case 156:r=V(),z(b,F(r));break;case 163:r=Z(),z(o,F(r));break;case 172:r=Z(),z(b,F(r));break;case 179:r=k(),z(o,F(r));break;case 188:r=k(),z(b,F(r));break}break}return t&=255,n&=255,f&=255,W&=255,i&=65535,x&=65535,o&=65535,b&=65535,u&=65535,T-l},je=function(){u=F(te),W=0,f|=h|ae,T=0,t=n=W=i=x=o=b=0},Ge=[[2,1,"NEG"],[1,0,"???"],[1,0,"???"],[2,1,"COM"],[2,1,"LSR"],[1,0,"???"],[2,1,"ROR"],[2,1,"ASR"],[2,1,"LSL"],[2,1,"ROL"],[2,1,"DEC"],[1,0,"???"],[2,1,"INC"],[2,1,"TST"],[2,1,"JMP"],[2,1,"CLR"],[1,0,"Prefix"],[1,0,"Prefix"],[1,2,"NOP"],[1,2,"SYNC"],[1,0,"???"],[1,0,"???"],[3,3,"LBRA"],[3,3,"LBSR"],[1,0,"???"],[1,2,"DAA"],[2,4,"ORCC"],[1,0,"???"],[2,4,"ANDCC"],[1,2,"SEX"],[2,20,"EXG"],[2,20,"TFR"],[2,5,"BRA"],[2,5,"BRN"],[2,5,"BHI"],[2,5,"BLS"],[2,5,"BCC"],[2,5,"BCS"],[2,5,"BNE"],[2,5,"BEQ"],[2,5,"BVC"],[2,5,"BVS"],[2,5,"BPL"],[2,5,"BMI"],[2,5,"BGE"],[2,5,"BLT"],[2,5,"BGT"],[2,5,"BLE"],[2,6,"LEAX"],[2,6,"LEAY"],[2,6,"LEAS"],[2,6,"LEAU"],[2,10,"PSHS"],[2,10,"PULS"],[2,11,"PSHU"],[2,11,"PULU"],[1,0,"???"],[1,2,"RTS"],[1,2,"ABX"],[1,2,"RTI"],[2,2,"CWAI"],[1,2,"MUL"],[1,2,"RESET"],[1,2,"SWI1"],[1,2,"NEGA"],[1,0,"???"],[1,0,"???"],[1,2,"COMA"],[1,2,"LSRA"],[1,0,"???"],[1,2,"RORA"],[1,2,"ASRA"],[1,2,"ASLA"],[1,2,"ROLA"],[1,2,"DECA"],[1,0,"???"],[1,2,"INCA"],[1,2,"TSTA"],[1,0,"???"],[1,2,"CLRA"],[1,2,"NEGB"],[1,0,"???"],[1,0,"???"],[1,2,"COMB"],[1,2,"LSRB"],[1,0,"???"],[1,2,"RORB"],[1,2,"ASRB"],[1,2,"ASLB"],[1,2,"ROLB"],[1,2,"DECB"],[1,0,"???"],[1,2,"INCB"],[1,2,"TSTB"],[1,0,"???"],[1,2,"CLRB"],[2,6,"NEG"],[1,0,"???"],[1,0,"???"],[2,6,"COM"],[2,6,"LSR"],[1,0,"???"],[2,6,"ROR"],[2,6,"ASR"],[2,6,"LSL"],[2,6,"ROL"],[2,6,"DEC"],[1,0,"???"],[2,6,"INC"],[2,6,"TST"],[2,6,"JMP"],[2,6,"CLR"],[3,7,"NEG"],[1,0,"???"],[1,0,"???"],[3,7,"COM"],[3,7,"LSR"],[1,0,"???"],[3,7,"ROR"],[3,7,"ASR"],[3,7,"LSL"],[3,7,"ROL"],[3,7,"DEC"],[1,0,"???"],[3,7,"INC"],[3,7,"TST"],[3,7,"JMP"],[3,7,"CLR"],[2,4,"SUBA"],[2,4,"CMPA"],[2,4,"SBCA"],[3,8,"SUBD"],[2,4,"ANDA"],[2,4,"BITA"],[2,4,"LDA"],[1,0,"???"],[2,4,"EORA"],[2,4,"ADCA"],[2,4,"ORA"],[2,4,"ADDA"],[3,8,"CMPX"],[2,5,"BSR"],[3,8,"LDX"],[1,0,"???"],[2,1,"SUBA"],[2,1,"CMPA"],[2,1,"SBCA"],[2,1,"SUBd"],[2,1,"ANDA"],[2,1,"BITA"],[2,1,"LDA"],[2,1,"STA"],[2,1,"EORA"],[2,1,"ADCA"],[2,1,"ORA"],[2,1,"ADDA"],[2,1,"CMPX"],[2,1,"JSR"],[2,1,"LDX"],[2,1,"STX"],[2,6,"SUBA"],[2,6,"CMPA"],[2,6,"SBCA"],[2,6,"SUBD"],[2,6,"ANDA"],[2,6,"BITA"],[2,6,"LDA"],[2,6,"STA"],[2,6,"EORA"],[2,6,"ADCA"],[2,6,"ORA"],[2,6,"ADDA"],[2,6,"CMPX"],[2,6,"JSR"],[2,6,"LDX"],[2,6,"STX"],[3,7,"SUBA"],[3,7,"CMPA"],[3,7,"SBCA"],[3,7,"SUBD"],[3,7,"ANDA"],[3,7,"BITA"],[3,7,"LDA"],[3,7,"STA"],[3,7,"EORA"],[3,7,"ADCA"],[3,7,"ORA"],[3,7,"ADDA"],[3,7,"CMPX"],[3,7,"JSR"],[3,7,"LDX"],[3,7,"STX"],[2,4,"SUBB"],[2,4,"CMPB"],[2,4,"SBCB"],[3,8,"ADDD"],[2,4,"ANDB"],[2,4,"BITB"],[2,4,"LDB"],[1,0,"???"],[2,4,"EORB"],[2,4,"ADCB"],[2,4,"ORB"],[2,4,"ADDB"],[3,8,"LDD"],[1,0,"???"],[3,8,"LDU"],[1,0,"???"],[2,1,"SUBB"],[2,1,"CMPB"],[2,1,"SBCB"],[2,1,"ADDD"],[2,1,"ANDB"],[2,1,"BITB"],[2,1,"LDB"],[2,1,"STB"],[2,1,"EORB"],[2,1,"ADCB"],[2,1,"ORB "],[2,1,"ADDB"],[2,1,"LDD "],[2,1,"STD "],[2,1,"LDU "],[2,1,"STU "],[2,6,"SUBB"],[2,6,"CMPB"],[2,6,"SBCB"],[2,6,"ADDD"],[2,6,"ANDB"],[2,6,"BITB"],[2,6,"LDB"],[2,6,"STB"],[2,6,"EORB"],[2,6,"ADCB"],[2,6,"ORB"],[2,6,"ADDB"],[2,6,"LDD"],[2,6,"STD"],[2,6,"LDU"],[2,6,"STU"],[3,7,"SUBB"],[3,7,"CMPB"],[3,7,"SBCB"],[3,7,"ADDD"],[3,7,"ANDB"],[3,7,"BITB"],[3,7,"LDB"],[3,7,"STB"],[3,7,"EORB"],[3,7,"ADCB"],[3,7,"ORB"],[3,7,"ADDB"],[3,7,"LDD"],[3,7,"STD"],[3,7,"LDU"],[3,7,"STU"]],v={63:[2,2,"SWI3"],131:[4,8,"CMPU"],140:[4,8,"CMPS"],147:[3,1,"CMPU"],156:[3,1,"CMPS"],163:[3,6,"CMPU"],172:[3,6,"CMPS"],179:[4,7,"CMPU"],188:[4,7,"CMPS"]},D={33:[5,3,"LBRN"],34:[5,3,"LBHI"],35:[5,3,"LBLS"],36:[5,3,"LBCC"],37:[5,3,"LBCS"],38:[5,3,"LBNE"],39:[5,3,"LBEQ"],40:[5,3,"LBVC"],41:[5,3,"LBVS"],42:[5,3,"LBPL"],43:[5,3,"LBMI"],44:[5,3,"LBGE"],45:[5,3,"LBLT"],46:[5,3,"LBGT"],47:[5,3,"LBLE"],63:[2,2,"SWI2"],131:[4,8,"CMPD"],140:[4,8,"CMPY"],142:[4,8,"LDY"],147:[3,1,"CMPD"],156:[3,1,"CMPY"],158:[3,1,"LDY"],159:[3,1,"STY"],163:[3,6,"CMPD"],172:[3,6,"CMPY"],174:[3,6,"LDY"],175:[3,6,"STY"],179:[4,7,"CMPD"],188:[4,7,"CMPY"],190:[4,7,"LDY"],191:[4,7,"STY"],206:[4,8,"LDS"],222:[3,1,"LDS"],223:[3,1,"STS"],238:[3,6,"LDS"],239:[3,6,"STS"],254:[4,7,"LDS"],255:[4,7,"STS"]},w=function(l,r,S,q,e,a){var P=function(x0,nt){for(var P0=x0.toString(16);P0.length>5];if(!(u0&128)){var S0=u0&31;S0>15&&(S0=S0-32),G+=S0+","+Me;break}var tt=u0&16,Z0=u0&15,g0=S>127?S-256:S,p0=S*256+q>32767?S*256+q-65536:S*256+q;if(tt)switch(Z0){case 0:G+="???";break;case 1:G+="[,"+Me+"++]";break;case 2:G+="???";break;case 3:G+="[,--"+Me+"]";break;case 4:G+="[,"+Me+"]";break;case 5:G+="[B,"+Me+"]";break;case 6:G+="[A,"+Me+"]";break;case 7:G+="???";break;case 8:G+="["+g0+","+Me+"]",Ke++;break;case 9:G+="["+p0+","+Me+"]",Ke+=2;break;case 10:G+="???";break;case 11:G+="[D,"+Me+"]";break;case 12:G+="["+g0+",PC]",Ke++;break;case 13:G+="["+p0+",PC]",Ke+=2;break;case 14:G+="???";break;case 15:G+="[$"+$e(S*256+q)+"]",Ke+=2;break}else switch(Z0){case 0:G+=","+Me+"+";break;case 1:G+=","+Me+"++";break;case 2:G+=",-"+Me;break;case 3:G+=",--"+Me;break;case 4:G+=","+Me;break;case 5:G+="B,"+Me;break;case 6:G+="A,"+Me;break;case 7:G+="???";break;case 8:G+=g0+","+Me,Ke++;break;case 9:G+=p0+","+Me,Ke+=2;break;case 10:G+="???";break;case 11:G+="D,"+Me;break;case 12:G+=g0+",PC",Ke++;break;case 13:G+=p0+",PC",Ke+=2;break;case 14:G+="???";break;case 15:G+="$"+$e(S*256+q),Ke+=2;break}break;case 7:G+=" $"+$e(r*256+S);break;case 8:G+=" #$"+$e(r*256+S);break;case 10:for(Oe=["PC","U","Y","X","DP","B","A","CC"],n0=[],Qe=0;Qe<8;Qe++)(r&1)!==0&&n0.push(Oe[7-Qe]),r>>=1;G+=" "+n0.join(",");break;case 11:for(Oe=["PC","S","Y","X","DP","B","A","CC"],n0=[],Qe=0;Qe<8;Qe++)(r&1)!==0&&n0.push(Oe[7-Qe]),r>>=1;G+=" "+n0.join(",");break;case 20:Oe=["D","X","Y","U","S","PC","?","?","A","B","CC","DP","?","?","?","?"],G+=" "+Oe[r>>4]+","+Oe[r&15];break}return{line:G,nbytes:Ke}};return{steps:function(l){for(;l>0;)l-=qe()},runFrame:function(l){for(;T>S;q===0?l+=r[S].toLowerCase():l+=r[S]}return l},disasm:w,isStable:function(){return!0}}}var vt=function(){var d=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){n&&(ae++,h[ae]())},this.connectBus=function(m){t=m},this.setRDY=function(m){n=m},this.isRDY=function(){return n},this.reset=function(){g=1,ae=-1,h=[U],i=t.read(T)|t.read(T+1)<<8,this.setRDY(!0)};var t,n=!1,i=0,x=0,o=0,b=0,u=0,f=0,W=0,N=0,g=0,B=0,_=0,ae=-1,_e=-1,h,R=0,te=0,H=0,K=!1,s=0,c=0,ue=0;let Ne=65530,T=65532,pe=65534,p=0,C=1,Ve=7,M=6,X=1,me=0;this.debug=!1,this.trace=!1;var U=function(){_e=t.read(i),h=a[_e],ae=0,i++},y=U,ve=function(){t.read(i)},xe=function(){c=t.read(i),i++},I=function(){te=t.read(i),i++},Ue=function(){te|=t.read(i)<<8,i++},Ye=function(){te=t.read(H)},Fe=function(){te|=t.read(H)<<8},De=function(){H=t.read(i),i++},Q=function(){H|=t.read(i)<<8,i++},be=function(){H=t.read(s)},Ee=function(){H|=t.read(s)<<8},de=function(){var m=(H&255)+b;K=m>255,H=H&65280|m&255},ye=function(){var m=(H&255)+u;K=m>255,H=H&65280|m&255},We=function(){var m=(H&255)+1;K=m>255,H=H&65280|m&255},Ze=function(){K&&(H=H+256&65535)},Te=function(){s=t.read(i),i++},ke=function(){s|=t.read(i)<<8,i++},ce=function(){var m=(s&255)+1;s=s&65280|m&255},ie=function(){R=t.read(i),i++},E=function(){R=t.read(te)},k=function(){R=t.read(H)},F=function(){t.write(te,R)},se=function(){t.write(H,R)},Z=function(){var m=i&255,A=m+c&255;c>127?ue=A>m?-256:0:ue=A>>7,W=m>>>6&1,N=m>>>3&1,g=m>>>2&1,B=m>>>1&1,_=m&1},z=function(m){d.debug&&d.breakpoint("Illegal Opcode: "+m)},He=function(){z("KIL/HLT/JAM");let m=i-1&65535;throw new z0(`CPU executed halt instruction ($${$(_e,2)}) at $${$(m,4)}`)},re=function(m){return[U,ve,function(){m(),y()}]},oe=function(m){return[U,ie,function(){m(),y()}]},Re=function(m){return[U,I,E,function(){m(),y()}]},Be=function(m){return[U,I,Ue,E,function(){m(),y()}]},Xe=function(m){return[U,De,k,function(){de(),Ye()},function(){We(),Fe()},E,function(){m(),y()}]},fe=function(m){var A=m===p?de:ye;return function(j){return[U,De,Q,function(){A(),k(),Ze()},function(){K?k():(j(),y())},function(){j(),y()}]}},he=function(m){var A=m===p?de:ye;return function(j){return[U,De,k,function(){A(),k()},function(){j(),y()}]}},Ae=function(m){return[U,Te,be,function(){ce(),Ee()},function(){ye(),k(),Ze()},function(){K?k():(m(),y())},function(){m(),y()}]},ze=function(m){return[U,I,function(){m(),F()},y]},V=function(m){return[U,I,Ue,function(){m(),F()},y]},qe=function(m){return[U,De,k,function(){de(),Ye()},function(){We(),Fe()},function(){m(),F()},y]},je=function(m){var A=m===p?de:ye;return function(j){return[U,De,Q,function(){A(),k(),Ze()},function(){j(),se()},y]}},Ge=function(m){var A=m===p?de:ye;return function(j){return[U,De,k,function(){A(),j(),se()},y]}},v=function(m){return[U,Te,be,function(){ce(),Ee()},function(){ye(),k(),Ze()},function(){m(),se()},y]},D=function(m){return[U,I,E,F,function(){m(),F()},y]},w=function(m){return[U,I,Ue,E,F,function(){m(),F()},y]},l=function(m){var A=m===p?de:ye;return function(j){return[U,De,k,function(){A(),k()},se,function(){j(),se()},y]}},r=function(m){var A=m===p?de:ye;return function(j){return[U,De,Q,function(){A(),k(),Ze()},k,se,function(){j(),se()},y]}},S=function(m){return[U,De,k,function(){de(),Ye()},function(){We(),Fe()},E,F,function(){m(),F()},y]},q=function(m){return[U,Te,be,function(){ce(),Ee()},function(){ye(),k(),Ze()},k,se,function(){m(),se()},y]},e=new Array(256),a=new Array(256);e[0]="BRK",a[0]=Sn(),e[1]="ORA",a[1]=c0(Xe),e[2]="uKIL",a[2]=Je(),e[3]="uSLO",a[3]=A0(S),e[4]="uNOP",a[4]=Pe(Re),e[5]="ORA",a[5]=c0(Re),e[6]="ASL",a[6]=F0(D),e[7]="uSLO",a[7]=A0(D),e[8]="PHP",a[8]=hn(),e[9]="ORA",a[9]=c0(oe),e[10]="ASL",a[10]=P(),e[11]="uANC",a[11]=Dt(oe),e[12]="uNOP",a[12]=Pe(Be),e[13]="ORA",a[13]=c0(Be),e[14]="ASL",a[14]=F0(w),e[15]="uSLO",a[15]=A0(w),e[16]="BPL",a[16]=o0(Ve,0),e[17]="ORA",a[17]=c0(Ae),e[18]="uKIL",a[18]=Je(),e[19]="uSLO",a[19]=A0(q),e[20]="uNOP",a[20]=Pe(he(p)),e[21]="ORA",a[21]=c0(he(p)),e[22]="ASL",a[22]=F0(l(p)),e[23]="uSLO",a[23]=A0(l(p)),e[24]="CLC",a[24]=Le(),e[25]="ORA",a[25]=c0(fe(C)),e[26]="uNOP",a[26]=Pe(re),e[27]="uSLO",a[27]=A0(r(C)),e[28]="uNOP",a[28]=Pe(fe(p)),e[29]="ORA",a[29]=c0(fe(p)),e[30]="ASL",a[30]=F0(r(p)),e[31]="uSLO",a[31]=A0(r(p)),e[32]="JSR",a[32]=vn(),e[33]="AND",a[33]=a0(Xe),e[34]="uKIL",a[34]=Je(),e[35]="uRLA",a[35]=d0(S),e[36]="BIT",a[36]=Rt(Re),e[37]="AND",a[37]=a0(Re),e[38]="ROL",a[38]=H0(D),e[39]="uRLA",a[39]=d0(D),e[40]="PLP",a[40]=Cn(),e[41]="AND",a[41]=a0(oe),e[42]="ROL",a[42]=Me(),e[43]="uANC",a[43]=Dt(oe),e[44]="BIT",a[44]=Rt(Be),e[45]="AND",a[45]=a0(Be),e[46]="ROL",a[46]=H0(w),e[47]="uRLA",a[47]=d0(w),e[48]="BMI",a[48]=o0(Ve,1),e[49]="AND",a[49]=a0(Ae),e[50]="uKIL",a[50]=Je(),e[51]="uRLA",a[51]=d0(q),e[52]="uNOP",a[52]=Pe(he(p)),e[53]="AND",a[53]=a0(he(p)),e[54]="ROL",a[54]=H0(l(p)),e[55]="uRLA",a[55]=d0(l(p)),e[56]="SEC",a[56]=tt(),e[57]="AND",a[57]=a0(fe(C)),e[58]="uNOP",a[58]=Pe(re),e[59]="uRLA",a[59]=d0(r(C)),e[60]="uNOP",a[60]=Pe(fe(p)),e[61]="AND",a[61]=a0(fe(p)),e[62]="ROL",a[62]=H0(r(p)),e[63]="uRLA",a[63]=d0(r(p)),e[64]="RTI",a[64]=Pn(),e[65]="EOR",a[65]=f0(Xe),e[66]="uKIL",a[66]=Je(),e[67]="uSRE",a[67]=C0(S),e[68]="uNOP",a[68]=Pe(Re),e[69]="EOR",a[69]=f0(Re),e[70]="LSR",a[70]=X0(D),e[71]="uSRE",a[71]=C0(D),e[72]="PHA",a[72]=dn(),e[73]="EOR",a[73]=f0(oe),e[74]="LSR",a[74]=G(),e[75]="uASR",a[75]=cn(oe),e[76]="JMP",a[76]=kn(),e[77]="EOR",a[77]=f0(Be),e[78]="LSR",a[78]=X0(w),e[79]="uSRE",a[79]=C0(w),e[80]="BVC",a[80]=o0(M,0),e[81]="EOR",a[81]=f0(Ae),e[82]="uKIL",a[82]=Je(),e[83]="uSRE",a[83]=C0(q),e[84]="uNOP",a[84]=Pe(he(p)),e[85]="EOR",a[85]=f0(he(p)),e[86]="LSR",a[86]=X0(l(p)),e[87]="uSRE",a[87]=C0(l(p)),e[88]="CLI",a[88]=Oe(),e[89]="EOR",a[89]=f0(fe(C)),e[90]="uNOP",a[90]=Pe(re),e[91]="uSRE",a[91]=C0(r(C)),e[92]="uNOP",a[92]=Pe(fe(p)),e[93]="EOR",a[93]=f0(fe(p)),e[94]="LSR",a[94]=X0(r(p)),e[95]="uSRE",a[95]=C0(r(p)),e[96]="RTS",a[96]=_n(),e[97]="ADC",a[97]=r0(Xe),e[98]="uKIL",a[98]=Je(),e[99]="uRRA",a[99]=h0(S),e[100]="uNOP",a[100]=Pe(Re),e[101]="ADC",a[101]=r0(Re),e[102]="ROR",a[102]=V0(D),e[103]="uRRA",a[103]=h0(D),e[104]="PLA",a[104]=An(),e[105]="ADC",a[105]=r0(oe),e[106]="ROR",a[106]=S0(),e[107]="uARR",a[107]=sn(oe),e[108]="JMP",a[108]=wn(),e[109]="ADC",a[109]=r0(Be),e[110]="ROR",a[110]=V0(w),e[111]="uRRA",a[111]=h0(w),e[112]="BVS",a[112]=o0(M,1),e[113]="ADC",a[113]=r0(Ae),e[114]="uKIL",a[114]=Je(),e[115]="uRRA",a[115]=h0(q),e[116]="uNOP",a[116]=Pe(he(p)),e[117]="ADC",a[117]=r0(he(p)),e[118]="ROR",a[118]=V0(l(p)),e[119]="uRRA",a[119]=h0(l(p)),e[120]="SEI",a[120]=g0(),e[121]="ADC",a[121]=r0(fe(C)),e[122]="uNOP",a[122]=Pe(re),e[123]="uRRA",a[123]=h0(r(C)),e[124]="uNOP",a[124]=Pe(fe(p)),e[125]="ADC",a[125]=r0(fe(p)),e[126]="ROR",a[126]=V0(r(p)),e[127]="uRRA",a[127]=h0(r(p)),e[128]="uNOP",a[128]=Pe(oe),e[129]="STA",a[129]=l0(qe),e[130]="uNOP",a[130]=Pe(oe),e[131]="uSAX",a[131]=M0(qe),e[132]="STY",a[132]=ft(ze),e[133]="STA",a[133]=l0(ze),e[134]="STX",a[134]=it(ze),e[135]="uSAX",a[135]=M0(ze),e[136]="DEY",a[136]=e0(),e[137]="uNOP",a[137]=Pe(oe),e[138]="TXA",a[138]=P0(),e[139]="uANE",a[139]=fn(oe),e[140]="STY",a[140]=ft(V),e[141]="STA",a[141]=l0(V),e[142]="STX",a[142]=it(V),e[143]="uSAX",a[143]=M0(V),e[144]="BCC",a[144]=o0(me,0),e[145]="STA",a[145]=l0(v),e[146]="uKIL",a[146]=Je(),e[147]="uSHA",a[147]=Bt(v),e[148]="STY",a[148]=ft(Ge(p)),e[149]="STA",a[149]=l0(Ge(p)),e[150]="STX",a[150]=it(Ge(C)),e[151]="uSAX",a[151]=M0(Ge(C)),e[152]="TYA",a[152]=an(),e[153]="STA",a[153]=l0(je(C)),e[154]="TXS",a[154]=rn(),e[155]="uSHS",a[155]=ln(je(C)),e[156]="uSHY",a[156]=bn(je(p)),e[157]="STA",a[157]=l0(je(p)),e[158]="uSHX",a[158]=mn(je(C)),e[159]="uSHA",a[159]=Bt(je(C)),e[160]="LDY",a[160]=D0(oe),e[161]="LDA",a[161]=s0(Xe),e[162]="LDX",a[162]=R0(oe),e[163]="uLAX",a[163]=_0(Xe),e[164]="LDY",a[164]=D0(Re),e[165]="LDA",a[165]=s0(Re),e[166]="LDX",a[166]=R0(Re),e[167]="uLAX",a[167]=_0(Re),e[168]="TAY",a[168]=x0(),e[169]="LDA",a[169]=s0(oe),e[170]="TAX",a[170]=p0(),e[171]="uLXA",a[171]=un(oe),e[172]="LDY",a[172]=D0(Be),e[173]="LDA",a[173]=s0(Be),e[174]="LDX",a[174]=R0(Be),e[175]="uLAX",a[175]=_0(Be),e[176]="BCS",a[176]=o0(me,1),e[177]="LDA",a[177]=s0(Ae),e[178]="uKIL",a[178]=Je(),e[179]="uLAX",a[179]=_0(Ae),e[180]="LDY",a[180]=D0(he(p)),e[181]="LDA",a[181]=s0(he(p)),e[182]="LDX",a[182]=R0(he(C)),e[183]="uLAX",a[183]=_0(he(C)),e[184]="CLV",a[184]=n0(),e[185]="LDA",a[185]=s0(fe(C)),e[186]="TSX",a[186]=nt(),e[187]="uLAS",a[187]=on(fe(C)),e[188]="LDY",a[188]=D0(fe(p)),e[189]="LDA",a[189]=s0(fe(p)),e[190]="LDX",a[190]=R0(fe(C)),e[191]="uLAX",a[191]=_0(fe(C)),e[192]="CPY",a[192]=at(oe),e[193]="CMP",a[193]=i0(Xe),e[194]="uNOP",a[194]=Pe(oe),e[195]="uDCP",a[195]=m0(S),e[196]="CPY",a[196]=at(Re),e[197]="CMP",a[197]=i0(Re),e[198]="DEC",a[198]=T0(D),e[199]="uDCP",a[199]=m0(D),e[200]="INY",a[200]=et(),e[201]="CMP",a[201]=i0(oe),e[202]="DEX",a[202]=Qe(),e[203]="uSBX",a[203]=xn(oe),e[204]="CPY",a[204]=at(Be),e[205]="CMP",a[205]=i0(Be),e[206]="DEC",a[206]=T0(w),e[207]="uDCP",a[207]=m0(w),e[208]="BNE",a[208]=o0(X,0),e[209]="CMP",a[209]=i0(Ae),e[210]="uKIL",a[210]=Je(),e[211]="uDCP",a[211]=m0(q),e[212]="uNOP",a[212]=Pe(he(p)),e[213]="CMP",a[213]=i0(he(p)),e[214]="DEC",a[214]=T0(l(p)),e[215]="uDCP",a[215]=m0(l(p)),e[216]="CLD",a[216]=$e(),e[217]="CMP",a[217]=i0(fe(C)),e[218]="uNOP",a[218]=Pe(re),e[219]="uDCP",a[219]=m0(r(C)),e[220]="uNOP",a[220]=Pe(fe(p)),e[221]="CMP",a[221]=i0(fe(p)),e[222]="DEC",a[222]=T0(r(p)),e[223]="uDCP",a[223]=m0(r(p)),e[224]="CPX",a[224]=rt(oe),e[225]="SBC",a[225]=t0(Xe),e[226]="uNOP",a[226]=Pe(oe),e[227]="uISB",a[227]=b0(S),e[228]="CPX",a[228]=rt(Re),e[229]="SBC",a[229]=t0(Re),e[230]="INC",a[230]=U0(D),e[231]="uISB",a[231]=b0(D),e[232]="INX",a[232]=Ke(),e[233]="SBC",a[233]=t0(oe),e[234]="NOP",a[234]=u0(),e[235]="SBC",a[235]=t0(oe),e[236]="CPX",a[236]=rt(Be),e[237]="SBC",a[237]=t0(Be),e[238]="INC",a[238]=U0(w),e[239]="uISB",a[239]=b0(w),e[240]="BEQ",a[240]=o0(X,1),e[241]="SBC",a[241]=t0(Ae),e[242]="uKIL",a[242]=Je(),e[243]="uISB",a[243]=b0(q),e[244]="uNOP",a[244]=Pe(he(p)),e[245]="SBC",a[245]=t0(he(p)),e[246]="INC",a[246]=U0(l(p)),e[247]="uISB",a[247]=b0(l(p)),e[248]="SED",a[248]=Z0(),e[249]="SBC",a[249]=t0(fe(C)),e[250]="uNOP",a[250]=Pe(re),e[251]="uISB",a[251]=b0(r(C)),e[252]="uNOP",a[252]=Pe(fe(p)),e[253]="SBC",a[253]=t0(fe(p)),e[254]="INC",a[254]=U0(r(p)),e[255]="uISB",a[255]=b0(r(p));function P(){return re(function(){Y(o>127),o=o<<1&255,L(o),O(o)})}function Le(){return re(function(){_=0})}function $e(){return re(function(){N=0})}function Oe(){return re(function(){g=0})}function n0(){return re(function(){W=0})}function Qe(){return re(function(){b=b-1&255,L(b),O(b)})}function e0(){return re(function(){u=u-1&255,L(u),O(u)})}function Ke(){return re(function(){b=b+1&255,L(b),O(b)})}function et(){return re(function(){u=u+1&255,L(u),O(u)})}function G(){return re(function(){_=o&1,o>>>=1,L(o),f=0})}function u0(){return re(function(){})}function Me(){return re(function(){var m=o>127;o=(o<<1|_)&255,Y(m),L(o),O(o)})}function S0(){return re(function(){var m=o&1;o=o>>>1|_<<7,Y(m),L(o),O(o)})}function tt(){return re(function(){_=1})}function Z0(){return re(function(){N=1})}function g0(){return re(function(){g=1})}function p0(){return re(function(){b=o,L(b),O(b)})}function x0(){return re(function(){u=o,L(u),O(u)})}function nt(){return re(function(){b=x,L(b),O(b)})}function P0(){return re(function(){o=b,L(o),O(o)})}function rn(){return re(function(){x=b})}function an(){return re(function(){o=u,L(o),O(o)})}function Je(){return[U,function(){He()},function(){ae--}]}function Pe(m){return m(function(){z("NOP/DOP")})}function r0(m){return m(function(){if(N){var A=R,j=(o&15)+(A&15)+_;j>9&&(j+=6);var ge=(o>>4)+(A>>4)+(j>15?1:0)<<4;L(o+A+_&255),O(ge),we((o^ge)&~(o^A)&128),ge>159&&(ge+=96),Y(ge>255),o=(ge|j&15)&255}else{var Ce=o+R+_;Y(Ce>255),we((o^Ce)&(R^Ce)&128),o=Ce&255,L(o),O(o)}})}function a0(m){return m(function(){o&=R,L(o),O(o)})}function Rt(m){return m(function(){var A=R;L(o&A),we(A&64),O(A)})}function i0(m){return m(function(){var A=o-R&255;Y(o>=R),L(A),O(A)})}function rt(m){return m(function(){var A=b-R&255;Y(b>=R),L(A),O(A)})}function at(m){return m(function(){var A=u-R&255;Y(u>=R),L(A),O(A)})}function f0(m){return m(function(){o^=R,L(o),O(o)})}function s0(m){return m(function(){o=R,L(o),O(o)})}function R0(m){return m(function(){b=R,L(b),O(b)})}function D0(m){return m(function(){u=R,L(u),O(u)})}function c0(m){return m(function(){o|=R,L(o),O(o)})}function t0(m){return m(function(){if(N){var A=R,j=(o&15)-(A&15)-(1-_),ge=(o>>4)-(A>>4)-(j<0?1:0);j<0&&(j-=6),ge<0&&(ge-=6);var Ce=o-A-(1-_);Y(~Ce&256),we((o^A)&(o^Ce)&128),L(Ce&255),O(Ce),o=(ge<<4|j&15)&255}else A=~R&255,Ce=o+A+_,Y(Ce>255),we((o^Ce)&(A^Ce)&128),o=Ce&255,L(o),O(o)})}function Dt(m){return m(function(){z("ANC"),o&=R,L(o),f=_=o&128?1:0})}function fn(m){return m(function(){z("ANE")})}function sn(m){return m(function(){z("ARR");var A=o&R,j=_?128:0;A=A>>>1|j,o=A,L(A),O(A);var ge=o&96;ge==96?(_=1,W=0):ge==0?(_=0,W=0):ge==32?(_=0,W=1):ge==64&&(_=1,W=1)})}function cn(m){return m(function(){z("ASR");var A=o&R;_=A&1,A=A>>>1,o=A,L(A),f=0})}function on(m){return m(function(){z("LAS");var A=x&R;o=A,b=A,x=A,L(A),O(A)})}function _0(m){return m(function(){z("LAX");var A=R;o=A,b=A,L(A),O(A)})}function un(m){return m(function(){z("LXA");var A=o&R;o=A,b=A,L(A),O(A)})}function xn(m){return m(function(){z("SBX");var A=o&b,j=R,ge=A-j&255;b=ge,Y(A>=j),L(ge),O(ge)})}function l0(m){return m(function(){R=o})}function it(m){return m(function(){R=b})}function ft(m){return m(function(){R=u})}function M0(m){return m(function(){z("SAX"),R=o&b})}function Bt(m){return m(function(){z("SHA"),R=o&b&(H>>>8)+1&255})}function ln(m){return m(function(){z("SHS");var A=o&b;x=A,R=A&(H>>>8)+1&255})}function mn(m){return m(function(){z("SHX"),R=b&(H>>>8)+1&255})}function bn(m){return m(function(){z("SHY"),R=u&(H>>>8)+1&255})}function F0(m){return m(function(){Y(R>127);var A=R<<1&255;R=A,L(A),O(A)})}function T0(m){return m(function(){var A=R-1&255;R=A,L(A),O(A)})}function U0(m){return m(function(){var A=R+1&255;R=A,L(A),O(A)})}function X0(m){return m(function(){_=R&1,R>>>=1,L(R),f=0})}function H0(m){return m(function(){var A=R>127,j=(R<<1|_)&255;R=j,Y(A),L(j),O(j)})}function V0(m){return m(function(){var A=R&1,j=R>>>1|_<<7;R=j,Y(A),L(j),O(j)})}function m0(m){return m(function(){z("DCP");var A=R-1&255;R=A,A=o-A,Y(A>=0),L(A),O(A)})}function b0(m){return m(function(){if(z("ISB"),R=R+1&255,N){var A=R,j=(o&15)-(A&15)-(1-_),ge=(o>>4)-(A>>4)-(j<0?1:0);j<0&&(j-=6),ge<0&&(ge-=6);var Ce=o-A-(1-_);Y(~Ce&256),we((o^A)&(o^Ce)&128),L(Ce&255),O(Ce),o=(ge<<4|j&15)&255}else A=~R&255,Ce=o+A+_,Y(Ce>255),we((o^Ce)&(A^Ce)&128),o=Ce&255,L(o),O(o)})}function d0(m){return m(function(){z("RLA");var A=R,j=_;Y(A&128),A=(A<<1|j)&255,R=A,o&=A,L(A),O(A)})}function h0(m){return m(function(){z("RRA");var A=R,j=_?128:0;if(Y(A&1),A=A>>>1|j,R=A,N){var ge=R,Ce=(o&15)+(ge&15)+_;Ce>9&&(Ce+=6);var k0=(o>>4)+(ge>>4)+(Ce>15?1:0)<<4;L(o+ge+_&255),O(k0),we((o^k0)&~(o^ge)&128),k0>159&&(k0+=96),Y(k0>255),o=(k0|Ce&15)&255}else{var Y0=o+R+_;Y(Y0>255),we((o^Y0)&(R^Y0)&128),o=Y0&255,L(o),O(o)}})}function A0(m){return m(function(){z("SLO");var A=R;Y(A&128),A=A<<1&255,R=A,A=o|A,o=A,L(A),O(A)})}function C0(m){return m(function(){z("SRE");var A=R;Y(A&1),A=A>>>1,R=A,A=(o^A)&255,o=A,L(A),O(A)})}function dn(){return[U,ve,function(){J(o)},y]}function hn(){return[U,ve,function(){J(le())},y]}function An(){return[U,ve,Se,function(){o=ne(),L(o),O(o)},y]}function Cn(){return[U,ve,Se,function(){Ie(ne())},y]}function vn(){return[U,I,Se,function(){J(i>>>8&255)},function(){J(i&255)},Ue,function(){i=te,y()}]}function Sn(){return[U,ie,function(){d.debug&&d.breakpoint("BRK "+R),J(i>>>8&255)},function(){J(i&255)},function(){J(le())},function(){te=t.read(pe)},function(){te|=t.read(pe+1)<<8},function(){i=te,g=1,y()}]}function gn(){return[U,ie,function(){d.debug&&d.breakpoint("IRQ "+R),J(i>>>8&255)},function(){J(i&255)},function(){J(le()&-17)},function(){te=t.read(pe)},function(){te|=t.read(pe+1)<<8},function(){i=te,y()}]}function pn(){return[U,ie,function(){d.debug&&d.breakpoint("NMI "+R),J(i>>>8&255)},function(){J(i&255)},function(){J(le()&-17)},function(){te=t.read(Ne)},function(){te|=t.read(Ne+1)<<8},function(){i=te,y()}]}function Pn(){return[U,ve,Se,function(){Ie(ne())},function(){te=ne()},function(){te|=ne()<<8},function(){i=te,y()}]}function _n(){return[U,ve,Se,function(){te=ne()},function(){te|=ne()<<8},function(){i=te,ie()},y]}function kn(){return[U,I,Ue,function(){i=te,y()}]}function wn(){return[U,Te,ke,be,function(){ce(),Ee()},function(){i=H,y()}]}function o0(m,A){var j;return m===X?j=function(){return B===A}:m===Ve?j=function(){return f===A}:m===me?j=function(){return _===A}:j=function(){return W===A},[U,xe,function(){j()?(ve(),Z()):y()},function(){ue?(ve(),ee()):y()},y]}this.saveState=function(){return{PC:i-1&65535,A:o,X:b,Y:u,SP:x,N:f,V:W,D:N,I:g,Z:B,C:_,T:ae,o:_e,R:n?1:0,d:R,AD:te,BA:H,BC:K?1:0,IA:s,bo:c,boa:ue}},this.loadState=function(m){i=m.PC+1&65535,o=m.A,b=m.X,u=m.Y,x=m.SP,f=m.N,W=m.V,N=m.D,g=m.I,B=m.Z,_=m.C,ae=m.T,_e=m.o,n=!!m.R,R=m.d,te=m.AD,H=m.BA,K=!!m.BC,s=m.IA,c=m.bo,ue=m.boa,h=_e<0?[U]:a[_e]},this.toString=function(){return"CPU PC: "+i.toString(16)+" op: "+_e.toString()+" T: "+ae+" data: "+R+` + A: `+o.toString(16)+" X: "+b.toString(16)+" Y: "+u.toString(16)+" SP: "+x.toString(16)+" N"+f+" V"+W+" D"+N+" I"+g+" Z"+B+" C"+_+" "},this.breakpoint=function(m){if(this.trace)var A="CPU Breakpoint! "+(m?"("+m+")":"")+` + +`+this.toString()};var Nt=[7,6,0,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,0,6,0,6,3,3,3,3,2,0,2,0,4,4,4,4,2,6,0,0,4,4,4,4,2,5,2,0,0,5,0,0,2,6,2,6,3,3,3,3,2,2,2,0,4,4,4,4,2,5,0,5,4,4,4,4,2,4,2,0,4,4,4,4,2,6,0,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,2,6,0,8,3,3,5,5,2,2,2,0,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7],Rn=[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1],Dn=[1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,3,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,0,2,0,2,2,2,2,2,1,0,1,0,3,3,3,3,2,2,0,0,2,2,2,3,1,3,1,0,0,3,0,0,2,2,2,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3],Yn=[1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,3,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,0,2,0,0,2,2,2,0,1,0,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,0,3,0,0,2,2,2,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0];this.getOpcodeMetadata=function(m,A){return{opcode:m,mnenomic:e[m],minCycles:Nt[m],maxCycles:Nt[m]+Rn[m],insnlength:Dn[m]}},this.setNMI=function(){h=pn(),ae=1,i=i-1&65535},this.setIRQ=function(){g||(h=gn(),ae=1,i=i-1&65535)},this.getSP=function(){return x},this.getPC=function(){return i-1&65535},this.getT=function(){return ae},this.isHalted=function(){return e[_e]=="uKIL"},this.isPCStable=function(){return ae==0}};var Kt=class{constructor(){this.cpu=new vt;this.interruptType=0}connectMemoryBus(t){this.cpu.connectBus(t)}advanceClock(){if(this.interruptType&&this.isStable()){switch(this.interruptType){case 1:this.cpu.setNMI();break;case 2:this.cpu.setIRQ();break}this.interruptType=0}this.cpu.clockPulse()}advanceInsn(){do this.advanceClock();while(!this.isStable())}reset(){this.cpu.reset(),this.interruptType=0}interrupt(t){this.interruptType!=1&&(this.interruptType=t)}NMI(){this.interrupt(1)}IRQ(){this.interrupt(2)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.isHalted()}saveState(){var t=this.cpu.saveState();return t.it=this.interruptType,t}loadState(t){this.cpu.loadState(t),this.interruptType=t.it}isStable(){return this.cpu.isPCStable()}getOpcodeMetadata(t){return this.cpu.getOpcodeMetadata(t)}};var I0=class{constructor(t){this.maxROMSize=262144;this.videoOffsetBytes=0;this.prefix=t;var n=this;this.cpu={getPC:n.getPC.bind(n),getSP:n.getSP.bind(n),isStable:n.isStable.bind(n),reset:n.reset.bind(n),saveState:()=>n.getCPUState(),loadState:()=>{console.log("loadState not implemented")},connectMemoryBus(){console.log("connectMemoryBus not implemented")}}}getImports(t){return{}}async fetchWASM(){var t=await fetch("res/"+this.prefix+"/"+this.prefix+".wasm");if(t.status==200||t.size){var n=await t.arrayBuffer(),i=await WebAssembly.compile(n),x=await WebAssembly.instantiate(i,this.getImports(i));this.instance=x,this.exports=x.exports}else throw new Error("could not load WASM file")}allocateBIOS(t){this.biosptr=this.exports.malloc(t.byteLength),this.biosarr=new Uint8Array(this.exports.memory.buffer,this.biosptr,t.byteLength)}async fetchBIOS(){var t=await fetch("res/"+this.prefix+"/"+this.prefix+".bios");if(t.status==200||t.size){var n=new Uint8Array(await t.arrayBuffer());this.allocateBIOS(n),this.loadBIOS(n)}else throw new Error("could not load BIOS file")}async initWASM(){this.sys=this.exports.machine_init(this.biosptr);let t=this.exports.machine_get_state_size();this.stateptr=this.exports.malloc(t);let n=this.exports.machine_get_controls_state_size();this.ctrlstateptr=this.exports.malloc(n);let i=this.exports.machine_get_cpu_state_size();this.cpustateptr=this.exports.malloc(i),this.romptr=this.exports.malloc(this.maxROMSize),this.statearr=new Uint8Array(this.exports.memory.buffer,this.stateptr,t),this.ctrlstatearr=new Uint8Array(this.exports.memory.buffer,this.ctrlstateptr,n),this.cpustatearr=new Uint8Array(this.exports.memory.buffer,this.cpustateptr,i);let x=4096*4;this.audioarr=new Float32Array(this.exports.memory.buffer,this.exports.machine_get_sample_buffer(),x),this.romarr=new Uint8Array(this.exports.memory.buffer,this.romptr,this.maxROMSize),console.log("machine_init",this.sys,t,n,i,x)}async loadWASM(){await this.fetchWASM(),this.exports.memory.grow(96),await this.fetchBIOS(),await this.initWASM()}getPC(){return this.exports.machine_cpu_get_pc(this.sys)}getSP(){return this.exports.machine_cpu_get_sp(this.sys)}isStable(){return this.exports.machine_cpu_is_stable(this.sys)}loadROM(t){if(t.length>this.maxROMSize)throw new z0(`Rom size too big: ${t.length} bytes`);this.romarr.set(t),this.romlen=t.length,console.log("load rom",t.length,"bytes"),this.reset()}loadBIOS(t){this.biosarr.set(t)}reset(){this.exports.machine_reset(this.sys)}read(t){return this.exports.machine_mem_read(this.sys,t&65535)}readConst(t){return this.exports.machine_mem_read(this.sys,t&65535)}write(t,n){this.exports.machine_mem_write(this.sys,t&65535,n&255)}getAudioParams(){return{sampleRate:44100,stereo:!1}}connectVideo(t){this.pixel_dest=t;var n=this.exports.machine_get_pixel_buffer(this.sys);console.log("connectVideo",n,t.length),this.pixel_src=new Uint32Array(this.exports.memory.buffer,n+this.videoOffsetBytes,t.length)}syncVideo(){this.exports.machine_update_video&&this.exports.machine_update_video(this.sys),this.pixel_dest!=null&&this.pixel_dest.set(this.pixel_src)}saveControlsState(){return this.exports.machine_save_controls_state(this.sys,this.ctrlstateptr),{controls:this.ctrlstatearr.slice(0)}}loadControlsState(t){this.ctrlstatearr.set(t.controls),this.exports.machine_load_controls_state(this.sys,this.ctrlstateptr)}connectAudio(t){this.audio=t}syncAudio(){if(this.audio!=null)for(var t=this.exports.machine_get_sample_count(),n=0;nx-o),this.addr2symbol[0]||(this.addr2symbol[0]="$00"),this.addr2symbol[65536]="__END__"}};function v0(d){return d&&typeof d.getDebugCategories=="function"}var pt=class{constructor(){this.id2bp={}}getDebugCondition(){return Object.keys(this.id2bp).length==0?null:()=>{var t=!1;for(var n in this.id2bp)this.id2bp[n].cond()&&(t=!0);return t}}},Pt=class{constructor(){this.recorder=null;this.internalFiles={}}setRecorder(t){this.recorder=t}updateRecorder(){this.recorder&&this.isRunning()&&this.recorder.frameRequested()&&this.recorder.recordFrame(this.saveState())}inspect(t){return Zn(this,t)}getDebugTree(){var n;var t={};return t.state=this.saveState(),(n=this.debugSymbols)!=null&&n.debuginfo&&(t.debuginfo=this.debugSymbols.debuginfo),t}readFile(t){return this.internalFiles[t]}writeFile(t,n){return this.internalFiles[t]=n,!0}},L0=class extends Pt{constructor(){super(...arguments);this.debugSavedState=null;this.debugBreakState=null;this.debugTargetClock=0;this.debugClock=0;this.breakpoints=new pt;this.frameCount=0;this.debugPCDelta=0}fixPC(n){return n.PC=n.PC+this.debugPCDelta&65535,n}unfixPC(n){return n.PC=n.PC-this.debugPCDelta&65535,n}debugUsesEPC(){return!1}setBreakpoint(n,i){i?(this.breakpoints.id2bp[n]={cond:i},this.restartDebugging()):this.clearBreakpoint(n)}clearBreakpoint(n){delete this.breakpoints.id2bp[n]}hasBreakpoint(n){return this.breakpoints.id2bp[n]!=null}getDebugCallback(){return this.breakpoints.getDebugCondition()}setupDebug(n){this.onBreakpointHit=n}clearDebug(){this.debugBreakState!=null&&this.debugSavedState!=null&&this.loadState(this.debugSavedState),this.debugSavedState=null,this.debugBreakState=null,this.debugTargetClock=-1,this.debugClock=0,this.onBreakpointHit=null,this.clearBreakpoint("debug"),this.frameCount=0}setDebugCondition(n){this.setBreakpoint("debug",n)}resetDebugging(){this.debugSavedState?this.loadState(this.debugSavedState):this.debugSavedState=this.saveState(),this.debugClock=0,this.debugCallback=this.getDebugCallback(),this.debugBreakState=null}restartDebugging(){this.resetDebugging(),this.resume()}preFrame(){this.debugCallback&&!this.debugBreakState&&(this.debugSavedState=this.saveState(),this.debugTargetClock-=this.debugClock,this.debugClock=0)}postFrame(){this.debugCallback&&this.debugBreakState&&this.loadState(this.debugBreakState),this.frameCount++}pollControls(){}nextFrame(n){this.pollControls(),this.updateRecorder(),this.preFrame();var i=this.advance(n);return this.postFrame(),i}evalDebugCondition(){this.debugCallback&&!this.debugBreakState&&this.debugCallback()}wasBreakpointHit(){return this.debugBreakState!=null}breakpointHit(n,i){console.log(this.debugTargetClock,n,this.debugClock,this.isStable()),this.debugTargetClock=n,this.debugBreakState=this.saveState(),console.log("Breakpoint at clk",this.debugClock,"PC",this.debugBreakState.c.PC.toString(16)),this.pause(),this.onBreakpointHit&&this.onBreakpointHit(this.debugBreakState,i)}haltAndCatchFire(n){this.breakpointHit(this.debugClock,n)}runEval(n){this.setDebugCondition(()=>{if(++this.debugClock>=this.debugTargetClock&&this.isStable()){var i=this.getCPUState();return n(i)?(this.breakpointHit(this.debugClock),!0):!1}})}runToPC(n){this.runEvalAtPC(new Map(n.map(i=>[i,null])))}runEvalAtPC(n){this.debugTargetClock++;let i=this.debugUsesEPC();this.setDebugCondition(()=>{if(++this.debugClocki.SP>n)}stepOver(){var u;var n=this,i=this.getPC(),x=null,o=(u=n.readAddress)==null?void 0:u.bind(n);if(o&&n.disassemble&&(x=n.disassemble(i,o)),x&&x.iscall){var b=i+x.nbytes;this.debugTargetClock++,this.runEval(f=>f.PC==b)}else this.step()}hasCustomStepOver(){return!1}runToFrameClock(n){this.restartDebugging(),this.debugTargetClock=n,this.runEval(()=>!0)}step(){this.runToFrameClock(this.debugClock+1)}stepBack(){var n,i,x=this.debugTargetClock;this.restartDebugging(),this.debugTargetClock=x-25,this.runEval(o=>this.debugClockthis.frameCount>n)}};function Zn(d,t){if(d.debugSymbols){var n=d.debugSymbols.symbolmap,i=d.debugSymbols.addr2symbol;if(!n||!d.readAddress)return null;var x=n["_"+t]||n[t];if(typeof x!="number")return null;var o=d.readAddress(x);if(i&&i[x+1]!=null)return"$"+$(x,4)+" = $"+$(o,2)+" ("+o+" decimal)";{let b=d.readAddress(x+1),u=o|b<<8;return"$"+$(x,4)+" = $"+$(o,2)+" $"+$(b,2)+" ("+(u<<16>>16)+" decimal)"}}}var $t=class extends L0{constructor(){super(...arguments);this.debugPCDelta=-1;this.getToolForFilename=ct}getSP(){return this.getCPUState().SP}getPC(){return this.getCPUState().PC}isStable(){return!this.getCPUState().T}newCPU(n){var i=new vt;return i.connectBus(n),i}getOpcodeMetadata(n,i){return tn(n,i)}getOriginPC(){return(this.readAddress(65532)|this.readAddress(65533)<<8)&65535}disassemble(n,i){return xt(n,i(n),i(n+1),i(n+2))}getDefaultExtensions(){return[".c",".sdcc",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}getDebugCategories(){return["CPU","ZPRAM","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return en(i.c);case"ZPRAM":return st(i.b||i.ram,0,256);case"Stack":return E0(this,i.b||i.ram,256,511,256+i.c.SP,32)}}};function en(d){function t(n){var i="";return i+=n.N?" N":" -",i+=n.V?" V":" -",i+=n.D?" D":" -",i+=n.Z?" Z":" -",i+=n.C?" C":" -",i+=n.I?" I":" -",i}return"PC "+$(d.PC,4)+" "+t(d)+` + A `+$(d.A)+" "+(d.R?"":"BUSY")+` + X `+$(d.X)+` + Y `+$(d.Y)+" SP "+$(d.SP)+` +`}var q0={cycletime:[7,6,0,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,0,6,0,6,3,3,3,3,2,0,2,0,4,4,4,4,2,6,0,0,4,4,4,4,2,5,2,0,0,5,0,0,2,6,2,6,3,3,3,3,2,2,2,0,4,4,4,4,2,5,0,5,4,4,4,4,2,4,2,0,4,4,4,4,2,6,0,8,3,3,5,5,2,2,2,2,4,4,3,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,2,6,0,8,3,3,5,5,2,2,2,0,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7],extracycles:[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1],insnlengths:[1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,3,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,0,2,0,2,2,2,2,2,1,0,1,0,3,3,3,3,2,2,0,0,2,2,2,3,1,3,1,0,0,3,0,0,2,2,2,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3],validinsns:[1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,3,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,0,2,0,0,2,2,2,0,1,0,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,0,3,0,0,2,2,2,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0]};function tn(d,t){return{opcode:d,minCycles:q0.cycletime[d],maxCycles:q0.cycletime[d]+q0.extracycles[d],insnlength:q0.insnlengths[d]}}function nn(d){function t(n){return W0(n,["S","Z",,"H",,"V","N","C"],!0)}return"PC "+$(d.PC,4)+" "+t(d.AF)+" "+(d.iff1?"I":"-")+(d.iff2?"I":"-")+` +SP `+$(d.SP,4)+" IR "+$(d.IR,4)+` +IX `+$(d.IX,4)+" IY "+$(d.IY,4)+` +AF `+$(d.AF,4)+" BC "+$(d.BC,4)+` +DE `+$(d.DE,4)+" HL "+$(d.HL,4)+` +`}function wr(d){function t(n){return W0(n,["Z","N","H","C"],!0)}return"PC "+$(d.PC,4)+" "+t(d.AF>>4)+" "+(d.ime?"I":"-")+` +SP `+$(d.SP,4)+` +AF `+$(d.AF,4)+" BC "+$(d.BC,4)+` +DE `+$(d.DE,4)+" HL "+$(d.HL,4)+` +`}var _t=class extends L0{constructor(){super(...arguments);this.waitCycles=0;this.getToolForFilename=ot}newCPU(n,i){return this._cpu=new K0,this._cpu.connectMemoryBus(n),this._cpu.connectIOBus(i),this._cpu}getPC(){return this._cpu.getPC()}getSP(){return this._cpu.getSP()}isStable(){return!0}runCPU(n,i){if(this._cpu=n,this.waitCycles=0,this.wasBreakpointHit())return 0;var x=this.getDebugCallback(),o=0;for(this.waitCycles+=i;this.waitCycles>0;){if(x&&x()){x=null;break}var b=n.advanceInsn();o+=b,this.waitCycles-=b}return o}getDefaultExtensions(){return[".c",".sdcc",".ns",".s",".scc",".sgb",".z",".wiz"]}getDebugCategories(){return["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return nn(i.c);case"Stack":{var x=i.c.SP-1&65535,o=x&65280,b=o+255;return x==0&&(x=65536),console.log(x,o,b),E0(this,[],o,b,x,205)}}}disassemble(n,i){return Ct(n,i(n),i(n+1),i(n+2),i(n+3))}};function kt(d){function t(n){return W0(n,["E","F","H","I","N","Z","V","C"],!0)}return"PC "+$(d.PC,4)+" "+t(d.CC)+` +SP `+$(d.SP,4)+` +DP `+$(d.DP,2)+` + A `+$(d.A,2)+` + B `+$(d.B,2)+` + X `+$(d.X,4)+` + Y `+$(d.Y,4)+` + U `+$(d.U,4)+` +`}var Jt=class extends _t{constructor(){super(...arguments);this.getToolForFilename=ut}newCPU(n){var i=Object.create(Q0());return i.init(n.write,n.read,0),i}cpuStateToLongString(n){return kt(n)}disassemble(n,i){return Object.create(Q0()).disasm(i(n),i(n+1),i(n+2),i(n+3),i(n+4),n)}getDefaultExtensions(){return[".c",".lwasm",".xasm"]}getDebugCategories(){return["CPU","Stack"]}getDebugInfo(n,i){return n==="CPU"?kt(i.c):super.getDebugInfo(n,i)}};function E0(d,t,n,i,x,o,b){var u="",f=0;function W(_){return _>8);var g=o==32?-2:-3,B=W(N+g);B==o?(u+=` +$`+$(x)+": ",u+=$(N,4)+" "+Mn(d,N,!0),x++,f=0):(f==0&&(u+=` +$`+$(x)+": "),u+=$(W(x))+" ",++f==8&&(f=0))}return u+` +`}function Mn(d,t,n){for(var i=t,x=d.debugSymbols&&d.debugSymbols.addr2symbol;x&&t>=0;){var o=x[t];if(o){var o=x[t];return n?o+" + $"+$(i-t):o}if(!n)break;t--}return""}function Fn(d){return typeof d.connectVideo=="function"}function Tn(d){return typeof d.connectAudio=="function"}function Un(d){return typeof d.setKeyInput=="function"}function St(d){return typeof d.setPaddleInput=="function"}function gt(d){return typeof d.getRasterY=="function"}function Xn(d){return typeof d.connectProbe=="function"}function Hn(d){return typeof d.loadBIOS=="function"}function Vn(d){return typeof d.connectSerialIO=="function"}var O0=class extends L0{constructor(n,i){super();this.probeSingleFrame=null;this.mainElement=n,this.options=i||{}}reset(){this.machine.reset(),this.serialVisualizer!=null&&this.serialVisualizer.reset()}loadState(n){if(!this.debugPCDelta||!n.c)return this.machine.loadState(n);this.unfixPC(n.c);try{this.machine.loadState(n)}finally{this.fixPC(n.c)}}saveState(){let n=this.machine.saveState();return this.debugPCDelta&&n.c&&this.fixPC(n.c),n}getSP(){return this.machine.cpu.getSP()}getPC(){return this.machine.cpu.getPC()}isStable(){return this.machine.cpu.isStable()}getCPUState(){return this.fixPC(this.machine.cpu.saveState())}loadControlsState(n){this.machine.loadControlsState(n)}saveControlsState(){return this.machine.saveControlsState()}async start(){this.machine=this.newMachine();let n=this.machine;n instanceof I0&&await n.loadWASM();var i;if(Fn(n)){var x=n.getVideoParams();this.video=new Ot(this.mainElement,x.width,x.height,{overscan:!!x.overscan,rotate:x.rotate|0,aspect:x.aspect}),this.video.create(),n.connectVideo(this.video.getFrameData()),Un(n)&&(this.video.setKeyboardEvents(n.setKeyInput.bind(n)),this.poller=new Zt(n.setKeyInput.bind(n))),i=x.videoFrequency}if(this.timer=new Et(i||60,this.nextFrame.bind(this)),Tn(n)){var o=n.getAudioParams();this.audio=new J0(o.sampleRate),this.audio.start(),n.connectAudio(this.audio)}St(n)&&this.video.setupMouseEvents(),Xn(n)&&(this.probeRecorder=new G0(n),this.startProbing=()=>(n.connectProbe(this.probeRecorder),this.probeRecorder),this.stopProbing=()=>{n.connectProbe(null)}),Hn(n)&&(this.loadBIOS=(b,u)=>{n.loadBIOS(u,b)}),Vn(n)&&(this.serialIOInterface==null?this.serialVisualizer=new wt(this.mainElement,n):n.connectSerialIO(this.serialIOInterface))}loadROM(n,i,x){this.machine.loadROM(i,n,x),this.reset()}acceptsPaddles(){return St(this.machine)}setPaddles(n,i,x){this.video.paddle_x=n,this.video.paddle_y=i,x.forEach((o,b)=>this.video.paddle_buttons[b]=o)}pollControls(){this.poller&&this.poller.poll(),St(this.machine)&&(this.machine.setPaddleInput(0,this.video.paddle_x),this.machine.setPaddleInput(1,this.video.paddle_y),this.machine.setPaddleButton&&this.video.paddle_buttons!=null&&(this.machine.setPaddleButton(0,this.video.paddle_buttons[0]),this.machine.setPaddleButton(1,this.video.paddle_buttons[1]),this.machine.setPaddleButton(2,this.video.paddle_buttons[2]))),this.machine.pollControls&&this.machine.pollControls()}advance(n){let i=this.getDebugCallback();try{var x=this.machine.advanceFrame(i);return x}finally{!n&&this.video&&(this.video.updateFrame(),this.updateVideoDebugger()),!n&&this.serialVisualizer&&this.serialVisualizer.refresh()}}updateVideoDebugger(){var n;if(!this.isRunning()&>(this.machine)&&this.machine.getRasterCanvasPosition){let{x:i,y:x}=this.machine.getRasterCanvasPosition();if(i>=0||x>=0){let o=(n=this.video)==null?void 0:n.getContext();o&&Lt(o,i,x,1)}}}advanceFrameClock(n,i){if(i>0)return this.machine instanceof I0?this.machine.advanceFrameClock(n,i):this.machine.advanceFrame(()=>--i<=0)}isRunning(){return this.timer&&this.timer.isRunning()}resume(){this.timer.start(),this.audio&&this.audio.start(),this.poller&&this.poller.start()}pause(){this.timer.stop(),this.audio&&this.audio.stop(),this.poller&&this.poller.stop(),this.probeRecorder&&this.probeSingleFrame!=null&&(this.probeRecorder.singleFrame=this.probeSingleFrame,this.probeSingleFrame=null)}runToVsync(){this.probeRecorder&&(this.probeSingleFrame=this.probeRecorder.singleFrame,this.probeRecorder.reset(),this.probeRecorder.singleFrame=!1),this.restartDebugging();var n=!1;this.runEval(()=>{if(this.getRasterScanline()>0)n=!0;else return n})}getRasterScanline(){return gt(this.machine)&&this.machine.getRasterY?this.machine.getRasterY():-1}getRasterLineClock(){return gt(this.machine)&&this.machine.getRasterX?this.machine.getRasterX():-1}readAddress(n){return this.machine.read(n)}getDebugCategories(){if(v0(this.machine))return this.machine.getDebugCategories()}getDebugInfo(n,i){return v0(this.machine)&&this.machine.getDebugInfo(n,i)}},Gt=class extends O0{constructor(){super(...arguments);this.getOpcodeMetadata=tn}getToolForFilename(n){return ct(n)}getDefaultExtensions(){return[".c",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}disassemble(n,i){return xt(n,i(n),i(n+1),i(n+2))}getDebugCategories(){return v0(this.machine)?this.machine.getDebugCategories():["CPU","ZPRAM","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return en(i.c);case"ZPRAM":return st(i.b||i.ram,0,256);case"Stack":return E0(this,i.b||i.ram,256,511,256+i.c.SP,32);default:return v0(this.machine)&&this.machine.getDebugInfo(n,i)}}},Qt=class extends O0{constructor(){super(...arguments);this.getToolForFilename=ot}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}getDebugCategories(){return v0(this.machine)?this.machine.getDebugCategories():["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return nn(i.c);case"Stack":{var x=i.c.SP-1&65535,o=x&65280,b=o+255;return x==0&&(x=65536),E0(this,[],o,b,x,205)}default:return v0(this.machine)&&this.machine.getDebugInfo(n,i)}}disassemble(n,i){return Ct(n,i(n),i(n+1),i(n+2),i(n+3))}},qt=class extends O0{constructor(){super(...arguments);this.getToolForFilename=ut}getDefaultExtensions(){return[".c",".lwasm",".xasm"]}getDebugCategories(){return v0(this.machine)?this.machine.getDebugCategories():["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return kt(i.c);case"Stack":{var x=i.c.SP-1&65535,o=x&65280,b=o+255;return x==0&&(x=65536),E0(this,[],o,b,x,23,!0)}default:return super.getDebugInfo(n,i)}}disassemble(n,i){return Object.create(Q0()).disasm(i(n),i(n+1),i(n+2),i(n+3),i(n+4),n)}},wt=class{constructor(t,n){this.lastOutCount=-1;this.lastInCount=-1;this.device=n,this.textarea=document.createElement("textarea"),this.textarea.classList.add("transcript"),this.textarea.classList.add("transcript-style-2"),this.textarea.style.display="none",t.appendChild(this.textarea)}reset(){this.lastOutCount=0,this.lastInCount=0,this.textarea.style.display="none"}refresh(){var t="";if(this.device.serialOut.length!=this.lastOutCount){var n="";for(var i of this.device.serialOut)t!=i.op&&(n!=""&&(n+=` +`),i.op==="read"?n+="<< ":i.op==="write"&&(n+=">> "),t=i.op),i.value==10?(n+="\u21B5",t=""):n+=It(i.value);this.textarea.value=n,this.lastOutCount=this.device.serialOut.length,this.textarea.style.display="block"}}};export{xt as a,Ct as b,K0 as c,mt as d,Mt as e,Ft as f,jn as g,yn as h,$n as i,Jn as j,Gn as k,dt as l,En as m,Ht as n,Q0 as o,Kt as p,qn as q,G0 as r,y0 as s,ht as t,At as u,Vt as v,I0 as w,jt as x,v0 as y,Pt as z,Zn as A,$t as B,en as C,tn as D,nn as E,wr as F,_t as G,Jt as H,E0 as I,O0 as J,Gt as K,Qt as L,qt as M}; +//# sourceMappingURL=chunk-4YTESWOC.js.map diff --git a/gen/chunk-4YTESWOC.js.map b/gen/chunk-4YTESWOC.js.map new file mode 100644 index 00000000..eaaa2440 --- /dev/null +++ b/gen/chunk-4YTESWOC.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../src/common/cpu/disasm6502.ts", "../src/common/cpu/ZilogZ80.ts", "../src/common/audio.ts", "../src/common/probe.ts", "../src/common/devices.ts", "../src/common/cpu/disasmz80.ts", "../src/common/cpu/6809.ts", "../src/common/cpu/MOS6502.ts", "../src/common/wasmplatform.ts", "../src/common/baseplatform.ts"], + "sourcesContent": ["\nimport { hex } from \"../util\";\n\nexport var OPS_6502 = [\n {mn:\"BRK\",am:\"\",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:\"SI\"}, // 0\n {mn:\"ORA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 2\n {mn:\"SLO\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 4\n {mn:\"ORA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 5\n {mn:\"ASL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 6\n {mn:\"SLO\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 7\n {mn:\"PHP\",am:\"\",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:\"S\"}, // 8\n {mn:\"ORA\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 9\n {mn:\"ASL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // b\n {mn:\"NOP\",am:\"AAAA\",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // c\n {mn:\"ORA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // d\n {mn:\"ASL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // e\n {mn:\"SLO\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // f\n {mn:\"BPL\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 10\n {mn:\"ORA\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 11\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 12\n {mn:\"SLO\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 13\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 14\n {mn:\"ORA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 15\n {mn:\"ASL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 16\n {mn:\"SLO\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 17\n {mn:\"CLC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 18\n {mn:\"ORA\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 19\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 1a\n {mn:\"SLO\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 1c\n {mn:\"ORA\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 1d\n {mn:\"ASL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 1e\n {mn:\"SLO\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1f\n {mn:\"JSR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:\"S\"}, // 20\n {mn:\"AND\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 21\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 22\n {mn:\"RLA\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 23\n {mn:\"BIT\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 24\n {mn:\"AND\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 25\n {mn:\"ROL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 26\n {mn:\"RLA\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 27\n {mn:\"PLP\",am:\"\",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:\"SCZIDVN\"}, // 28\n {mn:\"AND\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 29\n {mn:\"ROL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2b\n {mn:\"BIT\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 2c\n {mn:\"AND\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 2d\n {mn:\"ROL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 2e\n {mn:\"RLA\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 2f\n {mn:\"BMI\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 30\n {mn:\"AND\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 31\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 32\n {mn:\"RLA\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 33\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 34\n {mn:\"AND\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 35\n {mn:\"ROL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 36\n {mn:\"RLA\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 37\n {mn:\"SEC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 38\n {mn:\"AND\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 39\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 3a\n {mn:\"RLA\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 3c\n {mn:\"AND\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 3d\n {mn:\"ROL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 3e\n {mn:\"RLA\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3f\n {mn:\"RTI\",am:\"\",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:\"SCZIDVN\"}, // 40\n {mn:\"EOR\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 41\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 42\n {mn:\"SRE\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 43\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 44\n {mn:\"EOR\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 45\n {mn:\"LSR\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 46\n {mn:\"SRE\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 47\n {mn:\"PHA\",am:\"\",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:\"S\"}, // 48\n {mn:\"EOR\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 49\n {mn:\"LSR\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 4a\n {mn:\"ASR\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 4b\n {mn:\"JMP\",am:\"AAAA\",nb:3,il:0,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 4c\n {mn:\"EOR\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 4d\n {mn:\"LSR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 4e\n {mn:\"SRE\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 4f\n {mn:\"BVC\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 50\n {mn:\"EOR\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 51\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 52\n {mn:\"SRE\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 53\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 54\n {mn:\"EOR\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 55\n {mn:\"LSR\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 56\n {mn:\"SRE\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 57\n {mn:\"CLI\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"I\"}, // 58\n {mn:\"EOR\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 59\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 5a\n {mn:\"SRE\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 5b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 5c\n {mn:\"EOR\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 5d\n {mn:\"LSR\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 5e\n {mn:\"SRE\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 5f\n {mn:\"RTS\",am:\"\",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:\"S\"}, // 60\n {mn:\"ADC\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 61\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 62\n {mn:\"RRA\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 63\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 64\n {mn:\"ADC\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 65\n {mn:\"ROR\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 66\n {mn:\"RRA\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 67\n {mn:\"PLA\",am:\"\",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:\"SAZN\"}, // 68\n {mn:\"ADC\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 69\n {mn:\"ROR\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 6a\n {mn:\"ARR\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 6b\n {mn:\"JMP\",am:\"(AAAA)\",nb:3,il:0,c1:5,c2:0,nw:0,br:1,mod:\"\"}, // 6c\n {mn:\"ADC\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 6d\n {mn:\"ROR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 6e\n {mn:\"RRA\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 6f\n {mn:\"BVS\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 70\n {mn:\"ADC\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // 71\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 72\n {mn:\"RRA\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 73\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 74\n {mn:\"ADC\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 75\n {mn:\"ROR\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 76\n {mn:\"RRA\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 77\n {mn:\"SEI\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"I\"}, // 78\n {mn:\"ADC\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // 79\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 7a\n {mn:\"RRA\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 7b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 7c\n {mn:\"ADC\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // 7d\n {mn:\"ROR\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 7e\n {mn:\"RRA\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 7f\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 80\n {mn:\"STA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 81\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 82\n {mn:\"SAX\",am:\"(aa,x)\",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 83\n {mn:\"STY\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 84\n {mn:\"STA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 85\n {mn:\"STX\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 86\n {mn:\"SAX\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 87\n {mn:\"DEY\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // 88\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 89\n {mn:\"TXA\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 8a\n {mn:\"ANE\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 8b\n {mn:\"STY\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8c\n {mn:\"STA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8d\n {mn:\"STX\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8e\n {mn:\"SAX\",am:\"AAAA\",nb:3,il:1,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8f\n {mn:\"BCC\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 90\n {mn:\"STA\",am:\"(aa),y\",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 91\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 92\n {mn:\"SHA\",am:\"(aa),y\",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 93\n {mn:\"STY\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 94\n {mn:\"STA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 95\n {mn:\"STX\",am:\"aa,y\",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 96\n {mn:\"SAX\",am:\"aa,y\",nb:3,il:1,c1:4,c2:0,nw:1,br:1,mod:\"\"}, // 97\n {mn:\"TYA\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 98\n {mn:\"STA\",am:\"AAAA,y\",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 99\n {mn:\"TXS\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"S\"}, // 9a\n {mn:\"SHS\",am:\"AAAA,y\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"S\"}, // 9b\n {mn:\"SHY\",am:\"AAAA,x\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9c\n {mn:\"STA\",am:\"AAAA,x\",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9d\n {mn:\"SHX\",am:\"AAAA,y\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9e\n {mn:\"SHA\",am:\"AAAA,y\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9f\n {mn:\"LDY\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // a0\n {mn:\"LDA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // a1\n {mn:\"LDX\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // a2\n {mn:\"LAX\",am:\"(aa,x)\",nb:2,il:1,c1:6,c2:0,nw:0,br:0,mod:\"AXZN\"}, // a3\n {mn:\"LDY\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"YZN\"}, // a4\n {mn:\"LDA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // a5\n {mn:\"LDX\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"XZN\"}, // a6\n {mn:\"LAX\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"AXZN\"}, // a7\n {mn:\"TAY\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // a8\n {mn:\"LDA\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // a9\n {mn:\"TAX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // aa\n {mn:\"LXA\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"AXZN\"}, // ab\n {mn:\"LDY\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"YZN\"}, // ac\n {mn:\"LDA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // ad\n {mn:\"LDX\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"XZN\"}, // ae\n {mn:\"LAX\",am:\"AAAA\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"AXZN\"}, // af\n {mn:\"BCS\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // b0\n {mn:\"LDA\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // b1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // b2\n {mn:\"LAX\",am:\"(aa),y\",nb:2,il:1,c1:5,c2:1,nw:0,br:0,mod:\"AXZN\"}, // b3\n {mn:\"LDY\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"YZN\"}, // b4\n {mn:\"LDA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // b5\n {mn:\"LDX\",am:\"aa,y\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"XZN\"}, // b6\n {mn:\"LAX\",am:\"aa,y\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"AXZN\"}, // b7\n {mn:\"CLV\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"V\"}, // b8\n {mn:\"LDA\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // b9\n {mn:\"TSX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // ba\n {mn:\"LAS\",am:\"AAAA,y\",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:\"SAXZN\"}, // bb\n {mn:\"LDY\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"YZN\"}, // bc\n {mn:\"LDA\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // bd\n {mn:\"LDX\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"XZN\"}, // be\n {mn:\"LAX\",am:\"AAAA,y\",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:\"AXZN\"}, // bf\n {mn:\"CPY\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"CZN\"}, // c0\n {mn:\"CMP\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"CZN\"}, // c1\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // c2\n {mn:\"DCP\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"CZN\"}, // c3\n {mn:\"CPY\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"CZN\"}, // c4\n {mn:\"CMP\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"CZN\"}, // c5\n {mn:\"DEC\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"ZN\"}, // c6\n {mn:\"DCP\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // c7\n {mn:\"INY\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // c8\n {mn:\"CMP\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"CZN\"}, // c9\n {mn:\"DEX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // ca\n {mn:\"SBX\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"XCZN\"}, // cb\n {mn:\"CPY\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // cc\n {mn:\"CMP\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // cd\n {mn:\"DEC\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // ce\n {mn:\"DCP\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // cf\n {mn:\"BNE\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // d0\n {mn:\"CMP\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"CZN\"}, // d1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // d2\n {mn:\"DCP\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"CZN\"}, // d3\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // d4\n {mn:\"CMP\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // d5\n {mn:\"DEC\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // d6\n {mn:\"DCP\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // d7\n {mn:\"CLD\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"D\"}, // d8\n {mn:\"CMP\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"CZN\"}, // d9\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // da\n {mn:\"DCP\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // db\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // dc\n {mn:\"CMP\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"CZN\"}, // dd\n {mn:\"DEC\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"ZN\"}, // de\n {mn:\"DCP\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // df\n {mn:\"CPX\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"CZN\"}, // e0\n {mn:\"SBC\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // e1\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // e2\n {mn:\"ISB\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // e3\n {mn:\"CPX\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"CZN\"}, // e4\n {mn:\"SBC\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // e5\n {mn:\"INC\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"ZN\"}, // e6\n {mn:\"ISB\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // e7\n {mn:\"INX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // e8\n {mn:\"SBC\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // e9\n {mn:\"NOP\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // ea\n {mn:\"SBC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // eb\n {mn:\"CPX\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // ec\n {mn:\"SBC\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // ed\n {mn:\"INC\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // ee\n {mn:\"ISB\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // ef\n {mn:\"BEQ\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // f0\n {mn:\"SBC\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // f1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // f2\n {mn:\"ISB\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // f3\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // f4\n {mn:\"SBC\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // f5\n {mn:\"INC\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // f6\n {mn:\"ISB\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // f7\n {mn:\"SED\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"D\"}, // f8\n {mn:\"SBC\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // f9\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // fa\n {mn:\"ISB\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // fb\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // fc\n {mn:\"SBC\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // fd\n {mn:\"INC\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"ZN\"}, // fe\n {mn:\"ISB\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // ff\n];\n\nexport function disassemble6502(pc:number, b0:number, b1:number, b2:number) : {line:string, nbytes:number, isaddr:boolean, iscall?:boolean} {\n\n var op = OPS_6502[b0];\n if (op == null) return {line:\"???\", nbytes:1, isaddr:false};\n var s = op.mn;\n var am = op.am;\n var isaddr = false;\n if (am == 'branch') {\n var offset = (b1 < 0x80) ? (pc+2+b1) : (pc+2-(256-b1));\n offset &= 0xffff;\n am = '$'+hex(offset, 4);\n isaddr = true;\n } else {\n am = am.replace('aa','$'+hex(b1, 2));\n am = am.replace('AAAA','$'+hex(b1+(b2<<8), 4));\n if (am.indexOf('#') < 0 && am.indexOf('$') >= 0)\n isaddr = true;\n }\n return {line:op.mn + \" \" + am, nbytes:op.nb, isaddr:isaddr, iscall:op.mn==\"JSR\"};\n};\n", "// Generated by CoffeeScript 1.9.3\n\nimport { CPU, Bus, InstructionBased, IOBusConnected, SavesState, Interruptable } from \"../devices\";\n\n///////////////////////////////////////////////////////////////////////////////\n/// @file Z80.js\n///\n/// @brief Emulator for the Zilog Z80 microprocessor\n///\n/// @author Matthew Howell\n///\n/// @remarks\n/// This module is a simple, straightforward instruction interpreter.\n/// There is no fancy dynamic recompilation or cycle-accurate emulation.\n/// The author believes that this should be sufficient for any emulator that\n/// would be feasible to write in JavaScript anyway.\n/// The code and the comments in this file assume that the reader is familiar\n/// with the Z80 architecture. If you're not, here are some references I use:\n/// http://clrhome.org/table/ - Z80 instruction set tables\n/// http://www.zilog.com/docs/z80/um0080.pdf - The official manual\n/// http://www.myquest.nl/z80undocumented/z80-documented-v0.91.pdf\n/// - The Undocumented Z80, Documented\n///\n/// @copyright (c) 2013 Matthew Howell\n/// This code is released under the MIT license,\n/// a copy of which is available in the associated README.md file,\n/// or at http://opensource.org/licenses/MIT\n///////////////////////////////////////////////////////////////////////////////\n\n///////////////////////////////////////////////////////////////////////////////\n/// We'll begin with the object constructor and the public API functions.\n///////////////////////////////////////////////////////////////////////////////\nfunction FastZ80(coreParameter)\n{\n // Obviously we'll be needing the core object's functions again.\n const core = coreParameter;\n \n // The argument to this constructor should be an object containing 4 functions:\n // mem_read(address) should return the byte at the given memory address,\n // mem_write(address, value) should write the given value to the given memory address,\n // io_read(port) should read a return a byte read from the given I/O port,\n // io_write(port, value) should write the given byte to the given I/O port.\n // If any of those functions is missing, this module cannot run.\n if (!core || (typeof core.mem_read !== \"function\") || (typeof core.mem_write !== \"function\") ||\n (typeof core.io_read !== \"function\") || (typeof core.io_write !== \"function\"))\n throw(\"Z80: Core object is missing required functions.\");\n \n // All right, let's initialize the registers.\n // First, the standard 8080 registers.\n let a = 0x00;\n let b = 0x00;\n let c = 0x00;\n let d = 0x00;\n let e = 0x00;\n let h = 0x00;\n let l = 0x00;\n // Now the special Z80 copies of the 8080 registers\n // (the ones used for the SWAP instruction and such).\n let a_prime = 0x00;\n let b_prime = 0x00;\n let c_prime = 0x00;\n let d_prime = 0x00;\n let e_prime = 0x00;\n let h_prime = 0x00;\n let l_prime = 0x00;\n // And now the Z80 index registers.\n let ix = 0x0000;\n let iy = 0x0000;\n // Then the \"utility\" registers: the interrupt vector,\n // the memory refresh, the stack pointer, and the program counter.\n let i = 0x00;\n let r = 0x00;\n let sp = 0x0000; // Changed from 0xdff0 - SP should be undefined at reset, program must initialize it\n let pc = 0x0000;\n // We don't keep an F register for the flags,\n // because most of the time we're only accessing a single flag,\n // so we optimize for that case and use utility functions\n // for the rarer occasions when we need to access the whole register.\n let flags = {S:0, Z:0, Y:0, H:0, X:0, P:0, N:0, C:0};\n let flags_prime = {S:0, Z:0, Y:0, H:0, X:0, P:0, N:0, C:0};\n // And finally we have the interrupt mode and flip-flop registers.\n let imode = 0;\n let iff1 = 0;\n let iff2 = 0;\n \n // These are all specific to this implementation, not Z80 features.\n // Keep track of whether we've had a HALT instruction called.\n let halted = false;\n // EI and DI wait one instruction before they take effect;\n // these flags tell us when we're in that wait state.\n let do_delayed_di = false;\n let do_delayed_ei = false;\n // This tracks the number of cycles spent in a single instruction run,\n // including processing any prefixes and handling interrupts.\n let cycle_counter = 0;\n \n function getState():Z80State {\n return {\n PC:pc,\n SP:sp,\n IX:ix,\n IY:iy,\n AF:(a<<8)+get_flags_register(),\n BC:(b<<8)+c,\n DE:(d<<8)+e,\n HL:(h<<8)+l,\n AF_:(a_prime<<8)+get_flags_prime(),\n BC_:(b_prime<<8)+c_prime,\n DE_:(d_prime<<8)+e_prime,\n HL_:(h_prime<<8)+l_prime,\n IR:(i<<8)+r,\n im : imode,\n iff1 : iff1,\n iff2 : iff2,\n halted : halted,\n do_delayed_di : do_delayed_di,\n do_delayed_ei : do_delayed_ei,\n cycle_counter : cycle_counter\n }; \n }\n\n function setState(state:Z80State) {\n pc = state.PC;\n sp = state.SP;\n ix = state.IX;\n iy = state.IY;\n a = (state.AF >> 8) & 0xff;\n set_flags_register(state.AF);\n b = (state.BC >> 8) & 0xff;\n c = state.BC & 0xff;\n d = (state.DE >> 8) & 0xff;\n e = state.DE & 0xff;\n h = (state.HL >> 8) & 0xff;\n l = state.HL & 0xff;\n a_prime = (state.AF_ >> 8) & 0xff;\n set_flags_prime(state.AF_);\n b_prime = (state.BC_ >> 8) & 0xff;\n c_prime = state.BC_ & 0xff;\n d_prime = (state.DE_ >> 8) & 0xff;\n e_prime = state.DE_ & 0xff;\n h_prime = (state.HL_ >> 8) & 0xff;\n l_prime = state.HL_ & 0xff;\n i = (state.IR >> 8) & 0xff;\n r = state.IR & 0xff;\n imode = state.im;\n iff1 = state.iff1;\n iff2 = state.iff2;\n halted = state.halted;\n do_delayed_di = state.do_delayed_di;\n do_delayed_ei = state.do_delayed_ei;\n cycle_counter = state.cycle_counter;\n }\n\n///////////////////////////////////////////////////////////////////////////////\n/// @public reset\n///\n/// @brief Re-initialize the processor as if a reset or power on had occured\n///////////////////////////////////////////////////////////////////////////////\nlet reset = function()\n{\n // These registers are the ones that have predictable states\n // immediately following a power-on or a reset.\n // The others are left alone, because their states are unpredictable.\n sp = 0x0000;\n pc = 0x0000;\n a = 0x00;\n r = 0x00;\n set_flags_register(0);\n // Start up with interrupts disabled.\n imode = 0;\n iff1 = 0;\n iff2 = 0;\n // Don't start halted or in a delayed DI or EI.\n halted = false;\n do_delayed_di = false;\n do_delayed_ei = false;\n // Obviously we've not used any cycles yet.\n cycle_counter = 0;\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// @public run_instruction\n///\n/// @brief Runs a single instruction\n///\n/// @return The number of T cycles the instruction took to run,\n/// plus any time that went into handling interrupts that fired\n/// while this instruction was executing\n///////////////////////////////////////////////////////////////////////////////\nlet run_instruction = function()\n{\n if (!halted)\n {\n // If the previous instruction was a DI or an EI,\n // we'll need to disable or enable interrupts\n // after whatever instruction we're about to run is finished.\n var doing_delayed_di = false, doing_delayed_ei = false;\n if (do_delayed_di)\n {\n do_delayed_di = false;\n doing_delayed_di = true;\n }\n else if (do_delayed_ei)\n {\n do_delayed_ei = false;\n doing_delayed_ei = true;\n }\n\n // R is incremented at the start of every instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n \n // Read the byte at the PC and run the instruction it encodes.\n var opcode = core.mem_read(pc);\n decode_instruction(opcode);\n pc = (pc + 1) & 0xffff;\n \n // Actually do the delayed interrupt disable/enable if we have one.\n if (doing_delayed_di)\n {\n iff1 = 0;\n iff2 = 0;\n //console.log(\"DI\",pc);\n }\n else if (doing_delayed_ei)\n {\n iff1 = 1;\n iff2 = 1;\n //console.log(\"EI\",pc);\n }\n \n // And finally clear out the cycle counter for the next instruction\n // before returning it to the emulator core.\n var retval = cycle_counter;\n cycle_counter = 0;\n return retval;\n }\n else\n {\n // While we're halted, claim that we spent a cycle doing nothing,\n // so that the rest of the emulator can still proceed.\n return 1;\n }\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// @public interrupt\n///\n/// @brief Simulates pulsing the processor's INT (or NMI) pin\n///\n/// @param non_maskable - true if this is a non-maskable interrupt\n/// @param data - the value to be placed on the data bus, if needed\n///////////////////////////////////////////////////////////////////////////////\nlet interrupt = function(non_maskable:boolean, data:number) : boolean\n{\n //console.log(non_maskable, data, iff1, iff2, do_delayed_ei, do_delayed_di);\n if (non_maskable)\n {\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n // Non-maskable interrupts are always handled the same way;\n // clear IFF1 and then do a CALL 0x0066.\n // Also, all interrupts reset the HALT state.\n halted = false;\n iff2 = iff1;\n iff1 = 0;\n push_word(pc);\n pc = 0x66;\n cycle_counter += 11;\n return true;\n }\n else if (iff1)\n {\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n \n halted = false;\n iff1 = 0;\n iff2 = 0;\n \n if (imode === 0)\n {\n // In the 8080-compatible interrupt mode,\n // decode the content of the data bus as an instruction and run it.\n pc = (pc - 1) & 0xffff; //SEH: so do_reset() pushes right value\n decode_instruction(data);\n pc = (pc + 1) & 0xffff; //SEH: so do_reset() pushes right value\n cycle_counter += 2;\n }\n else if (imode === 1)\n {\n // Mode 1 is always just RST 0x38.\n push_word(pc);\n pc = 0x38;\n cycle_counter += 13;\n }\n else if (imode === 2)\n {\n // Mode 2 uses the value on the data bus as in index\n // into the vector table pointer to by the I register.\n push_word(pc);\n // The Z80 manual says that this address must be 2-byte aligned,\n // but it doesn't appear that this is actually the case on the hardware,\n // so we don't attempt to enforce that here.\n var vector_address = ((i << 8) | data);\n pc = core.mem_read(vector_address) | \n (core.mem_read((vector_address + 1) & 0xffff) << 8);\n \n cycle_counter += 19;\n }\n //console.log(imode,data,pc);\n return true;\n }\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// The public API functions end here.\n///\n/// What begins here are just general utility functions, used variously.\n///////////////////////////////////////////////////////////////////////////////\nlet decode_instruction = function(opcode)\n{\n // The register-to-register loads and ALU instructions\n // are all so uniform that we can decode them directly\n // instead of going into the instruction array for them.\n // This function gets the operand for all of these instructions.\n var get_operand = function(opcode)\n {\n return ((opcode & 0x07) === 0) ? b :\n ((opcode & 0x07) === 1) ? c :\n ((opcode & 0x07) === 2) ? d :\n ((opcode & 0x07) === 3) ? e :\n ((opcode & 0x07) === 4) ? h :\n ((opcode & 0x07) === 5) ? l :\n ((opcode & 0x07) === 6) ? core.mem_read(l | (h << 8)) : a;\n };\n\n // Handle HALT right up front, because it fouls up our LD decoding\n // by falling where LD (HL), (HL) ought to be.\n if (opcode === 0x76)\n {\n halted = true;\n }\n else if ((opcode >= 0x40) && (opcode < 0x80))\n {\n // This entire range is all 8-bit register loads.\n // Get the operand and assign it to the correct destination.\n var operand = get_operand(opcode);\n \n if (((opcode & 0x38) >>> 3) === 0)\n b = operand;\n else if (((opcode & 0x38) >>> 3) === 1)\n c = operand;\n else if (((opcode & 0x38) >>> 3) === 2)\n d = operand;\n else if (((opcode & 0x38) >>> 3) === 3)\n e = operand;\n else if (((opcode & 0x38) >>> 3) === 4)\n h = operand;\n else if (((opcode & 0x38) >>> 3) === 5)\n l = operand;\n else if (((opcode & 0x38) >>> 3) === 6)\n core.mem_write(l | (h << 8), operand);\n else if (((opcode & 0x38) >>> 3) === 7)\n a = operand;\n }\n else if ((opcode >= 0x80) && (opcode < 0xc0))\n {\n // These are the 8-bit register ALU instructions.\n // We'll get the operand and then use this \"jump table\"\n // to call the correct utility function for the instruction.\n var operand = get_operand(opcode),\n op_array = [do_add, do_adc, do_sub, do_sbc,\n do_and, do_xor, do_or, do_cp];\n \n op_array[(opcode & 0x38) >>> 3]( operand);\n }\n else\n {\n // This is one of the less formulaic instructions;\n // we'll get the specific function for it from our array.\n var func = instructions[opcode];\n func();\n }\n \n // Update the cycle counter with however many cycles\n // the base instruction took.\n // If this was a prefixed instruction, then\n // the prefix handler has added its extra cycles already.\n cycle_counter += cycle_counts[opcode];\n};\n\nlet get_signed_offset_byte = function(value)\n{\n // This function requires some explanation.\n // We just use JavaScript Number variables for our registers,\n // not like a typed array or anything.\n // That means that, when we have a byte value that's supposed\n // to represent a signed offset, the value we actually see\n // isn't signed at all, it's just a small integer.\n // So, this function converts that byte into something JavaScript\n // will recognize as signed, so we can easily do arithmetic with it.\n // First, we clamp the value to a single byte, just in case.\n value &= 0xff;\n // We don't have to do anything if the value is positive.\n if (value & 0x80)\n {\n // But if the value is negative, we need to manually un-two's-compliment it.\n // I'm going to assume you can figure out what I meant by that,\n // because I don't know how else to explain it.\n // We could also just do value |= 0xffffff00, but I prefer\n // not caring how many bits are in the integer representation\n // of a JavaScript number in the currently running browser.\n value = -((0xff & ~value) + 1);\n }\n return value;\n};\n\nlet get_flags_register = function()\n{\n // We need the whole F register for some reason.\n // probably a PUSH AF instruction,\n // so make the F register out of our separate flags.\n return (flags.S << 7) |\n (flags.Z << 6) |\n (flags.Y << 5) |\n (flags.H << 4) |\n (flags.X << 3) |\n (flags.P << 2) |\n (flags.N << 1) |\n (flags.C);\n};\n\nlet get_flags_prime = function()\n{\n // This is the same as the above for the F' register.\n return (flags_prime.S << 7) |\n (flags_prime.Z << 6) |\n (flags_prime.Y << 5) |\n (flags_prime.H << 4) |\n (flags_prime.X << 3) |\n (flags_prime.P << 2) |\n (flags_prime.N << 1) |\n (flags_prime.C);\n};\n\nlet set_flags_register = function(operand)\n{\n // We need to set the F register, probably for a POP AF,\n // so break out the given value into our separate flags.\n flags.S = (operand & 0x80) >>> 7;\n flags.Z = (operand & 0x40) >>> 6;\n flags.Y = (operand & 0x20) >>> 5;\n flags.H = (operand & 0x10) >>> 4;\n flags.X = (operand & 0x08) >>> 3;\n flags.P = (operand & 0x04) >>> 2;\n flags.N = (operand & 0x02) >>> 1;\n flags.C = (operand & 0x01);\n};\n\nlet set_flags_prime = function(operand)\n{\n // Again, this is the same as the above for F'.\n flags_prime.S = (operand & 0x80) >>> 7;\n flags_prime.Z = (operand & 0x40) >>> 6;\n flags_prime.Y = (operand & 0x20) >>> 5;\n flags_prime.H = (operand & 0x10) >>> 4;\n flags_prime.X = (operand & 0x08) >>> 3;\n flags_prime.P = (operand & 0x04) >>> 2;\n flags_prime.N = (operand & 0x02) >>> 1;\n flags_prime.C = (operand & 0x01);\n};\n\nlet update_xy_flags = function(result)\n{\n // Most of the time, the undocumented flags\n // (sometimes called X and Y, or 3 and 5),\n // take their values from the corresponding bits\n // of the result of the instruction,\n // or from some other related value.\n // This is a utility function to set those flags based on those bits.\n flags.Y = (result & 0x20) >>> 5;\n flags.X = (result & 0x08) >>> 3;\n};\n\nlet get_parity = function(value)\n{\n // We could try to actually calculate the parity every time,\n // but why calculate what you can pre-calculate?\n var parity_bits = [\n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,\n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1\n ];\n return parity_bits[value];\n};\n\nlet push_word = function(operand)\n{\n // Pretty obvious what this function does; given a 16-bit value,\n // decrement the stack pointer, write the high byte to the new\n // stack pointer location, then repeat for the low byte.\n sp = (sp - 1) & 0xffff;\n core.mem_write(sp, (operand & 0xff00) >>> 8);\n sp = (sp - 1) & 0xffff;\n core.mem_write(sp, operand & 0x00ff);\n};\n\nlet pop_word = function()\n{\n // Again, not complicated; read a byte off the top of the stack,\n // increment the stack pointer, rinse and repeat.\n var retval = core.mem_read(sp) & 0xff;\n sp = (sp + 1) & 0xffff;\n retval |= core.mem_read(sp) << 8;\n sp = (sp + 1) & 0xffff;\n return retval;\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// Now, the way most instructions work in this emulator is that they set up\n/// their operands according to their addressing mode, and then they call a\n/// utility function that handles all variations of that instruction.\n/// Those utility functions begin here.\n///////////////////////////////////////////////////////////////////////////////\nlet do_conditional_absolute_jump = function(condition)\n{\n // This function implements the JP [condition],nn instructions.\n if (condition)\n {\n // We're taking this jump, so write the new PC,\n // and then decrement the thing we just wrote,\n // because the instruction decoder increments the PC\n // unconditionally at the end of every instruction\n // and we need to counteract that so we end up at the jump target.\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n }\n else\n {\n // We're not taking this jump, just move the PC past the operand.\n pc = (pc + 2) & 0xffff;\n }\n};\n\nlet do_conditional_relative_jump = function(condition)\n{\n // This function implements the JR [condition],n instructions.\n if (condition)\n {\n // We need a few more cycles to actually take the jump.\n cycle_counter += 5;\n // Calculate the offset specified by our operand.\n var offset = get_signed_offset_byte(core.mem_read((pc + 1) & 0xffff));\n // Add the offset to the PC, also skipping past this instruction.\n pc = (pc + offset + 1) & 0xffff;\n }\n else\n {\n // No jump happening, just skip the operand.\n pc = (pc + 1) & 0xffff;\n }\n};\n\nlet do_conditional_call = function(condition)\n{\n // This function is the CALL [condition],nn instructions.\n // If you've seen the previous functions, you know this drill.\n if (condition)\n {\n cycle_counter += 7;\n push_word((pc + 3) & 0xffff);\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n }\n else\n {\n pc = (pc + 2) & 0xffff;\n }\n};\n\nlet do_conditional_return = function(condition)\n{\n if (condition)\n {\n cycle_counter += 6;\n pc = (pop_word() - 1) & 0xffff;\n }\n};\n\nlet do_reset = function(address)\n{\n // The RST [address] instructions go through here.\n push_word((pc + 1) & 0xffff);\n pc = (address - 1) & 0xffff;\n};\n\nlet do_add = function(operand)\n{\n // This is the ADD A, [operand] instructions.\n // We'll do the literal addition, which includes any overflow,\n // so that we can more easily figure out whether we had\n // an overflow or a carry and set the flags accordingly.\n var result = a + operand;\n \n // The great majority of the work for the arithmetic instructions\n // turns out to be setting the flags rather than the actual operation.\n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((operand & 0x0f) + (a & 0x0f)) & 0x10) ? 1 : 0;\n // An overflow has happened if the sign bits of the accumulator and the operand\n // don't match the sign bit of the result value.\n flags.P = ((a & 0x80) === (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 0;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_adc = function(operand)\n{\n var result = a + operand + flags.C;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((operand & 0x0f) + (a & 0x0f) + flags.C) & 0x10) ? 1 : 0;\n flags.P = ((a & 0x80) === (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 0;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_sub = function(operand)\n{\n var result = a - operand;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((a & 0x0f) - (operand & 0x0f)) & 0x10) ? 1 : 0;\n flags.P = ((a & 0x80) !== (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 1;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_sbc = function(operand)\n{\n var result = a - operand - flags.C;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((a & 0x0f) - (operand & 0x0f) - flags.C) & 0x10) ? 1 : 0;\n flags.P = ((a & 0x80) !== (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 1;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_cp = function(operand)\n{\n // A compare instruction is just a subtraction that doesn't save the value,\n // so we implement it as... a subtraction that doesn't save the value.\n var temp = a;\n do_sub(operand);\n a = temp;\n // Since this instruction has no \"result\" value, the undocumented flags\n // are set based on the operand instead.\n update_xy_flags(operand);\n};\n\nlet do_and = function(operand)\n{\n // The logic instructions are all pretty straightforward.\n a &= operand & 0xff;\n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = 1;\n flags.P = get_parity(a);\n flags.N = 0;\n flags.C = 0;\n update_xy_flags(a);\n};\n\nlet do_or = function(operand)\n{\n a = (operand | a) & 0xff;\n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = 0;\n flags.P = get_parity(a);\n flags.N = 0;\n flags.C = 0;\n update_xy_flags(a);\n};\n\nlet do_xor = function(operand)\n{\n a = (operand ^ a) & 0xff;\n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = 0;\n flags.P = get_parity(a);\n flags.N = 0;\n flags.C = 0;\n update_xy_flags(a);\n};\n\nlet do_inc = function(operand)\n{\n var result = operand + 1;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = ((operand & 0x0f) === 0x0f) ? 1 : 0;\n // It's a good deal easier to detect overflow for an increment/decrement.\n flags.P = (operand === 0x7f) ? 1 : 0;\n flags.N = 0;\n \n result &= 0xff;\n update_xy_flags(result);\n \n return result;\n};\n\nlet do_dec = function(operand)\n{\n var result = operand - 1;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = ((operand & 0x0f) === 0x00) ? 1 : 0;\n flags.P = (operand === 0x80) ? 1 : 0;\n flags.N = 1;\n \n result &= 0xff;\n update_xy_flags(result);\n \n return result;\n};\n\nlet do_hl_add = function(operand)\n{\n // The HL arithmetic instructions are the same as the A ones,\n // just with twice as many bits happening.\n var hl = l | (h << 8), result = hl + operand;\n \n flags.N = 0;\n flags.C = (result & 0x10000) ? 1 : 0;\n flags.H = (((hl & 0x0fff) + (operand & 0x0fff)) & 0x1000) ? 1 : 0;\n \n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n\n update_xy_flags(h);\n};\n\nlet do_hl_adc = function(operand)\n{\n operand += flags.C;\n var hl = l | (h << 8), result = hl + operand;\n \n flags.S = (result & 0x8000) ? 1 : 0;\n flags.Z = !(result & 0xffff) ? 1 : 0;\n flags.H = (((hl & 0x0fff) + (operand & 0x0fff)) & 0x1000) ? 1 : 0;\n flags.P = ((hl & 0x8000) === (operand & 0x8000)) && ((result & 0x8000) !== (hl & 0x8000)) ? 1 : 0;\n flags.N = 0;\n flags.C = (result & 0x10000) ? 1 : 0;\n \n l = result & 0xff;\n h = (result >>> 8) & 0xff;\n \n update_xy_flags(h);\n};\n\nlet do_hl_sbc = function(operand)\n{\n operand += flags.C;\n var hl = l | (h << 8), result = hl - operand;\n \n flags.S = (result & 0x8000) ? 1 : 0;\n flags.Z = !(result & 0xffff) ? 1 : 0;\n flags.H = (((hl & 0x0fff) - (operand & 0x0fff)) & 0x1000) ? 1 : 0;\n flags.P = ((hl & 0x8000) !== (operand & 0x8000)) && ((result & 0x8000) !== (hl & 0x8000)) ? 1 : 0;\n flags.N = 1;\n flags.C = (result & 0x10000) ? 1 : 0;\n \n l = result & 0xff;\n h = (result >>> 8) & 0xff;\n \n update_xy_flags(h);\n};\n\nlet do_in = function(port)\n{\n var result = core.io_read(port);\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = result ? 0 : 1;\n flags.H = 0;\n flags.P = get_parity(result) ? 1 : 0;\n flags.N = 0;\n update_xy_flags(result);\n \n return result;\n};\n\nlet do_neg = function()\n{\n // This instruction is defined to not alter the register if it === 0x80.\n if (a !== 0x80)\n {\n // This is a signed operation, so convert A to a signed value.\n a = get_signed_offset_byte(a);\n \n a = (-a) & 0xff;\n }\n \n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = (((-a) & 0x0f) > 0) ? 1 : 0;\n flags.P = (a === 0x80) ? 1 : 0;\n flags.N = 1;\n flags.C = a ? 1 : 0;\n update_xy_flags(a);\n};\n\nlet do_ldi = function()\n{\n // Copy the value that we're supposed to copy.\n var read_value = core.mem_read(l | (h << 8));\n core.mem_write(e | (d << 8), read_value);\n \n // Increment DE and HL, and decrement BC.\n var result = (e | (d << 8)) + 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.H = 0;\n flags.P = (c || b) ? 1 : 0;\n flags.N = 0;\n flags.Y = ((a + read_value) & 0x02) >>> 1;\n flags.X = ((a + read_value) & 0x08) >>> 3;\n};\n\nlet do_cpi = function()\n{\n var temp_carry = flags.C;\n var read_value = core.mem_read(l | (h << 8))\n do_cp(read_value);\n flags.C = temp_carry;\n flags.Y = ((a - read_value - flags.H) & 0x02) >>> 1;\n flags.X = ((a - read_value - flags.H) & 0x08) >>> 3;\n \n var result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.P = result ? 1 : 0;\n};\n\nlet do_ini = function()\n{\n b = do_dec(b);\n \n core.mem_write(l | (h << 8), core.io_read((b << 8) | c));\n \n var result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n\n flags.N = 1;\n};\n\nlet do_outi = function()\n{\n core.io_write((b << 8) | c, core.mem_read(l | (h << 8)));\n \n var result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n \n b = do_dec(b);\n flags.N = 1;\n};\n\nlet do_ldd = function()\n{\n flags.N = 0;\n flags.H = 0;\n \n var read_value = core.mem_read(l | (h << 8));\n core.mem_write(e | (d << 8), read_value);\n \n var result = (e | (d << 8)) - 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.P = (c || b) ? 1 : 0;\n flags.Y = ((a + read_value) & 0x02) >>> 1;\n flags.X = ((a + read_value) & 0x08) >>> 3;\n};\n\nlet do_cpd = function()\n{\n var temp_carry = flags.C\n var read_value = core.mem_read(l | (h << 8))\n do_cp(read_value);\n flags.C = temp_carry;\n flags.Y = ((a - read_value - flags.H) & 0x02) >>> 1;\n flags.X = ((a - read_value - flags.H) & 0x08) >>> 3;\n \n var result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.P = result ? 1 : 0;\n};\n\nlet do_ind = function()\n{\n b = do_dec(b);\n \n core.mem_write(l | (h << 8), core.io_read((b << 8) | c));\n \n var result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n \n flags.N = 1;\n};\n\nlet do_outd = function()\n{\n core.io_write((b << 8) | c, core.mem_read(l | (h << 8)));\n \n var result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n \n b = do_dec(b);\n flags.N = 1;\n};\n\nlet do_rlc = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = (operand & 0x80) >>> 7;\n operand = ((operand << 1) | flags.C) & 0xff;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_rrc = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = operand & 1;\n operand = ((operand >>> 1) & 0x7f) | (flags.C << 7);\n \n flags.Z = !(operand & 0xff) ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand & 0xff;\n};\n\nlet do_rl = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n var temp = flags.C;\n flags.C = (operand & 0x80) >>> 7;\n operand = ((operand << 1) | temp) & 0xff;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n\n return operand;\n};\n\nlet do_rr = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n var temp = flags.C;\n flags.C = operand & 1;\n operand = ((operand >>> 1) & 0x7f) | (temp << 7);\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n\n return operand;\n};\n\nlet do_sla = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = (operand & 0x80) >>> 7;\n operand = (operand << 1) & 0xff;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_sra = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = operand & 1;\n operand = ((operand >>> 1) & 0x7f) | (operand & 0x80);\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_sll = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = (operand & 0x80) >>> 7;\n operand = ((operand << 1) & 0xff) | 1;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_srl = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = operand & 1;\n operand = (operand >>> 1) & 0x7f;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_ix_add = function(operand)\n{\n flags.N = 0;\n \n var result = ix + operand;\n \n flags.C = (result & 0x10000) ? 1 : 0;\n flags.H = (((ix & 0xfff) + (operand & 0xfff)) & 0x1000) ? 1 : 0;\n update_xy_flags((result & 0xff00) >>> 8);\n \n ix = result & 0xffff;\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// This table contains the implementations for the instructions that weren't\n/// implemented directly in the decoder function (everything but the 8-bit\n/// register loads and the accumulator ALU instructions, in other words).\n/// Similar tables for the ED and DD/FD prefixes follow this one.\n///////////////////////////////////////////////////////////////////////////////\nlet instructions = [];\n\n// 0x00 : NOP\ninstructions[0x00] = function() { };\n// 0x01 : LD BC, nn\ninstructions[0x01] = function()\n{\n pc = (pc + 1) & 0xffff;\n c = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n b = core.mem_read(pc);\n};\n// 0x02 : LD (BC), A\ninstructions[0x02] = function()\n{\n core.mem_write(c | (b << 8), a);\n};\n// 0x03 : INC BC\ninstructions[0x03] = function()\n{\n var result = (c | (b << 8));\n result += 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n};\n// 0x04 : INC B\ninstructions[0x04] = function()\n{\n b = do_inc(b);\n};\n// 0x05 : DEC B\ninstructions[0x05] = function()\n{\n b = do_dec(b);\n};\n// 0x06 : LD B, n\ninstructions[0x06] = function()\n{\n pc = (pc + 1) & 0xffff;\n b = core.mem_read(pc);\n};\n// 0x07 : RLCA\ninstructions[0x07] = function()\n{\n // This instruction is implemented as a special case of the\n // more general Z80-specific RLC instruction.\n // Specifially, RLCA is a version of RLC A that affects fewer flags.\n // The same applies to RRCA, RLA, and RRA.\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rlc(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x08 : EX AF, AF'\ninstructions[0x08] = function()\n{\n var temp = a;\n a = a_prime;\n a_prime = temp;\n \n temp = get_flags_register();\n set_flags_register(get_flags_prime());\n set_flags_prime(temp);\n};\n// 0x09 : ADD HL, BC\ninstructions[0x09] = function()\n{\n do_hl_add(c | (b << 8));\n};\n// 0x0a : LD A, (BC)\ninstructions[0x0a] = function()\n{\n a = core.mem_read(c | (b << 8));\n};\n// 0x0b : DEC BC\ninstructions[0x0b] = function()\n{\n var result = (c | (b << 8));\n result -= 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n};\n// 0x0c : INC C\ninstructions[0x0c] = function()\n{\n c = do_inc(c);\n};\n// 0x0d : DEC C\ninstructions[0x0d] = function()\n{\n c = do_dec(c);\n};\n// 0x0e : LD C, n\ninstructions[0x0e] = function()\n{\n pc = (pc + 1) & 0xffff;\n c = core.mem_read(pc);\n};\n// 0x0f : RRCA\ninstructions[0x0f] = function()\n{\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rrc(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x10 : DJNZ nn\ninstructions[0x10] = function()\n{\n b = (b - 1) & 0xff;\n do_conditional_relative_jump(b !== 0);\n};\n// 0x11 : LD DE, nn\ninstructions[0x11] = function()\n{\n pc = (pc + 1) & 0xffff;\n e = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n d = core.mem_read(pc);\n};\n// 0x12 : LD (DE), A\ninstructions[0x12] = function()\n{\n core.mem_write(e | (d << 8), a);\n};\n// 0x13 : INC DE\ninstructions[0x13] = function()\n{\n var result = (e | (d << 8));\n result += 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n};\n// 0x14 : INC D\ninstructions[0x14] = function()\n{\n d = do_inc(d);\n};\n// 0x15 : DEC D\ninstructions[0x15] = function()\n{\n d = do_dec(d);\n};\n// 0x16 : LD D, n\ninstructions[0x16] = function()\n{\n pc = (pc + 1) & 0xffff;\n d = core.mem_read(pc);\n};\n// 0x17 : RLA\ninstructions[0x17] = function()\n{\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rl(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x18 : JR n\ninstructions[0x18] = function()\n{\n var offset = get_signed_offset_byte(core.mem_read((pc + 1) & 0xffff));\n pc = (pc + offset + 1) & 0xffff;\n};\n// 0x19 : ADD HL, DE\ninstructions[0x19] = function()\n{\n do_hl_add(e | (d << 8));\n};\n// 0x1a : LD A, (DE)\ninstructions[0x1a] = function()\n{\n a = core.mem_read(e | (d << 8));\n};\n// 0x1b : DEC DE\ninstructions[0x1b] = function()\n{\n var result = (e | (d << 8));\n result -= 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n};\n// 0x1c : INC E\ninstructions[0x1c] = function()\n{\n e = do_inc(e);\n};\n// 0x1d : DEC E\ninstructions[0x1d] = function()\n{\n e = do_dec(e);\n};\n// 0x1e : LD E, n\ninstructions[0x1e] = function()\n{\n pc = (pc + 1) & 0xffff;\n e = core.mem_read(pc);\n};\n// 0x1f : RRA\ninstructions[0x1f] = function()\n{\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rr(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x20 : JR NZ, n\ninstructions[0x20] = function()\n{\n do_conditional_relative_jump(!flags.Z);\n};\n// 0x21 : LD HL, nn\ninstructions[0x21] = function()\n{\n pc = (pc + 1) & 0xffff;\n l = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n h = core.mem_read(pc);\n};\n// 0x22 : LD (nn), HL\ninstructions[0x22] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, l);\n core.mem_write((address + 1) & 0xffff, h);\n};\n// 0x23 : INC HL\ninstructions[0x23] = function()\n{\n var result = (l | (h << 8));\n result += 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n};\n// 0x24 : INC H\ninstructions[0x24] = function()\n{\n h = do_inc(h);\n};\n// 0x25 : DEC H\ninstructions[0x25] = function()\n{\n h = do_dec(h);\n};\n// 0x26 : LD H, n\ninstructions[0x26] = function()\n{\n pc = (pc + 1) & 0xffff;\n h = core.mem_read(pc);\n};\n// 0x27 : DAA\ninstructions[0x27] = function()\n{\n var temp = a;\n if (!flags.N)\n {\n if (flags.H || ((a & 0x0f) > 9))\n temp += 0x06;\n if (flags.C || (a > 0x99))\n temp += 0x60;\n }\n else\n {\n if (flags.H || ((a & 0x0f) > 9))\n temp -= 0x06;\n if (flags.C || (a > 0x99))\n temp -= 0x60;\n }\n \n flags.S = (temp & 0x80) ? 1 : 0;\n flags.Z = !(temp & 0xff) ? 1 : 0;\n flags.H = ((a & 0x10) ^ (temp & 0x10)) ? 1 : 0;\n flags.P = get_parity(temp & 0xff);\n // DAA never clears the carry flag if it was already set,\n // but it is able to set the carry flag if it was clear.\n // Don't ask me, I don't know.\n // Note also that we check for a BCD carry, instead of the usual.\n flags.C = (flags.C || (a > 0x99)) ? 1 : 0;\n \n a = temp & 0xff;\n \n update_xy_flags(a);\n};\n// 0x28 : JR Z, n\ninstructions[0x28] = function()\n{\n do_conditional_relative_jump(!!flags.Z);\n};\n// 0x29 : ADD HL, HL\ninstructions[0x29] = function()\n{\n do_hl_add(l | (h << 8));\n};\n// 0x2a : LD HL, (nn)\ninstructions[0x2a] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n l = core.mem_read(address);\n h = core.mem_read((address + 1) & 0xffff);\n};\n// 0x2b : DEC HL\ninstructions[0x2b] = function()\n{\n var result = (l | (h << 8));\n result -= 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n};\n// 0x2c : INC L\ninstructions[0x2c] = function()\n{\n l = do_inc(l);\n};\n// 0x2d : DEC L\ninstructions[0x2d] = function()\n{\n l = do_dec(l);\n};\n// 0x2e : LD L, n\ninstructions[0x2e] = function()\n{\n pc = (pc + 1) & 0xffff;\n l = core.mem_read(pc);\n};\n// 0x2f : CPL\ninstructions[0x2f] = function()\n{\n a = (~a) & 0xff;\n flags.N = 1;\n flags.H = 1;\n update_xy_flags(a);\n};\n// 0x30 : JR NC, n\ninstructions[0x30] = function()\n{\n do_conditional_relative_jump(!flags.C);\n};\n// 0x31 : LD SP, nn\ninstructions[0x31] = function()\n{\n sp = core.mem_read((pc + 1) & 0xffff) | \n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc + 2) & 0xffff;\n};\n// 0x32 : LD (nn), A\ninstructions[0x32] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, a);\n};\n// 0x33 : INC SP\ninstructions[0x33] = function()\n{\n sp = (sp + 1) & 0xffff;\n};\n// 0x34 : INC (HL)\ninstructions[0x34] = function()\n{\n var address = l | (h << 8);\n core.mem_write(address, do_inc(core.mem_read(address)));\n};\n// 0x35 : DEC (HL)\ninstructions[0x35] = function()\n{\n var address = l | (h << 8);\n core.mem_write(address, do_dec(core.mem_read(address)));\n};\n// 0x36 : LD (HL), n\ninstructions[0x36] = function()\n{\n pc = (pc + 1) & 0xffff;\n core.mem_write(l | (h << 8), core.mem_read(pc));\n};\n// 0x37 : SCF\ninstructions[0x37] = function()\n{\n flags.N = 0;\n flags.H = 0;\n flags.C = 1;\n update_xy_flags(a);\n};\n// 0x38 : JR C, n\ninstructions[0x38] = function()\n{\n do_conditional_relative_jump(!!flags.C);\n};\n// 0x39 : ADD HL, SP\ninstructions[0x39] = function()\n{\n do_hl_add(sp);\n};\n// 0x3a : LD A, (nn)\ninstructions[0x3a] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n a = core.mem_read(address);\n};\n// 0x3b : DEC SP\ninstructions[0x3b] = function()\n{\n sp = (sp - 1) & 0xffff;\n};\n// 0x3c : INC A\ninstructions[0x3c] = function()\n{\n a = do_inc(a);\n};\n// 0x3d : DEC A\ninstructions[0x3d] = function()\n{\n a = do_dec(a);\n};\n// 0x3e : LD A, n\ninstructions[0x3e] = function()\n{\n a = core.mem_read((pc + 1) & 0xffff);\n pc = (pc + 1) & 0xffff;\n};\n// 0x3f : CCF\ninstructions[0x3f] = function()\n{\n flags.N = 0;\n flags.H = flags.C;\n flags.C = flags.C ? 0 : 1;\n update_xy_flags(a);\n};\n// 0xc0 : RET NZ\ninstructions[0xc0] = function()\n{\n do_conditional_return(!flags.Z);\n};\n// 0xc1 : POP BC\ninstructions[0xc1] = function()\n{\n var result = pop_word();\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n};\n// 0xc2 : JP NZ, nn\ninstructions[0xc2] = function()\n{\n do_conditional_absolute_jump(!flags.Z);\n};\n// 0xc3 : JP nn\ninstructions[0xc3] = function()\n{\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n};\n// 0xc4 : CALL NZ, nn\ninstructions[0xc4] = function()\n{\n do_conditional_call(!flags.Z);\n};\n// 0xc5 : PUSH BC\ninstructions[0xc5] = function()\n{\n push_word(c | (b << 8));\n};\n// 0xc6 : ADD A, n\ninstructions[0xc6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_add(core.mem_read(pc));\n};\n// 0xc7 : RST 00h\ninstructions[0xc7] = function()\n{\n do_reset(0x00);\n};\n// 0xc8 : RET Z\ninstructions[0xc8] = function()\n{\n do_conditional_return(!!flags.Z);\n};\n// 0xc9 : RET\ninstructions[0xc9] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n};\n// 0xca : JP Z, nn\ninstructions[0xca] = function()\n{\n do_conditional_absolute_jump(!!flags.Z);\n};\n// 0xcb : CB Prefix\ninstructions[0xcb] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n\n // We don't have a table for this prefix,\n // the instructions are all so uniform that we can directly decode them.\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n bit_number = (opcode & 0x38) >>> 3,\n reg_code = opcode & 0x07;\n \n if (opcode < 0x40)\n {\n // Shift/rotate instructions\n var op_array = [do_rlc, do_rrc, do_rl, do_rr,\n do_sla, do_sra, do_sll, do_srl];\n \n if (reg_code === 0)\n b = op_array[bit_number]( b);\n else if (reg_code === 1)\n c = op_array[bit_number]( c);\n else if (reg_code === 2)\n d = op_array[bit_number]( d);\n else if (reg_code === 3)\n e = op_array[bit_number]( e);\n else if (reg_code === 4)\n h = op_array[bit_number]( h);\n else if (reg_code === 5)\n l = op_array[bit_number]( l);\n else if (reg_code === 6)\n core.mem_write(l | (h << 8),\n op_array[bit_number]( core.mem_read(l | (h << 8))));\n else if (reg_code === 7)\n a = op_array[bit_number]( a);\n }\n else if (opcode < 0x80)\n {\n // BIT instructions\n if (reg_code === 0)\n flags.Z = !(b & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 1)\n flags.Z = !(c & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 2)\n flags.Z = !(d & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 3)\n flags.Z = !(e & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 4)\n flags.Z = !(h & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 5)\n flags.Z = !(l & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 6)\n flags.Z = !((core.mem_read(l | (h << 8))) & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 7)\n flags.Z = !(a & (1 << bit_number)) ? 1 : 0;\n \n flags.N = 0;\n flags.H = 1;\n flags.P = flags.Z;\n flags.S = ((bit_number === 7) && !flags.Z) ? 1 : 0;\n // For the BIT n, (HL) instruction, the X and Y flags are obtained\n // from what is apparently an internal temporary register used for\n // some of the 16-bit arithmetic instructions.\n // I haven't implemented that register here,\n // so for now we'll set X and Y the same way for every BIT opcode,\n // which means that they will usually be wrong for BIT n, (HL).\n flags.Y = ((bit_number === 5) && !flags.Z) ? 1 : 0;\n flags.X = ((bit_number === 3) && !flags.Z) ? 1 : 0;\n }\n else if (opcode < 0xc0)\n {\n // RES instructions\n if (reg_code === 0)\n b &= (0xff & ~(1 << bit_number));\n else if (reg_code === 1)\n c &= (0xff & ~(1 << bit_number));\n else if (reg_code === 2)\n d &= (0xff & ~(1 << bit_number));\n else if (reg_code === 3)\n e &= (0xff & ~(1 << bit_number));\n else if (reg_code === 4)\n h &= (0xff & ~(1 << bit_number));\n else if (reg_code === 5)\n l &= (0xff & ~(1 << bit_number));\n else if (reg_code === 6)\n core.mem_write(l | (h << 8),\n core.mem_read(l | (h << 8)) & ~(1 << bit_number));\n else if (reg_code === 7)\n a &= (0xff & ~(1 << bit_number));\n }\n else\n {\n // SET instructions\n if (reg_code === 0)\n b |= (1 << bit_number);\n else if (reg_code === 1)\n c |= (1 << bit_number);\n else if (reg_code === 2)\n d |= (1 << bit_number);\n else if (reg_code === 3)\n e |= (1 << bit_number);\n else if (reg_code === 4)\n h |= (1 << bit_number);\n else if (reg_code === 5)\n l |= (1 << bit_number);\n else if (reg_code === 6)\n core.mem_write(l | (h << 8),\n core.mem_read(l | (h << 8)) | (1 << bit_number));\n else if (reg_code === 7)\n a |= (1 << bit_number);\n }\n \n cycle_counter += cycle_counts_cb[opcode];\n};\n// 0xcc : CALL Z, nn\ninstructions[0xcc] = function()\n{\n do_conditional_call(!!flags.Z);\n};\n// 0xcd : CALL nn\ninstructions[0xcd] = function()\n{\n push_word((pc + 3) & 0xffff);\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n};\n// 0xce : ADC A, n\ninstructions[0xce] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_adc(core.mem_read(pc));\n};\n// 0xcf : RST 08h\ninstructions[0xcf] = function()\n{\n do_reset(0x08);\n};\n// 0xd0 : RET NC\ninstructions[0xd0] = function()\n{\n do_conditional_return(!flags.C);\n};\n// 0xd1 : POP DE\ninstructions[0xd1] = function()\n{\n var result = pop_word();\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n};\n// 0xd2 : JP NC, nn\ninstructions[0xd2] = function()\n{\n do_conditional_absolute_jump(!flags.C);\n};\n// 0xd3 : OUT (n), A\ninstructions[0xd3] = function()\n{\n pc = (pc + 1) & 0xffff;\n core.io_write((a << 8) | core.mem_read(pc), a);\n};\n// 0xd4 : CALL NC, nn\ninstructions[0xd4] = function()\n{\n do_conditional_call(!flags.C);\n};\n// 0xd5 : PUSH DE\ninstructions[0xd5] = function()\n{\n push_word(e | (d << 8));\n};\n// 0xd6 : SUB n\ninstructions[0xd6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_sub(core.mem_read(pc));\n};\n// 0xd7 : RST 10h\ninstructions[0xd7] = function()\n{\n do_reset(0x10);\n};\n// 0xd8 : RET C\ninstructions[0xd8] = function()\n{\n do_conditional_return(!!flags.C);\n};\n// 0xd9 : EXX\ninstructions[0xd9] = function()\n{\n var temp = b;\n b = b_prime;\n b_prime = temp;\n temp = c;\n c = c_prime;\n c_prime = temp;\n temp = d;\n d = d_prime;\n d_prime = temp;\n temp = e;\n e = e_prime;\n e_prime = temp;\n temp = h;\n h = h_prime;\n h_prime = temp;\n temp = l;\n l = l_prime;\n l_prime = temp;\n};\n// 0xda : JP C, nn\ninstructions[0xda] = function()\n{\n do_conditional_absolute_jump(!!flags.C);\n};\n// 0xdb : IN A, (n)\ninstructions[0xdb] = function()\n{\n pc = (pc + 1) & 0xffff;\n a = core.io_read((a << 8) | core.mem_read(pc));\n};\n// 0xdc : CALL C, nn\ninstructions[0xdc] = function()\n{\n do_conditional_call(!!flags.C);\n};\n// 0xdd : DD Prefix (IX instructions)\ninstructions[0xdd] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n func = dd_instructions[opcode];\n \n if (func)\n {\n //func = func.bind(this);\n func();\n cycle_counter += cycle_counts_dd[opcode];\n }\n else\n {\n // Apparently if a DD opcode doesn't exist,\n // it gets treated as an unprefixed opcode.\n // What we'll do to handle that is just back up the \n // program counter, so that this byte gets decoded\n // as a normal instruction.\n pc = (pc - 1) & 0xffff;\n // And we'll add in the cycle count for a NOP.\n cycle_counter += cycle_counts[0];\n }\n};\n// 0xde : SBC n\ninstructions[0xde] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_sbc(core.mem_read(pc));\n};\n// 0xdf : RST 18h\ninstructions[0xdf] = function()\n{\n do_reset(0x18);\n};\n// 0xe0 : RET PO\ninstructions[0xe0] = function()\n{\n do_conditional_return(!flags.P);\n};\n// 0xe1 : POP HL\ninstructions[0xe1] = function()\n{\n var result = pop_word();\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n};\n// 0xe2 : JP PO, (nn)\ninstructions[0xe2] = function()\n{\n do_conditional_absolute_jump(!flags.P);\n};\n// 0xe3 : EX (SP), HL\ninstructions[0xe3] = function()\n{\n var temp = core.mem_read(sp);\n core.mem_write(sp, l);\n l = temp;\n temp = core.mem_read((sp + 1) & 0xffff);\n core.mem_write((sp + 1) & 0xffff, h);\n h = temp;\n};\n// 0xe4 : CALL PO, nn\ninstructions[0xe4] = function()\n{\n do_conditional_call(!flags.P);\n};\n// 0xe5 : PUSH HL\ninstructions[0xe5] = function()\n{\n push_word(l | (h << 8));\n};\n// 0xe6 : AND n\ninstructions[0xe6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_and(core.mem_read(pc));\n};\n// 0xe7 : RST 20h\ninstructions[0xe7] = function()\n{\n do_reset(0x20);\n};\n// 0xe8 : RET PE\ninstructions[0xe8] = function()\n{\n do_conditional_return(!!flags.P);\n};\n// 0xe9 : JP (HL)\ninstructions[0xe9] = function()\n{\n pc = l | (h << 8);\n pc = (pc - 1) & 0xffff;\n};\n// 0xea : JP PE, nn\ninstructions[0xea] = function()\n{\n do_conditional_absolute_jump(!!flags.P);\n};\n// 0xeb : EX DE, HL\ninstructions[0xeb] = function()\n{\n var temp = d;\n d = h;\n h = temp;\n temp = e;\n e = l;\n l = temp;\n};\n// 0xec : CALL PE, nn\ninstructions[0xec] = function()\n{\n do_conditional_call(!!flags.P);\n};\n// 0xed : ED Prefix\ninstructions[0xed] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n func = ed_instructions[opcode];\n \n if (func)\n {\n //func = func.bind(this);\n func();\n cycle_counter += cycle_counts_ed[opcode];\n }\n else\n {\n // If the opcode didn't exist, the whole thing is a two-byte NOP.\n cycle_counter += cycle_counts[0];\n }\n};\n// 0xee : XOR n\ninstructions[0xee] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_xor(core.mem_read(pc));\n};\n// 0xef : RST 28h\ninstructions[0xef] = function()\n{\n do_reset(0x28);\n};\n// 0xf0 : RET P\ninstructions[0xf0] = function()\n{\n do_conditional_return(!flags.S);\n};\n// 0xf1 : POP AF\ninstructions[0xf1] = function()\n{\n var result = pop_word();\n set_flags_register(result & 0xff);\n a = (result & 0xff00) >>> 8;\n};\n// 0xf2 : JP P, nn\ninstructions[0xf2] = function()\n{\n do_conditional_absolute_jump(!flags.S);\n};\n// 0xf3 : DI\ninstructions[0xf3] = function()\n{\n // DI doesn't actually take effect until after the next instruction.\n do_delayed_di = true;\n};\n// 0xf4 : CALL P, nn\ninstructions[0xf4] = function()\n{\n do_conditional_call(!flags.S);\n};\n// 0xf5 : PUSH AF\ninstructions[0xf5] = function()\n{\n push_word(get_flags_register() | (a << 8));\n};\n// 0xf6 : OR n\ninstructions[0xf6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_or(core.mem_read(pc));\n};\n// 0xf7 : RST 30h\ninstructions[0xf7] = function()\n{\n do_reset(0x30);\n};\n// 0xf8 : RET M\ninstructions[0xf8] = function()\n{\n do_conditional_return(!!flags.S);\n};\n// 0xf9 : LD SP, HL\ninstructions[0xf9] = function()\n{\n sp = l | (h << 8);\n};\n// 0xfa : JP M, nn\ninstructions[0xfa] = function()\n{\n do_conditional_absolute_jump(!!flags.S);\n};\n// 0xfb : EI\ninstructions[0xfb] = function()\n{\n // EI doesn't actually take effect until after the next instruction.\n do_delayed_ei = true;\n};\n// 0xfc : CALL M, nn\ninstructions[0xfc] = function()\n{\n do_conditional_call(!!flags.S);\n};\n// 0xfd : FD Prefix (IY instructions)\ninstructions[0xfd] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n \n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n func = dd_instructions[opcode];\n \n if (func)\n {\n // Rather than copy and paste all the IX instructions into IY instructions,\n // what we'll do is sneakily copy IY into IX, run the IX instruction,\n // and then copy the result into IY and restore the old IX.\n var temp = ix;\n ix = iy;\n //func = func.bind(this);\n func();\n iy = ix;\n ix = temp;\n \n cycle_counter += cycle_counts_dd[opcode];\n }\n else\n {\n // Apparently if an FD opcode doesn't exist,\n // it gets treated as an unprefixed opcode.\n // What we'll do to handle that is just back up the \n // program counter, so that this byte gets decoded\n // as a normal instruction.\n pc = (pc - 1) & 0xffff;\n // And we'll add in the cycle count for a NOP.\n cycle_counter += cycle_counts[0];\n }\n};\n// 0xfe : CP n\ninstructions[0xfe] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_cp(core.mem_read(pc));\n};\n// 0xff : RST 38h\ninstructions[0xff] = function()\n{\n do_reset(0x38);\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// This table of ED opcodes is pretty sparse;\n/// there are not very many valid ED-prefixed opcodes in the Z80,\n/// and many of the ones that are valid are not documented.\n///////////////////////////////////////////////////////////////////////////////\nlet ed_instructions = [];\n// 0x40 : IN B, (C)\ned_instructions[0x40] = function()\n{\n b = do_in((b << 8) | c);\n};\n// 0x41 : OUT (C), B\ned_instructions[0x41] = function()\n{\n core.io_write((b << 8) | c, b);\n};\n// 0x42 : SBC HL, BC\ned_instructions[0x42] = function()\n{\n do_hl_sbc(c | (b << 8));\n};\n// 0x43 : LD (nn), BC\ned_instructions[0x43] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, c);\n core.mem_write((address + 1) & 0xffff, b);\n};\n// 0x44 : NEG\ned_instructions[0x44] = function()\n{\n do_neg();\n};\n// 0x45 : RETN\ned_instructions[0x45] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x46 : IM 0\ned_instructions[0x46] = function()\n{\n imode = 0;\n};\n// 0x47 : LD I, A\ned_instructions[0x47] = function()\n{\n i = a\n};\n// 0x48 : IN C, (C)\ned_instructions[0x48] = function()\n{\n c = do_in((b << 8) | c);\n};\n// 0x49 : OUT (C), C\ned_instructions[0x49] = function()\n{\n core.io_write((b << 8) | c, c);\n};\n// 0x4a : ADC HL, BC\ned_instructions[0x4a] = function()\n{\n do_hl_adc(c | (b << 8));\n};\n// 0x4b : LD BC, (nn)\ned_instructions[0x4b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n c = core.mem_read(address);\n b = core.mem_read((address + 1) & 0xffff);\n};\n// 0x4c : NEG (Undocumented)\ned_instructions[0x4c] = function()\n{\n do_neg();\n};\n// 0x4d : RETI\ned_instructions[0x4d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n};\n// 0x4e : IM 0 (Undocumented)\ned_instructions[0x4e] = function()\n{\n imode = 0;\n};\n// 0x4f : LD R, A\ned_instructions[0x4f] = function()\n{\n r = a;\n};\n// 0x50 : IN D, (C)\ned_instructions[0x50] = function()\n{\n d = do_in((b << 8) | c);\n};\n// 0x51 : OUT (C), D\ned_instructions[0x51] = function()\n{\n core.io_write((b << 8) | c, d);\n};\n// 0x52 : SBC HL, DE\ned_instructions[0x52] = function()\n{\n do_hl_sbc(e | (d << 8));\n};\n// 0x53 : LD (nn), DE\ned_instructions[0x53] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, e);\n core.mem_write((address + 1) & 0xffff, d);\n};\n// 0x54 : NEG (Undocumented)\ned_instructions[0x54] = function()\n{\n do_neg();\n};\n// 0x55 : RETN\ned_instructions[0x55] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x56 : IM 1\ned_instructions[0x56] = function()\n{\n imode = 1;\n};\n// 0x57 : LD A, I\ned_instructions[0x57] = function()\n{\n a = i;\n flags.S = a & 0x80 ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = iff2;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x58 : IN E, (C)\ned_instructions[0x58] = function()\n{\n e = do_in((b << 8) | c);\n};\n// 0x59 : OUT (C), E\ned_instructions[0x59] = function()\n{\n core.io_write((b << 8) | c, e);\n};\n// 0x5a : ADC HL, DE\ned_instructions[0x5a] = function()\n{\n do_hl_adc(e | (d << 8));\n};\n// 0x5b : LD DE, (nn)\ned_instructions[0x5b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n e = core.mem_read(address);\n d = core.mem_read((address + 1) & 0xffff);\n};\n// 0x5c : NEG (Undocumented)\ned_instructions[0x5c] = function()\n{\n do_neg();\n};\n// 0x5d : RETN\ned_instructions[0x5d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x5e : IM 2\ned_instructions[0x5e] = function()\n{\n imode = 2;\n};\n// 0x5f : LD A, R\ned_instructions[0x5f] = function()\n{\n a = r;\n flags.S = a & 0x80 ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = iff2;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x60 : IN H, (C)\ned_instructions[0x60] = function()\n{\n h = do_in((b << 8) | c);\n};\n// 0x61 : OUT (C), H\ned_instructions[0x61] = function()\n{\n core.io_write((b << 8) | c, h);\n};\n// 0x62 : SBC HL, HL\ned_instructions[0x62] = function()\n{\n do_hl_sbc(l | (h << 8));\n};\n// 0x63 : LD (nn), HL (Undocumented)\ned_instructions[0x63] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, l);\n core.mem_write((address + 1) & 0xffff, h);\n};\n// 0x64 : NEG (Undocumented)\ned_instructions[0x64] = function()\n{\n do_neg();\n};\n// 0x65 : RETN\ned_instructions[0x65] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x66 : IM 0\ned_instructions[0x66] = function()\n{\n imode = 0;\n};\n// 0x67 : RRD\ned_instructions[0x67] = function()\n{\n var hl_value = core.mem_read(l | (h << 8));\n var temp1 = hl_value & 0x0f, temp2 = a & 0x0f;\n hl_value = ((hl_value & 0xf0) >>> 4) | (temp2 << 4);\n a = (a & 0xf0) | temp1;\n core.mem_write(l | (h << 8), hl_value);\n \n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = get_parity(a) ? 1 : 0;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x68 : IN L, (C)\ned_instructions[0x68] = function()\n{\n l = do_in((b << 8) | c);\n};\n// 0x69 : OUT (C), L\ned_instructions[0x69] = function()\n{\n core.io_write((b << 8) | c, l);\n};\n// 0x6a : ADC HL, HL\ned_instructions[0x6a] = function()\n{\n do_hl_adc(l | (h << 8));\n};\n// 0x6b : LD HL, (nn) (Undocumented)\ned_instructions[0x6b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n l = core.mem_read(address);\n h = core.mem_read((address + 1) & 0xffff);\n};\n// 0x6c : NEG (Undocumented)\ned_instructions[0x6c] = function()\n{\n do_neg();\n};\n// 0x6d : RETN\ned_instructions[0x6d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x6e : IM 0 (Undocumented)\ned_instructions[0x6e] = function()\n{\n imode = 0;\n};\n// 0x6f : RLD\ned_instructions[0x6f] = function()\n{\n var hl_value = core.mem_read(l | (h << 8));\n var temp1 = hl_value & 0xf0, temp2 = a & 0x0f;\n hl_value = ((hl_value & 0x0f) << 4) | temp2;\n a = (a & 0xf0) | (temp1 >>> 4);\n core.mem_write(l | (h << 8), hl_value);\n \n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = get_parity(a) ? 1 : 0;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x70 : IN (C) (Undocumented)\ned_instructions[0x70] = function()\n{\n do_in((b << 8) | c);\n};\n// 0x71 : OUT (C), 0 (Undocumented)\ned_instructions[0x71] = function()\n{\n core.io_write((b << 8) | c, 0);\n};\n// 0x72 : SBC HL, SP\ned_instructions[0x72] = function()\n{\n do_hl_sbc(sp);\n};\n// 0x73 : LD (nn), SP\ned_instructions[0x73] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, sp & 0xff);\n core.mem_write((address + 1) & 0xffff, (sp >>> 8) & 0xff);\n};\n// 0x74 : NEG (Undocumented)\ned_instructions[0x74] = function()\n{\n do_neg();\n};\n// 0x75 : RETN\ned_instructions[0x75] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x76 : IM 1\ned_instructions[0x76] = function()\n{\n imode = 1;\n};\n// 0x78 : IN A, (C)\ned_instructions[0x78] = function()\n{\n a = do_in((b << 8) | c);\n};\n// 0x79 : OUT (C), A\ned_instructions[0x79] = function()\n{\n core.io_write((b << 8) | c, a);\n};\n// 0x7a : ADC HL, SP\ned_instructions[0x7a] = function()\n{\n do_hl_adc(sp);\n};\n// 0x7b : LD SP, (nn)\ned_instructions[0x7b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n sp = core.mem_read(address);\n sp |= core.mem_read((address + 1) & 0xffff) << 8;\n};\n// 0x7c : NEG (Undocumented)\ned_instructions[0x7c] = function()\n{\n do_neg();\n};\n// 0x7d : RETN\ned_instructions[0x7d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x7e : IM 2\ned_instructions[0x7e] = function()\n{\n imode = 2;\n};\n// 0xa0 : LDI\ned_instructions[0xa0] = function()\n{\n do_ldi();\n};\n// 0xa1 : CPI\ned_instructions[0xa1] = function()\n{\n do_cpi();\n};\n// 0xa2 : INI\ned_instructions[0xa2] = function()\n{\n do_ini();\n};\n// 0xa3 : OUTI\ned_instructions[0xa3] = function()\n{\n do_outi();\n};\n// 0xa8 : LDD\ned_instructions[0xa8] = function()\n{\n do_ldd();\n};\n// 0xa9 : CPD\ned_instructions[0xa9] = function()\n{\n do_cpd();\n};\n// 0xaa : IND\ned_instructions[0xaa] = function()\n{\n do_ind();\n};\n// 0xab : OUTD\ned_instructions[0xab] = function()\n{\n do_outd();\n};\n// 0xb0 : LDIR\ned_instructions[0xb0] = function()\n{\n do_ldi();\n if (b || c)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb1 : CPIR\ned_instructions[0xb1] = function()\n{\n do_cpi();\n if (!flags.Z && (b || c))\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb2 : INIR\ned_instructions[0xb2] = function()\n{\n do_ini();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb3 : OTIR\ned_instructions[0xb3] = function()\n{\n do_outi();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb8 : LDDR\ned_instructions[0xb8] = function()\n{\n do_ldd();\n if (b || c)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb9 : CPDR\ned_instructions[0xb9] = function()\n{\n do_cpd();\n if (!flags.Z && (b || c))\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xba : INDR\ned_instructions[0xba] = function()\n{\n do_ind();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xbb : OTDR\ned_instructions[0xbb] = function()\n{\n do_outd();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// Like ED, this table is quite sparse,\n/// and many of the opcodes here are also undocumented.\n/// The undocumented instructions here are those that deal with only one byte\n/// of the two-byte IX register; the bytes are designed IXH and IXL here.\n///////////////////////////////////////////////////////////////////////////////\nlet dd_instructions = [];\n// 0x09 : ADD IX, BC\ndd_instructions[0x09] = function()\n{\n do_ix_add(c | (b << 8));\n};\n// 0x19 : ADD IX, DE\ndd_instructions[0x19] = function()\n{\n do_ix_add(e | (d << 8));\n};\n// 0x21 : LD IX, nn\ndd_instructions[0x21] = function()\n{\n pc = (pc + 1) & 0xffff;\n ix = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n ix |= (core.mem_read(pc) << 8);\n};\n// 0x22 : LD (nn), IX\ndd_instructions[0x22] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= (core.mem_read(pc) << 8);\n \n core.mem_write(address, ix & 0xff);\n core.mem_write((address + 1) & 0xffff, (ix >>> 8) & 0xff);\n};\n// 0x23 : INC IX\ndd_instructions[0x23] = function()\n{\n ix = (ix + 1) & 0xffff;\n};\n// 0x24 : INC IXH (Undocumented)\ndd_instructions[0x24] = function()\n{\n ix = (do_inc(ix >>> 8) << 8) | (ix & 0xff);\n};\n// 0x25 : DEC IXH (Undocumented)\ndd_instructions[0x25] = function()\n{\n ix = (do_dec(ix >>> 8) << 8) | (ix & 0xff);\n};\n// 0x26 : LD IXH, n (Undocumented)\ndd_instructions[0x26] = function()\n{\n pc = (pc + 1) & 0xffff;\n ix = (core.mem_read(pc) << 8) | (ix & 0xff);\n};\n// 0x29 : ADD IX, IX\ndd_instructions[0x29] = function()\n{\n do_ix_add(ix);\n};\n// 0x2a : LD IX, (nn)\ndd_instructions[0x2a] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= (core.mem_read(pc) << 8);\n \n ix = core.mem_read(address);\n ix |= (core.mem_read((address + 1) & 0xffff) << 8);\n};\n// 0x2b : DEC IX\ndd_instructions[0x2b] = function()\n{\n ix = (ix - 1) & 0xffff;\n};\n// 0x2c : INC IXL (Undocumented)\ndd_instructions[0x2c] = function()\n{\n ix = do_inc(ix & 0xff) | (ix & 0xff00);\n};\n// 0x2d : DEC IXL (Undocumented)\ndd_instructions[0x2d] = function()\n{\n ix = do_dec(ix & 0xff) | (ix & 0xff00);\n};\n// 0x2e : LD IXL, n (Undocumented)\ndd_instructions[0x2e] = function()\n{\n pc = (pc + 1) & 0xffff;\n ix = (core.mem_read(pc) & 0xff) | (ix & 0xff00);\n};\n// 0x34 : INC (IX+n)\ndd_instructions[0x34] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc)),\n value = core.mem_read((offset + ix) & 0xffff);\n core.mem_write((offset + ix) & 0xffff, do_inc(value));\n};\n// 0x35 : DEC (IX+n)\ndd_instructions[0x35] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc)),\n value = core.mem_read((offset + ix) & 0xffff);\n core.mem_write((offset + ix) & 0xffff, do_dec(value));\n};\n// 0x36 : LD (IX+n), n\ndd_instructions[0x36] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n pc = (pc + 1) & 0xffff;\n core.mem_write((ix + offset) & 0xffff, core.mem_read(pc)); \n};\n// 0x39 : ADD IX, SP\ndd_instructions[0x39] = function()\n{\n do_ix_add(sp);\n};\n// 0x44 : LD B, IXH (Undocumented)\ndd_instructions[0x44] = function()\n{\n b = (ix >>> 8) & 0xff;\n};\n// 0x45 : LD B, IXL (Undocumented)\ndd_instructions[0x45] = function()\n{\n b = ix & 0xff;\n};\n// 0x46 : LD B, (IX+n)\ndd_instructions[0x46] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n b = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x4c : LD C, IXH (Undocumented)\ndd_instructions[0x4c] = function()\n{\n c = (ix >>> 8) & 0xff;\n};\n// 0x4d : LD C, IXL (Undocumented)\ndd_instructions[0x4d] = function()\n{\n c = ix & 0xff;\n};\n// 0x4e : LD C, (IX+n)\ndd_instructions[0x4e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n c = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x54 : LD D, IXH (Undocumented)\ndd_instructions[0x54] = function()\n{\n d = (ix >>> 8) & 0xff;\n};\n// 0x55 : LD D, IXL (Undocumented)\ndd_instructions[0x55] = function()\n{\n d = ix & 0xff;\n};\n// 0x56 : LD D, (IX+n)\ndd_instructions[0x56] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n d = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x5c : LD E, IXH (Undocumented)\ndd_instructions[0x5c] = function()\n{\n e = (ix >>> 8) & 0xff;\n};\n// 0x5d : LD E, IXL (Undocumented)\ndd_instructions[0x5d] = function()\n{\n e = ix & 0xff;\n};\n// 0x5e : LD E, (IX+n)\ndd_instructions[0x5e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n e = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x60 : LD IXH, B (Undocumented)\ndd_instructions[0x60] = function()\n{\n ix = (ix & 0xff) | (b << 8);\n};\n// 0x61 : LD IXH, C (Undocumented)\ndd_instructions[0x61] = function()\n{\n ix = (ix & 0xff) | (c << 8);\n};\n// 0x62 : LD IXH, D (Undocumented)\ndd_instructions[0x62] = function()\n{\n ix = (ix & 0xff) | (d << 8);\n};\n// 0x63 : LD IXH, E (Undocumented)\ndd_instructions[0x63] = function()\n{\n ix = (ix & 0xff) | (e << 8);\n};\n// 0x64 : LD IXH, IXH (Undocumented)\ndd_instructions[0x64] = function()\n{\n // No-op.\n};\n// 0x65 : LD IXH, IXL (Undocumented)\ndd_instructions[0x65] = function()\n{\n ix = (ix & 0xff) | ((ix & 0xff) << 8);\n};\n// 0x66 : LD H, (IX+n)\ndd_instructions[0x66] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n h = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x67 : LD IXH, A (Undocumented)\ndd_instructions[0x67] = function()\n{\n ix = (ix & 0xff) | (a << 8);\n};\n// 0x68 : LD IXL, B (Undocumented)\ndd_instructions[0x68] = function()\n{\n ix = (ix & 0xff00) | b;\n};\n// 0x69 : LD IXL, C (Undocumented)\ndd_instructions[0x69] = function()\n{\n ix = (ix & 0xff00) | c;\n};\n// 0x6a : LD IXL, D (Undocumented)\ndd_instructions[0x6a] = function()\n{\n ix = (ix & 0xff00) | d;\n};\n// 0x6b : LD IXL, E (Undocumented)\ndd_instructions[0x6b] = function()\n{\n ix = (ix & 0xff00) | e;\n};\n// 0x6c : LD IXL, IXH (Undocumented)\ndd_instructions[0x6c] = function()\n{\n ix = (ix & 0xff00) | (ix >>> 8);\n};\n// 0x6d : LD IXL, IXL (Undocumented)\ndd_instructions[0x6d] = function()\n{\n // No-op.\n};\n// 0x6e : LD L, (IX+n)\ndd_instructions[0x6e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n l = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x6f : LD IXL, A (Undocumented)\ndd_instructions[0x6f] = function()\n{\n ix = (ix & 0xff00) | a;\n};\n// 0x70 : LD (IX+n), B\ndd_instructions[0x70] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, b);\n};\n// 0x71 : LD (IX+n), C\ndd_instructions[0x71] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, c);\n};\n// 0x72 : LD (IX+n), D\ndd_instructions[0x72] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, d);\n};\n// 0x73 : LD (IX+n), E\ndd_instructions[0x73] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, e);\n};\n// 0x74 : LD (IX+n), H\ndd_instructions[0x74] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, h);\n};\n// 0x75 : LD (IX+n), L\ndd_instructions[0x75] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, l);\n};\n// 0x77 : LD (IX+n), A\ndd_instructions[0x77] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, a);\n};\n// 0x7c : LD A, IXH (Undocumented)\ndd_instructions[0x7c] = function()\n{\n a = (ix >>> 8) & 0xff;\n};\n// 0x7d : LD A, IXL (Undocumented)\ndd_instructions[0x7d] = function()\n{\n a = ix & 0xff;\n};\n// 0x7e : LD A, (IX+n)\ndd_instructions[0x7e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n a = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x84 : ADD A, IXH (Undocumented)\ndd_instructions[0x84] = function()\n{\n do_add((ix >>> 8) & 0xff);\n};\n// 0x85 : ADD A, IXL (Undocumented)\ndd_instructions[0x85] = function()\n{\n do_add(ix & 0xff);\n};\n// 0x86 : ADD A, (IX+n)\ndd_instructions[0x86] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_add(core.mem_read((ix + offset) & 0xffff));\n};\n// 0x8c : ADC A, IXH (Undocumented)\ndd_instructions[0x8c] = function()\n{\n do_adc((ix >>> 8) & 0xff);\n};\n// 0x8d : ADC A, IXL (Undocumented)\ndd_instructions[0x8d] = function()\n{\n do_adc(ix & 0xff);\n};\n// 0x8e : ADC A, (IX+n)\ndd_instructions[0x8e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_adc(core.mem_read((ix + offset) & 0xffff));\n};\n// 0x94 : SUB IXH (Undocumented)\ndd_instructions[0x94] = function()\n{\n do_sub((ix >>> 8) & 0xff);\n};\n// 0x95 : SUB IXL (Undocumented)\ndd_instructions[0x95] = function()\n{\n do_sub(ix & 0xff);\n};\n// 0x96 : SUB A, (IX+n)\ndd_instructions[0x96] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_sub(core.mem_read((ix + offset) & 0xffff));\n};\n// 0x9c : SBC IXH (Undocumented)\ndd_instructions[0x9c] = function()\n{\n do_sbc((ix >>> 8) & 0xff);\n};\n// 0x9d : SBC IXL (Undocumented)\ndd_instructions[0x9d] = function()\n{\n do_sbc(ix & 0xff);\n};\n// 0x9e : SBC A, (IX+n)\ndd_instructions[0x9e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_sbc(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xa4 : AND IXH (Undocumented)\ndd_instructions[0xa4] = function()\n{\n do_and((ix >>> 8) & 0xff);\n};\n// 0xa5 : AND IXL (Undocumented)\ndd_instructions[0xa5] = function()\n{\n do_and(ix & 0xff);\n};\n// 0xa6 : AND A, (IX+n)\ndd_instructions[0xa6] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_and(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xac : XOR IXH (Undocumented)\ndd_instructions[0xac] = function()\n{\n do_xor((ix >>> 8) & 0xff);\n};\n// 0xad : XOR IXL (Undocumented)\ndd_instructions[0xad] = function()\n{\n do_xor(ix & 0xff);\n};\n// 0xae : XOR A, (IX+n)\ndd_instructions[0xae] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_xor(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xb4 : OR IXH (Undocumented)\ndd_instructions[0xb4] = function()\n{\n do_or((ix >>> 8) & 0xff);\n};\n// 0xb5 : OR IXL (Undocumented)\ndd_instructions[0xb5] = function()\n{\n do_or(ix & 0xff);\n};\n// 0xb6 : OR A, (IX+n)\ndd_instructions[0xb6] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_or(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xbc : CP IXH (Undocumented)\ndd_instructions[0xbc] = function()\n{\n do_cp((ix >>> 8) & 0xff);\n};\n// 0xbd : CP IXL (Undocumented)\ndd_instructions[0xbd] = function()\n{\n do_cp(ix & 0xff);\n};\n// 0xbe : CP A, (IX+n)\ndd_instructions[0xbe] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_cp(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xcb : CB Prefix (IX bit instructions)\ndd_instructions[0xcb] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc), value;\n \n // As with the \"normal\" CB prefix, we implement the DDCB prefix\n // by decoding the opcode directly, rather than using a table.\n if (opcode < 0x40)\n {\n // Shift and rotate instructions.\n var ddcb_functions = [do_rlc, do_rrc, do_rl, do_rr,\n do_sla, do_sra, do_sll, do_srl];\n \n // Most of the opcodes in this range are not valid,\n // so we map this opcode onto one of the ones that is.\n var func = ddcb_functions[(opcode & 0x38) >>> 3],\n value = func( core.mem_read((ix + offset) & 0xffff));\n \n core.mem_write((ix + offset) & 0xffff, value);\n }\n else\n {\n var bit_number = (opcode & 0x38) >>> 3;\n \n if (opcode < 0x80)\n {\n // BIT\n flags.N = 0;\n flags.H = 1;\n flags.Z = !(core.mem_read((ix + offset) & 0xffff) & (1 << bit_number)) ? 1 : 0;\n flags.P = flags.Z;\n flags.S = ((bit_number === 7) && !flags.Z) ? 1 : 0;\n }\n else if (opcode < 0xc0)\n {\n // RES\n value = core.mem_read((ix + offset) & 0xffff) & ~(1 << bit_number) & 0xff;\n core.mem_write((ix + offset) & 0xffff, value);\n }\n else\n {\n // SET\n value = core.mem_read((ix + offset) & 0xffff) | (1 << bit_number);\n core.mem_write((ix + offset) & 0xffff, value);\n }\n }\n \n // This implements the undocumented shift, RES, and SET opcodes,\n // which write their result to memory and also to an 8080 register.\n if (value !== undefined)\n {\n if ((opcode & 0x07) === 0)\n b = value;\n else if ((opcode & 0x07) === 1)\n c = value;\n else if ((opcode & 0x07) === 2)\n d = value;\n else if ((opcode & 0x07) === 3)\n e = value;\n else if ((opcode & 0x07) === 4)\n h = value;\n else if ((opcode & 0x07) === 5)\n l = value;\n // 6 is the documented opcode, which doesn't set a register.\n else if ((opcode & 0x07) === 7)\n a = value;\n }\n \n cycle_counter += cycle_counts_cb[opcode] + 8;\n};\n// 0xe1 : POP IX\ndd_instructions[0xe1] = function()\n{\n ix = pop_word();\n};\n// 0xe3 : EX (SP), IX\ndd_instructions[0xe3] = function()\n{\n var temp = ix;\n ix = core.mem_read(sp);\n ix |= core.mem_read((sp + 1) & 0xffff) << 8;\n core.mem_write(sp, temp & 0xff);\n core.mem_write((sp + 1) & 0xffff, (temp >>> 8) & 0xff);\n};\n// 0xe5 : PUSH IX\ndd_instructions[0xe5] = function()\n{\n push_word(ix);\n};\n// 0xe9 : JP (IX)\ndd_instructions[0xe9] = function()\n{\n pc = (ix - 1) & 0xffff;\n};\n// 0xf9 : LD SP, IX\ndd_instructions[0xf9] = function()\n{\n sp = ix;\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// These tables contain the number of T cycles used for each instruction.\n/// In a few special cases, such as conditional control flow instructions,\n/// additional cycles might be added to these values.\n/// The total number of cycles is the return value of run_instruction().\n///////////////////////////////////////////////////////////////////////////////\nlet cycle_counts = [\n 4, 10, 7, 6, 4, 4, 7, 4, 4, 11, 7, 6, 4, 4, 7, 4,\n 8, 10, 7, 6, 4, 4, 7, 4, 12, 11, 7, 6, 4, 4, 7, 4,\n 7, 10, 16, 6, 4, 4, 7, 4, 7, 11, 16, 6, 4, 4, 7, 4,\n 7, 10, 13, 6, 11, 11, 10, 4, 7, 11, 13, 6, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 5, 10, 10, 10, 10, 11, 7, 11, 5, 10, 10, 0, 10, 17, 7, 11,\n 5, 10, 10, 11, 10, 11, 7, 11, 5, 4, 10, 11, 10, 0, 7, 11,\n 5, 10, 10, 19, 10, 11, 7, 11, 5, 4, 10, 4, 10, 0, 7, 11,\n 5, 10, 10, 4, 10, 11, 7, 11, 5, 6, 10, 4, 10, 0, 7, 11\n];\n\nlet cycle_counts_ed = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 12, 12, 15, 20, 8, 14, 8, 9, 12, 12, 15, 20, 8, 14, 8, 9,\n 12, 12, 15, 20, 8, 14, 8, 9, 12, 12, 15, 20, 8, 14, 8, 9,\n 12, 12, 15, 20, 8, 14, 8, 18, 12, 12, 15, 20, 8, 14, 8, 18,\n 12, 12, 15, 20, 8, 14, 8, 0, 12, 12, 15, 20, 8, 14, 8, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 16, 16, 16, 16, 0, 0, 0, 0, 16, 16, 16, 16, 0, 0, 0, 0,\n 16, 16, 16, 16, 0, 0, 0, 0, 16, 16, 16, 16, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n];\n\nlet cycle_counts_cb = [\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8\n];\n\nlet cycle_counts_dd = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0,\n 0, 14, 20, 10, 8, 8, 11, 0, 0, 15, 20, 10, 8, 8, 11, 0,\n 0, 0, 0, 0, 23, 23, 19, 0, 0, 15, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 8, 8, 8, 8, 8, 8, 19, 8, 8, 8, 8, 8, 8, 8, 19, 8,\n 19, 19, 19, 19, 19, 19, 0, 19, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 14, 0, 23, 0, 15, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0\n];\n\n // There's tons of stuff in this object,\n // but only these three functions are the public API.\n this.saveState = getState;\n this.loadState = setState;\n this.reset = reset;\n this.advanceInsn = run_instruction;\n this.interrupt = interrupt;\n this.getPC = ():number => { return pc; }\n this.getSP = ():number => { return sp; }\n this.getHalted = ():boolean => { return halted; }\n}\n\nexport interface Z80State {\nAF : number;\nBC : number;\nDE : number;\nHL : number;\nAF_ : number;\nBC_ : number;\nDE_ : number;\nHL_ : number;\nIX : number;\nIY : number;\nSP : number;\nPC : number;\nIR : number;\niff1 : number;\niff2 : number;\nim : number;\nhalted : boolean;\ndo_delayed_di : boolean;\ndo_delayed_ei : boolean;\ncycle_counter : number;\n}\n\nexport class Z80 implements CPU, InstructionBased, IOBusConnected, SavesState, Interruptable {\n\n cpu;\n interruptType;\n memBus : Bus;\n ioBus : Bus;\n retryInterrupts : boolean = false;\n retryData : number = -1;\n \n private buildCPU() {\n // Build the core only once and route its callbacks through the current\n // bus fields. BasicHeadlessMachine.rewireCPUBuses() swaps memBus/ioBus\n // whenever a probe is attached or detached; rebuilding here would throw\n // away the whole register state (i.e. reset the machine). FastZ80 calls\n // core.mem_read/... at instruction time, so the closures pick up the swap.\n if (this.memBus && this.ioBus && !this.cpu) {\n this.cpu = new FastZ80({\n mem_read: (a) => this.memBus.read(a),\n mem_write: (a, v) => this.memBus.write(a, v),\n io_read: (a) => this.ioBus.read(a),\n io_write: (a, v) => this.ioBus.write(a, v),\n });\n }\n }\n connectMemoryBus(bus:Bus) {\n this.memBus = bus;\n this.buildCPU();\n }\n connectIOBus(bus:Bus) {\n this.ioBus = bus;\n this.buildCPU();\n }\n advanceInsn() {\n if (this.retryInterrupts && this.retryData >= 0 && this.cpu.interrupt(false, this.retryData)) {\n this.retryData = -1;\n }\n return this.cpu.advanceInsn();\n }\n reset() {\n this.cpu.reset();\n }\n interrupt(data:number) {\n if (!this.cpu.interrupt(false, data) && this.retryInterrupts) {\n this.retryData = data;\n }\n }\n NMI() {\n this.cpu.interrupt(true, 0);\n }\n getSP() {\n return this.cpu.getSP();\n }\n getPC() {\n return this.cpu.getPC();\n }\n isHalted() {\n return this.cpu.getHalted();\n }\n saveState() {\n return this.cpu.saveState();\n }\n loadState(s) {\n this.cpu.loadState(s);\n }\n isStable() { return true; }\n // TODO: metadata\n // TODO: disassembler\n}\n", "\nimport { SampledAudioSink } from \"./devices\";\n\n// from TSS\ndeclare var MasterChannel, AudioLooper, PsgDeviceChannel;\n\nexport class MasterAudio {\n master = new MasterChannel();\n looper;\n start() {\n if (!this.looper) {\n this.looper = new AudioLooper(512);\n this.looper.setChannel(this.master);\n this.looper.activate();\n // AudioLooper makes its own AudioContext and never resumes it\n resumeAudioContext(this.looper.audioContext);\n }\n }\n stop() {\n if (this.looper) {\n this.looper.setChannel(null);\n this.looper = null;\n }\n }\n}\n\nexport class AY38910_Audio {\n master : MasterAudio;\n psg = new PsgDeviceChannel();\n curreg = 0;\n\n constructor(master : MasterAudio) {\n this.master = master;\n this.psg.setMode(PsgDeviceChannel.MODE_SIGNED);\n this.psg.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910);\n master.master.addChannel(this.psg);\n }\n\n reset() {\n for (var i=15; i>=0; i--) {\n this.selectRegister(i);\n this.setData(0);\n }\n }\n selectRegister(val : number) {\n this.curreg = val & 0xf;\n }\n setData(val : number) {\n this.psg.writeRegisterAY(this.curreg, val & 0xff);\n }\n readData() {\n return this.psg.readRegister(this.curreg);\n }\n currentRegister() { return this.curreg; }\n}\n\nexport class SN76489_Audio {\n master : MasterAudio;\n psg = new PsgDeviceChannel();\n\n constructor(master : MasterAudio) {\n this.master = master;\n this.psg.setMode(PsgDeviceChannel.MODE_SIGNED);\n this.psg.setDevice(PsgDeviceChannel.DEVICE_SN76489);\n master.master.addChannel(this.psg);\n }\n reset() {\n // TODO\n }\n setData(val : number) {\n this.psg.writeRegisterSN(0, val & 0xff);\n }\n}\n\n// https://en.wikipedia.org/wiki/POKEY\n// https://user.xmission.com/~trevin/atari/pokey_regs.html\n// http://krap.pl/mirrorz/atari/homepage.ntlworld.com/kryten_droid/Atari/800XL/atari_hw/pokey.htm\n\nexport function newPOKEYAudio(count:number) {\n var audio = new MasterAudio();\n for (var i=1; i<=count; i++) {\n var pokey = new POKEYDeviceChannel();\n audio['pokey'+i] = pokey; // TODO: cheezy\n audio.master.addChannel(pokey);\n }\n return audio;\n}\n\nfunction combinePolys(a, b) {\n var arr = new Uint8Array(a.length * b.length);\n var n = 0;\n for (var i=0; i 0.5 ? 1 : 0;\n }\n var bit17_5 = combinePolys(bit17, bit5);\n var bit5_4 = combinePolys(bit5, bit4);\n var wavetones = [\n bit17_5, bit5, bit5_4, bit5,\n bit17, bit2, bit4, bit2\n ];\n // TIA\n var div2 = divideBy(2);\n var div6 = divideBy(6);\n var div31 = divideBy(31);\n var div93 = divideBy(93);\n var bit15_4 = combinePolys(bit15, bit4);\n var bit5_2 = combinePolys(bit5, div2);\n var bit5_6 = combinePolys(bit5, div6);\n var tiawavetones = [\n bit1, bit4, bit15_4, bit5_4,\n div2, div2, div31, bit5_2,\n bit9, bit5, div31, bit1,\n div6, div6, div93, bit5_6\n ];\n \n // registers\n var regs = new Uint8Array(16);\n var counters = new Float32Array(4);\n var deltas = new Float32Array(4);\n var volume = new Float32Array(4);\n var audc = new Uint8Array(4);\n var waveforms = [bit1, bit1, bit1, bit1];\n var buffer;\n var sampleRate;\n var clock, baseDelta;\n var dirty = true;\n\n //\n\n this.setBufferLength = function (length) {\n buffer = new Int32Array(length);\n };\n\n this.getBuffer = function () {\n return buffer;\n };\n\n this.setSampleRate = function (rate) {\n sampleRate = rate;\n baseDelta = FREQ_17_EXACT / rate;\n };\n\n function updateValues(addr) {\n var ctrl = regs[8];\n var base = (ctrl & CLOCK_15) ? DIV_15 : DIV_64;\n var div;\n var i = addr & 4;\n var j = i>>1;\n var k = i>>2;\n if (ctrl & (CH1_CH2>>k)) {\n if (ctrl & (CH1_179>>k))\n div = regs[i+2] * 256 + regs[i+0] + 7;\n else\n div = (regs[i+2] * 256 + regs[i+0] + 1) * base;\n deltas[j+1] = baseDelta / div;\n deltas[j+0] = 0;\n } else {\n if (ctrl & (CH1_179>>k)) {\n div = regs[i+0] + 4;\n } else {\n div = (regs[i+0] + 1) * base;\n }\n deltas[j+0] = baseDelta / div;\n div = (regs[i+2] + 1) * base;\n deltas[j+1] = baseDelta / div;\n }\n //console.log(addr, ctrl.toString(16), div, deltas[j+0], deltas[j+1]);\n }\n\n this.setRegister = function(addr, value) {\n addr &= 0xf;\n value &= 0xff;\n if (regs[addr] != value) {\n regs[addr] = value;\n switch (addr) {\n case 0:\n case 2:\n case 4:\n case 6: // AUDF\n case 8: // ctrl\n dirty = true;\n break;\n case 1:\n case 3:\n case 5:\n case 7: // AUDC\n volume[addr>>1] = value & 0xf;\n waveforms[addr>>1] = wavetones[value>>5];\n break;\n }\n }\n }\n\n this.getRegister = function(addr) {\n addr &= 0xf;\n return regs[addr];\n }\n \n this.setTIARegister = function(addr, value) {\n switch (addr) {\n case 0x17:\n case 0x18:\n regs[(addr&1)*4] = value & 0x1f;\n dirty = true;\n break;\n case 0x15:\n case 0x16:\n waveforms[(addr&1)*2] = tiawavetones[value & 0xf];\n break;\n case 0x19:\n case 0x1a:\n volume[(addr&1)*2] = value & 0xf;\n break;\n }\n }\n\n this.generate = function (length) {\n if (dirty) {\n updateValues(0);\n updateValues(4);\n dirty = false;\n }\n for (var s=0; s 0 && d < 1 && v > 0) {\n var wav = waveforms[i];\n var cnt = counters[i] += d;\n if (cnt > wav.length) {\n cnt = counters[i] = cnt - Math.floor(cnt / wav.length) * wav.length;\n }\n var on = wav[Math.floor(cnt)];\n if (on) {\n sample += v;\n }\n }\n }\n sample *= 64;\n buffer[s] = sample;\n buffer[s+1] = sample;\n }\n }\n}\n\n////// Worker sound\n\nexport var WorkerSoundChannel = function(worker) {\n var sampleRate;\n var output;\n var pending = [];\n var pendingLength = 0;\n\n worker.onmessage = function(e) {\n if (e && e.data && e.data.samples && output) {\n pending.push(e.data.samples);\n pendingLength += e.data.samples.length;\n }\n };\n\n this.setBufferLength = function (length) {\n output = new Int16Array(length);\n //worker.postMessage({bufferLength:length,numChannels:2});\n pendingLength = 0;\n };\n\n this.getBuffer = function () {\n return output;\n };\n\n this.setSampleRate = function (rate) {\n sampleRate = rate;\n worker.postMessage({sampleRate:rate});\n };\n\n this.generate = function (length) {\n if (pendingLength < length*3) {\n //console.log(length, pendingLength);\n output.fill(0);\n return; // TODO: send sync msg?\n }\n for (var i=0; i AudioStream) | null = null;\n\n/** Install the streaming output. Pass null to go back to a Web Audio graph. */\nexport function setAudioStreamFactory(factory: ((sourceRate: number) => AudioStream) | null) {\n audioStreamFactory = factory;\n}\n\n// samples per chunk; the same size the IDE's ScriptProcessor asks for\nexport const AUDIO_CHUNK_SAMPLES = 2048;\n\n// Browsers create an AudioContext suspended until a user gesture, and start()\n// runs at page load, before any gesture. So also resume on the first\n// interaction anywhere on the page (canvas focus alone is too narrow). resume()\n// must be called synchronously inside the handler for Safari/iOS to allow it.\n// Called on every start(), since stop() suspends the context.\nconst audioUnlockEvents = ['pointerdown', 'touchend', 'mousedown', 'keydown', 'click'];\nconst pendingUnlocks = new WeakSet(); // waiting for the first user gesture\nconst unlockListeners = new WeakSet(); // document gesture handlers installed\n\n// Every AudioContext the IDE starts is registered here so the UI can tell\n// whether Web Audio is still waiting for the user gesture that owns the page.\n// Browsers keep one suspended until then, and resume() resolves asynchronously,\n// so notify listeners on registration, state changes and resume completion.\nconst audioContexts = new Set();\nconst audioStateListeners = new Set<() => void>();\n\nfunction notifyAudioState() {\n for (const listener of Array.from(audioStateListeners)) listener();\n}\n\nfunction markAudioUnlocked(ctx: AudioContext) {\n pendingUnlocks.delete(ctx);\n notifyAudioState();\n}\n\nfunction trackAudioContext(ctx: AudioContext) {\n if (audioContexts.has(ctx)) return;\n audioContexts.add(ctx);\n if (typeof ctx.addEventListener === 'function') {\n ctx.addEventListener('statechange', () => {\n if (ctx.state === 'running') {\n pendingUnlocks.delete(ctx);\n } else if (ctx.state === 'closed') {\n // a closed context can never be resumed, so stop counting it as blocked\n audioContexts.delete(ctx);\n pendingUnlocks.delete(ctx);\n }\n notifyAudioState();\n });\n }\n notifyAudioState();\n}\n\n/**\n * True while an AudioContext is waiting for the user gesture that unlocks\n * Web Audio. A context the IDE suspends itself (pause, tab blur) is not blocked;\n * it comes back without a gesture.\n */\nexport function isAudioBlocked(): boolean {\n for (const ctx of audioContexts) {\n if (ctx.state !== 'running' && pendingUnlocks.has(ctx)) return true;\n }\n return false;\n}\n\n/** Subscribe to AudioContext creation and state changes. Returns an unsubscribe fn. */\nexport function onAudioStateChange(listener: () => void): () => void {\n audioStateListeners.add(listener);\n return () => { audioStateListeners.delete(listener); };\n}\n\nfunction resumeTrackedContext(ctx: AudioContext) {\n const resumed = ctx.resume();\n if (resumed && typeof resumed.then === 'function') {\n resumed.then(() => {\n if (ctx.state === 'running') markAudioUnlocked(ctx);\n else notifyAudioState();\n }, () => {});\n }\n}\n\nexport function resumeAudioContext(ctx: AudioContext) {\n if (!ctx || ctx.state === 'closed') return;\n trackAudioContext(ctx);\n if (ctx.state === 'running') {\n pendingUnlocks.delete(ctx);\n return;\n }\n pendingUnlocks.add(ctx);\n notifyAudioState(); // show the click hint even if resume() stays suspended\n resumeTrackedContext(ctx);\n if (typeof document === 'undefined' || unlockListeners.has(ctx)) return;\n unlockListeners.add(ctx);\n const onGesture = () => {\n resumeTrackedContext(ctx);\n if (ctx.state === 'running') {\n for (const ev of audioUnlockEvents) document.removeEventListener(ev, onGesture, true);\n unlockListeners.delete(ctx);\n }\n };\n for (const ev of audioUnlockEvents) document.addEventListener(ev, onGesture, true);\n}\n\nexport var SampleAudio = function(clockfreq) {\n var self = this;\n var sfrac, sinc, accum;\n var buffer, bufpos, bufferlist;\n var ifill; // physical ring slot the producer is filling\n var written, read; // monotonic buffer counts (committed / consumed)\n var skippedBuffers = 0, lastSkipLog = 0;\n var underruns = 0;\n var fillHist = null; // ring-fill histogram; opt-in via setStatsEnabled\n var collectStats = false;\n // Clock recovery. The emulated frame clock and the AudioContext clock drift apart\n // by a fraction of a percent, so over time the ring either drains (underruns) or\n // fills. We nudge the resample ratio by a hair to hold a small cushion, instead of\n // adding ring depth, which would just add latency.\n var baseSinc = 1; // sr / clockfreq, the untrimmed ratio\n var trim = 1; // current trim around baseSinc\n var fillAvg = 0; // EWMA of ring fill, in buffers\n var lastTrimAdj = 0;\n var FILL_TARGET = 1.5; // buffers of cushion to hold\n var FILL_ALPHA = 0.05; // EWMA weight per consumer pull (~1s at 21 pulls/s)\n var TRIM_GAIN = 0.004; // resample-ratio change per buffer of error\n var MAX_TRIM = 0.01; // cap the pitch shift at 1%\n var TRIM_INTERVAL_MS = 500;\n // The ring is allocated once at MAXBUFFERS and always indexed with that modulo.\n // Measurement showed the fill settles at 1-2 buffers and never nears this cap, so\n // depth is not the latency lever -- the per-buffer floor (bufferlen) is -- and\n // clock recovery holds the small cushion. The cap stays as insurance against the\n // ScriptProcessor callback stalling on the main thread (rendering/GC), ~370ms.\n var MAXBUFFERS = 8;\n var targetDepth = MAXBUFFERS;\n\n function mix(ape) {\n var lbuf = ape.outputBuffer.getChannelData(0);\n var m = this.module;\n if (!m) m = ape.srcElement.module;\n if (!m) return;\n if (m.callback) {\n m.callback(lbuf);\n return;\n } else if (written > read) {\n // copy the oldest committed buffer, then free it\n if (collectStats) fillHist[Math.min(written - read, MAXBUFFERS)]++;\n fillAvg += ((written - read) - fillAvg) * FILL_ALPHA;\n var buf = bufferlist[read % MAXBUFFERS];\n for (var i=0; i= buffer.length) {\n bufpos = 0;\n if (self.stream) {\n // hand the buffer off and get a fresh one; the stream may transfer it\n var out = buffer;\n buffer = new Float32Array(self.bufferlen);\n self.stream.push(out);\n return;\n }\n bufferlist[ifill] = buffer;\n written++;\n // Producer outran the consumer; drop the oldest audio to make room.\n if (written - read >= targetDepth) {\n read++;\n skippedBuffers++;\n var now = Date.now();\n if (now - lastSkipLog > 1000) { // throttle so a sustained overrun doesn't flood the console\n console.warn('SampleAudio: skipped audio buffer(s), total=' + skippedBuffers +\n ', fill=' + (written - read) + '/' + targetDepth +\n ', contextRate=' + self.sr + ', requestedBuf=' + self.bufferlen +\n ', expectedIntervalMs=' + (self.bufferlen * 1000 / self.sr).toFixed(2));\n lastSkipLog = now;\n }\n }\n ifill = (ifill + 1) % MAXBUFFERS;\n buffer = bufferlist[ifill];\n // Clock recovery: steer the resample ratio to hold FILL_TARGET buffers.\n var trimNow = Date.now();\n if (trimNow - lastTrimAdj > TRIM_INTERVAL_MS) {\n lastTrimAdj = trimNow;\n var want = 1 + TRIM_GAIN * (FILL_TARGET - fillAvg);\n if (want > 1 + MAX_TRIM) want = 1 + MAX_TRIM;\n else if (want < 1 - MAX_TRIM) want = 1 - MAX_TRIM;\n trim = want;\n sinc = baseSinc * trim;\n }\n }\n }\n\n this.feedSample = function(value, count) {\n accum += value * count;\n sfrac += sinc * count;\n if (sfrac >= 1) {\n accum /= sfrac;\n while (sfrac >= 1) {\n this.addSingleSample(accum * sinc);\n sfrac -= 1;\n }\n accum *= sfrac;\n }\n }\n\n /**\n * Diagnostics for tuning the ring depth: where the fill actually sits, and how\n * often the producer overruns (drops) or the consumer underruns (silence).\n * Sampling happens on the ScriptProcessor path only; streaming hosts have no ring.\n * The fill histogram is off by default (it touches every consumer pull); turn it\n * on with setStatsEnabled(true) when you want the distribution. The mean/skips/\n * underruns/trim fields are always tracked.\n */\n this.getStats = function() {\n var total = 0, weighted = 0, maxFill = 0;\n if (fillHist) {\n for (var fill=0; fill 0 && fill > maxFill) maxFill = fill;\n }\n }\n return {\n maxBuffers: MAXBUFFERS,\n targetDepth: targetDepth,\n sampleRate: self.sr || 0,\n bufferLength: self.bufferlen || 0,\n fillHistogram: fillHist ? fillHist.slice() : [],\n meanFill: total > 0 ? weighted / total : 0,\n maxFill: maxFill,\n samples: total,\n skippedBuffers: skippedBuffers,\n underruns: underruns,\n fillAvg: fillAvg,\n trim: trim,\n };\n };\n\n /** Turn the per-pull fill histogram on or off (off by default). */\n this.setStatsEnabled = function(on) {\n collectStats = !!on;\n fillHist = collectStats ? new Array(MAXBUFFERS + 1).fill(0) : null;\n };\n \n}\n\n\nexport class SampledAudio {\n sa;\n constructor(sampleRate : number) {\n this.sa = new SampleAudio(sampleRate);\n }\n feedSample(value:number, count:number) {\n this.sa.feedSample(value, count);\n }\n start() {\n this.sa.start();\n }\n stop() {\n this.sa.stop();\n }\n reset() {\n this.sa.reset();\n }\n /** ring-depth diagnostics; see SampleAudio.getStats */\n getStats() {\n return this.sa.getStats ? this.sa.getStats() : null;\n }\n /** turn the ring-fill histogram on or off (off by default) */\n setStatsEnabled(on: boolean) {\n this.sa.setStatsEnabled && this.sa.setStatsEnabled(on);\n }\n /** the rate this sink outputs at, once start() has run (Web Audio or stream) */\n get sampleRate() : number {\n return this.sa.sr || 0;\n }\n}\n\ninterface TssChannel {\n setBufferLength(len : number) : void;\n setSampleRate(rate : number) : void;\n getBuffer() : number[];\n generate(numSamples : number) : void;\n}\n\nexport class TssChannelAdapter {\n channels : TssChannel[];\n audioGain = 1.0 / 8192;\n bufferLength : number;\n\n constructor(chans, oversample:number, sampleRate:number) {\n this.bufferLength = oversample * 2;\n this.channels = chans.generate ? [chans] : chans; // array or single channel\n this.channels.forEach((c) => {\n c.setBufferLength(this.bufferLength);\n c.setSampleRate(sampleRate);\n });\n }\n\n generate(sink:SampledAudioSink) {\n var l = this.bufferLength;\n var bufs = this.channels.map((ch) => ch.getBuffer());\n this.channels.forEach((ch) => {\n ch.generate(l);\n });\n for (let i=0; i total += buf[i]);\n sink.feedSample(total * this.audioGain, 1);\n };\n }\n}\n\n", "\nimport { Probeable, ProbeAll } from \"./devices\";\n\nexport enum ProbeFlags {\n CLOCKS\t = 0x00000000,\n EXECUTE\t = 0x01000000,\n INTERRUPT\t= 0x08000000,\n ILLEGAL\t = 0x09000000,\n SP_PUSH\t = 0x0a000000,\n SP_POP\t = 0x0b000000,\n HAS_VALUE = 0x10000000,\n MEM_READ\t= 0x12000000,\n MEM_WRITE\t= 0x13000000,\n IO_READ\t = 0x14000000,\n IO_WRITE\t= 0x15000000,\n VRAM_READ\t= 0x16000000,\n VRAM_WRITE= 0x17000000,\n DMA_READ = 0x18000000,\n DMA_WRITE = 0x19000000,\n WAIT = 0x1f000000,\n SCANLINE\t= 0x7e000000,\n FRAME\t\t = 0x7f000000,\n}\n\nexport function compactProbeLines(byClk: { [clk: number]: T }): T[] {\n // Integer-like keys enumerate in ascending order, so this is the tick order.\n return Object.keys(byClk).map((k) => byClk[k]);\n}\n\nclass ProbeFrame {\n data : Uint32Array;\n len : number;\n}\n\nexport class ProbeRecorder implements ProbeAll {\n\n m : Probeable; // machine to probe\n buf : Uint32Array; // buffer\n idx : number = 0; // index into buffer\n sl : number = 0; // scanline\n cur_sp = -1; // last stack pointer\n singleFrame : boolean = true; // clear between frames\n\n constructor(m:Probeable, buflen?:number) {\n this.m = m;\n this.reset(buflen || 0x100000);\n }\n start() {\n this.m.connectProbe(this);\n }\n stop() {\n this.m.connectProbe(null);\n }\n reset(newbuflen? : number) {\n if (newbuflen) this.buf = new Uint32Array(newbuflen);\n this.sl = 0;\n this.cur_sp = -1;\n this.clear();\n }\n clear() {\n this.idx = 0;\n }\n logData(a:number) {\n this.log(a);\n }\n log(a:number) {\n // TODO: coalesce READ and EXECUTE and PUSH/POP\n if (this.idx >= this.buf.length) return;\n this.buf[this.idx++] = a;\n }\n relog(a:number) {\n this.buf[this.idx-1] = a;\n }\n lastOp() {\n if (this.idx > 0)\n return this.buf[this.idx-1] & 0xff000000;\n else\n return -1;\n }\n lastAddr() {\n if (this.idx > 0)\n return this.buf[this.idx-1] & 0xffffff;\n else\n return -1;\n }\n addLogBuffer(src: Uint32Array) {\n if (this.idx + src.length > this.buf.length) {\n src = src.slice(0, this.buf.length - this.idx);\n }\n this.buf.set(src, this.idx);\n this.idx += src.length;\n}\n logClocks(clocks:number) {\n clocks |= 0;\n if (clocks > 0) {\n if (this.lastOp() == ProbeFlags.CLOCKS)\n this.relog((this.lastAddr() + clocks) | ProbeFlags.CLOCKS); // coalesce clocks\n else\n this.log(clocks | ProbeFlags.CLOCKS);\n }\n }\n logNewScanline() {\n this.log(ProbeFlags.SCANLINE);\n this.sl++;\n }\n logNewFrame() {\n this.log(ProbeFlags.FRAME);\n this.sl = 0;\n if (this.singleFrame) this.clear();\n }\n logExecute(address:number, SP:number) {\n // record stack pushes/pops (from last instruction)\n if (this.cur_sp !== SP) {\n if (SP < this.cur_sp) {\n this.log(ProbeFlags.SP_PUSH | SP);\n }\n if (SP > this.cur_sp) {\n this.log(ProbeFlags.SP_POP | SP);\n }\n this.cur_sp = SP;\n }\n this.log(address | ProbeFlags.EXECUTE);\n }\n logInterrupt(type:number) {\n this.log(type | ProbeFlags.INTERRUPT);\n }\n logValue(address:number, value:number, op:number) {\n this.log((address & 0xffff) | ((value & 0xff)<<16) | op);\n }\n logRead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.MEM_READ);\n }\n logWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.MEM_WRITE);\n }\n logIORead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.IO_READ);\n }\n logIOWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.IO_WRITE);\n }\n logVRAMRead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.VRAM_READ);\n }\n logVRAMWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.VRAM_WRITE);\n }\n logIllegal(address:number) {\n this.log(address | ProbeFlags.ILLEGAL);\n }\n logWait(address:number) {\n this.log(address | ProbeFlags.WAIT);\n }\n logDMARead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.DMA_READ);\n }\n logDMAWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.DMA_WRITE);\n }\n countEvents(op : number) : number {\n var count = 0;\n for (var i=0; i {\n saveState(): S;\n loadState(state: S): void;\n}\n\nexport interface Bus {\n read(a: number): number;\n write(a: number, v: number): void;\n readConst?(a: number): number;\n}\n\nexport interface Bus32 {\n read32(a: number): number;\n write32(a: number, v: number): void;\n readConst32?(a: number): number;\n}\n\nexport interface ClockBased {\n advanceClock(): void;\n}\n\nexport interface InstructionBased {\n advanceInsn(): number;\n}\n\nexport type TrapCondition = () => boolean;\n\nexport interface FrameBased {\n advanceFrame(trap: TrapCondition): number;\n}\n\nexport interface VideoSource {\n getVideoParams(): VideoParams;\n connectVideo(pixels: Uint32Array): void;\n}\n\nexport interface RasterFrameBased extends FrameBased, VideoSource {\n getRasterY(): number;\n getRasterX(): number;\n getRasterCanvasPosition?(): { x: number, y: number };\n}\n\nexport interface VideoParams {\n width: number;\n height: number;\n overscan?: boolean;\n rotate?: number;\n videoFrequency?: number; // default = 60\n aspect?: number;\n}\n\n// TODO: frame buffer optimization (apple2, etc)\n\nexport interface SampledAudioParams {\n sampleRate: number;\n stereo: boolean;\n}\n\nexport interface SampledAudioSink {\n feedSample(value: number, count: number): void;\n //sendAudioFrame(samples:Uint16Array) : void;\n}\n\nexport interface SampledAudioSource {\n getAudioParams(): SampledAudioParams;\n connectAudio(audio: SampledAudioSink): void;\n}\n\nexport interface AcceptsROM {\n loadROM(data: Uint8Array, title?: string, origin?: number): void;\n}\n\nexport interface AcceptsBIOS {\n loadBIOS(data: Uint8Array, title?: string): void;\n}\n\nexport interface Resettable {\n reset(): void;\n}\n\nexport interface MemoryBusConnected {\n connectMemoryBus(bus: Bus): void;\n}\n\nexport interface IOBusConnected {\n connectIOBus(bus: Bus): void;\n}\n\nexport interface CPU extends MemoryBusConnected, Resettable, SavesState {\n getPC(): number;\n getSP(): number;\n isStable(): boolean;\n}\n\nexport interface HasCPU extends Resettable {\n cpu: CPU;\n}\n\nexport interface Interruptable {\n interrupt(type: IT): void;\n}\n\nexport interface SavesInputState {\n loadControlsState(cs: CS): void;\n saveControlsState(): CS;\n}\n\nexport interface AcceptsKeyInput {\n setKeyInput(key: number, code: number, flags: number): void;\n}\n\nexport interface AcceptsPaddleInput {\n setPaddleInput(controller: number, value: number): void;\n setPaddleButton?(index: number, pressed: boolean): void;\n}\n\n// TODO: interface not yet used (setKeyInput() handles joystick)\nexport interface AcceptsJoyInput {\n setJoyInput(joy: number, bitmask: number): void;\n}\n\n// SERIAL I/O\n\nexport interface SerialEvent {\n op: 'read' | 'write';\n value: number;\n nbits: number;\n}\n\n// TODO: all these needed?\nexport interface SerialIOInterface {\n // from machine to platform\n clearToSend(): boolean;\n sendByte(b: number);\n // from platform to machine\n byteAvailable(): boolean;\n recvByte(): number;\n // implement these too\n reset(): void;\n advance(clocks: number): void;\n // refresh() : void;\n}\n\nexport interface HasSerialIO {\n connectSerialIO(serial: SerialIOInterface);\n serialOut?: SerialEvent[]; // outgoing event log\n serialIn?: SerialEvent[]; // incoming queue\n}\n\n/// PROFILER\n\nexport interface Probeable {\n connectProbe(probe: ProbeAll): void;\n}\n\nexport interface ProbeTime {\n logClocks(clocks: number);\n logNewScanline();\n logNewFrame();\n}\n\nexport interface ProbeCPU {\n logExecute(address: number, SP: number);\n logInterrupt(type: number);\n logIllegal(address: number);\n logWait(address: number);\n}\n\nexport interface ProbeBus {\n logRead(address: number, value: number);\n logWrite(address: number, value: number);\n logDMARead(address: number, value: number);\n logDMAWrite(address: number, value: number);\n}\n\nexport interface ProbeIO {\n logIORead(address: number, value: number);\n logIOWrite(address: number, value: number);\n}\n\nexport interface ProbeVRAM {\n logVRAMRead(address: number, value: number);\n logVRAMWrite(address: number, value: number);\n}\n\nexport interface ProbeAll extends ProbeTime, ProbeCPU, ProbeBus, ProbeIO, ProbeVRAM {\n logData(data: number); // entire 32 bits\n addLogBuffer(src: Uint32Array);\n}\n\nexport class NullProbe implements ProbeAll {\n logClocks() { }\n logNewScanline() { }\n logNewFrame() { }\n logExecute() { }\n logInterrupt() { }\n logRead() { }\n logWrite() { }\n logIORead() { }\n logIOWrite() { }\n logVRAMRead() { }\n logVRAMWrite() { }\n logIllegal() { }\n logWait() { }\n logDMARead() { }\n logDMAWrite() { }\n logData() { }\n addLogBuffer(src: Uint32Array) { }\n}\n\n/// CONVENIENCE\n\nexport interface BasicMachineControlsState {\n inputs: Uint8Array;\n}\n\nexport interface BasicMachineState extends BasicMachineControlsState {\n c: any; // TODO\n ram: Uint8Array;\n}\n\nexport abstract class BasicHeadlessMachine implements HasCPU, Bus, AcceptsROM, Probeable,\n SavesState, SavesInputState {\n\n abstract cpuFrequency: number;\n abstract defaultROMSize: number;\n\n abstract cpu: CPU;\n abstract ram: Uint8Array;\n\n rom: Uint8Array;\n inputs: Uint8Array = new Uint8Array(32);\n handler: (key, code, flags) => void; // keyboard handler\n\n nullProbe = new NullProbe();\n probe: ProbeAll = this.nullProbe;\n // True only while a real probe is attached. The probe wrapper around the CPU\n // buses costs ~20% of a frame even when every call lands in NullProbe, so it\n // is spliced in on connectProbe() and taken back out on disconnect rather\n // than left installed for the life of the machine.\n probing: boolean = false;\n // the buses as the machine wired them, before any probe wrapper\n protected cpuMemoryBus: Bus & Partial;\n protected cpuIOBus: Bus;\n\n abstract read(a: number): number;\n abstract write(a: number, v: number): void;\n\n setKeyInput(key: number, code: number, flags: number): void {\n this.handler && this.handler(key, code, flags);\n }\n connectProbe(probe: ProbeAll): void {\n this.probe = probe || this.nullProbe;\n var probing = this.probe !== this.nullProbe;\n if (probing !== this.probing) {\n this.probing = probing;\n this.rewireCPUBuses();\n }\n }\n /** Connect the CPU to the raw buses, or to probe-wrapped ones while probing. */\n protected rewireCPUBuses(): void {\n if (this.cpuMemoryBus) {\n this.cpu.connectMemoryBus(this.probing ? this.probeMemoryBus(this.cpuMemoryBus) : this.cpuMemoryBus);\n }\n if (this.cpuIOBus) {\n this.cpu['connectIOBus'](this.probing ? this.probeIOBus(this.cpuIOBus) : this.cpuIOBus);\n }\n }\n reset() {\n this.cpu.reset();\n }\n loadROM(data: Uint8Array, title?: string, origin?: number): void {\n if (!this.rom) this.rom = new Uint8Array(this.defaultROMSize);\n if (data.length > this.rom.length)\n throw new Error(`ROM too big: ${data.length} > ${this.rom.length}`);\n this.rom.set(data);\n }\n loadState(state) {\n this.cpu.loadState(state.c);\n this.ram.set(state.ram);\n this.inputs.set(state.inputs);\n }\n saveState() {\n return {\n c: this.cpu.saveState(),\n ram: this.ram.slice(0),\n inputs: this.inputs.slice(0),\n };\n }\n loadControlsState(state) {\n this.inputs.set(state.inputs);\n }\n saveControlsState() {\n return {\n inputs: this.inputs.slice(0)\n };\n }\n advanceCPU() {\n var c = this.cpu as any;\n var n = 1;\n if (this.probing && this.cpu.isStable()) { this.probe.logExecute(this.cpu.getPC(), this.cpu.getSP()); }\n if (c.advanceClock) { c.advanceClock(); }\n else if (c.advanceInsn) { n = c.advanceInsn(1); }\n if (this.probing) { this.probe.logClocks(n); }\n return n;\n }\n probeMemoryBus(membus: Bus & Partial): Bus & Partial {\n return {\n read: (a) => {\n let val = membus.read(a);\n this.probe.logRead(a, val);\n return val;\n },\n write: (a, v) => {\n this.probe.logWrite(a, v);\n membus.write(a, v);\n },\n read32: (a) => {\n let val = membus.read32(a);\n this.probe.logRead(a, val);\n return val;\n },\n write32: (a, v) => {\n this.probe.logWrite(a, v);\n membus.write32(a, v);\n }\n };\n }\n connectCPUMemoryBus(membus: Bus): void {\n this.cpuMemoryBus = membus as Bus & Bus32;\n this.rewireCPUBuses();\n }\n probeIOBus(iobus: Bus): Bus {\n return {\n read: (a) => {\n let val = iobus.read(a);\n this.probe.logIORead(a, val);\n return val;\n },\n write: (a, v) => {\n this.probe.logIOWrite(a, v);\n iobus.write(a, v);\n },\n };\n }\n probeDMABus(iobus: Bus): Bus {\n return {\n read: (a) => {\n let val = iobus.read(a);\n this.probe.logDMARead(a, val);\n return val;\n },\n write: (a, v) => {\n this.probe.logDMAWrite(a, v);\n iobus.write(a, v);\n }\n };\n }\n connectCPUIOBus(iobus: Bus): void {\n this.cpuIOBus = iobus;\n this.rewireCPUBuses();\n }\n}\n\nexport abstract class BasicMachine extends BasicHeadlessMachine implements SampledAudioSource {\n\n abstract canvasWidth: number;\n abstract numVisibleScanlines: number;\n abstract sampleRate: number;\n overscan: boolean = false;\n rotate: number = 0;\n aspectRatio: number;\n\n pixels: Uint32Array;\n audio: SampledAudioSink;\n\n scanline: number;\n\n getAudioParams(): SampledAudioParams {\n return { sampleRate: this.sampleRate, stereo: false };\n }\n connectAudio(audio: SampledAudioSink): void {\n this.audio = audio;\n }\n getVideoParams(): VideoParams {\n return {\n width: this.canvasWidth,\n height: this.numVisibleScanlines,\n aspect: this.aspectRatio,\n overscan: this.overscan,\n rotate: this.rotate\n };\n }\n connectVideo(pixels: Uint32Array): void {\n this.pixels = pixels;\n }\n}\n\nexport abstract class BasicScanlineMachine extends BasicMachine implements RasterFrameBased {\n\n abstract numTotalScanlines: number;\n abstract cpuCyclesPerLine: number;\n\n abstract startScanline(): void;\n abstract drawScanline(): void;\n\n frameCycles: number;\n\n advanceFrame(trap: TrapCondition): number {\n this.preFrame();\n var endLineClock = 0;\n var steps = 0;\n this.probe.logNewFrame();\n this.frameCycles = 0;\n for (var sl = 0; sl < this.numTotalScanlines; sl++) {\n endLineClock += this.cpuCyclesPerLine; // could be fractional\n this.scanline = sl;\n this.startScanline();\n while (this.frameCycles < endLineClock) {\n if (trap && trap()) {\n sl = 999;\n break;\n }\n this.frameCycles += this.advanceCPU();\n steps++;\n }\n this.drawScanline();\n this.probe.logNewScanline();\n this.probe.logClocks(Math.floor(this.frameCycles - endLineClock)); // remainder of prev. line\n }\n this.postFrame();\n return steps; // TODO: return steps, not clock? for recorder\n }\n preFrame() { }\n postFrame() { }\n getRasterY() { return this.scanline; }\n getRasterX() { return this.frameCycles % this.cpuCyclesPerLine; }\n}\n", "\nimport { hex } from \"../util\";\n\nconst Z80_OPS = [\"nop\",\"ld bc,xx\",\"ld (bc),a\",\"inc bc\",\"inc b\",\"dec b\",\"ld b,x\",\"rlca\",\"ex af,af'\",\"add hl,bc\",\"ld a,(bc)\",\"dec bc\",\"inc c\",\"dec c\",\"ld c,x\",\"rrca\",\"djnz x\",\"ld de,xx\",\"ld (de),a\",\"inc de\",\"inc d\",\"dec d\",\"ld d,x\",\"rla\",\"jr x\",\"add hl,de\",\"ld a,(de)\",\"dec de\",\"inc e\",\"dec e\",\"ld e,x\",\"rra\",\"jr nz,x\",\"ld hl,xx\",\"ld (xx),hl\",\"inc hl\",\"inc h\",\"dec h\",\"ld h,x\",\"daa\",\"jr z,x\",\"add hl,hl\",\"ld hl,(xx)\",\"dec hl\",\"inc l\",\"dec l\",\"ld l,x\",\"cpl\",\"jr nc,x\",\"ld sp,xx\",\"ld (xx),a\",\"inc sp\",\"inc (hl)\",\"dec (hl)\",\"ld (hl),x\",\"scf\",\"jr c,x\",\"add hl,sp\",\"ld a,(xx)\",\"dec sp\",\"inc a\",\"dec a\",\"ld a,x\",\"ccf\",\"ld b,b\",\"ld b,c\",\"ld b,d\",\"ld b,e\",\"ld b,h\",\"ld b,l\",\"ld b,(hl)\",\"ld b,a\",\"ld c,b\",\"ld c,c\",\"ld c,d\",\"ld c,e\",\"ld c,h\",\"ld c,l\",\"ld c,(hl)\",\"ld c,a\",\"ld d,b\",\"ld d,c\",\"ld d,d\",\"ld d,e\",\"ld d,h\",\"ld d,l\",\"ld d,(hl)\",\"ld d,a\",\"ld e,b\",\"ld e,c\",\"ld e,d\",\"ld e,e\",\"ld e,h\",\"ld e,l\",\"ld e,(hl)\",\"ld e,a\",\"ld h,b\",\"ld h,c\",\"ld h,d\",\"ld h,e\",\"ld h,h\",\"ld h,l\",\"ld h,(hl)\",\"ld h,a\",\"ld l,b\",\"ld l,c\",\"ld l,d\",\"ld l,e\",\"ld l,h\",\"ld l,l\",\"ld l,(hl)\",\"ld l,a\",\"ld (hl),b\",\"ld (hl),c\",\"ld (hl),d\",\"ld (hl),e\",\"ld (hl),h\",\"ld (hl),l\",\"halt\",\"ld (hl),a\",\"ld a,b\",\"ld a,c\",\"ld a,d\",\"ld a,e\",\"ld a,h\",\"ld a,l\",\"ld a,(hl)\",\"ld a,a\",\"add a,b\",\"add a,c\",\"add a,d\",\"add a,e\",\"add a,h\",\"add a,l\",\"add a,(hl)\",\"add a,a\",\"adc a,b\",\"adc a,c\",\"adc a,d\",\"adc a,e\",\"adc a,h\",\"adc a,l\",\"adc a,(hl)\",\"adc a,a\",\"sub b\",\"sub c\",\"sub d\",\"sub e\",\"sub h\",\"sub l\",\"sub (hl)\",\"sub a\",\"sbc a,b\",\"sbc a,c\",\"sbc a,d\",\"sbc a,e\",\"sbc a,h\",\"sbc a,l\",\"sbc a,(hl)\",\"sbc a,a\",\"and b\",\"and c\",\"and d\",\"and e\",\"and h\",\"and l\",\"and (hl)\",\"and a\",\"xor b\",\"xor c\",\"xor d\",\"xor e\",\"xor h\",\"xor l\",\"xor (hl)\",\"xor a\",\"or b\",\"or c\",\"or d\",\"or e\",\"or h\",\"or l\",\"or (hl)\",\"or a\",\"cp b\",\"cp c\",\"cp d\",\"cp e\",\"cp h\",\"cp l\",\"cp (hl)\",\"cp a\",\"ret nz\",\"pop bc\",\"jp nz,xx\",\"jp xx\",\"call nz,xx\",\"push bc\",\"add a,x\",\"rst 00h\",\"ret z\",\"ret\",\"jp z,xx\",\"xxBITxx\",\"call z,xx\",\"call xx\",\"adc a,x\",\"rst 08h\",\"ret nc\",\"pop de\",\"jp nc,xx\",\"out (x),a\",\"call nc,xx\",\"push de\",\"sub x\",\"rst 10h\",\"ret c\",\"exx\",\"jp c,xx\",\"in a,(x)\",\"call c,xx\",\"xxIXxx\",\"sbc a,x\",\"rst 18h\",\"ret po\",\"pop hl\",\"jp po,xx\",\"ex (sp),hl\",\"call po,xx\",\"push hl\",\"and x\",\"rst 20h\",\"ret pe\",\"jp (hl)\",\"jp pe,xx\",\"ex de,hl\",\"call pe,xx\",\"xx80xx\",\"xor x\",\"rst 28h\",\"ret p\",\"pop af\",\"jp p,xx\",\"di\",\"call p,xx\",\"push af\",\"or x\",\"rst 30h\",\"ret m\",\"ld sp,hl\",\"jp m,xx\",\"ei\",\"call m,xx\",\"xxIYxx\",\"cp x\",\"rst 38h\"];\nconst Z80_OPS_ED = [\"in b,(c)\",\"out (c),b\",\"sbc hl,bc\",\"ld (xx),bc\",\"neg\",\"retn\",\"im 0\",\"ld i,a\",\"in c,(c)\",\"out (c),c\",\"adc hl,bc\",\"ld bc,(xx)\",\"neg\",\"reti\",\"\",\"ld r,a\",\"in d,(c)\",\"out (c),d\",\"sbc hl,de\",\"ld (xx),de\",\"neg\",\"retn\",\"im 1\",\"ld a,i\",\"in e,(c)\",\"out (c),e\",\"adc hl,de\",\"ld de,(xx)\",\"neg\",\"retn\",\"im 2\",\"ld a,r\",\"in h,(c)\",\"out (c),h\",\"sbc hl,hl\",\"ld (xx),hl\",\"neg\",\"retn\",\"\",\"rrd\",\"in l,(c)\",\"out (c),l\",\"adc hl,hl\",\"ld hl,(xx)\",\"neg\",\"retn\",\"\",\"rld\",\"in f,(c)\",\"out (c),f\",\"sbc hl,sp\",\"ld (xx),sp\",\"neg\",\"retn\",\"\",\"\",\"in a,(c)\",\"out (c),a\",\"adc hl,sp\",\"ld sp,(xx)\",\"neg\",\"reti\",\"\",\"\",\"ldi\",\"cpi\",\"ini\",\"outi\",\"\",\"\",\"\",\"\",\"ldd\",\"cpd\",\"ind\",\"outd\",\"\",\"\",\"\",\"\",\"ldir\",\"cpir\",\"inir\",\"otir\",\"\",\"\",\"\",\"\",\"lddr\",\"cpdr\",\"indr\",\"otdr\",\"\",\"\",\"\",\"\"];\nconst Z80_OPS_CB = [\"rlc b\",\"rlc c\",\"rlc d\",\"rlc e\",\"rlc h\",\"rlc l\",\"rlc (hl)\",\"rlc a\",\"rrc b\",\"rrc c\",\"rrc d\",\"rrc e\",\"rrc h\",\"rrc l\",\"rrc (hl)\",\"rrc a\",\"rl b\",\"rl c\",\"rl d\",\"rl e\",\"rl h\",\"rl l\",\"rl (hl)\",\"rl a\",\"rr b\",\"rr c\",\"rr d\",\"rr e\",\"rr h\",\"rr l\",\"rr (hl)\",\"rr a\",\"sla b\",\"sla c\",\"sla d\",\"sla e\",\"sla h\",\"sla l\",\"sla (hl)\",\"sla a\",\"sra b\",\"sra c\",\"sra d\",\"sra e\",\"sra h\",\"sra l\",\"sra (hl)\",\"sra a\",\"sll b\",\"sll c\",\"sll d\",\"sll e\",\"sll h\",\"sll l\",\"sll (hl)\",\"sll a\",\"srl b\",\"srl c\",\"srl d\",\"srl e\",\"srl h\",\"srl l\",\"srl (hl)\",\"srl a\",\"bit 0,b\",\"bit 0,c\",\"bit 0,d\",\"bit 0,e\",\"bit 0,h\",\"bit 0,l\",\"bit 0,(hl)\",\"bit 0,a\",\"bit 1,b\",\"bit 1,c\",\"bit 1,d\",\"bit 1,e\",\"bit 1,h\",\"bit 1,l\",\"bit 1,(hl)\",\"bit 1,a\",\"bit 2,b\",\"bit 2,c\",\"bit 2,d\",\"bit 2,e\",\"bit 2,h\",\"bit 2,l\",\"bit 2,(hl)\",\"bit 2,a\",\"bit 3,b\",\"bit 3,c\",\"bit 3,d\",\"bit 3,e\",\"bit 3,h\",\"bit 3,l\",\"bit 3,(hl)\",\"bit 3,a\",\"bit 4,b\",\"bit 4,c\",\"bit 4,d\",\"bit 4,e\",\"bit 4,h\",\"bit 4,l\",\"bit 4,(hl)\",\"bit 4,a\",\"bit 5,b\",\"bit 5,c\",\"bit 5,d\",\"bit 5,e\",\"bit 5,h\",\"bit 5,l\",\"bit 5,(hl)\",\"bit 5,a\",\"bit 6,b\",\"bit 6,c\",\"bit 6,d\",\"bit 6,e\",\"bit 6,h\",\"bit 6,l\",\"bit 6,(hl)\",\"bit 6,a\",\"bit 7,b\",\"bit 7,c\",\"bit 7,d\",\"bit 7,e\",\"bit 7,h\",\"bit 7,l\",\"bit 7,(hl)\",\"bit 7,a\",\"res 0,b\",\"res 0,c\",\"res 0,d\",\"res 0,e\",\"res 0,h\",\"res 0,l\",\"res 0,(hl)\",\"res 0,a\",\"res 1,b\",\"res 1,c\",\"res 1,d\",\"res 1,e\",\"res 1,h\",\"res 1,l\",\"res 1,(hl)\",\"res 1,a\",\"res 2,b\",\"res 2,c\",\"res 2,d\",\"res 2,e\",\"res 2,h\",\"res 2,l\",\"res 2,(hl)\",\"res 2,a\",\"res 3,b\",\"res 3,c\",\"res 3,d\",\"res 3,e\",\"res 3,h\",\"res 3,l\",\"res 3,(hl)\",\"res 3,a\",\"res 4,b\",\"res 4,c\",\"res 4,d\",\"res 4,e\",\"res 4,h\",\"res 4,l\",\"res 4,(hl)\",\"res 4,a\",\"res 5,b\",\"res 5,c\",\"res 5,d\",\"res 5,e\",\"res 5,h\",\"res 5,l\",\"res 5,(hl)\",\"res 5,a\",\"res 6,b\",\"res 6,c\",\"res 6,d\",\"res 6,e\",\"res 6,h\",\"res 6,l\",\"res 6,(hl)\",\"res 6,a\",\"res 7,b\",\"res 7,c\",\"res 7,d\",\"res 7,e\",\"res 7,h\",\"res 7,l\",\"res 7,(hl)\",\"res 7,a\",\"set 0,b\",\"set 0,c\",\"set 0,d\",\"set 0,e\",\"set 0,h\",\"set 0,l\",\"set 0,(hl)\",\"set 0,a\",\"set 1,b\",\"set 1,c\",\"set 1,d\",\"set 1,e\",\"set 1,h\",\"set 1,l\",\"set 1,(hl)\",\"set 1,a\",\"set 2,b\",\"set 2,c\",\"set 2,d\",\"set 2,e\",\"set 2,h\",\"set 2,l\",\"set 2,(hl)\",\"set 2,a\",\"set 3,b\",\"set 3,c\",\"set 3,d\",\"set 3,e\",\"set 3,h\",\"set 3,l\",\"set 3,(hl)\",\"set 3,a\",\"set 4,b\",\"set 4,c\",\"set 4,d\",\"set 4,e\",\"set 4,h\",\"set 4,l\",\"set 4,(hl)\",\"set 4,a\",\"set 5,b\",\"set 5,c\",\"set 5,d\",\"set 5,e\",\"set 5,h\",\"set 5,l\",\"set 5,(hl)\",\"set 5,a\",\"set 6,b\",\"set 6,c\",\"set 6,d\",\"set 6,e\",\"set 6,h\",\"set 6,l\",\"set 6,(hl)\",\"set 6,a\",\"set 7,b\",\"set 7,c\",\"set 7,d\",\"set 7,e\",\"set 7,h\",\"set 7,l\",\"set 7,(hl)\",\"set 7,a\"];\n\nexport function disassembleZ80(pc:number, b0:number, b1:number, b2:number, b3:number) : {line:string, nbytes:number, isaddr:boolean, iscall?:boolean} {\n\n var op,n,am;\n var bytes = [b0,b1,b2,b3];\n var isaddr = false;\n var iscall = false;\n n=1;\n switch (b0) {\n case 0xcb:\n am = Z80_OPS_CB[b1];\n n++;\n break;\n case 0xed:\n if (b1 >= 0x40 && b1 <= 0x7f) am = Z80_OPS_ED[b1 - 0x40];\n if (b1 >= 0xa0 && b1 <= 0xbf) am = Z80_OPS_ED[b1 - 0xa0 + 0x40];\n n++;\n break;\n case 0xdd:\n case 0xfd:\n var ireg = (b0 == 0xdd) ? 'ix' : 'iy';\n if (b1 == 0xcb) {\n // swap the 3rd and 4th bytes [$dd $cb displacement opcode]\n am = Z80_OPS_CB[b3];\n bytes[2] = b3;\n bytes[3] = b2;\n n++;\n } else {\n am = Z80_OPS[b1];\n }\n am = am.replace(/[(]hl[)]/, '('+ireg+'+x)');\n am = am.replace(/\\bhl\\b/, ireg);\n n++;\n break;\n default:\n am = Z80_OPS[b0];\n break;\n }\n if (!am || !am.length) am = \"??\";\n iscall = /^(call|rst)/.test(am);\n if (/\\bxx\\b/.test(am)) {\n am = am.replace(/\\bxx\\b/,'$'+hex(bytes[n]+(bytes[n+1]<<8), 4));\n n += 2;\n isaddr = true;\n } else if (/\\bx\\b/.test(am)) {\n if (am.startsWith('j')) {\n var offset = (b1 < 0x80) ? (pc+2+b1) : (pc+2-(256-b1));\n offset &= 0xffff;\n am = am.replace(/\\bx\\b/,'$'+hex(offset, 4));\n isaddr = true;\n } else {\n am = am.replace(/\\bx\\b/,'$'+hex(bytes[n], 2));\n }\n n += 1;\n }\n return {line:am.toUpperCase(), nbytes:n, isaddr:isaddr, iscall:iscall};\n};\n", "\"use strict\";\n/*\nThe MIT License (MIT)\nCopyright (c) 2014 Martin Maly, http://retrocip.cz, http://www.uelectronics.info,\ntwitter: @uelectronics\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nexport function CPU6809() {\n\nvar ticks;\nvar rA,rB,rX,rY,rU,rS,PC,CC,DP,\nF_CARRY =1,\nF_OVERFLOW =2,\nF_ZERO =4,\nF_NEGATIVE =8,\nF_IRQMASK =16,\nF_HALFCARRY =32,\nF_FIRQMASK =64,\nF_ENTIRE =128,\n\nvecRESET = 0xFFFE,\nvecNMI = 0xFFFC,\nvecSWI = 0xFFFA,\nvecIRQ = 0xFFF8,\nvecFIRQ = 0xFFF6,\nvecSWI2 = 0xFFF4,\nvecSWI3 = 0xFFF2,\n\nT=0;\n\nvar IRQs;\n\nvar byteTo, byteAt;\n\nvar cycles = [\n 6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6, /* 00-0F */\n 0,0,2,4,0,0,5,9,0,2,3,0,3,2,8,6, /* 10-1F */\n 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, /* 20-2F */\n 4,4,4,4,5,5,5,5,0,5,3,6,9,11,0,19, /* 30-3F */\n 2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2, /* 40-4F */\n 2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2, /* 50-5F */\n 6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6, /* 60-6F */\n 7,0,0,7,7,0,7,7,7,7,7,0,7,7,4,7, /* 70-7F */\n 2,2,2,4,2,2,2,0,2,2,2,2,4,7,3,0, /* 80-8F */\n 4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5, /* 90-9F */\n 4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5, /* A0-AF */\n 5,5,5,7,5,5,5,5,5,5,5,5,7,8,6,6, /* B0-BF */\n 2,2,2,4,2,2,2,0,2,2,2,2,3,0,3,0, /* C0-CF */\n 4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5, /* D0-DF */\n 4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5, /* E0-EF */\n 5,5,5,7,5,5,5,5,5,5,5,5,6,6,6,6]; /* F0-FF */\n\n/* Instruction timing for the two-byte opcodes */\nvar cycles2 = [\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00-0F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10-1F */\n 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, /* 20-2F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20, /* 30-3F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40-4F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50-5F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60-6F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70-7F */\n 0,0,0,5,0,0,0,0,0,0,0,0,5,0,4,0, /* 80-8F */\n 0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6, /* 90-9F */\n 0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6, /* A0-AF */\n 0,0,0,8,0,0,0,0,0,0,0,0,8,0,7,7, /* B0-BF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, /* C0-CF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6, /* D0-DF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6, /* E0-EF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7]; /* F0-FF */\n\n/* Negative and zero flags for quicker flag settings */\nvar flagsNZ = [\n 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00-0F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10-1F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 20-2F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 30-3F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40-4F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50-5F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60-6F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70-7F */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* 80-8F */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* 90-9F */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* A0-AF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* B0-BF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* C0-CF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* D0-DF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* E0-EF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]; /* F0-FF */\n\nvar setV8 = function(a,b,r) {CC |= (((a^b^r^(r>>1))&0x80)>>6);};\nvar setV16 = function(a,b,r) {CC |= (((a^b^r^(r>>1))&0x8000)>>14);};\nvar getD = function() {return (rA<<8)+rB;};\nvar setD = function(v) {rA = (v>>8)& 0xff;rB=v&0xff;};\nvar PUSHB = function(b) {\n byteTo(--rS, b & 0xff);\n};\nvar PUSHW = function(b) {\n byteTo(--rS, b & 0xff);\n byteTo(--rS, (b>>8) & 0xff);\n};\n\nvar PUSHBU = function(b) {\n byteTo(--rU, b & 0xff);\n};\nvar PUSHWU = function(b) {\n byteTo(--rU, b & 0xff);\n byteTo(--rU, (b>>8) & 0xff);\n};\nvar PULLB = function() {\n return byteAt(rS++);\n};\nvar PULLW = function() {\n return byteAt(rS++) * 256 + byteAt(rS++);\n};\n\nvar PULLBU = function() {\n return byteAt(rU++);\n};\nvar PULLWU = function() {\n return byteAt(rU++) * 256 + byteAt(rU++);\n};\n\nvar PSHS = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x80) {PUSHW(PC);i += 2;}\n if (ucTemp & 0x40) {PUSHW(rU);i += 2;}\n if (ucTemp & 0x20){PUSHW(rY);i += 2;}\n if (ucTemp & 0x10){PUSHW(rX);i += 2;}\n if (ucTemp & 0x8){PUSHB(DP); i++;}\n if (ucTemp & 0x4){PUSHB(rB); i++;}\n if (ucTemp & 0x2){PUSHB(rA); i++;}\n if (ucTemp & 0x1){PUSHB(CC); i++;}\n T+=i; //timing\n};\nvar PSHU = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x80) {PUSHWU(PC);i += 2;}\n if (ucTemp & 0x40) {PUSHWU(rS);i += 2;}\n if (ucTemp & 0x20){PUSHWU(rY);i += 2;}\n if (ucTemp & 0x10){PUSHWU(rX);i += 2;}\n if (ucTemp & 0x8){PUSHBU(DP); i++;}\n if (ucTemp & 0x4){PUSHBU(rB); i++;}\n if (ucTemp & 0x2){PUSHBU(rA); i++;}\n if (ucTemp & 0x1){PUSHBU(CC); i++;}\n T+=i; //timing\n};\nvar PULS = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x1){CC = PULLB(); i++;}\n if (ucTemp & 0x2){rA = PULLB(); i++;}\n if (ucTemp & 0x4){rB = PULLB(); i++;}\n if (ucTemp & 0x8){DP = PULLB(); i++;}\n if (ucTemp & 0x10){rX = PULLW();i += 2;}\n if (ucTemp & 0x20){rY = PULLW();i += 2;}\n if (ucTemp & 0x40) {rU = PULLW();i += 2;}\n if (ucTemp & 0x80) {PC = PULLW();i += 2;}\n T+=i; //timing\n};\nvar PULU = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x1){CC = PULLBU(); i++;}\n if (ucTemp & 0x2){rA = PULLBU(); i++;}\n if (ucTemp & 0x4){rB = PULLBU(); i++;}\n if (ucTemp & 0x8){DP = PULLBU(); i++;}\n if (ucTemp & 0x10){rX = PULLWU();i += 2;}\n if (ucTemp & 0x20){rY = PULLWU();i += 2;}\n if (ucTemp & 0x40) {rS = PULLWU();i += 2;}\n if (ucTemp & 0x80) {PC = PULLWU();i += 2;}\n T+=i; //timing\n};\n\n\nvar getPBR = function(ucPostByte) {\n switch(ucPostByte & 0xf) {\n case 0x00: /* D */\n return getD();\n case 0x1: /* X */\n return rX;\n case 0x2: /* Y */\n return rY;\n case 0x3: /* U */\n return rU;\n case 0x4: /* S */\n return rS;\n case 0x5: /* PC */\n return PC;\n case 0x8: /* A */\n return rA;\n case 0x9: /* B */\n return rB;\n case 0xA: /* CC */\n return CC;\n case 0xB: /* DP */\n return DP;\n default: /* illegal */\n return null;\n }\n};\nvar setPBR = function(ucPostByte, v) {\n switch(ucPostByte & 0xf) /* Get destination register */\n {\n case 0x00: /* D */\n setD(v);return;\n case 0x1: /* X */\n rX = v; return;\n case 0x2: /* Y */\n rY = v; return;\n case 0x3: /* U */\n rU = v; return;\n case 0x4: /* S */\n rS = v; return;\n case 0x5: /* PC */\n PC = v; return;\n case 0x8: /* A */\n rA = v; return;\n case 0x9: /* B */\n rB = v; return;\n case 0xA: /* CC */\n CC = v; return;\n case 0xB: /* DP */\n DP = v; return;\n default: /* illegal */\n return;\n }\n};\n\nvar TFREXG = function(ucPostByte, bExchange)\n{\n\n var ucTemp = ucPostByte & 0x88;\n if (ucTemp == 0x80 || ucTemp == 0x08)\n ucTemp = 0; /* PROBLEM! */\n\n if (bExchange)\n {\n ucTemp = getPBR(ucPostByte>>4);\n setPBR(ucPostByte>>4, getPBR(ucPostByte));\n setPBR(ucPostByte, ucTemp);\n }\n else /* Transfer */ {\n setPBR(ucPostByte, getPBR(ucPostByte>>4));\n }\n} ;\n\nvar signed = function(x) {\n return (x>127)?(x-256):x;\n};\nvar signed16 = function(x) {\n return (x>32767)?(x-65536):x;\n};\n\nvar fetch = function() {\n var v = byteAt(PC++);\n PC &= 0xffff;\n return v;\n};\nvar fetch16 = function() {\n var v1 = byteAt(PC++);\n PC &= 0xffff;\n var v2 = byteAt(PC++);\n PC &= 0xffff;\n return v1*256+v2;\n};\n\nvar ReadWord = function(addr) {\n var v1 = byteAt(addr++);\n addr &= 0xffff;\n var v2 = byteAt(addr++);\n addr &= 0xffff;\n return v1*256+v2;\n};\nvar WriteWord = function(addr,v) {\n byteTo(addr++,(v>>8)&0xff);\n addr &= 0xffff;\n byteTo(addr,v&0xff);\n};\n\nvar PostByte = function() {\n var pb = fetch();\n var preg;\n switch (pb & 0x60) {\n case 0:\n preg = rX; break;\n case 0x20:\n preg = rY; break;\n case 0x40:\n preg = rU; break;\n case 0x60:\n preg = rS; break;\n }\n\n var xchg = null;\n var addr = null;\n var sTemp;\n\n if (pb & 0x80) /* Complex stuff */\n {\n switch (pb & 0x0f)\n {\n case 0: /* EA = ,reg+ */\n addr = preg;\n xchg = preg + 1;\n T += 2;\n break;\n case 1: /* EA = ,reg++ */\n addr = preg;\n xchg = preg + 2;\n T += 3;\n break;\n case 2: /* EA = ,-reg */\n xchg = preg - 1;\n addr = xchg;\n T += 2;\n break;\n case 3: /* EA = ,--reg */\n xchg = preg - 2;\n addr = xchg;\n T += 3;\n break;\n case 4: /* EA = ,reg */\n addr = preg;\n break;\n case 5: /* EA = ,reg + B */\n //usAddr = *pReg + (signed short)(signed char)regs->ucRegB;\n addr = preg + signed(rB);\n T += 1;\n break;\n case 6: /* EA = ,reg + A */\n addr = preg + signed(rA);\n T += 1;\n break;\n case 7: /* illegal */\n addr = 0;\n break;\n case 8: /* EA = ,reg + 8-bit offset */\n addr = preg + signed(fetch());\n T += 1;\n break;\n case 9: /* EA = ,reg + 16-bit offset */\n addr = preg + signed16(fetch16());\n T += 4;\n break;\n case 0xA: /* illegal */\n addr = 0;\n break;\n case 0xB: /* EA = ,reg + D */\n T += 4;\n addr = preg + getD();\n break;\n case 0xC: /* EA = PC + 8-bit offset */\n sTemp = signed(fetch());\n addr = PC + sTemp;\n T += 1;\n break;\n case 0xD: /* EA = PC + 16-bit offset */\n sTemp = signed16(fetch16());\n addr = PC + sTemp;\n T += 5;\n break;\n case 0xe: /* Illegal */\n addr = 0;\n break;\n case 0xF: /* EA = [,address] */\n T += 5;\n addr = fetch16();\n break;\n } /* switch */\n\n addr &= 0xffff;\n\n if (pb & 0x10) /* Indirect addressing */\n {\n addr = byteAt(addr)*256+byteAt((addr+1) & 0xffff);\n T += 3;\n }\n }\n else /* Just a 5 bit signed offset + register */\n {\n var sByte = pb & 0x1f;\n if (sByte > 15) /* Two's complement 5-bit value */\n sByte -= 32;\n addr = preg + sByte;\n T += 1;\n }\n\n if (xchg!==null) {\n switch (pb & 0x60) {\n case 0:\n rX = xchg; break;\n case 0x20:\n rY = xchg; break;\n case 0x40:\n rU = xchg; break;\n case 0x60:\n rS = xchg; break;\n }\n\n }\n\n return addr & 0xffff; /* Return the effective address */\n};\n\nvar flagsNZ16 = function(word) {\n CC &= ~(F_ZERO | F_NEGATIVE);\n if (word===0) CC |= F_ZERO;\n if (word & 0x8000) CC |= F_NEGATIVE;\n};\n\n// ============= Operations\n\nvar oINC = function(b) {\n b++;\n b &= 0xff;\n CC &= ~(F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[b];\n if (b === 0 || b == 0x80) CC |= F_OVERFLOW;\n return b;\n};\nvar oDEC = function(b) {\n b--;\n b &= 0xff;\n CC &= ~(F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[b];\n if (b === 0x7f || b == 0xff) CC |= F_OVERFLOW;\n return b;\n};\nvar oSUB = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n return temp&0xff;\n};\nvar oSUB16 = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if ((temp&0xffff)===0) CC|=F_ZERO;\n if (temp&0x8000) CC|=F_NEGATIVE;\n if (temp&0x10000) CC|=F_CARRY;\n setV16(b,v,temp);\n return temp&0xffff;\n};\nvar oADD = function(b,v) {\n var temp = b+v;\n //temp &= 0xff;\n CC &= ~(F_HALFCARRY | F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n if ((temp ^ b ^ v)&0x10) CC |= F_HALFCARRY;\n return temp&0xff;\n};\nvar oADD16 = function(b,v) {\n var temp = b+v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if ((temp&0xffff)===0) CC|=F_ZERO;\n if (temp&0x8000) CC|=F_NEGATIVE;\n if (temp&0x10000) CC|=F_CARRY;\n setV16(b,v,temp);\n return temp&0xffff;\n};\nvar oADC = function(b,v) {\n var temp = b+v+(CC & F_CARRY);\n //temp &= 0xff;\n CC &= ~(F_HALFCARRY | F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n if ((temp ^ b ^ v)&0x10) CC |= F_HALFCARRY;\n return temp&0xff;\n};\nvar oSBC = function(b,v) {\n var temp = b-v-(CC & F_CARRY);\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n return temp&0xff;\n};\nvar oCMP = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n return;\n};\nvar oCMP16 = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if ((temp&0xffff)===0) CC|=F_ZERO;\n if (temp&0x8000) CC|=F_NEGATIVE;\n if (temp&0x10000) CC|=F_CARRY;\n setV16(b,v,temp);\n return;\n};\n\nvar oNEG = function(b) {\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if (b == 0x80)\n CC |= F_OVERFLOW;\n b = ((~b)&0xff) + 1;\n if (b === 0) CC |= F_ZERO;\n if (b & 0x80) CC |= F_NEGATIVE | F_CARRY;\n return b;\n};\n\nvar oLSR = function(b) {\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE);\n if (b & 0x01) CC |= F_CARRY;\n b >>= 1;\n if (b === 0) CC |= F_ZERO;\n return b & 0xff;\n};\nvar oASR = function(b) {\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE);\n if (b & 0x01) CC |= F_CARRY;\n b = (b & 0x80) | (b>>1);\n CC |= flagsNZ[b];\n return b;\n};\nvar oASL = function(b) {\n var temp = b;\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE | F_OVERFLOW);\n if (b & 0x80) CC |= F_CARRY;\n b <<= 1;\n CC |= flagsNZ[b];\n if ((b ^ temp) & 0x80) CC|=F_OVERFLOW;\n return b;\n};\nvar oROL = function(b) {\n var temp = b;\n var oldc = CC&F_CARRY;\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE | F_OVERFLOW);\n if (b & 0x80) CC |= F_CARRY;\n b = b<<1 | oldc;\n CC |= flagsNZ[b];\n if ((b ^ temp) & 0x80) CC|=F_OVERFLOW;\n return b;\n};\nvar oROR = function(b) {\n var oldc = CC&F_CARRY;\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE);\n if (b & 0x01) CC |= F_CARRY;\n b = b>>1 | oldc<<7;\n CC |= flagsNZ[b];\n// if ((b ^ temp) & 0x80) CC|=F_OVERFLOW;\n return b;\n};\n\nvar oEOR = function(b,v) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b ^= v;\n CC |= flagsNZ[b];\n return b;\n};\nvar oOR = function(b,v) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b |= v;\n CC |= flagsNZ[b];\n return b;\n};\nvar oAND = function(b,v) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b &= v;\n CC |= flagsNZ[b];\n return b;\n};\nvar oCOM = function(b) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b ^= 0xff;\n CC |= flagsNZ[b];\n CC |= F_CARRY;\n return b;\n};\n\n//----common\nvar dpadd = function() {\n //direct page + 8bit index\n return DP*256 + fetch();\n};\n\nvar step = function() {\n var oldT = T;\n\n var addr = null;\n var pb = null;\n\n var oldPC = PC;\n var opcode = fetch();\n T+=cycles[opcode];\n switch (opcode) {\n case 0x00: //NEG DP\n addr = dpadd();\n byteTo(addr, oNEG(byteAt(addr)));\n break;\n case 0x03: //COM DP\n addr = dpadd();\n byteTo(addr, oCOM(byteAt(addr)));\n break;\n case 0x04: //LSR DP\n addr = dpadd();\n byteTo(addr, oLSR(byteAt(addr)));\n break;\n case 0x06: //ROR DP\n addr = dpadd();\n byteTo(addr, oROR(byteAt(addr)));\n break;\n case 0x07: //ASR DP\n addr = dpadd();\n byteTo(addr, oASR(byteAt(addr)));\n break;\n case 0x08: //ASL DP\n addr = dpadd();\n byteTo(addr, oASL(byteAt(addr)));\n break;\n case 0x09: //ROL DP\n addr = dpadd();\n byteTo(addr, oROL(byteAt(addr)));\n break;\n\n case 0x0A: //DEC DP\n addr = dpadd();\n byteTo(addr, oDEC(byteAt(addr)));\n break;\n case 0x0C: //INC DP\n addr = dpadd();\n byteTo(addr, oINC(byteAt(addr)));\n break;\n\n case 0x0D: //TST DP\n addr = dpadd();\n pb = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[pb];\n break;\n\n case 0x0E: //JMP DP\n addr = dpadd();\n PC = addr;\n break;\n case 0x0F: //CLR DP\n addr = dpadd();\n byteTo(addr,0);\n CC&=~(F_CARRY|F_NEGATIVE|F_OVERFLOW);\n CC |= F_ZERO;\n break;\n\n case 0x12: //NOP\n break;\n case 0x13: //SYNC\n break;\n case 0x16: //LBRA relative\n addr = signed16(fetch16());\n PC += addr;\n break;\n case 0x17: //LBSR relative\n addr = signed16(fetch16());\n PUSHW(PC);\n PC += addr;\n break;\n case 0x19: //DAA\n var cf = 0;\n var nhi = rA & 0xf0, nlo = rA & 0x0f;\n if( nlo>0x09 || CC & 0x20 ) cf |= 0x06;\n if( nhi>0x80 && nlo>0x09 ) cf |= 0x60;\n if( nhi>0x90 || CC & 0x01 ) cf |= 0x60;\n addr = cf + rA;\n CC &= ~(F_CARRY | F_NEGATIVE | F_ZERO | F_OVERFLOW);\n if (addr & 0x100)\n CC |= F_CARRY;\n rA = addr & 0xff;\n CC |= flagsNZ[rA];\n break;\n case 0x1A: //ORCC\n CC |= fetch();\n break;\n case 0x1C: //ANDCC\n CC &= fetch();\n break;\n case 0x1D: //SEX\n rA = (rB & 0x80)?0xff:0;\n flagsNZ16(getD());\n CC &= ~F_OVERFLOW;\n break;\n case 0x1E: //EXG\n pb = fetch();\n TFREXG(pb,true);\n break;\n case 0x1F: //EXG\n pb = fetch();\n TFREXG(pb,false);\n break;\n\n case 0x20: //BRA\n addr = signed(fetch());\n PC += addr;\n break;\n case 0x21: //BRN\n addr = signed(fetch());\n break;\n case 0x22: //BHI\n addr = signed(fetch());\n if (!(CC&(F_CARRY | F_ZERO))) PC += addr;\n break;\n case 0x23: //BLS\n addr = signed(fetch());\n if (CC&(F_CARRY | F_ZERO)) PC += addr;\n break;\n case 0x24: //BCC\n addr = signed(fetch());\n if (!(CC&F_CARRY)) PC += addr;\n break;\n case 0x25: //BCS\n addr = signed(fetch());\n if (CC&F_CARRY) PC += addr;\n break;\n case 0x26: //BNE\n addr = signed(fetch());\n if (!(CC&F_ZERO)) PC += addr;\n break;\n case 0x27: //BEQ\n addr = signed(fetch());\n if (CC&F_ZERO) PC += addr;\n break;\n case 0x28: //BVC\n addr = signed(fetch());\n if (!(CC&F_OVERFLOW)) PC += addr;\n break;\n case 0x29: //BVS\n addr = signed(fetch());\n if (CC&F_OVERFLOW) PC += addr;\n break;\n case 0x2A: //BPL\n addr = signed(fetch());\n if (!(CC&F_NEGATIVE)) PC += addr;\n break;\n case 0x2B: //BMI\n addr = signed(fetch());\n if (CC&F_NEGATIVE) PC += addr;\n break;\n case 0x2C: //BGE\n addr = signed(fetch());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2))) PC += addr;\n break;\n case 0x2D: //BLT\n addr = signed(fetch());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2)) PC += addr;\n break;\n case 0x2E: //BGT\n addr = signed(fetch());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO))) PC += addr;\n break;\n case 0x2F: //BLE\n addr = signed(fetch());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO)) PC += addr;\n break;\n\n case 0x30: //LEAX\n rX = PostByte();\n if (rX===0) CC|=F_ZERO; else CC&=~F_ZERO;\n break;\n case 0x31: //LEAY\n rY = PostByte();\n if (rY===0) CC|=F_ZERO; else CC&=~F_ZERO;\n break;\n case 0x32: //LEAS\n rS = PostByte();\n break;\n case 0x33: //LEAU\n rU = PostByte();\n break;\n\n case 0x34: //PSHS\n PSHS(fetch());\n break;\n case 0x35: //PULS\n PULS(fetch());\n break;\n case 0x36: //PSHU\n PSHU(fetch());\n break;\n case 0x37: //PULU\n PULU(fetch());\n break;\n case 0x39: //RTS\n PC = PULLW();\n break;\n case 0x3A: //ABX\n rX += rB;\n break;\n case 0x3B: //RTI\n CC = PULLB();\n if (CC & F_ENTIRE) {\n T+=9;\n rA = PULLB();\n rB = PULLB();\n DP = PULLB();\n rX = PULLW();\n rY = PULLW();\n rU = PULLW();\n }\n PC = PULLW();\n break;\n case 0x3C: //CWAI **todo\n CC &= fetch();\n break;\n case 0x3D: //MUL\n addr = rA * rB;\n if (addr===0) CC|=F_ZERO; else CC&=~F_ZERO;\n if (addr&0x80) CC|=F_CARRY; else CC&=~F_CARRY;\n setD(addr);\n break;\n case 0x3F: //SWI\n CC |= F_ENTIRE;\n PUSHW(PC);\n PUSHW(rU);\n PUSHW(rY);\n PUSHW(rX);\n PUSHB(DP);\n PUSHB(rB);\n PUSHB(rA);\n PUSHB(CC);\n CC |= F_IRQMASK | F_FIRQMASK;\n PC = ReadWord(vecSWI);\n break;\n\n case 0x40:\n rA = oNEG(rA);\n break;\n case 0x43:\n rA = oCOM(rA);\n break;\n case 0x44:\n rA = oLSR(rA);\n break;\n case 0x46:\n rA = oROR(rA);\n break;\n case 0x47:\n rA = oASR(rA);\n break;\n case 0x48:\n rA = oASL(rA);\n break;\n case 0x49:\n rA = oROL(rA);\n break;\n case 0x4A:\n rA = oDEC(rA);\n break;\n case 0x4C:\n rA = oINC(rA);\n break;\n case 0x4D:\n CC &= ~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x4F:\n rA = 0;\n CC &= ~(F_NEGATIVE|F_OVERFLOW|F_CARRY);\n CC |= F_ZERO;\n break;\n\n case 0x50:\n rB = oNEG(rB);\n break;\n case 0x53:\n rB = oCOM(rB);\n break;\n case 0x54:\n rB = oLSR(rB);\n break;\n case 0x56:\n rB = oROR(rB);\n break;\n case 0x57:\n rB = oASR(rB);\n break;\n case 0x58:\n rB = oASL(rB);\n break;\n case 0x59:\n rB = oROL(rB);\n break;\n case 0x5A:\n rB = oDEC(rB);\n break;\n case 0x5C:\n rB = oINC(rB);\n break;\n case 0x5D:\n CC &= ~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0x5F:\n rB = 0;\n CC &= ~(F_NEGATIVE|F_OVERFLOW|F_CARRY);\n CC |= F_ZERO;\n break;\n\n case 0x60: //NEG indexed\n addr = PostByte();\n byteTo(addr, oNEG(byteAt(addr)));\n break;\n case 0x63: //COM indexed\n addr = PostByte();\n byteTo(addr, oCOM(byteAt(addr)));\n break;\n case 0x64: //LSR indexed\n addr = PostByte();\n byteTo(addr, oLSR(byteAt(addr)));\n break;\n case 0x66: //ROR indexed\n addr = PostByte();\n byteTo(addr, oROR(byteAt(addr)));\n break;\n case 0x67: //ASR indexed\n addr = PostByte();\n byteTo(addr, oASR(byteAt(addr)));\n break;\n case 0x68: //ASL indexed\n addr = PostByte();\n byteTo(addr, oASL(byteAt(addr)));\n break;\n case 0x69: //ROL indexed\n addr = PostByte();\n byteTo(addr, oROL(byteAt(addr)));\n break;\n\n case 0x6A: //DEC indexed\n addr = PostByte();\n byteTo(addr, oDEC(byteAt(addr)));\n break;\n case 0x6C: //INC indexed\n addr = PostByte();\n byteTo(addr, oINC(byteAt(addr)));\n break;\n\n case 0x6D: //TST indexed\n addr = PostByte();\n pb = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[pb];\n break;\n\n case 0x6E: //JMP indexed\n addr = PostByte();\n PC = addr;\n break;\n case 0x6F: //CLR indexed\n addr = PostByte();\n byteTo(addr,0);\n CC&=~(F_CARRY|F_NEGATIVE|F_OVERFLOW);\n CC |= F_ZERO;\n break;\n\n\n case 0x70: //NEG extended\n addr = fetch16();\n byteTo(addr, oNEG(byteAt(addr)));\n break;\n case 0x73: //COM extended\n addr = fetch16();\n byteTo(addr, oCOM(byteAt(addr)));\n break;\n case 0x74: //LSR extended\n addr = fetch16();\n byteTo(addr, oLSR(byteAt(addr)));\n break;\n case 0x76: //ROR extended\n addr = fetch16();\n byteTo(addr, oROR(byteAt(addr)));\n break;\n case 0x77: //ASR extended\n addr = fetch16();\n byteTo(addr, oASR(byteAt(addr)));\n break;\n case 0x78: //ASL extended\n addr = fetch16();\n byteTo(addr, oASL(byteAt(addr)));\n break;\n case 0x79: //ROL extended\n addr = fetch16();\n byteTo(addr, oROL(byteAt(addr)));\n break;\n\n case 0x7A: //DEC extended\n addr = fetch16();\n byteTo(addr, oDEC(byteAt(addr)));\n break;\n case 0x7C: //INC extended\n addr = fetch16();\n byteTo(addr, oINC(byteAt(addr)));\n break;\n\n case 0x7D: //TST extended\n addr = fetch16();\n pb = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[pb];\n break;\n\n case 0x7E: //JMP extended\n addr = fetch16();\n PC = addr;\n break;\n case 0x7F: //CLR extended\n addr = fetch16();\n byteTo(addr,0);\n CC&=~(F_CARRY|F_NEGATIVE|F_OVERFLOW);\n CC |= F_ZERO;\n break;\n\n // regs A,X\n\n case 0x80: //SUBA imm\n rA = oSUB(rA, fetch());\n break;\n case 0x81: //CMPA imm\n oCMP(rA, fetch());\n break;\n case 0x82: //SBCA imm\n rA = oSBC(rA, fetch());\n break;\n case 0x83: //SUBD imm\n setD(oSUB16(getD(),fetch16()));\n break;\n case 0x84: //ANDA imm\n rA = oAND(rA, fetch());\n break;\n case 0x85: //BITA imm\n oAND(rA, fetch());\n break;\n case 0x86: //LDA imm\n rA = fetch();\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x88: //EORA imm\n rA = oEOR(rA, fetch());\n break;\n case 0x89: //ADCA imm\n rA = oADC(rA, fetch());\n break;\n case 0x8A: //ORA imm\n rA = oOR(rA, fetch());\n break;\n case 0x8B: //ADDA imm\n rA = oADD(rA, fetch());\n break;\n case 0x8C: //CMPX imm\n oCMP16(rX, fetch16());\n break;\n\n case 0x8D: //JSR imm\n addr = signed(fetch());\n PUSHW(PC);\n PC+=addr;\n break;\n case 0x8E: //LDX imm\n rX = fetch16();\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0x90: //SUBA direct\n addr = dpadd();\n rA = oSUB(rA, byteAt(addr));\n break;\n case 0x91: //CMPA direct\n addr = dpadd();\n oCMP(rA, byteAt(addr));\n break;\n case 0x92: //SBCA direct\n addr = dpadd();\n rA = oSBC(rA, byteAt(addr));\n break;\n case 0x93: //SUBD direct\n addr = dpadd();\n setD(oSUB16(getD(),ReadWord(addr)));\n break;\n case 0x94: //ANDA direct\n addr = dpadd();\n rA = oAND(rA, byteAt(addr));\n break;\n case 0x95: //BITA direct\n addr = dpadd();\n oAND(rA, byteAt(addr));\n break;\n case 0x96: //LDA direct\n addr = dpadd();\n rA = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x97: //STA direct\n addr = dpadd();\n byteTo(addr,rA);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x98: //EORA direct\n addr = dpadd();\n rA = oEOR(rA, byteAt(addr));\n break;\n case 0x99: //ADCA direct\n addr = dpadd();\n rA = oADC(rA, byteAt(addr));\n break;\n case 0x9A: //ORA direct\n addr = dpadd();\n rA = oOR(rA, byteAt(addr));\n break;\n case 0x9B: //ADDA direct\n addr = dpadd();\n rA = oADD(rA, byteAt(addr));\n break;\n case 0x9C: //CMPX direct\n addr = dpadd();\n oCMP16(rX, ReadWord(addr));\n break;\n\n case 0x9D: //JSR direct\n addr = dpadd();\n PUSHW(PC);\n PC=addr;\n break;\n case 0x9E: //LDX direct\n addr = dpadd();\n rX = ReadWord(addr);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0x9F: //STX direct\n addr = dpadd();\n WriteWord(addr,rX);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0xA0: //SUBA indexed\n addr = PostByte();\n rA = oSUB(rA, byteAt(addr));\n break;\n case 0xA1: //CMPA indexed\n addr = PostByte();\n oCMP(rA, byteAt(addr));\n break;\n case 0xA2: //SBCA indexed\n addr = PostByte();\n rA = oSBC(rA, byteAt(addr));\n break;\n case 0xA3: //SUBD indexed\n addr = PostByte();\n setD(oSUB16(getD(),ReadWord(addr)));\n break;\n case 0xA4: //ANDA indexed\n addr = PostByte();\n rA = oAND(rA, byteAt(addr));\n break;\n case 0xA5: //BITA indexed\n addr = PostByte();\n oAND(rA, byteAt(addr));\n break;\n case 0xA6: //LDA indexed\n addr = PostByte();\n rA = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xA7: //STA indexed\n addr = PostByte();\n byteTo(addr,rA);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xA8: //EORA indexed\n addr = PostByte();\n rA = oEOR(rA, byteAt(addr));\n break;\n case 0xA9: //ADCA indexed\n addr = PostByte();\n rA = oADC(rA, byteAt(addr));\n break;\n case 0xAA: //ORA indexed\n addr = PostByte();\n rA = oOR(rA, byteAt(addr));\n break;\n case 0xAB: //ADDA indexed\n addr = PostByte();\n rA = oADD(rA, byteAt(addr));\n break;\n case 0xAC: //CMPX indexed\n addr = PostByte();\n oCMP16(rX, ReadWord(addr));\n break;\n\n case 0xAD: //JSR indexed\n addr = PostByte();\n PUSHW(PC);\n PC=addr;\n break;\n case 0xAE: //LDX indexed\n addr = PostByte();\n rX = ReadWord(addr);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0xAF: //STX indexed\n addr = PostByte();\n WriteWord(addr,rX);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0xB0: //SUBA extended\n addr = fetch16();\n rA = oSUB(rA, byteAt(addr));\n break;\n case 0xB1: //CMPA extended\n addr = fetch16();\n oCMP(rA, byteAt(addr));\n break;\n case 0xB2: //SBCA extended\n addr = fetch16();\n rA = oSBC(rA, byteAt(addr));\n break;\n case 0xB3: //SUBD extended\n addr = fetch16();\n setD(oSUB16(getD(),ReadWord(addr)));\n break;\n case 0xB4: //ANDA extended\n addr = fetch16();\n rA = oAND(rA, byteAt(addr));\n break;\n case 0xB5: //BITA extended\n addr = fetch16();\n oAND(rA, byteAt(addr));\n break;\n case 0xB6: //LDA extended\n addr = fetch16();\n rA = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xB7: //STA extended\n addr = fetch16();\n byteTo(addr,rA);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xB8: //EORA extended\n addr = fetch16();\n rA = oEOR(rA, byteAt(addr));\n break;\n case 0xB9: //ADCA extended\n addr = fetch16();\n rA = oADC(rA, byteAt(addr));\n break;\n case 0xBA: //ORA extended\n addr = fetch16();\n rA = oOR(rA, byteAt(addr));\n break;\n case 0xBB: //ADDA extended\n addr = fetch16();\n rA = oADD(rA, byteAt(addr));\n break;\n case 0xBC: //CMPX extended\n addr = fetch16();\n oCMP16(rX, ReadWord(addr));\n break;\n\n case 0xBD: //JSR extended\n addr = fetch16();\n PUSHW(PC);\n PC=addr;\n break;\n case 0xBE: //LDX extended\n addr = fetch16();\n rX = ReadWord(addr);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0xBF: //STX extended\n addr = fetch16();\n WriteWord(addr,rX);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n\n //Regs B, Y\n\n case 0xC0: //SUBB imm\n rB = oSUB(rB, fetch());\n break;\n case 0xC1: //CMPB imm\n oCMP(rB, fetch());\n break;\n case 0xC2: //SBCB imm\n rB = oSBC(rB, fetch());\n break;\n case 0xC3: //ADDD imm\n setD(oADD16(getD(),fetch16()));\n break;\n case 0xC4: //ANDB imm\n rB = oAND(rB, fetch());\n break;\n case 0xC5: //BITB imm\n oAND(rB, fetch());\n break;\n case 0xC6: //LDB imm\n rB = fetch();\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xC8: //EORB imm\n rB = oEOR(rB, fetch());\n break;\n case 0xC9: //ADCB imm\n rB = oADC(rB, fetch());\n break;\n case 0xCA: //ORB imm\n rB = oOR(rB, fetch());\n break;\n case 0xCB: //ADDB imm\n rB = oADD(rB, fetch());\n break;\n case 0xCC: //LDD imm\n addr = fetch16();\n setD(addr);\n flagsNZ16(addr);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xCE: //LDU imm\n rU = fetch16();\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0xD0: //SUBB direct\n addr = dpadd();\n rB = oSUB(rB, byteAt(addr));\n break;\n case 0xD1: //CMPB direct\n addr = dpadd();\n oCMP(rB, byteAt(addr));\n break;\n case 0xD2: //SBCB direct\n addr = dpadd();\n rB = oSBC(rB, byteAt(addr));\n break;\n case 0xD3: //ADDD direct\n addr = dpadd();\n setD(oADD16(getD(),ReadWord(addr)));\n break;\n case 0xD4: //ANDB direct\n addr = dpadd();\n rB = oAND(rB, byteAt(addr));\n break;\n case 0xD5: //BITB direct\n addr = dpadd();\n oAND(rB, byteAt(addr));\n break;\n case 0xD6: //LDB direct\n addr = dpadd();\n rB = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xD7: //STB direct\n addr = dpadd();\n byteTo(addr,rB);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xD8: //EORB direct\n addr = dpadd();\n rB = oEOR(rB, byteAt(addr));\n break;\n case 0xD9: //ADCB direct\n addr = dpadd();\n rB = oADC(rB, byteAt(addr));\n break;\n case 0xDA: //ORB direct\n addr = dpadd();\n rB = oOR(rB, byteAt(addr));\n break;\n case 0xDB: //ADDB direct\n addr = dpadd();\n rB = oADD(rB, byteAt(addr));\n break;\n case 0xDC: //LDD direct\n addr = dpadd();\n pb = ReadWord(addr);\n setD(pb);\n flagsNZ16(pb);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xDD: //STD direct\n addr = dpadd();\n WriteWord(addr, getD());\n CC&=~F_OVERFLOW;\n break;\n case 0xDE: //LDU direct\n addr = dpadd();\n rU = ReadWord(addr);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xDF: //STU direct\n addr = dpadd();\n WriteWord(addr,rU);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xE0: //SUBB indexed\n addr = PostByte();\n rB = oSUB(rB, byteAt(addr));\n break;\n case 0xE1: //CMPB indexed\n addr = PostByte();\n oCMP(rB, byteAt(addr));\n break;\n case 0xE2: //SBCB indexed\n addr = PostByte();\n rB = oSBC(rB, byteAt(addr));\n break;\n case 0xE3: //ADDD indexed\n addr = PostByte();\n setD(oADD16(getD(),ReadWord(addr)));\n break;\n case 0xE4: //ANDB indexed\n addr = PostByte();\n rB = oAND(rB, byteAt(addr));\n break;\n case 0xE5: //BITB indexed\n addr = PostByte();\n oAND(rB, byteAt(addr));\n break;\n case 0xE6: //LDB indexed\n addr = PostByte();\n rB = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xE7: //STB indexed\n addr = PostByte();\n byteTo(addr,rB);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xE8: //EORB indexed\n addr = PostByte();\n rB = oEOR(rB, byteAt(addr));\n break;\n case 0xE9: //ADCB indexed\n addr = PostByte();\n rB = oADC(rB, byteAt(addr));\n break;\n case 0xEA: //ORB indexed\n addr = PostByte();\n rB = oOR(rB, byteAt(addr));\n break;\n case 0xEB: //ADDB indexed\n addr = PostByte();\n rB = oADD(rB, byteAt(addr));\n break;\n case 0xEC: //LDD indexed\n addr = PostByte();\n pb = ReadWord(addr);\n setD(pb);\n flagsNZ16(pb);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xED: //STD indexed\n addr = PostByte();\n WriteWord(addr, getD());\n CC&=~F_OVERFLOW;\n break;\n case 0xEE: //LDU indexed\n addr = PostByte();\n rU = ReadWord(addr);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xEF: //STU indexed\n addr = PostByte();\n WriteWord(addr,rU);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0xF0: //SUBB extended\n addr = fetch16();\n rB = oSUB(rB, byteAt(addr));\n break;\n case 0xF1: //CMPB extended\n addr = fetch16();\n oCMP(rB, byteAt(addr));\n break;\n case 0xF2: //SBCB extended\n addr = fetch16();\n rB = oSBC(rB, byteAt(addr));\n break;\n case 0xF3: //ADDD extended\n addr = fetch16();\n setD(oADD16(getD(),ReadWord(addr)));\n break;\n case 0xF4: //ANDB extended\n addr = fetch16();\n rB = oAND(rB, byteAt(addr));\n break;\n case 0xF5: //BITB extended\n addr = fetch16();\n oAND(rB, byteAt(addr));\n break;\n case 0xF6: //LDB extended\n addr = fetch16();\n rB = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xF7: //STB extended\n addr = fetch16();\n byteTo(addr,rB);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xF8: //EORB extended\n addr = fetch16();\n rB = oEOR(rB, byteAt(addr));\n break;\n case 0xF9: //ADCB extended\n addr = fetch16();\n rB = oADC(rB, byteAt(addr));\n break;\n case 0xFA: //ORB extended\n addr = fetch16();\n rB = oOR(rB, byteAt(addr));\n break;\n case 0xFB: //ADDB extended\n addr = fetch16();\n rB = oADD(rB, byteAt(addr));\n break;\n case 0xFC: //LDD extended\n addr = fetch16();\n pb = ReadWord(addr);\n setD(pb);\n flagsNZ16(pb);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xFD: //STD extended\n addr = fetch16();\n WriteWord(addr, getD());\n CC&=~F_OVERFLOW;\n break;\n case 0xFE: //LDU extended\n addr = fetch16();\n rU = ReadWord(addr);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xFF: //STU extended\n addr = fetch16();\n WriteWord(addr,rU);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n\n // page 1\n case 0x10: //page 1\n {\n opcode = fetch();\n T+=cycles2[opcode];\n switch(opcode) {\n case 0x21: //BRN\n addr = signed16(fetch16());\n break;\n case 0x22: //BHI\n addr = signed16(fetch16());\n if (!(CC&(F_CARRY | F_ZERO))) PC += addr;\n break;\n case 0x23: //BLS\n addr = signed16(fetch16());\n if (CC&(F_CARRY | F_ZERO)) PC += addr;\n break;\n case 0x24: //BCC\n addr = signed16(fetch16());\n if (!(CC&F_CARRY)) PC += addr;\n break;\n case 0x25: //BCS\n addr = signed16(fetch16());\n if (CC&F_CARRY) PC += addr;\n break;\n case 0x26: //BNE\n addr = signed16(fetch16());\n if (!(CC&F_ZERO)) PC += addr;\n break;\n case 0x27: //BEQ\n addr = signed16(fetch16());\n if (CC&F_ZERO) PC += addr;\n break;\n case 0x28: //BVC\n addr = signed16(fetch16());\n if (!(CC&F_OVERFLOW)) PC += addr;\n break;\n case 0x29: //BVS\n addr = signed16(fetch16());\n if (CC&F_OVERFLOW) PC += addr;\n break;\n case 0x2A: //BPL\n addr = signed16(fetch16());\n if (!(CC&F_NEGATIVE)) PC += addr;\n break;\n case 0x2B: //BMI\n addr = signed16(fetch16());\n if (CC&F_NEGATIVE) PC += addr;\n break;\n case 0x2C: //BGE\n addr = signed16(fetch16());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2))) PC += addr;\n break;\n case 0x2D: //BLT\n addr = signed16(fetch16());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2)) PC += addr;\n break;\n case 0x2E: //BGT\n addr = signed16(fetch16());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO))) PC += addr;\n break;\n case 0x2F: //BLE\n addr = signed16(fetch16());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO)) PC += addr;\n break;\n case 0x3f: //SWI2\n CC |= F_ENTIRE;\n PUSHW(PC);\n PUSHW(rU);\n PUSHW(rY);\n PUSHW(rX);\n PUSHB(DP);\n PUSHB(rB);\n PUSHB(rA);\n PUSHB(CC);\n CC |= F_IRQMASK | F_FIRQMASK;\n PC = ReadWord(vecSWI2);\n break;\n case 0x83: //CMPD imm\n oCMP16(getD(),fetch16());\n break;\n case 0x8C: //CMPY imm\n oCMP16(rY,fetch16());\n break;\n case 0x8E: //LDY imm\n rY = fetch16();\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0x93: //CMPD direct\n addr = dpadd();\n oCMP16(getD(),ReadWord(addr));\n break;\n case 0x9C: //CMPY direct\n addr = dpadd();\n oCMP16(rY,ReadWord(addr));\n break;\n case 0x9E: //LDY direct\n addr = dpadd();\n rY = ReadWord(addr);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0x9F: //STY direct\n addr = dpadd();\n WriteWord(addr,rY);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xA3: //CMPD indexed\n addr = PostByte();\n oCMP16(getD(),ReadWord(addr));\n break;\n case 0xAC: //CMPY indexed\n addr = PostByte();\n oCMP16(rY,ReadWord(addr));\n break;\n case 0xAE: //LDY indexed\n addr = PostByte();\n rY = ReadWord(addr);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xAF: //STY indexed\n addr = PostByte();\n WriteWord(addr,rY);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xB3: //CMPD extended\n addr = fetch16();\n oCMP16(getD(),ReadWord(addr));\n break;\n case 0xBC: //CMPY extended\n addr = fetch16();\n oCMP16(rY,ReadWord(addr));\n break;\n case 0xBE: //LDY extended\n addr = fetch16();\n rY = ReadWord(addr);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xBF: //STY extended\n addr = fetch16();\n WriteWord(addr,rY);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xCE: //LDS imm\n rS = fetch16();\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xDE: //LDS direct\n addr = dpadd();\n rS = ReadWord(addr);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xDF: //STS direct\n addr = dpadd();\n WriteWord(addr,rS);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xEE: //LDS indexed\n addr = PostByte();\n rS = ReadWord(addr);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xEF: //STS indexed\n addr = PostByte();\n WriteWord(addr,rS);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xFE: //LDS extended\n addr = fetch16();\n rS = ReadWord(addr);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xFF: //STS extended\n addr = fetch16();\n WriteWord(addr,rS);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n }\n }\n break;\n // page 2\n case 0x11: //page 2\n {\n opcode = fetch();\n T+=cycles2[opcode];\n switch(opcode) {\n case 0x3f: //SWI3\n CC |= F_ENTIRE;\n PUSHW(PC);\n PUSHW(rU);\n PUSHW(rY);\n PUSHW(rX);\n PUSHB(DP);\n PUSHB(rB);\n PUSHB(rA);\n PUSHB(CC);\n CC |= F_IRQMASK | F_FIRQMASK;\n PC = ReadWord(vecSWI3);\n break;\n case 0x83: //CMPU imm\n oCMP16(rU, fetch16());\n break;\n case 0x8C: //CMPS imm\n oCMP16(rS, fetch16());\n break;\n case 0x93: //CMPU imm\n addr = dpadd();\n oCMP16(rU, ReadWord(addr));\n break;\n case 0x9C: //CMPS imm\n addr = dpadd();\n oCMP16(rS, ReadWord(addr));\n break;\n case 0xA3: //CMPU imm\n addr = PostByte();\n oCMP16(rU, ReadWord(addr));\n break;\n case 0xAC: //CMPS imm\n addr = PostByte();\n oCMP16(rS, ReadWord(addr));\n break;\n case 0xB3: //CMPU imm\n addr = fetch16();\n oCMP16(rU, ReadWord(addr));\n break;\n case 0xBC: //CMPS imm\n addr = fetch16();\n oCMP16(rS, ReadWord(addr));\n break;\n\n }\n }\n break;\n\n\n }\n\n rA &= 0xff;\n rB &= 0xff;\n CC &= 0xff;\n DP &= 0xff;\n rX &= 0xffff;\n rY &= 0xffff;\n rU &= 0xffff;\n rS &= 0xffff;\n PC &= 0xffff;\n return T-oldT;\n\n};\n\nvar reset = function(){\n PC = ReadWord(vecRESET);\n DP = 0;\n CC |= F_FIRQMASK | F_IRQMASK;\n T=0;\n rA=rB=DP=rX=rY=rU=rS=0;\n};\n\n//---------- Disassembler\n\n/*\nILLEGAL 0\nDIRECT 1\nINHERENT 2\nBRANCH_REL_16 3\nIMMEDIAT_8 4\nBRANCH_REL_8 5\nINDEXED 6\nEXTENDED 7\nIMMEDIAT_16 8\n\nPSHS 10\nPSHU 11\n\nEXG, TFR 20\n*/\nvar ds = [\n[2, 1,\"NEG\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[2, 1,\"COM\"],\n[2, 1,\"LSR\"],\n[1, 0,\"???\"],\n[2, 1,\"ROR\"],\n[2, 1,\"ASR\"],\n[2, 1,\"LSL\"],\n[2, 1,\"ROL\"],\n[2, 1,\"DEC\"],\n[1, 0,\"???\"],\n[2, 1,\"INC\"],\n[2, 1,\"TST\"],\n[2, 1,\"JMP\"],\n[2, 1,\"CLR\"],\n[1, 0,\"Prefix\"],\n[1, 0,\"Prefix\"],\n[1, 2,\"NOP\"],\n[1, 2,\"SYNC\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[3, 3,\"LBRA\"],\n[3, 3,\"LBSR\"],\n[1, 0,\"???\"],\n[1, 2,\"DAA\"],\n[2, 4,\"ORCC\"],\n[1, 0,\"???\"],\n[2, 4,\"ANDCC\"],\n[1, 2,\"SEX\"],\n[2, 20,\"EXG\"],\n[2, 20,\"TFR\"],\n[2, 5,\"BRA\"],\n[2, 5,\"BRN\"],\n[2, 5,\"BHI\"],\n[2, 5,\"BLS\"],\n[2, 5,\"BCC\"],\n[2, 5,\"BCS\"],\n[2, 5,\"BNE\"],\n[2, 5,\"BEQ\"],\n[2, 5,\"BVC\"],\n[2, 5,\"BVS\"],\n[2, 5,\"BPL\"],\n[2, 5,\"BMI\"],\n[2, 5,\"BGE\"],\n[2, 5,\"BLT\"],\n[2, 5,\"BGT\"],\n[2, 5,\"BLE\"],\n[2, 6,\"LEAX\"],\n[2, 6,\"LEAY\"],\n[2, 6,\"LEAS\"],\n[2, 6,\"LEAU\"],\n[2, 10,\"PSHS\"],\n[2, 10,\"PULS\"],\n[2, 11,\"PSHU\"],\n[2, 11,\"PULU\"],\n[1, 0,\"???\"],\n[1, 2,\"RTS\"],\n[1, 2,\"ABX\"],\n[1, 2,\"RTI\"],\n[2, 2,\"CWAI\"],\n[1, 2,\"MUL\"],\n[1, 2,\"RESET\"],\n[1, 2,\"SWI1\"],\n[1, 2,\"NEGA\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[1, 2,\"COMA\"],\n[1, 2,\"LSRA\"],\n[1, 0,\"???\"],\n[1, 2,\"RORA\"],\n[1, 2,\"ASRA\"],\n[1, 2,\"ASLA\"],\n[1, 2,\"ROLA\"],\n[1, 2,\"DECA\"],\n[1, 0,\"???\"],\n[1, 2,\"INCA\"],\n[1, 2,\"TSTA\"],\n[1, 0,\"???\"],\n[1, 2,\"CLRA\"],\n[1, 2,\"NEGB\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[1, 2,\"COMB\"],\n[1, 2,\"LSRB\"],\n[1, 0,\"???\"],\n[1, 2,\"RORB\"],\n[1, 2,\"ASRB\"],\n[1, 2,\"ASLB\"],\n[1, 2,\"ROLB\"],\n[1, 2,\"DECB\"],\n[1, 0,\"???\"],\n[1, 2,\"INCB\"],\n[1, 2,\"TSTB\"],\n[1, 0,\"???\"],\n[1, 2,\"CLRB\"],\n[2, 6,\"NEG\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[2, 6,\"COM\"],\n[2, 6,\"LSR\"],\n[1, 0,\"???\"],\n[2, 6,\"ROR\"],\n[2, 6,\"ASR\"],\n[2, 6,\"LSL\"],\n[2, 6,\"ROL\"],\n[2, 6,\"DEC\"],\n[1, 0,\"???\"],\n[2, 6,\"INC\"],\n[2, 6,\"TST\"],\n[2, 6,\"JMP\"],\n[2, 6,\"CLR\"],\n[3, 7,\"NEG\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[3, 7,\"COM\"],\n[3, 7,\"LSR\"],\n[1, 0,\"???\"],\n[3, 7,\"ROR\"],\n[3, 7,\"ASR\"],\n[3, 7,\"LSL\"],\n[3, 7,\"ROL\"],\n[3, 7,\"DEC\"],\n[1, 0,\"???\"],\n[3, 7,\"INC\"],\n[3, 7,\"TST\"],\n[3, 7,\"JMP\"],\n[3, 7,\"CLR\"],\n[2, 4,\"SUBA\"],\n[2, 4,\"CMPA\"],\n[2, 4,\"SBCA\"],\n[3, 8,\"SUBD\"],\n[2, 4,\"ANDA\"],\n[2, 4,\"BITA\"],\n[2, 4,\"LDA\"],\n[1, 0,\"???\"],\n[2, 4,\"EORA\"],\n[2, 4,\"ADCA\"],\n[2, 4,\"ORA\"],\n[2, 4,\"ADDA\"],\n[3, 8,\"CMPX\"],\n[2, 5,\"BSR\"],\n[3, 8,\"LDX\"],\n[1, 0,\"???\"],\n[2, 1,\"SUBA\"],\n[2, 1,\"CMPA\"],\n[2, 1,\"SBCA\"],\n[2, 1,\"SUBd\"],\n[2, 1,\"ANDA\"],\n[2, 1,\"BITA\"],\n[2, 1,\"LDA\"],\n[2, 1,\"STA\"],\n[2, 1,\"EORA\"],\n[2, 1,\"ADCA\"],\n[2, 1,\"ORA\"],\n[2, 1,\"ADDA\"],\n[2, 1,\"CMPX\"],\n[2, 1,\"JSR\"],\n[2, 1,\"LDX\"],\n[2, 1,\"STX\"],\n[2, 6,\"SUBA\"],\n[2, 6,\"CMPA\"],\n[2, 6,\"SBCA\"],\n[2, 6,\"SUBD\"],\n[2, 6,\"ANDA\"],\n[2, 6,\"BITA\"],\n[2, 6,\"LDA\"],\n[2, 6,\"STA\"],\n[2, 6,\"EORA\"],\n[2, 6,\"ADCA\"],\n[2, 6,\"ORA\"],\n[2, 6,\"ADDA\"],\n[2, 6,\"CMPX\"],\n[2, 6,\"JSR\"],\n[2, 6,\"LDX\"],\n[2, 6,\"STX\"],\n[3, 7,\"SUBA\"],\n[3, 7,\"CMPA\"],\n[3, 7,\"SBCA\"],\n[3, 7,\"SUBD\"],\n[3, 7,\"ANDA\"],\n[3, 7,\"BITA\"],\n[3, 7,\"LDA\"],\n[3, 7,\"STA\"],\n[3, 7,\"EORA\"],\n[3, 7,\"ADCA\"],\n[3, 7,\"ORA\"],\n[3, 7,\"ADDA\"],\n[3, 7,\"CMPX\"],\n[3, 7,\"JSR\"],\n[3, 7,\"LDX\"],\n[3, 7,\"STX\"],\n[2, 4,\"SUBB\"],\n[2, 4,\"CMPB\"],\n[2, 4,\"SBCB\"],\n[3, 8,\"ADDD\"],\n[2, 4,\"ANDB\"],\n[2, 4,\"BITB\"],\n[2, 4,\"LDB\"],\n[1, 0,\"???\"],\n[2, 4,\"EORB\"],\n[2, 4,\"ADCB\"],\n[2, 4,\"ORB\"],\n[2, 4,\"ADDB\"],\n[3, 8,\"LDD\"],\n[1, 0,\"???\"],\n[3, 8,\"LDU\"],\n[1, 0,\"???\"],\n[2, 1,\"SUBB\"],\n[2, 1,\"CMPB\"],\n[2, 1,\"SBCB\"],\n[2, 1,\"ADDD\"],\n[2, 1,\"ANDB\"],\n[2, 1,\"BITB\"],\n[2, 1,\"LDB\"],\n[2, 1,\"STB\"],\n[2, 1,\"EORB\"],\n[2, 1,\"ADCB\"],\n[2, 1,\"ORB \"],\n[2, 1,\"ADDB\"],\n[2, 1,\"LDD \"],\n[2, 1,\"STD \"],\n[2, 1,\"LDU \"],\n[2, 1,\"STU \"],\n[2, 6,\"SUBB\"],\n[2, 6,\"CMPB\"],\n[2, 6,\"SBCB\"],\n[2, 6,\"ADDD\"],\n[2, 6,\"ANDB\"],\n[2, 6,\"BITB\"],\n[2, 6,\"LDB\"],\n[2, 6,\"STB\"],\n[2, 6,\"EORB\"],\n[2, 6,\"ADCB\"],\n[2, 6,\"ORB\"],\n[2, 6,\"ADDB\"],\n[2, 6,\"LDD\"],\n[2, 6,\"STD\"],\n[2, 6,\"LDU\"],\n[2, 6,\"STU\"],\n[3, 7,\"SUBB\"],\n[3, 7,\"CMPB\"],\n[3, 7,\"SBCB\"],\n[3, 7,\"ADDD\"],\n[3, 7,\"ANDB\"],\n[3, 7,\"BITB\"],\n[3, 7,\"LDB\"],\n[3, 7,\"STB\"],\n[3, 7,\"EORB\"],\n[3, 7,\"ADCB\"],\n[3, 7,\"ORB\"],\n[3, 7,\"ADDB\"],\n[3, 7,\"LDD\"],\n[3, 7,\"STD\"],\n[3, 7,\"LDU\"],\n[3, 7,\"STU\"]\n];\n\nvar ds11 = {\n0x3F: [2,2,\"SWI3\"],\n0x83: [4,8,\"CMPU\"],\n0x8C: [4,8,\"CMPS\"],\n0x93: [3,1,\"CMPU\"],\n0x9C: [3,1,\"CMPS\"],\n0xA3: [3,6,\"CMPU\"],\n0xAC: [3,6,\"CMPS\"],\n0xB3: [4,7,\"CMPU\"],\n0xBC: [4,7,\"CMPS\"]\n};\n\nvar ds10 = {\n0x21:[5,3,\"LBRN\"],\n0x22:[5,3,\"LBHI\"],\n0x23:[5,3,\"LBLS\"],\n0x24:[5,3,\"LBCC\"],\n0x25:[5,3,\"LBCS\"],\n0x26:[5,3,\"LBNE\"],\n0x27:[5,3,\"LBEQ\"],\n0x28:[5,3,\"LBVC\"],\n0x29:[5,3,\"LBVS\"],\n0x2a:[5,3,\"LBPL\"],\n0x2b:[5,3,\"LBMI\"],\n0x2c:[5,3,\"LBGE\"],\n0x2d:[5,3,\"LBLT\"],\n0x2e:[5,3,\"LBGT\"],\n0x2f:[5,3,\"LBLE\"],\n0x3F:[2,2,\"SWI2\"],\n0x83:[4,8,\"CMPD\"],\n0x8C:[4,8,\"CMPY\"],\n0x8E:[4,8,\"LDY\"],\n0x93:[3,1,\"CMPD\"],\n0x9C:[3,1,\"CMPY\"],\n0x9E:[3,1,\"LDY\"],\n0x9F:[3,1,\"STY\"],\n0xA3:[3,6,\"CMPD\"],\n0xAC:[3,6,\"CMPY\"],\n0xAE:[3,6,\"LDY\"],\n0xAF:[3,6,\"STY\"],\n0xB3:[4,7,\"CMPD\"],\n0xBC:[4,7,\"CMPY\"],\n0xBE:[4,7,\"LDY\"],\n0xBF:[4,7,\"STY\"],\n0xCE:[4,8,\"LDS\"],\n0xDE:[3,1,\"LDS\"],\n0xDF:[3,1,\"STS\"],\n0xEE:[3,6,\"LDS\"],\n0xEF:[3,6,\"STS\"],\n0xFE:[4,7,\"LDS\"],\n0xFF:[4,7,\"STS\"]\n};\n/*\nILLEGAL 0\nDIRECT 1\nINHERENT 2\nBRANCH_REL_16 3\nIMMEDIAT_8 4\nBRANCH_REL_8 5\nINDEXED 6\nEXTENDED 7\nIMMEDIAT_16 8\n*/\n\nvar disasm = function(i,a,b,c,d,pc) {\n var toHexN = function(n,d) {\n var s = n.toString(16);\n while (s.length >5];\n if (!(pb & 0x80)) {\n //direct5\n var disp = pb & 0x1f;\n if (disp>15) disp = disp-32;\n mnemo+=disp+','+ixr;\n break;\n }\n var ind = pb & 0x10;\n var mod = pb & 0x0f;\n var ofs8 = (b>127)?(b-256):b;\n var ofs16 = ((b*256+c)>32767)?((b*256+c)-65536):(b*256+c);\n if (!ind) {\n switch (mod) {\n case 0: mnemo += \",\"+ixr+'+'; break;\n case 1: mnemo += \",\"+ixr+'++'; break;\n case 2: mnemo += \",-\"+ixr; break;\n case 3: mnemo += \",--\"+ixr; break;\n case 4: mnemo += \",\"+ixr; break;\n case 5: mnemo += \"B,\"+ixr; break;\n case 6: mnemo += \"A,\"+ixr; break;\n case 7: mnemo += \"???\"; break;\n case 8: mnemo += ofs8+\",\"+ixr; bytes++; break;\n case 9: mnemo += ofs16+\",\"+ixr; bytes+=2; break;\n case 10: mnemo += \"???\"; break;\n case 11: mnemo += \"D,\"+ixr; break;\n case 12: mnemo += ofs8+\",PC\"; bytes++; break;\n case 13: mnemo += ofs16+\",PC\"; bytes+=2; break;\n case 14: mnemo += \"???\"; break;\n case 15: mnemo += \"$\"+toHex4((b*256+c)); bytes+=2; break;\n }\n } else {\n switch (mod) {\n case 0: mnemo += \"???\"; break;\n case 1: mnemo += \"[,\"+ixr+'++]'; break;\n case 2: mnemo += \"???\"; break;\n case 3: mnemo += \"[,--\"+ixr+']'; break;\n case 4: mnemo += \"[,\"+ixr+']'; break;\n case 5: mnemo += \"[B,\"+ixr+']'; break;\n case 6: mnemo += \"[A,\"+ixr+']'; break;\n case 7: mnemo += \"???\"; break;\n case 8: mnemo += \"[\"+ofs8+\",\"+ixr+']'; bytes++; break;\n case 9: mnemo += \"[\"+ofs16+\",\"+ixr+']'; bytes+=2; break;\n case 10: mnemo += \"???\"; break;\n case 11: mnemo += \"[D,\"+ixr+']'; break;\n case 12: mnemo += \"[\"+ofs8+\",PC]\"; bytes++; break;\n case 13: mnemo += \"[\"+ofs16+\",PC]\"; bytes+=2; break;\n case 14: mnemo += \"???\"; break;\n case 15: mnemo += \"[$\"+toHex4((b*256+c))+']'; bytes+=2; break;\n }\n }\n\n break;\n case 7: //extended\n mnemo+=\"\\t$\"+toHex4(a*256+b); break;\n case 8: //imm16\n mnemo+=\"\\t#$\"+toHex4(a*256+b); break;\n\n case 10: //pshs, puls\n rx = ['PC','U','Y','X','DP','B','A','CC'];\n ro = [];\n for (j=0;j<8;j++) {\n if ((a & 1)!==0) {ro.push(rx[7-j]);}\n a>>=1;\n }\n mnemo += '\\t'+ro.join(',');\n break;\n case 11: //pshs, puls\n rx = ['PC','S','Y','X','DP','B','A','CC'];\n ro = [];\n for (j=0;j<8;j++) {\n if ((a & 1)!==0) {ro.push(rx[7-j]);}\n a>>=1;\n }\n mnemo += '\\t'+ro.join(',');\n break;\n case 20: //TFR etc\n rx = ['D','X','Y','U','S','PC','?','?','A','B','CC','DP','?','?','?','?'];\n mnemo += '\\t'+rx[a>>4]+','+rx[a&0x0f];\n break;\n }\n\n return {line:mnemo,nbytes:bytes};\n };\n\n\n//---------- Exports\n\nreturn {\n steps: function(Ts){\n //T=0;\n while (Ts>0){\n Ts-=step();\n }\n },\n runFrame: function(Tt){\n while (T>i);\n if (n===0) {f+=fx[i].toLowerCase();} else {f+=fx[i];}\n }\n return f;\n },\n disasm: disasm,\n isStable: function() { return true; }\n};\n\n};\n", "\nimport { CPU, Bus, ClockBased, SavesState, Interruptable } from \"../devices\";\nimport { EmuHalt } from \"../emu\";\nimport { hex } from \"../util\";\n\n// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\nexport var _MOS6502 = function() {\n var self = this;\n\n this.powerOn = function() {\n this.reset();\n };\n\n this.powerOff = function() {\n };\n\n this.clockPulse = function() {\n if (!RDY) return; // TODO Should be ignored in the last cycle of the instruction\n T++;\n instruction[T]();\n };\n\n this.connectBus = function(aBus) {\n bus = aBus;\n };\n\n this.setRDY = function(boo) {\n RDY = boo;\n };\n\n this.isRDY = function() {\n return RDY;\n }\n\n this.reset = function() {\n I = 1;\n T = -1;\n instruction = [ fetchOpcodeAndDecodeInstruction ]; // Bootstrap instruction\n PC = bus.read(RESET_VECTOR) | (bus.read(RESET_VECTOR + 1) << 8);\n this.setRDY(true);\n };\n\n // Interfaces\n var bus : Bus;\n var RDY : boolean = false;\n\n // Registers\n var PC : number = 0;\n var SP : number = 0;\n var A : number = 0;\n var X : number = 0;\n var Y : number = 0;\n\n // Status Bits\n var N : number = 0;\n var V : number = 0;\n var D : number = 0;\n var I : number = 0;\n var Z : number = 0;\n var C : number = 0;\n\n // Internal decoding registers\n var T : number = -1;\n var opcode : number = -1;\n var instruction : (() => void)[];\n var data : number = 0;\n var AD : number = 0;\n var BA : number = 0;\n var BALCrossed : boolean = false;\n var IA : number = 0;\n var branchOffset : number = 0;\n var branchOffsetCrossAdjust : number = 0;\n\n // Vectors\n const NMI_VECTOR = 0xfffa;\n const RESET_VECTOR = 0xfffc;\n const IRQ_VECTOR = 0xfffe;\n\n // Index registers names\n const rX = 0;\n const rY = 1;\n\n // Status bits names\n const bN = 7;\n const bV = 6;\n // const bE = 5;\t// Not used\n // const bB = 4;\t// Not used\n // const bD = 3; // Not used\n // const bI = 2; // Not used\n const bZ = 1;\n const bC = 0;\n\n // Auxiliary variables\n // TODO\n //noinspection JSUnusedGlobalSymbols\n this.debug = false;\n //noinspection JSUnusedGlobalSymbols\n this.trace = false;\n\n\n // Internal operations\n\n var fetchOpcodeAndDecodeInstruction = function() {\n opcode = bus.read(PC);\n instruction = instructions[opcode];\n T = 0;\n\n // if (self.trace) self.breakpoint(\"TRACE\");\n // console.log(\"PC: \" + PC + \", op: \" + opcode + \": \" + opcodes[opcode]);\n\n PC++;\n };\n\n var fetchNextOpcode = fetchOpcodeAndDecodeInstruction;\n\n var fetchOpcodeAndDiscard = function() {\n bus.read(PC);\n };\n\n var fetchBranchOffset = function() {\n branchOffset = bus.read(PC);\n PC++;\n };\n\n var fetchADL = function() {\n AD = bus.read(PC);\n PC++;\n };\n\n var fetchADH = function() {\n AD |= bus.read(PC) << 8;\n PC++;\n };\n\n var fetchADLFromBA = function() {\n AD = bus.read(BA);\n };\n\n var fetchADHFromBA = function() {\n AD |= bus.read(BA) << 8;\n };\n\n var fetchBAL = function() {\n BA = bus.read(PC);\n PC++;\n };\n\n var fetchBAH = function() {\n BA |= bus.read(PC) << 8;\n PC++;\n };\n\n var fetchBALFromIA = function() {\n BA = bus.read(IA);\n };\n\n var fetchBAHFromIA = function() {\n BA |= bus.read(IA) << 8;\n };\n\n var addXtoBAL = function() {\n var low = (BA & 255) + X;\n BALCrossed = low > 255;\n BA = (BA & 0xff00) | (low & 255);\n };\n\n var addYtoBAL = function() {\n var low = (BA & 255) + Y;\n BALCrossed = low > 255;\n BA = (BA & 0xff00) | (low & 255);\n };\n\n var add1toBAL = function() {\n var low = (BA & 255) + 1;\n BALCrossed = low > 255;\n BA = (BA & 0xff00) | (low & 255);\n };\n\n var add1toBAHifBALCrossed = function() {\n if (BALCrossed)\n BA = (BA + 0x0100) & 0xffff;\n };\n\n var fetchIAL = function() {\n IA = bus.read(PC);\n PC++;\n };\n\n var fetchIAH = function() {\n IA |= bus.read(PC) << 8;\n PC++;\n };\n\n var add1toIAL = function() {\n var low = (IA & 255) + 1;\n IA = (IA & 0xff00) | (low & 255);\n };\n\n var fetchDataFromImmediate = function() {\n data = bus.read(PC);\n PC++;\n };\n\n var fetchDataFromAD = function() {\n data = bus.read(AD);\n };\n\n var fetchDataFromBA = function() {\n data = bus.read(BA);\n };\n\n var writeDataToAD = function() {\n bus.write(AD, data);\n };\n\n var writeDataToBA = function() {\n bus.write(BA, data);\n };\n\n var addBranchOffsetToPCL = function() {\n var oldLow = (PC & 0x00ff);\n var newLow = (oldLow + branchOffset) & 255;\n // Negative offset?\n if (branchOffset > 127)\n branchOffsetCrossAdjust = (newLow > oldLow) ? -0x0100 : 0;\n else\n branchOffsetCrossAdjust = (newLow < oldLow) ? 0x0100 : 0;\n PC = (PC & 0xff00) | newLow;\n };\n\n var adjustPCHForBranchOffsetCross = function() {\n PC = (PC + branchOffsetCrossAdjust) & 0xffff;\n };\n\n var setZ = function(val) {\n Z = (val === 0) ? 1 : 0;\n };\n\n var setN = function(val) {\n N = (val & 0x080) ? 1 : 0;\n };\n\n var setV = function(boo) {\n V = boo ? 1 : 0;\n };\n\n var setC = function(boo) {\n C = boo ? 1 : 0;\n };\n\n var popFromStack = function() {\n SP = (SP + 1) & 255;\n return bus.read(0x0100 + SP);\n };\n\n var peekFromStack = function() {\n return bus.read(0x0100 + SP);\n };\n\n var pushToStack = function(val) {\n bus.write(0x0100 + SP, val);\n SP = (SP - 1) & 255;\n };\n\n var getStatusBits = function() {\n return N << 7 | V << 6 | 0x30 // Always push with E (bit 5) and B (bit 4) ON\n | D << 3 | I << 2 | Z << 1 | C;\n };\n\n var setStatusBits = function(val) {\n N = val >>> 7; V = val >>> 6 & 1; // E and B flags actually do not exist as real flags, so ignore\n D = val >>> 3 & 1; I = val >>> 2 & 1; Z = val >>> 1 & 1; C = val & 1;\n };\n\n var illegalOpcode = function(op) {\n if (self.debug) self.breakpoint(\"Illegal Opcode: \" + op);\n };\n\n var haltOpcode = function() {\n illegalOpcode(\"KIL/HLT/JAM\");\n // PC has already advanced past the opcode, so the halt is at PC-1\n const addr = (PC - 1) & 0xffff;\n throw new EmuHalt(`CPU executed halt instruction ($${hex(opcode,2)}) at $${hex(addr,4)}`);\n }\n\n\n // Addressing routines\n\n var implied = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var immediateRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var zeroPageRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL, // ADH will be zero\n fetchDataFromAD,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var absoluteRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n fetchDataFromAD,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var indirectXRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addXtoBAL();\n fetchADLFromBA();\n },\n function() {\n add1toBAL();\n fetchADHFromBA();\n },\n fetchDataFromAD,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var absoluteIndexedRead = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL,\n fetchBAH,\n function() {\n addIndex();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n if (BALCrossed) {\n fetchDataFromBA();\n } else {\n operation();\n fetchNextOpcode();\n }\n },\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n };\n\n var zeroPageIndexedRead = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addIndex();\n fetchDataFromBA();\n },\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n };\n\n var indirectYRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() {\n addYtoBAL();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n if(BALCrossed) {\n fetchDataFromBA();\n } else {\n operation();\n fetchNextOpcode();\n }\n },\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var zeroPageWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL, // ADH will be zero\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var absoluteWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var indirectXWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addXtoBAL();\n fetchADLFromBA();\n },\n function() {\n add1toBAL();\n fetchADHFromBA();\n },\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var absoluteIndexedWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL,\n fetchBAH,\n function() {\n addIndex();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var zeroPageIndexedWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addIndex();\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var indirectYWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() {\n addYtoBAL();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n\n\n var zeroPageReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL, // ADH will be zero\n fetchDataFromAD,\n writeDataToAD,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var absoluteReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n fetchDataFromAD,\n writeDataToAD,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var zeroPageIndexedReadModifyWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function () {\n addIndex();\n fetchDataFromBA();\n },\n writeDataToBA,\n function () {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var absoluteIndexedReadModifyWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL,\n fetchBAH,\n function () {\n addIndex();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n fetchDataFromBA,\n writeDataToBA,\n function () {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var indirectXReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addXtoBAL();\n fetchADLFromBA();\n },\n function() {\n add1toBAL();\n fetchADHFromBA();\n },\n fetchDataFromAD,\n writeDataToAD,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var indirectYReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() {\n addYtoBAL();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n fetchDataFromBA,\n writeDataToBA,\n function() {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n\n\n // Instructions ========================================================================================\n\n // Complete instruction set\n var opcodes = new Array(256);\n var instructions = new Array(256);\n\n opcodes[0x00] = \"BRK\"; instructions[0x00] = BRK();\n opcodes[0x01] = \"ORA\"; instructions[0x01] = ORA(indirectXRead);\n opcodes[0x02] = \"uKIL\"; instructions[0x02] = uKIL();\n opcodes[0x03] = \"uSLO\"; instructions[0x03] = uSLO(indirectXReadModifyWrite);\n opcodes[0x04] = \"uNOP\"; instructions[0x04] = uNOP(zeroPageRead);\n opcodes[0x05] = \"ORA\"; instructions[0x05] = ORA(zeroPageRead);\n opcodes[0x06] = \"ASL\"; instructions[0x06] = ASL(zeroPageReadModifyWrite);\n opcodes[0x07] = \"uSLO\"; instructions[0x07] = uSLO(zeroPageReadModifyWrite);\n opcodes[0x08] = \"PHP\"; instructions[0x08] = PHP();\n opcodes[0x09] = \"ORA\"; instructions[0x09] = ORA(immediateRead);\n opcodes[0x0a] = \"ASL\"; instructions[0x0a] = ASL_ACC();\n opcodes[0x0b] = \"uANC\"; instructions[0x0b] = uANC(immediateRead);\n opcodes[0x0c] = \"uNOP\"; instructions[0x0c] = uNOP(absoluteRead);\n opcodes[0x0d] = \"ORA\"; instructions[0x0d] = ORA(absoluteRead);\n opcodes[0x0e] = \"ASL\"; instructions[0x0e] = ASL(absoluteReadModifyWrite);\n opcodes[0x0f] = \"uSLO\"; instructions[0x0f] = uSLO(absoluteReadModifyWrite);\n opcodes[0x10] = \"BPL\"; instructions[0x10] = Bxx(bN, 0); // BPL\n opcodes[0x11] = \"ORA\"; instructions[0x11] = ORA(indirectYRead);\n opcodes[0x12] = \"uKIL\"; instructions[0x12] = uKIL();\n opcodes[0x13] = \"uSLO\"; instructions[0x13] = uSLO(indirectYReadModifyWrite);\n opcodes[0x14] = \"uNOP\"; instructions[0x14] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x15] = \"ORA\"; instructions[0x15] = ORA(zeroPageIndexedRead(rX));\n opcodes[0x16] = \"ASL\"; instructions[0x16] = ASL(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x17] = \"uSLO\"; instructions[0x17] = uSLO(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x18] = \"CLC\"; instructions[0x18] = CLC();\n opcodes[0x19] = \"ORA\"; instructions[0x19] = ORA(absoluteIndexedRead(rY));\n opcodes[0x1a] = \"uNOP\"; instructions[0x1a] = uNOP(implied);\n opcodes[0x1b] = \"uSLO\"; instructions[0x1b] = uSLO(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x1c] = \"uNOP\"; instructions[0x1c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x1d] = \"ORA\"; instructions[0x1d] = ORA(absoluteIndexedRead(rX));\n opcodes[0x1e] = \"ASL\"; instructions[0x1e] = ASL(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x1f] = \"uSLO\"; instructions[0x1f] = uSLO(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x20] = \"JSR\"; instructions[0x20] = JSR();\n opcodes[0x21] = \"AND\"; instructions[0x21] = AND(indirectXRead);\n opcodes[0x22] = \"uKIL\"; instructions[0x22] = uKIL();\n opcodes[0x23] = \"uRLA\"; instructions[0x23] = uRLA(indirectXReadModifyWrite);\n opcodes[0x24] = \"BIT\"; instructions[0x24] = BIT(zeroPageRead);\n opcodes[0x25] = \"AND\"; instructions[0x25] = AND(zeroPageRead);\n opcodes[0x26] = \"ROL\"; instructions[0x26] = ROL(zeroPageReadModifyWrite);\n opcodes[0x27] = \"uRLA\"; instructions[0x27] = uRLA(zeroPageReadModifyWrite);\n opcodes[0x28] = \"PLP\"; instructions[0x28] = PLP();\n opcodes[0x29] = \"AND\"; instructions[0x29] = AND(immediateRead);\n opcodes[0x2a] = \"ROL\"; instructions[0x2a] = ROL_ACC();\n opcodes[0x2b] = \"uANC\"; instructions[0x2b] = uANC(immediateRead);\n opcodes[0x2c] = \"BIT\"; instructions[0x2c] = BIT(absoluteRead);\n opcodes[0x2d] = \"AND\"; instructions[0x2d] = AND(absoluteRead);\n opcodes[0x2e] = \"ROL\"; instructions[0x2e] = ROL(absoluteReadModifyWrite);\n opcodes[0x2f] = \"uRLA\"; instructions[0x2f] = uRLA(absoluteReadModifyWrite);\n opcodes[0x30] = \"BMI\"; instructions[0x30] = Bxx(bN, 1); // BMI\n opcodes[0x31] = \"AND\"; instructions[0x31] = AND(indirectYRead);\n opcodes[0x32] = \"uKIL\"; instructions[0x32] = uKIL();\n opcodes[0x33] = \"uRLA\"; instructions[0x33] = uRLA(indirectYReadModifyWrite);\n opcodes[0x34] = \"uNOP\"; instructions[0x34] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x35] = \"AND\"; instructions[0x35] = AND(zeroPageIndexedRead(rX));\n opcodes[0x36] = \"ROL\"; instructions[0x36] = ROL(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x37] = \"uRLA\"; instructions[0x37] = uRLA(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x38] = \"SEC\"; instructions[0x38] = SEC();\n opcodes[0x39] = \"AND\"; instructions[0x39] = AND(absoluteIndexedRead(rY));\n opcodes[0x3a] = \"uNOP\"; instructions[0x3a] = uNOP(implied);\n opcodes[0x3b] = \"uRLA\"; instructions[0x3b] = uRLA(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x3c] = \"uNOP\"; instructions[0x3c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x3d] = \"AND\"; instructions[0x3d] = AND(absoluteIndexedRead(rX));\n opcodes[0x3e] = \"ROL\"; instructions[0x3e] = ROL(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x3f] = \"uRLA\"; instructions[0x3f] = uRLA(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x40] = \"RTI\"; instructions[0x40] = RTI();\n opcodes[0x41] = \"EOR\"; instructions[0x41] = EOR(indirectXRead);\n opcodes[0x42] = \"uKIL\"; instructions[0x42] = uKIL();\n opcodes[0x43] = \"uSRE\"; instructions[0x43] = uSRE(indirectXReadModifyWrite);\n opcodes[0x44] = \"uNOP\"; instructions[0x44] = uNOP(zeroPageRead);\n opcodes[0x45] = \"EOR\"; instructions[0x45] = EOR(zeroPageRead);\n opcodes[0x46] = \"LSR\"; instructions[0x46] = LSR(zeroPageReadModifyWrite);\n opcodes[0x47] = \"uSRE\"; instructions[0x47] = uSRE(zeroPageReadModifyWrite);\n opcodes[0x48] = \"PHA\"; instructions[0x48] = PHA();\n opcodes[0x49] = \"EOR\"; instructions[0x49] = EOR(immediateRead);\n opcodes[0x4a] = \"LSR\"; instructions[0x4a] = LSR_ACC();\n opcodes[0x4b] = \"uASR\"; instructions[0x4b] = uASR(immediateRead);\n opcodes[0x4c] = \"JMP\"; instructions[0x4c] = JMP_ABS();\n opcodes[0x4d] = \"EOR\"; instructions[0x4d] = EOR(absoluteRead);\n opcodes[0x4e] = \"LSR\"; instructions[0x4e] = LSR(absoluteReadModifyWrite);\n opcodes[0x4f] = \"uSRE\"; instructions[0x4f] = uSRE(absoluteReadModifyWrite);\n opcodes[0x50] = \"BVC\"; instructions[0x50] = Bxx(bV, 0); // BVC\n opcodes[0x51] = \"EOR\"; instructions[0x51] = EOR(indirectYRead);\n opcodes[0x52] = \"uKIL\"; instructions[0x52] = uKIL();\n opcodes[0x53] = \"uSRE\"; instructions[0x53] = uSRE(indirectYReadModifyWrite);\n opcodes[0x54] = \"uNOP\"; instructions[0x54] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x55] = \"EOR\"; instructions[0x55] = EOR(zeroPageIndexedRead(rX));\n opcodes[0x56] = \"LSR\"; instructions[0x56] = LSR(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x57] = \"uSRE\"; instructions[0x57] = uSRE(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x58] = \"CLI\"; instructions[0x58] = CLI();\n opcodes[0x59] = \"EOR\"; instructions[0x59] = EOR(absoluteIndexedRead(rY));\n opcodes[0x5a] = \"uNOP\"; instructions[0x5a] = uNOP(implied);\n opcodes[0x5b] = \"uSRE\"; instructions[0x5b] = uSRE(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x5c] = \"uNOP\"; instructions[0x5c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x5d] = \"EOR\"; instructions[0x5d] = EOR(absoluteIndexedRead(rX));\n opcodes[0x5e] = \"LSR\"; instructions[0x5e] = LSR(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x5f] = \"uSRE\"; instructions[0x5f] = uSRE(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x60] = \"RTS\"; instructions[0x60] = RTS();\n opcodes[0x61] = \"ADC\"; instructions[0x61] = ADC(indirectXRead);\n opcodes[0x62] = \"uKIL\"; instructions[0x62] = uKIL();\n opcodes[0x63] = \"uRRA\"; instructions[0x63] = uRRA(indirectXReadModifyWrite);\n opcodes[0x64] = \"uNOP\"; instructions[0x64] = uNOP(zeroPageRead);\n opcodes[0x65] = \"ADC\"; instructions[0x65] = ADC(zeroPageRead);\n opcodes[0x66] = \"ROR\"; instructions[0x66] = ROR(zeroPageReadModifyWrite);\n opcodes[0x67] = \"uRRA\"; instructions[0x67] = uRRA(zeroPageReadModifyWrite);\n opcodes[0x68] = \"PLA\"; instructions[0x68] = PLA();\n opcodes[0x69] = \"ADC\"; instructions[0x69] = ADC(immediateRead);\n opcodes[0x6a] = \"ROR\"; instructions[0x6a] = ROR_ACC();\n opcodes[0x6b] = \"uARR\"; instructions[0x6b] = uARR(immediateRead);\n opcodes[0x6c] = \"JMP\"; instructions[0x6c] = JMP_IND();\n opcodes[0x6d] = \"ADC\"; instructions[0x6d] = ADC(absoluteRead);\n opcodes[0x6e] = \"ROR\"; instructions[0x6e] = ROR(absoluteReadModifyWrite);\n opcodes[0x6f] = \"uRRA\"; instructions[0x6f] = uRRA(absoluteReadModifyWrite);\n opcodes[0x70] = \"BVS\"; instructions[0x70] = Bxx(bV, 1); // BVS\n opcodes[0x71] = \"ADC\"; instructions[0x71] = ADC(indirectYRead);\n opcodes[0x72] = \"uKIL\"; instructions[0x72] = uKIL();\n opcodes[0x73] = \"uRRA\"; instructions[0x73] = uRRA(indirectYReadModifyWrite);\n opcodes[0x74] = \"uNOP\"; instructions[0x74] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x75] = \"ADC\"; instructions[0x75] = ADC(zeroPageIndexedRead(rX));\n opcodes[0x76] = \"ROR\"; instructions[0x76] = ROR(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x77] = \"uRRA\"; instructions[0x77] = uRRA(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x78] = \"SEI\"; instructions[0x78] = SEI();\n opcodes[0x79] = \"ADC\"; instructions[0x79] = ADC(absoluteIndexedRead(rY));\n opcodes[0x7a] = \"uNOP\"; instructions[0x7a] = uNOP(implied);\n opcodes[0x7b] = \"uRRA\"; instructions[0x7b] = uRRA(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x7c] = \"uNOP\"; instructions[0x7c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x7d] = \"ADC\"; instructions[0x7d] = ADC(absoluteIndexedRead(rX));\n opcodes[0x7e] = \"ROR\"; instructions[0x7e] = ROR(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x7f] = \"uRRA\"; instructions[0x7f] = uRRA(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x80] = \"uNOP\"; instructions[0x80] = uNOP(immediateRead);\n opcodes[0x81] = \"STA\"; instructions[0x81] = STA(indirectXWrite);\n opcodes[0x82] = \"uNOP\"; instructions[0x82] = uNOP(immediateRead);\n opcodes[0x83] = \"uSAX\"; instructions[0x83] = uSAX(indirectXWrite);\n opcodes[0x84] = \"STY\"; instructions[0x84] = STY(zeroPageWrite);\n opcodes[0x85] = \"STA\"; instructions[0x85] = STA(zeroPageWrite);\n opcodes[0x86] = \"STX\"; instructions[0x86] = STX(zeroPageWrite);\n opcodes[0x87] = \"uSAX\"; instructions[0x87] = uSAX(zeroPageWrite);\n opcodes[0x88] = \"DEY\"; instructions[0x88] = DEY();\n opcodes[0x89] = \"uNOP\"; instructions[0x89] = uNOP(immediateRead);\n opcodes[0x8a] = \"TXA\"; instructions[0x8a] = TXA();\n opcodes[0x8b] = \"uANE\"; instructions[0x8b] = uANE(immediateRead);\n opcodes[0x8c] = \"STY\"; instructions[0x8c] = STY(absoluteWrite);\n opcodes[0x8d] = \"STA\"; instructions[0x8d] = STA(absoluteWrite);\n opcodes[0x8e] = \"STX\"; instructions[0x8e] = STX(absoluteWrite);\n opcodes[0x8f] = \"uSAX\"; instructions[0x8f] = uSAX(absoluteWrite);\n opcodes[0x90] = \"BCC\"; instructions[0x90] = Bxx(bC, 0); // BCC\n opcodes[0x91] = \"STA\"; instructions[0x91] = STA(indirectYWrite);\n opcodes[0x92] = \"uKIL\"; instructions[0x92] = uKIL();\n opcodes[0x93] = \"uSHA\"; instructions[0x93] = uSHA(indirectYWrite);\n opcodes[0x94] = \"STY\"; instructions[0x94] = STY(zeroPageIndexedWrite(rX));\n opcodes[0x95] = \"STA\"; instructions[0x95] = STA(zeroPageIndexedWrite(rX));\n opcodes[0x96] = \"STX\"; instructions[0x96] = STX(zeroPageIndexedWrite(rY));\n opcodes[0x97] = \"uSAX\"; instructions[0x97] = uSAX(zeroPageIndexedWrite(rY));\n opcodes[0x98] = \"TYA\"; instructions[0x98] = TYA();\n opcodes[0x99] = \"STA\"; instructions[0x99] = STA(absoluteIndexedWrite(rY));\n opcodes[0x9a] = \"TXS\"; instructions[0x9a] = TXS();\n opcodes[0x9b] = \"uSHS\"; instructions[0x9b] = uSHS(absoluteIndexedWrite(rY));\n opcodes[0x9c] = \"uSHY\"; instructions[0x9c] = uSHY(absoluteIndexedWrite(rX));\n opcodes[0x9d] = \"STA\"; instructions[0x9d] = STA(absoluteIndexedWrite(rX));\n opcodes[0x9e] = \"uSHX\"; instructions[0x9e] = uSHX(absoluteIndexedWrite(rY));\n opcodes[0x9f] = \"uSHA\"; instructions[0x9f] = uSHA(absoluteIndexedWrite(rY));\n opcodes[0xa0] = \"LDY\"; instructions[0xa0] = LDY(immediateRead);\n opcodes[0xa1] = \"LDA\"; instructions[0xa1] = LDA(indirectXRead);\n opcodes[0xa2] = \"LDX\"; instructions[0xa2] = LDX(immediateRead);\n opcodes[0xa3] = \"uLAX\"; instructions[0xa3] = uLAX(indirectXRead);\n opcodes[0xa4] = \"LDY\"; instructions[0xa4] = LDY(zeroPageRead);\n opcodes[0xa5] = \"LDA\"; instructions[0xa5] = LDA(zeroPageRead);\n opcodes[0xa6] = \"LDX\"; instructions[0xa6] = LDX(zeroPageRead);\n opcodes[0xa7] = \"uLAX\"; instructions[0xa7] = uLAX(zeroPageRead);\n opcodes[0xa8] = \"TAY\"; instructions[0xa8] = TAY();\n opcodes[0xa9] = \"LDA\"; instructions[0xa9] = LDA(immediateRead);\n opcodes[0xaa] = \"TAX\"; instructions[0xaa] = TAX();\n opcodes[0xab] = \"uLXA\"; instructions[0xab] = uLXA(immediateRead);\n opcodes[0xac] = \"LDY\"; instructions[0xac] = LDY(absoluteRead);\n opcodes[0xad] = \"LDA\"; instructions[0xad] = LDA(absoluteRead);\n opcodes[0xae] = \"LDX\"; instructions[0xae] = LDX(absoluteRead);\n opcodes[0xaf] = \"uLAX\"; instructions[0xaf] = uLAX(absoluteRead);\n opcodes[0xb0] = \"BCS\"; instructions[0xb0] = Bxx(bC, 1); // BCS\n opcodes[0xb1] = \"LDA\"; instructions[0xb1] = LDA(indirectYRead);\n opcodes[0xb2] = \"uKIL\"; instructions[0xb2] = uKIL();\n opcodes[0xb3] = \"uLAX\"; instructions[0xb3] = uLAX(indirectYRead);\n opcodes[0xb4] = \"LDY\"; instructions[0xb4] = LDY(zeroPageIndexedRead(rX));\n opcodes[0xb5] = \"LDA\"; instructions[0xb5] = LDA(zeroPageIndexedRead(rX));\n opcodes[0xb6] = \"LDX\"; instructions[0xb6] = LDX(zeroPageIndexedRead(rY));\n opcodes[0xb7] = \"uLAX\"; instructions[0xb7] = uLAX(zeroPageIndexedRead(rY));\n opcodes[0xb8] = \"CLV\"; instructions[0xb8] = CLV();\n opcodes[0xb9] = \"LDA\"; instructions[0xb9] = LDA(absoluteIndexedRead(rY));\n opcodes[0xba] = \"TSX\"; instructions[0xba] = TSX();\n opcodes[0xbb] = \"uLAS\"; instructions[0xbb] = uLAS(absoluteIndexedRead(rY));\n opcodes[0xbc] = \"LDY\"; instructions[0xbc] = LDY(absoluteIndexedRead(rX));\n opcodes[0xbd] = \"LDA\"; instructions[0xbd] = LDA(absoluteIndexedRead(rX));\n opcodes[0xbe] = \"LDX\"; instructions[0xbe] = LDX(absoluteIndexedRead(rY));\n opcodes[0xbf] = \"uLAX\"; instructions[0xbf] = uLAX(absoluteIndexedRead(rY));\n opcodes[0xc0] = \"CPY\"; instructions[0xc0] = CPY(immediateRead);\n opcodes[0xc1] = \"CMP\"; instructions[0xc1] = CMP(indirectXRead);\n opcodes[0xc2] = \"uNOP\"; instructions[0xc2] = uNOP(immediateRead);\n opcodes[0xc3] = \"uDCP\"; instructions[0xc3] = uDCP(indirectXReadModifyWrite);\n opcodes[0xc4] = \"CPY\"; instructions[0xc4] = CPY(zeroPageRead);\n opcodes[0xc5] = \"CMP\"; instructions[0xc5] = CMP(zeroPageRead);\n opcodes[0xc6] = \"DEC\"; instructions[0xc6] = DEC(zeroPageReadModifyWrite);\n opcodes[0xc7] = \"uDCP\"; instructions[0xc7] = uDCP(zeroPageReadModifyWrite);\n opcodes[0xc8] = \"INY\"; instructions[0xc8] = INY();\n opcodes[0xc9] = \"CMP\"; instructions[0xc9] = CMP(immediateRead);\n opcodes[0xca] = \"DEX\"; instructions[0xca] = DEX();\n opcodes[0xcb] = \"uSBX\"; instructions[0xcb] = uSBX(immediateRead);\n opcodes[0xcc] = \"CPY\"; instructions[0xcc] = CPY(absoluteRead);\n opcodes[0xcd] = \"CMP\"; instructions[0xcd] = CMP(absoluteRead);\n opcodes[0xce] = \"DEC\"; instructions[0xce] = DEC(absoluteReadModifyWrite);\n opcodes[0xcf] = \"uDCP\"; instructions[0xcf] = uDCP(absoluteReadModifyWrite);\n opcodes[0xd0] = \"BNE\"; instructions[0xd0] = Bxx(bZ, 0); // BNE\n opcodes[0xd1] = \"CMP\"; instructions[0xd1] = CMP(indirectYRead);\n opcodes[0xd2] = \"uKIL\"; instructions[0xd2] = uKIL();\n opcodes[0xd3] = \"uDCP\"; instructions[0xd3] = uDCP(indirectYReadModifyWrite);\n opcodes[0xd4] = \"uNOP\"; instructions[0xd4] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0xd5] = \"CMP\"; instructions[0xd5] = CMP(zeroPageIndexedRead(rX));\n opcodes[0xd6] = \"DEC\"; instructions[0xd6] = DEC(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xd7] = \"uDCP\"; instructions[0xd7] = uDCP(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xd8] = \"CLD\"; instructions[0xd8] = CLD();\n opcodes[0xd9] = \"CMP\"; instructions[0xd9] = CMP(absoluteIndexedRead(rY));\n opcodes[0xda] = \"uNOP\"; instructions[0xda] = uNOP(implied);\n opcodes[0xdb] = \"uDCP\"; instructions[0xdb] = uDCP(absoluteIndexedReadModifyWrite(rY));\n opcodes[0xdc] = \"uNOP\"; instructions[0xdc] = uNOP(absoluteIndexedRead(rX));\n opcodes[0xdd] = \"CMP\"; instructions[0xdd] = CMP(absoluteIndexedRead(rX));\n opcodes[0xde] = \"DEC\"; instructions[0xde] = DEC(absoluteIndexedReadModifyWrite(rX));\n opcodes[0xdf] = \"uDCP\"; instructions[0xdf] = uDCP(absoluteIndexedReadModifyWrite(rX));\n opcodes[0xe0] = \"CPX\"; instructions[0xe0] = CPX(immediateRead);\n opcodes[0xe1] = \"SBC\"; instructions[0xe1] = SBC(indirectXRead);\n opcodes[0xe2] = \"uNOP\"; instructions[0xe2] = uNOP(immediateRead);\n opcodes[0xe3] = \"uISB\"; instructions[0xe3] = uISB(indirectXReadModifyWrite);\n opcodes[0xe4] = \"CPX\"; instructions[0xe4] = CPX(zeroPageRead);\n opcodes[0xe5] = \"SBC\"; instructions[0xe5] = SBC(zeroPageRead);\n opcodes[0xe6] = \"INC\"; instructions[0xe6] = INC(zeroPageReadModifyWrite);\n opcodes[0xe7] = \"uISB\"; instructions[0xe7] = uISB(zeroPageReadModifyWrite);\n opcodes[0xe8] = \"INX\"; instructions[0xe8] = INX();\n opcodes[0xe9] = \"SBC\"; instructions[0xe9] = SBC(immediateRead);\n opcodes[0xea] = \"NOP\"; instructions[0xea] = NOP();\n opcodes[0xeb] = \"SBC\"; instructions[0xeb] = SBC(immediateRead);\n opcodes[0xec] = \"CPX\"; instructions[0xec] = CPX(absoluteRead);\n opcodes[0xed] = \"SBC\"; instructions[0xed] = SBC(absoluteRead);\n opcodes[0xee] = \"INC\"; instructions[0xee] = INC(absoluteReadModifyWrite);\n opcodes[0xef] = \"uISB\"; instructions[0xef] = uISB(absoluteReadModifyWrite);\n opcodes[0xf0] = \"BEQ\"; instructions[0xf0] = Bxx(bZ, 1); // BEQ\n opcodes[0xf1] = \"SBC\"; instructions[0xf1] = SBC(indirectYRead);\n opcodes[0xf2] = \"uKIL\"; instructions[0xf2] = uKIL();\n opcodes[0xf3] = \"uISB\"; instructions[0xf3] = uISB(indirectYReadModifyWrite);\n opcodes[0xf4] = \"uNOP\"; instructions[0xf4] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0xf5] = \"SBC\"; instructions[0xf5] = SBC(zeroPageIndexedRead(rX));\n opcodes[0xf6] = \"INC\"; instructions[0xf6] = INC(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xf7] = \"uISB\"; instructions[0xf7] = uISB(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xf8] = \"SED\"; instructions[0xf8] = SED();\n opcodes[0xf9] = \"SBC\"; instructions[0xf9] = SBC(absoluteIndexedRead(rY));\n opcodes[0xfa] = \"uNOP\"; instructions[0xfa] = uNOP(implied);\n opcodes[0xfb] = \"uISB\"; instructions[0xfb] = uISB(absoluteIndexedReadModifyWrite(rY));\n opcodes[0xfc] = \"uNOP\"; instructions[0xfc] = uNOP(absoluteIndexedRead(rX));\n opcodes[0xfd] = \"SBC\"; instructions[0xfd] = SBC(absoluteIndexedRead(rX));\n opcodes[0xfe] = \"INC\"; instructions[0xfe] = INC(absoluteIndexedReadModifyWrite(rX));\n opcodes[0xff] = \"uISB\"; instructions[0xff] = uISB(absoluteIndexedReadModifyWrite(rX));\n\n\n // Single Byte instructions\n\n function ASL_ACC() {\n return implied(function() {\n setC(A > 127);\n A = (A << 1) & 255;\n setZ(A);\n setN(A);\n });\n }\n\n function CLC() {\n return implied(function() {\n C = 0;\n });\n }\n\n function CLD() {\n return implied(function() {\n D = 0;\n });\n }\n\n function CLI() {\n return implied(function() {\n I = 0;\n });\n }\n\n function CLV() {\n return implied(function() {\n V = 0;\n });\n }\n\n function DEX() {\n return implied(function() {\n X = (X - 1) & 255;\n setZ(X);\n setN(X);\n });\n }\n\n function DEY() {\n return implied(function() {\n Y = (Y - 1) & 255;\n setZ(Y);\n setN(Y);\n });\n }\n\n function INX() {\n return implied(function() {\n X = (X + 1) & 255;\n setZ(X);\n setN(X);\n });\n }\n\n function INY() {\n return implied(function() {\n Y = (Y + 1) & 255;\n setZ(Y);\n setN(Y);\n });\n }\n\n function LSR_ACC() {\n return implied(function() {\n C = A & 0x01;\n A >>>= 1;\n setZ(A);\n N = 0;\n });\n }\n\n function NOP() {\n return implied(function() {\n // nothing\n });\n }\n\n function ROL_ACC() {\n return implied(function() {\n var newC = A > 127;\n A = ((A << 1) | C) & 255;\n setC(newC);\n setZ(A);\n setN(A);\n });\n }\n\n function ROR_ACC() {\n return implied(function() {\n var newC = A & 0x01;\n A = (A >>> 1) | (C << 7);\n setC(newC);\n setZ(A);\n setN(A);\n });\n }\n\n function SEC() {\n return implied(function() {\n C = 1;\n });\n }\n\n function SED() {\n return implied(function() {\n D = 1;\n });\n }\n\n function SEI() {\n return implied(function() {\n I = 1;\n });\n }\n\n function TAX() {\n return implied(function() {\n X = A;\n setZ(X);\n setN(X);\n });\n }\n\n function TAY() {\n return implied(function() {\n Y = A;\n setZ(Y);\n setN(Y);\n });\n }\n\n function TSX() {\n return implied(function() {\n X = SP;\n setZ(X);\n setN(X);\n });\n }\n\n function TXA() {\n return implied(function() {\n A = X;\n setZ(A);\n setN(A);\n });\n }\n\n function TXS() {\n return implied(function() {\n SP = X;\n });\n }\n\n function TYA() {\n return implied(function() {\n A = Y;\n setZ(A);\n setN(A);\n });\n }\n\n function uKIL() {\n return [\n fetchOpcodeAndDecodeInstruction,\n function() {\n haltOpcode();\n },\n function() {\n T--; // Causes the processor to be stuck in this instruction forever\n }\n ];\n }\n\n function uNOP(addressing) {\n return addressing(function() {\n illegalOpcode(\"NOP/DOP\");\n // nothing\n });\n }\n\n\n // Internal Execution on Memory Data\n\n function ADC(addressing) {\n return addressing(function() {\n if (D) {\n var operand = data;\n var AL = (A & 15) + (operand & 15) + C;\n if (AL > 9) { AL += 6; }\n var AH = ((A >> 4) + (operand >> 4) + ((AL > 15)?1:0)) << 4;\n setZ((A + operand + C) & 255);\n setN(AH);\n setV(((A ^AH) & ~(A ^ operand)) & 128);\n if (AH > 0x9f) { AH += 0x60; }\n setC(AH > 255);\n A = (AH | (AL & 15)) & 255;\n } else {\n var add = A + data + C;\n setC(add > 255);\n setV(((A ^ add) & (data ^ add)) & 0x80);\n A = add & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function AND(addressing) {\n return addressing(function() {\n A &= data;\n setZ(A);\n setN(A);\n });\n }\n\n function BIT(addressing) {\n return addressing(function() {\n var par = data;\n setZ(A & par);\n setV(par & 0x40);\n setN(par);\n });\n }\n\n function CMP(addressing) {\n return addressing(function() {\n var val = (A - data) & 255;\n setC(A >= data);\n setZ(val);\n setN(val);\n });\n }\n\n function CPX(addressing) {\n return addressing(function() {\n var val = (X - data) & 255;\n setC(X >= data);\n setZ(val);\n setN(val);\n });\n }\n\n function CPY(addressing) {\n return addressing(function() {\n var val = (Y - data) & 255;\n setC(Y >= data);\n setZ(val);\n setN(val);\n });\n }\n\n function EOR(addressing) {\n return addressing(function() {\n A ^= data;\n setZ(A);\n setN(A);\n });\n }\n\n function LDA(addressing) {\n return addressing(function() {\n A = data;\n setZ(A);\n setN(A);\n });\n }\n\n function LDX(addressing) {\n return addressing(function() {\n X = data;\n setZ(X);\n setN(X);\n });\n }\n\n function LDY(addressing) {\n return addressing(function() {\n Y = data;\n setZ(Y);\n setN(Y);\n });\n }\n\n function ORA(addressing) {\n return addressing(function() {\n A |= data;\n setZ(A);\n setN(A);\n });\n }\n\n function SBC(addressing) {\n return addressing(function() {\n if (D) {\n var operand = data;\n var AL = (A & 15) - (operand & 15) - (1-C);\n var AH = (A >> 4) - (operand >> 4) - ((AL < 0)?1:0);\n if (AL < 0) { AL -= 6; }\n if (AH < 0) { AH -= 6; }\n var sub = A - operand - (1-C);\n setC(~sub & 256);\n setV(((A ^ operand) & (A ^ sub)) & 128);\n setZ(sub & 255);\n setN(sub);\n A = ((AH << 4) | (AL & 15)) & 255;\n } else {\n operand = (~data) & 255;\n sub = A + operand + C;\n setC(sub > 255);\n setV(((A ^ sub) & (operand ^ sub) & 0x80));\n A = sub & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function uANC(addressing) {\n return addressing(function() {\n illegalOpcode(\"ANC\");\n A &= data;\n setZ(A);\n N = C = (A & 0x080) ? 1 : 0;\n });\n }\n\n function uANE(addressing) {\n return addressing(function() {\n illegalOpcode(\"ANE\");\n // Exact operation unknown. Do nothing\n });\n }\n\n function uARR(addressing) {\n // Some sources say flags are affected per ROR, others say its more complex. The complex one is chosen\n return addressing(function() {\n illegalOpcode(\"ARR\");\n var val = A & data;\n var oldC = C ? 0x80 : 0;\n val = (val >>> 1) | oldC;\n A = val;\n setZ(val);\n setN(val);\n var comp = A & 0x60;\n if (comp == 0x60) \t\t{ C = 1; V = 0; }\n else if (comp == 0x00) \t{ C = 0; V = 0; }\n else if (comp == 0x20) \t{ C = 0; V = 1; }\n else if (comp == 0x40) \t{ C = 1; V = 1; }\n });\n }\n\n function uASR(addressing) {\n return addressing(function() {\n illegalOpcode(\"ASR\");\n var val = A & data;\n C = (val & 0x01);\t\t// bit 0\n val = val >>> 1;\n A = val;\n setZ(val);\n N = 0;\n });\n }\n\n function uLAS(addressing) {\n return addressing(function() {\n illegalOpcode(\"LAS\");\n var val = SP & data;\n A = val;\n X = val;\n SP = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uLAX(addressing) {\n return addressing(function() {\n illegalOpcode(\"LAX\");\n var val = data;\n A = val;\n X = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uLXA(addressing) {\n return addressing(function() {\n // Some sources say its an OR with $EE then AND with IMM, others exclude the OR,\n // others exclude both the OR and the AND. Excluding just the OR...\n illegalOpcode(\"LXA\");\n var val = A /* | 0xEE) */ & data;\n A = val;\n X = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uSBX(addressing) {\n return addressing(function() {\n illegalOpcode(\"SBX\");\n var par = A & X;\n var val = data;\n var newX = (par - val) & 255;\n X = newX;\n setC(par >= val);\n setZ(newX);\n setN(newX);\n });\n }\n\n\n // Store operations\n\n function STA(addressing) {\n return addressing(function() {\n data = A;\n });\n }\n\n function STX(addressing) {\n return addressing(function() {\n data = X;\n });\n }\n\n function STY(addressing) {\n return addressing(function() {\n data = Y;\n });\n }\n\n function uSAX(addressing) {\n return addressing(function() {\n // Some sources say it would affect N and Z flags, some say it wouldn't. Chose not to affect\n illegalOpcode(\"SAX\");\n data = A & X;\n });\n }\n\n function uSHA(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHA\");\n data = A & X & ((BA >>> 8) + 1) & 255; // A & X & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n function uSHS(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHS\");\n var val = A & X;\n SP = val;\n data = val & ((BA >>> 8) + 1) & 255; // A & X & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n function uSHX(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHX\");\n data = X & ((BA >>> 8) + 1) & 255; // X & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n function uSHY(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHY\");\n data = Y & ((BA >>> 8) + 1) & 255; // Y & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n\n // Read-Modify-Write operations\n\n function ASL(addressing) {\n return addressing(function() {\n setC(data > 127);\n var par = (data << 1) & 255;\n data = par;\n setZ(par);\n setN(par);\n });\n }\n\n function DEC(addressing) {\n return addressing(function() {\n var par = (data - 1) & 255;\n data = par;\n setZ(par);\n setN(par);\n });\n }\n\n function INC(addressing) {\n return addressing(function() {\n var par = (data + 1) & 255;\n data = par;\n setZ(par);\n setN(par);\n });\n }\n\n function LSR(addressing) {\n return addressing(function() {\n C = data & 0x01;\n data >>>= 1;\n setZ(data);\n N = 0;\n });\n }\n\n function ROL(addressing) {\n return addressing(function() {\n var newC = data > 127;\n var par = ((data << 1) | C) & 255;\n data = par;\n setC(newC);\n setZ(par);\n setN(par);\n });\n }\n\n function ROR(addressing) {\n return addressing(function() {\n var newC = data & 0x01;\n var par = (data >>> 1) | (C << 7);\n data = par;\n setC(newC);\n setZ(par);\n setN(par);\n });\n }\n\n function uDCP(addressing) {\n return addressing(function() {\n illegalOpcode(\"DCP\");\n var par = (data - 1) & 255;\n data = par;\n par = A - par;\n setC(par >= 0);\n setZ(par);\n setN(par);\n });\n }\n\n function uISB(addressing) {\n return addressing(function() {\n illegalOpcode(\"ISB\");\n data = (data + 1) & 255; // ISB is the same as SBC but incs the operand first\n if (D) {\n var operand = data;\n var AL = (A & 15) - (operand & 15) - (1-C);\n var AH = (A >> 4) - (operand >> 4) - ((AL < 0)?1:0);\n if (AL < 0) { AL -= 6; }\n if (AH < 0) { AH -= 6; }\n var sub = A - operand - (1-C);\n setC(~sub & 256);\n setV(((A ^ operand) & (A ^ sub)) & 128);\n setZ(sub & 255);\n setN(sub);\n A = ((AH << 4) | (AL & 15)) & 255;\n } else {\n operand = (~data) & 255;\n sub = A + operand + C;\n setC(sub > 255);\n setV(((A ^ sub) & (operand ^ sub) & 0x80));\n A = sub & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function uRLA(addressing) {\n return addressing(function() {\n illegalOpcode(\"RLA\");\n var val = data;\n var oldC = C;\n setC(val & 0x80);\t\t// bit 7 was set\n val = ((val << 1) | oldC) & 255;\n data = val;\n A &= val;\n setZ(val); // TODO Verify. May be A instead of val in the flags setting\n setN(val);\n });\n }\n\n function uRRA(addressing) {\n return addressing(function() {\n illegalOpcode(\"RRA\");\n var val = data;\n var oldC = C ? 0x80 : 0;\n setC(val & 0x01);\t\t// bit 0 was set\n val = (val >>> 1) | oldC;\n data = val;\n // RRA is the same as ADC from here\n if (D) {\n var operand = data;\n var AL = (A & 15) + (operand & 15) + C;\n if (AL > 9) { AL += 6; }\n var AH = ((A >> 4) + (operand >> 4) + ((AL > 15)?1:0)) << 4;\n setZ((A + operand + C) & 255);\n setN(AH);\n setV(((A ^AH) & ~(A ^ operand)) & 128);\n if (AH > 0x9f) { AH += 0x60; }\n setC(AH > 255);\n A = (AH | (AL & 15)) & 255;\n } else {\n var add = A + data + C;\n setC(add > 255);\n setV(((A ^ add) & (data ^ add)) & 0x80);\n A = add & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function uSLO(addressing) {\n return addressing(function() {\n illegalOpcode(\"SLO\");\n var val = data;\n setC(val & 0x80);\t\t// bit 7 was set\n val = (val << 1) & 255;\n data = val;\n val = A | val;\n A = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uSRE(addressing) {\n return addressing(function() {\n illegalOpcode(\"SRE\");\n var val = data;\n setC(val & 0x01);\t\t// bit 0 was set\n val = val >>> 1;\n data = val;\n val = (A ^ val) & 255;\n A = val;\n setZ(val);\n setN(val);\n });\n }\n\n\n // Miscellaneous operations\n\n function PHA() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n function() { pushToStack(A); },\n fetchNextOpcode\n ];\n }\n\n function PHP() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n function() { pushToStack(getStatusBits()); },\n fetchNextOpcode\n ];\n }\n\n function PLA() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() {\n A = popFromStack();\n setZ(A);\n setN(A);\n },\n fetchNextOpcode\n ];\n }\n\n function PLP() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() { setStatusBits(popFromStack()); },\n fetchNextOpcode\n ];\n }\n\n function JSR() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n peekFromStack,\n function() { pushToStack((PC >>> 8) & 0xff); },\n function() { pushToStack(PC & 0xff); },\n fetchADH,\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function BRK() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate, // For debugging purposes, use operand as an arg for BRK!\n function() {\n if (self.debug) self.breakpoint(\"BRK \" + data);\n pushToStack((PC >>> 8) & 0xff);\n },\n function() { pushToStack(PC & 0xff); },\n function() { pushToStack(getStatusBits()); }, // set B flag\n function() { AD = bus.read(IRQ_VECTOR); },\n function() { AD |= bus.read(IRQ_VECTOR + 1) << 8; },\n function() { PC = AD; I = 1; fetchNextOpcode(); }\n ];\n }\n\n function IRQ() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate, // For debugging purposes, use operand as an arg for BRK!\n function() {\n if (self.debug) self.breakpoint(\"IRQ \" + data);\n pushToStack((PC >>> 8) & 0xff);\n },\n function() { pushToStack(PC & 0xff); },\n function() { pushToStack(getStatusBits() & ~0x10); }, // no BRK flag\n function() { AD = bus.read(IRQ_VECTOR); },\n function() { AD |= bus.read(IRQ_VECTOR + 1) << 8; },\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function NMI() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate,\n function() {\n if (self.debug) self.breakpoint(\"NMI \" + data);\n pushToStack((PC >>> 8) & 0xff);\n },\n function() { pushToStack(PC & 0xff); },\n function() { pushToStack(getStatusBits() & ~0x10); }, // no BRK flag\n function() { AD = bus.read(NMI_VECTOR); },\n function() { AD |= bus.read(NMI_VECTOR + 1) << 8; },\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function RTI() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() { setStatusBits(popFromStack()); },\n function() { AD = popFromStack(); },\n function() { AD |= popFromStack() << 8; },\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function RTS() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() { AD = popFromStack(); },\n function() { AD |= popFromStack() << 8; },\n function() { PC = AD; fetchDataFromImmediate(); },\n fetchNextOpcode\n ];\n }\n\n function JMP_ABS() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function JMP_IND() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchIAH,\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() { PC = BA; fetchNextOpcode(); }\n ];\n }\n\n function Bxx(reg, cond) {\n var branchTaken;\n if (reg === bZ) branchTaken = function() { return Z === cond; };\n else if (reg === bN) branchTaken = function() { return N === cond; };\n else if (reg === bC) branchTaken = function() { return C === cond; };\n else branchTaken = function() { return V === cond; };\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBranchOffset,\n function() {\n if (branchTaken()) {\n fetchOpcodeAndDiscard();\n addBranchOffsetToPCL();\n } else {\n fetchNextOpcode();\n }\n },\n function() {\n if(branchOffsetCrossAdjust) {\n fetchOpcodeAndDiscard();\n adjustPCHForBranchOffsetCross();\n } else {\n fetchNextOpcode();\n }\n },\n fetchNextOpcode\n ];\n }\n\n\n // Savestate -------------------------------------------\n\n this.saveState = function():MOS6502State {\n return {\n PC: (PC-1) & 0xffff,\n A: A, X: X, Y: Y, SP: SP,\n N: N, V: V, D: D, I: I, Z: Z, C: C,\n T: T, o: opcode, R: RDY?1:0,\n d: data, AD: AD, BA: BA, BC: BALCrossed?1:0, IA: IA,\n bo: branchOffset, boa: branchOffsetCrossAdjust\n };\n };\n\n this.loadState = function(state:MOS6502State) {\n PC = (state.PC+1) & 0xffff;\n A = state.A; X = state.X; Y = state.Y; SP = state.SP;\n N = state.N; V = state.V; D = state.D; I = state.I; Z = state.Z; C = state.C;\n T = state.T; opcode = state.o; RDY = !!state.R;\n data = state.d; AD = state.AD; BA = state.BA; BALCrossed = !!state.BC; IA = state.IA;\n branchOffset = state.bo; branchOffsetCrossAdjust = state.boa;\n instruction = opcode < 0 ? [ fetchOpcodeAndDecodeInstruction ] : instructions[opcode];\n };\n\n\n // Accessory methods\n\n this.toString = function() {\n return \"CPU \" +\n \" PC: \" + PC.toString(16) + \" op: \" + opcode.toString() + \" T: \" + T + \" data: \" + data + \"\\n\" +\n \" A: \" + A.toString(16) + \" X: \" + X.toString(16) + \" Y: \" + Y.toString(16) + \" SP: \" + SP.toString(16) + \" \" +\n \"N\" + N + \" \" + \"V\" + V + \" \" + \"D\" + D + \" \" + \"I\" + I + \" \" + \"Z\" + Z + \" \" + \"C\" + C + \" \";\n };\n\n this.breakpoint = function(mes) {\n //jt.Util.log(mes);\n if (this.trace) {\n var text = \"CPU Breakpoint! \" + (mes ? \"(\" + mes + \")\" : \"\") + \"\\n\\n\" + this.toString();\n //jt.Util.message(text);\n }\n };\n\n var cycletime = [\n 7, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 6, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 0, 6, 0, 6, 3, 3, 3, 3, 2, 0, 2, 0, 4, 4, 4, 4,\n 2, 6, 0, 0, 4, 4, 4, 4, 2, 5, 2, 0, 0, 5, 0, 0,\n 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 0, 4, 4, 4, 4,\n 2, 5, 0, 5, 4, 4, 4, 4, 2, 4, 2, 0, 4, 4, 4, 4,\n 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 0, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7\n ];\n\n var extracycles = [\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1\n ];\n\n var insnlengths = [\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 3, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 0, 2, 0, 2, 2, 2, 2, 2, 1, 0, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 0, 2, 2, 2, 3, 1, 3, 1, 0, 0, 3, 0, 0,\n 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3\n ];\n\n var validinsns = [\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 0, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 3, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 0, 2, 0, 0, 2, 2, 2, 0, 1, 0, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 0, 3, 0, 0,\n 2, 2, 2, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0\n ];\n\n this.getOpcodeMetadata = function(opcode, address) {\n // TODO: more intelligent maximum cycles\n //var i = instructions[opcode];\n return {\n opcode:opcode,\n mnenomic:opcodes[opcode],\n minCycles:cycletime[opcode],\n maxCycles:cycletime[opcode] + extracycles[opcode],\n insnlength:insnlengths[opcode]\n };\n }\n\n // only call when isPCStable() is true\n this.setNMI = function() {\n instruction = NMI();\n T = 1;\n PC = (PC-1) & 0xffff;\n }\n this.setIRQ = function() {\n if (!I) { // only if not disabled\n instruction = IRQ();\n T = 1;\n PC = (PC-1) & 0xffff;\n }\n }\n\n this.getSP = function() { return SP; }\n this.getPC = function() { return (PC-1) & 0xffff; }\n this.getT = function() { return T; }\n this.isHalted = function() { return opcodes[opcode] == \"uKIL\"; }\n \n this.isPCStable = function() {\n return T == 0;\n }\n};\n\nexport interface MOS6502State {\nPC : number;\nSP : number;\nA : number;\nX : number;\nY : number;\nN : number;\nV : number;\nD : number;\nI : number;\nZ : number;\nC : number;\nT : number;\no : number;\nR : number;\nd : number;\nAD : number;\nBA : number;\nBC : number;\nIA : number;\nbo : number;\nboa : number;\n}\n\nexport enum MOS6502Interrupts { None=0, NMI=1, IRQ=2 };\n\nexport class MOS6502 implements CPU, ClockBased, SavesState, Interruptable {\n\n cpu = new _MOS6502();\n interruptType : MOS6502Interrupts = MOS6502Interrupts.None;\n \n connectMemoryBus(bus:Bus) {\n this.cpu.connectBus(bus);\n }\n advanceClock() {\n if (this.interruptType && this.isStable()) {\n switch (this.interruptType) {\n case MOS6502Interrupts.NMI: this.cpu.setNMI(); break;\n case MOS6502Interrupts.IRQ: this.cpu.setIRQ(); break;\n }\n this.interruptType = 0;\n }\n this.cpu.clockPulse();\n }\n advanceInsn() {\n do {\n this.advanceClock();\n } while (!this.isStable());\n }\n reset() {\n this.cpu.reset();\n this.interruptType = 0;\n }\n interrupt(itype:number) {\n if (this.interruptType != MOS6502Interrupts.NMI) {\n this.interruptType = itype;\n }\n }\n NMI() {\n this.interrupt(MOS6502Interrupts.NMI);\n }\n IRQ() {\n this.interrupt(MOS6502Interrupts.IRQ);\n }\n getSP() {\n return this.cpu.getSP();\n }\n getPC() {\n return this.cpu.getPC();\n }\n isHalted() {\n return this.cpu.isHalted();\n }\n saveState() {\n var s = this.cpu.saveState();\n s.it = this.interruptType;\n return s;\n }\n loadState(s) {\n this.cpu.loadState(s);\n this.interruptType = s.it;\n }\n isStable() : boolean {\n return this.cpu.isPCStable();\n }\n getOpcodeMetadata(op: number) {\n return this.cpu.getOpcodeMetadata(op);\n }\n}\n", "\nimport { CpuState, EmuState } from \"./baseplatform\";\nimport { CPU, SampledAudioSink, ProbeAll, NullProbe } from \"./devices\";\nimport { EmuHalt } from \"./emu\";\n\n// WASM Support\n// TODO: detangle from c64\n\nexport abstract class BaseWASMMachine {\n prefix : string;\n instance : WebAssembly.Instance;\n exports : any;\n sys : number;\n pixel_dest : Uint32Array;\n pixel_src : Uint32Array;\n stateptr : number;\n statearr : Uint8Array;\n cpustateptr : number;\n cpustatearr : Uint8Array;\n ctrlstateptr : number;\n ctrlstatearr : Uint8Array;\n cpu : CPU;\n romptr : number;\n romlen : number;\n romarr : Uint8Array;\n biosptr : number;\n biosarr : Uint8Array;\n audio : SampledAudioSink;\n audioarr : Float32Array;\n probe : ProbeAll;\n maxROMSize : number = 0x40000;\n\n abstract getCPUState() : CpuState;\n abstract saveState() : EmuState;\n abstract loadState(state: EmuState);\n\n constructor(prefix: string) {\n this.prefix = prefix;\n var self = this;\n this.cpu = {\n getPC: self.getPC.bind(self),\n getSP: self.getSP.bind(self),\n isStable: self.isStable.bind(self),\n reset: self.reset.bind(self),\n saveState: () => {\n return self.getCPUState();\n },\n loadState: () => {\n console.log(\"loadState not implemented\")\n },\n connectMemoryBus() {\n console.log(\"connectMemoryBus not implemented\")\n },\n }\n }\n getImports(wmod: WebAssembly.Module) {\n return {};\n }\n async fetchWASM() {\n var wasmResponse = await fetch('res/'+this.prefix+'/'+this.prefix+'.wasm');\n if (wasmResponse.status == 200 || (wasmResponse as any as Blob).size) {\n var wasmBinary = await wasmResponse.arrayBuffer();\n var wasmCompiled = await WebAssembly.compile(wasmBinary);\n var wasmResult = await WebAssembly.instantiate(wasmCompiled, this.getImports(wasmCompiled));\n this.instance = wasmResult;\n this.exports = wasmResult.exports;\n } else throw new Error('could not load WASM file');\n }\n allocateBIOS(biosBinary: Uint8Array) {\n this.biosptr = this.exports.malloc(biosBinary.byteLength);\n this.biosarr = new Uint8Array(this.exports.memory.buffer, this.biosptr, biosBinary.byteLength);\n}\n async fetchBIOS() {\n var biosResponse = await fetch('res/'+this.prefix+'/'+this.prefix+'.bios');\n if (biosResponse.status == 200 || (biosResponse as any as Blob).size) {\n var biosBinary = new Uint8Array(await biosResponse.arrayBuffer());\n this.allocateBIOS(biosBinary);\n this.loadBIOS(biosBinary);\n } else throw new Error('could not load BIOS file');\n }\n async initWASM() {\n // init machine instance\n this.sys = this.exports.machine_init(this.biosptr);\n let statesize = this.exports.machine_get_state_size();\n this.stateptr = this.exports.malloc(statesize);\n let ctrlstatesize = this.exports.machine_get_controls_state_size();\n this.ctrlstateptr = this.exports.malloc(ctrlstatesize);\n let cpustatesize = this.exports.machine_get_cpu_state_size();\n this.cpustateptr = this.exports.malloc(cpustatesize);\n this.romptr = this.exports.malloc(this.maxROMSize);\n // create state buffers\n // must do this after allocating memory (and everytime we grow memory?)\n this.statearr = new Uint8Array(this.exports.memory.buffer, this.stateptr, statesize);\n this.ctrlstatearr = new Uint8Array(this.exports.memory.buffer, this.ctrlstateptr, ctrlstatesize);\n this.cpustatearr = new Uint8Array(this.exports.memory.buffer, this.cpustateptr, cpustatesize);\n // create audio buffer\n let sampbufsize = 4096*4;\n this.audioarr = new Float32Array(this.exports.memory.buffer, this.exports.machine_get_sample_buffer(), sampbufsize);\n // create ROM buffer\n this.romarr = new Uint8Array(this.exports.memory.buffer, this.romptr, this.maxROMSize);\n // enable c64 joystick map to arrow keys (TODO)\n //this.exports.c64_set_joystick_type(this.sys, 1);\n console.log('machine_init', this.sys, statesize, ctrlstatesize, cpustatesize, sampbufsize);\n }\n async loadWASM() {\n await this.fetchWASM();\n this.exports.memory.grow(96); // TODO: need more when probing?\n await this.fetchBIOS();\n await this.initWASM();\n }\n getPC() : number {\n return this.exports.machine_cpu_get_pc(this.sys);\n }\n getSP() : number {\n return this.exports.machine_cpu_get_sp(this.sys);\n }\n isStable() : boolean {\n return this.exports.machine_cpu_is_stable(this.sys);\n }\n loadROM(rom: Uint8Array) {\n if (rom.length > this.maxROMSize) throw new EmuHalt(`Rom size too big: ${rom.length} bytes`);\n this.romarr.set(rom);\n this.romlen = rom.length;\n console.log('load rom', rom.length, 'bytes');\n this.reset(); // TODO?\n }\n // TODO: can't load after machine_init\n loadBIOS(srcArray: Uint8Array) {\n this.biosarr.set(srcArray);\n }\n reset() {\n this.exports.machine_reset(this.sys);\n }\n /* TODO: we don't need this because c64_exec does this?\n pollControls() {\n this.exports.machine_start_frame(this.sys);\n }\n */\n read(address: number) : number {\n return this.exports.machine_mem_read(this.sys, address & 0xffff);\n }\n readConst(address: number) : number {\n return this.exports.machine_mem_read(this.sys, address & 0xffff);\n }\n write(address: number, value: number) : void {\n this.exports.machine_mem_write(this.sys, address & 0xffff, value & 0xff);\n }\n getAudioParams() {\n return {sampleRate:44100, stereo:false};\n }\n videoOffsetBytes = 0;\n connectVideo(pixels:Uint32Array) : void {\n this.pixel_dest = pixels;\n var pixbuf = this.exports.machine_get_pixel_buffer(this.sys); // save video pointer\n console.log('connectVideo', pixbuf, pixels.length);\n this.pixel_src = new Uint32Array(this.exports.memory.buffer, pixbuf+this.videoOffsetBytes, pixels.length);\n }\n syncVideo() {\n if (this.exports.machine_update_video) {\n this.exports.machine_update_video(this.sys);\n }\n if (this.pixel_dest != null) {\n this.pixel_dest.set(this.pixel_src);\n }\n }\n // assume controls buffer is smaller than cpu buffer\n saveControlsState() : any {\n //console.log(1, this.romptr, this.romlen, this.ctrlstateptr, this.romarr.slice(0,4), this.ctrlstatearr.slice(0,4));\n this.exports.machine_save_controls_state(this.sys, this.ctrlstateptr);\n //console.log(2, this.romptr, this.romlen, this.ctrlstateptr, this.romarr.slice(0,4), this.ctrlstatearr.slice(0,4));\n return { controls:this.ctrlstatearr.slice(0) }\n }\n loadControlsState(state) : void {\n this.ctrlstatearr.set(state.controls);\n this.exports.machine_load_controls_state(this.sys, this.ctrlstateptr);\n }\n connectAudio(audio : SampledAudioSink) : void {\n this.audio = audio;\n }\n syncAudio() {\n if (this.audio != null) {\n var n = this.exports.machine_get_sample_count();\n for (var i=0; i address\n addr2symbol: AddrSymbolMap;\t// address -> symbol\n debuginfo: {}; // extra platform-specific debug info\n symbolsizes?: SymbolMap; // symbol -> size in bytes, if known\n symbolAddrs: number[]; // unique symbol addresses, sorted (function starts)\n\n constructor(symbolmap: SymbolMap, debuginfo: {}, symbolsizes?: SymbolMap) {\n this.symbolmap = symbolmap;\n this.debuginfo = debuginfo;\n this.symbolsizes = symbolsizes;\n this.addr2symbol = invertMap(symbolmap);\n this.symbolAddrs = [...new Set(Object.values(symbolmap || {}))].sort((a, b) => a - b);\n //// TODO: shouldn't be necc.\n if (!this.addr2symbol[0x0]) this.addr2symbol[0x0] = '$00'; // needed for ...\n this.addr2symbol[0x10000] = '__END__'; // ... dump memory to work\n }\n}\n\ntype MemoryMapType = \"main\" | \"vram\";\ntype MemoryMap = { [type: string]: Segment[] };\n\nexport function isDebuggable(arg: any): arg is Debuggable {\n return arg && typeof arg.getDebugCategories === 'function';\n}\n\nexport interface Debuggable {\n getDebugCategories?(): string[];\n getDebugInfo?(category: string, state: EmuState): string;\n}\n\nexport interface Platform {\n start(): void | Promise;\n reset(): void;\n isRunning(): boolean;\n getToolForFilename(s: string): string;\n getDefaultExtensions(): string[];\n getPresets?(): Preset[];\n pause(): void;\n resume(): void;\n loadROM(title: string, rom: any, origin?: number); // TODO: Uint8Array\n loadBIOS?(title: string, rom: Uint8Array);\n getROMExtension?(rom: FileData): string;\n\n loadState?(state: EmuState): void;\n saveState?(): EmuState;\n loadControlsState?(state: EmuControlsState): void;\n saveControlsState?(): EmuControlsState;\n\n inspect?(ident: string): string;\n disassemble?(addr: number, readfn: (addr: number) => number): DisasmLine;\n readAddress?(addr: number): number;\n readVRAMAddress?(addr: number): number;\n\n setFrameRate?(fps: number): void;\n getFrameRate?(): number;\n\n setupDebug?(callback: BreakpointCallback): void;\n clearDebug?(): void;\n step?(): void;\n runToVsync?(): void;\n runToPC?(pc: number[]): void;\n // like runToPC(), but each address may carry its own extra condition\n // (null = break unconditionally); handles debug-clock bookkeeping so\n // callers don't have to reach into internal fields to arm a runEval()\n runEvalAtPC?(targets: Map): void;\n runUntilReturn?(): void;\n stepBack?(): void;\n runEval?(evalfunc: DebugEvalCondition): void;\n runToFrameClock?(clock: number): void;\n stepOver?(): void;\n hasCustomStepOver?(): boolean; // true if stepOver() is not the generic instruction-level implementation\n restartAtPC?(pc: number): boolean;\n\n getOpcodeMetadata?(opcode: number, offset: number): OpcodeMetadata; //TODO\n getSP?(): number;\n getPC?(): number;\n getOriginPC?(): number;\n newCodeAnalyzer?(): CodeAnalyzer;\n\n getPlatformName?(): string;\n getMemoryMap?(): MemoryMap;\n\n setRecorder?(recorder: EmuRecorder): void;\n advance?(novideo?: boolean): number;\n advanceFrameClock?(trap: DebugCondition, step: number): number;\n showHelp?(): string;\n resize?(): void;\n\n getRasterScanline?(): number;\n getRasterLineClock?(): number;\n setBreakpoint?(id: string, cond: DebugCondition);\n clearBreakpoint?(id: string);\n hasBreakpoint?(id: string): boolean;\n getCPUState?(): CpuState;\n\n debugSymbols?: DebugSymbols;\n getDebugTree?(): {};\n /** HDL platforms: the design's signals as a tree of values, nested by module (see debugtree.ts) */\n getSignals?(): {};\n /** can the program read paddles (or a mouse)? A host only sends them if so. */\n acceptsPaddles?(): boolean;\n /** x and y in 0..255, and the buttons held */\n setPaddles?(x: number, y: number, buttons: boolean[]): void;\n /** HDL platforms: clock cycles since power-up */\n getClockCount?(): number | undefined;\n /**\n * HDL platforms: call `sink` with the design's state before every clock\n * (null stops). Costs the fast frame path, so only while recording.\n */\n setTraceSink?(sink: ((state: {[name: string]: any}) => void) | null): void;\n\n startProbing?(): ProbeRecorder;\n stopProbing?(): void;\n\n isBlocked?(): boolean; // is blocked, halted, or waiting for input?\n\n readFile?(path: string): FileData;\n writeFile?(path: string, data: FileData): boolean;\n sourceFileFetch?: (path: string) => FileData;\n\n getDownloadFile?(): { extension: string, blob: Blob };\n getDebugSymbolFile?(): { extension: string, blob: Blob };\n}\n\nexport interface Preset {\n id: string;\n name: string;\n chapter?: number;\n title?: string;\n category?: string;\n}\n\nexport interface MemoryBus {\n read: (address: number) => number;\n write: (address: number, value: number) => void;\n contend?: (address: number, cycles: number) => number;\n isContended?: (address: number) => boolean;\n}\n\nexport type DebugCondition = () => boolean;\nexport type DebugEvalCondition = (c: CpuState) => boolean;\nexport type BreakpointCallback = (s: EmuState, msg?: string) => void;\n// for composite breakpoints w/ single debug function\nexport class BreakpointList {\n id2bp: { [id: string]: Breakpoint } = {};\n getDebugCondition(): DebugCondition {\n if (Object.keys(this.id2bp).length == 0) {\n return null; // no breakpoints\n } else {\n // evaluate all breakpoints\n return () => {\n var result = false;\n for (var id in this.id2bp)\n if (this.id2bp[id].cond())\n result = true;\n return result;\n };\n }\n }\n}\nexport interface Breakpoint {\n cond: DebugCondition;\n};\n\nexport interface EmuRecorder {\n frameRequested(): boolean;\n recordFrame(state: EmuState);\n}\n\n/////\n\nexport abstract class BasePlatform {\n recorder: EmuRecorder = null;\n debugSymbols: DebugSymbols;\n internalFiles: { [path: string]: FileData } = {};\n\n abstract loadState(state: EmuState): void;\n abstract saveState(): EmuState;\n abstract pause(): void;\n abstract resume(): void;\n abstract advance(novideo?: boolean): number;\n\n setRecorder(recorder: EmuRecorder): void {\n this.recorder = recorder;\n }\n updateRecorder() {\n // are we recording and do we need to save a frame?\n if (this.recorder && (this).isRunning() && this.recorder.frameRequested()) {\n this.recorder.recordFrame(this.saveState());\n }\n }\n inspect(sym: string): string {\n return inspectSymbol((this as any) as Platform, sym);\n }\n getDebugTree(): {} {\n var o: any = {};\n o.state = this.saveState();\n if (this.debugSymbols?.debuginfo) o.debuginfo = this.debugSymbols.debuginfo;\n return o;\n }\n readFile(path: string): FileData {\n return this.internalFiles[path];\n }\n writeFile(path: string, data: FileData): boolean {\n this.internalFiles[path] = data;\n return true;\n }\n}\n\nexport abstract class BaseDebugPlatform extends BasePlatform {\n onBreakpointHit: BreakpointCallback;\n debugCallback: DebugCondition;\n debugSavedState: EmuState = null;\n debugBreakState: EmuState = null;\n debugTargetClock: number = 0;\n debugClock: number = 0;\n breakpoints: BreakpointList = new BreakpointList();\n frameCount: number = 0;\n\n abstract getCPUState(): CpuState;\n\n // Some CPU cores save their program counter one byte before or after the\n // opcode they are on, so a raw PC lands on an operand or on the previous\n // instruction. debugPCDelta corrects it: getCPUState() and saveState()\n // report PC + delta, which is the address of the opcode, the same address\n // getPC() returns.\n debugPCDelta = 0;\n fixPC(c) { c.PC = (c.PC + this.debugPCDelta) & 0xffff; return c; }\n unfixPC(c) { c.PC = (c.PC - this.debugPCDelta) & 0xffff; return c; }\n\n // True if a breakpoint targets the effective PC (see EPC), which some\n // platforms use to fold a bank offset into the address. Those need the CPU\n // state to find, so they skip the cheap getPC() test in runEvalAtPC().\n debugUsesEPC(): boolean { return false; }\n\n setBreakpoint(id: string, cond: DebugCondition) {\n if (cond) {\n this.breakpoints.id2bp[id] = { cond: cond };\n this.restartDebugging();\n } else {\n this.clearBreakpoint(id);\n }\n }\n clearBreakpoint(id: string) {\n delete this.breakpoints.id2bp[id];\n }\n hasBreakpoint(id: string) {\n return this.breakpoints.id2bp[id] != null;\n }\n getDebugCallback(): DebugCondition {\n return this.breakpoints.getDebugCondition();\n }\n setupDebug(callback: BreakpointCallback): void {\n this.onBreakpointHit = callback;\n }\n clearDebug() {\n if (this.debugBreakState != null && this.debugSavedState != null) {\n this.loadState(this.debugSavedState);\n }\n this.debugSavedState = null;\n this.debugBreakState = null;\n this.debugTargetClock = -1;\n this.debugClock = 0;\n this.onBreakpointHit = null;\n this.clearBreakpoint('debug');\n this.frameCount = 0;\n }\n setDebugCondition(debugCond: DebugCondition) {\n this.setBreakpoint('debug', debugCond);\n }\n resetDebugging() {\n if (this.debugSavedState) {\n this.loadState(this.debugSavedState);\n } else {\n this.debugSavedState = this.saveState();\n }\n this.debugClock = 0;\n this.debugCallback = this.getDebugCallback();\n this.debugBreakState = null;\n }\n restartDebugging() {\n this.resetDebugging();\n this.resume();\n }\n preFrame() {\n // save state before frame, to record any inputs that happened pre-frame\n if (this.debugCallback && !this.debugBreakState) {\n // save state every frame and rewind debug clocks\n this.debugSavedState = this.saveState();\n this.debugTargetClock -= this.debugClock;\n this.debugClock = 0;\n }\n }\n postFrame() {\n // reload debug state at end of frame after breakpoint\n if (this.debugCallback && this.debugBreakState) {\n this.loadState(this.debugBreakState);\n }\n this.frameCount++;\n }\n pollControls() {\n }\n nextFrame(novideo: boolean): number {\n this.pollControls();\n this.updateRecorder();\n this.preFrame();\n var steps = this.advance(novideo);\n this.postFrame();\n return steps;\n }\n // default debugging\n abstract getSP(): number;\n abstract getPC(): number;\n abstract isStable(): boolean;\n\n evalDebugCondition() {\n if (this.debugCallback && !this.debugBreakState) {\n this.debugCallback();\n }\n }\n wasBreakpointHit(): boolean {\n return this.debugBreakState != null;\n }\n breakpointHit(targetClock: number, reason?: string) {\n console.log(this.debugTargetClock, targetClock, this.debugClock, this.isStable());\n this.debugTargetClock = targetClock;\n this.debugBreakState = this.saveState();\n console.log(\"Breakpoint at clk\", this.debugClock, \"PC\", this.debugBreakState.c.PC.toString(16));\n this.pause();\n if (this.onBreakpointHit) {\n this.onBreakpointHit(this.debugBreakState, reason);\n }\n }\n haltAndCatchFire(reason: string) {\n this.breakpointHit(this.debugClock, reason);\n }\n runEval(evalfunc: DebugEvalCondition) {\n this.setDebugCondition(() => {\n if (++this.debugClock >= this.debugTargetClock && this.isStable()) {\n var cpuState = this.getCPUState();\n if (evalfunc(cpuState)) {\n this.breakpointHit(this.debugClock);\n return true;\n } else {\n return false;\n }\n }\n });\n }\n runToPC(pc: number[]) {\n this.runEvalAtPC(new Map(pc.map((a) => [a, null])));\n }\n // Runs until a breakpoint is hit, which can be a whole frame away, so it\n // tests getPC() on its own rather than building a CPU state at every\n // instruction. The state is only wanted once an address matches, to run\n // that breakpoint's condition.\n runEvalAtPC(targets: Map) {\n this.debugTargetClock++;\n const useEPC = this.debugUsesEPC();\n this.setDebugCondition(() => {\n if (++this.debugClock < this.debugTargetClock || !this.isStable()) return;\n if (!useEPC && !targets.has(this.getPC())) return;\n const c = this.getCPUState();\n const epc = c.EPC != null ? c.EPC : c.PC;\n if (!targets.has(epc)) return;\n const cond = targets.get(epc);\n if (cond && !cond(c)) return;\n this.breakpointHit(this.debugClock);\n return true;\n });\n }\n runUntilReturn() {\n var SP0 = this.getSP();\n this.runEval((c: CpuState): boolean => {\n return c.SP > SP0; // TODO: check for RTS/RET opcode\n });\n }\n // step over one CPU instruction; if it is a subroutine call,\n // run at full speed until the instruction following it\n stepOver() {\n var p = (this);\n var pc = this.getPC();\n var d = null;\n var readfn = p.readAddress?.bind(p);\n if (readfn && p.disassemble) {\n d = p.disassemble(pc, readfn);\n }\n if (d && d.iscall) {\n // run until we return from the subroutine call\n var nextPC = pc + d.nbytes;\n this.debugTargetClock++;\n this.runEval((c) => c.PC == nextPC);\n } else {\n // not a call, just single-step\n this.step();\n }\n }\n hasCustomStepOver() { return false; }\n runToFrameClock(clock: number): void {\n this.restartDebugging();\n this.debugTargetClock = clock;\n this.runEval((): boolean => { return true; });\n }\n step() {\n this.runToFrameClock(this.debugClock + 1);\n }\n stepBack() {\n var prevState;\n var prevClock;\n var clock0 = this.debugTargetClock;\n this.restartDebugging();\n this.debugTargetClock = clock0 - 25; // TODO: depends on CPU\n this.runEval((c: CpuState): boolean => {\n if (this.debugClock < clock0) {\n prevState = this.saveState();\n prevClock = this.debugClock;\n return false;\n } else {\n if (prevState) {\n this.loadState(prevState);\n this.debugClock = prevClock;\n }\n return true;\n }\n });\n }\n runToVsync() {\n this.restartDebugging();\n var frame0 = this.frameCount;\n this.runEval((): boolean => {\n return this.frameCount > frame0;\n });\n }\n}\n\nexport function inspectSymbol(platform: Platform, sym: string): string {\n if (!platform.debugSymbols) return;\n var symmap = platform.debugSymbols.symbolmap;\n var addr2sym = platform.debugSymbols.addr2symbol;\n if (!symmap || !platform.readAddress) return null;\n var addr = symmap[\"_\" + sym] || symmap[sym]; // look for C or asm symbol\n if (!(typeof addr == 'number')) return null;\n var b = platform.readAddress(addr);\n // don't show 2 bytes if there's a symbol at the next address\n if (addr2sym && addr2sym[addr + 1] != null) {\n return \"$\" + hex(addr, 4) + \" = $\" + hex(b, 2) + \" (\" + b + \" decimal)\"; // unsigned\n } else {\n let b2 = platform.readAddress(addr + 1);\n let w = b | (b2 << 8);\n return \"$\" + hex(addr, 4) + \" = $\" + hex(b, 2) + \" $\" + hex(b2, 2) + \" (\" + ((w << 16) >> 16) + \" decimal)\"; // signed\n }\n}\n\n////// 6502\n\n// TODO: can merge w/ Z80?\nexport abstract class Base6502Platform extends BaseDebugPlatform {\n\n // the MOS6502 keeps its PC one byte past the opcode it fetched\n debugPCDelta = -1;\n getSP() { return this.getCPUState().SP };\n getPC() { return this.getCPUState().PC };\n isStable() { return !this.getCPUState()['T']; }\n abstract readAddress(addr: number): number;\n\n newCPU(membus: MemoryBus) {\n var cpu = new _MOS6502();\n cpu.connectBus(membus);\n return cpu;\n }\n\n getOpcodeMetadata(opcode, offset) {\n return getOpcodeMetadata_6502(opcode, offset);\n }\n\n getOriginPC(): number {\n return (this.readAddress(0xfffc) | (this.readAddress(0xfffd) << 8)) & 0xffff;\n }\n\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassemble6502(pc, read(pc), read(pc + 1), read(pc + 2));\n }\n getToolForFilename = getToolForFilename_6502;\n getDefaultExtensions() { return [\".c\", \".sdcc\", \".cpp\", \".o64\", \".acme\", \".xa\", \".ca65\", \".dasm\", \".ecs\", \".wiz\"]; };\n\n getDebugCategories() {\n return ['CPU', 'ZPRAM', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6502(state.c);\n case 'ZPRAM': return dumpRAM(state.b || state.ram, 0x0, 0x100);\n case 'Stack': return dumpStackToString(this, state.b || state.ram, 0x100, 0x1ff, 0x100 + state.c.SP, 0x20);\n }\n }\n}\n\nexport function cpuStateToLongString_6502(c): string {\n function decodeFlags(c) {\n var s = \"\";\n s += c.N ? \" N\" : \" -\";\n s += c.V ? \" V\" : \" -\";\n s += c.D ? \" D\" : \" -\";\n s += c.Z ? \" Z\" : \" -\";\n s += c.C ? \" C\" : \" -\";\n s += c.I ? \" I\" : \" -\";\n return s;\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c) + \"\\n\"\n + \" A \" + hex(c.A) + \" \" + (c.R ? \"\" : \"BUSY\") + \"\\n\"\n + \" X \" + hex(c.X) + \"\\n\"\n + \" Y \" + hex(c.Y) + \" \" + \"SP \" + hex(c.SP) + \"\\n\";\n}\n\nvar OPMETA_6502 = {\n cycletime: [\n 7, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 6, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 0, 6, 0, 6, 3, 3, 3, 3, 2, 0, 2, 0, 4, 4, 4, 4, 2, 6, 0, 0, 4, 4, 4, 4, 2, 5, 2, 0, 0, 5, 0, 0, 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 0, 4, 4, 4, 4, 2, 5, 0, 5, 4, 4, 4, 4, 2, 4, 2, 0, 4, 4, 4, 4, 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 3, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 0, 4, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7\n ],\n extracycles: [\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1\n ],\n insnlengths: [\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 3, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 0, 2, 0, 2, 2, 2, 2, 2, 1, 0, 1, 0, 3, 3, 3, 3, 2, 2, 0, 0, 2, 2, 2, 3, 1, 3, 1, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 1, 0, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3\n ],\n validinsns: [\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 0, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 3, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 0, 2, 0, 0, 2, 2, 2, 0, 1, 0, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 0, 3, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0\n ],\n}\n\nexport function getOpcodeMetadata_6502(opcode, address) {\n // TODO: more intelligent maximum cycles\n // TODO: must always be new object, b/c we might modify it\n return {\n opcode: opcode,\n minCycles: OPMETA_6502.cycletime[opcode],\n maxCycles: OPMETA_6502.cycletime[opcode] + OPMETA_6502.extracycles[opcode],\n insnlength: OPMETA_6502.insnlengths[opcode]\n };\n}\n\n////// Z80\n\nexport function cpuStateToLongString_Z80(c) {\n function decodeFlags(flags) {\n return printFlags(flags, [\"S\", \"Z\", , \"H\", , \"V\", \"N\", \"C\"], true);\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c.AF) + \" \" + (c.iff1 ? \"I\" : \"-\") + (c.iff2 ? \"I\" : \"-\") + \"\\n\"\n + \"SP \" + hex(c.SP, 4) + \" IR \" + hex(c.IR, 4) + \"\\n\"\n + \"IX \" + hex(c.IX, 4) + \" IY \" + hex(c.IY, 4) + \"\\n\"\n + \"AF \" + hex(c.AF, 4) + \" BC \" + hex(c.BC, 4) + \"\\n\"\n + \"DE \" + hex(c.DE, 4) + \" HL \" + hex(c.HL, 4) + \"\\n\"\n ;\n}\n\nexport function cpuStateToLongString_SM83(c) {\n function decodeFlags(af) {\n return printFlags(af, [\"Z\", \"N\", \"H\", \"C\"], true);\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c.AF >> 4) + \" \" + (c.ime ? \"I\" : \"-\") + \"\\n\"\n + \"SP \" + hex(c.SP, 4) + \"\\n\"\n + \"AF \" + hex(c.AF, 4) + \" BC \" + hex(c.BC, 4) + \"\\n\"\n + \"DE \" + hex(c.DE, 4) + \" HL \" + hex(c.HL, 4) + \"\\n\"\n ;\n}\n\nexport abstract class BaseZ80Platform extends BaseDebugPlatform {\n\n _cpu;\n waitCycles: number = 0;\n\n newCPU(membus: MemoryBus, iobus: MemoryBus) {\n this._cpu = new Z80();\n this._cpu.connectMemoryBus(membus);\n this._cpu.connectIOBus(iobus);\n return this._cpu;\n }\n\n getPC() { return this._cpu.getPC(); }\n getSP() { return this._cpu.getSP(); }\n isStable() { return true; }\n\n // TODO: refactor other parts into here\n runCPU(cpu, cycles: number): number {\n this._cpu = cpu; // TODO?\n this.waitCycles = 0; // TODO: needs to spill over betwenn calls\n if (this.wasBreakpointHit())\n return 0;\n var debugCond = this.getDebugCallback();\n var n = 0;\n this.waitCycles += cycles;\n while (this.waitCycles > 0) {\n if (debugCond && debugCond()) {\n debugCond = null;\n break;\n }\n var cyc = cpu.advanceInsn();\n n += cyc;\n this.waitCycles -= cyc;\n }\n return n;\n }\n\n getToolForFilename = getToolForFilename_z80;\n getDefaultExtensions() { return [\".c\", \".sdcc\", \".ns\", \".s\", \".scc\", \".sgb\", \".z\", \".wiz\"]; };\n // TODO: Z80 opcode metadata\n //this.getOpcodeMetadata = function() { }\n\n getDebugCategories() {\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_Z80(state.c);\n case 'Stack': {\n var sp = (state.c.SP - 1) & 0xffff;\n var start = sp & 0xff00;\n var end = start + 0xff;\n if (sp == 0) sp = 0x10000;\n console.log(sp, start, end);\n return dumpStackToString(this, [], start, end, sp, 0xcd);\n }\n }\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassembleZ80(pc, read(pc), read(pc + 1), read(pc + 2), read(pc + 3));\n }\n}\n\n////// 6809\n\nexport function cpuStateToLongString_6809(c) {\n function decodeFlags(flags) {\n return printFlags(flags, [\"E\", \"F\", \"H\", \"I\", \"N\", \"Z\", \"V\", \"C\"], true);\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c.CC) + \"\\n\"\n + \"SP \" + hex(c.SP, 4) + \"\\n\"\n + \"DP \" + hex(c.DP, 2) + \"\\n\"\n + \" A \" + hex(c.A, 2) + \"\\n\"\n + \" B \" + hex(c.B, 2) + \"\\n\"\n + \" X \" + hex(c.X, 4) + \"\\n\"\n + \" Y \" + hex(c.Y, 4) + \"\\n\"\n + \" U \" + hex(c.U, 4) + \"\\n\"\n ;\n}\n\nexport abstract class Base6809Platform extends BaseZ80Platform {\n\n newCPU(membus: MemoryBus) {\n var cpu = Object.create(CPU6809());\n cpu.init(membus.write, membus.read, 0);\n return cpu;\n }\n\n cpuStateToLongString(c: CpuState) {\n return cpuStateToLongString_6809(c);\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n // TODO: don't create new CPU\n return Object.create(CPU6809()).disasm(read(pc), read(pc + 1), read(pc + 2), read(pc + 3), read(pc + 4), pc);\n }\n getDefaultExtensions() { return [\".c\", \".lwasm\", \".xasm\"]; };\n //this.getOpcodeMetadata = function() { }\n getToolForFilename = getToolForFilename_6809;\n getDebugCategories() {\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6809(state.c);\n default: return super.getDebugInfo(category, state);\n }\n }\n}\n\n\n//TODO: how to get stack_end?\nexport function dumpStackToString(platform: Platform, mem: Uint8Array | number[], start: number, end: number, sp: number, jsrop: number, bigendian?: boolean): string {\n var s = \"\";\n var nraw = 0;\n //s = dumpRAM(mem.slice(start,start+end+1), start, end-start+1);\n function read(addr) {\n if (addr < mem.length) return mem[addr];\n else return platform.readAddress(addr);\n }\n while (sp < end) {\n sp++;\n // see if there's a JSR on the stack here\n // TODO: make work with roms and memory maps\n var addr = read(sp) + read(sp + 1) * 256;\n if (bigendian) { addr = ((addr & 0xff) << 8) | ((addr & 0xff00) >> 8) }\n var jsrofs = jsrop == 0x20 ? -2 : -3; // 6502 vs Z80\n var opcode = read(addr + jsrofs); // might be out of bounds\n if (opcode == jsrop) { // JSR\n s += \"\\n$\" + hex(sp) + \": \";\n s += hex(addr, 4) + \" \" + lookupSymbol(platform, addr, true);\n sp++;\n nraw = 0;\n } else {\n if (nraw == 0)\n s += \"\\n$\" + hex(sp) + \": \";\n s += hex(read(sp)) + \" \";\n if (++nraw == 8) nraw = 0;\n }\n }\n return s + \"\\n\";\n}\n\n// TODO: slow, funky, uses global\nexport function lookupSymbol(platform: Platform, addr: number, extra: boolean) {\n var start = addr;\n var addr2symbol = platform.debugSymbols && platform.debugSymbols.addr2symbol;\n while (addr2symbol && addr >= 0) {\n var sym = addr2symbol[addr];\n if (sym) { // return first symbol we find\n var sym = addr2symbol[addr];\n return extra ? (sym + \" + $\" + hex(start - addr)) : sym;\n }\n if (!extra) break;\n addr--;\n }\n return \"\";\n}\n\n/// new Machine platform adapters\n\nexport interface Machine extends Bus, Resettable, FrameBased, AcceptsROM, HasCPU, SavesState, SavesInputState {\n}\n\nexport function hasVideo(arg: any): arg is VideoSource {\n return typeof arg.connectVideo === 'function';\n}\nexport function hasAudio(arg: any): arg is SampledAudioSource {\n return typeof arg.connectAudio === 'function';\n}\nexport function hasKeyInput(arg: any): arg is AcceptsKeyInput {\n return typeof arg.setKeyInput === 'function';\n}\nexport function hasJoyInput(arg: any): arg is AcceptsJoyInput {\n return typeof arg.setJoyInput === 'function';\n}\nexport function hasPaddleInput(arg: any): arg is AcceptsPaddleInput {\n return typeof arg.setPaddleInput === 'function';\n}\nexport function isRaster(arg: any): arg is RasterFrameBased {\n return typeof arg.getRasterY === 'function';\n}\nexport function hasProbe(arg: any): arg is Probeable {\n return typeof arg.connectProbe == 'function';\n}\nexport function hasBIOS(arg: any): arg is AcceptsBIOS {\n return typeof arg.loadBIOS == 'function';\n}\nexport function hasSerialIO(arg: any): arg is HasSerialIO {\n return typeof arg.connectSerialIO === 'function';\n}\n\nexport abstract class BaseMachinePlatform extends BaseDebugPlatform implements Platform {\n machine: T;\n mainElement: HTMLElement;\n options: any; // URL options (?options=key%3Dvalue), if any\n timer: AnimationTimer;\n video: RasterVideo;\n audio: SampledAudio;\n poller: ControllerPoller;\n serialIOInterface: SerialIOInterface;\n serialVisualizer: SerialIOVisualizer;\n\n probeRecorder: ProbeRecorder;\n startProbing;\n stopProbing;\n // The probe's singleFrame flag saved while runToVsync() holds a frame open,\n // restored by pause() when the run stops (the run is timer-driven, so the\n // stop happens after runToVsync() has returned).\n probeSingleFrame: boolean = null;\n\n abstract newMachine(): T;\n abstract getToolForFilename(s: string): string;\n abstract getDefaultExtensions(): string[];\n abstract getPresets(): Preset[];\n\n constructor(mainElement: HTMLElement, options?: any) {\n super();\n this.mainElement = mainElement;\n this.options = options || {};\n }\n\n reset() {\n this.machine.reset();\n if (this.serialVisualizer != null) this.serialVisualizer.reset();\n }\n // The machine's CPU state is the core's own, so debugPCDelta corrects its PC\n // on the way out and restores it on the way in. The machine's cpu.getPC()\n // already names the opcode, so getPC() is left alone.\n loadState(s) {\n if (!this.debugPCDelta || !s.c) return this.machine.loadState(s);\n this.unfixPC(s.c);\n try { this.machine.loadState(s); } finally { this.fixPC(s.c); }\n }\n saveState() {\n const s = this.machine.saveState();\n if (this.debugPCDelta && s.c) this.fixPC(s.c);\n return s;\n }\n getSP() { return this.machine.cpu.getSP(); }\n getPC() { return this.machine.cpu.getPC(); }\n isStable() { return this.machine.cpu.isStable(); }\n getCPUState() { return this.fixPC(this.machine.cpu.saveState()); }\n loadControlsState(s) { this.machine.loadControlsState(s); }\n saveControlsState() { return this.machine.saveControlsState(); }\n\n async start() {\n this.machine = this.newMachine();\n const m = this.machine;\n // block on WASM loading\n if (m instanceof BaseWASMMachine) {\n await m.loadWASM();\n }\n var videoFrequency;\n if (hasVideo(m)) {\n var vp = m.getVideoParams();\n this.video = new RasterVideo(this.mainElement, vp.width, vp.height,\n {\n overscan: !!vp.overscan,\n rotate: vp.rotate | 0,\n aspect: vp.aspect\n });\n this.video.create();\n m.connectVideo(this.video.getFrameData());\n // TODO: support keyboard w/o video?\n if (hasKeyInput(m)) {\n this.video.setKeyboardEvents(m.setKeyInput.bind(m));\n this.poller = new ControllerPoller(m.setKeyInput.bind(m));\n }\n videoFrequency = vp.videoFrequency;\n }\n this.timer = new AnimationTimer(videoFrequency || 60, this.nextFrame.bind(this));\n if (hasAudio(m)) {\n var ap = m.getAudioParams();\n this.audio = new SampledAudio(ap.sampleRate);\n this.audio.start();\n m.connectAudio(this.audio);\n }\n if (hasPaddleInput(m)) {\n this.video.setupMouseEvents();\n }\n if (hasProbe(m)) {\n this.probeRecorder = new ProbeRecorder(m);\n this.startProbing = () => {\n m.connectProbe(this.probeRecorder);\n return this.probeRecorder;\n };\n this.stopProbing = () => {\n m.connectProbe(null);\n };\n }\n if (hasBIOS(m)) {\n this.loadBIOS = (title, data) => {\n m.loadBIOS(data, title);\n };\n }\n if (hasSerialIO(m)) {\n if (this.serialIOInterface == null) {\n this.serialVisualizer = new SerialIOVisualizer(this.mainElement, m);\n } else {\n m.connectSerialIO(this.serialIOInterface);\n }\n }\n }\n\n loadROM(title, data, origin?: number) {\n this.machine.loadROM(data, title, origin);\n this.reset();\n }\n\n loadBIOS: (title, data) => void; // only set if hasBIOS() is true\n\n acceptsPaddles() {\n return hasPaddleInput(this.machine);\n }\n\n setPaddles(x: number, y: number, buttons: boolean[]) {\n // pollControls() passes these on to the machine at the next frame\n this.video.paddle_x = x;\n this.video.paddle_y = y;\n buttons.forEach((b, i) => this.video.paddle_buttons[i] = b);\n }\n\n pollControls() {\n this.poller && this.poller.poll();\n if (hasPaddleInput(this.machine)) {\n this.machine.setPaddleInput(0, this.video.paddle_x);\n this.machine.setPaddleInput(1, this.video.paddle_y);\n if (this.machine.setPaddleButton && this.video.paddle_buttons != null) {\n this.machine.setPaddleButton(0, this.video.paddle_buttons[0]);\n this.machine.setPaddleButton(1, this.video.paddle_buttons[1]);\n this.machine.setPaddleButton(2, this.video.paddle_buttons[2]);\n }\n }\n // TODO: put into interface\n if (this.machine['pollControls']) {\n this.machine['pollControls']();\n }\n }\n\n advance(novideo: boolean) {\n let trap = this.getDebugCallback();\n try {\n var steps = this.machine.advanceFrame(trap);\n return steps;\n } finally {\n // in case EmuHalt is thrown...\n if (!novideo && this.video) {\n this.video.updateFrame();\n this.updateVideoDebugger();\n }\n if (!novideo && this.serialVisualizer) {\n this.serialVisualizer.refresh();\n }\n }\n }\n\n updateVideoDebugger() {\n if (!this.isRunning() && isRaster(this.machine) && this.machine.getRasterCanvasPosition) {\n const { x, y } = this.machine.getRasterCanvasPosition();\n if (x >= 0 || y >= 0) {\n const ctx = this.video?.getContext();\n if (ctx) {\n drawCrosshair(ctx, x, y, 1);\n }\n }\n }\n }\n\n advanceFrameClock(trap, step) {\n if (!(step > 0)) return;\n if (this.machine instanceof BaseWASMMachine) {\n return this.machine.advanceFrameClock(trap, step);\n } else {\n return this.machine.advanceFrame(() => {\n return --step <= 0;\n });\n }\n }\n\n isRunning() {\n return this.timer && this.timer.isRunning();\n }\n\n resume() {\n this.timer.start();\n this.audio && this.audio.start();\n this.poller && this.poller.start();\n }\n\n pause() {\n this.timer.stop();\n this.audio && this.audio.stop();\n this.poller && this.poller.stop();\n // runToVsync() holds a frame open for the probe; put the probe's own\n // setting back now that the run has stopped.\n if (this.probeRecorder && this.probeSingleFrame != null) {\n this.probeRecorder.singleFrame = this.probeSingleFrame;\n this.probeSingleFrame = null;\n }\n }\n\n // so probe views stick around TODO: must be a better way?\n runToVsync() {\n // A single-frame step stops on the next frame boundary -- exactly where\n // ProbeRecorder.logNewFrame() clears a singleFrame buffer -- which would\n // leave the probe views blank. Clear here and hold the frame open until\n // the run stops instead. pause() restores the saved setting.\n if (this.probeRecorder) {\n this.probeSingleFrame = this.probeRecorder.singleFrame;\n this.probeRecorder.reset();\n this.probeRecorder.singleFrame = false;\n }\n this.restartDebugging();\n var flag = false;\n this.runEval((): boolean => {\n if (this.getRasterScanline() > 0) flag = true;\n else return flag;\n });\n }\n\n // TODO: reset target clock counter\n getRasterScanline() {\n return isRaster(this.machine) && this.machine.getRasterY ? this.machine.getRasterY() : -1;\n }\n getRasterLineClock() {\n return isRaster(this.machine) && this.machine.getRasterX ? this.machine.getRasterX() : -1;\n }\n\n readAddress(addr: number): number {\n return this.machine.read(addr);\n }\n\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n }\n getDebugInfo(category: string, state: EmuState): string {\n return isDebuggable(this.machine) && this.machine.getDebugInfo(category, state);\n }\n}\n\n// TODO: move debug info into CPU?\n\nexport abstract class Base6502MachinePlatform extends BaseMachinePlatform {\n\n getOpcodeMetadata = getOpcodeMetadata_6502;\n getToolForFilename(fn) { return getToolForFilename_6502(fn); }\n getDefaultExtensions() { return [\".c\", \".cpp\", \".o64\", \".acme\", \".xa\", \".ca65\", \".dasm\", \".ecs\", \".wiz\"]; }\n\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassemble6502(pc, read(pc), read(pc + 1), read(pc + 2));\n }\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n else\n return ['CPU', 'ZPRAM', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6502(state.c);\n case 'ZPRAM': return dumpRAM(state.b || state.ram, 0x0, 0x100);\n case 'Stack': return dumpStackToString(this, state.b || state.ram, 0x100, 0x1ff, 0x100 + state.c.SP, 0x20);\n default: return isDebuggable(this.machine) && this.machine.getDebugInfo(category, state);\n }\n }\n}\n\nexport abstract class BaseZ80MachinePlatform extends BaseMachinePlatform {\n\n //getOpcodeMetadata = getOpcodeMetadata_z80;\n getToolForFilename = getToolForFilename_z80;\n getDefaultExtensions() { return [\".c\", \".ns\", \".s\", \".scc\", \".sgb\", \".z\", \".wiz\"]; }\n\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n else\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_Z80(state.c);\n case 'Stack': {\n var sp = (state.c.SP - 1) & 0xffff;\n var start = sp & 0xff00;\n var end = start + 0xff;\n if (sp == 0) sp = 0x10000;\n return dumpStackToString(this, [], start, end, sp, 0xcd);\n }\n default: return isDebuggable(this.machine) && this.machine.getDebugInfo(category, state);\n }\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassembleZ80(pc, read(pc), read(pc + 1), read(pc + 2), read(pc + 3));\n }\n\n}\n\nexport abstract class Base6809MachinePlatform extends BaseMachinePlatform {\n\n getToolForFilename = getToolForFilename_6809;\n getDefaultExtensions() { return [\".c\", \".lwasm\", \".xasm\"]; }\n\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n else\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6809(state.c);\n case 'Stack': {\n var sp = (state.c.SP - 1) & 0xffff;\n var start = sp & 0xff00;\n var end = start + 0xff;\n if (sp == 0) sp = 0x10000;\n return dumpStackToString(this, [], start, end, sp, 0x17, true);\n }\n default: return super.getDebugInfo(category, state);\n }\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n // TODO: don't create new CPU\n return Object.create(CPU6809()).disasm(read(pc), read(pc + 1), read(pc + 2), read(pc + 3), read(pc + 4), pc);\n }\n}\n\n///\n\nclass SerialIOVisualizer {\n\n textarea: HTMLTextAreaElement;\n //vlist: VirtualTextScroller;\n device: HasSerialIO;\n lastOutCount = -1;\n lastInCount = -1;\n\n constructor(parentElement: HTMLElement, device: HasSerialIO) {\n this.device = device;\n this.textarea = document.createElement(\"textarea\");\n this.textarea.classList.add('transcript');\n this.textarea.classList.add('transcript-style-2');\n this.textarea.style.display = 'none';\n parentElement.appendChild(this.textarea);\n /*\n this.vlist = new VirtualTextScroller(parentElement);\n this.vlist.create(parentElement, 1024, this.getMemoryLineAt.bind(this));\n this.vlist.maindiv.style.height = '8em';\n this.vlist.maindiv.style.overflow = 'clip';\n */\n }\n reset() {\n this.lastOutCount = 0;\n this.lastInCount = 0;\n this.textarea.style.display = 'none';\n }\n refresh() {\n var lastop = '';\n if (this.device.serialOut.length != this.lastOutCount) {\n var s = '';\n for (var ev of this.device.serialOut) {\n if (lastop != ev.op) {\n if (s != '') s += '\\n';\n if (ev.op === 'read') s += '<< ';\n else if (ev.op === 'write') s += '>> ';\n lastop = ev.op;\n }\n if (ev.value == 10) { s += '\\u21b5'; lastop = ''; }\n else { s += byteToASCII(ev.value); }\n }\n this.textarea.value = s;\n this.lastOutCount = this.device.serialOut.length;\n this.textarea.style.display = 'block';\n }\n }\n}\n"], + "mappings": "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EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,CAChE,EAEIE,EAAkB,CAClB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAA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AAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,EACzhCC,GAAQ,IAAI,WAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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E,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAGjCC,EAAU,CACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAGjCC,EAAU,CACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,E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K,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAA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,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEIC,GAAc,CAChB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEIC,GAAc,CAChB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEIC,GAAa,CACf,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,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,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/vB,EACA,YAAa,CACX,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/vB,EACA,YAAa,CACX,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/vB,EACA,WAAY,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAA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", + "names": ["OPS_6502", "disassemble6502", "pc", "b0", "b1", "b2", "op", "s", "am", "isaddr", "offset", "hex", "FastZ80", "coreParameter", "core", "a", "b", "c", "d", "e", "h", "l", "a_prime", "b_prime", "c_prime", "d_prime", "e_prime", "h_prime", "l_prime", "ix", "iy", "i", "r", "sp", "pc", "flags", "flags_prime", "imode", "iff1", "iff2", "halted", "do_delayed_di", "do_delayed_ei", "cycle_counter", "getState", "get_flags_register", "get_flags_prime", "setState", "state", "set_flags_register", "set_flags_prime", "reset", "run_instruction", "doing_delayed_di", "doing_delayed_ei", "opcode", "decode_instruction", "retval", "interrupt", "non_maskable", "data", "push_word", "vector_address", "get_operand", "operand", "op_array", "do_add", "do_adc", "do_sub", "do_sbc", "do_and", "do_xor", "do_or", "do_cp", "func", "instructions", "cycle_counts", "get_signed_offset_byte", "value", "update_xy_flags", "result", "get_parity", "parity_bits", "pop_word", "do_conditional_absolute_jump", "condition", "do_conditional_relative_jump", "offset", "do_conditional_call", "do_conditional_return", "do_reset", "address", "temp", "do_inc", "do_dec", "do_hl_add", "hl", "do_hl_adc", "do_hl_sbc", "do_in", "port", "do_neg", "do_ldi", "read_value", "do_cpi", "temp_carry", "do_ini", "do_outi", "do_ldd", "do_cpd", "do_ind", "do_outd", "do_rlc", "do_rrc", "do_rl", "do_rr", "do_sla", "do_sra", "do_sll", "do_srl", "do_ix_add", "temp_s", "temp_z", "temp_p", "bit_number", "reg_code", "cycle_counts_cb", "dd_instructions", "cycle_counts_dd", "ed_instructions", "cycle_counts_ed", "hl_value", "temp1", "temp2", "ddcb_functions", "Z80", "v", "bus", "s", "MasterAudio", "resumeAudioContext", "AY38910_Audio", "master", "i", "val", "SN76489_Audio", "newPOKEYAudio", "count", "audio", "pokey", "POKEYDeviceChannel", "combinePolys", "a", "b", "arr", "n", "divideBy", "NOTPOLY5", "POLY4", "PURE", "VOL_ONLY", "VOLUME_MASK", "POLY9", "CH1_179", "CH3_179", "CH1_CH2", "CH3_CH4", "CH1_FILTER", "CH2_FILTER", "CLOCK_15", "DIV_64", "DIV_15", "POLY4_SIZE", "POLY5_SIZE", "POLY9_SIZE", "POLY17_SIZE", "CHAN1", "CHAN2", "CHAN3", "CHAN4", "CHIP1", "CHIP2", "CHIP3", "CHIP4", "SAMPLE", "FREQ_17_EXACT", "FREQ_17_APPROX", "bit1", "bit2", "bit4", "bit5", "bit9", "bit15", "bit31", "bit17", "bit17_5", "bit5_4", "wavetones", "div2", "div6", "div31", "div93", "bit15_4", "bit5_2", "bit5_6", "tiawavetones", "regs", "counters", "deltas", "volume", "audc", "waveforms", "buffer", "sampleRate", "clock", "baseDelta", "dirty", "length", "rate", "updateValues", "addr", "ctrl", "base", "div", "j", "k", "value", "s", "sample", "d", "v", "wav", "cnt", "on", "WorkerSoundChannel", "worker", "output", "pending", "pendingLength", "e", "buf", "l", "audioStreamFactory", "AUDIO_CHUNK_SAMPLES", "audioUnlockEvents", "pendingUnlocks", "unlockListeners", "audioContexts", "audioStateListeners", "notifyAudioState", "listener", "markAudioUnlocked", "ctx", "trackAudioContext", "isAudioBlocked", "onAudioStateChange", "resumeTrackedContext", "resumed", "resumeAudioContext", "onGesture", "ev", "SampleAudio", "clockfreq", "self", "sfrac", "sinc", "accum", "buffer", "bufpos", "bufferlist", "ifill", "written", "read", "skippedBuffers", "lastSkipLog", "underruns", "fillHist", "collectStats", "baseSinc", "trim", "fillAvg", "lastTrimAdj", "FILL_TARGET", "FILL_ALPHA", "TRIM_GAIN", "MAX_TRIM", "TRIM_INTERVAL_MS", "MAXBUFFERS", "targetDepth", "mix", "ape", "lbuf", "m", "buf", "i", "clearBuffers", "createContext", "AudioContext", "audioStreamFactory", "arrbuf", "value", "out", "now", "trimNow", "want", "count", "total", "weighted", "maxFill", "fill", "on", "SampledAudio", "sampleRate", "TssChannelAdapter", "chans", "oversample", "c", "sink", "l", "bufs", "ch", "compactProbeLines", "byClk", "k", "ProbeRecorder", "m", "buflen", "newbuflen", "a", "src", "clocks", "address", "SP", "type", "value", "op", "count", "i", "NullProbe", "src", "BasicHeadlessMachine", "key", "code", "flags", "probe", "probing", "data", "title", "origin", "state", "c", "membus", "a", "val", "v", "iobus", "BasicMachine", "audio", "pixels", "BasicScanlineMachine", "trap", "endLineClock", "steps", "sl", "Z80_OPS", "Z80_OPS_ED", "Z80_OPS_CB", "disassembleZ80", "pc", "b0", "b1", "b2", "b3", "op", "n", "am", "bytes", "isaddr", "iscall", "ireg", "hex", "offset", "CPU6809", "ticks", "rA", "rB", "rX", "rY", "rU", "rS", "PC", "CC", "DP", "F_CARRY", "F_OVERFLOW", "F_ZERO", "F_NEGATIVE", "F_IRQMASK", "F_HALFCARRY", "F_FIRQMASK", "F_ENTIRE", "vecRESET", "vecNMI", "vecSWI", "vecIRQ", "vecFIRQ", "vecSWI2", "vecSWI3", "IRQs", "byteTo", "byteAt", "cycles", "cycles2", "flagsNZ", "setV8", "a", "b", "r", "setV16", "getD", "setD", "v", "PUSHB", "PUSHW", "PUSHBU", "PUSHWU", "PULLB", "PULLW", "PULLBU", "PULLWU", "PSHS", "ucTemp", "i", "PSHU", "PULS", "PULU", "getPBR", "ucPostByte", "setPBR", "TFREXG", "bExchange", "signed", "x", "signed16", "fetch", "fetch16", "v1", "v2", "ReadWord", "addr", "WriteWord", "PostByte", "pb", "preg", "xchg", "sTemp", "sByte", "flagsNZ16", "word", "oINC", "oDEC", "oSUB", "temp", "oSUB16", "oADD", "oADD16", "oADC", "oSBC", "oCMP", "oCMP16", "oNEG", "oLSR", "oASR", "oASL", "oROL", "oldc", "oROR", "oEOR", "oOR", "oAND", "oCOM", "dpadd", "step", "oldT", "oldPC", "opcode", "cf", "nhi", "nlo", "reset", "ds", "ds11", "ds10", "disasm", "c", "d", "pc", "toHexN", "n", "s", "toHex2", "toHex4", "rx", "ro", "j", "sx", "bytes", "mode", "mnemo", "ixr", "disp", "ind", "mod", "ofs8", "ofs16", "Ts", "Tt", "t", "bt", "ba", "tck", "reg", "value", "f", "fx", "_MOS6502", "self", "RDY", "T", "instruction", "aBus", "bus", "boo", "I", "fetchOpcodeAndDecodeInstruction", "PC", "RESET_VECTOR", "SP", "A", "X", "Y", "N", "V", "D", "Z", "C", "opcode", "data", "AD", "BA", "BALCrossed", "IA", "branchOffset", "branchOffsetCrossAdjust", "NMI_VECTOR", "IRQ_VECTOR", "rX", "rY", "bN", "bV", "bZ", "bC", "instructions", "fetchNextOpcode", "fetchOpcodeAndDiscard", "fetchBranchOffset", "fetchADL", "fetchADH", "fetchADLFromBA", "fetchADHFromBA", "fetchBAL", "fetchBAH", "fetchBALFromIA", "fetchBAHFromIA", "addXtoBAL", "low", "addYtoBAL", "add1toBAL", "add1toBAHifBALCrossed", "fetchIAL", "fetchIAH", "add1toIAL", "fetchDataFromImmediate", "fetchDataFromAD", "fetchDataFromBA", "writeDataToAD", "writeDataToBA", "addBranchOffsetToPCL", "oldLow", "newLow", "adjustPCHForBranchOffsetCross", "setZ", "val", "setN", "setV", "setC", "popFromStack", "peekFromStack", "pushToStack", "getStatusBits", "setStatusBits", "illegalOpcode", "op", "haltOpcode", "addr", "EmuHalt", "hex", "implied", "operation", "immediateRead", "zeroPageRead", "absoluteRead", "indirectXRead", "absoluteIndexedRead", "index", "addIndex", "zeroPageIndexedRead", "indirectYRead", "zeroPageWrite", "absoluteWrite", "indirectXWrite", "absoluteIndexedWrite", "zeroPageIndexedWrite", "indirectYWrite", "zeroPageReadModifyWrite", "absoluteReadModifyWrite", "zeroPageIndexedReadModifyWrite", "absoluteIndexedReadModifyWrite", "indirectXReadModifyWrite", "indirectYReadModifyWrite", "opcodes", "BRK", "ORA", "uKIL", "uSLO", "uNOP", "ASL", "PHP", "ASL_ACC", "uANC", "Bxx", "CLC", "JSR", "AND", "uRLA", "BIT", "ROL", "PLP", "ROL_ACC", "SEC", "RTI", "EOR", "uSRE", "LSR", "PHA", "LSR_ACC", "uASR", "JMP_ABS", "CLI", "RTS", "ADC", "uRRA", "ROR", "PLA", "ROR_ACC", "uARR", "JMP_IND", "SEI", "STA", "uSAX", "STY", "STX", "DEY", "TXA", "uANE", "uSHA", "TYA", "TXS", "uSHS", "uSHY", "uSHX", "LDY", "LDA", "LDX", "uLAX", "TAY", "TAX", "uLXA", "CLV", "TSX", "uLAS", "CPY", "CMP", "uDCP", "DEC", "INY", "DEX", "uSBX", "CLD", "CPX", "SBC", "uISB", "INC", "INX", "NOP", "SED", "newC", "addressing", "operand", "AL", "AH", "add", "par", "sub", "oldC", "comp", "newX", "IRQ", "NMI", "reg", "cond", "branchTaken", "state", "mes", "text", "cycletime", "extracycles", "insnlengths", "validinsns", "address", "MOS6502", "_MOS6502", "bus", "itype", "s", "op", "BaseWASMMachine", "prefix", "self", "wmod", "wasmResponse", "wasmBinary", "wasmCompiled", "wasmResult", "biosBinary", "biosResponse", "statesize", "ctrlstatesize", "cpustatesize", "sampbufsize", "rom", "EmuHalt", "srcArray", "address", "value", "pixels", "pixbuf", "state", "audio", "n", "i", "trap", "cpf", "NullProbe", "datalen", "dataaddr", "databuf", "probe", "DebugSymbols", "symbolmap", "debuginfo", "symbolsizes", "invertMap", "a", "b", "isDebuggable", "arg", "BreakpointList", "result", "id", "BasePlatform", "recorder", "sym", "inspectSymbol", "_a", "o", "path", "data", "BaseDebugPlatform", "c", "cond", "callback", "debugCond", "novideo", "steps", "targetClock", "reason", "evalfunc", "cpuState", "pc", "targets", "useEPC", "epc", "SP0", "p", "d", "readfn", "nextPC", "clock", "prevState", "prevClock", "clock0", "frame0", "platform", "symmap", "addr2sym", "addr", "hex", "b2", "w", "Base6502Platform", "getToolForFilename_6502", "membus", "cpu", "_MOS6502", "opcode", "offset", "getOpcodeMetadata_6502", "read", "disassemble6502", "category", "state", "cpuStateToLongString_6502", "dumpRAM", "dumpStackToString", "decodeFlags", "s", "OPMETA_6502", "address", "cpuStateToLongString_Z80", "flags", "printFlags", "cpuStateToLongString_SM83", "af", "BaseZ80Platform", "getToolForFilename_z80", "iobus", "Z80", "cycles", "n", "cyc", "sp", "start", "end", "disassembleZ80", "cpuStateToLongString_6809", "Base6809Platform", "getToolForFilename_6809", "CPU6809", "mem", "jsrop", "bigendian", "nraw", "jsrofs", "lookupSymbol", "extra", "addr2symbol", "hasVideo", "hasAudio", "hasKeyInput", "hasPaddleInput", "arg", "isRaster", "hasProbe", "hasBIOS", "hasSerialIO", "BaseMachinePlatform", "BaseDebugPlatform", "mainElement", "options", "s", "m", "BaseWASMMachine", "videoFrequency", "hasVideo", "vp", "RasterVideo", "hasKeyInput", "ControllerPoller", "AnimationTimer", "hasAudio", "ap", "SampledAudio", "ProbeRecorder", "title", "data", "SerialIOVisualizer", "origin", "x", "y", "buttons", "b", "i", "novideo", "trap", "steps", "_a", "ctx", "drawCrosshair", "step", "flag", "addr", "isDebuggable", "category", "state", "Base6502MachinePlatform", "getOpcodeMetadata_6502", "fn", "getToolForFilename_6502", "pc", "read", "disassemble6502", "cpuStateToLongString_6502", "dumpRAM", "dumpStackToString", "BaseZ80MachinePlatform", "getToolForFilename_z80", "cpuStateToLongString_Z80", "sp", "start", "end", "disassembleZ80", "Base6809MachinePlatform", "getToolForFilename_6809", "cpuStateToLongString_6809", "CPU6809", "parentElement", "device", "lastop", "ev", "byteToASCII"] +} diff --git a/gen/chunk-FFJHITEL.js b/gen/chunk-FFJHITEL.js deleted file mode 100644 index 05967fd3..00000000 --- a/gen/chunk-FFJHITEL.js +++ /dev/null @@ -1,30 +0,0 @@ -import{a as it,b as ft,c as st}from"./chunk-UXRCACYH.js";import{$ as yt,F as Dt,U as Bt,V as Nt,Y as Ye,aa as at,fa as It,g as $,j as Rt,s as Ve}from"./chunk-VZWSP3EG.js";var _n=[{mn:"BRK",am:"",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:"SI"},{mn:"ORA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHP",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"ORA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BPL",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ORA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"ORA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SLO",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"JSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:"S"},{mn:"AND",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BIT",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PLP",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SCZIDVN"},{mn:"AND",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"BIT",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BMI",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"AND",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"SEC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"AND",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RLA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTI",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"SCZIDVN"},{mn:"EOR",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHA",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"EOR",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ASR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"JMP",am:"AAAA",nb:3,il:0,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"EOR",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BVC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"EOR",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"EOR",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SRE",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTS",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"S"},{mn:"ADC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"PLA",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SAZN"},{mn:"ADC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ARR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"JMP",am:"(AAAA)",nb:3,il:0,c1:5,c2:0,nw:0,br:1,mod:""},{mn:"ADC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BVS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ADC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RRA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SEI",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"I"},{mn:"ADC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RRA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ADC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"ROR",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RRA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"STA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:1,br:0,mod:""},{mn:"DEY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"TXA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ANE",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"BCC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"STA",am:"(aa),y",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SHA",am:"(aa),y",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:""},{mn:"STY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"STX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:""},{mn:"SAX",am:"aa,y",nb:3,il:1,c1:4,c2:0,nw:1,br:1,mod:""},{mn:"TYA",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"STA",am:"AAAA,y",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"TXS",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"S"},{mn:"SHS",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:"S"},{mn:"SHY",am:"AAAA,x",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"STA",am:"AAAA,x",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHX",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"SHA",am:"AAAA,y",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:""},{mn:"LDY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"(aa,x)",nb:2,il:1,c1:6,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"TAY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"TAX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LXA",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"BCS",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"LDA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"LAX",am:"(aa),y",nb:2,il:1,c1:5,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"LDY",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"aa,y",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"aa,y",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:"AXZN"},{mn:"CLV",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"V"},{mn:"LDA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"TSX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"LAS",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"SAXZN"},{mn:"LDY",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"YZN"},{mn:"LDA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"LDX",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"XZN"},{mn:"LAX",am:"AAAA,y",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:"AXZN"},{mn:"CPY",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPY",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"INY",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"YZN"},{mn:"CMP",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBX",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"XCZN"},{mn:"CPY",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"CMP",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"BNE",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"CMP",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"CZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"DCP",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CLD",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"CMP",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"DCP",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"CMP",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"CZN"},{mn:"DEC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"DCP",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"CPX",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"CPX",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"INX",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"XZN"},{mn:"SBC",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"CPX",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"CZN"},{mn:"SBC",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"BEQ",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"SBC",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"ISB",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"SED",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"D"},{mn:"SBC",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"ISB",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"SBC",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"ACZVN"},{mn:"INC",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"ZN"},{mn:"ISB",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZVN"}];function ct(d,t,n,i){var x=_n[t];if(x==null)return{line:"???",nbytes:1,isaddr:!1};var o=x.mn,b=x.am,u=!1;if(b=="branch"){var f=n<128?d+2+n:d+2-(256-n);f&=65535,b="$"+$(f,4),u=!0}else b=b.replace("aa","$"+$(n,2)),b=b.replace("AAAA","$"+$(n+(i<<8),4)),b.indexOf("#")<0&&b.indexOf("$")>=0&&(u=!0);return{line:x.mn+" "+b,nbytes:x.nb,isaddr:u,iscall:x.mn=="JSR"}}function kn(d){let t=d;if(!t||typeof t.mem_read!="function"||typeof t.mem_write!="function"||typeof t.io_read!="function"||typeof t.io_write!="function")throw"Z80: Core object is missing required functions.";let n=0,i=0,x=0,o=0,b=0,u=0,f=0,W=0,N=0,g=0,B=0,_=0,a0=0,_0=0,h=0,R=0,t0=0,H=0,K=0,s=0,c={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},u0={S:0,Z:0,Y:0,H:0,X:0,P:0,N:0,C:0},N0=0,T=0,p0=0,p=!1,C=!1,V0=!1,M=0;function X(){return{PC:s,SP:K,IX:h,IY:R,AF:(n<<8)+U0(),BC:(i<<8)+x,DE:(o<<8)+b,HL:(u<<8)+f,AF_:(W<<8)+Y0(),BC_:(N<<8)+g,DE_:(B<<8)+_,HL_:(a0<<8)+_0,IR:(t0<<8)+H,im:N0,iff1:T,iff2:p0,halted:p,do_delayed_di:C,do_delayed_ei:V0,cycle_counter:M}}function m0(e){s=e.PC,K=e.SP,h=e.IX,R=e.IY,n=e.AF>>8&255,F0(e.AF),i=e.BC>>8&255,x=e.BC&255,o=e.DE>>8&255,b=e.DE&255,u=e.HL>>8&255,f=e.HL&255,W=e.AF_>>8&255,D0(e.AF_),N=e.BC_>>8&255,g=e.BC_&255,B=e.DE_>>8&255,_=e.DE_&255,a0=e.HL_>>8&255,_0=e.HL_&255,t0=e.IR>>8&255,H=e.IR&255,N0=e.im,T=e.iff1,p0=e.iff2,p=e.halted,C=e.do_delayed_di,V0=e.do_delayed_ei,M=e.cycle_counter}let U=function(){K=0,s=0,n=0,H=0,F0(0),N0=0,T=0,p0=0,p=!1,C=!1,V0=!1,M=0},y=function(){if(p)return 1;var e=!1,a=!1;C?(C=!1,e=!0):V0&&(V0=!1,a=!0),H=H&128|(H&127)+1&127;var P=t.mem_read(s);x0(P),s=s+1&65535,e?(T=0,p0=0):a&&(T=1,p0=1);var L0=M;return M=0,L0},v0=function(e,a){if(e)return H=H&128|(H&127)+1&127,p=!1,p0=T,T=0,E0(s),s=102,M+=11,!0;if(T){if(H=H&128|(H&127)+1&127,p=!1,T=0,p0=0,N0===0)s=s-1&65535,x0(a),s=s+1&65535,M+=2;else if(N0===1)E0(s),s=56,M+=13;else if(N0===2){E0(s);var P=t0<<8|a;s=t.mem_read(P)|t.mem_read(P+1&65535)<<8,M+=19}return!0}},x0=function(e){var a=function(O0){return(O0&7)===0?i:(O0&7)===1?x:(O0&7)===2?o:(O0&7)===3?b:(O0&7)===4?u:(O0&7)===5?f:(O0&7)===6?t.mem_read(f|u<<8):n};if(e===118)p=!0;else if(e>=64&&e<128){var P=a(e);(e&56)>>>3?(e&56)>>>3===1?x=P:(e&56)>>>3===2?o=P:(e&56)>>>3===3?b=P:(e&56)>>>3===4?u=P:(e&56)>>>3===5?f=P:(e&56)>>>3===6?t.mem_write(f|u<<8,P):(e&56)>>>3===7&&(n=P):i=P}else if(e>=128&&e<192){var P=a(e),L0=[c0,i0,E,k,s0,e0,Z,F];L0[(e&56)>>>3](P)}else{var $0=v[e];$0()}M+=l[e]},I=function(e){return e&=255,e&128&&(e=-((255&~e)+1)),e},U0=function(){return c.S<<7|c.Z<<6|c.Y<<5|c.H<<4|c.X<<3|c.P<<2|c.N<<1|c.C},Y0=function(){return u0.S<<7|u0.Z<<6|u0.Y<<5|u0.H<<4|u0.X<<3|u0.P<<2|u0.N<<1|u0.C},F0=function(e){c.S=(e&128)>>>7,c.Z=(e&64)>>>6,c.Y=(e&32)>>>5,c.H=(e&16)>>>4,c.X=(e&8)>>>3,c.P=(e&4)>>>2,c.N=(e&2)>>>1,c.C=e&1},D0=function(e){u0.S=(e&128)>>>7,u0.Z=(e&64)>>>6,u0.Y=(e&32)>>>5,u0.H=(e&16)>>>4,u0.X=(e&8)>>>3,u0.P=(e&4)>>>2,u0.N=(e&2)>>>1,u0.C=e&1},Q=function(e){c.Y=(e&32)>>>5,c.X=(e&8)>>>3},b0=function(e){var a=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];return a[e]},E0=function(e){K=K-1&65535,t.mem_write(K,(e&65280)>>>8),K=K-1&65535,t.mem_write(K,e&255)},d0=function(){var e=t.mem_read(K)&255;return K=K+1&65535,e|=t.mem_read(K)<<8,K=K+1&65535,e},y0=function(e){e?(s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},W0=function(e){if(e){M+=5;var a=I(t.mem_read(s+1&65535));s=s+a+1&65535}else s=s+1&65535},Z0=function(e){e?(M+=7,E0(s+3&65535),s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535):s=s+2&65535},T0=function(e){e&&(M+=6,s=d0()-1&65535)},k0=function(e){E0(s+1&65535),s=e-1&65535},c0=function(e){var a=n+e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,Q(n)},i0=function(e){var a=n+e+c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)+(n&15)+c.C&16?1:0,c.P=(n&128)===(e&128)&&(n&128)!==(a&128)?1:0,c.N=0,c.C=a&256?1:0,n=a&255,Q(n)},E=function(e){var a=n-e;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,Q(n)},k=function(e){var a=n-e-c.C;c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(n&15)-(e&15)-c.C&16?1:0,c.P=(n&128)!==(e&128)&&(n&128)!==(a&128)?1:0,c.N=1,c.C=a&256?1:0,n=a&255,Q(n)},F=function(e){var a=n;E(e),n=a,Q(e)},s0=function(e){n&=e&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=1,c.P=b0(n),c.N=0,c.C=0,Q(n)},Z=function(e){n=(e|n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=b0(n),c.N=0,c.C=0,Q(n)},e0=function(e){n=(e^n)&255,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=b0(n),c.N=0,c.C=0,Q(n)},L=function(e){var a=e+1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===15?1:0,c.P=e===127?1:0,c.N=0,a&=255,Q(a),a},O=function(e){var a=e-1;return c.S=a&128?1:0,c.Z=a&255?0:1,c.H=(e&15)===0?1:0,c.P=e===128?1:0,c.N=1,a&=255,Q(a),a},w0=function(e){var a=f|u<<8,P=a+e;c.N=0,c.C=P&65536?1:0,c.H=(a&4095)+(e&4095)&4096?1:0,f=P&255,u=(P&65280)>>>8,Q(u)},Y=function(e){e+=c.C;var a=f|u<<8,P=a+e;c.S=P&32768?1:0,c.Z=P&65535?0:1,c.H=(a&4095)+(e&4095)&4096?1:0,c.P=(a&32768)===(e&32768)&&(P&32768)!==(a&32768)?1:0,c.N=0,c.C=P&65536?1:0,f=P&255,u=P>>>8&255,Q(u)},n0=function(e){e+=c.C;var a=f|u<<8,P=a-e;c.S=P&32768?1:0,c.Z=P&65535?0:1,c.H=(a&4095)-(e&4095)&4096?1:0,c.P=(a&32768)!==(e&32768)&&(P&32768)!==(a&32768)?1:0,c.N=1,c.C=P&65536?1:0,f=P&255,u=P>>>8&255,Q(u)},S0=function(e){var a=t.io_read(e);return c.S=a&128?1:0,c.Z=a?0:1,c.H=0,c.P=b0(a)?1:0,c.N=0,Q(a),a},J=function(){n!==128&&(n=I(n),n=-n&255),c.S=n&128?1:0,c.Z=n?0:1,c.H=(-n&15)>0?1:0,c.P=n===128?1:0,c.N=1,c.C=n?1:0,Q(n)},l0=function(){var e=t.mem_read(f|u<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)+1;b=a&255,o=(a&65280)>>>8,a=(f|u<<8)+1,f=a&255,u=(a&65280)>>>8,a=(x|i<<8)-1,x=a&255,i=(a&65280)>>>8,c.H=0,c.P=x||i?1:0,c.N=0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},I0=function(){var e=c.C,a=t.mem_read(f|u<<8);F(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var P=(f|u<<8)+1;f=P&255,u=(P&65280)>>>8,P=(x|i<<8)-1,x=P&255,i=(P&65280)>>>8,c.P=P?1:0},z=function(){i=O(i),t.mem_write(f|u<<8,t.io_read(i<<8|x));var e=(f|u<<8)+1;f=e&255,u=(e&65280)>>>8,c.N=1},H0=function(){t.io_write(i<<8|x,t.mem_read(f|u<<8));var e=(f|u<<8)+1;f=e&255,u=(e&65280)>>>8,i=O(i),c.N=1},r0=function(){c.N=0,c.H=0;var e=t.mem_read(f|u<<8);t.mem_write(b|o<<8,e);var a=(b|o<<8)-1;b=a&255,o=(a&65280)>>>8,a=(f|u<<8)-1,f=a&255,u=(a&65280)>>>8,a=(x|i<<8)-1,x=a&255,i=(a&65280)>>>8,c.P=x||i?1:0,c.Y=(n+e&2)>>>1,c.X=(n+e&8)>>>3},o0=function(){var e=c.C,a=t.mem_read(f|u<<8);F(a),c.C=e,c.Y=(n-a-c.H&2)>>>1,c.X=(n-a-c.H&8)>>>3;var P=(f|u<<8)-1;f=P&255,u=(P&65280)>>>8,P=(x|i<<8)-1,x=P&255,i=(P&65280)>>>8,c.P=P?1:0},R0=function(){i=O(i),t.mem_write(f|u<<8,t.io_read(i<<8|x));var e=(f|u<<8)-1;f=e&255,u=(e&65280)>>>8,c.N=1},B0=function(){t.io_write(i<<8|x,t.mem_read(f|u<<8));var e=(f|u<<8)-1;f=e&255,u=(e&65280)>>>8,i=O(i),c.N=1},X0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=(e<<1|c.C)&255,c.Z=e?0:1,c.P=b0(e),c.S=e&128?1:0,Q(e),e},f0=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|c.C<<7,c.Z=e&255?0:1,c.P=b0(e),c.S=e&128?1:0,Q(e),e&255},h0=function(e){c.N=0,c.H=0;var a=c.C;return c.C=(e&128)>>>7,e=(e<<1|a)&255,c.Z=e?0:1,c.P=b0(e),c.S=e&128?1:0,Q(e),e},A0=function(e){c.N=0,c.H=0;var a=c.C;return c.C=e&1,e=e>>>1&127|a<<7,c.Z=e?0:1,c.P=b0(e),c.S=e&128?1:0,Q(e),e},z0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255,c.Z=e?0:1,c.P=b0(e),c.S=e&128?1:0,Q(e),e},V=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127|e&128,c.Z=e?0:1,c.P=b0(e),c.S=e&128?1:0,Q(e),e},q0=function(e){return c.N=0,c.H=0,c.C=(e&128)>>>7,e=e<<1&255|1,c.Z=e?0:1,c.P=b0(e),c.S=e&128?1:0,Q(e),e},j0=function(e){return c.N=0,c.H=0,c.C=e&1,e=e>>>1&127,c.Z=e?0:1,c.P=b0(e),c.S=0,Q(e),e},G0=function(e){c.N=0;var a=h+e;c.C=a&65536?1:0,c.H=(h&4095)+(e&4095)&4096?1:0,Q((a&65280)>>>8),h=a&65535},v=[];v[0]=function(){},v[1]=function(){s=s+1&65535,x=t.mem_read(s),s=s+1&65535,i=t.mem_read(s)},v[2]=function(){t.mem_write(x|i<<8,n)},v[3]=function(){var e=x|i<<8;e+=1,x=e&255,i=(e&65280)>>>8},v[4]=function(){i=L(i)},v[5]=function(){i=O(i)},v[6]=function(){s=s+1&65535,i=t.mem_read(s)},v[7]=function(){var e=c.S,a=c.Z,P=c.P;n=X0(n),c.S=e,c.Z=a,c.P=P},v[8]=function(){var e=n;n=W,W=e,e=U0(),F0(Y0()),D0(e)},v[9]=function(){w0(x|i<<8)},v[10]=function(){n=t.mem_read(x|i<<8)},v[11]=function(){var e=x|i<<8;e-=1,x=e&255,i=(e&65280)>>>8},v[12]=function(){x=L(x)},v[13]=function(){x=O(x)},v[14]=function(){s=s+1&65535,x=t.mem_read(s)},v[15]=function(){var e=c.S,a=c.Z,P=c.P;n=f0(n),c.S=e,c.Z=a,c.P=P},v[16]=function(){i=i-1&255,W0(i!==0)},v[17]=function(){s=s+1&65535,b=t.mem_read(s),s=s+1&65535,o=t.mem_read(s)},v[18]=function(){t.mem_write(b|o<<8,n)},v[19]=function(){var e=b|o<<8;e+=1,b=e&255,o=(e&65280)>>>8},v[20]=function(){o=L(o)},v[21]=function(){o=O(o)},v[22]=function(){s=s+1&65535,o=t.mem_read(s)},v[23]=function(){var e=c.S,a=c.Z,P=c.P;n=h0(n),c.S=e,c.Z=a,c.P=P},v[24]=function(){var e=I(t.mem_read(s+1&65535));s=s+e+1&65535},v[25]=function(){w0(b|o<<8)},v[26]=function(){n=t.mem_read(b|o<<8)},v[27]=function(){var e=b|o<<8;e-=1,b=e&255,o=(e&65280)>>>8},v[28]=function(){b=L(b)},v[29]=function(){b=O(b)},v[30]=function(){s=s+1&65535,b=t.mem_read(s)},v[31]=function(){var e=c.S,a=c.Z,P=c.P;n=A0(n),c.S=e,c.Z=a,c.P=P},v[32]=function(){W0(!c.Z)},v[33]=function(){s=s+1&65535,f=t.mem_read(s),s=s+1&65535,u=t.mem_read(s)},v[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,u)},v[35]=function(){var e=f|u<<8;e+=1,f=e&255,u=(e&65280)>>>8},v[36]=function(){u=L(u)},v[37]=function(){u=O(u)},v[38]=function(){s=s+1&65535,u=t.mem_read(s)},v[39]=function(){var e=n;c.N?((c.H||(n&15)>9)&&(e-=6),(c.C||n>153)&&(e-=96)):((c.H||(n&15)>9)&&(e+=6),(c.C||n>153)&&(e+=96)),c.S=e&128?1:0,c.Z=e&255?0:1,c.H=n&16^e&16?1:0,c.P=b0(e&255),c.C=c.C||n>153?1:0,n=e&255,Q(n)},v[40]=function(){W0(!!c.Z)},v[41]=function(){w0(f|u<<8)},v[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),u=t.mem_read(e+1&65535)},v[43]=function(){var e=f|u<<8;e-=1,f=e&255,u=(e&65280)>>>8},v[44]=function(){f=L(f)},v[45]=function(){f=O(f)},v[46]=function(){s=s+1&65535,f=t.mem_read(s)},v[47]=function(){n=~n&255,c.N=1,c.H=1,Q(n)},v[48]=function(){W0(!c.C)},v[49]=function(){K=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s+2&65535},v[50]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,n)},v[51]=function(){K=K+1&65535},v[52]=function(){var e=f|u<<8;t.mem_write(e,L(t.mem_read(e)))},v[53]=function(){var e=f|u<<8;t.mem_write(e,O(t.mem_read(e)))},v[54]=function(){s=s+1&65535,t.mem_write(f|u<<8,t.mem_read(s))},v[55]=function(){c.N=0,c.H=0,c.C=1,Q(n)},v[56]=function(){W0(!!c.C)},v[57]=function(){w0(K)},v[58]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,n=t.mem_read(e)},v[59]=function(){K=K-1&65535},v[60]=function(){n=L(n)},v[61]=function(){n=O(n)},v[62]=function(){n=t.mem_read(s+1&65535),s=s+1&65535},v[63]=function(){c.N=0,c.H=c.C,c.C=c.C?0:1,Q(n)},v[192]=function(){T0(!c.Z)},v[193]=function(){var e=d0();x=e&255,i=(e&65280)>>>8},v[194]=function(){y0(!c.Z)},v[195]=function(){s=t.mem_read(s+1&65535)|t.mem_read(s+2&65535)<<8,s=s-1&65535},v[196]=function(){Z0(!c.Z)},v[197]=function(){E0(x|i<<8)},v[198]=function(){s=s+1&65535,c0(t.mem_read(s))},v[199]=function(){k0(0)},v[200]=function(){T0(!!c.Z)},v[201]=function(){s=d0()-1&65535},v[202]=function(){y0(!!c.Z)},v[203]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=(e&56)>>>3,P=e&7;if(e<64){var L0=[X0,f0,h0,A0,z0,V,q0,j0];P===0?i=L0[a](i):P===1?x=L0[a](x):P===2?o=L0[a](o):P===3?b=L0[a](b):P===4?u=L0[a](u):P===5?f=L0[a](f):P===6?t.mem_write(f|u<<8,L0[a](t.mem_read(f|u<<8))):P===7&&(n=L0[a](n))}else e<128?(P===0?c.Z=i&1<>>8},v[210]=function(){y0(!c.C)},v[211]=function(){s=s+1&65535,t.io_write(n<<8|t.mem_read(s),n)},v[212]=function(){Z0(!c.C)},v[213]=function(){E0(b|o<<8)},v[214]=function(){s=s+1&65535,E(t.mem_read(s))},v[215]=function(){k0(16)},v[216]=function(){T0(!!c.C)},v[217]=function(){var e=i;i=N,N=e,e=x,x=g,g=e,e=o,o=B,B=e,e=b,b=_,_=e,e=u,u=a0,a0=e,e=f,f=_0,_0=e},v[218]=function(){y0(!!c.C)},v[219]=function(){s=s+1&65535,n=t.io_read(n<<8|t.mem_read(s))},v[220]=function(){Z0(!!c.C)},v[221]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=w[e];a?(a(),M+=q[e]):(s=s-1&65535,M+=l[0])},v[222]=function(){s=s+1&65535,k(t.mem_read(s))},v[223]=function(){k0(24)},v[224]=function(){T0(!c.P)},v[225]=function(){var e=d0();f=e&255,u=(e&65280)>>>8},v[226]=function(){y0(!c.P)},v[227]=function(){var e=t.mem_read(K);t.mem_write(K,f),f=e,e=t.mem_read(K+1&65535),t.mem_write(K+1&65535,u),u=e},v[228]=function(){Z0(!c.P)},v[229]=function(){E0(f|u<<8)},v[230]=function(){s=s+1&65535,s0(t.mem_read(s))},v[231]=function(){k0(32)},v[232]=function(){T0(!!c.P)},v[233]=function(){s=f|u<<8,s=s-1&65535},v[234]=function(){y0(!!c.P)},v[235]=function(){var e=o;o=u,u=e,e=b,b=f,f=e},v[236]=function(){Z0(!!c.P)},v[237]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=D[e];a?(a(),M+=r[e]):M+=l[0]},v[238]=function(){s=s+1&65535,e0(t.mem_read(s))},v[239]=function(){k0(40)},v[240]=function(){T0(!c.S)},v[241]=function(){var e=d0();F0(e&255),n=(e&65280)>>>8},v[242]=function(){y0(!c.S)},v[243]=function(){C=!0},v[244]=function(){Z0(!c.S)},v[245]=function(){E0(U0()|n<<8)},v[246]=function(){s=s+1&65535,Z(t.mem_read(s))},v[247]=function(){k0(48)},v[248]=function(){T0(!!c.S)},v[249]=function(){K=f|u<<8},v[250]=function(){y0(!!c.S)},v[251]=function(){V0=!0},v[252]=function(){Z0(!!c.S)},v[253]=function(){H=H&128|(H&127)+1&127,s=s+1&65535;var e=t.mem_read(s),a=w[e];if(a){var P=h;h=R,a(),R=h,h=P,M+=q[e]}else s=s-1&65535,M+=l[0]},v[254]=function(){s=s+1&65535,F(t.mem_read(s))},v[255]=function(){k0(56)};let D=[];D[64]=function(){i=S0(i<<8|x)},D[65]=function(){t.io_write(i<<8|x,i)},D[66]=function(){n0(x|i<<8)},D[67]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,x),t.mem_write(e+1&65535,i)},D[68]=function(){J()},D[69]=function(){s=d0()-1&65535,T=p0},D[70]=function(){N0=0},D[71]=function(){t0=n},D[72]=function(){x=S0(i<<8|x)},D[73]=function(){t.io_write(i<<8|x,x)},D[74]=function(){Y(x|i<<8)},D[75]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,x=t.mem_read(e),i=t.mem_read(e+1&65535)},D[76]=function(){J()},D[77]=function(){s=d0()-1&65535},D[78]=function(){N0=0},D[79]=function(){H=n},D[80]=function(){o=S0(i<<8|x)},D[81]=function(){t.io_write(i<<8|x,o)},D[82]=function(){n0(b|o<<8)},D[83]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,b),t.mem_write(e+1&65535,o)},D[84]=function(){J()},D[85]=function(){s=d0()-1&65535,T=p0},D[86]=function(){N0=1},D[87]=function(){n=t0,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=p0,c.N=0,Q(n)},D[88]=function(){b=S0(i<<8|x)},D[89]=function(){t.io_write(i<<8|x,b)},D[90]=function(){Y(b|o<<8)},D[91]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,b=t.mem_read(e),o=t.mem_read(e+1&65535)},D[92]=function(){J()},D[93]=function(){s=d0()-1&65535,T=p0},D[94]=function(){N0=2},D[95]=function(){n=H,c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=p0,c.N=0,Q(n)},D[96]=function(){u=S0(i<<8|x)},D[97]=function(){t.io_write(i<<8|x,u)},D[98]=function(){n0(f|u<<8)},D[99]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,f),t.mem_write(e+1&65535,u)},D[100]=function(){J()},D[101]=function(){s=d0()-1&65535,T=p0},D[102]=function(){N0=0},D[103]=function(){var e=t.mem_read(f|u<<8),a=e&15,P=n&15;e=(e&240)>>>4|P<<4,n=n&240|a,t.mem_write(f|u<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=b0(n)?1:0,c.N=0,Q(n)},D[104]=function(){f=S0(i<<8|x)},D[105]=function(){t.io_write(i<<8|x,f)},D[106]=function(){Y(f|u<<8)},D[107]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,f=t.mem_read(e),u=t.mem_read(e+1&65535)},D[108]=function(){J()},D[109]=function(){s=d0()-1&65535,T=p0},D[110]=function(){N0=0},D[111]=function(){var e=t.mem_read(f|u<<8),a=e&240,P=n&15;e=(e&15)<<4|P,n=n&240|a>>>4,t.mem_write(f|u<<8,e),c.S=n&128?1:0,c.Z=n?0:1,c.H=0,c.P=b0(n)?1:0,c.N=0,Q(n)},D[112]=function(){S0(i<<8|x)},D[113]=function(){t.io_write(i<<8|x,0)},D[114]=function(){n0(K)},D[115]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,K&255),t.mem_write(e+1&65535,K>>>8&255)},D[116]=function(){J()},D[117]=function(){s=d0()-1&65535,T=p0},D[118]=function(){N0=1},D[120]=function(){n=S0(i<<8|x)},D[121]=function(){t.io_write(i<<8|x,n)},D[122]=function(){Y(K)},D[123]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,K=t.mem_read(e),K|=t.mem_read(e+1&65535)<<8},D[124]=function(){J()},D[125]=function(){s=d0()-1&65535,T=p0},D[126]=function(){N0=2},D[160]=function(){l0()},D[161]=function(){I0()},D[162]=function(){z()},D[163]=function(){H0()},D[168]=function(){r0()},D[169]=function(){o0()},D[170]=function(){R0()},D[171]=function(){B0()},D[176]=function(){l0(),(i||x)&&(M+=5,s=s-2&65535)},D[177]=function(){I0(),!c.Z&&(i||x)&&(M+=5,s=s-2&65535)},D[178]=function(){z(),i&&(M+=5,s=s-2&65535)},D[179]=function(){H0(),i&&(M+=5,s=s-2&65535)},D[184]=function(){r0(),(i||x)&&(M+=5,s=s-2&65535)},D[185]=function(){o0(),!c.Z&&(i||x)&&(M+=5,s=s-2&65535)},D[186]=function(){R0(),i&&(M+=5,s=s-2&65535)},D[187]=function(){B0(),i&&(M+=5,s=s-2&65535)};let w=[];w[9]=function(){G0(x|i<<8)},w[25]=function(){G0(b|o<<8)},w[33]=function(){s=s+1&65535,h=t.mem_read(s),s=s+1&65535,h|=t.mem_read(s)<<8},w[34]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,t.mem_write(e,h&255),t.mem_write(e+1&65535,h>>>8&255)},w[35]=function(){h=h+1&65535},w[36]=function(){h=L(h>>>8)<<8|h&255},w[37]=function(){h=O(h>>>8)<<8|h&255},w[38]=function(){s=s+1&65535,h=t.mem_read(s)<<8|h&255},w[41]=function(){G0(h)},w[42]=function(){s=s+1&65535;var e=t.mem_read(s);s=s+1&65535,e|=t.mem_read(s)<<8,h=t.mem_read(e),h|=t.mem_read(e+1&65535)<<8},w[43]=function(){h=h-1&65535},w[44]=function(){h=L(h&255)|h&65280},w[45]=function(){h=O(h&255)|h&65280},w[46]=function(){s=s+1&65535,h=t.mem_read(s)&255|h&65280},w[52]=function(){s=s+1&65535;var e=I(t.mem_read(s)),a=t.mem_read(e+h&65535);t.mem_write(e+h&65535,L(a))},w[53]=function(){s=s+1&65535;var e=I(t.mem_read(s)),a=t.mem_read(e+h&65535);t.mem_write(e+h&65535,O(a))},w[54]=function(){s=s+1&65535;var e=I(t.mem_read(s));s=s+1&65535,t.mem_write(h+e&65535,t.mem_read(s))},w[57]=function(){G0(K)},w[68]=function(){i=h>>>8&255},w[69]=function(){i=h&255},w[70]=function(){s=s+1&65535;var e=I(t.mem_read(s));i=t.mem_read(h+e&65535)},w[76]=function(){x=h>>>8&255},w[77]=function(){x=h&255},w[78]=function(){s=s+1&65535;var e=I(t.mem_read(s));x=t.mem_read(h+e&65535)},w[84]=function(){o=h>>>8&255},w[85]=function(){o=h&255},w[86]=function(){s=s+1&65535;var e=I(t.mem_read(s));o=t.mem_read(h+e&65535)},w[92]=function(){b=h>>>8&255},w[93]=function(){b=h&255},w[94]=function(){s=s+1&65535;var e=I(t.mem_read(s));b=t.mem_read(h+e&65535)},w[96]=function(){h=h&255|i<<8},w[97]=function(){h=h&255|x<<8},w[98]=function(){h=h&255|o<<8},w[99]=function(){h=h&255|b<<8},w[100]=function(){},w[101]=function(){h=h&255|(h&255)<<8},w[102]=function(){s=s+1&65535;var e=I(t.mem_read(s));u=t.mem_read(h+e&65535)},w[103]=function(){h=h&255|n<<8},w[104]=function(){h=h&65280|i},w[105]=function(){h=h&65280|x},w[106]=function(){h=h&65280|o},w[107]=function(){h=h&65280|b},w[108]=function(){h=h&65280|h>>>8},w[109]=function(){},w[110]=function(){s=s+1&65535;var e=I(t.mem_read(s));f=t.mem_read(h+e&65535)},w[111]=function(){h=h&65280|n},w[112]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,i)},w[113]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,x)},w[114]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,o)},w[115]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,b)},w[116]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,u)},w[117]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,f)},w[119]=function(){s=s+1&65535;var e=I(t.mem_read(s));t.mem_write(h+e&65535,n)},w[124]=function(){n=h>>>8&255},w[125]=function(){n=h&255},w[126]=function(){s=s+1&65535;var e=I(t.mem_read(s));n=t.mem_read(h+e&65535)},w[132]=function(){c0(h>>>8&255)},w[133]=function(){c0(h&255)},w[134]=function(){s=s+1&65535;var e=I(t.mem_read(s));c0(t.mem_read(h+e&65535))},w[140]=function(){i0(h>>>8&255)},w[141]=function(){i0(h&255)},w[142]=function(){s=s+1&65535;var e=I(t.mem_read(s));i0(t.mem_read(h+e&65535))},w[148]=function(){E(h>>>8&255)},w[149]=function(){E(h&255)},w[150]=function(){s=s+1&65535;var e=I(t.mem_read(s));E(t.mem_read(h+e&65535))},w[156]=function(){k(h>>>8&255)},w[157]=function(){k(h&255)},w[158]=function(){s=s+1&65535;var e=I(t.mem_read(s));k(t.mem_read(h+e&65535))},w[164]=function(){s0(h>>>8&255)},w[165]=function(){s0(h&255)},w[166]=function(){s=s+1&65535;var e=I(t.mem_read(s));s0(t.mem_read(h+e&65535))},w[172]=function(){e0(h>>>8&255)},w[173]=function(){e0(h&255)},w[174]=function(){s=s+1&65535;var e=I(t.mem_read(s));e0(t.mem_read(h+e&65535))},w[180]=function(){Z(h>>>8&255)},w[181]=function(){Z(h&255)},w[182]=function(){s=s+1&65535;var e=I(t.mem_read(s));Z(t.mem_read(h+e&65535))},w[188]=function(){F(h>>>8&255)},w[189]=function(){F(h&255)},w[190]=function(){s=s+1&65535;var e=I(t.mem_read(s));F(t.mem_read(h+e&65535))},w[203]=function(){s=s+1&65535;var e=I(t.mem_read(s));s=s+1&65535;var a=t.mem_read(s),P;if(a<64){var L0=[X0,f0,h0,A0,z0,V,q0,j0],$0=L0[(a&56)>>>3],P=$0(t.mem_read(h+e&65535));t.mem_write(h+e&65535,P)}else{var O0=(a&56)>>>3;a<128?(c.N=0,c.H=1,c.Z=t.mem_read(h+e&65535)&1<>>8&255)},w[229]=function(){E0(h)},w[233]=function(){s=h-1&65535},w[249]=function(){K=h};let l=[4,10,7,6,4,4,7,4,4,11,7,6,4,4,7,4,8,10,7,6,4,4,7,4,12,11,7,6,4,4,7,4,7,10,16,6,4,4,7,4,7,11,16,6,4,4,7,4,7,10,13,6,11,11,10,4,7,11,13,6,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,7,7,7,7,7,7,4,7,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,7,4,5,10,10,10,10,11,7,11,5,10,10,0,10,17,7,11,5,10,10,11,10,11,7,11,5,4,10,11,10,0,7,11,5,10,10,19,10,11,7,11,5,4,10,4,10,0,7,11,5,10,10,4,10,11,7,11,5,6,10,4,10,0,7,11],r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,9,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,18,12,12,15,20,8,14,8,0,12,12,15,20,8,14,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],S=[8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,12,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8,8,8,8,8,8,8,15,8],q=[0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,14,20,10,8,8,11,0,0,15,20,10,8,8,11,0,0,0,0,0,23,23,19,0,0,15,0,0,0,0,0,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,8,8,8,8,8,8,19,8,8,8,8,8,8,8,19,8,19,19,19,19,19,19,0,19,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,8,8,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,23,0,15,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0];this.saveState=X,this.loadState=m0,this.reset=U,this.advanceInsn=y,this.interrupt=v0,this.getPC=()=>s,this.getSP=()=>K,this.getHalted=()=>p}var We=class{constructor(){this.retryInterrupts=!1;this.retryData=-1}buildCPU(){this.memBus&&this.ioBus&&!this.cpu&&(this.cpu=new kn({mem_read:t=>this.memBus.read(t),mem_write:(t,n)=>this.memBus.write(t,n),io_read:t=>this.ioBus.read(t),io_write:(t,n)=>this.ioBus.write(t,n)}))}connectMemoryBus(t){this.memBus=t,this.buildCPU()}connectIOBus(t){this.ioBus=t,this.buildCPU()}advanceInsn(){return this.retryInterrupts&&this.retryData>=0&&this.cpu.interrupt(!1,this.retryData)&&(this.retryData=-1),this.cpu.advanceInsn()}reset(){this.cpu.reset()}interrupt(t){!this.cpu.interrupt(!1,t)&&this.retryInterrupts&&(this.retryData=t)}NMI(){this.cpu.interrupt(!0,0)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.getHalted()}saveState(){return this.cpu.saveState()}loadState(t){this.cpu.loadState(t)}isStable(){return!0}};var ut=class{constructor(){this.master=new MasterChannel}start(){this.looper||(this.looper=new AudioLooper(512),this.looper.setChannel(this.master),this.looper.activate(),xt(this.looper.audioContext))}stop(){this.looper&&(this.looper.setChannel(null),this.looper=null)}},Lt=class{constructor(t){this.psg=new PsgDeviceChannel;this.curreg=0;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),t.master.addChannel(this.psg)}reset(){for(var t=15;t>=0;t--)this.selectRegister(t),this.setData(0)}selectRegister(t){this.curreg=t&15}setData(t){this.psg.writeRegisterAY(this.curreg,t&255)}readData(){return this.psg.readRegister(this.curreg)}currentRegister(){return this.curreg}},Ot=class{constructor(t){this.psg=new PsgDeviceChannel;this.master=t,this.psg.setMode(PsgDeviceChannel.MODE_SIGNED),this.psg.setDevice(PsgDeviceChannel.DEVICE_SN76489),t.master.addChannel(this.psg)}reset(){}setData(t){this.psg.writeRegisterSN(0,t&255)}};function Xn(d){for(var t=new ut,n=1;n<=d;n++){var i=new wn;t["pokey"+n]=i,t.master.addChannel(i)}return t}function De(d,t){for(var n=new Uint8Array(d.length*t.length),i=0,x=0;x.5?1:0;var Y0=De(I,U),F0=De(U,m0),D0=[Y0,U,F0,U,I,X,m0,X],Q=ze(2),b0=ze(6),E0=ze(31),d0=ze(93),y0=De(v0,m0),W0=De(U,Q),Z0=De(U,b0),T0=[M,m0,y0,F0,Q,Q,E0,W0,y,U,E0,M,b0,b0,d0,Z0],k0=new Uint8Array(16),c0=new Float32Array(4),i0=new Float32Array(4),E=new Float32Array(4),k=new Uint8Array(4),F=[M,M,M,M],s0,Z,e0,L,O=!0;this.setBufferLength=function(Y){s0=new Int32Array(Y)},this.getBuffer=function(){return s0},this.setSampleRate=function(Y){Z=Y,L=C/Y};function w0(Y){var n0=k0[8],S0=n0&B?a0:_,J,l0=Y&4,I0=l0>>1,z=l0>>2;n0&f>>z?(n0&b>>z?J=k0[l0+2]*256+k0[l0+0]+7:J=(k0[l0+2]*256+k0[l0+0]+1)*S0,i0[I0+1]=L/J,i0[I0+0]=0):(n0&b>>z?J=k0[l0+0]+4:J=(k0[l0+0]+1)*S0,i0[I0+0]=L/J,J=(k0[l0+2]+1)*S0,i0[I0+1]=L/J)}this.setRegister=function(Y,n0){if(Y&=15,n0&=255,k0[Y]!=n0)switch(k0[Y]=n0,Y){case 0:case 2:case 4:case 6:case 8:O=!0;break;case 1:case 3:case 5:case 7:E[Y>>1]=n0&15,F[Y>>1]=D0[n0>>5];break}},this.getRegister=function(Y){return Y&=15,k0[Y]},this.setTIARegister=function(Y,n0){switch(Y){case 23:case 24:k0[(Y&1)*4]=n0&31,O=!0;break;case 21:case 22:F[(Y&1)*2]=T0[n0&15];break;case 25:case 26:E[(Y&1)*2]=n0&15;break}},this.generate=function(Y){O&&(w0(0),w0(4),O=!1);for(var n0=0;n00&&l0<1&&I0>0){var z=F[J],H0=c0[J]+=l0;H0>z.length&&(H0=c0[J]=H0-Math.floor(H0/z.length)*z.length);var r0=z[Math.floor(H0)];r0&&(S0+=I0)}}S0*=64,s0[n0]=S0,s0[n0+1]=S0}}},Hn=function(d){var t,n,i=[],x=0;d.onmessage=function(o){o&&o.data&&o.data.samples&&n&&(i.push(o.data.samples),x+=o.data.samples.length)},this.setBufferLength=function(o){n=new Int16Array(o),x=0},this.getBuffer=function(){return n},this.setSampleRate=function(o){t=o,d.postMessage({sampleRate:o})},this.generate=function(o){if(x{}),typeof document=="undefined"||ot.has(d)))return;ot.add(d);let t=()=>{if(d.resume().catch(()=>{}),d.state==="running"){for(let n of Zt)document.removeEventListener(n,t,!0);ot.delete(d)}};for(let n of Zt)document.addEventListener(n,t,!0)}var Dn=function(d){var t=this,n,i,x,o,b,u,f,W,N,g=0,B=0,_=0,a0=null,_0=!1,h=1,R=1,t0=0,H=0,K=1.5,s=.05,c=.004,u0=.01,N0=500,T=8,p0=T;function p(M){var X=M.outputBuffer.getChannelData(0),m0=this.module;if(m0||(m0=M.srcElement.module),!!m0)if(m0.callback){m0.callback(X);return}else if(W>N){_0&&a0[Math.min(W-N,T)]++,t0+=(W-N-t0)*s;for(var U=u[N%T],y=0;y=o.length)){if(b=0,t.stream){var X=o;o=new Float32Array(t.bufferlen),t.stream.push(X);return}if(u[f]=o,W++,W-N>=p0){N++,g++;var m0=Date.now();m0-B>1e3&&(console.warn("SampleAudio: skipped audio buffer(s), total="+g+", fill="+(W-N)+"/"+p0+", contextRate="+t.sr+", requestedBuf="+t.bufferlen+", expectedIntervalMs="+(t.bufferlen*1e3/t.sr).toFixed(2)),B=m0)}f=(f+1)%T,o=u[f];var U=Date.now();if(U-H>N0){H=U;var y=1+c*(K-t0);y>1+u0?y=1+u0:y<1-u0&&(y=1-u0),R=y,i=h*R}}},this.feedSample=function(M,X){if(x+=M*X,n+=i*X,n>=1){for(x/=n;n>=1;)this.addSingleSample(x*i),n-=1;x*=n}},this.getStats=function(){var M=0,X=0,m0=0;if(a0)for(var U=0;U0&&U>m0&&(m0=U)}return{maxBuffers:T,targetDepth:p0,sampleRate:t.sr||0,bufferLength:t.bufferlen||0,fillHistogram:a0?a0.slice():[],meanFill:M>0?X/M:0,maxFill:m0,samples:M,skippedBuffers:g,underruns:_,fillAvg:t0,trim:R}},this.setStatsEnabled=function(M){_0=!!M,a0=_0?new Array(T+1).fill(0):null}},Ke=class{constructor(t){this.sa=new Dn(t)}feedSample(t,n){this.sa.feedSample(t,n)}start(){this.sa.start()}stop(){this.sa.stop()}reset(){this.sa.reset()}getStats(){return this.sa.getStats?this.sa.getStats():null}setStatsEnabled(t){this.sa.setStatsEnabled&&this.sa.setStatsEnabled(t)}get sampleRate(){return this.sa.sr||0}},Mt=class{constructor(t,n,i){this.audioGain=1/8192;this.bufferLength=n*2,this.channels=t.generate?[t]:t,this.channels.forEach(x=>{x.setBufferLength(this.bufferLength),x.setSampleRate(i)})}generate(t){var n=this.bufferLength,i=this.channels.map(o=>o.getBuffer());this.channels.forEach(o=>{o.generate(n)});for(let o=0;ox+=b[o]),t.feedSample(x*this.audioGain,1)}}};function Yn(d){return Object.keys(d).map(t=>d[t])}var je=class{constructor(t,n){this.idx=0;this.sl=0;this.cur_sp=-1;this.singleFrame=!0;this.m=t,this.reset(n||1048576)}start(){this.m.connectProbe(this)}stop(){this.m.connectProbe(null)}reset(t){t&&(this.buf=new Uint32Array(t)),this.sl=0,this.cur_sp=-1,this.clear()}clear(){this.idx=0}logData(t){this.log(t)}log(t){this.idx>=this.buf.length||(this.buf[this.idx++]=t)}relog(t){this.buf[this.idx-1]=t}lastOp(){return this.idx>0?this.buf[this.idx-1]&4278190080:-1}lastAddr(){return this.idx>0?this.buf[this.idx-1]&16777215:-1}addLogBuffer(t){this.idx+t.length>this.buf.length&&(t=t.slice(0,this.buf.length-this.idx)),this.buf.set(t,this.idx),this.idx+=t.length}logClocks(t){t|=0,t>0&&(this.lastOp()==0?this.relog(this.lastAddr()+t|0):this.log(t|0))}logNewScanline(){this.log(2113929216),this.sl++}logNewFrame(){this.log(2130706432),this.sl=0,this.singleFrame&&this.clear()}logExecute(t,n){this.cur_sp!==n&&(nthis.cur_sp&&this.log(184549376|n),this.cur_sp=n),this.log(t|16777216)}logInterrupt(t){this.log(t|134217728)}logValue(t,n,i){this.log(t&65535|(n&255)<<16|i)}logRead(t,n){this.logValue(t,n,301989888)}logWrite(t,n){this.logValue(t,n,318767104)}logIORead(t,n){this.logValue(t,n,335544320)}logIOWrite(t,n){this.logValue(t,n,352321536)}logVRAMRead(t,n){this.logValue(t,n,369098752)}logVRAMWrite(t,n){this.logValue(t,n,385875968)}logIllegal(t){this.log(t|150994944)}logWait(t){this.log(t|520093696)}logDMARead(t,n){this.logValue(t,n,402653184)}logDMAWrite(t,n){this.logValue(t,n,419430400)}countEvents(t){for(var n=0,i=0;ithis.rom.length)throw new Error(`ROM too big: ${t.length} > ${this.rom.length}`);this.rom.set(t)}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.inputs.set(t.inputs)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),inputs:this.inputs.slice(0)}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}advanceCPU(){var t=this.cpu,n=1;return this.probing&&this.cpu.isStable()&&this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),t.advanceClock?t.advanceClock():t.advanceInsn&&(n=t.advanceInsn(1)),this.probing&&this.probe.logClocks(n),n}probeMemoryBus(t){return{read:n=>{let i=t.read(n);return this.probe.logRead(n,i),i},write:(n,i)=>{this.probe.logWrite(n,i),t.write(n,i)},read32:n=>{let i=t.read32(n);return this.probe.logRead(n,i),i},write32:(n,i)=>{this.probe.logWrite(n,i),t.write32(n,i)}}}connectCPUMemoryBus(t){this.cpuMemoryBus=t,this.rewireCPUBuses()}probeIOBus(t){return{read:n=>{let i=t.read(n);return this.probe.logIORead(n,i),i},write:(n,i)=>{this.probe.logIOWrite(n,i),t.write(n,i)}}}probeDMABus(t){return{read:n=>{let i=t.read(n);return this.probe.logDMARead(n,i),i},write:(n,i)=>{this.probe.logDMAWrite(n,i),t.write(n,i)}}}connectCPUIOBus(t){this.cpuIOBus=t,this.rewireCPUBuses()}},mt=class extends lt{constructor(){super(...arguments);this.overscan=!1;this.rotate=0}getAudioParams(){return{sampleRate:this.sampleRate,stereo:!1}}connectAudio(n){this.audio=n}getVideoParams(){return{width:this.canvasWidth,height:this.numVisibleScanlines,aspect:this.aspectRatio,overscan:this.overscan,rotate:this.rotate}}connectVideo(n){this.pixels=n}},Ft=class extends mt{advanceFrame(t){this.preFrame();var n=0,i=0;this.probe.logNewFrame(),this.frameCycles=0;for(var x=0;x=64&&n<=127&&(u=Ut[n-64]),n>=160&&n<=191&&(u=Ut[n-160+64]),b++;break;case 221:case 253:var g=t==221?"ix":"iy";n==203?(u=Xt[x],f[2]=x,f[3]=i,b++):u=Tt[n],u=u.replace(/[(]hl[)]/,"("+g+"+x)"),u=u.replace(/\bhl\b/,g),b++;break;default:u=Tt[t];break}if((!u||!u.length)&&(u="??"),N=/^(call|rst)/.test(u),/\bxx\b/.test(u))u=u.replace(/\bxx\b/,"$"+$(f[b]+(f[b+1]<<8),4)),b+=2,W=!0;else if(/\bx\b/.test(u)){if(u.startsWith("j")){var B=n<128?d+2+n:d+2-(256-n);B&=65535,u=u.replace(/\bx\b/,"$"+$(B,4)),W=!0}else u=u.replace(/\bx\b/,"$"+$(f[b],2));b+=1}return{line:u.toUpperCase(),nbytes:b,isaddr:W,iscall:N}}function $e(){var d,t,n,i,x,o,b,u,f,W,N=1,g=2,B=4,_=8,a0=16,_0=32,h=64,R=128,t0=65534,H=65532,K=65530,s=65528,c=65526,u0=65524,N0=65522,T=0,p0,p,C,V0=[6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,0,0,2,4,0,0,5,9,0,2,3,0,3,2,8,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,0,5,3,6,9,11,0,19,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2,6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6,7,0,0,7,7,0,7,7,7,7,7,0,7,7,4,7,2,2,2,4,2,2,2,0,2,2,2,2,4,7,3,0,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5,5,5,5,7,5,5,5,5,5,5,5,5,7,8,6,6,2,2,2,4,2,2,2,0,2,2,2,2,3,0,3,0,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,6,6,6,6],M=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,4,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6,0,0,0,8,0,0,0,0,0,0,0,0,8,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7],X=[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8],m0=function(l,r,S){f|=((l^r^S^S>>1)&128)>>6},U=function(l,r,S){f|=((l^r^S^S>>1)&32768)>>14},y=function(){return(t<<8)+n},v0=function(l){t=l>>8&255,n=l&255},x0=function(l){p(--b,l&255)},I=function(l){p(--b,l&255),p(--b,l>>8&255)},U0=function(l){p(--o,l&255)},Y0=function(l){p(--o,l&255),p(--o,l>>8&255)},F0=function(){return C(b++)},D0=function(){return C(b++)*256+C(b++)},Q=function(){return C(o++)},b0=function(){return C(o++)*256+C(o++)},E0=function(l){var r=0;l&128&&(I(u),r+=2),l&64&&(I(o),r+=2),l&32&&(I(x),r+=2),l&16&&(I(i),r+=2),l&8&&(x0(W),r++),l&4&&(x0(n),r++),l&2&&(x0(t),r++),l&1&&(x0(f),r++),T+=r},d0=function(l){var r=0;l&128&&(Y0(u),r+=2),l&64&&(Y0(b),r+=2),l&32&&(Y0(x),r+=2),l&16&&(Y0(i),r+=2),l&8&&(U0(W),r++),l&4&&(U0(n),r++),l&2&&(U0(t),r++),l&1&&(U0(f),r++),T+=r},y0=function(l){var r=0;l&1&&(f=F0(),r++),l&2&&(t=F0(),r++),l&4&&(n=F0(),r++),l&8&&(W=F0(),r++),l&16&&(i=D0(),r+=2),l&32&&(x=D0(),r+=2),l&64&&(o=D0(),r+=2),l&128&&(u=D0(),r+=2),T+=r},W0=function(l){var r=0;l&1&&(f=Q(),r++),l&2&&(t=Q(),r++),l&4&&(n=Q(),r++),l&8&&(W=Q(),r++),l&16&&(i=b0(),r+=2),l&32&&(x=b0(),r+=2),l&64&&(b=b0(),r+=2),l&128&&(u=b0(),r+=2),T+=r},Z0=function(l){switch(l&15){case 0:return y();case 1:return i;case 2:return x;case 3:return o;case 4:return b;case 5:return u;case 8:return t;case 9:return n;case 10:return f;case 11:return W;default:return null}},T0=function(l,r){switch(l&15){case 0:v0(r);return;case 1:i=r;return;case 2:x=r;return;case 3:o=r;return;case 4:b=r;return;case 5:u=r;return;case 8:t=r;return;case 9:n=r;return;case 10:f=r;return;case 11:W=r;return;default:return}},k0=function(l,r){var S=l&136;(S==128||S==8)&&(S=0),r?(S=Z0(l>>4),T0(l>>4,Z0(l)),T0(l,S)):T0(l,Z0(l>>4))},c0=function(l){return l>127?l-256:l},i0=function(l){return l>32767?l-65536:l},E=function(){var l=C(u++);return u&=65535,l},k=function(){var l=C(u++);u&=65535;var r=C(u++);return u&=65535,l*256+r},F=function(l){var r=C(l++);l&=65535;var S=C(l++);return l&=65535,r*256+S},s0=function(l,r){p(l++,r>>8&255),l&=65535,p(l,r&255)},Z=function(){var l=E(),r;switch(l&96){case 0:r=i;break;case 32:r=x;break;case 64:r=o;break;case 96:r=b;break}var S=null,q=null,e;if(l&128){switch(l&15){case 0:q=r,S=r+1,T+=2;break;case 1:q=r,S=r+2,T+=3;break;case 2:S=r-1,q=S,T+=2;break;case 3:S=r-2,q=S,T+=3;break;case 4:q=r;break;case 5:q=r+c0(n),T+=1;break;case 6:q=r+c0(t),T+=1;break;case 7:q=0;break;case 8:q=r+c0(E()),T+=1;break;case 9:q=r+i0(k()),T+=4;break;case 10:q=0;break;case 11:T+=4,q=r+y();break;case 12:e=c0(E()),q=u+e,T+=1;break;case 13:e=i0(k()),q=u+e,T+=5;break;case 14:q=0;break;case 15:T+=5,q=k();break}q&=65535,l&16&&(q=C(q)*256+C(q+1&65535),T+=3)}else{var a=l&31;a>15&&(a-=32),q=r+a,T+=1}if(S!==null)switch(l&96){case 0:i=S;break;case 32:x=S;break;case 64:o=S;break;case 96:b=S;break}return q&65535},e0=function(l){f&=~(B|_),l===0&&(f|=B),l&32768&&(f|=_)},L=function(l){return l++,l&=255,f&=~(B|g|_),f|=X[l],(l===0||l==128)&&(f|=g),l},O=function(l){return l--,l&=255,f&=~(B|g|_),f|=X[l],(l===127||l==255)&&(f|=g),l},w0=function(l,r){var S=l-r;return f&=~(N|B|g|_),f|=X[S&255],S&256&&(f|=N),m0(l,r,S),S&255},Y=function(l,r){var S=l-r;return f&=~(N|B|g|_),(S&65535)===0&&(f|=B),S&32768&&(f|=_),S&65536&&(f|=N),U(l,r,S),S&65535},n0=function(l,r){var S=l+r;return f&=~(_0|N|B|g|_),f|=X[S&255],S&256&&(f|=N),m0(l,r,S),(S^l^r)&16&&(f|=_0),S&255},S0=function(l,r){var S=l+r;return f&=~(N|B|g|_),(S&65535)===0&&(f|=B),S&32768&&(f|=_),S&65536&&(f|=N),U(l,r,S),S&65535},J=function(l,r){var S=l+r+(f&N);return f&=~(_0|N|B|g|_),f|=X[S&255],S&256&&(f|=N),m0(l,r,S),(S^l^r)&16&&(f|=_0),S&255},l0=function(l,r){var S=l-r-(f&N);return f&=~(N|B|g|_),f|=X[S&255],S&256&&(f|=N),m0(l,r,S),S&255},I0=function(l,r){var S=l-r;f&=~(N|B|g|_),f|=X[S&255],S&256&&(f|=N),m0(l,r,S)},z=function(l,r){var S=l-r;f&=~(N|B|g|_),(S&65535)===0&&(f|=B),S&32768&&(f|=_),S&65536&&(f|=N),U(l,r,S)},H0=function(l){return f&=~(N|B|g|_),l==128&&(f|=g),l=(~l&255)+1,l===0&&(f|=B),l&128&&(f|=_|N),l},r0=function(l){return f&=~(B|N|_),l&1&&(f|=N),l>>=1,l===0&&(f|=B),l&255},o0=function(l){return f&=~(B|N|_),l&1&&(f|=N),l=l&128|l>>1,f|=X[l],l},R0=function(l){var r=l;return f&=~(B|N|_|g),l&128&&(f|=N),l<<=1,f|=X[l],(l^r)&128&&(f|=g),l},B0=function(l){var r=l,S=f&N;return f&=~(B|N|_|g),l&128&&(f|=N),l=l<<1|S,f|=X[l],(l^r)&128&&(f|=g),l},X0=function(l){var r=f&N;return f&=~(B|N|_),l&1&&(f|=N),l=l>>1|r<<7,f|=X[l],l},f0=function(l,r){return f&=~(B|_|g),l^=r,f|=X[l],l},h0=function(l,r){return f&=~(B|_|g),l|=r,f|=X[l],l},A0=function(l,r){return f&=~(B|_|g),l&=r,f|=X[l],l},z0=function(l){return f&=~(B|_|g),l^=255,f|=X[l],f|=N,l},V=function(){return W*256+E()},q0=function(){var l=T,r=null,S=null,q=u,e=E();switch(T+=V0[e],e){case 0:r=V(),p(r,H0(C(r)));break;case 3:r=V(),p(r,z0(C(r)));break;case 4:r=V(),p(r,r0(C(r)));break;case 6:r=V(),p(r,X0(C(r)));break;case 7:r=V(),p(r,o0(C(r)));break;case 8:r=V(),p(r,R0(C(r)));break;case 9:r=V(),p(r,B0(C(r)));break;case 10:r=V(),p(r,O(C(r)));break;case 12:r=V(),p(r,L(C(r)));break;case 13:r=V(),S=C(r),f&=~(B|_|g),f|=X[S];break;case 14:r=V(),u=r;break;case 15:r=V(),p(r,0),f&=~(N|_|g),f|=B;break;case 18:break;case 19:break;case 22:r=i0(k()),u+=r;break;case 23:r=i0(k()),I(u),u+=r;break;case 25:var a=0,P=t&240,L0=t&15;(L0>9||f&32)&&(a|=6),P>128&&L0>9&&(a|=96),(P>144||f&1)&&(a|=96),r=a+t,f&=~(N|_|B|g),r&256&&(f|=N),t=r&255,f|=X[t];break;case 26:f|=E();break;case 28:f&=E();break;case 29:t=n&128?255:0,e0(y()),f&=~g;break;case 30:S=E(),k0(S,!0);break;case 31:S=E(),k0(S,!1);break;case 32:r=c0(E()),u+=r;break;case 33:r=c0(E());break;case 34:r=c0(E()),f&(N|B)||(u+=r);break;case 35:r=c0(E()),f&(N|B)&&(u+=r);break;case 36:r=c0(E()),f&N||(u+=r);break;case 37:r=c0(E()),f&N&&(u+=r);break;case 38:r=c0(E()),f&B||(u+=r);break;case 39:r=c0(E()),f&B&&(u+=r);break;case 40:r=c0(E()),f&g||(u+=r);break;case 41:r=c0(E()),f&g&&(u+=r);break;case 42:r=c0(E()),f&_||(u+=r);break;case 43:r=c0(E()),f&_&&(u+=r);break;case 44:r=c0(E()),f&_^(f&g)<<2||(u+=r);break;case 45:r=c0(E()),f&_^(f&g)<<2&&(u+=r);break;case 46:r=c0(E()),f&_^(f&g)<<2||f&B||(u+=r);break;case 47:r=c0(E()),(f&_^(f&g)<<2||f&B)&&(u+=r);break;case 48:i=Z(),i===0?f|=B:f&=~B;break;case 49:x=Z(),x===0?f|=B:f&=~B;break;case 50:b=Z();break;case 51:o=Z();break;case 52:E0(E());break;case 53:y0(E());break;case 54:d0(E());break;case 55:W0(E());break;case 57:u=D0();break;case 58:i+=n;break;case 59:f=F0(),f&R&&(T+=9,t=F0(),n=F0(),W=F0(),i=D0(),x=D0(),o=D0()),u=D0();break;case 60:f&=E();break;case 61:r=t*n,r===0?f|=B:f&=~B,r&128?f|=N:f&=~N,v0(r);break;case 63:f|=R,I(u),I(o),I(x),I(i),x0(W),x0(n),x0(t),x0(f),f|=a0|h,u=F(K);break;case 64:t=H0(t);break;case 67:t=z0(t);break;case 68:t=r0(t);break;case 70:t=X0(t);break;case 71:t=o0(t);break;case 72:t=R0(t);break;case 73:t=B0(t);break;case 74:t=O(t);break;case 76:t=L(t);break;case 77:f&=~(B|_|g),f|=X[t];break;case 79:t=0,f&=~(_|g|N),f|=B;break;case 80:n=H0(n);break;case 83:n=z0(n);break;case 84:n=r0(n);break;case 86:n=X0(n);break;case 87:n=o0(n);break;case 88:n=R0(n);break;case 89:n=B0(n);break;case 90:n=O(n);break;case 92:n=L(n);break;case 93:f&=~(B|_|g),f|=X[n];break;case 95:n=0,f&=~(_|g|N),f|=B;break;case 96:r=Z(),p(r,H0(C(r)));break;case 99:r=Z(),p(r,z0(C(r)));break;case 100:r=Z(),p(r,r0(C(r)));break;case 102:r=Z(),p(r,X0(C(r)));break;case 103:r=Z(),p(r,o0(C(r)));break;case 104:r=Z(),p(r,R0(C(r)));break;case 105:r=Z(),p(r,B0(C(r)));break;case 106:r=Z(),p(r,O(C(r)));break;case 108:r=Z(),p(r,L(C(r)));break;case 109:r=Z(),S=C(r),f&=~(B|_|g),f|=X[S];break;case 110:r=Z(),u=r;break;case 111:r=Z(),p(r,0),f&=~(N|_|g),f|=B;break;case 112:r=k(),p(r,H0(C(r)));break;case 115:r=k(),p(r,z0(C(r)));break;case 116:r=k(),p(r,r0(C(r)));break;case 118:r=k(),p(r,X0(C(r)));break;case 119:r=k(),p(r,o0(C(r)));break;case 120:r=k(),p(r,R0(C(r)));break;case 121:r=k(),p(r,B0(C(r)));break;case 122:r=k(),p(r,O(C(r)));break;case 124:r=k(),p(r,L(C(r)));break;case 125:r=k(),S=C(r),f&=~(B|_|g),f|=X[S];break;case 126:r=k(),u=r;break;case 127:r=k(),p(r,0),f&=~(N|_|g),f|=B;break;case 128:t=w0(t,E());break;case 129:I0(t,E());break;case 130:t=l0(t,E());break;case 131:v0(Y(y(),k()));break;case 132:t=A0(t,E());break;case 133:A0(t,E());break;case 134:t=E(),f&=~(B|_|g),f|=X[t];break;case 136:t=f0(t,E());break;case 137:t=J(t,E());break;case 138:t=h0(t,E());break;case 139:t=n0(t,E());break;case 140:z(i,k());break;case 141:r=c0(E()),I(u),u+=r;break;case 142:i=k(),e0(i),f&=~g;break;case 144:r=V(),t=w0(t,C(r));break;case 145:r=V(),I0(t,C(r));break;case 146:r=V(),t=l0(t,C(r));break;case 147:r=V(),v0(Y(y(),F(r)));break;case 148:r=V(),t=A0(t,C(r));break;case 149:r=V(),A0(t,C(r));break;case 150:r=V(),t=C(r),f&=~(B|_|g),f|=X[t];break;case 151:r=V(),p(r,t),f&=~(B|_|g),f|=X[t];break;case 152:r=V(),t=f0(t,C(r));break;case 153:r=V(),t=J(t,C(r));break;case 154:r=V(),t=h0(t,C(r));break;case 155:r=V(),t=n0(t,C(r));break;case 156:r=V(),z(i,F(r));break;case 157:r=V(),I(u),u=r;break;case 158:r=V(),i=F(r),e0(i),f&=~g;break;case 159:r=V(),s0(r,i),e0(i),f&=~g;break;case 160:r=Z(),t=w0(t,C(r));break;case 161:r=Z(),I0(t,C(r));break;case 162:r=Z(),t=l0(t,C(r));break;case 163:r=Z(),v0(Y(y(),F(r)));break;case 164:r=Z(),t=A0(t,C(r));break;case 165:r=Z(),A0(t,C(r));break;case 166:r=Z(),t=C(r),f&=~(B|_|g),f|=X[t];break;case 167:r=Z(),p(r,t),f&=~(B|_|g),f|=X[t];break;case 168:r=Z(),t=f0(t,C(r));break;case 169:r=Z(),t=J(t,C(r));break;case 170:r=Z(),t=h0(t,C(r));break;case 171:r=Z(),t=n0(t,C(r));break;case 172:r=Z(),z(i,F(r));break;case 173:r=Z(),I(u),u=r;break;case 174:r=Z(),i=F(r),e0(i),f&=~g;break;case 175:r=Z(),s0(r,i),e0(i),f&=~g;break;case 176:r=k(),t=w0(t,C(r));break;case 177:r=k(),I0(t,C(r));break;case 178:r=k(),t=l0(t,C(r));break;case 179:r=k(),v0(Y(y(),F(r)));break;case 180:r=k(),t=A0(t,C(r));break;case 181:r=k(),A0(t,C(r));break;case 182:r=k(),t=C(r),f&=~(B|_|g),f|=X[t];break;case 183:r=k(),p(r,t),f&=~(B|_|g),f|=X[t];break;case 184:r=k(),t=f0(t,C(r));break;case 185:r=k(),t=J(t,C(r));break;case 186:r=k(),t=h0(t,C(r));break;case 187:r=k(),t=n0(t,C(r));break;case 188:r=k(),z(i,F(r));break;case 189:r=k(),I(u),u=r;break;case 190:r=k(),i=F(r),e0(i),f&=~g;break;case 191:r=k(),s0(r,i),e0(i),f&=~g;break;case 192:n=w0(n,E());break;case 193:I0(n,E());break;case 194:n=l0(n,E());break;case 195:v0(S0(y(),k()));break;case 196:n=A0(n,E());break;case 197:A0(n,E());break;case 198:n=E(),f&=~(B|_|g),f|=X[n];break;case 200:n=f0(n,E());break;case 201:n=J(n,E());break;case 202:n=h0(n,E());break;case 203:n=n0(n,E());break;case 204:r=k(),v0(r),e0(r),f&=~g;break;case 206:o=k(),e0(o),f&=~g;break;case 208:r=V(),n=w0(n,C(r));break;case 209:r=V(),I0(n,C(r));break;case 210:r=V(),n=l0(n,C(r));break;case 211:r=V(),v0(S0(y(),F(r)));break;case 212:r=V(),n=A0(n,C(r));break;case 213:r=V(),A0(n,C(r));break;case 214:r=V(),n=C(r),f&=~(B|_|g),f|=X[n];break;case 215:r=V(),p(r,n),f&=~(B|_|g),f|=X[n];break;case 216:r=V(),n=f0(n,C(r));break;case 217:r=V(),n=J(n,C(r));break;case 218:r=V(),n=h0(n,C(r));break;case 219:r=V(),n=n0(n,C(r));break;case 220:r=V(),S=F(r),v0(S),e0(S),f&=~g;break;case 221:r=V(),s0(r,y()),f&=~g;break;case 222:r=V(),o=F(r),e0(o),f&=~g;break;case 223:r=V(),s0(r,o),e0(o),f&=~g;break;case 224:r=Z(),n=w0(n,C(r));break;case 225:r=Z(),I0(n,C(r));break;case 226:r=Z(),n=l0(n,C(r));break;case 227:r=Z(),v0(S0(y(),F(r)));break;case 228:r=Z(),n=A0(n,C(r));break;case 229:r=Z(),A0(n,C(r));break;case 230:r=Z(),n=C(r),f&=~(B|_|g),f|=X[n];break;case 231:r=Z(),p(r,n),f&=~(B|_|g),f|=X[n];break;case 232:r=Z(),n=f0(n,C(r));break;case 233:r=Z(),n=J(n,C(r));break;case 234:r=Z(),n=h0(n,C(r));break;case 235:r=Z(),n=n0(n,C(r));break;case 236:r=Z(),S=F(r),v0(S),e0(S),f&=~g;break;case 237:r=Z(),s0(r,y()),f&=~g;break;case 238:r=Z(),o=F(r),e0(o),f&=~g;break;case 239:r=Z(),s0(r,o),e0(o),f&=~g;break;case 240:r=k(),n=w0(n,C(r));break;case 241:r=k(),I0(n,C(r));break;case 242:r=k(),n=l0(n,C(r));break;case 243:r=k(),v0(S0(y(),F(r)));break;case 244:r=k(),n=A0(n,C(r));break;case 245:r=k(),A0(n,C(r));break;case 246:r=k(),n=C(r),f&=~(B|_|g),f|=X[n];break;case 247:r=k(),p(r,n),f&=~(B|_|g),f|=X[n];break;case 248:r=k(),n=f0(n,C(r));break;case 249:r=k(),n=J(n,C(r));break;case 250:r=k(),n=h0(n,C(r));break;case 251:r=k(),n=n0(n,C(r));break;case 252:r=k(),S=F(r),v0(S),e0(S),f&=~g;break;case 253:r=k(),s0(r,y()),f&=~g;break;case 254:r=k(),o=F(r),e0(o),f&=~g;break;case 255:r=k(),s0(r,o),e0(o),f&=~g;break;case 16:switch(e=E(),T+=M[e],e){case 33:r=i0(k());break;case 34:r=i0(k()),f&(N|B)||(u+=r);break;case 35:r=i0(k()),f&(N|B)&&(u+=r);break;case 36:r=i0(k()),f&N||(u+=r);break;case 37:r=i0(k()),f&N&&(u+=r);break;case 38:r=i0(k()),f&B||(u+=r);break;case 39:r=i0(k()),f&B&&(u+=r);break;case 40:r=i0(k()),f&g||(u+=r);break;case 41:r=i0(k()),f&g&&(u+=r);break;case 42:r=i0(k()),f&_||(u+=r);break;case 43:r=i0(k()),f&_&&(u+=r);break;case 44:r=i0(k()),f&_^(f&g)<<2||(u+=r);break;case 45:r=i0(k()),f&_^(f&g)<<2&&(u+=r);break;case 46:r=i0(k()),f&_^(f&g)<<2||f&B||(u+=r);break;case 47:r=i0(k()),(f&_^(f&g)<<2||f&B)&&(u+=r);break;case 63:f|=R,I(u),I(o),I(x),I(i),x0(W),x0(n),x0(t),x0(f),f|=a0|h,u=F(u0);break;case 131:z(y(),k());break;case 140:z(x,k());break;case 142:x=k(),e0(x),f&=~g;break;case 147:r=V(),z(y(),F(r));break;case 156:r=V(),z(x,F(r));break;case 158:r=V(),x=F(r),e0(x),f&=~g;break;case 159:r=V(),s0(r,x),e0(x),f&=~g;break;case 163:r=Z(),z(y(),F(r));break;case 172:r=Z(),z(x,F(r));break;case 174:r=Z(),x=F(r),e0(x),f&=~g;break;case 175:r=Z(),s0(r,x),e0(x),f&=~g;break;case 179:r=k(),z(y(),F(r));break;case 188:r=k(),z(x,F(r));break;case 190:r=k(),x=F(r),e0(x),f&=~g;break;case 191:r=k(),s0(r,x),e0(x),f&=~g;break;case 206:b=k(),e0(b),f&=~g;break;case 222:r=V(),b=F(r),e0(b),f&=~g;break;case 223:r=V(),s0(r,b),e0(b),f&=~g;break;case 238:r=Z(),b=F(r),e0(b),f&=~g;break;case 239:r=Z(),s0(r,b),e0(b),f&=~g;break;case 254:r=k(),b=F(r),e0(b),f&=~g;break;case 255:r=k(),s0(r,b),e0(b),f&=~g;break}break;case 17:switch(e=E(),T+=M[e],e){case 63:f|=R,I(u),I(o),I(x),I(i),x0(W),x0(n),x0(t),x0(f),f|=a0|h,u=F(N0);break;case 131:z(o,k());break;case 140:z(b,k());break;case 147:r=V(),z(o,F(r));break;case 156:r=V(),z(b,F(r));break;case 163:r=Z(),z(o,F(r));break;case 172:r=Z(),z(b,F(r));break;case 179:r=k(),z(o,F(r));break;case 188:r=k(),z(b,F(r));break}break}return t&=255,n&=255,f&=255,W&=255,i&=65535,x&=65535,o&=65535,b&=65535,u&=65535,T-l},j0=function(){u=F(t0),W=0,f|=h|a0,T=0,t=n=W=i=x=o=b=0},G0=[[2,1,"NEG"],[1,0,"???"],[1,0,"???"],[2,1,"COM"],[2,1,"LSR"],[1,0,"???"],[2,1,"ROR"],[2,1,"ASR"],[2,1,"LSL"],[2,1,"ROL"],[2,1,"DEC"],[1,0,"???"],[2,1,"INC"],[2,1,"TST"],[2,1,"JMP"],[2,1,"CLR"],[1,0,"Prefix"],[1,0,"Prefix"],[1,2,"NOP"],[1,2,"SYNC"],[1,0,"???"],[1,0,"???"],[3,3,"LBRA"],[3,3,"LBSR"],[1,0,"???"],[1,2,"DAA"],[2,4,"ORCC"],[1,0,"???"],[2,4,"ANDCC"],[1,2,"SEX"],[2,20,"EXG"],[2,20,"TFR"],[2,5,"BRA"],[2,5,"BRN"],[2,5,"BHI"],[2,5,"BLS"],[2,5,"BCC"],[2,5,"BCS"],[2,5,"BNE"],[2,5,"BEQ"],[2,5,"BVC"],[2,5,"BVS"],[2,5,"BPL"],[2,5,"BMI"],[2,5,"BGE"],[2,5,"BLT"],[2,5,"BGT"],[2,5,"BLE"],[2,6,"LEAX"],[2,6,"LEAY"],[2,6,"LEAS"],[2,6,"LEAU"],[2,10,"PSHS"],[2,10,"PULS"],[2,11,"PSHU"],[2,11,"PULU"],[1,0,"???"],[1,2,"RTS"],[1,2,"ABX"],[1,2,"RTI"],[2,2,"CWAI"],[1,2,"MUL"],[1,2,"RESET"],[1,2,"SWI1"],[1,2,"NEGA"],[1,0,"???"],[1,0,"???"],[1,2,"COMA"],[1,2,"LSRA"],[1,0,"???"],[1,2,"RORA"],[1,2,"ASRA"],[1,2,"ASLA"],[1,2,"ROLA"],[1,2,"DECA"],[1,0,"???"],[1,2,"INCA"],[1,2,"TSTA"],[1,0,"???"],[1,2,"CLRA"],[1,2,"NEGB"],[1,0,"???"],[1,0,"???"],[1,2,"COMB"],[1,2,"LSRB"],[1,0,"???"],[1,2,"RORB"],[1,2,"ASRB"],[1,2,"ASLB"],[1,2,"ROLB"],[1,2,"DECB"],[1,0,"???"],[1,2,"INCB"],[1,2,"TSTB"],[1,0,"???"],[1,2,"CLRB"],[2,6,"NEG"],[1,0,"???"],[1,0,"???"],[2,6,"COM"],[2,6,"LSR"],[1,0,"???"],[2,6,"ROR"],[2,6,"ASR"],[2,6,"LSL"],[2,6,"ROL"],[2,6,"DEC"],[1,0,"???"],[2,6,"INC"],[2,6,"TST"],[2,6,"JMP"],[2,6,"CLR"],[3,7,"NEG"],[1,0,"???"],[1,0,"???"],[3,7,"COM"],[3,7,"LSR"],[1,0,"???"],[3,7,"ROR"],[3,7,"ASR"],[3,7,"LSL"],[3,7,"ROL"],[3,7,"DEC"],[1,0,"???"],[3,7,"INC"],[3,7,"TST"],[3,7,"JMP"],[3,7,"CLR"],[2,4,"SUBA"],[2,4,"CMPA"],[2,4,"SBCA"],[3,8,"SUBD"],[2,4,"ANDA"],[2,4,"BITA"],[2,4,"LDA"],[1,0,"???"],[2,4,"EORA"],[2,4,"ADCA"],[2,4,"ORA"],[2,4,"ADDA"],[3,8,"CMPX"],[2,5,"BSR"],[3,8,"LDX"],[1,0,"???"],[2,1,"SUBA"],[2,1,"CMPA"],[2,1,"SBCA"],[2,1,"SUBd"],[2,1,"ANDA"],[2,1,"BITA"],[2,1,"LDA"],[2,1,"STA"],[2,1,"EORA"],[2,1,"ADCA"],[2,1,"ORA"],[2,1,"ADDA"],[2,1,"CMPX"],[2,1,"JSR"],[2,1,"LDX"],[2,1,"STX"],[2,6,"SUBA"],[2,6,"CMPA"],[2,6,"SBCA"],[2,6,"SUBD"],[2,6,"ANDA"],[2,6,"BITA"],[2,6,"LDA"],[2,6,"STA"],[2,6,"EORA"],[2,6,"ADCA"],[2,6,"ORA"],[2,6,"ADDA"],[2,6,"CMPX"],[2,6,"JSR"],[2,6,"LDX"],[2,6,"STX"],[3,7,"SUBA"],[3,7,"CMPA"],[3,7,"SBCA"],[3,7,"SUBD"],[3,7,"ANDA"],[3,7,"BITA"],[3,7,"LDA"],[3,7,"STA"],[3,7,"EORA"],[3,7,"ADCA"],[3,7,"ORA"],[3,7,"ADDA"],[3,7,"CMPX"],[3,7,"JSR"],[3,7,"LDX"],[3,7,"STX"],[2,4,"SUBB"],[2,4,"CMPB"],[2,4,"SBCB"],[3,8,"ADDD"],[2,4,"ANDB"],[2,4,"BITB"],[2,4,"LDB"],[1,0,"???"],[2,4,"EORB"],[2,4,"ADCB"],[2,4,"ORB"],[2,4,"ADDB"],[3,8,"LDD"],[1,0,"???"],[3,8,"LDU"],[1,0,"???"],[2,1,"SUBB"],[2,1,"CMPB"],[2,1,"SBCB"],[2,1,"ADDD"],[2,1,"ANDB"],[2,1,"BITB"],[2,1,"LDB"],[2,1,"STB"],[2,1,"EORB"],[2,1,"ADCB"],[2,1,"ORB "],[2,1,"ADDB"],[2,1,"LDD "],[2,1,"STD "],[2,1,"LDU "],[2,1,"STU "],[2,6,"SUBB"],[2,6,"CMPB"],[2,6,"SBCB"],[2,6,"ADDD"],[2,6,"ANDB"],[2,6,"BITB"],[2,6,"LDB"],[2,6,"STB"],[2,6,"EORB"],[2,6,"ADCB"],[2,6,"ORB"],[2,6,"ADDB"],[2,6,"LDD"],[2,6,"STD"],[2,6,"LDU"],[2,6,"STU"],[3,7,"SUBB"],[3,7,"CMPB"],[3,7,"SBCB"],[3,7,"ADDD"],[3,7,"ANDB"],[3,7,"BITB"],[3,7,"LDB"],[3,7,"STB"],[3,7,"EORB"],[3,7,"ADCB"],[3,7,"ORB"],[3,7,"ADDB"],[3,7,"LDD"],[3,7,"STD"],[3,7,"LDU"],[3,7,"STU"]],v={63:[2,2,"SWI3"],131:[4,8,"CMPU"],140:[4,8,"CMPS"],147:[3,1,"CMPU"],156:[3,1,"CMPS"],163:[3,6,"CMPU"],172:[3,6,"CMPS"],179:[4,7,"CMPU"],188:[4,7,"CMPS"]},D={33:[5,3,"LBRN"],34:[5,3,"LBHI"],35:[5,3,"LBLS"],36:[5,3,"LBCC"],37:[5,3,"LBCS"],38:[5,3,"LBNE"],39:[5,3,"LBEQ"],40:[5,3,"LBVC"],41:[5,3,"LBVS"],42:[5,3,"LBPL"],43:[5,3,"LBMI"],44:[5,3,"LBGE"],45:[5,3,"LBLT"],46:[5,3,"LBGT"],47:[5,3,"LBLE"],63:[2,2,"SWI2"],131:[4,8,"CMPD"],140:[4,8,"CMPY"],142:[4,8,"LDY"],147:[3,1,"CMPD"],156:[3,1,"CMPY"],158:[3,1,"LDY"],159:[3,1,"STY"],163:[3,6,"CMPD"],172:[3,6,"CMPY"],174:[3,6,"LDY"],175:[3,6,"STY"],179:[4,7,"CMPD"],188:[4,7,"CMPY"],190:[4,7,"LDY"],191:[4,7,"STY"],206:[4,8,"LDS"],222:[3,1,"LDS"],223:[3,1,"STS"],238:[3,6,"LDS"],239:[3,6,"STS"],254:[4,7,"LDS"],255:[4,7,"STS"]},w=function(l,r,S,q,e,a){var P=function(xe,qe){for(var Pe=xe.toString(16);Pe.length>5];if(!(ue&128)){var Se=ue&31;Se>15&&(Se=Se-32),G+=Se+","+M0;break}var Qe=ue&16,Oe=ue&15,ge=S>127?S-256:S,pe=S*256+q>32767?S*256+q-65536:S*256+q;if(Qe)switch(Oe){case 0:G+="???";break;case 1:G+="[,"+M0+"++]";break;case 2:G+="???";break;case 3:G+="[,--"+M0+"]";break;case 4:G+="[,"+M0+"]";break;case 5:G+="[B,"+M0+"]";break;case 6:G+="[A,"+M0+"]";break;case 7:G+="???";break;case 8:G+="["+ge+","+M0+"]",K0++;break;case 9:G+="["+pe+","+M0+"]",K0+=2;break;case 10:G+="???";break;case 11:G+="[D,"+M0+"]";break;case 12:G+="["+ge+",PC]",K0++;break;case 13:G+="["+pe+",PC]",K0+=2;break;case 14:G+="???";break;case 15:G+="[$"+$0(S*256+q)+"]",K0+=2;break}else switch(Oe){case 0:G+=","+M0+"+";break;case 1:G+=","+M0+"++";break;case 2:G+=",-"+M0;break;case 3:G+=",--"+M0;break;case 4:G+=","+M0;break;case 5:G+="B,"+M0;break;case 6:G+="A,"+M0;break;case 7:G+="???";break;case 8:G+=ge+","+M0,K0++;break;case 9:G+=pe+","+M0,K0+=2;break;case 10:G+="???";break;case 11:G+="D,"+M0;break;case 12:G+=ge+",PC",K0++;break;case 13:G+=pe+",PC",K0+=2;break;case 14:G+="???";break;case 15:G+="$"+$0(S*256+q),K0+=2;break}break;case 7:G+=" $"+$0(r*256+S);break;case 8:G+=" #$"+$0(r*256+S);break;case 10:for(O0=["PC","U","Y","X","DP","B","A","CC"],ne=[],Q0=0;Q0<8;Q0++)(r&1)!==0&&ne.push(O0[7-Q0]),r>>=1;G+=" "+ne.join(",");break;case 11:for(O0=["PC","S","Y","X","DP","B","A","CC"],ne=[],Q0=0;Q0<8;Q0++)(r&1)!==0&&ne.push(O0[7-Q0]),r>>=1;G+=" "+ne.join(",");break;case 20:O0=["D","X","Y","U","S","PC","?","?","A","B","CC","DP","?","?","?","?"],G+=" "+O0[r>>4]+","+O0[r&15];break}return{line:G,nbytes:K0}};return{steps:function(l){for(;l>0;)l-=q0()},runFrame:function(l){for(;T>S;q===0?l+=r[S].toLowerCase():l+=r[S]}return l},disasm:w,isStable:function(){return!0}}}var dt=function(){var d=this;this.powerOn=function(){this.reset()},this.powerOff=function(){},this.clockPulse=function(){n&&(a0++,h[a0]())},this.connectBus=function(m){t=m},this.setRDY=function(m){n=m},this.isRDY=function(){return n},this.reset=function(){g=1,a0=-1,h=[U],i=t.read(T)|t.read(T+1)<<8,this.setRDY(!0)};var t,n=!1,i=0,x=0,o=0,b=0,u=0,f=0,W=0,N=0,g=0,B=0,_=0,a0=-1,_0=-1,h,R=0,t0=0,H=0,K=!1,s=0,c=0,u0=0;let N0=65530,T=65532,p0=65534,p=0,C=1,V0=7,M=6,X=1,m0=0;this.debug=!1,this.trace=!1;var U=function(){_0=t.read(i),h=a[_0],a0=0,i++},y=U,v0=function(){t.read(i)},x0=function(){c=t.read(i),i++},I=function(){t0=t.read(i),i++},U0=function(){t0|=t.read(i)<<8,i++},Y0=function(){t0=t.read(H)},F0=function(){t0|=t.read(H)<<8},D0=function(){H=t.read(i),i++},Q=function(){H|=t.read(i)<<8,i++},b0=function(){H=t.read(s)},E0=function(){H|=t.read(s)<<8},d0=function(){var m=(H&255)+b;K=m>255,H=H&65280|m&255},y0=function(){var m=(H&255)+u;K=m>255,H=H&65280|m&255},W0=function(){var m=(H&255)+1;K=m>255,H=H&65280|m&255},Z0=function(){K&&(H=H+256&65535)},T0=function(){s=t.read(i),i++},k0=function(){s|=t.read(i)<<8,i++},c0=function(){var m=(s&255)+1;s=s&65280|m&255},i0=function(){R=t.read(i),i++},E=function(){R=t.read(t0)},k=function(){R=t.read(H)},F=function(){t.write(t0,R)},s0=function(){t.write(H,R)},Z=function(){var m=i&255,A=m+c&255;c>127?u0=A>m?-256:0:u0=A>>7,W=m>>>6&1,N=m>>>3&1,g=m>>>2&1,B=m>>>1&1,_=m&1},z=function(m){d.debug&&d.breakpoint("Illegal Opcode: "+m)},H0=function(){z("KIL/HLT/JAM");let m=i-1&65535;throw new Ye(`CPU executed halt instruction ($${$(_0,2)}) at $${$(m,4)}`)},r0=function(m){return[U,v0,function(){m(),y()}]},o0=function(m){return[U,i0,function(){m(),y()}]},R0=function(m){return[U,I,E,function(){m(),y()}]},B0=function(m){return[U,I,U0,E,function(){m(),y()}]},X0=function(m){return[U,D0,k,function(){d0(),Y0()},function(){W0(),F0()},E,function(){m(),y()}]},f0=function(m){var A=m===p?d0:y0;return function(j){return[U,D0,Q,function(){A(),k(),Z0()},function(){K?k():(j(),y())},function(){j(),y()}]}},h0=function(m){var A=m===p?d0:y0;return function(j){return[U,D0,k,function(){A(),k()},function(){j(),y()}]}},A0=function(m){return[U,T0,b0,function(){c0(),E0()},function(){y0(),k(),Z0()},function(){K?k():(m(),y())},function(){m(),y()}]},z0=function(m){return[U,I,function(){m(),F()},y]},V=function(m){return[U,I,U0,function(){m(),F()},y]},q0=function(m){return[U,D0,k,function(){d0(),Y0()},function(){W0(),F0()},function(){m(),F()},y]},j0=function(m){var A=m===p?d0:y0;return function(j){return[U,D0,Q,function(){A(),k(),Z0()},function(){j(),s0()},y]}},G0=function(m){var A=m===p?d0:y0;return function(j){return[U,D0,k,function(){A(),j(),s0()},y]}},v=function(m){return[U,T0,b0,function(){c0(),E0()},function(){y0(),k(),Z0()},function(){m(),s0()},y]},D=function(m){return[U,I,E,F,function(){m(),F()},y]},w=function(m){return[U,I,U0,E,F,function(){m(),F()},y]},l=function(m){var A=m===p?d0:y0;return function(j){return[U,D0,k,function(){A(),k()},s0,function(){j(),s0()},y]}},r=function(m){var A=m===p?d0:y0;return function(j){return[U,D0,Q,function(){A(),k(),Z0()},k,s0,function(){j(),s0()},y]}},S=function(m){return[U,D0,k,function(){d0(),Y0()},function(){W0(),F0()},E,F,function(){m(),F()},y]},q=function(m){return[U,T0,b0,function(){c0(),E0()},function(){y0(),k(),Z0()},k,s0,function(){m(),s0()},y]},e=new Array(256),a=new Array(256);e[0]="BRK",a[0]=dn(),e[1]="ORA",a[1]=ce(X0),e[2]="uKIL",a[2]=J0(),e[3]="uSLO",a[3]=Ae(S),e[4]="uNOP",a[4]=P0(R0),e[5]="ORA",a[5]=ce(R0),e[6]="ASL",a[6]=Ze(D),e[7]="uSLO",a[7]=Ae(D),e[8]="PHP",a[8]=xn(),e[9]="ORA",a[9]=ce(o0),e[10]="ASL",a[10]=P(),e[11]="uANC",a[11]=_t(o0),e[12]="uNOP",a[12]=P0(B0),e[13]="ORA",a[13]=ce(B0),e[14]="ASL",a[14]=Ze(w),e[15]="uSLO",a[15]=Ae(w),e[16]="BPL",a[16]=oe(V0,0),e[17]="ORA",a[17]=ce(A0),e[18]="uKIL",a[18]=J0(),e[19]="uSLO",a[19]=Ae(q),e[20]="uNOP",a[20]=P0(h0(p)),e[21]="ORA",a[21]=ce(h0(p)),e[22]="ASL",a[22]=Ze(l(p)),e[23]="uSLO",a[23]=Ae(l(p)),e[24]="CLC",a[24]=L0(),e[25]="ORA",a[25]=ce(f0(C)),e[26]="uNOP",a[26]=P0(r0),e[27]="uSLO",a[27]=Ae(r(C)),e[28]="uNOP",a[28]=P0(f0(p)),e[29]="ORA",a[29]=ce(f0(p)),e[30]="ASL",a[30]=Ze(r(p)),e[31]="uSLO",a[31]=Ae(r(p)),e[32]="JSR",a[32]=bn(),e[33]="AND",a[33]=ae(X0),e[34]="uKIL",a[34]=J0(),e[35]="uRLA",a[35]=de(S),e[36]="BIT",a[36]=Pt(R0),e[37]="AND",a[37]=ae(R0),e[38]="ROL",a[38]=Ue(D),e[39]="uRLA",a[39]=de(D),e[40]="PLP",a[40]=mn(),e[41]="AND",a[41]=ae(o0),e[42]="ROL",a[42]=M0(),e[43]="uANC",a[43]=_t(o0),e[44]="BIT",a[44]=Pt(B0),e[45]="AND",a[45]=ae(B0),e[46]="ROL",a[46]=Ue(w),e[47]="uRLA",a[47]=de(w),e[48]="BMI",a[48]=oe(V0,1),e[49]="AND",a[49]=ae(A0),e[50]="uKIL",a[50]=J0(),e[51]="uRLA",a[51]=de(q),e[52]="uNOP",a[52]=P0(h0(p)),e[53]="AND",a[53]=ae(h0(p)),e[54]="ROL",a[54]=Ue(l(p)),e[55]="uRLA",a[55]=de(l(p)),e[56]="SEC",a[56]=Qe(),e[57]="AND",a[57]=ae(f0(C)),e[58]="uNOP",a[58]=P0(r0),e[59]="uRLA",a[59]=de(r(C)),e[60]="uNOP",a[60]=P0(f0(p)),e[61]="AND",a[61]=ae(f0(p)),e[62]="ROL",a[62]=Ue(r(p)),e[63]="uRLA",a[63]=de(r(p)),e[64]="RTI",a[64]=Cn(),e[65]="EOR",a[65]=fe(X0),e[66]="uKIL",a[66]=J0(),e[67]="uSRE",a[67]=Ce(S),e[68]="uNOP",a[68]=P0(R0),e[69]="EOR",a[69]=fe(R0),e[70]="LSR",a[70]=Te(D),e[71]="uSRE",a[71]=Ce(D),e[72]="PHA",a[72]=un(),e[73]="EOR",a[73]=fe(o0),e[74]="LSR",a[74]=G(),e[75]="uASR",a[75]=nn(o0),e[76]="JMP",a[76]=Sn(),e[77]="EOR",a[77]=fe(B0),e[78]="LSR",a[78]=Te(w),e[79]="uSRE",a[79]=Ce(w),e[80]="BVC",a[80]=oe(M,0),e[81]="EOR",a[81]=fe(A0),e[82]="uKIL",a[82]=J0(),e[83]="uSRE",a[83]=Ce(q),e[84]="uNOP",a[84]=P0(h0(p)),e[85]="EOR",a[85]=fe(h0(p)),e[86]="LSR",a[86]=Te(l(p)),e[87]="uSRE",a[87]=Ce(l(p)),e[88]="CLI",a[88]=O0(),e[89]="EOR",a[89]=fe(f0(C)),e[90]="uNOP",a[90]=P0(r0),e[91]="uSRE",a[91]=Ce(r(C)),e[92]="uNOP",a[92]=P0(f0(p)),e[93]="EOR",a[93]=fe(f0(p)),e[94]="LSR",a[94]=Te(r(p)),e[95]="uSRE",a[95]=Ce(r(p)),e[96]="RTS",a[96]=vn(),e[97]="ADC",a[97]=re(X0),e[98]="uKIL",a[98]=J0(),e[99]="uRRA",a[99]=he(S),e[100]="uNOP",a[100]=P0(R0),e[101]="ADC",a[101]=re(R0),e[102]="ROR",a[102]=Xe(D),e[103]="uRRA",a[103]=he(D),e[104]="PLA",a[104]=ln(),e[105]="ADC",a[105]=re(o0),e[106]="ROR",a[106]=Se(),e[107]="uARR",a[107]=tn(o0),e[108]="JMP",a[108]=gn(),e[109]="ADC",a[109]=re(B0),e[110]="ROR",a[110]=Xe(w),e[111]="uRRA",a[111]=he(w),e[112]="BVS",a[112]=oe(M,1),e[113]="ADC",a[113]=re(A0),e[114]="uKIL",a[114]=J0(),e[115]="uRRA",a[115]=he(q),e[116]="uNOP",a[116]=P0(h0(p)),e[117]="ADC",a[117]=re(h0(p)),e[118]="ROR",a[118]=Xe(l(p)),e[119]="uRRA",a[119]=he(l(p)),e[120]="SEI",a[120]=ge(),e[121]="ADC",a[121]=re(f0(C)),e[122]="uNOP",a[122]=P0(r0),e[123]="uRRA",a[123]=he(r(C)),e[124]="uNOP",a[124]=P0(f0(p)),e[125]="ADC",a[125]=re(f0(p)),e[126]="ROR",a[126]=Xe(r(p)),e[127]="uRRA",a[127]=he(r(p)),e[128]="uNOP",a[128]=P0(o0),e[129]="STA",a[129]=le(q0),e[130]="uNOP",a[130]=P0(o0),e[131]="uSAX",a[131]=Ee(q0),e[132]="STY",a[132]=rt(z0),e[133]="STA",a[133]=le(z0),e[134]="STX",a[134]=nt(z0),e[135]="uSAX",a[135]=Ee(z0),e[136]="DEY",a[136]=ee(),e[137]="uNOP",a[137]=P0(o0),e[138]="TXA",a[138]=Pe(),e[139]="uANE",a[139]=en(o0),e[140]="STY",a[140]=rt(V),e[141]="STA",a[141]=le(V),e[142]="STX",a[142]=nt(V),e[143]="uSAX",a[143]=Ee(V),e[144]="BCC",a[144]=oe(m0,0),e[145]="STA",a[145]=le(v),e[146]="uKIL",a[146]=J0(),e[147]="uSHA",a[147]=kt(v),e[148]="STY",a[148]=rt(G0(p)),e[149]="STA",a[149]=le(G0(p)),e[150]="STX",a[150]=nt(G0(C)),e[151]="uSAX",a[151]=Ee(G0(C)),e[152]="TYA",a[152]=qt(),e[153]="STA",a[153]=le(j0(C)),e[154]="TXS",a[154]=Qt(),e[155]="uSHS",a[155]=sn(j0(C)),e[156]="uSHY",a[156]=on(j0(p)),e[157]="STA",a[157]=le(j0(p)),e[158]="uSHX",a[158]=cn(j0(C)),e[159]="uSHA",a[159]=kt(j0(C)),e[160]="LDY",a[160]=Re(o0),e[161]="LDA",a[161]=se(X0),e[162]="LDX",a[162]=we(o0),e[163]="uLAX",a[163]=_e(X0),e[164]="LDY",a[164]=Re(R0),e[165]="LDA",a[165]=se(R0),e[166]="LDX",a[166]=we(R0),e[167]="uLAX",a[167]=_e(R0),e[168]="TAY",a[168]=xe(),e[169]="LDA",a[169]=se(o0),e[170]="TAX",a[170]=pe(),e[171]="uLXA",a[171]=an(o0),e[172]="LDY",a[172]=Re(B0),e[173]="LDA",a[173]=se(B0),e[174]="LDX",a[174]=we(B0),e[175]="uLAX",a[175]=_e(B0),e[176]="BCS",a[176]=oe(m0,1),e[177]="LDA",a[177]=se(A0),e[178]="uKIL",a[178]=J0(),e[179]="uLAX",a[179]=_e(A0),e[180]="LDY",a[180]=Re(h0(p)),e[181]="LDA",a[181]=se(h0(p)),e[182]="LDX",a[182]=we(h0(C)),e[183]="uLAX",a[183]=_e(h0(C)),e[184]="CLV",a[184]=ne(),e[185]="LDA",a[185]=se(f0(C)),e[186]="TSX",a[186]=qe(),e[187]="uLAS",a[187]=rn(f0(C)),e[188]="LDY",a[188]=Re(f0(p)),e[189]="LDA",a[189]=se(f0(p)),e[190]="LDX",a[190]=we(f0(C)),e[191]="uLAX",a[191]=_e(f0(C)),e[192]="CPY",a[192]=tt(o0),e[193]="CMP",a[193]=ie(X0),e[194]="uNOP",a[194]=P0(o0),e[195]="uDCP",a[195]=me(S),e[196]="CPY",a[196]=tt(R0),e[197]="CMP",a[197]=ie(R0),e[198]="DEC",a[198]=Me(D),e[199]="uDCP",a[199]=me(D),e[200]="INY",a[200]=Ge(),e[201]="CMP",a[201]=ie(o0),e[202]="DEX",a[202]=Q0(),e[203]="uSBX",a[203]=fn(o0),e[204]="CPY",a[204]=tt(B0),e[205]="CMP",a[205]=ie(B0),e[206]="DEC",a[206]=Me(w),e[207]="uDCP",a[207]=me(w),e[208]="BNE",a[208]=oe(X,0),e[209]="CMP",a[209]=ie(A0),e[210]="uKIL",a[210]=J0(),e[211]="uDCP",a[211]=me(q),e[212]="uNOP",a[212]=P0(h0(p)),e[213]="CMP",a[213]=ie(h0(p)),e[214]="DEC",a[214]=Me(l(p)),e[215]="uDCP",a[215]=me(l(p)),e[216]="CLD",a[216]=$0(),e[217]="CMP",a[217]=ie(f0(C)),e[218]="uNOP",a[218]=P0(r0),e[219]="uDCP",a[219]=me(r(C)),e[220]="uNOP",a[220]=P0(f0(p)),e[221]="CMP",a[221]=ie(f0(p)),e[222]="DEC",a[222]=Me(r(p)),e[223]="uDCP",a[223]=me(r(p)),e[224]="CPX",a[224]=et(o0),e[225]="SBC",a[225]=te(X0),e[226]="uNOP",a[226]=P0(o0),e[227]="uISB",a[227]=be(S),e[228]="CPX",a[228]=et(R0),e[229]="SBC",a[229]=te(R0),e[230]="INC",a[230]=Fe(D),e[231]="uISB",a[231]=be(D),e[232]="INX",a[232]=K0(),e[233]="SBC",a[233]=te(o0),e[234]="NOP",a[234]=ue(),e[235]="SBC",a[235]=te(o0),e[236]="CPX",a[236]=et(B0),e[237]="SBC",a[237]=te(B0),e[238]="INC",a[238]=Fe(w),e[239]="uISB",a[239]=be(w),e[240]="BEQ",a[240]=oe(X,1),e[241]="SBC",a[241]=te(A0),e[242]="uKIL",a[242]=J0(),e[243]="uISB",a[243]=be(q),e[244]="uNOP",a[244]=P0(h0(p)),e[245]="SBC",a[245]=te(h0(p)),e[246]="INC",a[246]=Fe(l(p)),e[247]="uISB",a[247]=be(l(p)),e[248]="SED",a[248]=Oe(),e[249]="SBC",a[249]=te(f0(C)),e[250]="uNOP",a[250]=P0(r0),e[251]="uISB",a[251]=be(r(C)),e[252]="uNOP",a[252]=P0(f0(p)),e[253]="SBC",a[253]=te(f0(p)),e[254]="INC",a[254]=Fe(r(p)),e[255]="uISB",a[255]=be(r(p));function P(){return r0(function(){Y(o>127),o=o<<1&255,L(o),O(o)})}function L0(){return r0(function(){_=0})}function $0(){return r0(function(){N=0})}function O0(){return r0(function(){g=0})}function ne(){return r0(function(){W=0})}function Q0(){return r0(function(){b=b-1&255,L(b),O(b)})}function ee(){return r0(function(){u=u-1&255,L(u),O(u)})}function K0(){return r0(function(){b=b+1&255,L(b),O(b)})}function Ge(){return r0(function(){u=u+1&255,L(u),O(u)})}function G(){return r0(function(){_=o&1,o>>>=1,L(o),f=0})}function ue(){return r0(function(){})}function M0(){return r0(function(){var m=o>127;o=(o<<1|_)&255,Y(m),L(o),O(o)})}function Se(){return r0(function(){var m=o&1;o=o>>>1|_<<7,Y(m),L(o),O(o)})}function Qe(){return r0(function(){_=1})}function Oe(){return r0(function(){N=1})}function ge(){return r0(function(){g=1})}function pe(){return r0(function(){b=o,L(b),O(b)})}function xe(){return r0(function(){u=o,L(u),O(u)})}function qe(){return r0(function(){b=x,L(b),O(b)})}function Pe(){return r0(function(){o=b,L(o),O(o)})}function Qt(){return r0(function(){x=b})}function qt(){return r0(function(){o=u,L(o),O(o)})}function J0(){return[U,function(){H0()},function(){a0--}]}function P0(m){return m(function(){z("NOP/DOP")})}function re(m){return m(function(){if(N){var A=R,j=(o&15)+(A&15)+_;j>9&&(j+=6);var g0=(o>>4)+(A>>4)+(j>15?1:0)<<4;L(o+A+_&255),O(g0),w0((o^g0)&~(o^A)&128),g0>159&&(g0+=96),Y(g0>255),o=(g0|j&15)&255}else{var C0=o+R+_;Y(C0>255),w0((o^C0)&(R^C0)&128),o=C0&255,L(o),O(o)}})}function ae(m){return m(function(){o&=R,L(o),O(o)})}function Pt(m){return m(function(){var A=R;L(o&A),w0(A&64),O(A)})}function ie(m){return m(function(){var A=o-R&255;Y(o>=R),L(A),O(A)})}function et(m){return m(function(){var A=b-R&255;Y(b>=R),L(A),O(A)})}function tt(m){return m(function(){var A=u-R&255;Y(u>=R),L(A),O(A)})}function fe(m){return m(function(){o^=R,L(o),O(o)})}function se(m){return m(function(){o=R,L(o),O(o)})}function we(m){return m(function(){b=R,L(b),O(b)})}function Re(m){return m(function(){u=R,L(u),O(u)})}function ce(m){return m(function(){o|=R,L(o),O(o)})}function te(m){return m(function(){if(N){var A=R,j=(o&15)-(A&15)-(1-_),g0=(o>>4)-(A>>4)-(j<0?1:0);j<0&&(j-=6),g0<0&&(g0-=6);var C0=o-A-(1-_);Y(~C0&256),w0((o^A)&(o^C0)&128),L(C0&255),O(C0),o=(g0<<4|j&15)&255}else A=~R&255,C0=o+A+_,Y(C0>255),w0((o^C0)&(A^C0)&128),o=C0&255,L(o),O(o)})}function _t(m){return m(function(){z("ANC"),o&=R,L(o),f=_=o&128?1:0})}function en(m){return m(function(){z("ANE")})}function tn(m){return m(function(){z("ARR");var A=o&R,j=_?128:0;A=A>>>1|j,o=A,L(A),O(A);var g0=o&96;g0==96?(_=1,W=0):g0==0?(_=0,W=0):g0==32?(_=0,W=1):g0==64&&(_=1,W=1)})}function nn(m){return m(function(){z("ASR");var A=o&R;_=A&1,A=A>>>1,o=A,L(A),f=0})}function rn(m){return m(function(){z("LAS");var A=x&R;o=A,b=A,x=A,L(A),O(A)})}function _e(m){return m(function(){z("LAX");var A=R;o=A,b=A,L(A),O(A)})}function an(m){return m(function(){z("LXA");var A=o&R;o=A,b=A,L(A),O(A)})}function fn(m){return m(function(){z("SBX");var A=o&b,j=R,g0=A-j&255;b=g0,Y(A>=j),L(g0),O(g0)})}function le(m){return m(function(){R=o})}function nt(m){return m(function(){R=b})}function rt(m){return m(function(){R=u})}function Ee(m){return m(function(){z("SAX"),R=o&b})}function kt(m){return m(function(){z("SHA"),R=o&b&(H>>>8)+1&255})}function sn(m){return m(function(){z("SHS");var A=o&b;x=A,R=A&(H>>>8)+1&255})}function cn(m){return m(function(){z("SHX"),R=b&(H>>>8)+1&255})}function on(m){return m(function(){z("SHY"),R=u&(H>>>8)+1&255})}function Ze(m){return m(function(){Y(R>127);var A=R<<1&255;R=A,L(A),O(A)})}function Me(m){return m(function(){var A=R-1&255;R=A,L(A),O(A)})}function Fe(m){return m(function(){var A=R+1&255;R=A,L(A),O(A)})}function Te(m){return m(function(){_=R&1,R>>>=1,L(R),f=0})}function Ue(m){return m(function(){var A=R>127,j=(R<<1|_)&255;R=j,Y(A),L(j),O(j)})}function Xe(m){return m(function(){var A=R&1,j=R>>>1|_<<7;R=j,Y(A),L(j),O(j)})}function me(m){return m(function(){z("DCP");var A=R-1&255;R=A,A=o-A,Y(A>=0),L(A),O(A)})}function be(m){return m(function(){if(z("ISB"),R=R+1&255,N){var A=R,j=(o&15)-(A&15)-(1-_),g0=(o>>4)-(A>>4)-(j<0?1:0);j<0&&(j-=6),g0<0&&(g0-=6);var C0=o-A-(1-_);Y(~C0&256),w0((o^A)&(o^C0)&128),L(C0&255),O(C0),o=(g0<<4|j&15)&255}else A=~R&255,C0=o+A+_,Y(C0>255),w0((o^C0)&(A^C0)&128),o=C0&255,L(o),O(o)})}function de(m){return m(function(){z("RLA");var A=R,j=_;Y(A&128),A=(A<<1|j)&255,R=A,o&=A,L(A),O(A)})}function he(m){return m(function(){z("RRA");var A=R,j=_?128:0;if(Y(A&1),A=A>>>1|j,R=A,N){var g0=R,C0=(o&15)+(g0&15)+_;C0>9&&(C0+=6);var ke=(o>>4)+(g0>>4)+(C0>15?1:0)<<4;L(o+g0+_&255),O(ke),w0((o^ke)&~(o^g0)&128),ke>159&&(ke+=96),Y(ke>255),o=(ke|C0&15)&255}else{var He=o+R+_;Y(He>255),w0((o^He)&(R^He)&128),o=He&255,L(o),O(o)}})}function Ae(m){return m(function(){z("SLO");var A=R;Y(A&128),A=A<<1&255,R=A,A=o|A,o=A,L(A),O(A)})}function Ce(m){return m(function(){z("SRE");var A=R;Y(A&1),A=A>>>1,R=A,A=(o^A)&255,o=A,L(A),O(A)})}function un(){return[U,v0,function(){J(o)},y]}function xn(){return[U,v0,function(){J(l0())},y]}function ln(){return[U,v0,S0,function(){o=n0(),L(o),O(o)},y]}function mn(){return[U,v0,S0,function(){I0(n0())},y]}function bn(){return[U,I,S0,function(){J(i>>>8&255)},function(){J(i&255)},U0,function(){i=t0,y()}]}function dn(){return[U,i0,function(){d.debug&&d.breakpoint("BRK "+R),J(i>>>8&255)},function(){J(i&255)},function(){J(l0())},function(){t0=t.read(p0)},function(){t0|=t.read(p0+1)<<8},function(){i=t0,g=1,y()}]}function hn(){return[U,i0,function(){d.debug&&d.breakpoint("IRQ "+R),J(i>>>8&255)},function(){J(i&255)},function(){J(l0()&-17)},function(){t0=t.read(p0)},function(){t0|=t.read(p0+1)<<8},function(){i=t0,y()}]}function An(){return[U,i0,function(){d.debug&&d.breakpoint("NMI "+R),J(i>>>8&255)},function(){J(i&255)},function(){J(l0()&-17)},function(){t0=t.read(N0)},function(){t0|=t.read(N0+1)<<8},function(){i=t0,y()}]}function Cn(){return[U,v0,S0,function(){I0(n0())},function(){t0=n0()},function(){t0|=n0()<<8},function(){i=t0,y()}]}function vn(){return[U,v0,S0,function(){t0=n0()},function(){t0|=n0()<<8},function(){i=t0,i0()},y]}function Sn(){return[U,I,U0,function(){i=t0,y()}]}function gn(){return[U,T0,k0,b0,function(){c0(),E0()},function(){i=H,y()}]}function oe(m,A){var j;return m===X?j=function(){return B===A}:m===V0?j=function(){return f===A}:m===m0?j=function(){return _===A}:j=function(){return W===A},[U,x0,function(){j()?(v0(),Z()):y()},function(){u0?(v0(),e0()):y()},y]}this.saveState=function(){return{PC:i-1&65535,A:o,X:b,Y:u,SP:x,N:f,V:W,D:N,I:g,Z:B,C:_,T:a0,o:_0,R:n?1:0,d:R,AD:t0,BA:H,BC:K?1:0,IA:s,bo:c,boa:u0}},this.loadState=function(m){i=m.PC+1&65535,o=m.A,b=m.X,u=m.Y,x=m.SP,f=m.N,W=m.V,N=m.D,g=m.I,B=m.Z,_=m.C,a0=m.T,_0=m.o,n=!!m.R,R=m.d,t0=m.AD,H=m.BA,K=!!m.BC,s=m.IA,c=m.bo,u0=m.boa,h=_0<0?[U]:a[_0]},this.toString=function(){return"CPU PC: "+i.toString(16)+" op: "+_0.toString()+" T: "+a0+" data: "+R+` - A: `+o.toString(16)+" X: "+b.toString(16)+" Y: "+u.toString(16)+" SP: "+x.toString(16)+" N"+f+" V"+W+" D"+N+" I"+g+" Z"+B+" C"+_+" "},this.breakpoint=function(m){if(this.trace)var A="CPU Breakpoint! "+(m?"("+m+")":"")+` - -`+this.toString()};var wt=[7,6,0,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,0,6,0,6,3,3,3,3,2,0,2,0,4,4,4,4,2,6,0,0,4,4,4,4,2,5,2,0,0,5,0,0,2,6,2,6,3,3,3,3,2,2,2,0,4,4,4,4,2,5,0,5,4,4,4,4,2,4,2,0,4,4,4,4,2,6,0,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,2,6,0,8,3,3,5,5,2,2,2,0,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7],pn=[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1],Pn=[1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,3,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,0,2,0,2,2,2,2,2,1,0,1,0,3,3,3,3,2,2,0,0,2,2,2,3,1,3,1,0,0,3,0,0,2,2,2,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3],Mn=[1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,3,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,0,2,0,0,2,2,2,0,1,0,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,0,3,0,0,2,2,2,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0];this.getOpcodeMetadata=function(m,A){return{opcode:m,mnenomic:e[m],minCycles:wt[m],maxCycles:wt[m]+pn[m],insnlength:Pn[m]}},this.setNMI=function(){h=An(),a0=1,i=i-1&65535},this.setIRQ=function(){g||(h=hn(),a0=1,i=i-1&65535)},this.getSP=function(){return x},this.getPC=function(){return i-1&65535},this.getT=function(){return a0},this.isHalted=function(){return e[_0]=="uKIL"},this.isPCStable=function(){return a0==0}};var Ht=class{constructor(){this.cpu=new dt;this.interruptType=0}connectMemoryBus(t){this.cpu.connectBus(t)}advanceClock(){if(this.interruptType&&this.isStable()){switch(this.interruptType){case 1:this.cpu.setNMI();break;case 2:this.cpu.setIRQ();break}this.interruptType=0}this.cpu.clockPulse()}advanceInsn(){do this.advanceClock();while(!this.isStable())}reset(){this.cpu.reset(),this.interruptType=0}interrupt(t){this.interruptType!=1&&(this.interruptType=t)}NMI(){this.interrupt(1)}IRQ(){this.interrupt(2)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.isHalted()}saveState(){var t=this.cpu.saveState();return t.it=this.interruptType,t}loadState(t){this.cpu.loadState(t),this.interruptType=t.it}isStable(){return this.cpu.isPCStable()}getOpcodeMetadata(t){return this.cpu.getOpcodeMetadata(t)}};var Ne=class{constructor(t){this.maxROMSize=262144;this.videoOffsetBytes=0;this.prefix=t;var n=this;this.cpu={getPC:n.getPC.bind(n),getSP:n.getSP.bind(n),isStable:n.isStable.bind(n),reset:n.reset.bind(n),saveState:()=>n.getCPUState(),loadState:()=>{console.log("loadState not implemented")},connectMemoryBus(){console.log("connectMemoryBus not implemented")}}}getImports(t){return{}}async fetchWASM(){var t=await fetch("res/"+this.prefix+"/"+this.prefix+".wasm");if(t.status==200||t.size){var n=await t.arrayBuffer(),i=await WebAssembly.compile(n),x=await WebAssembly.instantiate(i,this.getImports(i));this.instance=x,this.exports=x.exports}else throw new Error("could not load WASM file")}allocateBIOS(t){this.biosptr=this.exports.malloc(t.byteLength),this.biosarr=new Uint8Array(this.exports.memory.buffer,this.biosptr,t.byteLength)}async fetchBIOS(){var t=await fetch("res/"+this.prefix+"/"+this.prefix+".bios");if(t.status==200||t.size){var n=new Uint8Array(await t.arrayBuffer());this.allocateBIOS(n),this.loadBIOS(n)}else throw new Error("could not load BIOS file")}async initWASM(){this.sys=this.exports.machine_init(this.biosptr);let t=this.exports.machine_get_state_size();this.stateptr=this.exports.malloc(t);let n=this.exports.machine_get_controls_state_size();this.ctrlstateptr=this.exports.malloc(n);let i=this.exports.machine_get_cpu_state_size();this.cpustateptr=this.exports.malloc(i),this.romptr=this.exports.malloc(this.maxROMSize),this.statearr=new Uint8Array(this.exports.memory.buffer,this.stateptr,t),this.ctrlstatearr=new Uint8Array(this.exports.memory.buffer,this.ctrlstateptr,n),this.cpustatearr=new Uint8Array(this.exports.memory.buffer,this.cpustateptr,i);let x=4096*4;this.audioarr=new Float32Array(this.exports.memory.buffer,this.exports.machine_get_sample_buffer(),x),this.romarr=new Uint8Array(this.exports.memory.buffer,this.romptr,this.maxROMSize),console.log("machine_init",this.sys,t,n,i,x)}async loadWASM(){await this.fetchWASM(),this.exports.memory.grow(96),await this.fetchBIOS(),await this.initWASM()}getPC(){return this.exports.machine_cpu_get_pc(this.sys)}getSP(){return this.exports.machine_cpu_get_sp(this.sys)}isStable(){return this.exports.machine_cpu_is_stable(this.sys)}loadROM(t){if(t.length>this.maxROMSize)throw new Ye(`Rom size too big: ${t.length} bytes`);this.romarr.set(t),this.romlen=t.length,console.log("load rom",t.length,"bytes"),this.reset()}loadBIOS(t){this.biosarr.set(t)}reset(){this.exports.machine_reset(this.sys)}read(t){return this.exports.machine_mem_read(this.sys,t&65535)}readConst(t){return this.exports.machine_mem_read(this.sys,t&65535)}write(t,n){this.exports.machine_mem_write(this.sys,t&65535,n&255)}getAudioParams(){return{sampleRate:44100,stereo:!1}}connectVideo(t){this.pixel_dest=t;var n=this.exports.machine_get_pixel_buffer(this.sys);console.log("connectVideo",n,t.length),this.pixel_src=new Uint32Array(this.exports.memory.buffer,n+this.videoOffsetBytes,t.length)}syncVideo(){this.exports.machine_update_video&&this.exports.machine_update_video(this.sys),this.pixel_dest!=null&&this.pixel_dest.set(this.pixel_src)}saveControlsState(){return this.exports.machine_save_controls_state(this.sys,this.ctrlstateptr),{controls:this.ctrlstatearr.slice(0)}}loadControlsState(t){this.ctrlstatearr.set(t.controls),this.exports.machine_load_controls_state(this.sys,this.ctrlstateptr)}connectAudio(t){this.audio=t}syncAudio(){if(this.audio!=null)for(var t=this.exports.machine_get_sample_count(),n=0;nx-o),this.addr2symbol[0]||(this.addr2symbol[0]="$00"),this.addr2symbol[65536]="__END__"}};function ve(d){return d&&typeof d.getDebugCategories=="function"}var Ct=class{constructor(){this.id2bp={}}getDebugCondition(){return Object.keys(this.id2bp).length==0?null:()=>{var t=!1;for(var n in this.id2bp)this.id2bp[n].cond()&&(t=!0);return t}}},vt=class{constructor(){this.recorder=null;this.internalFiles={}}setRecorder(t){this.recorder=t}updateRecorder(){this.recorder&&this.isRunning()&&this.recorder.frameRequested()&&this.recorder.recordFrame(this.saveState())}inspect(t){return Bn(this,t)}getDebugTree(){var n;var t={};return t.state=this.saveState(),(n=this.debugSymbols)!=null&&n.debuginfo&&(t.debuginfo=this.debugSymbols.debuginfo),t}readFile(t){return this.internalFiles[t]}writeFile(t,n){return this.internalFiles[t]=n,!0}},ye=class extends vt{constructor(){super(...arguments);this.debugSavedState=null;this.debugBreakState=null;this.debugTargetClock=0;this.debugClock=0;this.breakpoints=new Ct;this.frameCount=0;this.debugPCDelta=0}fixPC(n){return n.PC=n.PC+this.debugPCDelta&65535,n}unfixPC(n){return n.PC=n.PC-this.debugPCDelta&65535,n}debugUsesEPC(){return!1}setBreakpoint(n,i){i?(this.breakpoints.id2bp[n]={cond:i},this.restartDebugging()):this.clearBreakpoint(n)}clearBreakpoint(n){delete this.breakpoints.id2bp[n]}hasBreakpoint(n){return this.breakpoints.id2bp[n]!=null}getDebugCallback(){return this.breakpoints.getDebugCondition()}setupDebug(n){this.onBreakpointHit=n}clearDebug(){this.debugBreakState!=null&&this.debugSavedState!=null&&this.loadState(this.debugSavedState),this.debugSavedState=null,this.debugBreakState=null,this.debugTargetClock=-1,this.debugClock=0,this.onBreakpointHit=null,this.clearBreakpoint("debug"),this.frameCount=0}setDebugCondition(n){this.setBreakpoint("debug",n)}resetDebugging(){this.debugSavedState?this.loadState(this.debugSavedState):this.debugSavedState=this.saveState(),this.debugClock=0,this.debugCallback=this.getDebugCallback(),this.debugBreakState=null}restartDebugging(){this.resetDebugging(),this.resume()}preFrame(){this.debugCallback&&!this.debugBreakState&&(this.debugSavedState=this.saveState(),this.debugTargetClock-=this.debugClock,this.debugClock=0)}postFrame(){this.debugCallback&&this.debugBreakState&&this.loadState(this.debugBreakState),this.frameCount++}pollControls(){}nextFrame(n){this.pollControls(),this.updateRecorder(),this.preFrame();var i=this.advance(n);return this.postFrame(),i}evalDebugCondition(){this.debugCallback&&!this.debugBreakState&&this.debugCallback()}wasBreakpointHit(){return this.debugBreakState!=null}breakpointHit(n,i){console.log(this.debugTargetClock,n,this.debugClock,this.isStable()),this.debugTargetClock=n,this.debugBreakState=this.saveState(),console.log("Breakpoint at clk",this.debugClock,"PC",this.debugBreakState.c.PC.toString(16)),this.pause(),this.onBreakpointHit&&this.onBreakpointHit(this.debugBreakState,i)}haltAndCatchFire(n){this.breakpointHit(this.debugClock,n)}runEval(n){this.setDebugCondition(()=>{if(++this.debugClock>=this.debugTargetClock&&this.isStable()){var i=this.getCPUState();return n(i)?(this.breakpointHit(this.debugClock),!0):!1}})}runToPC(n){this.runEvalAtPC(new Map(n.map(i=>[i,null])))}runEvalAtPC(n){this.debugTargetClock++;let i=this.debugUsesEPC();this.setDebugCondition(()=>{if(++this.debugClocki.SP>n)}stepOver(){var u;var n=this,i=this.getPC(),x=null,o=(u=n.readAddress)==null?void 0:u.bind(n);if(o&&n.disassemble&&(x=n.disassemble(i,o)),x&&x.iscall){var b=i+x.nbytes;this.debugTargetClock++,this.runEval(f=>f.PC==b)}else this.step()}hasCustomStepOver(){return!1}runToFrameClock(n){this.restartDebugging(),this.debugTargetClock=n,this.runEval(()=>!0)}step(){this.runToFrameClock(this.debugClock+1)}stepBack(){var n,i,x=this.debugTargetClock;this.restartDebugging(),this.debugTargetClock=x-25,this.runEval(o=>this.debugClockthis.frameCount>n)}};function Bn(d,t){if(d.debugSymbols){var n=d.debugSymbols.symbolmap,i=d.debugSymbols.addr2symbol;if(!n||!d.readAddress)return null;var x=n["_"+t]||n[t];if(typeof x!="number")return null;var o=d.readAddress(x);if(i&&i[x+1]!=null)return"$"+$(x,4)+" = $"+$(o,2)+" ("+o+" decimal)";{let b=d.readAddress(x+1),u=o|b<<8;return"$"+$(x,4)+" = $"+$(o,2)+" $"+$(b,2)+" ("+(u<<16>>16)+" decimal)"}}}var Yt=class extends ye{constructor(){super(...arguments);this.debugPCDelta=-1;this.getToolForFilename=it}getSP(){return this.getCPUState().SP}getPC(){return this.getCPUState().PC}isStable(){return!this.getCPUState().T}newCPU(n){var i=new dt;return i.connectBus(n),i}getOpcodeMetadata(n,i){return Jt(n,i)}getOriginPC(){return(this.readAddress(65532)|this.readAddress(65533)<<8)&65535}disassemble(n,i){return ct(n,i(n),i(n+1),i(n+2))}getDefaultExtensions(){return[".c",".sdcc",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}getDebugCategories(){return["CPU","ZPRAM","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return $t(i.c);case"ZPRAM":return at(i.b||i.ram,0,256);case"Stack":return Le(this,i.b||i.ram,256,511,256+i.c.SP,32)}}};function $t(d){function t(n){var i="";return i+=n.N?" N":" -",i+=n.V?" V":" -",i+=n.D?" D":" -",i+=n.Z?" Z":" -",i+=n.C?" C":" -",i+=n.I?" I":" -",i}return"PC "+$(d.PC,4)+" "+t(d)+` - A `+$(d.A)+" "+(d.R?"":"BUSY")+` - X `+$(d.X)+` - Y `+$(d.Y)+" SP "+$(d.SP)+` -`}var Je={cycletime:[7,6,0,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,0,6,0,6,3,3,3,3,2,0,2,0,4,4,4,4,2,6,0,0,4,4,4,4,2,5,2,0,0,5,0,0,2,6,2,6,3,3,3,3,2,2,2,0,4,4,4,4,2,5,0,5,4,4,4,4,2,4,2,0,4,4,4,4,2,6,0,8,3,3,5,5,2,2,2,2,4,4,3,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,2,6,0,8,3,3,5,5,2,2,2,0,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7],extracycles:[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1],insnlengths:[1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,3,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,0,2,0,2,2,2,2,2,1,0,1,0,3,3,3,3,2,2,0,0,2,2,2,3,1,3,1,0,0,3,0,0,2,2,2,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3],validinsns:[1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,3,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,0,2,0,0,2,2,2,0,1,0,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,0,3,0,0,2,2,2,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0]};function Jt(d,t){return{opcode:d,minCycles:Je.cycletime[d],maxCycles:Je.cycletime[d]+Je.extracycles[d],insnlength:Je.insnlengths[d]}}function Gt(d){function t(n){return Ve(n,["S","Z",,"H",,"V","N","C"],!0)}return"PC "+$(d.PC,4)+" "+t(d.AF)+" "+(d.iff1?"I":"-")+(d.iff2?"I":"-")+` -SP `+$(d.SP,4)+" IR "+$(d.IR,4)+` -IX `+$(d.IX,4)+" IY "+$(d.IY,4)+` -AF `+$(d.AF,4)+" BC "+$(d.BC,4)+` -DE `+$(d.DE,4)+" HL "+$(d.HL,4)+` -`}function Ar(d){function t(n){return Ve(n,["Z","N","H","C"],!0)}return"PC "+$(d.PC,4)+" "+t(d.AF>>4)+" "+(d.ime?"I":"-")+` -SP `+$(d.SP,4)+` -AF `+$(d.AF,4)+" BC "+$(d.BC,4)+` -DE `+$(d.DE,4)+" HL "+$(d.HL,4)+` -`}var St=class extends ye{constructor(){super(...arguments);this.waitCycles=0;this.getToolForFilename=ft}newCPU(n,i){return this._cpu=new We,this._cpu.connectMemoryBus(n),this._cpu.connectIOBus(i),this._cpu}getPC(){return this._cpu.getPC()}getSP(){return this._cpu.getSP()}isStable(){return!0}runCPU(n,i){if(this._cpu=n,this.waitCycles=0,this.wasBreakpointHit())return 0;var x=this.getDebugCallback(),o=0;for(this.waitCycles+=i;this.waitCycles>0;){if(x&&x()){x=null;break}var b=n.advanceInsn();o+=b,this.waitCycles-=b}return o}getDefaultExtensions(){return[".c",".sdcc",".ns",".s",".scc",".sgb",".z",".wiz"]}getDebugCategories(){return["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return Gt(i.c);case"Stack":{var x=i.c.SP-1&65535,o=x&65280,b=o+255;return x==0&&(x=65536),console.log(x,o,b),Le(this,[],o,b,x,205)}}}disassemble(n,i){return bt(n,i(n),i(n+1),i(n+2),i(n+3))}};function gt(d){function t(n){return Ve(n,["E","F","H","I","N","Z","V","C"],!0)}return"PC "+$(d.PC,4)+" "+t(d.CC)+` -SP `+$(d.SP,4)+` -DP `+$(d.DP,2)+` - A `+$(d.A,2)+` - B `+$(d.B,2)+` - X `+$(d.X,4)+` - Y `+$(d.Y,4)+` - U `+$(d.U,4)+` -`}var Wt=class extends St{constructor(){super(...arguments);this.getToolForFilename=st}newCPU(n){var i=Object.create($e());return i.init(n.write,n.read,0),i}cpuStateToLongString(n){return gt(n)}disassemble(n,i){return Object.create($e()).disasm(i(n),i(n+1),i(n+2),i(n+3),i(n+4),n)}getDefaultExtensions(){return[".c",".lwasm",".xasm"]}getDebugCategories(){return["CPU","Stack"]}getDebugInfo(n,i){return n==="CPU"?gt(i.c):super.getDebugInfo(n,i)}};function Le(d,t,n,i,x,o,b){var u="",f=0;function W(_){return _>8);var g=o==32?-2:-3,B=W(N+g);B==o?(u+=` -$`+$(x)+": ",u+=$(N,4)+" "+Nn(d,N,!0),x++,f=0):(f==0&&(u+=` -$`+$(x)+": "),u+=$(W(x))+" ",++f==8&&(f=0))}return u+` -`}function Nn(d,t,n){for(var i=t,x=d.debugSymbols&&d.debugSymbols.addr2symbol;x&&t>=0;){var o=x[t];if(o){var o=x[t];return n?o+" + $"+$(i-t):o}if(!n)break;t--}return""}function yn(d){return typeof d.connectVideo=="function"}function In(d){return typeof d.connectAudio=="function"}function Ln(d){return typeof d.setKeyInput=="function"}function ht(d){return typeof d.setPaddleInput=="function"}function At(d){return typeof d.getRasterY=="function"}function On(d){return typeof d.connectProbe=="function"}function En(d){return typeof d.loadBIOS=="function"}function Zn(d){return typeof d.connectSerialIO=="function"}var Ie=class extends ye{constructor(n,i){super();this.probeSingleFrame=null;this.mainElement=n,this.options=i||{}}reset(){this.machine.reset(),this.serialVisualizer!=null&&this.serialVisualizer.reset()}loadState(n){if(!this.debugPCDelta||!n.c)return this.machine.loadState(n);this.unfixPC(n.c);try{this.machine.loadState(n)}finally{this.fixPC(n.c)}}saveState(){let n=this.machine.saveState();return this.debugPCDelta&&n.c&&this.fixPC(n.c),n}getSP(){return this.machine.cpu.getSP()}getPC(){return this.machine.cpu.getPC()}isStable(){return this.machine.cpu.isStable()}getCPUState(){return this.fixPC(this.machine.cpu.saveState())}loadControlsState(n){this.machine.loadControlsState(n)}saveControlsState(){return this.machine.saveControlsState()}async start(){this.machine=this.newMachine();let n=this.machine;n instanceof Ne&&await n.loadWASM();var i;if(yn(n)){var x=n.getVideoParams();this.video=new Nt(this.mainElement,x.width,x.height,{overscan:!!x.overscan,rotate:x.rotate|0,aspect:x.aspect}),this.video.create(),n.connectVideo(this.video.getFrameData()),Ln(n)&&(this.video.setKeyboardEvents(n.setKeyInput.bind(n)),this.poller=new It(n.setKeyInput.bind(n))),i=x.videoFrequency}if(this.timer=new yt(i||60,this.nextFrame.bind(this)),In(n)){var o=n.getAudioParams();this.audio=new Ke(o.sampleRate),this.audio.start(),n.connectAudio(this.audio)}ht(n)&&this.video.setupMouseEvents(),On(n)&&(this.probeRecorder=new je(n),this.startProbing=()=>(n.connectProbe(this.probeRecorder),this.probeRecorder),this.stopProbing=()=>{n.connectProbe(null)}),En(n)&&(this.loadBIOS=(b,u)=>{n.loadBIOS(u,b)}),Zn(n)&&(this.serialIOInterface==null?this.serialVisualizer=new pt(this.mainElement,n):n.connectSerialIO(this.serialIOInterface))}loadROM(n,i,x){this.machine.loadROM(i,n,x),this.reset()}acceptsPaddles(){return ht(this.machine)}setPaddles(n,i,x){this.video.paddle_x=n,this.video.paddle_y=i,x.forEach((o,b)=>this.video.paddle_buttons[b]=o)}pollControls(){this.poller&&this.poller.poll(),ht(this.machine)&&(this.machine.setPaddleInput(0,this.video.paddle_x),this.machine.setPaddleInput(1,this.video.paddle_y),this.machine.setPaddleButton&&this.video.paddle_buttons!=null&&(this.machine.setPaddleButton(0,this.video.paddle_buttons[0]),this.machine.setPaddleButton(1,this.video.paddle_buttons[1]),this.machine.setPaddleButton(2,this.video.paddle_buttons[2]))),this.machine.pollControls&&this.machine.pollControls()}advance(n){let i=this.getDebugCallback();try{var x=this.machine.advanceFrame(i);return x}finally{!n&&this.video&&(this.video.updateFrame(),this.updateVideoDebugger()),!n&&this.serialVisualizer&&this.serialVisualizer.refresh()}}updateVideoDebugger(){var n;if(!this.isRunning()&&At(this.machine)&&this.machine.getRasterCanvasPosition){let{x:i,y:x}=this.machine.getRasterCanvasPosition();if(i>=0||x>=0){let o=(n=this.video)==null?void 0:n.getContext();o&&Bt(o,i,x,1)}}}advanceFrameClock(n,i){if(i>0)return this.machine instanceof Ne?this.machine.advanceFrameClock(n,i):this.machine.advanceFrame(()=>--i<=0)}isRunning(){return this.timer&&this.timer.isRunning()}resume(){this.timer.start(),this.audio&&this.audio.start(),this.poller&&this.poller.start()}pause(){this.timer.stop(),this.audio&&this.audio.stop(),this.poller&&this.poller.stop(),this.probeRecorder&&this.probeSingleFrame!=null&&(this.probeRecorder.singleFrame=this.probeSingleFrame,this.probeSingleFrame=null)}runToVsync(){this.probeRecorder&&(this.probeSingleFrame=this.probeRecorder.singleFrame,this.probeRecorder.reset(),this.probeRecorder.singleFrame=!1),this.restartDebugging();var n=!1;this.runEval(()=>{if(this.getRasterScanline()>0)n=!0;else return n})}getRasterScanline(){return At(this.machine)&&this.machine.getRasterY?this.machine.getRasterY():-1}getRasterLineClock(){return At(this.machine)&&this.machine.getRasterX?this.machine.getRasterX():-1}readAddress(n){return this.machine.read(n)}getDebugCategories(){if(ve(this.machine))return this.machine.getDebugCategories()}getDebugInfo(n,i){return ve(this.machine)&&this.machine.getDebugInfo(n,i)}},zt=class extends Ie{constructor(){super(...arguments);this.getOpcodeMetadata=Jt}getToolForFilename(n){return it(n)}getDefaultExtensions(){return[".c",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}disassemble(n,i){return ct(n,i(n),i(n+1),i(n+2))}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","ZPRAM","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return $t(i.c);case"ZPRAM":return at(i.b||i.ram,0,256);case"Stack":return Le(this,i.b||i.ram,256,511,256+i.c.SP,32);default:return ve(this.machine)&&this.machine.getDebugInfo(n,i)}}},Kt=class extends Ie{constructor(){super(...arguments);this.getToolForFilename=ft}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return Gt(i.c);case"Stack":{var x=i.c.SP-1&65535,o=x&65280,b=o+255;return x==0&&(x=65536),Le(this,[],o,b,x,205)}default:return ve(this.machine)&&this.machine.getDebugInfo(n,i)}}disassemble(n,i){return bt(n,i(n),i(n+1),i(n+2),i(n+3))}},jt=class extends Ie{constructor(){super(...arguments);this.getToolForFilename=st}getDefaultExtensions(){return[".c",".lwasm",".xasm"]}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","Stack"]}getDebugInfo(n,i){switch(n){case"CPU":return gt(i.c);case"Stack":{var x=i.c.SP-1&65535,o=x&65280,b=o+255;return x==0&&(x=65536),Le(this,[],o,b,x,23,!0)}default:return super.getDebugInfo(n,i)}}disassemble(n,i){return Object.create($e()).disasm(i(n),i(n+1),i(n+2),i(n+3),i(n+4),n)}},pt=class{constructor(t,n){this.lastOutCount=-1;this.lastInCount=-1;this.device=n,this.textarea=document.createElement("textarea"),this.textarea.classList.add("transcript"),this.textarea.classList.add("transcript-style-2"),this.textarea.style.display="none",t.appendChild(this.textarea)}reset(){this.lastOutCount=0,this.lastInCount=0,this.textarea.style.display="none"}refresh(){var t="";if(this.device.serialOut.length!=this.lastOutCount){var n="";for(var i of this.device.serialOut)t!=i.op&&(n!=""&&(n+=` -`),i.op==="read"?n+="<< ":i.op==="write"&&(n+=">> "),t=i.op),i.value==10?(n+="\u21B5",t=""):n+=Dt(i.value);this.textarea.value=n,this.lastOutCount=this.device.serialOut.length,this.textarea.style.display="block"}}};export{ct as a,bt as b,We as c,ut as d,Lt as e,Ot as f,Xn as g,wn as h,Hn as i,xt as j,Dn as k,Mt as l,$e as m,Ht as n,Yn as o,je as p,Be as q,lt as r,mt as s,Ft as t,Ne as u,Vt as v,ve as w,vt as x,Bn as y,Yt as z,$t as A,Jt as B,Gt as C,Ar as D,St as E,Wt as F,Le as G,Ie as H,zt as I,Kt as J,jt as K}; -//# sourceMappingURL=chunk-FFJHITEL.js.map diff --git a/gen/chunk-FFJHITEL.js.map b/gen/chunk-FFJHITEL.js.map deleted file mode 100644 index cba216bd..00000000 --- a/gen/chunk-FFJHITEL.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../src/common/cpu/disasm6502.ts", "../src/common/cpu/ZilogZ80.ts", "../src/common/audio.ts", "../src/common/probe.ts", "../src/common/devices.ts", "../src/common/cpu/disasmz80.ts", "../src/common/cpu/6809.ts", "../src/common/cpu/MOS6502.ts", "../src/common/wasmplatform.ts", "../src/common/baseplatform.ts"], - "sourcesContent": ["\nimport { hex } from \"../util\";\n\nexport var OPS_6502 = [\n {mn:\"BRK\",am:\"\",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:\"SI\"}, // 0\n {mn:\"ORA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 2\n {mn:\"SLO\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 4\n {mn:\"ORA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 5\n {mn:\"ASL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 6\n {mn:\"SLO\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 7\n {mn:\"PHP\",am:\"\",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:\"S\"}, // 8\n {mn:\"ORA\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 9\n {mn:\"ASL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // b\n {mn:\"NOP\",am:\"AAAA\",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // c\n {mn:\"ORA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // d\n {mn:\"ASL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // e\n {mn:\"SLO\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // f\n {mn:\"BPL\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 10\n {mn:\"ORA\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 11\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 12\n {mn:\"SLO\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 13\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 14\n {mn:\"ORA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 15\n {mn:\"ASL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 16\n {mn:\"SLO\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 17\n {mn:\"CLC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 18\n {mn:\"ORA\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 19\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 1a\n {mn:\"SLO\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 1c\n {mn:\"ORA\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 1d\n {mn:\"ASL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 1e\n {mn:\"SLO\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1f\n {mn:\"JSR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:\"S\"}, // 20\n {mn:\"AND\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 21\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 22\n {mn:\"RLA\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 23\n {mn:\"BIT\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 24\n {mn:\"AND\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 25\n {mn:\"ROL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 26\n {mn:\"RLA\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 27\n {mn:\"PLP\",am:\"\",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:\"SCZIDVN\"}, // 28\n {mn:\"AND\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 29\n {mn:\"ROL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2b\n {mn:\"BIT\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 2c\n {mn:\"AND\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 2d\n {mn:\"ROL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 2e\n {mn:\"RLA\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 2f\n {mn:\"BMI\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 30\n {mn:\"AND\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 31\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 32\n {mn:\"RLA\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 33\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 34\n {mn:\"AND\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 35\n {mn:\"ROL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 36\n {mn:\"RLA\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 37\n {mn:\"SEC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 38\n {mn:\"AND\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 39\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 3a\n {mn:\"RLA\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 3c\n {mn:\"AND\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 3d\n {mn:\"ROL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 3e\n {mn:\"RLA\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3f\n {mn:\"RTI\",am:\"\",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:\"SCZIDVN\"}, // 40\n {mn:\"EOR\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 41\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 42\n {mn:\"SRE\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 43\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 44\n {mn:\"EOR\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 45\n {mn:\"LSR\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 46\n {mn:\"SRE\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 47\n {mn:\"PHA\",am:\"\",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:\"S\"}, // 48\n {mn:\"EOR\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 49\n {mn:\"LSR\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 4a\n {mn:\"ASR\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 4b\n {mn:\"JMP\",am:\"AAAA\",nb:3,il:0,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 4c\n {mn:\"EOR\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 4d\n {mn:\"LSR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 4e\n {mn:\"SRE\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 4f\n {mn:\"BVC\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 50\n {mn:\"EOR\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 51\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 52\n {mn:\"SRE\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 53\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 54\n {mn:\"EOR\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 55\n {mn:\"LSR\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 56\n {mn:\"SRE\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 57\n {mn:\"CLI\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"I\"}, // 58\n {mn:\"EOR\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 59\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 5a\n {mn:\"SRE\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 5b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 5c\n {mn:\"EOR\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 5d\n {mn:\"LSR\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 5e\n {mn:\"SRE\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 5f\n {mn:\"RTS\",am:\"\",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:\"S\"}, // 60\n {mn:\"ADC\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 61\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 62\n {mn:\"RRA\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 63\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 64\n {mn:\"ADC\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 65\n {mn:\"ROR\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 66\n {mn:\"RRA\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 67\n {mn:\"PLA\",am:\"\",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:\"SAZN\"}, // 68\n {mn:\"ADC\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 69\n {mn:\"ROR\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 6a\n {mn:\"ARR\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 6b\n {mn:\"JMP\",am:\"(AAAA)\",nb:3,il:0,c1:5,c2:0,nw:0,br:1,mod:\"\"}, // 6c\n {mn:\"ADC\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 6d\n {mn:\"ROR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 6e\n {mn:\"RRA\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 6f\n {mn:\"BVS\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 70\n {mn:\"ADC\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // 71\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 72\n {mn:\"RRA\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 73\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 74\n {mn:\"ADC\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // 75\n {mn:\"ROR\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 76\n {mn:\"RRA\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 77\n {mn:\"SEI\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"I\"}, // 78\n {mn:\"ADC\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // 79\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 7a\n {mn:\"RRA\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 7b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 7c\n {mn:\"ADC\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // 7d\n {mn:\"ROR\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 7e\n {mn:\"RRA\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // 7f\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 80\n {mn:\"STA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 81\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 82\n {mn:\"SAX\",am:\"(aa,x)\",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 83\n {mn:\"STY\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 84\n {mn:\"STA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 85\n {mn:\"STX\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 86\n {mn:\"SAX\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:1,br:0,mod:\"\"}, // 87\n {mn:\"DEY\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // 88\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 89\n {mn:\"TXA\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 8a\n {mn:\"ANE\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 8b\n {mn:\"STY\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8c\n {mn:\"STA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8d\n {mn:\"STX\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8e\n {mn:\"SAX\",am:\"AAAA\",nb:3,il:1,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 8f\n {mn:\"BCC\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 90\n {mn:\"STA\",am:\"(aa),y\",nb:2,il:0,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 91\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 92\n {mn:\"SHA\",am:\"(aa),y\",nb:2,il:1,c1:6,c2:0,nw:1,br:0,mod:\"\"}, // 93\n {mn:\"STY\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 94\n {mn:\"STA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 95\n {mn:\"STX\",am:\"aa,y\",nb:2,il:0,c1:4,c2:0,nw:1,br:0,mod:\"\"}, // 96\n {mn:\"SAX\",am:\"aa,y\",nb:3,il:1,c1:4,c2:0,nw:1,br:1,mod:\"\"}, // 97\n {mn:\"TYA\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 98\n {mn:\"STA\",am:\"AAAA,y\",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 99\n {mn:\"TXS\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"S\"}, // 9a\n {mn:\"SHS\",am:\"AAAA,y\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"S\"}, // 9b\n {mn:\"SHY\",am:\"AAAA,x\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9c\n {mn:\"STA\",am:\"AAAA,x\",nb:3,il:0,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9d\n {mn:\"SHX\",am:\"AAAA,y\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9e\n {mn:\"SHA\",am:\"AAAA,y\",nb:3,il:1,c1:5,c2:0,nw:1,br:0,mod:\"\"}, // 9f\n {mn:\"LDY\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // a0\n {mn:\"LDA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // a1\n {mn:\"LDX\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // a2\n {mn:\"LAX\",am:\"(aa,x)\",nb:2,il:1,c1:6,c2:0,nw:0,br:0,mod:\"AXZN\"}, // a3\n {mn:\"LDY\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"YZN\"}, // a4\n {mn:\"LDA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // a5\n {mn:\"LDX\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"XZN\"}, // a6\n {mn:\"LAX\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"AXZN\"}, // a7\n {mn:\"TAY\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // a8\n {mn:\"LDA\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // a9\n {mn:\"TAX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // aa\n {mn:\"LXA\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"AXZN\"}, // ab\n {mn:\"LDY\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"YZN\"}, // ac\n {mn:\"LDA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // ad\n {mn:\"LDX\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"XZN\"}, // ae\n {mn:\"LAX\",am:\"AAAA\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"AXZN\"}, // af\n {mn:\"BCS\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // b0\n {mn:\"LDA\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // b1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // b2\n {mn:\"LAX\",am:\"(aa),y\",nb:2,il:1,c1:5,c2:1,nw:0,br:0,mod:\"AXZN\"}, // b3\n {mn:\"LDY\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"YZN\"}, // b4\n {mn:\"LDA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // b5\n {mn:\"LDX\",am:\"aa,y\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"XZN\"}, // b6\n {mn:\"LAX\",am:\"aa,y\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"AXZN\"}, // b7\n {mn:\"CLV\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"V\"}, // b8\n {mn:\"LDA\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // b9\n {mn:\"TSX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // ba\n {mn:\"LAS\",am:\"AAAA,y\",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:\"SAXZN\"}, // bb\n {mn:\"LDY\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"YZN\"}, // bc\n {mn:\"LDA\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // bd\n {mn:\"LDX\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"XZN\"}, // be\n {mn:\"LAX\",am:\"AAAA,y\",nb:3,il:1,c1:4,c2:1,nw:0,br:0,mod:\"AXZN\"}, // bf\n {mn:\"CPY\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"CZN\"}, // c0\n {mn:\"CMP\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"CZN\"}, // c1\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // c2\n {mn:\"DCP\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"CZN\"}, // c3\n {mn:\"CPY\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"CZN\"}, // c4\n {mn:\"CMP\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"CZN\"}, // c5\n {mn:\"DEC\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"ZN\"}, // c6\n {mn:\"DCP\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // c7\n {mn:\"INY\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"YZN\"}, // c8\n {mn:\"CMP\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"CZN\"}, // c9\n {mn:\"DEX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // ca\n {mn:\"SBX\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"XCZN\"}, // cb\n {mn:\"CPY\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // cc\n {mn:\"CMP\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // cd\n {mn:\"DEC\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // ce\n {mn:\"DCP\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // cf\n {mn:\"BNE\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // d0\n {mn:\"CMP\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"CZN\"}, // d1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // d2\n {mn:\"DCP\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"CZN\"}, // d3\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // d4\n {mn:\"CMP\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // d5\n {mn:\"DEC\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // d6\n {mn:\"DCP\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // d7\n {mn:\"CLD\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"D\"}, // d8\n {mn:\"CMP\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"CZN\"}, // d9\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // da\n {mn:\"DCP\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // db\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // dc\n {mn:\"CMP\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"CZN\"}, // dd\n {mn:\"DEC\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"ZN\"}, // de\n {mn:\"DCP\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // df\n {mn:\"CPX\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"CZN\"}, // e0\n {mn:\"SBC\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // e1\n {mn:\"NOP\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // e2\n {mn:\"ISB\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // e3\n {mn:\"CPX\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"CZN\"}, // e4\n {mn:\"SBC\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // e5\n {mn:\"INC\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"ZN\"}, // e6\n {mn:\"ISB\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // e7\n {mn:\"INX\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"XZN\"}, // e8\n {mn:\"SBC\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // e9\n {mn:\"NOP\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // ea\n {mn:\"SBC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // eb\n {mn:\"CPX\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"CZN\"}, // ec\n {mn:\"SBC\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // ed\n {mn:\"INC\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // ee\n {mn:\"ISB\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // ef\n {mn:\"BEQ\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // f0\n {mn:\"SBC\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // f1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // f2\n {mn:\"ISB\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // f3\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // f4\n {mn:\"SBC\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ACZVN\"}, // f5\n {mn:\"INC\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"ZN\"}, // f6\n {mn:\"ISB\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // f7\n {mn:\"SED\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"D\"}, // f8\n {mn:\"SBC\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // f9\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // fa\n {mn:\"ISB\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // fb\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // fc\n {mn:\"SBC\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"ACZVN\"}, // fd\n {mn:\"INC\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"ZN\"}, // fe\n {mn:\"ISB\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZVN\"}, // ff\n];\n\nexport function disassemble6502(pc:number, b0:number, b1:number, b2:number) : {line:string, nbytes:number, isaddr:boolean, iscall?:boolean} {\n\n var op = OPS_6502[b0];\n if (op == null) return {line:\"???\", nbytes:1, isaddr:false};\n var s = op.mn;\n var am = op.am;\n var isaddr = false;\n if (am == 'branch') {\n var offset = (b1 < 0x80) ? (pc+2+b1) : (pc+2-(256-b1));\n offset &= 0xffff;\n am = '$'+hex(offset, 4);\n isaddr = true;\n } else {\n am = am.replace('aa','$'+hex(b1, 2));\n am = am.replace('AAAA','$'+hex(b1+(b2<<8), 4));\n if (am.indexOf('#') < 0 && am.indexOf('$') >= 0)\n isaddr = true;\n }\n return {line:op.mn + \" \" + am, nbytes:op.nb, isaddr:isaddr, iscall:op.mn==\"JSR\"};\n};\n", "// Generated by CoffeeScript 1.9.3\n\nimport { CPU, Bus, InstructionBased, IOBusConnected, SavesState, Interruptable } from \"../devices\";\n\n///////////////////////////////////////////////////////////////////////////////\n/// @file Z80.js\n///\n/// @brief Emulator for the Zilog Z80 microprocessor\n///\n/// @author Matthew Howell\n///\n/// @remarks\n/// This module is a simple, straightforward instruction interpreter.\n/// There is no fancy dynamic recompilation or cycle-accurate emulation.\n/// The author believes that this should be sufficient for any emulator that\n/// would be feasible to write in JavaScript anyway.\n/// The code and the comments in this file assume that the reader is familiar\n/// with the Z80 architecture. If you're not, here are some references I use:\n/// http://clrhome.org/table/ - Z80 instruction set tables\n/// http://www.zilog.com/docs/z80/um0080.pdf - The official manual\n/// http://www.myquest.nl/z80undocumented/z80-documented-v0.91.pdf\n/// - The Undocumented Z80, Documented\n///\n/// @copyright (c) 2013 Matthew Howell\n/// This code is released under the MIT license,\n/// a copy of which is available in the associated README.md file,\n/// or at http://opensource.org/licenses/MIT\n///////////////////////////////////////////////////////////////////////////////\n\n///////////////////////////////////////////////////////////////////////////////\n/// We'll begin with the object constructor and the public API functions.\n///////////////////////////////////////////////////////////////////////////////\nfunction FastZ80(coreParameter)\n{\n // Obviously we'll be needing the core object's functions again.\n const core = coreParameter;\n \n // The argument to this constructor should be an object containing 4 functions:\n // mem_read(address) should return the byte at the given memory address,\n // mem_write(address, value) should write the given value to the given memory address,\n // io_read(port) should read a return a byte read from the given I/O port,\n // io_write(port, value) should write the given byte to the given I/O port.\n // If any of those functions is missing, this module cannot run.\n if (!core || (typeof core.mem_read !== \"function\") || (typeof core.mem_write !== \"function\") ||\n (typeof core.io_read !== \"function\") || (typeof core.io_write !== \"function\"))\n throw(\"Z80: Core object is missing required functions.\");\n \n // All right, let's initialize the registers.\n // First, the standard 8080 registers.\n let a = 0x00;\n let b = 0x00;\n let c = 0x00;\n let d = 0x00;\n let e = 0x00;\n let h = 0x00;\n let l = 0x00;\n // Now the special Z80 copies of the 8080 registers\n // (the ones used for the SWAP instruction and such).\n let a_prime = 0x00;\n let b_prime = 0x00;\n let c_prime = 0x00;\n let d_prime = 0x00;\n let e_prime = 0x00;\n let h_prime = 0x00;\n let l_prime = 0x00;\n // And now the Z80 index registers.\n let ix = 0x0000;\n let iy = 0x0000;\n // Then the \"utility\" registers: the interrupt vector,\n // the memory refresh, the stack pointer, and the program counter.\n let i = 0x00;\n let r = 0x00;\n let sp = 0x0000; // Changed from 0xdff0 - SP should be undefined at reset, program must initialize it\n let pc = 0x0000;\n // We don't keep an F register for the flags,\n // because most of the time we're only accessing a single flag,\n // so we optimize for that case and use utility functions\n // for the rarer occasions when we need to access the whole register.\n let flags = {S:0, Z:0, Y:0, H:0, X:0, P:0, N:0, C:0};\n let flags_prime = {S:0, Z:0, Y:0, H:0, X:0, P:0, N:0, C:0};\n // And finally we have the interrupt mode and flip-flop registers.\n let imode = 0;\n let iff1 = 0;\n let iff2 = 0;\n \n // These are all specific to this implementation, not Z80 features.\n // Keep track of whether we've had a HALT instruction called.\n let halted = false;\n // EI and DI wait one instruction before they take effect;\n // these flags tell us when we're in that wait state.\n let do_delayed_di = false;\n let do_delayed_ei = false;\n // This tracks the number of cycles spent in a single instruction run,\n // including processing any prefixes and handling interrupts.\n let cycle_counter = 0;\n \n function getState():Z80State {\n return {\n PC:pc,\n SP:sp,\n IX:ix,\n IY:iy,\n AF:(a<<8)+get_flags_register(),\n BC:(b<<8)+c,\n DE:(d<<8)+e,\n HL:(h<<8)+l,\n AF_:(a_prime<<8)+get_flags_prime(),\n BC_:(b_prime<<8)+c_prime,\n DE_:(d_prime<<8)+e_prime,\n HL_:(h_prime<<8)+l_prime,\n IR:(i<<8)+r,\n im : imode,\n iff1 : iff1,\n iff2 : iff2,\n halted : halted,\n do_delayed_di : do_delayed_di,\n do_delayed_ei : do_delayed_ei,\n cycle_counter : cycle_counter\n }; \n }\n\n function setState(state:Z80State) {\n pc = state.PC;\n sp = state.SP;\n ix = state.IX;\n iy = state.IY;\n a = (state.AF >> 8) & 0xff;\n set_flags_register(state.AF);\n b = (state.BC >> 8) & 0xff;\n c = state.BC & 0xff;\n d = (state.DE >> 8) & 0xff;\n e = state.DE & 0xff;\n h = (state.HL >> 8) & 0xff;\n l = state.HL & 0xff;\n a_prime = (state.AF_ >> 8) & 0xff;\n set_flags_prime(state.AF_);\n b_prime = (state.BC_ >> 8) & 0xff;\n c_prime = state.BC_ & 0xff;\n d_prime = (state.DE_ >> 8) & 0xff;\n e_prime = state.DE_ & 0xff;\n h_prime = (state.HL_ >> 8) & 0xff;\n l_prime = state.HL_ & 0xff;\n i = (state.IR >> 8) & 0xff;\n r = state.IR & 0xff;\n imode = state.im;\n iff1 = state.iff1;\n iff2 = state.iff2;\n halted = state.halted;\n do_delayed_di = state.do_delayed_di;\n do_delayed_ei = state.do_delayed_ei;\n cycle_counter = state.cycle_counter;\n }\n\n///////////////////////////////////////////////////////////////////////////////\n/// @public reset\n///\n/// @brief Re-initialize the processor as if a reset or power on had occured\n///////////////////////////////////////////////////////////////////////////////\nlet reset = function()\n{\n // These registers are the ones that have predictable states\n // immediately following a power-on or a reset.\n // The others are left alone, because their states are unpredictable.\n sp = 0x0000;\n pc = 0x0000;\n a = 0x00;\n r = 0x00;\n set_flags_register(0);\n // Start up with interrupts disabled.\n imode = 0;\n iff1 = 0;\n iff2 = 0;\n // Don't start halted or in a delayed DI or EI.\n halted = false;\n do_delayed_di = false;\n do_delayed_ei = false;\n // Obviously we've not used any cycles yet.\n cycle_counter = 0;\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// @public run_instruction\n///\n/// @brief Runs a single instruction\n///\n/// @return The number of T cycles the instruction took to run,\n/// plus any time that went into handling interrupts that fired\n/// while this instruction was executing\n///////////////////////////////////////////////////////////////////////////////\nlet run_instruction = function()\n{\n if (!halted)\n {\n // If the previous instruction was a DI or an EI,\n // we'll need to disable or enable interrupts\n // after whatever instruction we're about to run is finished.\n var doing_delayed_di = false, doing_delayed_ei = false;\n if (do_delayed_di)\n {\n do_delayed_di = false;\n doing_delayed_di = true;\n }\n else if (do_delayed_ei)\n {\n do_delayed_ei = false;\n doing_delayed_ei = true;\n }\n\n // R is incremented at the start of every instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n \n // Read the byte at the PC and run the instruction it encodes.\n var opcode = core.mem_read(pc);\n decode_instruction(opcode);\n pc = (pc + 1) & 0xffff;\n \n // Actually do the delayed interrupt disable/enable if we have one.\n if (doing_delayed_di)\n {\n iff1 = 0;\n iff2 = 0;\n //console.log(\"DI\",pc);\n }\n else if (doing_delayed_ei)\n {\n iff1 = 1;\n iff2 = 1;\n //console.log(\"EI\",pc);\n }\n \n // And finally clear out the cycle counter for the next instruction\n // before returning it to the emulator core.\n var retval = cycle_counter;\n cycle_counter = 0;\n return retval;\n }\n else\n {\n // While we're halted, claim that we spent a cycle doing nothing,\n // so that the rest of the emulator can still proceed.\n return 1;\n }\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// @public interrupt\n///\n/// @brief Simulates pulsing the processor's INT (or NMI) pin\n///\n/// @param non_maskable - true if this is a non-maskable interrupt\n/// @param data - the value to be placed on the data bus, if needed\n///////////////////////////////////////////////////////////////////////////////\nlet interrupt = function(non_maskable:boolean, data:number) : boolean\n{\n //console.log(non_maskable, data, iff1, iff2, do_delayed_ei, do_delayed_di);\n if (non_maskable)\n {\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n // Non-maskable interrupts are always handled the same way;\n // clear IFF1 and then do a CALL 0x0066.\n // Also, all interrupts reset the HALT state.\n halted = false;\n iff2 = iff1;\n iff1 = 0;\n push_word(pc);\n pc = 0x66;\n cycle_counter += 11;\n return true;\n }\n else if (iff1)\n {\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n \n halted = false;\n iff1 = 0;\n iff2 = 0;\n \n if (imode === 0)\n {\n // In the 8080-compatible interrupt mode,\n // decode the content of the data bus as an instruction and run it.\n pc = (pc - 1) & 0xffff; //SEH: so do_reset() pushes right value\n decode_instruction(data);\n pc = (pc + 1) & 0xffff; //SEH: so do_reset() pushes right value\n cycle_counter += 2;\n }\n else if (imode === 1)\n {\n // Mode 1 is always just RST 0x38.\n push_word(pc);\n pc = 0x38;\n cycle_counter += 13;\n }\n else if (imode === 2)\n {\n // Mode 2 uses the value on the data bus as in index\n // into the vector table pointer to by the I register.\n push_word(pc);\n // The Z80 manual says that this address must be 2-byte aligned,\n // but it doesn't appear that this is actually the case on the hardware,\n // so we don't attempt to enforce that here.\n var vector_address = ((i << 8) | data);\n pc = core.mem_read(vector_address) | \n (core.mem_read((vector_address + 1) & 0xffff) << 8);\n \n cycle_counter += 19;\n }\n //console.log(imode,data,pc);\n return true;\n }\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// The public API functions end here.\n///\n/// What begins here are just general utility functions, used variously.\n///////////////////////////////////////////////////////////////////////////////\nlet decode_instruction = function(opcode)\n{\n // The register-to-register loads and ALU instructions\n // are all so uniform that we can decode them directly\n // instead of going into the instruction array for them.\n // This function gets the operand for all of these instructions.\n var get_operand = function(opcode)\n {\n return ((opcode & 0x07) === 0) ? b :\n ((opcode & 0x07) === 1) ? c :\n ((opcode & 0x07) === 2) ? d :\n ((opcode & 0x07) === 3) ? e :\n ((opcode & 0x07) === 4) ? h :\n ((opcode & 0x07) === 5) ? l :\n ((opcode & 0x07) === 6) ? core.mem_read(l | (h << 8)) : a;\n };\n\n // Handle HALT right up front, because it fouls up our LD decoding\n // by falling where LD (HL), (HL) ought to be.\n if (opcode === 0x76)\n {\n halted = true;\n }\n else if ((opcode >= 0x40) && (opcode < 0x80))\n {\n // This entire range is all 8-bit register loads.\n // Get the operand and assign it to the correct destination.\n var operand = get_operand(opcode);\n \n if (((opcode & 0x38) >>> 3) === 0)\n b = operand;\n else if (((opcode & 0x38) >>> 3) === 1)\n c = operand;\n else if (((opcode & 0x38) >>> 3) === 2)\n d = operand;\n else if (((opcode & 0x38) >>> 3) === 3)\n e = operand;\n else if (((opcode & 0x38) >>> 3) === 4)\n h = operand;\n else if (((opcode & 0x38) >>> 3) === 5)\n l = operand;\n else if (((opcode & 0x38) >>> 3) === 6)\n core.mem_write(l | (h << 8), operand);\n else if (((opcode & 0x38) >>> 3) === 7)\n a = operand;\n }\n else if ((opcode >= 0x80) && (opcode < 0xc0))\n {\n // These are the 8-bit register ALU instructions.\n // We'll get the operand and then use this \"jump table\"\n // to call the correct utility function for the instruction.\n var operand = get_operand(opcode),\n op_array = [do_add, do_adc, do_sub, do_sbc,\n do_and, do_xor, do_or, do_cp];\n \n op_array[(opcode & 0x38) >>> 3]( operand);\n }\n else\n {\n // This is one of the less formulaic instructions;\n // we'll get the specific function for it from our array.\n var func = instructions[opcode];\n func();\n }\n \n // Update the cycle counter with however many cycles\n // the base instruction took.\n // If this was a prefixed instruction, then\n // the prefix handler has added its extra cycles already.\n cycle_counter += cycle_counts[opcode];\n};\n\nlet get_signed_offset_byte = function(value)\n{\n // This function requires some explanation.\n // We just use JavaScript Number variables for our registers,\n // not like a typed array or anything.\n // That means that, when we have a byte value that's supposed\n // to represent a signed offset, the value we actually see\n // isn't signed at all, it's just a small integer.\n // So, this function converts that byte into something JavaScript\n // will recognize as signed, so we can easily do arithmetic with it.\n // First, we clamp the value to a single byte, just in case.\n value &= 0xff;\n // We don't have to do anything if the value is positive.\n if (value & 0x80)\n {\n // But if the value is negative, we need to manually un-two's-compliment it.\n // I'm going to assume you can figure out what I meant by that,\n // because I don't know how else to explain it.\n // We could also just do value |= 0xffffff00, but I prefer\n // not caring how many bits are in the integer representation\n // of a JavaScript number in the currently running browser.\n value = -((0xff & ~value) + 1);\n }\n return value;\n};\n\nlet get_flags_register = function()\n{\n // We need the whole F register for some reason.\n // probably a PUSH AF instruction,\n // so make the F register out of our separate flags.\n return (flags.S << 7) |\n (flags.Z << 6) |\n (flags.Y << 5) |\n (flags.H << 4) |\n (flags.X << 3) |\n (flags.P << 2) |\n (flags.N << 1) |\n (flags.C);\n};\n\nlet get_flags_prime = function()\n{\n // This is the same as the above for the F' register.\n return (flags_prime.S << 7) |\n (flags_prime.Z << 6) |\n (flags_prime.Y << 5) |\n (flags_prime.H << 4) |\n (flags_prime.X << 3) |\n (flags_prime.P << 2) |\n (flags_prime.N << 1) |\n (flags_prime.C);\n};\n\nlet set_flags_register = function(operand)\n{\n // We need to set the F register, probably for a POP AF,\n // so break out the given value into our separate flags.\n flags.S = (operand & 0x80) >>> 7;\n flags.Z = (operand & 0x40) >>> 6;\n flags.Y = (operand & 0x20) >>> 5;\n flags.H = (operand & 0x10) >>> 4;\n flags.X = (operand & 0x08) >>> 3;\n flags.P = (operand & 0x04) >>> 2;\n flags.N = (operand & 0x02) >>> 1;\n flags.C = (operand & 0x01);\n};\n\nlet set_flags_prime = function(operand)\n{\n // Again, this is the same as the above for F'.\n flags_prime.S = (operand & 0x80) >>> 7;\n flags_prime.Z = (operand & 0x40) >>> 6;\n flags_prime.Y = (operand & 0x20) >>> 5;\n flags_prime.H = (operand & 0x10) >>> 4;\n flags_prime.X = (operand & 0x08) >>> 3;\n flags_prime.P = (operand & 0x04) >>> 2;\n flags_prime.N = (operand & 0x02) >>> 1;\n flags_prime.C = (operand & 0x01);\n};\n\nlet update_xy_flags = function(result)\n{\n // Most of the time, the undocumented flags\n // (sometimes called X and Y, or 3 and 5),\n // take their values from the corresponding bits\n // of the result of the instruction,\n // or from some other related value.\n // This is a utility function to set those flags based on those bits.\n flags.Y = (result & 0x20) >>> 5;\n flags.X = (result & 0x08) >>> 3;\n};\n\nlet get_parity = function(value)\n{\n // We could try to actually calculate the parity every time,\n // but why calculate what you can pre-calculate?\n var parity_bits = [\n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,\n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, \n 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1\n ];\n return parity_bits[value];\n};\n\nlet push_word = function(operand)\n{\n // Pretty obvious what this function does; given a 16-bit value,\n // decrement the stack pointer, write the high byte to the new\n // stack pointer location, then repeat for the low byte.\n sp = (sp - 1) & 0xffff;\n core.mem_write(sp, (operand & 0xff00) >>> 8);\n sp = (sp - 1) & 0xffff;\n core.mem_write(sp, operand & 0x00ff);\n};\n\nlet pop_word = function()\n{\n // Again, not complicated; read a byte off the top of the stack,\n // increment the stack pointer, rinse and repeat.\n var retval = core.mem_read(sp) & 0xff;\n sp = (sp + 1) & 0xffff;\n retval |= core.mem_read(sp) << 8;\n sp = (sp + 1) & 0xffff;\n return retval;\n};\n\n///////////////////////////////////////////////////////////////////////////////\n/// Now, the way most instructions work in this emulator is that they set up\n/// their operands according to their addressing mode, and then they call a\n/// utility function that handles all variations of that instruction.\n/// Those utility functions begin here.\n///////////////////////////////////////////////////////////////////////////////\nlet do_conditional_absolute_jump = function(condition)\n{\n // This function implements the JP [condition],nn instructions.\n if (condition)\n {\n // We're taking this jump, so write the new PC,\n // and then decrement the thing we just wrote,\n // because the instruction decoder increments the PC\n // unconditionally at the end of every instruction\n // and we need to counteract that so we end up at the jump target.\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n }\n else\n {\n // We're not taking this jump, just move the PC past the operand.\n pc = (pc + 2) & 0xffff;\n }\n};\n\nlet do_conditional_relative_jump = function(condition)\n{\n // This function implements the JR [condition],n instructions.\n if (condition)\n {\n // We need a few more cycles to actually take the jump.\n cycle_counter += 5;\n // Calculate the offset specified by our operand.\n var offset = get_signed_offset_byte(core.mem_read((pc + 1) & 0xffff));\n // Add the offset to the PC, also skipping past this instruction.\n pc = (pc + offset + 1) & 0xffff;\n }\n else\n {\n // No jump happening, just skip the operand.\n pc = (pc + 1) & 0xffff;\n }\n};\n\nlet do_conditional_call = function(condition)\n{\n // This function is the CALL [condition],nn instructions.\n // If you've seen the previous functions, you know this drill.\n if (condition)\n {\n cycle_counter += 7;\n push_word((pc + 3) & 0xffff);\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n }\n else\n {\n pc = (pc + 2) & 0xffff;\n }\n};\n\nlet do_conditional_return = function(condition)\n{\n if (condition)\n {\n cycle_counter += 6;\n pc = (pop_word() - 1) & 0xffff;\n }\n};\n\nlet do_reset = function(address)\n{\n // The RST [address] instructions go through here.\n push_word((pc + 1) & 0xffff);\n pc = (address - 1) & 0xffff;\n};\n\nlet do_add = function(operand)\n{\n // This is the ADD A, [operand] instructions.\n // We'll do the literal addition, which includes any overflow,\n // so that we can more easily figure out whether we had\n // an overflow or a carry and set the flags accordingly.\n var result = a + operand;\n \n // The great majority of the work for the arithmetic instructions\n // turns out to be setting the flags rather than the actual operation.\n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((operand & 0x0f) + (a & 0x0f)) & 0x10) ? 1 : 0;\n // An overflow has happened if the sign bits of the accumulator and the operand\n // don't match the sign bit of the result value.\n flags.P = ((a & 0x80) === (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 0;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_adc = function(operand)\n{\n var result = a + operand + flags.C;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((operand & 0x0f) + (a & 0x0f) + flags.C) & 0x10) ? 1 : 0;\n flags.P = ((a & 0x80) === (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 0;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_sub = function(operand)\n{\n var result = a - operand;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((a & 0x0f) - (operand & 0x0f)) & 0x10) ? 1 : 0;\n flags.P = ((a & 0x80) !== (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 1;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_sbc = function(operand)\n{\n var result = a - operand - flags.C;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = (((a & 0x0f) - (operand & 0x0f) - flags.C) & 0x10) ? 1 : 0;\n flags.P = ((a & 0x80) !== (operand & 0x80)) && ((a & 0x80) !== (result & 0x80)) ? 1 : 0;\n flags.N = 1;\n flags.C = (result & 0x100) ? 1 : 0;\n \n a = result & 0xff;\n update_xy_flags(a);\n};\n\nlet do_cp = function(operand)\n{\n // A compare instruction is just a subtraction that doesn't save the value,\n // so we implement it as... a subtraction that doesn't save the value.\n var temp = a;\n do_sub(operand);\n a = temp;\n // Since this instruction has no \"result\" value, the undocumented flags\n // are set based on the operand instead.\n update_xy_flags(operand);\n};\n\nlet do_and = function(operand)\n{\n // The logic instructions are all pretty straightforward.\n a &= operand & 0xff;\n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = 1;\n flags.P = get_parity(a);\n flags.N = 0;\n flags.C = 0;\n update_xy_flags(a);\n};\n\nlet do_or = function(operand)\n{\n a = (operand | a) & 0xff;\n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = 0;\n flags.P = get_parity(a);\n flags.N = 0;\n flags.C = 0;\n update_xy_flags(a);\n};\n\nlet do_xor = function(operand)\n{\n a = (operand ^ a) & 0xff;\n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = 0;\n flags.P = get_parity(a);\n flags.N = 0;\n flags.C = 0;\n update_xy_flags(a);\n};\n\nlet do_inc = function(operand)\n{\n var result = operand + 1;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = ((operand & 0x0f) === 0x0f) ? 1 : 0;\n // It's a good deal easier to detect overflow for an increment/decrement.\n flags.P = (operand === 0x7f) ? 1 : 0;\n flags.N = 0;\n \n result &= 0xff;\n update_xy_flags(result);\n \n return result;\n};\n\nlet do_dec = function(operand)\n{\n var result = operand - 1;\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = !(result & 0xff) ? 1 : 0;\n flags.H = ((operand & 0x0f) === 0x00) ? 1 : 0;\n flags.P = (operand === 0x80) ? 1 : 0;\n flags.N = 1;\n \n result &= 0xff;\n update_xy_flags(result);\n \n return result;\n};\n\nlet do_hl_add = function(operand)\n{\n // The HL arithmetic instructions are the same as the A ones,\n // just with twice as many bits happening.\n var hl = l | (h << 8), result = hl + operand;\n \n flags.N = 0;\n flags.C = (result & 0x10000) ? 1 : 0;\n flags.H = (((hl & 0x0fff) + (operand & 0x0fff)) & 0x1000) ? 1 : 0;\n \n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n\n update_xy_flags(h);\n};\n\nlet do_hl_adc = function(operand)\n{\n operand += flags.C;\n var hl = l | (h << 8), result = hl + operand;\n \n flags.S = (result & 0x8000) ? 1 : 0;\n flags.Z = !(result & 0xffff) ? 1 : 0;\n flags.H = (((hl & 0x0fff) + (operand & 0x0fff)) & 0x1000) ? 1 : 0;\n flags.P = ((hl & 0x8000) === (operand & 0x8000)) && ((result & 0x8000) !== (hl & 0x8000)) ? 1 : 0;\n flags.N = 0;\n flags.C = (result & 0x10000) ? 1 : 0;\n \n l = result & 0xff;\n h = (result >>> 8) & 0xff;\n \n update_xy_flags(h);\n};\n\nlet do_hl_sbc = function(operand)\n{\n operand += flags.C;\n var hl = l | (h << 8), result = hl - operand;\n \n flags.S = (result & 0x8000) ? 1 : 0;\n flags.Z = !(result & 0xffff) ? 1 : 0;\n flags.H = (((hl & 0x0fff) - (operand & 0x0fff)) & 0x1000) ? 1 : 0;\n flags.P = ((hl & 0x8000) !== (operand & 0x8000)) && ((result & 0x8000) !== (hl & 0x8000)) ? 1 : 0;\n flags.N = 1;\n flags.C = (result & 0x10000) ? 1 : 0;\n \n l = result & 0xff;\n h = (result >>> 8) & 0xff;\n \n update_xy_flags(h);\n};\n\nlet do_in = function(port)\n{\n var result = core.io_read(port);\n \n flags.S = (result & 0x80) ? 1 : 0;\n flags.Z = result ? 0 : 1;\n flags.H = 0;\n flags.P = get_parity(result) ? 1 : 0;\n flags.N = 0;\n update_xy_flags(result);\n \n return result;\n};\n\nlet do_neg = function()\n{\n // This instruction is defined to not alter the register if it === 0x80.\n if (a !== 0x80)\n {\n // This is a signed operation, so convert A to a signed value.\n a = get_signed_offset_byte(a);\n \n a = (-a) & 0xff;\n }\n \n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = !a ? 1 : 0;\n flags.H = (((-a) & 0x0f) > 0) ? 1 : 0;\n flags.P = (a === 0x80) ? 1 : 0;\n flags.N = 1;\n flags.C = a ? 1 : 0;\n update_xy_flags(a);\n};\n\nlet do_ldi = function()\n{\n // Copy the value that we're supposed to copy.\n var read_value = core.mem_read(l | (h << 8));\n core.mem_write(e | (d << 8), read_value);\n \n // Increment DE and HL, and decrement BC.\n var result = (e | (d << 8)) + 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.H = 0;\n flags.P = (c || b) ? 1 : 0;\n flags.N = 0;\n flags.Y = ((a + read_value) & 0x02) >>> 1;\n flags.X = ((a + read_value) & 0x08) >>> 3;\n};\n\nlet do_cpi = function()\n{\n var temp_carry = flags.C;\n var read_value = core.mem_read(l | (h << 8))\n do_cp(read_value);\n flags.C = temp_carry;\n flags.Y = ((a - read_value - flags.H) & 0x02) >>> 1;\n flags.X = ((a - read_value - flags.H) & 0x08) >>> 3;\n \n var result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.P = result ? 1 : 0;\n};\n\nlet do_ini = function()\n{\n b = do_dec(b);\n \n core.mem_write(l | (h << 8), core.io_read((b << 8) | c));\n \n var result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n\n flags.N = 1;\n};\n\nlet do_outi = function()\n{\n core.io_write((b << 8) | c, core.mem_read(l | (h << 8)));\n \n var result = (l | (h << 8)) + 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n \n b = do_dec(b);\n flags.N = 1;\n};\n\nlet do_ldd = function()\n{\n flags.N = 0;\n flags.H = 0;\n \n var read_value = core.mem_read(l | (h << 8));\n core.mem_write(e | (d << 8), read_value);\n \n var result = (e | (d << 8)) - 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.P = (c || b) ? 1 : 0;\n flags.Y = ((a + read_value) & 0x02) >>> 1;\n flags.X = ((a + read_value) & 0x08) >>> 3;\n};\n\nlet do_cpd = function()\n{\n var temp_carry = flags.C\n var read_value = core.mem_read(l | (h << 8))\n do_cp(read_value);\n flags.C = temp_carry;\n flags.Y = ((a - read_value - flags.H) & 0x02) >>> 1;\n flags.X = ((a - read_value - flags.H) & 0x08) >>> 3;\n \n var result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n result = (c | (b << 8)) - 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n \n flags.P = result ? 1 : 0;\n};\n\nlet do_ind = function()\n{\n b = do_dec(b);\n \n core.mem_write(l | (h << 8), core.io_read((b << 8) | c));\n \n var result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n \n flags.N = 1;\n};\n\nlet do_outd = function()\n{\n core.io_write((b << 8) | c, core.mem_read(l | (h << 8)));\n \n var result = (l | (h << 8)) - 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n \n b = do_dec(b);\n flags.N = 1;\n};\n\nlet do_rlc = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = (operand & 0x80) >>> 7;\n operand = ((operand << 1) | flags.C) & 0xff;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_rrc = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = operand & 1;\n operand = ((operand >>> 1) & 0x7f) | (flags.C << 7);\n \n flags.Z = !(operand & 0xff) ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand & 0xff;\n};\n\nlet do_rl = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n var temp = flags.C;\n flags.C = (operand & 0x80) >>> 7;\n operand = ((operand << 1) | temp) & 0xff;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n\n return operand;\n};\n\nlet do_rr = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n var temp = flags.C;\n flags.C = operand & 1;\n operand = ((operand >>> 1) & 0x7f) | (temp << 7);\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n\n return operand;\n};\n\nlet do_sla = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = (operand & 0x80) >>> 7;\n operand = (operand << 1) & 0xff;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_sra = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = operand & 1;\n operand = ((operand >>> 1) & 0x7f) | (operand & 0x80);\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_sll = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = (operand & 0x80) >>> 7;\n operand = ((operand << 1) & 0xff) | 1;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = (operand & 0x80) ? 1 : 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_srl = function(operand)\n{\n flags.N = 0;\n flags.H = 0;\n \n flags.C = operand & 1;\n operand = (operand >>> 1) & 0x7f;\n \n flags.Z = !operand ? 1 : 0;\n flags.P = get_parity(operand);\n flags.S = 0;\n update_xy_flags(operand);\n \n return operand;\n};\n\nlet do_ix_add = function(operand)\n{\n flags.N = 0;\n \n var result = ix + operand;\n \n flags.C = (result & 0x10000) ? 1 : 0;\n flags.H = (((ix & 0xfff) + (operand & 0xfff)) & 0x1000) ? 1 : 0;\n update_xy_flags((result & 0xff00) >>> 8);\n \n ix = result & 0xffff;\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// This table contains the implementations for the instructions that weren't\n/// implemented directly in the decoder function (everything but the 8-bit\n/// register loads and the accumulator ALU instructions, in other words).\n/// Similar tables for the ED and DD/FD prefixes follow this one.\n///////////////////////////////////////////////////////////////////////////////\nlet instructions = [];\n\n// 0x00 : NOP\ninstructions[0x00] = function() { };\n// 0x01 : LD BC, nn\ninstructions[0x01] = function()\n{\n pc = (pc + 1) & 0xffff;\n c = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n b = core.mem_read(pc);\n};\n// 0x02 : LD (BC), A\ninstructions[0x02] = function()\n{\n core.mem_write(c | (b << 8), a);\n};\n// 0x03 : INC BC\ninstructions[0x03] = function()\n{\n var result = (c | (b << 8));\n result += 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n};\n// 0x04 : INC B\ninstructions[0x04] = function()\n{\n b = do_inc(b);\n};\n// 0x05 : DEC B\ninstructions[0x05] = function()\n{\n b = do_dec(b);\n};\n// 0x06 : LD B, n\ninstructions[0x06] = function()\n{\n pc = (pc + 1) & 0xffff;\n b = core.mem_read(pc);\n};\n// 0x07 : RLCA\ninstructions[0x07] = function()\n{\n // This instruction is implemented as a special case of the\n // more general Z80-specific RLC instruction.\n // Specifially, RLCA is a version of RLC A that affects fewer flags.\n // The same applies to RRCA, RLA, and RRA.\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rlc(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x08 : EX AF, AF'\ninstructions[0x08] = function()\n{\n var temp = a;\n a = a_prime;\n a_prime = temp;\n \n temp = get_flags_register();\n set_flags_register(get_flags_prime());\n set_flags_prime(temp);\n};\n// 0x09 : ADD HL, BC\ninstructions[0x09] = function()\n{\n do_hl_add(c | (b << 8));\n};\n// 0x0a : LD A, (BC)\ninstructions[0x0a] = function()\n{\n a = core.mem_read(c | (b << 8));\n};\n// 0x0b : DEC BC\ninstructions[0x0b] = function()\n{\n var result = (c | (b << 8));\n result -= 1;\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n};\n// 0x0c : INC C\ninstructions[0x0c] = function()\n{\n c = do_inc(c);\n};\n// 0x0d : DEC C\ninstructions[0x0d] = function()\n{\n c = do_dec(c);\n};\n// 0x0e : LD C, n\ninstructions[0x0e] = function()\n{\n pc = (pc + 1) & 0xffff;\n c = core.mem_read(pc);\n};\n// 0x0f : RRCA\ninstructions[0x0f] = function()\n{\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rrc(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x10 : DJNZ nn\ninstructions[0x10] = function()\n{\n b = (b - 1) & 0xff;\n do_conditional_relative_jump(b !== 0);\n};\n// 0x11 : LD DE, nn\ninstructions[0x11] = function()\n{\n pc = (pc + 1) & 0xffff;\n e = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n d = core.mem_read(pc);\n};\n// 0x12 : LD (DE), A\ninstructions[0x12] = function()\n{\n core.mem_write(e | (d << 8), a);\n};\n// 0x13 : INC DE\ninstructions[0x13] = function()\n{\n var result = (e | (d << 8));\n result += 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n};\n// 0x14 : INC D\ninstructions[0x14] = function()\n{\n d = do_inc(d);\n};\n// 0x15 : DEC D\ninstructions[0x15] = function()\n{\n d = do_dec(d);\n};\n// 0x16 : LD D, n\ninstructions[0x16] = function()\n{\n pc = (pc + 1) & 0xffff;\n d = core.mem_read(pc);\n};\n// 0x17 : RLA\ninstructions[0x17] = function()\n{\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rl(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x18 : JR n\ninstructions[0x18] = function()\n{\n var offset = get_signed_offset_byte(core.mem_read((pc + 1) & 0xffff));\n pc = (pc + offset + 1) & 0xffff;\n};\n// 0x19 : ADD HL, DE\ninstructions[0x19] = function()\n{\n do_hl_add(e | (d << 8));\n};\n// 0x1a : LD A, (DE)\ninstructions[0x1a] = function()\n{\n a = core.mem_read(e | (d << 8));\n};\n// 0x1b : DEC DE\ninstructions[0x1b] = function()\n{\n var result = (e | (d << 8));\n result -= 1;\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n};\n// 0x1c : INC E\ninstructions[0x1c] = function()\n{\n e = do_inc(e);\n};\n// 0x1d : DEC E\ninstructions[0x1d] = function()\n{\n e = do_dec(e);\n};\n// 0x1e : LD E, n\ninstructions[0x1e] = function()\n{\n pc = (pc + 1) & 0xffff;\n e = core.mem_read(pc);\n};\n// 0x1f : RRA\ninstructions[0x1f] = function()\n{\n var temp_s = flags.S, temp_z = flags.Z, temp_p = flags.P;\n a = do_rr(a);\n flags.S = temp_s;\n flags.Z = temp_z;\n flags.P = temp_p;\n};\n// 0x20 : JR NZ, n\ninstructions[0x20] = function()\n{\n do_conditional_relative_jump(!flags.Z);\n};\n// 0x21 : LD HL, nn\ninstructions[0x21] = function()\n{\n pc = (pc + 1) & 0xffff;\n l = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n h = core.mem_read(pc);\n};\n// 0x22 : LD (nn), HL\ninstructions[0x22] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, l);\n core.mem_write((address + 1) & 0xffff, h);\n};\n// 0x23 : INC HL\ninstructions[0x23] = function()\n{\n var result = (l | (h << 8));\n result += 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n};\n// 0x24 : INC H\ninstructions[0x24] = function()\n{\n h = do_inc(h);\n};\n// 0x25 : DEC H\ninstructions[0x25] = function()\n{\n h = do_dec(h);\n};\n// 0x26 : LD H, n\ninstructions[0x26] = function()\n{\n pc = (pc + 1) & 0xffff;\n h = core.mem_read(pc);\n};\n// 0x27 : DAA\ninstructions[0x27] = function()\n{\n var temp = a;\n if (!flags.N)\n {\n if (flags.H || ((a & 0x0f) > 9))\n temp += 0x06;\n if (flags.C || (a > 0x99))\n temp += 0x60;\n }\n else\n {\n if (flags.H || ((a & 0x0f) > 9))\n temp -= 0x06;\n if (flags.C || (a > 0x99))\n temp -= 0x60;\n }\n \n flags.S = (temp & 0x80) ? 1 : 0;\n flags.Z = !(temp & 0xff) ? 1 : 0;\n flags.H = ((a & 0x10) ^ (temp & 0x10)) ? 1 : 0;\n flags.P = get_parity(temp & 0xff);\n // DAA never clears the carry flag if it was already set,\n // but it is able to set the carry flag if it was clear.\n // Don't ask me, I don't know.\n // Note also that we check for a BCD carry, instead of the usual.\n flags.C = (flags.C || (a > 0x99)) ? 1 : 0;\n \n a = temp & 0xff;\n \n update_xy_flags(a);\n};\n// 0x28 : JR Z, n\ninstructions[0x28] = function()\n{\n do_conditional_relative_jump(!!flags.Z);\n};\n// 0x29 : ADD HL, HL\ninstructions[0x29] = function()\n{\n do_hl_add(l | (h << 8));\n};\n// 0x2a : LD HL, (nn)\ninstructions[0x2a] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n l = core.mem_read(address);\n h = core.mem_read((address + 1) & 0xffff);\n};\n// 0x2b : DEC HL\ninstructions[0x2b] = function()\n{\n var result = (l | (h << 8));\n result -= 1;\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n};\n// 0x2c : INC L\ninstructions[0x2c] = function()\n{\n l = do_inc(l);\n};\n// 0x2d : DEC L\ninstructions[0x2d] = function()\n{\n l = do_dec(l);\n};\n// 0x2e : LD L, n\ninstructions[0x2e] = function()\n{\n pc = (pc + 1) & 0xffff;\n l = core.mem_read(pc);\n};\n// 0x2f : CPL\ninstructions[0x2f] = function()\n{\n a = (~a) & 0xff;\n flags.N = 1;\n flags.H = 1;\n update_xy_flags(a);\n};\n// 0x30 : JR NC, n\ninstructions[0x30] = function()\n{\n do_conditional_relative_jump(!flags.C);\n};\n// 0x31 : LD SP, nn\ninstructions[0x31] = function()\n{\n sp = core.mem_read((pc + 1) & 0xffff) | \n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc + 2) & 0xffff;\n};\n// 0x32 : LD (nn), A\ninstructions[0x32] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, a);\n};\n// 0x33 : INC SP\ninstructions[0x33] = function()\n{\n sp = (sp + 1) & 0xffff;\n};\n// 0x34 : INC (HL)\ninstructions[0x34] = function()\n{\n var address = l | (h << 8);\n core.mem_write(address, do_inc(core.mem_read(address)));\n};\n// 0x35 : DEC (HL)\ninstructions[0x35] = function()\n{\n var address = l | (h << 8);\n core.mem_write(address, do_dec(core.mem_read(address)));\n};\n// 0x36 : LD (HL), n\ninstructions[0x36] = function()\n{\n pc = (pc + 1) & 0xffff;\n core.mem_write(l | (h << 8), core.mem_read(pc));\n};\n// 0x37 : SCF\ninstructions[0x37] = function()\n{\n flags.N = 0;\n flags.H = 0;\n flags.C = 1;\n update_xy_flags(a);\n};\n// 0x38 : JR C, n\ninstructions[0x38] = function()\n{\n do_conditional_relative_jump(!!flags.C);\n};\n// 0x39 : ADD HL, SP\ninstructions[0x39] = function()\n{\n do_hl_add(sp);\n};\n// 0x3a : LD A, (nn)\ninstructions[0x3a] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n a = core.mem_read(address);\n};\n// 0x3b : DEC SP\ninstructions[0x3b] = function()\n{\n sp = (sp - 1) & 0xffff;\n};\n// 0x3c : INC A\ninstructions[0x3c] = function()\n{\n a = do_inc(a);\n};\n// 0x3d : DEC A\ninstructions[0x3d] = function()\n{\n a = do_dec(a);\n};\n// 0x3e : LD A, n\ninstructions[0x3e] = function()\n{\n a = core.mem_read((pc + 1) & 0xffff);\n pc = (pc + 1) & 0xffff;\n};\n// 0x3f : CCF\ninstructions[0x3f] = function()\n{\n flags.N = 0;\n flags.H = flags.C;\n flags.C = flags.C ? 0 : 1;\n update_xy_flags(a);\n};\n// 0xc0 : RET NZ\ninstructions[0xc0] = function()\n{\n do_conditional_return(!flags.Z);\n};\n// 0xc1 : POP BC\ninstructions[0xc1] = function()\n{\n var result = pop_word();\n c = result & 0xff;\n b = (result & 0xff00) >>> 8;\n};\n// 0xc2 : JP NZ, nn\ninstructions[0xc2] = function()\n{\n do_conditional_absolute_jump(!flags.Z);\n};\n// 0xc3 : JP nn\ninstructions[0xc3] = function()\n{\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n};\n// 0xc4 : CALL NZ, nn\ninstructions[0xc4] = function()\n{\n do_conditional_call(!flags.Z);\n};\n// 0xc5 : PUSH BC\ninstructions[0xc5] = function()\n{\n push_word(c | (b << 8));\n};\n// 0xc6 : ADD A, n\ninstructions[0xc6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_add(core.mem_read(pc));\n};\n// 0xc7 : RST 00h\ninstructions[0xc7] = function()\n{\n do_reset(0x00);\n};\n// 0xc8 : RET Z\ninstructions[0xc8] = function()\n{\n do_conditional_return(!!flags.Z);\n};\n// 0xc9 : RET\ninstructions[0xc9] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n};\n// 0xca : JP Z, nn\ninstructions[0xca] = function()\n{\n do_conditional_absolute_jump(!!flags.Z);\n};\n// 0xcb : CB Prefix\ninstructions[0xcb] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n\n // We don't have a table for this prefix,\n // the instructions are all so uniform that we can directly decode them.\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n bit_number = (opcode & 0x38) >>> 3,\n reg_code = opcode & 0x07;\n \n if (opcode < 0x40)\n {\n // Shift/rotate instructions\n var op_array = [do_rlc, do_rrc, do_rl, do_rr,\n do_sla, do_sra, do_sll, do_srl];\n \n if (reg_code === 0)\n b = op_array[bit_number]( b);\n else if (reg_code === 1)\n c = op_array[bit_number]( c);\n else if (reg_code === 2)\n d = op_array[bit_number]( d);\n else if (reg_code === 3)\n e = op_array[bit_number]( e);\n else if (reg_code === 4)\n h = op_array[bit_number]( h);\n else if (reg_code === 5)\n l = op_array[bit_number]( l);\n else if (reg_code === 6)\n core.mem_write(l | (h << 8),\n op_array[bit_number]( core.mem_read(l | (h << 8))));\n else if (reg_code === 7)\n a = op_array[bit_number]( a);\n }\n else if (opcode < 0x80)\n {\n // BIT instructions\n if (reg_code === 0)\n flags.Z = !(b & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 1)\n flags.Z = !(c & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 2)\n flags.Z = !(d & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 3)\n flags.Z = !(e & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 4)\n flags.Z = !(h & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 5)\n flags.Z = !(l & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 6)\n flags.Z = !((core.mem_read(l | (h << 8))) & (1 << bit_number)) ? 1 : 0;\n else if (reg_code === 7)\n flags.Z = !(a & (1 << bit_number)) ? 1 : 0;\n \n flags.N = 0;\n flags.H = 1;\n flags.P = flags.Z;\n flags.S = ((bit_number === 7) && !flags.Z) ? 1 : 0;\n // For the BIT n, (HL) instruction, the X and Y flags are obtained\n // from what is apparently an internal temporary register used for\n // some of the 16-bit arithmetic instructions.\n // I haven't implemented that register here,\n // so for now we'll set X and Y the same way for every BIT opcode,\n // which means that they will usually be wrong for BIT n, (HL).\n flags.Y = ((bit_number === 5) && !flags.Z) ? 1 : 0;\n flags.X = ((bit_number === 3) && !flags.Z) ? 1 : 0;\n }\n else if (opcode < 0xc0)\n {\n // RES instructions\n if (reg_code === 0)\n b &= (0xff & ~(1 << bit_number));\n else if (reg_code === 1)\n c &= (0xff & ~(1 << bit_number));\n else if (reg_code === 2)\n d &= (0xff & ~(1 << bit_number));\n else if (reg_code === 3)\n e &= (0xff & ~(1 << bit_number));\n else if (reg_code === 4)\n h &= (0xff & ~(1 << bit_number));\n else if (reg_code === 5)\n l &= (0xff & ~(1 << bit_number));\n else if (reg_code === 6)\n core.mem_write(l | (h << 8),\n core.mem_read(l | (h << 8)) & ~(1 << bit_number));\n else if (reg_code === 7)\n a &= (0xff & ~(1 << bit_number));\n }\n else\n {\n // SET instructions\n if (reg_code === 0)\n b |= (1 << bit_number);\n else if (reg_code === 1)\n c |= (1 << bit_number);\n else if (reg_code === 2)\n d |= (1 << bit_number);\n else if (reg_code === 3)\n e |= (1 << bit_number);\n else if (reg_code === 4)\n h |= (1 << bit_number);\n else if (reg_code === 5)\n l |= (1 << bit_number);\n else if (reg_code === 6)\n core.mem_write(l | (h << 8),\n core.mem_read(l | (h << 8)) | (1 << bit_number));\n else if (reg_code === 7)\n a |= (1 << bit_number);\n }\n \n cycle_counter += cycle_counts_cb[opcode];\n};\n// 0xcc : CALL Z, nn\ninstructions[0xcc] = function()\n{\n do_conditional_call(!!flags.Z);\n};\n// 0xcd : CALL nn\ninstructions[0xcd] = function()\n{\n push_word((pc + 3) & 0xffff);\n pc = core.mem_read((pc + 1) & 0xffff) |\n (core.mem_read((pc + 2) & 0xffff) << 8);\n pc = (pc - 1) & 0xffff;\n};\n// 0xce : ADC A, n\ninstructions[0xce] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_adc(core.mem_read(pc));\n};\n// 0xcf : RST 08h\ninstructions[0xcf] = function()\n{\n do_reset(0x08);\n};\n// 0xd0 : RET NC\ninstructions[0xd0] = function()\n{\n do_conditional_return(!flags.C);\n};\n// 0xd1 : POP DE\ninstructions[0xd1] = function()\n{\n var result = pop_word();\n e = result & 0xff;\n d = (result & 0xff00) >>> 8;\n};\n// 0xd2 : JP NC, nn\ninstructions[0xd2] = function()\n{\n do_conditional_absolute_jump(!flags.C);\n};\n// 0xd3 : OUT (n), A\ninstructions[0xd3] = function()\n{\n pc = (pc + 1) & 0xffff;\n core.io_write((a << 8) | core.mem_read(pc), a);\n};\n// 0xd4 : CALL NC, nn\ninstructions[0xd4] = function()\n{\n do_conditional_call(!flags.C);\n};\n// 0xd5 : PUSH DE\ninstructions[0xd5] = function()\n{\n push_word(e | (d << 8));\n};\n// 0xd6 : SUB n\ninstructions[0xd6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_sub(core.mem_read(pc));\n};\n// 0xd7 : RST 10h\ninstructions[0xd7] = function()\n{\n do_reset(0x10);\n};\n// 0xd8 : RET C\ninstructions[0xd8] = function()\n{\n do_conditional_return(!!flags.C);\n};\n// 0xd9 : EXX\ninstructions[0xd9] = function()\n{\n var temp = b;\n b = b_prime;\n b_prime = temp;\n temp = c;\n c = c_prime;\n c_prime = temp;\n temp = d;\n d = d_prime;\n d_prime = temp;\n temp = e;\n e = e_prime;\n e_prime = temp;\n temp = h;\n h = h_prime;\n h_prime = temp;\n temp = l;\n l = l_prime;\n l_prime = temp;\n};\n// 0xda : JP C, nn\ninstructions[0xda] = function()\n{\n do_conditional_absolute_jump(!!flags.C);\n};\n// 0xdb : IN A, (n)\ninstructions[0xdb] = function()\n{\n pc = (pc + 1) & 0xffff;\n a = core.io_read((a << 8) | core.mem_read(pc));\n};\n// 0xdc : CALL C, nn\ninstructions[0xdc] = function()\n{\n do_conditional_call(!!flags.C);\n};\n// 0xdd : DD Prefix (IX instructions)\ninstructions[0xdd] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n func = dd_instructions[opcode];\n \n if (func)\n {\n //func = func.bind(this);\n func();\n cycle_counter += cycle_counts_dd[opcode];\n }\n else\n {\n // Apparently if a DD opcode doesn't exist,\n // it gets treated as an unprefixed opcode.\n // What we'll do to handle that is just back up the \n // program counter, so that this byte gets decoded\n // as a normal instruction.\n pc = (pc - 1) & 0xffff;\n // And we'll add in the cycle count for a NOP.\n cycle_counter += cycle_counts[0];\n }\n};\n// 0xde : SBC n\ninstructions[0xde] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_sbc(core.mem_read(pc));\n};\n// 0xdf : RST 18h\ninstructions[0xdf] = function()\n{\n do_reset(0x18);\n};\n// 0xe0 : RET PO\ninstructions[0xe0] = function()\n{\n do_conditional_return(!flags.P);\n};\n// 0xe1 : POP HL\ninstructions[0xe1] = function()\n{\n var result = pop_word();\n l = result & 0xff;\n h = (result & 0xff00) >>> 8;\n};\n// 0xe2 : JP PO, (nn)\ninstructions[0xe2] = function()\n{\n do_conditional_absolute_jump(!flags.P);\n};\n// 0xe3 : EX (SP), HL\ninstructions[0xe3] = function()\n{\n var temp = core.mem_read(sp);\n core.mem_write(sp, l);\n l = temp;\n temp = core.mem_read((sp + 1) & 0xffff);\n core.mem_write((sp + 1) & 0xffff, h);\n h = temp;\n};\n// 0xe4 : CALL PO, nn\ninstructions[0xe4] = function()\n{\n do_conditional_call(!flags.P);\n};\n// 0xe5 : PUSH HL\ninstructions[0xe5] = function()\n{\n push_word(l | (h << 8));\n};\n// 0xe6 : AND n\ninstructions[0xe6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_and(core.mem_read(pc));\n};\n// 0xe7 : RST 20h\ninstructions[0xe7] = function()\n{\n do_reset(0x20);\n};\n// 0xe8 : RET PE\ninstructions[0xe8] = function()\n{\n do_conditional_return(!!flags.P);\n};\n// 0xe9 : JP (HL)\ninstructions[0xe9] = function()\n{\n pc = l | (h << 8);\n pc = (pc - 1) & 0xffff;\n};\n// 0xea : JP PE, nn\ninstructions[0xea] = function()\n{\n do_conditional_absolute_jump(!!flags.P);\n};\n// 0xeb : EX DE, HL\ninstructions[0xeb] = function()\n{\n var temp = d;\n d = h;\n h = temp;\n temp = e;\n e = l;\n l = temp;\n};\n// 0xec : CALL PE, nn\ninstructions[0xec] = function()\n{\n do_conditional_call(!!flags.P);\n};\n// 0xed : ED Prefix\ninstructions[0xed] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n func = ed_instructions[opcode];\n \n if (func)\n {\n //func = func.bind(this);\n func();\n cycle_counter += cycle_counts_ed[opcode];\n }\n else\n {\n // If the opcode didn't exist, the whole thing is a two-byte NOP.\n cycle_counter += cycle_counts[0];\n }\n};\n// 0xee : XOR n\ninstructions[0xee] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_xor(core.mem_read(pc));\n};\n// 0xef : RST 28h\ninstructions[0xef] = function()\n{\n do_reset(0x28);\n};\n// 0xf0 : RET P\ninstructions[0xf0] = function()\n{\n do_conditional_return(!flags.S);\n};\n// 0xf1 : POP AF\ninstructions[0xf1] = function()\n{\n var result = pop_word();\n set_flags_register(result & 0xff);\n a = (result & 0xff00) >>> 8;\n};\n// 0xf2 : JP P, nn\ninstructions[0xf2] = function()\n{\n do_conditional_absolute_jump(!flags.S);\n};\n// 0xf3 : DI\ninstructions[0xf3] = function()\n{\n // DI doesn't actually take effect until after the next instruction.\n do_delayed_di = true;\n};\n// 0xf4 : CALL P, nn\ninstructions[0xf4] = function()\n{\n do_conditional_call(!flags.S);\n};\n// 0xf5 : PUSH AF\ninstructions[0xf5] = function()\n{\n push_word(get_flags_register() | (a << 8));\n};\n// 0xf6 : OR n\ninstructions[0xf6] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_or(core.mem_read(pc));\n};\n// 0xf7 : RST 30h\ninstructions[0xf7] = function()\n{\n do_reset(0x30);\n};\n// 0xf8 : RET M\ninstructions[0xf8] = function()\n{\n do_conditional_return(!!flags.S);\n};\n// 0xf9 : LD SP, HL\ninstructions[0xf9] = function()\n{\n sp = l | (h << 8);\n};\n// 0xfa : JP M, nn\ninstructions[0xfa] = function()\n{\n do_conditional_absolute_jump(!!flags.S);\n};\n// 0xfb : EI\ninstructions[0xfb] = function()\n{\n // EI doesn't actually take effect until after the next instruction.\n do_delayed_ei = true;\n};\n// 0xfc : CALL M, nn\ninstructions[0xfc] = function()\n{\n do_conditional_call(!!flags.S);\n};\n// 0xfd : FD Prefix (IY instructions)\ninstructions[0xfd] = function()\n{\n // R is incremented at the start of the second instruction cycle,\n // before the instruction actually runs.\n // The high bit of R is not affected by this increment,\n // it can only be changed using the LD R, A instruction.\n r = (r & 0x80) | (((r & 0x7f) + 1) & 0x7f);\n \n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc),\n func = dd_instructions[opcode];\n \n if (func)\n {\n // Rather than copy and paste all the IX instructions into IY instructions,\n // what we'll do is sneakily copy IY into IX, run the IX instruction,\n // and then copy the result into IY and restore the old IX.\n var temp = ix;\n ix = iy;\n //func = func.bind(this);\n func();\n iy = ix;\n ix = temp;\n \n cycle_counter += cycle_counts_dd[opcode];\n }\n else\n {\n // Apparently if an FD opcode doesn't exist,\n // it gets treated as an unprefixed opcode.\n // What we'll do to handle that is just back up the \n // program counter, so that this byte gets decoded\n // as a normal instruction.\n pc = (pc - 1) & 0xffff;\n // And we'll add in the cycle count for a NOP.\n cycle_counter += cycle_counts[0];\n }\n};\n// 0xfe : CP n\ninstructions[0xfe] = function()\n{\n pc = (pc + 1) & 0xffff;\n do_cp(core.mem_read(pc));\n};\n// 0xff : RST 38h\ninstructions[0xff] = function()\n{\n do_reset(0x38);\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// This table of ED opcodes is pretty sparse;\n/// there are not very many valid ED-prefixed opcodes in the Z80,\n/// and many of the ones that are valid are not documented.\n///////////////////////////////////////////////////////////////////////////////\nlet ed_instructions = [];\n// 0x40 : IN B, (C)\ned_instructions[0x40] = function()\n{\n b = do_in((b << 8) | c);\n};\n// 0x41 : OUT (C), B\ned_instructions[0x41] = function()\n{\n core.io_write((b << 8) | c, b);\n};\n// 0x42 : SBC HL, BC\ned_instructions[0x42] = function()\n{\n do_hl_sbc(c | (b << 8));\n};\n// 0x43 : LD (nn), BC\ned_instructions[0x43] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, c);\n core.mem_write((address + 1) & 0xffff, b);\n};\n// 0x44 : NEG\ned_instructions[0x44] = function()\n{\n do_neg();\n};\n// 0x45 : RETN\ned_instructions[0x45] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x46 : IM 0\ned_instructions[0x46] = function()\n{\n imode = 0;\n};\n// 0x47 : LD I, A\ned_instructions[0x47] = function()\n{\n i = a\n};\n// 0x48 : IN C, (C)\ned_instructions[0x48] = function()\n{\n c = do_in((b << 8) | c);\n};\n// 0x49 : OUT (C), C\ned_instructions[0x49] = function()\n{\n core.io_write((b << 8) | c, c);\n};\n// 0x4a : ADC HL, BC\ned_instructions[0x4a] = function()\n{\n do_hl_adc(c | (b << 8));\n};\n// 0x4b : LD BC, (nn)\ned_instructions[0x4b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n c = core.mem_read(address);\n b = core.mem_read((address + 1) & 0xffff);\n};\n// 0x4c : NEG (Undocumented)\ned_instructions[0x4c] = function()\n{\n do_neg();\n};\n// 0x4d : RETI\ned_instructions[0x4d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n};\n// 0x4e : IM 0 (Undocumented)\ned_instructions[0x4e] = function()\n{\n imode = 0;\n};\n// 0x4f : LD R, A\ned_instructions[0x4f] = function()\n{\n r = a;\n};\n// 0x50 : IN D, (C)\ned_instructions[0x50] = function()\n{\n d = do_in((b << 8) | c);\n};\n// 0x51 : OUT (C), D\ned_instructions[0x51] = function()\n{\n core.io_write((b << 8) | c, d);\n};\n// 0x52 : SBC HL, DE\ned_instructions[0x52] = function()\n{\n do_hl_sbc(e | (d << 8));\n};\n// 0x53 : LD (nn), DE\ned_instructions[0x53] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, e);\n core.mem_write((address + 1) & 0xffff, d);\n};\n// 0x54 : NEG (Undocumented)\ned_instructions[0x54] = function()\n{\n do_neg();\n};\n// 0x55 : RETN\ned_instructions[0x55] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x56 : IM 1\ned_instructions[0x56] = function()\n{\n imode = 1;\n};\n// 0x57 : LD A, I\ned_instructions[0x57] = function()\n{\n a = i;\n flags.S = a & 0x80 ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = iff2;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x58 : IN E, (C)\ned_instructions[0x58] = function()\n{\n e = do_in((b << 8) | c);\n};\n// 0x59 : OUT (C), E\ned_instructions[0x59] = function()\n{\n core.io_write((b << 8) | c, e);\n};\n// 0x5a : ADC HL, DE\ned_instructions[0x5a] = function()\n{\n do_hl_adc(e | (d << 8));\n};\n// 0x5b : LD DE, (nn)\ned_instructions[0x5b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n e = core.mem_read(address);\n d = core.mem_read((address + 1) & 0xffff);\n};\n// 0x5c : NEG (Undocumented)\ned_instructions[0x5c] = function()\n{\n do_neg();\n};\n// 0x5d : RETN\ned_instructions[0x5d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x5e : IM 2\ned_instructions[0x5e] = function()\n{\n imode = 2;\n};\n// 0x5f : LD A, R\ned_instructions[0x5f] = function()\n{\n a = r;\n flags.S = a & 0x80 ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = iff2;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x60 : IN H, (C)\ned_instructions[0x60] = function()\n{\n h = do_in((b << 8) | c);\n};\n// 0x61 : OUT (C), H\ned_instructions[0x61] = function()\n{\n core.io_write((b << 8) | c, h);\n};\n// 0x62 : SBC HL, HL\ned_instructions[0x62] = function()\n{\n do_hl_sbc(l | (h << 8));\n};\n// 0x63 : LD (nn), HL (Undocumented)\ned_instructions[0x63] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, l);\n core.mem_write((address + 1) & 0xffff, h);\n};\n// 0x64 : NEG (Undocumented)\ned_instructions[0x64] = function()\n{\n do_neg();\n};\n// 0x65 : RETN\ned_instructions[0x65] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x66 : IM 0\ned_instructions[0x66] = function()\n{\n imode = 0;\n};\n// 0x67 : RRD\ned_instructions[0x67] = function()\n{\n var hl_value = core.mem_read(l | (h << 8));\n var temp1 = hl_value & 0x0f, temp2 = a & 0x0f;\n hl_value = ((hl_value & 0xf0) >>> 4) | (temp2 << 4);\n a = (a & 0xf0) | temp1;\n core.mem_write(l | (h << 8), hl_value);\n \n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = get_parity(a) ? 1 : 0;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x68 : IN L, (C)\ned_instructions[0x68] = function()\n{\n l = do_in((b << 8) | c);\n};\n// 0x69 : OUT (C), L\ned_instructions[0x69] = function()\n{\n core.io_write((b << 8) | c, l);\n};\n// 0x6a : ADC HL, HL\ned_instructions[0x6a] = function()\n{\n do_hl_adc(l | (h << 8));\n};\n// 0x6b : LD HL, (nn) (Undocumented)\ned_instructions[0x6b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n l = core.mem_read(address);\n h = core.mem_read((address + 1) & 0xffff);\n};\n// 0x6c : NEG (Undocumented)\ned_instructions[0x6c] = function()\n{\n do_neg();\n};\n// 0x6d : RETN\ned_instructions[0x6d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x6e : IM 0 (Undocumented)\ned_instructions[0x6e] = function()\n{\n imode = 0;\n};\n// 0x6f : RLD\ned_instructions[0x6f] = function()\n{\n var hl_value = core.mem_read(l | (h << 8));\n var temp1 = hl_value & 0xf0, temp2 = a & 0x0f;\n hl_value = ((hl_value & 0x0f) << 4) | temp2;\n a = (a & 0xf0) | (temp1 >>> 4);\n core.mem_write(l | (h << 8), hl_value);\n \n flags.S = (a & 0x80) ? 1 : 0;\n flags.Z = a ? 0 : 1;\n flags.H = 0;\n flags.P = get_parity(a) ? 1 : 0;\n flags.N = 0;\n update_xy_flags(a);\n};\n// 0x70 : IN (C) (Undocumented)\ned_instructions[0x70] = function()\n{\n do_in((b << 8) | c);\n};\n// 0x71 : OUT (C), 0 (Undocumented)\ned_instructions[0x71] = function()\n{\n core.io_write((b << 8) | c, 0);\n};\n// 0x72 : SBC HL, SP\ned_instructions[0x72] = function()\n{\n do_hl_sbc(sp);\n};\n// 0x73 : LD (nn), SP\ned_instructions[0x73] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n core.mem_write(address, sp & 0xff);\n core.mem_write((address + 1) & 0xffff, (sp >>> 8) & 0xff);\n};\n// 0x74 : NEG (Undocumented)\ned_instructions[0x74] = function()\n{\n do_neg();\n};\n// 0x75 : RETN\ned_instructions[0x75] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x76 : IM 1\ned_instructions[0x76] = function()\n{\n imode = 1;\n};\n// 0x78 : IN A, (C)\ned_instructions[0x78] = function()\n{\n a = do_in((b << 8) | c);\n};\n// 0x79 : OUT (C), A\ned_instructions[0x79] = function()\n{\n core.io_write((b << 8) | c, a);\n};\n// 0x7a : ADC HL, SP\ned_instructions[0x7a] = function()\n{\n do_hl_adc(sp);\n};\n// 0x7b : LD SP, (nn)\ned_instructions[0x7b] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= core.mem_read(pc) << 8;\n \n sp = core.mem_read(address);\n sp |= core.mem_read((address + 1) & 0xffff) << 8;\n};\n// 0x7c : NEG (Undocumented)\ned_instructions[0x7c] = function()\n{\n do_neg();\n};\n// 0x7d : RETN\ned_instructions[0x7d] = function()\n{\n pc = (pop_word() - 1) & 0xffff;\n iff1 = iff2;\n};\n// 0x7e : IM 2\ned_instructions[0x7e] = function()\n{\n imode = 2;\n};\n// 0xa0 : LDI\ned_instructions[0xa0] = function()\n{\n do_ldi();\n};\n// 0xa1 : CPI\ned_instructions[0xa1] = function()\n{\n do_cpi();\n};\n// 0xa2 : INI\ned_instructions[0xa2] = function()\n{\n do_ini();\n};\n// 0xa3 : OUTI\ned_instructions[0xa3] = function()\n{\n do_outi();\n};\n// 0xa8 : LDD\ned_instructions[0xa8] = function()\n{\n do_ldd();\n};\n// 0xa9 : CPD\ned_instructions[0xa9] = function()\n{\n do_cpd();\n};\n// 0xaa : IND\ned_instructions[0xaa] = function()\n{\n do_ind();\n};\n// 0xab : OUTD\ned_instructions[0xab] = function()\n{\n do_outd();\n};\n// 0xb0 : LDIR\ned_instructions[0xb0] = function()\n{\n do_ldi();\n if (b || c)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb1 : CPIR\ned_instructions[0xb1] = function()\n{\n do_cpi();\n if (!flags.Z && (b || c))\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb2 : INIR\ned_instructions[0xb2] = function()\n{\n do_ini();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb3 : OTIR\ned_instructions[0xb3] = function()\n{\n do_outi();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb8 : LDDR\ned_instructions[0xb8] = function()\n{\n do_ldd();\n if (b || c)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xb9 : CPDR\ned_instructions[0xb9] = function()\n{\n do_cpd();\n if (!flags.Z && (b || c))\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xba : INDR\ned_instructions[0xba] = function()\n{\n do_ind();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n// 0xbb : OTDR\ned_instructions[0xbb] = function()\n{\n do_outd();\n if (b)\n {\n cycle_counter += 5;\n pc = (pc - 2) & 0xffff;\n }\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// Like ED, this table is quite sparse,\n/// and many of the opcodes here are also undocumented.\n/// The undocumented instructions here are those that deal with only one byte\n/// of the two-byte IX register; the bytes are designed IXH and IXL here.\n///////////////////////////////////////////////////////////////////////////////\nlet dd_instructions = [];\n// 0x09 : ADD IX, BC\ndd_instructions[0x09] = function()\n{\n do_ix_add(c | (b << 8));\n};\n// 0x19 : ADD IX, DE\ndd_instructions[0x19] = function()\n{\n do_ix_add(e | (d << 8));\n};\n// 0x21 : LD IX, nn\ndd_instructions[0x21] = function()\n{\n pc = (pc + 1) & 0xffff;\n ix = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n ix |= (core.mem_read(pc) << 8);\n};\n// 0x22 : LD (nn), IX\ndd_instructions[0x22] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= (core.mem_read(pc) << 8);\n \n core.mem_write(address, ix & 0xff);\n core.mem_write((address + 1) & 0xffff, (ix >>> 8) & 0xff);\n};\n// 0x23 : INC IX\ndd_instructions[0x23] = function()\n{\n ix = (ix + 1) & 0xffff;\n};\n// 0x24 : INC IXH (Undocumented)\ndd_instructions[0x24] = function()\n{\n ix = (do_inc(ix >>> 8) << 8) | (ix & 0xff);\n};\n// 0x25 : DEC IXH (Undocumented)\ndd_instructions[0x25] = function()\n{\n ix = (do_dec(ix >>> 8) << 8) | (ix & 0xff);\n};\n// 0x26 : LD IXH, n (Undocumented)\ndd_instructions[0x26] = function()\n{\n pc = (pc + 1) & 0xffff;\n ix = (core.mem_read(pc) << 8) | (ix & 0xff);\n};\n// 0x29 : ADD IX, IX\ndd_instructions[0x29] = function()\n{\n do_ix_add(ix);\n};\n// 0x2a : LD IX, (nn)\ndd_instructions[0x2a] = function()\n{\n pc = (pc + 1) & 0xffff;\n var address = core.mem_read(pc);\n pc = (pc + 1) & 0xffff;\n address |= (core.mem_read(pc) << 8);\n \n ix = core.mem_read(address);\n ix |= (core.mem_read((address + 1) & 0xffff) << 8);\n};\n// 0x2b : DEC IX\ndd_instructions[0x2b] = function()\n{\n ix = (ix - 1) & 0xffff;\n};\n// 0x2c : INC IXL (Undocumented)\ndd_instructions[0x2c] = function()\n{\n ix = do_inc(ix & 0xff) | (ix & 0xff00);\n};\n// 0x2d : DEC IXL (Undocumented)\ndd_instructions[0x2d] = function()\n{\n ix = do_dec(ix & 0xff) | (ix & 0xff00);\n};\n// 0x2e : LD IXL, n (Undocumented)\ndd_instructions[0x2e] = function()\n{\n pc = (pc + 1) & 0xffff;\n ix = (core.mem_read(pc) & 0xff) | (ix & 0xff00);\n};\n// 0x34 : INC (IX+n)\ndd_instructions[0x34] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc)),\n value = core.mem_read((offset + ix) & 0xffff);\n core.mem_write((offset + ix) & 0xffff, do_inc(value));\n};\n// 0x35 : DEC (IX+n)\ndd_instructions[0x35] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc)),\n value = core.mem_read((offset + ix) & 0xffff);\n core.mem_write((offset + ix) & 0xffff, do_dec(value));\n};\n// 0x36 : LD (IX+n), n\ndd_instructions[0x36] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n pc = (pc + 1) & 0xffff;\n core.mem_write((ix + offset) & 0xffff, core.mem_read(pc)); \n};\n// 0x39 : ADD IX, SP\ndd_instructions[0x39] = function()\n{\n do_ix_add(sp);\n};\n// 0x44 : LD B, IXH (Undocumented)\ndd_instructions[0x44] = function()\n{\n b = (ix >>> 8) & 0xff;\n};\n// 0x45 : LD B, IXL (Undocumented)\ndd_instructions[0x45] = function()\n{\n b = ix & 0xff;\n};\n// 0x46 : LD B, (IX+n)\ndd_instructions[0x46] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n b = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x4c : LD C, IXH (Undocumented)\ndd_instructions[0x4c] = function()\n{\n c = (ix >>> 8) & 0xff;\n};\n// 0x4d : LD C, IXL (Undocumented)\ndd_instructions[0x4d] = function()\n{\n c = ix & 0xff;\n};\n// 0x4e : LD C, (IX+n)\ndd_instructions[0x4e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n c = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x54 : LD D, IXH (Undocumented)\ndd_instructions[0x54] = function()\n{\n d = (ix >>> 8) & 0xff;\n};\n// 0x55 : LD D, IXL (Undocumented)\ndd_instructions[0x55] = function()\n{\n d = ix & 0xff;\n};\n// 0x56 : LD D, (IX+n)\ndd_instructions[0x56] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n d = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x5c : LD E, IXH (Undocumented)\ndd_instructions[0x5c] = function()\n{\n e = (ix >>> 8) & 0xff;\n};\n// 0x5d : LD E, IXL (Undocumented)\ndd_instructions[0x5d] = function()\n{\n e = ix & 0xff;\n};\n// 0x5e : LD E, (IX+n)\ndd_instructions[0x5e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n e = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x60 : LD IXH, B (Undocumented)\ndd_instructions[0x60] = function()\n{\n ix = (ix & 0xff) | (b << 8);\n};\n// 0x61 : LD IXH, C (Undocumented)\ndd_instructions[0x61] = function()\n{\n ix = (ix & 0xff) | (c << 8);\n};\n// 0x62 : LD IXH, D (Undocumented)\ndd_instructions[0x62] = function()\n{\n ix = (ix & 0xff) | (d << 8);\n};\n// 0x63 : LD IXH, E (Undocumented)\ndd_instructions[0x63] = function()\n{\n ix = (ix & 0xff) | (e << 8);\n};\n// 0x64 : LD IXH, IXH (Undocumented)\ndd_instructions[0x64] = function()\n{\n // No-op.\n};\n// 0x65 : LD IXH, IXL (Undocumented)\ndd_instructions[0x65] = function()\n{\n ix = (ix & 0xff) | ((ix & 0xff) << 8);\n};\n// 0x66 : LD H, (IX+n)\ndd_instructions[0x66] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n h = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x67 : LD IXH, A (Undocumented)\ndd_instructions[0x67] = function()\n{\n ix = (ix & 0xff) | (a << 8);\n};\n// 0x68 : LD IXL, B (Undocumented)\ndd_instructions[0x68] = function()\n{\n ix = (ix & 0xff00) | b;\n};\n// 0x69 : LD IXL, C (Undocumented)\ndd_instructions[0x69] = function()\n{\n ix = (ix & 0xff00) | c;\n};\n// 0x6a : LD IXL, D (Undocumented)\ndd_instructions[0x6a] = function()\n{\n ix = (ix & 0xff00) | d;\n};\n// 0x6b : LD IXL, E (Undocumented)\ndd_instructions[0x6b] = function()\n{\n ix = (ix & 0xff00) | e;\n};\n// 0x6c : LD IXL, IXH (Undocumented)\ndd_instructions[0x6c] = function()\n{\n ix = (ix & 0xff00) | (ix >>> 8);\n};\n// 0x6d : LD IXL, IXL (Undocumented)\ndd_instructions[0x6d] = function()\n{\n // No-op.\n};\n// 0x6e : LD L, (IX+n)\ndd_instructions[0x6e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n l = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x6f : LD IXL, A (Undocumented)\ndd_instructions[0x6f] = function()\n{\n ix = (ix & 0xff00) | a;\n};\n// 0x70 : LD (IX+n), B\ndd_instructions[0x70] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, b);\n};\n// 0x71 : LD (IX+n), C\ndd_instructions[0x71] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, c);\n};\n// 0x72 : LD (IX+n), D\ndd_instructions[0x72] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, d);\n};\n// 0x73 : LD (IX+n), E\ndd_instructions[0x73] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, e);\n};\n// 0x74 : LD (IX+n), H\ndd_instructions[0x74] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, h);\n};\n// 0x75 : LD (IX+n), L\ndd_instructions[0x75] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, l);\n};\n// 0x77 : LD (IX+n), A\ndd_instructions[0x77] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n core.mem_write((ix + offset) & 0xffff, a);\n};\n// 0x7c : LD A, IXH (Undocumented)\ndd_instructions[0x7c] = function()\n{\n a = (ix >>> 8) & 0xff;\n};\n// 0x7d : LD A, IXL (Undocumented)\ndd_instructions[0x7d] = function()\n{\n a = ix & 0xff;\n};\n// 0x7e : LD A, (IX+n)\ndd_instructions[0x7e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n a = core.mem_read((ix + offset) & 0xffff);\n};\n// 0x84 : ADD A, IXH (Undocumented)\ndd_instructions[0x84] = function()\n{\n do_add((ix >>> 8) & 0xff);\n};\n// 0x85 : ADD A, IXL (Undocumented)\ndd_instructions[0x85] = function()\n{\n do_add(ix & 0xff);\n};\n// 0x86 : ADD A, (IX+n)\ndd_instructions[0x86] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_add(core.mem_read((ix + offset) & 0xffff));\n};\n// 0x8c : ADC A, IXH (Undocumented)\ndd_instructions[0x8c] = function()\n{\n do_adc((ix >>> 8) & 0xff);\n};\n// 0x8d : ADC A, IXL (Undocumented)\ndd_instructions[0x8d] = function()\n{\n do_adc(ix & 0xff);\n};\n// 0x8e : ADC A, (IX+n)\ndd_instructions[0x8e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_adc(core.mem_read((ix + offset) & 0xffff));\n};\n// 0x94 : SUB IXH (Undocumented)\ndd_instructions[0x94] = function()\n{\n do_sub((ix >>> 8) & 0xff);\n};\n// 0x95 : SUB IXL (Undocumented)\ndd_instructions[0x95] = function()\n{\n do_sub(ix & 0xff);\n};\n// 0x96 : SUB A, (IX+n)\ndd_instructions[0x96] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_sub(core.mem_read((ix + offset) & 0xffff));\n};\n// 0x9c : SBC IXH (Undocumented)\ndd_instructions[0x9c] = function()\n{\n do_sbc((ix >>> 8) & 0xff);\n};\n// 0x9d : SBC IXL (Undocumented)\ndd_instructions[0x9d] = function()\n{\n do_sbc(ix & 0xff);\n};\n// 0x9e : SBC A, (IX+n)\ndd_instructions[0x9e] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_sbc(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xa4 : AND IXH (Undocumented)\ndd_instructions[0xa4] = function()\n{\n do_and((ix >>> 8) & 0xff);\n};\n// 0xa5 : AND IXL (Undocumented)\ndd_instructions[0xa5] = function()\n{\n do_and(ix & 0xff);\n};\n// 0xa6 : AND A, (IX+n)\ndd_instructions[0xa6] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_and(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xac : XOR IXH (Undocumented)\ndd_instructions[0xac] = function()\n{\n do_xor((ix >>> 8) & 0xff);\n};\n// 0xad : XOR IXL (Undocumented)\ndd_instructions[0xad] = function()\n{\n do_xor(ix & 0xff);\n};\n// 0xae : XOR A, (IX+n)\ndd_instructions[0xae] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_xor(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xb4 : OR IXH (Undocumented)\ndd_instructions[0xb4] = function()\n{\n do_or((ix >>> 8) & 0xff);\n};\n// 0xb5 : OR IXL (Undocumented)\ndd_instructions[0xb5] = function()\n{\n do_or(ix & 0xff);\n};\n// 0xb6 : OR A, (IX+n)\ndd_instructions[0xb6] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_or(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xbc : CP IXH (Undocumented)\ndd_instructions[0xbc] = function()\n{\n do_cp((ix >>> 8) & 0xff);\n};\n// 0xbd : CP IXL (Undocumented)\ndd_instructions[0xbd] = function()\n{\n do_cp(ix & 0xff);\n};\n// 0xbe : CP A, (IX+n)\ndd_instructions[0xbe] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n do_cp(core.mem_read((ix + offset) & 0xffff));\n};\n// 0xcb : CB Prefix (IX bit instructions)\ndd_instructions[0xcb] = function()\n{\n pc = (pc + 1) & 0xffff;\n var offset = get_signed_offset_byte(core.mem_read(pc));\n pc = (pc + 1) & 0xffff;\n var opcode = core.mem_read(pc), value;\n \n // As with the \"normal\" CB prefix, we implement the DDCB prefix\n // by decoding the opcode directly, rather than using a table.\n if (opcode < 0x40)\n {\n // Shift and rotate instructions.\n var ddcb_functions = [do_rlc, do_rrc, do_rl, do_rr,\n do_sla, do_sra, do_sll, do_srl];\n \n // Most of the opcodes in this range are not valid,\n // so we map this opcode onto one of the ones that is.\n var func = ddcb_functions[(opcode & 0x38) >>> 3],\n value = func( core.mem_read((ix + offset) & 0xffff));\n \n core.mem_write((ix + offset) & 0xffff, value);\n }\n else\n {\n var bit_number = (opcode & 0x38) >>> 3;\n \n if (opcode < 0x80)\n {\n // BIT\n flags.N = 0;\n flags.H = 1;\n flags.Z = !(core.mem_read((ix + offset) & 0xffff) & (1 << bit_number)) ? 1 : 0;\n flags.P = flags.Z;\n flags.S = ((bit_number === 7) && !flags.Z) ? 1 : 0;\n }\n else if (opcode < 0xc0)\n {\n // RES\n value = core.mem_read((ix + offset) & 0xffff) & ~(1 << bit_number) & 0xff;\n core.mem_write((ix + offset) & 0xffff, value);\n }\n else\n {\n // SET\n value = core.mem_read((ix + offset) & 0xffff) | (1 << bit_number);\n core.mem_write((ix + offset) & 0xffff, value);\n }\n }\n \n // This implements the undocumented shift, RES, and SET opcodes,\n // which write their result to memory and also to an 8080 register.\n if (value !== undefined)\n {\n if ((opcode & 0x07) === 0)\n b = value;\n else if ((opcode & 0x07) === 1)\n c = value;\n else if ((opcode & 0x07) === 2)\n d = value;\n else if ((opcode & 0x07) === 3)\n e = value;\n else if ((opcode & 0x07) === 4)\n h = value;\n else if ((opcode & 0x07) === 5)\n l = value;\n // 6 is the documented opcode, which doesn't set a register.\n else if ((opcode & 0x07) === 7)\n a = value;\n }\n \n cycle_counter += cycle_counts_cb[opcode] + 8;\n};\n// 0xe1 : POP IX\ndd_instructions[0xe1] = function()\n{\n ix = pop_word();\n};\n// 0xe3 : EX (SP), IX\ndd_instructions[0xe3] = function()\n{\n var temp = ix;\n ix = core.mem_read(sp);\n ix |= core.mem_read((sp + 1) & 0xffff) << 8;\n core.mem_write(sp, temp & 0xff);\n core.mem_write((sp + 1) & 0xffff, (temp >>> 8) & 0xff);\n};\n// 0xe5 : PUSH IX\ndd_instructions[0xe5] = function()\n{\n push_word(ix);\n};\n// 0xe9 : JP (IX)\ndd_instructions[0xe9] = function()\n{\n pc = (ix - 1) & 0xffff;\n};\n// 0xf9 : LD SP, IX\ndd_instructions[0xf9] = function()\n{\n sp = ix;\n};\n\n\n///////////////////////////////////////////////////////////////////////////////\n/// These tables contain the number of T cycles used for each instruction.\n/// In a few special cases, such as conditional control flow instructions,\n/// additional cycles might be added to these values.\n/// The total number of cycles is the return value of run_instruction().\n///////////////////////////////////////////////////////////////////////////////\nlet cycle_counts = [\n 4, 10, 7, 6, 4, 4, 7, 4, 4, 11, 7, 6, 4, 4, 7, 4,\n 8, 10, 7, 6, 4, 4, 7, 4, 12, 11, 7, 6, 4, 4, 7, 4,\n 7, 10, 16, 6, 4, 4, 7, 4, 7, 11, 16, 6, 4, 4, 7, 4,\n 7, 10, 13, 6, 11, 11, 10, 4, 7, 11, 13, 6, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,\n 5, 10, 10, 10, 10, 11, 7, 11, 5, 10, 10, 0, 10, 17, 7, 11,\n 5, 10, 10, 11, 10, 11, 7, 11, 5, 4, 10, 11, 10, 0, 7, 11,\n 5, 10, 10, 19, 10, 11, 7, 11, 5, 4, 10, 4, 10, 0, 7, 11,\n 5, 10, 10, 4, 10, 11, 7, 11, 5, 6, 10, 4, 10, 0, 7, 11\n];\n\nlet cycle_counts_ed = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 12, 12, 15, 20, 8, 14, 8, 9, 12, 12, 15, 20, 8, 14, 8, 9,\n 12, 12, 15, 20, 8, 14, 8, 9, 12, 12, 15, 20, 8, 14, 8, 9,\n 12, 12, 15, 20, 8, 14, 8, 18, 12, 12, 15, 20, 8, 14, 8, 18,\n 12, 12, 15, 20, 8, 14, 8, 0, 12, 12, 15, 20, 8, 14, 8, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 16, 16, 16, 16, 0, 0, 0, 0, 16, 16, 16, 16, 0, 0, 0, 0,\n 16, 16, 16, 16, 0, 0, 0, 0, 16, 16, 16, 16, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n];\n\nlet cycle_counts_cb = [\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 12, 8, 8, 8, 8, 8, 8, 8, 12, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8,\n 8, 8, 8, 8, 8, 8, 15, 8, 8, 8, 8, 8, 8, 8, 15, 8\n];\n\nlet cycle_counts_dd = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0,\n 0, 14, 20, 10, 8, 8, 11, 0, 0, 15, 20, 10, 8, 8, 11, 0,\n 0, 0, 0, 0, 23, 23, 19, 0, 0, 15, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 8, 8, 8, 8, 8, 8, 19, 8, 8, 8, 8, 8, 8, 8, 19, 8,\n 19, 19, 19, 19, 19, 19, 0, 19, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 8, 8, 19, 0, 0, 0, 0, 0, 8, 8, 19, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 14, 0, 23, 0, 15, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0\n];\n\n // There's tons of stuff in this object,\n // but only these three functions are the public API.\n this.saveState = getState;\n this.loadState = setState;\n this.reset = reset;\n this.advanceInsn = run_instruction;\n this.interrupt = interrupt;\n this.getPC = ():number => { return pc; }\n this.getSP = ():number => { return sp; }\n this.getHalted = ():boolean => { return halted; }\n}\n\nexport interface Z80State {\nAF : number;\nBC : number;\nDE : number;\nHL : number;\nAF_ : number;\nBC_ : number;\nDE_ : number;\nHL_ : number;\nIX : number;\nIY : number;\nSP : number;\nPC : number;\nIR : number;\niff1 : number;\niff2 : number;\nim : number;\nhalted : boolean;\ndo_delayed_di : boolean;\ndo_delayed_ei : boolean;\ncycle_counter : number;\n}\n\nexport class Z80 implements CPU, InstructionBased, IOBusConnected, SavesState, Interruptable {\n\n cpu;\n interruptType;\n memBus : Bus;\n ioBus : Bus;\n retryInterrupts : boolean = false;\n retryData : number = -1;\n \n private buildCPU() {\n // Build the core only once and route its callbacks through the current\n // bus fields. BasicHeadlessMachine.rewireCPUBuses() swaps memBus/ioBus\n // whenever a probe is attached or detached; rebuilding here would throw\n // away the whole register state (i.e. reset the machine). FastZ80 calls\n // core.mem_read/... at instruction time, so the closures pick up the swap.\n if (this.memBus && this.ioBus && !this.cpu) {\n this.cpu = new FastZ80({\n mem_read: (a) => this.memBus.read(a),\n mem_write: (a, v) => this.memBus.write(a, v),\n io_read: (a) => this.ioBus.read(a),\n io_write: (a, v) => this.ioBus.write(a, v),\n });\n }\n }\n connectMemoryBus(bus:Bus) {\n this.memBus = bus;\n this.buildCPU();\n }\n connectIOBus(bus:Bus) {\n this.ioBus = bus;\n this.buildCPU();\n }\n advanceInsn() {\n if (this.retryInterrupts && this.retryData >= 0 && this.cpu.interrupt(false, this.retryData)) {\n this.retryData = -1;\n }\n return this.cpu.advanceInsn();\n }\n reset() {\n this.cpu.reset();\n }\n interrupt(data:number) {\n if (!this.cpu.interrupt(false, data) && this.retryInterrupts) {\n this.retryData = data;\n }\n }\n NMI() {\n this.cpu.interrupt(true, 0);\n }\n getSP() {\n return this.cpu.getSP();\n }\n getPC() {\n return this.cpu.getPC();\n }\n isHalted() {\n return this.cpu.getHalted();\n }\n saveState() {\n return this.cpu.saveState();\n }\n loadState(s) {\n this.cpu.loadState(s);\n }\n isStable() { return true; }\n // TODO: metadata\n // TODO: disassembler\n}\n", "\nimport { SampledAudioSink } from \"./devices\";\n\n// from TSS\ndeclare var MasterChannel, AudioLooper, PsgDeviceChannel;\n\nexport class MasterAudio {\n master = new MasterChannel();\n looper;\n start() {\n if (!this.looper) {\n this.looper = new AudioLooper(512);\n this.looper.setChannel(this.master);\n this.looper.activate();\n // AudioLooper makes its own AudioContext and never resumes it\n resumeAudioContext(this.looper.audioContext);\n }\n }\n stop() {\n if (this.looper) {\n this.looper.setChannel(null);\n this.looper = null;\n }\n }\n}\n\nexport class AY38910_Audio {\n master : MasterAudio;\n psg = new PsgDeviceChannel();\n curreg = 0;\n\n constructor(master : MasterAudio) {\n this.master = master;\n this.psg.setMode(PsgDeviceChannel.MODE_SIGNED);\n this.psg.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910);\n master.master.addChannel(this.psg);\n }\n\n reset() {\n for (var i=15; i>=0; i--) {\n this.selectRegister(i);\n this.setData(0);\n }\n }\n selectRegister(val : number) {\n this.curreg = val & 0xf;\n }\n setData(val : number) {\n this.psg.writeRegisterAY(this.curreg, val & 0xff);\n }\n readData() {\n return this.psg.readRegister(this.curreg);\n }\n currentRegister() { return this.curreg; }\n}\n\nexport class SN76489_Audio {\n master : MasterAudio;\n psg = new PsgDeviceChannel();\n\n constructor(master : MasterAudio) {\n this.master = master;\n this.psg.setMode(PsgDeviceChannel.MODE_SIGNED);\n this.psg.setDevice(PsgDeviceChannel.DEVICE_SN76489);\n master.master.addChannel(this.psg);\n }\n reset() {\n // TODO\n }\n setData(val : number) {\n this.psg.writeRegisterSN(0, val & 0xff);\n }\n}\n\n// https://en.wikipedia.org/wiki/POKEY\n// https://user.xmission.com/~trevin/atari/pokey_regs.html\n// http://krap.pl/mirrorz/atari/homepage.ntlworld.com/kryten_droid/Atari/800XL/atari_hw/pokey.htm\n\nexport function newPOKEYAudio(count:number) {\n var audio = new MasterAudio();\n for (var i=1; i<=count; i++) {\n var pokey = new POKEYDeviceChannel();\n audio['pokey'+i] = pokey; // TODO: cheezy\n audio.master.addChannel(pokey);\n }\n return audio;\n}\n\nfunction combinePolys(a, b) {\n var arr = new Uint8Array(a.length * b.length);\n var n = 0;\n for (var i=0; i 0.5 ? 1 : 0;\n }\n var bit17_5 = combinePolys(bit17, bit5);\n var bit5_4 = combinePolys(bit5, bit4);\n var wavetones = [\n bit17_5, bit5, bit5_4, bit5,\n bit17, bit2, bit4, bit2\n ];\n // TIA\n var div2 = divideBy(2);\n var div6 = divideBy(6);\n var div31 = divideBy(31);\n var div93 = divideBy(93);\n var bit15_4 = combinePolys(bit15, bit4);\n var bit5_2 = combinePolys(bit5, div2);\n var bit5_6 = combinePolys(bit5, div6);\n var tiawavetones = [\n bit1, bit4, bit15_4, bit5_4,\n div2, div2, div31, bit5_2,\n bit9, bit5, div31, bit1,\n div6, div6, div93, bit5_6\n ];\n \n // registers\n var regs = new Uint8Array(16);\n var counters = new Float32Array(4);\n var deltas = new Float32Array(4);\n var volume = new Float32Array(4);\n var audc = new Uint8Array(4);\n var waveforms = [bit1, bit1, bit1, bit1];\n var buffer;\n var sampleRate;\n var clock, baseDelta;\n var dirty = true;\n\n //\n\n this.setBufferLength = function (length) {\n buffer = new Int32Array(length);\n };\n\n this.getBuffer = function () {\n return buffer;\n };\n\n this.setSampleRate = function (rate) {\n sampleRate = rate;\n baseDelta = FREQ_17_EXACT / rate;\n };\n\n function updateValues(addr) {\n var ctrl = regs[8];\n var base = (ctrl & CLOCK_15) ? DIV_15 : DIV_64;\n var div;\n var i = addr & 4;\n var j = i>>1;\n var k = i>>2;\n if (ctrl & (CH1_CH2>>k)) {\n if (ctrl & (CH1_179>>k))\n div = regs[i+2] * 256 + regs[i+0] + 7;\n else\n div = (regs[i+2] * 256 + regs[i+0] + 1) * base;\n deltas[j+1] = baseDelta / div;\n deltas[j+0] = 0;\n } else {\n if (ctrl & (CH1_179>>k)) {\n div = regs[i+0] + 4;\n } else {\n div = (regs[i+0] + 1) * base;\n }\n deltas[j+0] = baseDelta / div;\n div = (regs[i+2] + 1) * base;\n deltas[j+1] = baseDelta / div;\n }\n //console.log(addr, ctrl.toString(16), div, deltas[j+0], deltas[j+1]);\n }\n\n this.setRegister = function(addr, value) {\n addr &= 0xf;\n value &= 0xff;\n if (regs[addr] != value) {\n regs[addr] = value;\n switch (addr) {\n case 0:\n case 2:\n case 4:\n case 6: // AUDF\n case 8: // ctrl\n dirty = true;\n break;\n case 1:\n case 3:\n case 5:\n case 7: // AUDC\n volume[addr>>1] = value & 0xf;\n waveforms[addr>>1] = wavetones[value>>5];\n break;\n }\n }\n }\n\n this.getRegister = function(addr) {\n addr &= 0xf;\n return regs[addr];\n }\n \n this.setTIARegister = function(addr, value) {\n switch (addr) {\n case 0x17:\n case 0x18:\n regs[(addr&1)*4] = value & 0x1f;\n dirty = true;\n break;\n case 0x15:\n case 0x16:\n waveforms[(addr&1)*2] = tiawavetones[value & 0xf];\n break;\n case 0x19:\n case 0x1a:\n volume[(addr&1)*2] = value & 0xf;\n break;\n }\n }\n\n this.generate = function (length) {\n if (dirty) {\n updateValues(0);\n updateValues(4);\n dirty = false;\n }\n for (var s=0; s 0 && d < 1 && v > 0) {\n var wav = waveforms[i];\n var cnt = counters[i] += d;\n if (cnt > wav.length) {\n cnt = counters[i] = cnt - Math.floor(cnt / wav.length) * wav.length;\n }\n var on = wav[Math.floor(cnt)];\n if (on) {\n sample += v;\n }\n }\n }\n sample *= 64;\n buffer[s] = sample;\n buffer[s+1] = sample;\n }\n }\n}\n\n////// Worker sound\n\nexport var WorkerSoundChannel = function(worker) {\n var sampleRate;\n var output;\n var pending = [];\n var pendingLength = 0;\n\n worker.onmessage = function(e) {\n if (e && e.data && e.data.samples && output) {\n pending.push(e.data.samples);\n pendingLength += e.data.samples.length;\n }\n };\n\n this.setBufferLength = function (length) {\n output = new Int16Array(length);\n //worker.postMessage({bufferLength:length,numChannels:2});\n pendingLength = 0;\n };\n\n this.getBuffer = function () {\n return output;\n };\n\n this.setSampleRate = function (rate) {\n sampleRate = rate;\n worker.postMessage({sampleRate:rate});\n };\n\n this.generate = function (length) {\n if (pendingLength < length*3) {\n //console.log(length, pendingLength);\n output.fill(0);\n return; // TODO: send sync msg?\n }\n for (var i=0; i AudioStream) | null = null;\n\n/** Install the streaming output. Pass null to go back to a Web Audio graph. */\nexport function setAudioStreamFactory(factory: ((sourceRate: number) => AudioStream) | null) {\n audioStreamFactory = factory;\n}\n\n// samples per chunk; the same size the IDE's ScriptProcessor asks for\nexport const AUDIO_CHUNK_SAMPLES = 2048;\n\n// Browsers create an AudioContext suspended until a user gesture, and start()\n// runs at page load, before any gesture. So also resume on the first\n// interaction anywhere on the page (canvas focus alone is too narrow). resume()\n// must be called synchronously inside the handler for Safari/iOS to allow it.\n// Called on every start(), since stop() suspends the context.\nconst audioUnlockEvents = ['pointerdown', 'touchend', 'mousedown', 'keydown', 'click'];\nconst pendingUnlocks = new WeakSet();\nexport function resumeAudioContext(ctx: AudioContext) {\n if (!ctx || ctx.state === 'running') return;\n ctx.resume().catch(() => {});\n if (typeof document === 'undefined' || pendingUnlocks.has(ctx)) return;\n pendingUnlocks.add(ctx);\n const onGesture = () => {\n ctx.resume().catch(() => {});\n if (ctx.state === 'running') {\n for (const ev of audioUnlockEvents) document.removeEventListener(ev, onGesture, true);\n pendingUnlocks.delete(ctx);\n }\n };\n for (const ev of audioUnlockEvents) document.addEventListener(ev, onGesture, true);\n}\n\nexport var SampleAudio = function(clockfreq) {\n var self = this;\n var sfrac, sinc, accum;\n var buffer, bufpos, bufferlist;\n var ifill; // physical ring slot the producer is filling\n var written, read; // monotonic buffer counts (committed / consumed)\n var skippedBuffers = 0, lastSkipLog = 0;\n var underruns = 0;\n var fillHist = null; // ring-fill histogram; opt-in via setStatsEnabled\n var collectStats = false;\n // Clock recovery. The emulated frame clock and the AudioContext clock drift apart\n // by a fraction of a percent, so over time the ring either drains (underruns) or\n // fills. We nudge the resample ratio by a hair to hold a small cushion, instead of\n // adding ring depth, which would just add latency.\n var baseSinc = 1; // sr / clockfreq, the untrimmed ratio\n var trim = 1; // current trim around baseSinc\n var fillAvg = 0; // EWMA of ring fill, in buffers\n var lastTrimAdj = 0;\n var FILL_TARGET = 1.5; // buffers of cushion to hold\n var FILL_ALPHA = 0.05; // EWMA weight per consumer pull (~1s at 21 pulls/s)\n var TRIM_GAIN = 0.004; // resample-ratio change per buffer of error\n var MAX_TRIM = 0.01; // cap the pitch shift at 1%\n var TRIM_INTERVAL_MS = 500;\n // The ring is allocated once at MAXBUFFERS and always indexed with that modulo.\n // Measurement showed the fill settles at 1-2 buffers and never nears this cap, so\n // depth is not the latency lever -- the per-buffer floor (bufferlen) is -- and\n // clock recovery holds the small cushion. The cap stays as insurance against the\n // ScriptProcessor callback stalling on the main thread (rendering/GC), ~370ms.\n var MAXBUFFERS = 8;\n var targetDepth = MAXBUFFERS;\n\n function mix(ape) {\n var lbuf = ape.outputBuffer.getChannelData(0);\n var m = this.module;\n if (!m) m = ape.srcElement.module;\n if (!m) return;\n if (m.callback) {\n m.callback(lbuf);\n return;\n } else if (written > read) {\n // copy the oldest committed buffer, then free it\n if (collectStats) fillHist[Math.min(written - read, MAXBUFFERS)]++;\n fillAvg += ((written - read) - fillAvg) * FILL_ALPHA;\n var buf = bufferlist[read % MAXBUFFERS];\n for (var i=0; i= buffer.length) {\n bufpos = 0;\n if (self.stream) {\n // hand the buffer off and get a fresh one; the stream may transfer it\n var out = buffer;\n buffer = new Float32Array(self.bufferlen);\n self.stream.push(out);\n return;\n }\n bufferlist[ifill] = buffer;\n written++;\n // Producer outran the consumer; drop the oldest audio to make room.\n if (written - read >= targetDepth) {\n read++;\n skippedBuffers++;\n var now = Date.now();\n if (now - lastSkipLog > 1000) { // throttle so a sustained overrun doesn't flood the console\n console.warn('SampleAudio: skipped audio buffer(s), total=' + skippedBuffers +\n ', fill=' + (written - read) + '/' + targetDepth +\n ', contextRate=' + self.sr + ', requestedBuf=' + self.bufferlen +\n ', expectedIntervalMs=' + (self.bufferlen * 1000 / self.sr).toFixed(2));\n lastSkipLog = now;\n }\n }\n ifill = (ifill + 1) % MAXBUFFERS;\n buffer = bufferlist[ifill];\n // Clock recovery: steer the resample ratio to hold FILL_TARGET buffers.\n var trimNow = Date.now();\n if (trimNow - lastTrimAdj > TRIM_INTERVAL_MS) {\n lastTrimAdj = trimNow;\n var want = 1 + TRIM_GAIN * (FILL_TARGET - fillAvg);\n if (want > 1 + MAX_TRIM) want = 1 + MAX_TRIM;\n else if (want < 1 - MAX_TRIM) want = 1 - MAX_TRIM;\n trim = want;\n sinc = baseSinc * trim;\n }\n }\n }\n\n this.feedSample = function(value, count) {\n accum += value * count;\n sfrac += sinc * count;\n if (sfrac >= 1) {\n accum /= sfrac;\n while (sfrac >= 1) {\n this.addSingleSample(accum * sinc);\n sfrac -= 1;\n }\n accum *= sfrac;\n }\n }\n\n /**\n * Diagnostics for tuning the ring depth: where the fill actually sits, and how\n * often the producer overruns (drops) or the consumer underruns (silence).\n * Sampling happens on the ScriptProcessor path only; streaming hosts have no ring.\n * The fill histogram is off by default (it touches every consumer pull); turn it\n * on with setStatsEnabled(true) when you want the distribution. The mean/skips/\n * underruns/trim fields are always tracked.\n */\n this.getStats = function() {\n var total = 0, weighted = 0, maxFill = 0;\n if (fillHist) {\n for (var fill=0; fill 0 && fill > maxFill) maxFill = fill;\n }\n }\n return {\n maxBuffers: MAXBUFFERS,\n targetDepth: targetDepth,\n sampleRate: self.sr || 0,\n bufferLength: self.bufferlen || 0,\n fillHistogram: fillHist ? fillHist.slice() : [],\n meanFill: total > 0 ? weighted / total : 0,\n maxFill: maxFill,\n samples: total,\n skippedBuffers: skippedBuffers,\n underruns: underruns,\n fillAvg: fillAvg,\n trim: trim,\n };\n };\n\n /** Turn the per-pull fill histogram on or off (off by default). */\n this.setStatsEnabled = function(on) {\n collectStats = !!on;\n fillHist = collectStats ? new Array(MAXBUFFERS + 1).fill(0) : null;\n };\n \n}\n\n\nexport class SampledAudio {\n sa;\n constructor(sampleRate : number) {\n this.sa = new SampleAudio(sampleRate);\n }\n feedSample(value:number, count:number) {\n this.sa.feedSample(value, count);\n }\n start() {\n this.sa.start();\n }\n stop() {\n this.sa.stop();\n }\n reset() {\n this.sa.reset();\n }\n /** ring-depth diagnostics; see SampleAudio.getStats */\n getStats() {\n return this.sa.getStats ? this.sa.getStats() : null;\n }\n /** turn the ring-fill histogram on or off (off by default) */\n setStatsEnabled(on: boolean) {\n this.sa.setStatsEnabled && this.sa.setStatsEnabled(on);\n }\n /** the rate this sink outputs at, once start() has run (Web Audio or stream) */\n get sampleRate() : number {\n return this.sa.sr || 0;\n }\n}\n\ninterface TssChannel {\n setBufferLength(len : number) : void;\n setSampleRate(rate : number) : void;\n getBuffer() : number[];\n generate(numSamples : number) : void;\n}\n\nexport class TssChannelAdapter {\n channels : TssChannel[];\n audioGain = 1.0 / 8192;\n bufferLength : number;\n\n constructor(chans, oversample:number, sampleRate:number) {\n this.bufferLength = oversample * 2;\n this.channels = chans.generate ? [chans] : chans; // array or single channel\n this.channels.forEach((c) => {\n c.setBufferLength(this.bufferLength);\n c.setSampleRate(sampleRate);\n });\n }\n\n generate(sink:SampledAudioSink) {\n var l = this.bufferLength;\n var bufs = this.channels.map((ch) => ch.getBuffer());\n this.channels.forEach((ch) => {\n ch.generate(l);\n });\n for (let i=0; i total += buf[i]);\n sink.feedSample(total * this.audioGain, 1);\n };\n }\n}\n\n", "\nimport { Probeable, ProbeAll } from \"./devices\";\n\nexport enum ProbeFlags {\n CLOCKS\t = 0x00000000,\n EXECUTE\t = 0x01000000,\n INTERRUPT\t= 0x08000000,\n ILLEGAL\t = 0x09000000,\n SP_PUSH\t = 0x0a000000,\n SP_POP\t = 0x0b000000,\n HAS_VALUE = 0x10000000,\n MEM_READ\t= 0x12000000,\n MEM_WRITE\t= 0x13000000,\n IO_READ\t = 0x14000000,\n IO_WRITE\t= 0x15000000,\n VRAM_READ\t= 0x16000000,\n VRAM_WRITE= 0x17000000,\n DMA_READ = 0x18000000,\n DMA_WRITE = 0x19000000,\n WAIT = 0x1f000000,\n SCANLINE\t= 0x7e000000,\n FRAME\t\t = 0x7f000000,\n}\n\nexport function compactProbeLines(byClk: { [clk: number]: T }): T[] {\n // Integer-like keys enumerate in ascending order, so this is the tick order.\n return Object.keys(byClk).map((k) => byClk[k]);\n}\n\nclass ProbeFrame {\n data : Uint32Array;\n len : number;\n}\n\nexport class ProbeRecorder implements ProbeAll {\n\n m : Probeable; // machine to probe\n buf : Uint32Array; // buffer\n idx : number = 0; // index into buffer\n sl : number = 0; // scanline\n cur_sp = -1; // last stack pointer\n singleFrame : boolean = true; // clear between frames\n\n constructor(m:Probeable, buflen?:number) {\n this.m = m;\n this.reset(buflen || 0x100000);\n }\n start() {\n this.m.connectProbe(this);\n }\n stop() {\n this.m.connectProbe(null);\n }\n reset(newbuflen? : number) {\n if (newbuflen) this.buf = new Uint32Array(newbuflen);\n this.sl = 0;\n this.cur_sp = -1;\n this.clear();\n }\n clear() {\n this.idx = 0;\n }\n logData(a:number) {\n this.log(a);\n }\n log(a:number) {\n // TODO: coalesce READ and EXECUTE and PUSH/POP\n if (this.idx >= this.buf.length) return;\n this.buf[this.idx++] = a;\n }\n relog(a:number) {\n this.buf[this.idx-1] = a;\n }\n lastOp() {\n if (this.idx > 0)\n return this.buf[this.idx-1] & 0xff000000;\n else\n return -1;\n }\n lastAddr() {\n if (this.idx > 0)\n return this.buf[this.idx-1] & 0xffffff;\n else\n return -1;\n }\n addLogBuffer(src: Uint32Array) {\n if (this.idx + src.length > this.buf.length) {\n src = src.slice(0, this.buf.length - this.idx);\n }\n this.buf.set(src, this.idx);\n this.idx += src.length;\n}\n logClocks(clocks:number) {\n clocks |= 0;\n if (clocks > 0) {\n if (this.lastOp() == ProbeFlags.CLOCKS)\n this.relog((this.lastAddr() + clocks) | ProbeFlags.CLOCKS); // coalesce clocks\n else\n this.log(clocks | ProbeFlags.CLOCKS);\n }\n }\n logNewScanline() {\n this.log(ProbeFlags.SCANLINE);\n this.sl++;\n }\n logNewFrame() {\n this.log(ProbeFlags.FRAME);\n this.sl = 0;\n if (this.singleFrame) this.clear();\n }\n logExecute(address:number, SP:number) {\n // record stack pushes/pops (from last instruction)\n if (this.cur_sp !== SP) {\n if (SP < this.cur_sp) {\n this.log(ProbeFlags.SP_PUSH | SP);\n }\n if (SP > this.cur_sp) {\n this.log(ProbeFlags.SP_POP | SP);\n }\n this.cur_sp = SP;\n }\n this.log(address | ProbeFlags.EXECUTE);\n }\n logInterrupt(type:number) {\n this.log(type | ProbeFlags.INTERRUPT);\n }\n logValue(address:number, value:number, op:number) {\n this.log((address & 0xffff) | ((value & 0xff)<<16) | op);\n }\n logRead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.MEM_READ);\n }\n logWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.MEM_WRITE);\n }\n logIORead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.IO_READ);\n }\n logIOWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.IO_WRITE);\n }\n logVRAMRead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.VRAM_READ);\n }\n logVRAMWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.VRAM_WRITE);\n }\n logIllegal(address:number) {\n this.log(address | ProbeFlags.ILLEGAL);\n }\n logWait(address:number) {\n this.log(address | ProbeFlags.WAIT);\n }\n logDMARead(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.DMA_READ);\n }\n logDMAWrite(address:number, value:number) {\n this.logValue(address, value, ProbeFlags.DMA_WRITE);\n }\n countEvents(op : number) : number {\n var count = 0;\n for (var i=0; i {\n saveState(): S;\n loadState(state: S): void;\n}\n\nexport interface Bus {\n read(a: number): number;\n write(a: number, v: number): void;\n readConst?(a: number): number;\n}\n\nexport interface Bus32 {\n read32(a: number): number;\n write32(a: number, v: number): void;\n readConst32?(a: number): number;\n}\n\nexport interface ClockBased {\n advanceClock(): void;\n}\n\nexport interface InstructionBased {\n advanceInsn(): number;\n}\n\nexport type TrapCondition = () => boolean;\n\nexport interface FrameBased {\n advanceFrame(trap: TrapCondition): number;\n}\n\nexport interface VideoSource {\n getVideoParams(): VideoParams;\n connectVideo(pixels: Uint32Array): void;\n}\n\nexport interface RasterFrameBased extends FrameBased, VideoSource {\n getRasterY(): number;\n getRasterX(): number;\n getRasterCanvasPosition?(): { x: number, y: number };\n}\n\nexport interface VideoParams {\n width: number;\n height: number;\n overscan?: boolean;\n rotate?: number;\n videoFrequency?: number; // default = 60\n aspect?: number;\n}\n\n// TODO: frame buffer optimization (apple2, etc)\n\nexport interface SampledAudioParams {\n sampleRate: number;\n stereo: boolean;\n}\n\nexport interface SampledAudioSink {\n feedSample(value: number, count: number): void;\n //sendAudioFrame(samples:Uint16Array) : void;\n}\n\nexport interface SampledAudioSource {\n getAudioParams(): SampledAudioParams;\n connectAudio(audio: SampledAudioSink): void;\n}\n\nexport interface AcceptsROM {\n loadROM(data: Uint8Array, title?: string, origin?: number): void;\n}\n\nexport interface AcceptsBIOS {\n loadBIOS(data: Uint8Array, title?: string): void;\n}\n\nexport interface Resettable {\n reset(): void;\n}\n\nexport interface MemoryBusConnected {\n connectMemoryBus(bus: Bus): void;\n}\n\nexport interface IOBusConnected {\n connectIOBus(bus: Bus): void;\n}\n\nexport interface CPU extends MemoryBusConnected, Resettable, SavesState {\n getPC(): number;\n getSP(): number;\n isStable(): boolean;\n}\n\nexport interface HasCPU extends Resettable {\n cpu: CPU;\n}\n\nexport interface Interruptable {\n interrupt(type: IT): void;\n}\n\nexport interface SavesInputState {\n loadControlsState(cs: CS): void;\n saveControlsState(): CS;\n}\n\nexport interface AcceptsKeyInput {\n setKeyInput(key: number, code: number, flags: number): void;\n}\n\nexport interface AcceptsPaddleInput {\n setPaddleInput(controller: number, value: number): void;\n setPaddleButton?(index: number, pressed: boolean): void;\n}\n\n// TODO: interface not yet used (setKeyInput() handles joystick)\nexport interface AcceptsJoyInput {\n setJoyInput(joy: number, bitmask: number): void;\n}\n\n// SERIAL I/O\n\nexport interface SerialEvent {\n op: 'read' | 'write';\n value: number;\n nbits: number;\n}\n\n// TODO: all these needed?\nexport interface SerialIOInterface {\n // from machine to platform\n clearToSend(): boolean;\n sendByte(b: number);\n // from platform to machine\n byteAvailable(): boolean;\n recvByte(): number;\n // implement these too\n reset(): void;\n advance(clocks: number): void;\n // refresh() : void;\n}\n\nexport interface HasSerialIO {\n connectSerialIO(serial: SerialIOInterface);\n serialOut?: SerialEvent[]; // outgoing event log\n serialIn?: SerialEvent[]; // incoming queue\n}\n\n/// PROFILER\n\nexport interface Probeable {\n connectProbe(probe: ProbeAll): void;\n}\n\nexport interface ProbeTime {\n logClocks(clocks: number);\n logNewScanline();\n logNewFrame();\n}\n\nexport interface ProbeCPU {\n logExecute(address: number, SP: number);\n logInterrupt(type: number);\n logIllegal(address: number);\n logWait(address: number);\n}\n\nexport interface ProbeBus {\n logRead(address: number, value: number);\n logWrite(address: number, value: number);\n logDMARead(address: number, value: number);\n logDMAWrite(address: number, value: number);\n}\n\nexport interface ProbeIO {\n logIORead(address: number, value: number);\n logIOWrite(address: number, value: number);\n}\n\nexport interface ProbeVRAM {\n logVRAMRead(address: number, value: number);\n logVRAMWrite(address: number, value: number);\n}\n\nexport interface ProbeAll extends ProbeTime, ProbeCPU, ProbeBus, ProbeIO, ProbeVRAM {\n logData(data: number); // entire 32 bits\n addLogBuffer(src: Uint32Array);\n}\n\nexport class NullProbe implements ProbeAll {\n logClocks() { }\n logNewScanline() { }\n logNewFrame() { }\n logExecute() { }\n logInterrupt() { }\n logRead() { }\n logWrite() { }\n logIORead() { }\n logIOWrite() { }\n logVRAMRead() { }\n logVRAMWrite() { }\n logIllegal() { }\n logWait() { }\n logDMARead() { }\n logDMAWrite() { }\n logData() { }\n addLogBuffer(src: Uint32Array) { }\n}\n\n/// CONVENIENCE\n\nexport interface BasicMachineControlsState {\n inputs: Uint8Array;\n}\n\nexport interface BasicMachineState extends BasicMachineControlsState {\n c: any; // TODO\n ram: Uint8Array;\n}\n\nexport abstract class BasicHeadlessMachine implements HasCPU, Bus, AcceptsROM, Probeable,\n SavesState, SavesInputState {\n\n abstract cpuFrequency: number;\n abstract defaultROMSize: number;\n\n abstract cpu: CPU;\n abstract ram: Uint8Array;\n\n rom: Uint8Array;\n inputs: Uint8Array = new Uint8Array(32);\n handler: (key, code, flags) => void; // keyboard handler\n\n nullProbe = new NullProbe();\n probe: ProbeAll = this.nullProbe;\n // True only while a real probe is attached. The probe wrapper around the CPU\n // buses costs ~20% of a frame even when every call lands in NullProbe, so it\n // is spliced in on connectProbe() and taken back out on disconnect rather\n // than left installed for the life of the machine.\n probing: boolean = false;\n // the buses as the machine wired them, before any probe wrapper\n protected cpuMemoryBus: Bus & Partial;\n protected cpuIOBus: Bus;\n\n abstract read(a: number): number;\n abstract write(a: number, v: number): void;\n\n setKeyInput(key: number, code: number, flags: number): void {\n this.handler && this.handler(key, code, flags);\n }\n connectProbe(probe: ProbeAll): void {\n this.probe = probe || this.nullProbe;\n var probing = this.probe !== this.nullProbe;\n if (probing !== this.probing) {\n this.probing = probing;\n this.rewireCPUBuses();\n }\n }\n /** Connect the CPU to the raw buses, or to probe-wrapped ones while probing. */\n protected rewireCPUBuses(): void {\n if (this.cpuMemoryBus) {\n this.cpu.connectMemoryBus(this.probing ? this.probeMemoryBus(this.cpuMemoryBus) : this.cpuMemoryBus);\n }\n if (this.cpuIOBus) {\n this.cpu['connectIOBus'](this.probing ? this.probeIOBus(this.cpuIOBus) : this.cpuIOBus);\n }\n }\n reset() {\n this.cpu.reset();\n }\n loadROM(data: Uint8Array, title?: string, origin?: number): void {\n if (!this.rom) this.rom = new Uint8Array(this.defaultROMSize);\n if (data.length > this.rom.length)\n throw new Error(`ROM too big: ${data.length} > ${this.rom.length}`);\n this.rom.set(data);\n }\n loadState(state) {\n this.cpu.loadState(state.c);\n this.ram.set(state.ram);\n this.inputs.set(state.inputs);\n }\n saveState() {\n return {\n c: this.cpu.saveState(),\n ram: this.ram.slice(0),\n inputs: this.inputs.slice(0),\n };\n }\n loadControlsState(state) {\n this.inputs.set(state.inputs);\n }\n saveControlsState() {\n return {\n inputs: this.inputs.slice(0)\n };\n }\n advanceCPU() {\n var c = this.cpu as any;\n var n = 1;\n if (this.probing && this.cpu.isStable()) { this.probe.logExecute(this.cpu.getPC(), this.cpu.getSP()); }\n if (c.advanceClock) { c.advanceClock(); }\n else if (c.advanceInsn) { n = c.advanceInsn(1); }\n if (this.probing) { this.probe.logClocks(n); }\n return n;\n }\n probeMemoryBus(membus: Bus & Partial): Bus & Partial {\n return {\n read: (a) => {\n let val = membus.read(a);\n this.probe.logRead(a, val);\n return val;\n },\n write: (a, v) => {\n this.probe.logWrite(a, v);\n membus.write(a, v);\n },\n read32: (a) => {\n let val = membus.read32(a);\n this.probe.logRead(a, val);\n return val;\n },\n write32: (a, v) => {\n this.probe.logWrite(a, v);\n membus.write32(a, v);\n }\n };\n }\n connectCPUMemoryBus(membus: Bus): void {\n this.cpuMemoryBus = membus as Bus & Bus32;\n this.rewireCPUBuses();\n }\n probeIOBus(iobus: Bus): Bus {\n return {\n read: (a) => {\n let val = iobus.read(a);\n this.probe.logIORead(a, val);\n return val;\n },\n write: (a, v) => {\n this.probe.logIOWrite(a, v);\n iobus.write(a, v);\n },\n };\n }\n probeDMABus(iobus: Bus): Bus {\n return {\n read: (a) => {\n let val = iobus.read(a);\n this.probe.logDMARead(a, val);\n return val;\n },\n write: (a, v) => {\n this.probe.logDMAWrite(a, v);\n iobus.write(a, v);\n }\n };\n }\n connectCPUIOBus(iobus: Bus): void {\n this.cpuIOBus = iobus;\n this.rewireCPUBuses();\n }\n}\n\nexport abstract class BasicMachine extends BasicHeadlessMachine implements SampledAudioSource {\n\n abstract canvasWidth: number;\n abstract numVisibleScanlines: number;\n abstract sampleRate: number;\n overscan: boolean = false;\n rotate: number = 0;\n aspectRatio: number;\n\n pixels: Uint32Array;\n audio: SampledAudioSink;\n\n scanline: number;\n\n getAudioParams(): SampledAudioParams {\n return { sampleRate: this.sampleRate, stereo: false };\n }\n connectAudio(audio: SampledAudioSink): void {\n this.audio = audio;\n }\n getVideoParams(): VideoParams {\n return {\n width: this.canvasWidth,\n height: this.numVisibleScanlines,\n aspect: this.aspectRatio,\n overscan: this.overscan,\n rotate: this.rotate\n };\n }\n connectVideo(pixels: Uint32Array): void {\n this.pixels = pixels;\n }\n}\n\nexport abstract class BasicScanlineMachine extends BasicMachine implements RasterFrameBased {\n\n abstract numTotalScanlines: number;\n abstract cpuCyclesPerLine: number;\n\n abstract startScanline(): void;\n abstract drawScanline(): void;\n\n frameCycles: number;\n\n advanceFrame(trap: TrapCondition): number {\n this.preFrame();\n var endLineClock = 0;\n var steps = 0;\n this.probe.logNewFrame();\n this.frameCycles = 0;\n for (var sl = 0; sl < this.numTotalScanlines; sl++) {\n endLineClock += this.cpuCyclesPerLine; // could be fractional\n this.scanline = sl;\n this.startScanline();\n while (this.frameCycles < endLineClock) {\n if (trap && trap()) {\n sl = 999;\n break;\n }\n this.frameCycles += this.advanceCPU();\n steps++;\n }\n this.drawScanline();\n this.probe.logNewScanline();\n this.probe.logClocks(Math.floor(this.frameCycles - endLineClock)); // remainder of prev. line\n }\n this.postFrame();\n return steps; // TODO: return steps, not clock? for recorder\n }\n preFrame() { }\n postFrame() { }\n getRasterY() { return this.scanline; }\n getRasterX() { return this.frameCycles % this.cpuCyclesPerLine; }\n}\n", "\nimport { hex } from \"../util\";\n\nconst Z80_OPS = [\"nop\",\"ld bc,xx\",\"ld (bc),a\",\"inc bc\",\"inc b\",\"dec b\",\"ld b,x\",\"rlca\",\"ex af,af'\",\"add hl,bc\",\"ld a,(bc)\",\"dec bc\",\"inc c\",\"dec c\",\"ld c,x\",\"rrca\",\"djnz x\",\"ld de,xx\",\"ld (de),a\",\"inc de\",\"inc d\",\"dec d\",\"ld d,x\",\"rla\",\"jr x\",\"add hl,de\",\"ld a,(de)\",\"dec de\",\"inc e\",\"dec e\",\"ld e,x\",\"rra\",\"jr nz,x\",\"ld hl,xx\",\"ld (xx),hl\",\"inc hl\",\"inc h\",\"dec h\",\"ld h,x\",\"daa\",\"jr z,x\",\"add hl,hl\",\"ld hl,(xx)\",\"dec hl\",\"inc l\",\"dec l\",\"ld l,x\",\"cpl\",\"jr nc,x\",\"ld sp,xx\",\"ld (xx),a\",\"inc sp\",\"inc (hl)\",\"dec (hl)\",\"ld (hl),x\",\"scf\",\"jr c,x\",\"add hl,sp\",\"ld a,(xx)\",\"dec sp\",\"inc a\",\"dec a\",\"ld a,x\",\"ccf\",\"ld b,b\",\"ld b,c\",\"ld b,d\",\"ld b,e\",\"ld b,h\",\"ld b,l\",\"ld b,(hl)\",\"ld b,a\",\"ld c,b\",\"ld c,c\",\"ld c,d\",\"ld c,e\",\"ld c,h\",\"ld c,l\",\"ld c,(hl)\",\"ld c,a\",\"ld d,b\",\"ld d,c\",\"ld d,d\",\"ld d,e\",\"ld d,h\",\"ld d,l\",\"ld d,(hl)\",\"ld d,a\",\"ld e,b\",\"ld e,c\",\"ld e,d\",\"ld e,e\",\"ld e,h\",\"ld e,l\",\"ld e,(hl)\",\"ld e,a\",\"ld h,b\",\"ld h,c\",\"ld h,d\",\"ld h,e\",\"ld h,h\",\"ld h,l\",\"ld h,(hl)\",\"ld h,a\",\"ld l,b\",\"ld l,c\",\"ld l,d\",\"ld l,e\",\"ld l,h\",\"ld l,l\",\"ld l,(hl)\",\"ld l,a\",\"ld (hl),b\",\"ld (hl),c\",\"ld (hl),d\",\"ld (hl),e\",\"ld (hl),h\",\"ld (hl),l\",\"halt\",\"ld (hl),a\",\"ld a,b\",\"ld a,c\",\"ld a,d\",\"ld a,e\",\"ld a,h\",\"ld a,l\",\"ld a,(hl)\",\"ld a,a\",\"add a,b\",\"add a,c\",\"add a,d\",\"add a,e\",\"add a,h\",\"add a,l\",\"add a,(hl)\",\"add a,a\",\"adc a,b\",\"adc a,c\",\"adc a,d\",\"adc a,e\",\"adc a,h\",\"adc a,l\",\"adc a,(hl)\",\"adc a,a\",\"sub b\",\"sub c\",\"sub d\",\"sub e\",\"sub h\",\"sub l\",\"sub (hl)\",\"sub a\",\"sbc a,b\",\"sbc a,c\",\"sbc a,d\",\"sbc a,e\",\"sbc a,h\",\"sbc a,l\",\"sbc a,(hl)\",\"sbc a,a\",\"and b\",\"and c\",\"and d\",\"and e\",\"and h\",\"and l\",\"and (hl)\",\"and a\",\"xor b\",\"xor c\",\"xor d\",\"xor e\",\"xor h\",\"xor l\",\"xor (hl)\",\"xor a\",\"or b\",\"or c\",\"or d\",\"or e\",\"or h\",\"or l\",\"or (hl)\",\"or a\",\"cp b\",\"cp c\",\"cp d\",\"cp e\",\"cp h\",\"cp l\",\"cp (hl)\",\"cp a\",\"ret nz\",\"pop bc\",\"jp nz,xx\",\"jp xx\",\"call nz,xx\",\"push bc\",\"add a,x\",\"rst 00h\",\"ret z\",\"ret\",\"jp z,xx\",\"xxBITxx\",\"call z,xx\",\"call xx\",\"adc a,x\",\"rst 08h\",\"ret nc\",\"pop de\",\"jp nc,xx\",\"out (x),a\",\"call nc,xx\",\"push de\",\"sub x\",\"rst 10h\",\"ret c\",\"exx\",\"jp c,xx\",\"in a,(x)\",\"call c,xx\",\"xxIXxx\",\"sbc a,x\",\"rst 18h\",\"ret po\",\"pop hl\",\"jp po,xx\",\"ex (sp),hl\",\"call po,xx\",\"push hl\",\"and x\",\"rst 20h\",\"ret pe\",\"jp (hl)\",\"jp pe,xx\",\"ex de,hl\",\"call pe,xx\",\"xx80xx\",\"xor x\",\"rst 28h\",\"ret p\",\"pop af\",\"jp p,xx\",\"di\",\"call p,xx\",\"push af\",\"or x\",\"rst 30h\",\"ret m\",\"ld sp,hl\",\"jp m,xx\",\"ei\",\"call m,xx\",\"xxIYxx\",\"cp x\",\"rst 38h\"];\nconst Z80_OPS_ED = [\"in b,(c)\",\"out (c),b\",\"sbc hl,bc\",\"ld (xx),bc\",\"neg\",\"retn\",\"im 0\",\"ld i,a\",\"in c,(c)\",\"out (c),c\",\"adc hl,bc\",\"ld bc,(xx)\",\"neg\",\"reti\",\"\",\"ld r,a\",\"in d,(c)\",\"out (c),d\",\"sbc hl,de\",\"ld (xx),de\",\"neg\",\"retn\",\"im 1\",\"ld a,i\",\"in e,(c)\",\"out (c),e\",\"adc hl,de\",\"ld de,(xx)\",\"neg\",\"retn\",\"im 2\",\"ld a,r\",\"in h,(c)\",\"out (c),h\",\"sbc hl,hl\",\"ld (xx),hl\",\"neg\",\"retn\",\"\",\"rrd\",\"in l,(c)\",\"out (c),l\",\"adc hl,hl\",\"ld hl,(xx)\",\"neg\",\"retn\",\"\",\"rld\",\"in f,(c)\",\"out (c),f\",\"sbc hl,sp\",\"ld (xx),sp\",\"neg\",\"retn\",\"\",\"\",\"in a,(c)\",\"out (c),a\",\"adc hl,sp\",\"ld sp,(xx)\",\"neg\",\"reti\",\"\",\"\",\"ldi\",\"cpi\",\"ini\",\"outi\",\"\",\"\",\"\",\"\",\"ldd\",\"cpd\",\"ind\",\"outd\",\"\",\"\",\"\",\"\",\"ldir\",\"cpir\",\"inir\",\"otir\",\"\",\"\",\"\",\"\",\"lddr\",\"cpdr\",\"indr\",\"otdr\",\"\",\"\",\"\",\"\"];\nconst Z80_OPS_CB = [\"rlc b\",\"rlc c\",\"rlc d\",\"rlc e\",\"rlc h\",\"rlc l\",\"rlc (hl)\",\"rlc a\",\"rrc b\",\"rrc c\",\"rrc d\",\"rrc e\",\"rrc h\",\"rrc l\",\"rrc (hl)\",\"rrc a\",\"rl b\",\"rl c\",\"rl d\",\"rl e\",\"rl h\",\"rl l\",\"rl (hl)\",\"rl a\",\"rr b\",\"rr c\",\"rr d\",\"rr e\",\"rr h\",\"rr l\",\"rr (hl)\",\"rr a\",\"sla b\",\"sla c\",\"sla d\",\"sla e\",\"sla h\",\"sla l\",\"sla (hl)\",\"sla a\",\"sra b\",\"sra c\",\"sra d\",\"sra e\",\"sra h\",\"sra l\",\"sra (hl)\",\"sra a\",\"sll b\",\"sll c\",\"sll d\",\"sll e\",\"sll h\",\"sll l\",\"sll (hl)\",\"sll a\",\"srl b\",\"srl c\",\"srl d\",\"srl e\",\"srl h\",\"srl l\",\"srl (hl)\",\"srl a\",\"bit 0,b\",\"bit 0,c\",\"bit 0,d\",\"bit 0,e\",\"bit 0,h\",\"bit 0,l\",\"bit 0,(hl)\",\"bit 0,a\",\"bit 1,b\",\"bit 1,c\",\"bit 1,d\",\"bit 1,e\",\"bit 1,h\",\"bit 1,l\",\"bit 1,(hl)\",\"bit 1,a\",\"bit 2,b\",\"bit 2,c\",\"bit 2,d\",\"bit 2,e\",\"bit 2,h\",\"bit 2,l\",\"bit 2,(hl)\",\"bit 2,a\",\"bit 3,b\",\"bit 3,c\",\"bit 3,d\",\"bit 3,e\",\"bit 3,h\",\"bit 3,l\",\"bit 3,(hl)\",\"bit 3,a\",\"bit 4,b\",\"bit 4,c\",\"bit 4,d\",\"bit 4,e\",\"bit 4,h\",\"bit 4,l\",\"bit 4,(hl)\",\"bit 4,a\",\"bit 5,b\",\"bit 5,c\",\"bit 5,d\",\"bit 5,e\",\"bit 5,h\",\"bit 5,l\",\"bit 5,(hl)\",\"bit 5,a\",\"bit 6,b\",\"bit 6,c\",\"bit 6,d\",\"bit 6,e\",\"bit 6,h\",\"bit 6,l\",\"bit 6,(hl)\",\"bit 6,a\",\"bit 7,b\",\"bit 7,c\",\"bit 7,d\",\"bit 7,e\",\"bit 7,h\",\"bit 7,l\",\"bit 7,(hl)\",\"bit 7,a\",\"res 0,b\",\"res 0,c\",\"res 0,d\",\"res 0,e\",\"res 0,h\",\"res 0,l\",\"res 0,(hl)\",\"res 0,a\",\"res 1,b\",\"res 1,c\",\"res 1,d\",\"res 1,e\",\"res 1,h\",\"res 1,l\",\"res 1,(hl)\",\"res 1,a\",\"res 2,b\",\"res 2,c\",\"res 2,d\",\"res 2,e\",\"res 2,h\",\"res 2,l\",\"res 2,(hl)\",\"res 2,a\",\"res 3,b\",\"res 3,c\",\"res 3,d\",\"res 3,e\",\"res 3,h\",\"res 3,l\",\"res 3,(hl)\",\"res 3,a\",\"res 4,b\",\"res 4,c\",\"res 4,d\",\"res 4,e\",\"res 4,h\",\"res 4,l\",\"res 4,(hl)\",\"res 4,a\",\"res 5,b\",\"res 5,c\",\"res 5,d\",\"res 5,e\",\"res 5,h\",\"res 5,l\",\"res 5,(hl)\",\"res 5,a\",\"res 6,b\",\"res 6,c\",\"res 6,d\",\"res 6,e\",\"res 6,h\",\"res 6,l\",\"res 6,(hl)\",\"res 6,a\",\"res 7,b\",\"res 7,c\",\"res 7,d\",\"res 7,e\",\"res 7,h\",\"res 7,l\",\"res 7,(hl)\",\"res 7,a\",\"set 0,b\",\"set 0,c\",\"set 0,d\",\"set 0,e\",\"set 0,h\",\"set 0,l\",\"set 0,(hl)\",\"set 0,a\",\"set 1,b\",\"set 1,c\",\"set 1,d\",\"set 1,e\",\"set 1,h\",\"set 1,l\",\"set 1,(hl)\",\"set 1,a\",\"set 2,b\",\"set 2,c\",\"set 2,d\",\"set 2,e\",\"set 2,h\",\"set 2,l\",\"set 2,(hl)\",\"set 2,a\",\"set 3,b\",\"set 3,c\",\"set 3,d\",\"set 3,e\",\"set 3,h\",\"set 3,l\",\"set 3,(hl)\",\"set 3,a\",\"set 4,b\",\"set 4,c\",\"set 4,d\",\"set 4,e\",\"set 4,h\",\"set 4,l\",\"set 4,(hl)\",\"set 4,a\",\"set 5,b\",\"set 5,c\",\"set 5,d\",\"set 5,e\",\"set 5,h\",\"set 5,l\",\"set 5,(hl)\",\"set 5,a\",\"set 6,b\",\"set 6,c\",\"set 6,d\",\"set 6,e\",\"set 6,h\",\"set 6,l\",\"set 6,(hl)\",\"set 6,a\",\"set 7,b\",\"set 7,c\",\"set 7,d\",\"set 7,e\",\"set 7,h\",\"set 7,l\",\"set 7,(hl)\",\"set 7,a\"];\n\nexport function disassembleZ80(pc:number, b0:number, b1:number, b2:number, b3:number) : {line:string, nbytes:number, isaddr:boolean, iscall?:boolean} {\n\n var op,n,am;\n var bytes = [b0,b1,b2,b3];\n var isaddr = false;\n var iscall = false;\n n=1;\n switch (b0) {\n case 0xcb:\n am = Z80_OPS_CB[b1];\n n++;\n break;\n case 0xed:\n if (b1 >= 0x40 && b1 <= 0x7f) am = Z80_OPS_ED[b1 - 0x40];\n if (b1 >= 0xa0 && b1 <= 0xbf) am = Z80_OPS_ED[b1 - 0xa0 + 0x40];\n n++;\n break;\n case 0xdd:\n case 0xfd:\n var ireg = (b0 == 0xdd) ? 'ix' : 'iy';\n if (b1 == 0xcb) {\n // swap the 3rd and 4th bytes [$dd $cb displacement opcode]\n am = Z80_OPS_CB[b3];\n bytes[2] = b3;\n bytes[3] = b2;\n n++;\n } else {\n am = Z80_OPS[b1];\n }\n am = am.replace(/[(]hl[)]/, '('+ireg+'+x)');\n am = am.replace(/\\bhl\\b/, ireg);\n n++;\n break;\n default:\n am = Z80_OPS[b0];\n break;\n }\n if (!am || !am.length) am = \"??\";\n iscall = /^(call|rst)/.test(am);\n if (/\\bxx\\b/.test(am)) {\n am = am.replace(/\\bxx\\b/,'$'+hex(bytes[n]+(bytes[n+1]<<8), 4));\n n += 2;\n isaddr = true;\n } else if (/\\bx\\b/.test(am)) {\n if (am.startsWith('j')) {\n var offset = (b1 < 0x80) ? (pc+2+b1) : (pc+2-(256-b1));\n offset &= 0xffff;\n am = am.replace(/\\bx\\b/,'$'+hex(offset, 4));\n isaddr = true;\n } else {\n am = am.replace(/\\bx\\b/,'$'+hex(bytes[n], 2));\n }\n n += 1;\n }\n return {line:am.toUpperCase(), nbytes:n, isaddr:isaddr, iscall:iscall};\n};\n", "\"use strict\";\n/*\nThe MIT License (MIT)\nCopyright (c) 2014 Martin Maly, http://retrocip.cz, http://www.uelectronics.info,\ntwitter: @uelectronics\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nexport function CPU6809() {\n\nvar ticks;\nvar rA,rB,rX,rY,rU,rS,PC,CC,DP,\nF_CARRY =1,\nF_OVERFLOW =2,\nF_ZERO =4,\nF_NEGATIVE =8,\nF_IRQMASK =16,\nF_HALFCARRY =32,\nF_FIRQMASK =64,\nF_ENTIRE =128,\n\nvecRESET = 0xFFFE,\nvecNMI = 0xFFFC,\nvecSWI = 0xFFFA,\nvecIRQ = 0xFFF8,\nvecFIRQ = 0xFFF6,\nvecSWI2 = 0xFFF4,\nvecSWI3 = 0xFFF2,\n\nT=0;\n\nvar IRQs;\n\nvar byteTo, byteAt;\n\nvar cycles = [\n 6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6, /* 00-0F */\n 0,0,2,4,0,0,5,9,0,2,3,0,3,2,8,6, /* 10-1F */\n 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, /* 20-2F */\n 4,4,4,4,5,5,5,5,0,5,3,6,9,11,0,19, /* 30-3F */\n 2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2, /* 40-4F */\n 2,0,0,2,2,0,2,2,2,2,2,0,2,2,0,2, /* 50-5F */\n 6,0,0,6,6,0,6,6,6,6,6,0,6,6,3,6, /* 60-6F */\n 7,0,0,7,7,0,7,7,7,7,7,0,7,7,4,7, /* 70-7F */\n 2,2,2,4,2,2,2,0,2,2,2,2,4,7,3,0, /* 80-8F */\n 4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5, /* 90-9F */\n 4,4,4,6,4,4,4,4,4,4,4,4,6,7,5,5, /* A0-AF */\n 5,5,5,7,5,5,5,5,5,5,5,5,7,8,6,6, /* B0-BF */\n 2,2,2,4,2,2,2,0,2,2,2,2,3,0,3,0, /* C0-CF */\n 4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5, /* D0-DF */\n 4,4,4,6,4,4,4,4,4,4,4,4,5,5,5,5, /* E0-EF */\n 5,5,5,7,5,5,5,5,5,5,5,5,6,6,6,6]; /* F0-FF */\n\n/* Instruction timing for the two-byte opcodes */\nvar cycles2 = [\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00-0F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10-1F */\n 0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, /* 20-2F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20, /* 30-3F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40-4F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50-5F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60-6F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70-7F */\n 0,0,0,5,0,0,0,0,0,0,0,0,5,0,4,0, /* 80-8F */\n 0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6, /* 90-9F */\n 0,0,0,7,0,0,0,0,0,0,0,0,7,0,6,6, /* A0-AF */\n 0,0,0,8,0,0,0,0,0,0,0,0,8,0,7,7, /* B0-BF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, /* C0-CF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6, /* D0-DF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6, /* E0-EF */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7]; /* F0-FF */\n\n/* Negative and zero flags for quicker flag settings */\nvar flagsNZ = [\n 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00-0F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 10-1F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 20-2F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 30-3F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40-4F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50-5F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60-6F */\n 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70-7F */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* 80-8F */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* 90-9F */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* A0-AF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* B0-BF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* C0-CF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* D0-DF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, /* E0-EF */\n 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]; /* F0-FF */\n\nvar setV8 = function(a,b,r) {CC |= (((a^b^r^(r>>1))&0x80)>>6);};\nvar setV16 = function(a,b,r) {CC |= (((a^b^r^(r>>1))&0x8000)>>14);};\nvar getD = function() {return (rA<<8)+rB;};\nvar setD = function(v) {rA = (v>>8)& 0xff;rB=v&0xff;};\nvar PUSHB = function(b) {\n byteTo(--rS, b & 0xff);\n};\nvar PUSHW = function(b) {\n byteTo(--rS, b & 0xff);\n byteTo(--rS, (b>>8) & 0xff);\n};\n\nvar PUSHBU = function(b) {\n byteTo(--rU, b & 0xff);\n};\nvar PUSHWU = function(b) {\n byteTo(--rU, b & 0xff);\n byteTo(--rU, (b>>8) & 0xff);\n};\nvar PULLB = function() {\n return byteAt(rS++);\n};\nvar PULLW = function() {\n return byteAt(rS++) * 256 + byteAt(rS++);\n};\n\nvar PULLBU = function() {\n return byteAt(rU++);\n};\nvar PULLWU = function() {\n return byteAt(rU++) * 256 + byteAt(rU++);\n};\n\nvar PSHS = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x80) {PUSHW(PC);i += 2;}\n if (ucTemp & 0x40) {PUSHW(rU);i += 2;}\n if (ucTemp & 0x20){PUSHW(rY);i += 2;}\n if (ucTemp & 0x10){PUSHW(rX);i += 2;}\n if (ucTemp & 0x8){PUSHB(DP); i++;}\n if (ucTemp & 0x4){PUSHB(rB); i++;}\n if (ucTemp & 0x2){PUSHB(rA); i++;}\n if (ucTemp & 0x1){PUSHB(CC); i++;}\n T+=i; //timing\n};\nvar PSHU = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x80) {PUSHWU(PC);i += 2;}\n if (ucTemp & 0x40) {PUSHWU(rS);i += 2;}\n if (ucTemp & 0x20){PUSHWU(rY);i += 2;}\n if (ucTemp & 0x10){PUSHWU(rX);i += 2;}\n if (ucTemp & 0x8){PUSHBU(DP); i++;}\n if (ucTemp & 0x4){PUSHBU(rB); i++;}\n if (ucTemp & 0x2){PUSHBU(rA); i++;}\n if (ucTemp & 0x1){PUSHBU(CC); i++;}\n T+=i; //timing\n};\nvar PULS = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x1){CC = PULLB(); i++;}\n if (ucTemp & 0x2){rA = PULLB(); i++;}\n if (ucTemp & 0x4){rB = PULLB(); i++;}\n if (ucTemp & 0x8){DP = PULLB(); i++;}\n if (ucTemp & 0x10){rX = PULLW();i += 2;}\n if (ucTemp & 0x20){rY = PULLW();i += 2;}\n if (ucTemp & 0x40) {rU = PULLW();i += 2;}\n if (ucTemp & 0x80) {PC = PULLW();i += 2;}\n T+=i; //timing\n};\nvar PULU = function(ucTemp) {\n var i = 0;\n if (ucTemp & 0x1){CC = PULLBU(); i++;}\n if (ucTemp & 0x2){rA = PULLBU(); i++;}\n if (ucTemp & 0x4){rB = PULLBU(); i++;}\n if (ucTemp & 0x8){DP = PULLBU(); i++;}\n if (ucTemp & 0x10){rX = PULLWU();i += 2;}\n if (ucTemp & 0x20){rY = PULLWU();i += 2;}\n if (ucTemp & 0x40) {rS = PULLWU();i += 2;}\n if (ucTemp & 0x80) {PC = PULLWU();i += 2;}\n T+=i; //timing\n};\n\n\nvar getPBR = function(ucPostByte) {\n switch(ucPostByte & 0xf) {\n case 0x00: /* D */\n return getD();\n case 0x1: /* X */\n return rX;\n case 0x2: /* Y */\n return rY;\n case 0x3: /* U */\n return rU;\n case 0x4: /* S */\n return rS;\n case 0x5: /* PC */\n return PC;\n case 0x8: /* A */\n return rA;\n case 0x9: /* B */\n return rB;\n case 0xA: /* CC */\n return CC;\n case 0xB: /* DP */\n return DP;\n default: /* illegal */\n return null;\n }\n};\nvar setPBR = function(ucPostByte, v) {\n switch(ucPostByte & 0xf) /* Get destination register */\n {\n case 0x00: /* D */\n setD(v);return;\n case 0x1: /* X */\n rX = v; return;\n case 0x2: /* Y */\n rY = v; return;\n case 0x3: /* U */\n rU = v; return;\n case 0x4: /* S */\n rS = v; return;\n case 0x5: /* PC */\n PC = v; return;\n case 0x8: /* A */\n rA = v; return;\n case 0x9: /* B */\n rB = v; return;\n case 0xA: /* CC */\n CC = v; return;\n case 0xB: /* DP */\n DP = v; return;\n default: /* illegal */\n return;\n }\n};\n\nvar TFREXG = function(ucPostByte, bExchange)\n{\n\n var ucTemp = ucPostByte & 0x88;\n if (ucTemp == 0x80 || ucTemp == 0x08)\n ucTemp = 0; /* PROBLEM! */\n\n if (bExchange)\n {\n ucTemp = getPBR(ucPostByte>>4);\n setPBR(ucPostByte>>4, getPBR(ucPostByte));\n setPBR(ucPostByte, ucTemp);\n }\n else /* Transfer */ {\n setPBR(ucPostByte, getPBR(ucPostByte>>4));\n }\n} ;\n\nvar signed = function(x) {\n return (x>127)?(x-256):x;\n};\nvar signed16 = function(x) {\n return (x>32767)?(x-65536):x;\n};\n\nvar fetch = function() {\n var v = byteAt(PC++);\n PC &= 0xffff;\n return v;\n};\nvar fetch16 = function() {\n var v1 = byteAt(PC++);\n PC &= 0xffff;\n var v2 = byteAt(PC++);\n PC &= 0xffff;\n return v1*256+v2;\n};\n\nvar ReadWord = function(addr) {\n var v1 = byteAt(addr++);\n addr &= 0xffff;\n var v2 = byteAt(addr++);\n addr &= 0xffff;\n return v1*256+v2;\n};\nvar WriteWord = function(addr,v) {\n byteTo(addr++,(v>>8)&0xff);\n addr &= 0xffff;\n byteTo(addr,v&0xff);\n};\n\nvar PostByte = function() {\n var pb = fetch();\n var preg;\n switch (pb & 0x60) {\n case 0:\n preg = rX; break;\n case 0x20:\n preg = rY; break;\n case 0x40:\n preg = rU; break;\n case 0x60:\n preg = rS; break;\n }\n\n var xchg = null;\n var addr = null;\n var sTemp;\n\n if (pb & 0x80) /* Complex stuff */\n {\n switch (pb & 0x0f)\n {\n case 0: /* EA = ,reg+ */\n addr = preg;\n xchg = preg + 1;\n T += 2;\n break;\n case 1: /* EA = ,reg++ */\n addr = preg;\n xchg = preg + 2;\n T += 3;\n break;\n case 2: /* EA = ,-reg */\n xchg = preg - 1;\n addr = xchg;\n T += 2;\n break;\n case 3: /* EA = ,--reg */\n xchg = preg - 2;\n addr = xchg;\n T += 3;\n break;\n case 4: /* EA = ,reg */\n addr = preg;\n break;\n case 5: /* EA = ,reg + B */\n //usAddr = *pReg + (signed short)(signed char)regs->ucRegB;\n addr = preg + signed(rB);\n T += 1;\n break;\n case 6: /* EA = ,reg + A */\n addr = preg + signed(rA);\n T += 1;\n break;\n case 7: /* illegal */\n addr = 0;\n break;\n case 8: /* EA = ,reg + 8-bit offset */\n addr = preg + signed(fetch());\n T += 1;\n break;\n case 9: /* EA = ,reg + 16-bit offset */\n addr = preg + signed16(fetch16());\n T += 4;\n break;\n case 0xA: /* illegal */\n addr = 0;\n break;\n case 0xB: /* EA = ,reg + D */\n T += 4;\n addr = preg + getD();\n break;\n case 0xC: /* EA = PC + 8-bit offset */\n sTemp = signed(fetch());\n addr = PC + sTemp;\n T += 1;\n break;\n case 0xD: /* EA = PC + 16-bit offset */\n sTemp = signed16(fetch16());\n addr = PC + sTemp;\n T += 5;\n break;\n case 0xe: /* Illegal */\n addr = 0;\n break;\n case 0xF: /* EA = [,address] */\n T += 5;\n addr = fetch16();\n break;\n } /* switch */\n\n addr &= 0xffff;\n\n if (pb & 0x10) /* Indirect addressing */\n {\n addr = byteAt(addr)*256+byteAt((addr+1) & 0xffff);\n T += 3;\n }\n }\n else /* Just a 5 bit signed offset + register */\n {\n var sByte = pb & 0x1f;\n if (sByte > 15) /* Two's complement 5-bit value */\n sByte -= 32;\n addr = preg + sByte;\n T += 1;\n }\n\n if (xchg!==null) {\n switch (pb & 0x60) {\n case 0:\n rX = xchg; break;\n case 0x20:\n rY = xchg; break;\n case 0x40:\n rU = xchg; break;\n case 0x60:\n rS = xchg; break;\n }\n\n }\n\n return addr & 0xffff; /* Return the effective address */\n};\n\nvar flagsNZ16 = function(word) {\n CC &= ~(F_ZERO | F_NEGATIVE);\n if (word===0) CC |= F_ZERO;\n if (word & 0x8000) CC |= F_NEGATIVE;\n};\n\n// ============= Operations\n\nvar oINC = function(b) {\n b++;\n b &= 0xff;\n CC &= ~(F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[b];\n if (b === 0 || b == 0x80) CC |= F_OVERFLOW;\n return b;\n};\nvar oDEC = function(b) {\n b--;\n b &= 0xff;\n CC &= ~(F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[b];\n if (b === 0x7f || b == 0xff) CC |= F_OVERFLOW;\n return b;\n};\nvar oSUB = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n return temp&0xff;\n};\nvar oSUB16 = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if ((temp&0xffff)===0) CC|=F_ZERO;\n if (temp&0x8000) CC|=F_NEGATIVE;\n if (temp&0x10000) CC|=F_CARRY;\n setV16(b,v,temp);\n return temp&0xffff;\n};\nvar oADD = function(b,v) {\n var temp = b+v;\n //temp &= 0xff;\n CC &= ~(F_HALFCARRY | F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n if ((temp ^ b ^ v)&0x10) CC |= F_HALFCARRY;\n return temp&0xff;\n};\nvar oADD16 = function(b,v) {\n var temp = b+v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if ((temp&0xffff)===0) CC|=F_ZERO;\n if (temp&0x8000) CC|=F_NEGATIVE;\n if (temp&0x10000) CC|=F_CARRY;\n setV16(b,v,temp);\n return temp&0xffff;\n};\nvar oADC = function(b,v) {\n var temp = b+v+(CC & F_CARRY);\n //temp &= 0xff;\n CC &= ~(F_HALFCARRY | F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n if ((temp ^ b ^ v)&0x10) CC |= F_HALFCARRY;\n return temp&0xff;\n};\nvar oSBC = function(b,v) {\n var temp = b-v-(CC & F_CARRY);\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n return temp&0xff;\n};\nvar oCMP = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n CC |= flagsNZ[temp & 0xff];\n if (temp&0x100) CC|=F_CARRY;\n setV8(b,v,temp);\n return;\n};\nvar oCMP16 = function(b,v) {\n var temp = b-v;\n //temp &= 0xff;\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if ((temp&0xffff)===0) CC|=F_ZERO;\n if (temp&0x8000) CC|=F_NEGATIVE;\n if (temp&0x10000) CC|=F_CARRY;\n setV16(b,v,temp);\n return;\n};\n\nvar oNEG = function(b) {\n CC &= ~(F_CARRY | F_ZERO | F_OVERFLOW | F_NEGATIVE);\n if (b == 0x80)\n CC |= F_OVERFLOW;\n b = ((~b)&0xff) + 1;\n if (b === 0) CC |= F_ZERO;\n if (b & 0x80) CC |= F_NEGATIVE | F_CARRY;\n return b;\n};\n\nvar oLSR = function(b) {\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE);\n if (b & 0x01) CC |= F_CARRY;\n b >>= 1;\n if (b === 0) CC |= F_ZERO;\n return b & 0xff;\n};\nvar oASR = function(b) {\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE);\n if (b & 0x01) CC |= F_CARRY;\n b = (b & 0x80) | (b>>1);\n CC |= flagsNZ[b];\n return b;\n};\nvar oASL = function(b) {\n var temp = b;\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE | F_OVERFLOW);\n if (b & 0x80) CC |= F_CARRY;\n b <<= 1;\n CC |= flagsNZ[b];\n if ((b ^ temp) & 0x80) CC|=F_OVERFLOW;\n return b;\n};\nvar oROL = function(b) {\n var temp = b;\n var oldc = CC&F_CARRY;\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE | F_OVERFLOW);\n if (b & 0x80) CC |= F_CARRY;\n b = b<<1 | oldc;\n CC |= flagsNZ[b];\n if ((b ^ temp) & 0x80) CC|=F_OVERFLOW;\n return b;\n};\nvar oROR = function(b) {\n var oldc = CC&F_CARRY;\n CC &= ~(F_ZERO | F_CARRY | F_NEGATIVE);\n if (b & 0x01) CC |= F_CARRY;\n b = b>>1 | oldc<<7;\n CC |= flagsNZ[b];\n// if ((b ^ temp) & 0x80) CC|=F_OVERFLOW;\n return b;\n};\n\nvar oEOR = function(b,v) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b ^= v;\n CC |= flagsNZ[b];\n return b;\n};\nvar oOR = function(b,v) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b |= v;\n CC |= flagsNZ[b];\n return b;\n};\nvar oAND = function(b,v) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b &= v;\n CC |= flagsNZ[b];\n return b;\n};\nvar oCOM = function(b) {\n CC &= ~(F_ZERO | F_NEGATIVE | F_OVERFLOW);\n b ^= 0xff;\n CC |= flagsNZ[b];\n CC |= F_CARRY;\n return b;\n};\n\n//----common\nvar dpadd = function() {\n //direct page + 8bit index\n return DP*256 + fetch();\n};\n\nvar step = function() {\n var oldT = T;\n\n var addr = null;\n var pb = null;\n\n var oldPC = PC;\n var opcode = fetch();\n T+=cycles[opcode];\n switch (opcode) {\n case 0x00: //NEG DP\n addr = dpadd();\n byteTo(addr, oNEG(byteAt(addr)));\n break;\n case 0x03: //COM DP\n addr = dpadd();\n byteTo(addr, oCOM(byteAt(addr)));\n break;\n case 0x04: //LSR DP\n addr = dpadd();\n byteTo(addr, oLSR(byteAt(addr)));\n break;\n case 0x06: //ROR DP\n addr = dpadd();\n byteTo(addr, oROR(byteAt(addr)));\n break;\n case 0x07: //ASR DP\n addr = dpadd();\n byteTo(addr, oASR(byteAt(addr)));\n break;\n case 0x08: //ASL DP\n addr = dpadd();\n byteTo(addr, oASL(byteAt(addr)));\n break;\n case 0x09: //ROL DP\n addr = dpadd();\n byteTo(addr, oROL(byteAt(addr)));\n break;\n\n case 0x0A: //DEC DP\n addr = dpadd();\n byteTo(addr, oDEC(byteAt(addr)));\n break;\n case 0x0C: //INC DP\n addr = dpadd();\n byteTo(addr, oINC(byteAt(addr)));\n break;\n\n case 0x0D: //TST DP\n addr = dpadd();\n pb = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[pb];\n break;\n\n case 0x0E: //JMP DP\n addr = dpadd();\n PC = addr;\n break;\n case 0x0F: //CLR DP\n addr = dpadd();\n byteTo(addr,0);\n CC&=~(F_CARRY|F_NEGATIVE|F_OVERFLOW);\n CC |= F_ZERO;\n break;\n\n case 0x12: //NOP\n break;\n case 0x13: //SYNC\n break;\n case 0x16: //LBRA relative\n addr = signed16(fetch16());\n PC += addr;\n break;\n case 0x17: //LBSR relative\n addr = signed16(fetch16());\n PUSHW(PC);\n PC += addr;\n break;\n case 0x19: //DAA\n var cf = 0;\n var nhi = rA & 0xf0, nlo = rA & 0x0f;\n if( nlo>0x09 || CC & 0x20 ) cf |= 0x06;\n if( nhi>0x80 && nlo>0x09 ) cf |= 0x60;\n if( nhi>0x90 || CC & 0x01 ) cf |= 0x60;\n addr = cf + rA;\n CC &= ~(F_CARRY | F_NEGATIVE | F_ZERO | F_OVERFLOW);\n if (addr & 0x100)\n CC |= F_CARRY;\n rA = addr & 0xff;\n CC |= flagsNZ[rA];\n break;\n case 0x1A: //ORCC\n CC |= fetch();\n break;\n case 0x1C: //ANDCC\n CC &= fetch();\n break;\n case 0x1D: //SEX\n rA = (rB & 0x80)?0xff:0;\n flagsNZ16(getD());\n CC &= ~F_OVERFLOW;\n break;\n case 0x1E: //EXG\n pb = fetch();\n TFREXG(pb,true);\n break;\n case 0x1F: //EXG\n pb = fetch();\n TFREXG(pb,false);\n break;\n\n case 0x20: //BRA\n addr = signed(fetch());\n PC += addr;\n break;\n case 0x21: //BRN\n addr = signed(fetch());\n break;\n case 0x22: //BHI\n addr = signed(fetch());\n if (!(CC&(F_CARRY | F_ZERO))) PC += addr;\n break;\n case 0x23: //BLS\n addr = signed(fetch());\n if (CC&(F_CARRY | F_ZERO)) PC += addr;\n break;\n case 0x24: //BCC\n addr = signed(fetch());\n if (!(CC&F_CARRY)) PC += addr;\n break;\n case 0x25: //BCS\n addr = signed(fetch());\n if (CC&F_CARRY) PC += addr;\n break;\n case 0x26: //BNE\n addr = signed(fetch());\n if (!(CC&F_ZERO)) PC += addr;\n break;\n case 0x27: //BEQ\n addr = signed(fetch());\n if (CC&F_ZERO) PC += addr;\n break;\n case 0x28: //BVC\n addr = signed(fetch());\n if (!(CC&F_OVERFLOW)) PC += addr;\n break;\n case 0x29: //BVS\n addr = signed(fetch());\n if (CC&F_OVERFLOW) PC += addr;\n break;\n case 0x2A: //BPL\n addr = signed(fetch());\n if (!(CC&F_NEGATIVE)) PC += addr;\n break;\n case 0x2B: //BMI\n addr = signed(fetch());\n if (CC&F_NEGATIVE) PC += addr;\n break;\n case 0x2C: //BGE\n addr = signed(fetch());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2))) PC += addr;\n break;\n case 0x2D: //BLT\n addr = signed(fetch());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2)) PC += addr;\n break;\n case 0x2E: //BGT\n addr = signed(fetch());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO))) PC += addr;\n break;\n case 0x2F: //BLE\n addr = signed(fetch());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO)) PC += addr;\n break;\n\n case 0x30: //LEAX\n rX = PostByte();\n if (rX===0) CC|=F_ZERO; else CC&=~F_ZERO;\n break;\n case 0x31: //LEAY\n rY = PostByte();\n if (rY===0) CC|=F_ZERO; else CC&=~F_ZERO;\n break;\n case 0x32: //LEAS\n rS = PostByte();\n break;\n case 0x33: //LEAU\n rU = PostByte();\n break;\n\n case 0x34: //PSHS\n PSHS(fetch());\n break;\n case 0x35: //PULS\n PULS(fetch());\n break;\n case 0x36: //PSHU\n PSHU(fetch());\n break;\n case 0x37: //PULU\n PULU(fetch());\n break;\n case 0x39: //RTS\n PC = PULLW();\n break;\n case 0x3A: //ABX\n rX += rB;\n break;\n case 0x3B: //RTI\n CC = PULLB();\n if (CC & F_ENTIRE) {\n T+=9;\n rA = PULLB();\n rB = PULLB();\n DP = PULLB();\n rX = PULLW();\n rY = PULLW();\n rU = PULLW();\n }\n PC = PULLW();\n break;\n case 0x3C: //CWAI **todo\n CC &= fetch();\n break;\n case 0x3D: //MUL\n addr = rA * rB;\n if (addr===0) CC|=F_ZERO; else CC&=~F_ZERO;\n if (addr&0x80) CC|=F_CARRY; else CC&=~F_CARRY;\n setD(addr);\n break;\n case 0x3F: //SWI\n CC |= F_ENTIRE;\n PUSHW(PC);\n PUSHW(rU);\n PUSHW(rY);\n PUSHW(rX);\n PUSHB(DP);\n PUSHB(rB);\n PUSHB(rA);\n PUSHB(CC);\n CC |= F_IRQMASK | F_FIRQMASK;\n PC = ReadWord(vecSWI);\n break;\n\n case 0x40:\n rA = oNEG(rA);\n break;\n case 0x43:\n rA = oCOM(rA);\n break;\n case 0x44:\n rA = oLSR(rA);\n break;\n case 0x46:\n rA = oROR(rA);\n break;\n case 0x47:\n rA = oASR(rA);\n break;\n case 0x48:\n rA = oASL(rA);\n break;\n case 0x49:\n rA = oROL(rA);\n break;\n case 0x4A:\n rA = oDEC(rA);\n break;\n case 0x4C:\n rA = oINC(rA);\n break;\n case 0x4D:\n CC &= ~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x4F:\n rA = 0;\n CC &= ~(F_NEGATIVE|F_OVERFLOW|F_CARRY);\n CC |= F_ZERO;\n break;\n\n case 0x50:\n rB = oNEG(rB);\n break;\n case 0x53:\n rB = oCOM(rB);\n break;\n case 0x54:\n rB = oLSR(rB);\n break;\n case 0x56:\n rB = oROR(rB);\n break;\n case 0x57:\n rB = oASR(rB);\n break;\n case 0x58:\n rB = oASL(rB);\n break;\n case 0x59:\n rB = oROL(rB);\n break;\n case 0x5A:\n rB = oDEC(rB);\n break;\n case 0x5C:\n rB = oINC(rB);\n break;\n case 0x5D:\n CC &= ~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0x5F:\n rB = 0;\n CC &= ~(F_NEGATIVE|F_OVERFLOW|F_CARRY);\n CC |= F_ZERO;\n break;\n\n case 0x60: //NEG indexed\n addr = PostByte();\n byteTo(addr, oNEG(byteAt(addr)));\n break;\n case 0x63: //COM indexed\n addr = PostByte();\n byteTo(addr, oCOM(byteAt(addr)));\n break;\n case 0x64: //LSR indexed\n addr = PostByte();\n byteTo(addr, oLSR(byteAt(addr)));\n break;\n case 0x66: //ROR indexed\n addr = PostByte();\n byteTo(addr, oROR(byteAt(addr)));\n break;\n case 0x67: //ASR indexed\n addr = PostByte();\n byteTo(addr, oASR(byteAt(addr)));\n break;\n case 0x68: //ASL indexed\n addr = PostByte();\n byteTo(addr, oASL(byteAt(addr)));\n break;\n case 0x69: //ROL indexed\n addr = PostByte();\n byteTo(addr, oROL(byteAt(addr)));\n break;\n\n case 0x6A: //DEC indexed\n addr = PostByte();\n byteTo(addr, oDEC(byteAt(addr)));\n break;\n case 0x6C: //INC indexed\n addr = PostByte();\n byteTo(addr, oINC(byteAt(addr)));\n break;\n\n case 0x6D: //TST indexed\n addr = PostByte();\n pb = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[pb];\n break;\n\n case 0x6E: //JMP indexed\n addr = PostByte();\n PC = addr;\n break;\n case 0x6F: //CLR indexed\n addr = PostByte();\n byteTo(addr,0);\n CC&=~(F_CARRY|F_NEGATIVE|F_OVERFLOW);\n CC |= F_ZERO;\n break;\n\n\n case 0x70: //NEG extended\n addr = fetch16();\n byteTo(addr, oNEG(byteAt(addr)));\n break;\n case 0x73: //COM extended\n addr = fetch16();\n byteTo(addr, oCOM(byteAt(addr)));\n break;\n case 0x74: //LSR extended\n addr = fetch16();\n byteTo(addr, oLSR(byteAt(addr)));\n break;\n case 0x76: //ROR extended\n addr = fetch16();\n byteTo(addr, oROR(byteAt(addr)));\n break;\n case 0x77: //ASR extended\n addr = fetch16();\n byteTo(addr, oASR(byteAt(addr)));\n break;\n case 0x78: //ASL extended\n addr = fetch16();\n byteTo(addr, oASL(byteAt(addr)));\n break;\n case 0x79: //ROL extended\n addr = fetch16();\n byteTo(addr, oROL(byteAt(addr)));\n break;\n\n case 0x7A: //DEC extended\n addr = fetch16();\n byteTo(addr, oDEC(byteAt(addr)));\n break;\n case 0x7C: //INC extended\n addr = fetch16();\n byteTo(addr, oINC(byteAt(addr)));\n break;\n\n case 0x7D: //TST extended\n addr = fetch16();\n pb = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[pb];\n break;\n\n case 0x7E: //JMP extended\n addr = fetch16();\n PC = addr;\n break;\n case 0x7F: //CLR extended\n addr = fetch16();\n byteTo(addr,0);\n CC&=~(F_CARRY|F_NEGATIVE|F_OVERFLOW);\n CC |= F_ZERO;\n break;\n\n // regs A,X\n\n case 0x80: //SUBA imm\n rA = oSUB(rA, fetch());\n break;\n case 0x81: //CMPA imm\n oCMP(rA, fetch());\n break;\n case 0x82: //SBCA imm\n rA = oSBC(rA, fetch());\n break;\n case 0x83: //SUBD imm\n setD(oSUB16(getD(),fetch16()));\n break;\n case 0x84: //ANDA imm\n rA = oAND(rA, fetch());\n break;\n case 0x85: //BITA imm\n oAND(rA, fetch());\n break;\n case 0x86: //LDA imm\n rA = fetch();\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x88: //EORA imm\n rA = oEOR(rA, fetch());\n break;\n case 0x89: //ADCA imm\n rA = oADC(rA, fetch());\n break;\n case 0x8A: //ORA imm\n rA = oOR(rA, fetch());\n break;\n case 0x8B: //ADDA imm\n rA = oADD(rA, fetch());\n break;\n case 0x8C: //CMPX imm\n oCMP16(rX, fetch16());\n break;\n\n case 0x8D: //JSR imm\n addr = signed(fetch());\n PUSHW(PC);\n PC+=addr;\n break;\n case 0x8E: //LDX imm\n rX = fetch16();\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0x90: //SUBA direct\n addr = dpadd();\n rA = oSUB(rA, byteAt(addr));\n break;\n case 0x91: //CMPA direct\n addr = dpadd();\n oCMP(rA, byteAt(addr));\n break;\n case 0x92: //SBCA direct\n addr = dpadd();\n rA = oSBC(rA, byteAt(addr));\n break;\n case 0x93: //SUBD direct\n addr = dpadd();\n setD(oSUB16(getD(),ReadWord(addr)));\n break;\n case 0x94: //ANDA direct\n addr = dpadd();\n rA = oAND(rA, byteAt(addr));\n break;\n case 0x95: //BITA direct\n addr = dpadd();\n oAND(rA, byteAt(addr));\n break;\n case 0x96: //LDA direct\n addr = dpadd();\n rA = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x97: //STA direct\n addr = dpadd();\n byteTo(addr,rA);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0x98: //EORA direct\n addr = dpadd();\n rA = oEOR(rA, byteAt(addr));\n break;\n case 0x99: //ADCA direct\n addr = dpadd();\n rA = oADC(rA, byteAt(addr));\n break;\n case 0x9A: //ORA direct\n addr = dpadd();\n rA = oOR(rA, byteAt(addr));\n break;\n case 0x9B: //ADDA direct\n addr = dpadd();\n rA = oADD(rA, byteAt(addr));\n break;\n case 0x9C: //CMPX direct\n addr = dpadd();\n oCMP16(rX, ReadWord(addr));\n break;\n\n case 0x9D: //JSR direct\n addr = dpadd();\n PUSHW(PC);\n PC=addr;\n break;\n case 0x9E: //LDX direct\n addr = dpadd();\n rX = ReadWord(addr);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0x9F: //STX direct\n addr = dpadd();\n WriteWord(addr,rX);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0xA0: //SUBA indexed\n addr = PostByte();\n rA = oSUB(rA, byteAt(addr));\n break;\n case 0xA1: //CMPA indexed\n addr = PostByte();\n oCMP(rA, byteAt(addr));\n break;\n case 0xA2: //SBCA indexed\n addr = PostByte();\n rA = oSBC(rA, byteAt(addr));\n break;\n case 0xA3: //SUBD indexed\n addr = PostByte();\n setD(oSUB16(getD(),ReadWord(addr)));\n break;\n case 0xA4: //ANDA indexed\n addr = PostByte();\n rA = oAND(rA, byteAt(addr));\n break;\n case 0xA5: //BITA indexed\n addr = PostByte();\n oAND(rA, byteAt(addr));\n break;\n case 0xA6: //LDA indexed\n addr = PostByte();\n rA = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xA7: //STA indexed\n addr = PostByte();\n byteTo(addr,rA);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xA8: //EORA indexed\n addr = PostByte();\n rA = oEOR(rA, byteAt(addr));\n break;\n case 0xA9: //ADCA indexed\n addr = PostByte();\n rA = oADC(rA, byteAt(addr));\n break;\n case 0xAA: //ORA indexed\n addr = PostByte();\n rA = oOR(rA, byteAt(addr));\n break;\n case 0xAB: //ADDA indexed\n addr = PostByte();\n rA = oADD(rA, byteAt(addr));\n break;\n case 0xAC: //CMPX indexed\n addr = PostByte();\n oCMP16(rX, ReadWord(addr));\n break;\n\n case 0xAD: //JSR indexed\n addr = PostByte();\n PUSHW(PC);\n PC=addr;\n break;\n case 0xAE: //LDX indexed\n addr = PostByte();\n rX = ReadWord(addr);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0xAF: //STX indexed\n addr = PostByte();\n WriteWord(addr,rX);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0xB0: //SUBA extended\n addr = fetch16();\n rA = oSUB(rA, byteAt(addr));\n break;\n case 0xB1: //CMPA extended\n addr = fetch16();\n oCMP(rA, byteAt(addr));\n break;\n case 0xB2: //SBCA extended\n addr = fetch16();\n rA = oSBC(rA, byteAt(addr));\n break;\n case 0xB3: //SUBD extended\n addr = fetch16();\n setD(oSUB16(getD(),ReadWord(addr)));\n break;\n case 0xB4: //ANDA extended\n addr = fetch16();\n rA = oAND(rA, byteAt(addr));\n break;\n case 0xB5: //BITA extended\n addr = fetch16();\n oAND(rA, byteAt(addr));\n break;\n case 0xB6: //LDA extended\n addr = fetch16();\n rA = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xB7: //STA extended\n addr = fetch16();\n byteTo(addr,rA);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rA];\n break;\n case 0xB8: //EORA extended\n addr = fetch16();\n rA = oEOR(rA, byteAt(addr));\n break;\n case 0xB9: //ADCA extended\n addr = fetch16();\n rA = oADC(rA, byteAt(addr));\n break;\n case 0xBA: //ORA extended\n addr = fetch16();\n rA = oOR(rA, byteAt(addr));\n break;\n case 0xBB: //ADDA extended\n addr = fetch16();\n rA = oADD(rA, byteAt(addr));\n break;\n case 0xBC: //CMPX extended\n addr = fetch16();\n oCMP16(rX, ReadWord(addr));\n break;\n\n case 0xBD: //JSR extended\n addr = fetch16();\n PUSHW(PC);\n PC=addr;\n break;\n case 0xBE: //LDX extended\n addr = fetch16();\n rX = ReadWord(addr);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n case 0xBF: //STX extended\n addr = fetch16();\n WriteWord(addr,rX);\n flagsNZ16(rX);\n CC&=~F_OVERFLOW;\n break;\n\n //Regs B, Y\n\n case 0xC0: //SUBB imm\n rB = oSUB(rB, fetch());\n break;\n case 0xC1: //CMPB imm\n oCMP(rB, fetch());\n break;\n case 0xC2: //SBCB imm\n rB = oSBC(rB, fetch());\n break;\n case 0xC3: //ADDD imm\n setD(oADD16(getD(),fetch16()));\n break;\n case 0xC4: //ANDB imm\n rB = oAND(rB, fetch());\n break;\n case 0xC5: //BITB imm\n oAND(rB, fetch());\n break;\n case 0xC6: //LDB imm\n rB = fetch();\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xC8: //EORB imm\n rB = oEOR(rB, fetch());\n break;\n case 0xC9: //ADCB imm\n rB = oADC(rB, fetch());\n break;\n case 0xCA: //ORB imm\n rB = oOR(rB, fetch());\n break;\n case 0xCB: //ADDB imm\n rB = oADD(rB, fetch());\n break;\n case 0xCC: //LDD imm\n addr = fetch16();\n setD(addr);\n flagsNZ16(addr);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xCE: //LDU imm\n rU = fetch16();\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0xD0: //SUBB direct\n addr = dpadd();\n rB = oSUB(rB, byteAt(addr));\n break;\n case 0xD1: //CMPB direct\n addr = dpadd();\n oCMP(rB, byteAt(addr));\n break;\n case 0xD2: //SBCB direct\n addr = dpadd();\n rB = oSBC(rB, byteAt(addr));\n break;\n case 0xD3: //ADDD direct\n addr = dpadd();\n setD(oADD16(getD(),ReadWord(addr)));\n break;\n case 0xD4: //ANDB direct\n addr = dpadd();\n rB = oAND(rB, byteAt(addr));\n break;\n case 0xD5: //BITB direct\n addr = dpadd();\n oAND(rB, byteAt(addr));\n break;\n case 0xD6: //LDB direct\n addr = dpadd();\n rB = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xD7: //STB direct\n addr = dpadd();\n byteTo(addr,rB);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xD8: //EORB direct\n addr = dpadd();\n rB = oEOR(rB, byteAt(addr));\n break;\n case 0xD9: //ADCB direct\n addr = dpadd();\n rB = oADC(rB, byteAt(addr));\n break;\n case 0xDA: //ORB direct\n addr = dpadd();\n rB = oOR(rB, byteAt(addr));\n break;\n case 0xDB: //ADDB direct\n addr = dpadd();\n rB = oADD(rB, byteAt(addr));\n break;\n case 0xDC: //LDD direct\n addr = dpadd();\n pb = ReadWord(addr);\n setD(pb);\n flagsNZ16(pb);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xDD: //STD direct\n addr = dpadd();\n WriteWord(addr, getD());\n CC&=~F_OVERFLOW;\n break;\n case 0xDE: //LDU direct\n addr = dpadd();\n rU = ReadWord(addr);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xDF: //STU direct\n addr = dpadd();\n WriteWord(addr,rU);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xE0: //SUBB indexed\n addr = PostByte();\n rB = oSUB(rB, byteAt(addr));\n break;\n case 0xE1: //CMPB indexed\n addr = PostByte();\n oCMP(rB, byteAt(addr));\n break;\n case 0xE2: //SBCB indexed\n addr = PostByte();\n rB = oSBC(rB, byteAt(addr));\n break;\n case 0xE3: //ADDD indexed\n addr = PostByte();\n setD(oADD16(getD(),ReadWord(addr)));\n break;\n case 0xE4: //ANDB indexed\n addr = PostByte();\n rB = oAND(rB, byteAt(addr));\n break;\n case 0xE5: //BITB indexed\n addr = PostByte();\n oAND(rB, byteAt(addr));\n break;\n case 0xE6: //LDB indexed\n addr = PostByte();\n rB = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xE7: //STB indexed\n addr = PostByte();\n byteTo(addr,rB);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xE8: //EORB indexed\n addr = PostByte();\n rB = oEOR(rB, byteAt(addr));\n break;\n case 0xE9: //ADCB indexed\n addr = PostByte();\n rB = oADC(rB, byteAt(addr));\n break;\n case 0xEA: //ORB indexed\n addr = PostByte();\n rB = oOR(rB, byteAt(addr));\n break;\n case 0xEB: //ADDB indexed\n addr = PostByte();\n rB = oADD(rB, byteAt(addr));\n break;\n case 0xEC: //LDD indexed\n addr = PostByte();\n pb = ReadWord(addr);\n setD(pb);\n flagsNZ16(pb);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xED: //STD indexed\n addr = PostByte();\n WriteWord(addr, getD());\n CC&=~F_OVERFLOW;\n break;\n case 0xEE: //LDU indexed\n addr = PostByte();\n rU = ReadWord(addr);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xEF: //STU indexed\n addr = PostByte();\n WriteWord(addr,rU);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n\n\n case 0xF0: //SUBB extended\n addr = fetch16();\n rB = oSUB(rB, byteAt(addr));\n break;\n case 0xF1: //CMPB extended\n addr = fetch16();\n oCMP(rB, byteAt(addr));\n break;\n case 0xF2: //SBCB extended\n addr = fetch16();\n rB = oSBC(rB, byteAt(addr));\n break;\n case 0xF3: //ADDD extended\n addr = fetch16();\n setD(oADD16(getD(),ReadWord(addr)));\n break;\n case 0xF4: //ANDB extended\n addr = fetch16();\n rB = oAND(rB, byteAt(addr));\n break;\n case 0xF5: //BITB extended\n addr = fetch16();\n oAND(rB, byteAt(addr));\n break;\n case 0xF6: //LDB extended\n addr = fetch16();\n rB = byteAt(addr);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xF7: //STB extended\n addr = fetch16();\n byteTo(addr,rB);\n CC&=~(F_ZERO|F_NEGATIVE|F_OVERFLOW);\n CC |= flagsNZ[rB];\n break;\n case 0xF8: //EORB extended\n addr = fetch16();\n rB = oEOR(rB, byteAt(addr));\n break;\n case 0xF9: //ADCB extended\n addr = fetch16();\n rB = oADC(rB, byteAt(addr));\n break;\n case 0xFA: //ORB extended\n addr = fetch16();\n rB = oOR(rB, byteAt(addr));\n break;\n case 0xFB: //ADDB extended\n addr = fetch16();\n rB = oADD(rB, byteAt(addr));\n break;\n case 0xFC: //LDD extended\n addr = fetch16();\n pb = ReadWord(addr);\n setD(pb);\n flagsNZ16(pb);\n CC&=~F_OVERFLOW;\n break;\n\n case 0xFD: //STD extended\n addr = fetch16();\n WriteWord(addr, getD());\n CC&=~F_OVERFLOW;\n break;\n case 0xFE: //LDU extended\n addr = fetch16();\n rU = ReadWord(addr);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n case 0xFF: //STU extended\n addr = fetch16();\n WriteWord(addr,rU);\n flagsNZ16(rU);\n CC&=~F_OVERFLOW;\n break;\n\n // page 1\n case 0x10: //page 1\n {\n opcode = fetch();\n T+=cycles2[opcode];\n switch(opcode) {\n case 0x21: //BRN\n addr = signed16(fetch16());\n break;\n case 0x22: //BHI\n addr = signed16(fetch16());\n if (!(CC&(F_CARRY | F_ZERO))) PC += addr;\n break;\n case 0x23: //BLS\n addr = signed16(fetch16());\n if (CC&(F_CARRY | F_ZERO)) PC += addr;\n break;\n case 0x24: //BCC\n addr = signed16(fetch16());\n if (!(CC&F_CARRY)) PC += addr;\n break;\n case 0x25: //BCS\n addr = signed16(fetch16());\n if (CC&F_CARRY) PC += addr;\n break;\n case 0x26: //BNE\n addr = signed16(fetch16());\n if (!(CC&F_ZERO)) PC += addr;\n break;\n case 0x27: //BEQ\n addr = signed16(fetch16());\n if (CC&F_ZERO) PC += addr;\n break;\n case 0x28: //BVC\n addr = signed16(fetch16());\n if (!(CC&F_OVERFLOW)) PC += addr;\n break;\n case 0x29: //BVS\n addr = signed16(fetch16());\n if (CC&F_OVERFLOW) PC += addr;\n break;\n case 0x2A: //BPL\n addr = signed16(fetch16());\n if (!(CC&F_NEGATIVE)) PC += addr;\n break;\n case 0x2B: //BMI\n addr = signed16(fetch16());\n if (CC&F_NEGATIVE) PC += addr;\n break;\n case 0x2C: //BGE\n addr = signed16(fetch16());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2))) PC += addr;\n break;\n case 0x2D: //BLT\n addr = signed16(fetch16());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2)) PC += addr;\n break;\n case 0x2E: //BGT\n addr = signed16(fetch16());\n if (!((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO))) PC += addr;\n break;\n case 0x2F: //BLE\n addr = signed16(fetch16());\n if ((CC&F_NEGATIVE) ^ ((CC&F_OVERFLOW)<<2) || (CC&F_ZERO)) PC += addr;\n break;\n case 0x3f: //SWI2\n CC |= F_ENTIRE;\n PUSHW(PC);\n PUSHW(rU);\n PUSHW(rY);\n PUSHW(rX);\n PUSHB(DP);\n PUSHB(rB);\n PUSHB(rA);\n PUSHB(CC);\n CC |= F_IRQMASK | F_FIRQMASK;\n PC = ReadWord(vecSWI2);\n break;\n case 0x83: //CMPD imm\n oCMP16(getD(),fetch16());\n break;\n case 0x8C: //CMPY imm\n oCMP16(rY,fetch16());\n break;\n case 0x8E: //LDY imm\n rY = fetch16();\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0x93: //CMPD direct\n addr = dpadd();\n oCMP16(getD(),ReadWord(addr));\n break;\n case 0x9C: //CMPY direct\n addr = dpadd();\n oCMP16(rY,ReadWord(addr));\n break;\n case 0x9E: //LDY direct\n addr = dpadd();\n rY = ReadWord(addr);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0x9F: //STY direct\n addr = dpadd();\n WriteWord(addr,rY);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xA3: //CMPD indexed\n addr = PostByte();\n oCMP16(getD(),ReadWord(addr));\n break;\n case 0xAC: //CMPY indexed\n addr = PostByte();\n oCMP16(rY,ReadWord(addr));\n break;\n case 0xAE: //LDY indexed\n addr = PostByte();\n rY = ReadWord(addr);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xAF: //STY indexed\n addr = PostByte();\n WriteWord(addr,rY);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xB3: //CMPD extended\n addr = fetch16();\n oCMP16(getD(),ReadWord(addr));\n break;\n case 0xBC: //CMPY extended\n addr = fetch16();\n oCMP16(rY,ReadWord(addr));\n break;\n case 0xBE: //LDY extended\n addr = fetch16();\n rY = ReadWord(addr);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xBF: //STY extended\n addr = fetch16();\n WriteWord(addr,rY);\n flagsNZ16(rY);\n CC&=~F_OVERFLOW;\n break;\n case 0xCE: //LDS imm\n rS = fetch16();\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xDE: //LDS direct\n addr = dpadd();\n rS = ReadWord(addr);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xDF: //STS direct\n addr = dpadd();\n WriteWord(addr,rS);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xEE: //LDS indexed\n addr = PostByte();\n rS = ReadWord(addr);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xEF: //STS indexed\n addr = PostByte();\n WriteWord(addr,rS);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xFE: //LDS extended\n addr = fetch16();\n rS = ReadWord(addr);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n case 0xFF: //STS extended\n addr = fetch16();\n WriteWord(addr,rS);\n flagsNZ16(rS);\n CC&=~F_OVERFLOW;\n break;\n }\n }\n break;\n // page 2\n case 0x11: //page 2\n {\n opcode = fetch();\n T+=cycles2[opcode];\n switch(opcode) {\n case 0x3f: //SWI3\n CC |= F_ENTIRE;\n PUSHW(PC);\n PUSHW(rU);\n PUSHW(rY);\n PUSHW(rX);\n PUSHB(DP);\n PUSHB(rB);\n PUSHB(rA);\n PUSHB(CC);\n CC |= F_IRQMASK | F_FIRQMASK;\n PC = ReadWord(vecSWI3);\n break;\n case 0x83: //CMPU imm\n oCMP16(rU, fetch16());\n break;\n case 0x8C: //CMPS imm\n oCMP16(rS, fetch16());\n break;\n case 0x93: //CMPU imm\n addr = dpadd();\n oCMP16(rU, ReadWord(addr));\n break;\n case 0x9C: //CMPS imm\n addr = dpadd();\n oCMP16(rS, ReadWord(addr));\n break;\n case 0xA3: //CMPU imm\n addr = PostByte();\n oCMP16(rU, ReadWord(addr));\n break;\n case 0xAC: //CMPS imm\n addr = PostByte();\n oCMP16(rS, ReadWord(addr));\n break;\n case 0xB3: //CMPU imm\n addr = fetch16();\n oCMP16(rU, ReadWord(addr));\n break;\n case 0xBC: //CMPS imm\n addr = fetch16();\n oCMP16(rS, ReadWord(addr));\n break;\n\n }\n }\n break;\n\n\n }\n\n rA &= 0xff;\n rB &= 0xff;\n CC &= 0xff;\n DP &= 0xff;\n rX &= 0xffff;\n rY &= 0xffff;\n rU &= 0xffff;\n rS &= 0xffff;\n PC &= 0xffff;\n return T-oldT;\n\n};\n\nvar reset = function(){\n PC = ReadWord(vecRESET);\n DP = 0;\n CC |= F_FIRQMASK | F_IRQMASK;\n T=0;\n rA=rB=DP=rX=rY=rU=rS=0;\n};\n\n//---------- Disassembler\n\n/*\nILLEGAL 0\nDIRECT 1\nINHERENT 2\nBRANCH_REL_16 3\nIMMEDIAT_8 4\nBRANCH_REL_8 5\nINDEXED 6\nEXTENDED 7\nIMMEDIAT_16 8\n\nPSHS 10\nPSHU 11\n\nEXG, TFR 20\n*/\nvar ds = [\n[2, 1,\"NEG\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[2, 1,\"COM\"],\n[2, 1,\"LSR\"],\n[1, 0,\"???\"],\n[2, 1,\"ROR\"],\n[2, 1,\"ASR\"],\n[2, 1,\"LSL\"],\n[2, 1,\"ROL\"],\n[2, 1,\"DEC\"],\n[1, 0,\"???\"],\n[2, 1,\"INC\"],\n[2, 1,\"TST\"],\n[2, 1,\"JMP\"],\n[2, 1,\"CLR\"],\n[1, 0,\"Prefix\"],\n[1, 0,\"Prefix\"],\n[1, 2,\"NOP\"],\n[1, 2,\"SYNC\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[3, 3,\"LBRA\"],\n[3, 3,\"LBSR\"],\n[1, 0,\"???\"],\n[1, 2,\"DAA\"],\n[2, 4,\"ORCC\"],\n[1, 0,\"???\"],\n[2, 4,\"ANDCC\"],\n[1, 2,\"SEX\"],\n[2, 20,\"EXG\"],\n[2, 20,\"TFR\"],\n[2, 5,\"BRA\"],\n[2, 5,\"BRN\"],\n[2, 5,\"BHI\"],\n[2, 5,\"BLS\"],\n[2, 5,\"BCC\"],\n[2, 5,\"BCS\"],\n[2, 5,\"BNE\"],\n[2, 5,\"BEQ\"],\n[2, 5,\"BVC\"],\n[2, 5,\"BVS\"],\n[2, 5,\"BPL\"],\n[2, 5,\"BMI\"],\n[2, 5,\"BGE\"],\n[2, 5,\"BLT\"],\n[2, 5,\"BGT\"],\n[2, 5,\"BLE\"],\n[2, 6,\"LEAX\"],\n[2, 6,\"LEAY\"],\n[2, 6,\"LEAS\"],\n[2, 6,\"LEAU\"],\n[2, 10,\"PSHS\"],\n[2, 10,\"PULS\"],\n[2, 11,\"PSHU\"],\n[2, 11,\"PULU\"],\n[1, 0,\"???\"],\n[1, 2,\"RTS\"],\n[1, 2,\"ABX\"],\n[1, 2,\"RTI\"],\n[2, 2,\"CWAI\"],\n[1, 2,\"MUL\"],\n[1, 2,\"RESET\"],\n[1, 2,\"SWI1\"],\n[1, 2,\"NEGA\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[1, 2,\"COMA\"],\n[1, 2,\"LSRA\"],\n[1, 0,\"???\"],\n[1, 2,\"RORA\"],\n[1, 2,\"ASRA\"],\n[1, 2,\"ASLA\"],\n[1, 2,\"ROLA\"],\n[1, 2,\"DECA\"],\n[1, 0,\"???\"],\n[1, 2,\"INCA\"],\n[1, 2,\"TSTA\"],\n[1, 0,\"???\"],\n[1, 2,\"CLRA\"],\n[1, 2,\"NEGB\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[1, 2,\"COMB\"],\n[1, 2,\"LSRB\"],\n[1, 0,\"???\"],\n[1, 2,\"RORB\"],\n[1, 2,\"ASRB\"],\n[1, 2,\"ASLB\"],\n[1, 2,\"ROLB\"],\n[1, 2,\"DECB\"],\n[1, 0,\"???\"],\n[1, 2,\"INCB\"],\n[1, 2,\"TSTB\"],\n[1, 0,\"???\"],\n[1, 2,\"CLRB\"],\n[2, 6,\"NEG\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[2, 6,\"COM\"],\n[2, 6,\"LSR\"],\n[1, 0,\"???\"],\n[2, 6,\"ROR\"],\n[2, 6,\"ASR\"],\n[2, 6,\"LSL\"],\n[2, 6,\"ROL\"],\n[2, 6,\"DEC\"],\n[1, 0,\"???\"],\n[2, 6,\"INC\"],\n[2, 6,\"TST\"],\n[2, 6,\"JMP\"],\n[2, 6,\"CLR\"],\n[3, 7,\"NEG\"],\n[1, 0,\"???\"],\n[1, 0,\"???\"],\n[3, 7,\"COM\"],\n[3, 7,\"LSR\"],\n[1, 0,\"???\"],\n[3, 7,\"ROR\"],\n[3, 7,\"ASR\"],\n[3, 7,\"LSL\"],\n[3, 7,\"ROL\"],\n[3, 7,\"DEC\"],\n[1, 0,\"???\"],\n[3, 7,\"INC\"],\n[3, 7,\"TST\"],\n[3, 7,\"JMP\"],\n[3, 7,\"CLR\"],\n[2, 4,\"SUBA\"],\n[2, 4,\"CMPA\"],\n[2, 4,\"SBCA\"],\n[3, 8,\"SUBD\"],\n[2, 4,\"ANDA\"],\n[2, 4,\"BITA\"],\n[2, 4,\"LDA\"],\n[1, 0,\"???\"],\n[2, 4,\"EORA\"],\n[2, 4,\"ADCA\"],\n[2, 4,\"ORA\"],\n[2, 4,\"ADDA\"],\n[3, 8,\"CMPX\"],\n[2, 5,\"BSR\"],\n[3, 8,\"LDX\"],\n[1, 0,\"???\"],\n[2, 1,\"SUBA\"],\n[2, 1,\"CMPA\"],\n[2, 1,\"SBCA\"],\n[2, 1,\"SUBd\"],\n[2, 1,\"ANDA\"],\n[2, 1,\"BITA\"],\n[2, 1,\"LDA\"],\n[2, 1,\"STA\"],\n[2, 1,\"EORA\"],\n[2, 1,\"ADCA\"],\n[2, 1,\"ORA\"],\n[2, 1,\"ADDA\"],\n[2, 1,\"CMPX\"],\n[2, 1,\"JSR\"],\n[2, 1,\"LDX\"],\n[2, 1,\"STX\"],\n[2, 6,\"SUBA\"],\n[2, 6,\"CMPA\"],\n[2, 6,\"SBCA\"],\n[2, 6,\"SUBD\"],\n[2, 6,\"ANDA\"],\n[2, 6,\"BITA\"],\n[2, 6,\"LDA\"],\n[2, 6,\"STA\"],\n[2, 6,\"EORA\"],\n[2, 6,\"ADCA\"],\n[2, 6,\"ORA\"],\n[2, 6,\"ADDA\"],\n[2, 6,\"CMPX\"],\n[2, 6,\"JSR\"],\n[2, 6,\"LDX\"],\n[2, 6,\"STX\"],\n[3, 7,\"SUBA\"],\n[3, 7,\"CMPA\"],\n[3, 7,\"SBCA\"],\n[3, 7,\"SUBD\"],\n[3, 7,\"ANDA\"],\n[3, 7,\"BITA\"],\n[3, 7,\"LDA\"],\n[3, 7,\"STA\"],\n[3, 7,\"EORA\"],\n[3, 7,\"ADCA\"],\n[3, 7,\"ORA\"],\n[3, 7,\"ADDA\"],\n[3, 7,\"CMPX\"],\n[3, 7,\"JSR\"],\n[3, 7,\"LDX\"],\n[3, 7,\"STX\"],\n[2, 4,\"SUBB\"],\n[2, 4,\"CMPB\"],\n[2, 4,\"SBCB\"],\n[3, 8,\"ADDD\"],\n[2, 4,\"ANDB\"],\n[2, 4,\"BITB\"],\n[2, 4,\"LDB\"],\n[1, 0,\"???\"],\n[2, 4,\"EORB\"],\n[2, 4,\"ADCB\"],\n[2, 4,\"ORB\"],\n[2, 4,\"ADDB\"],\n[3, 8,\"LDD\"],\n[1, 0,\"???\"],\n[3, 8,\"LDU\"],\n[1, 0,\"???\"],\n[2, 1,\"SUBB\"],\n[2, 1,\"CMPB\"],\n[2, 1,\"SBCB\"],\n[2, 1,\"ADDD\"],\n[2, 1,\"ANDB\"],\n[2, 1,\"BITB\"],\n[2, 1,\"LDB\"],\n[2, 1,\"STB\"],\n[2, 1,\"EORB\"],\n[2, 1,\"ADCB\"],\n[2, 1,\"ORB \"],\n[2, 1,\"ADDB\"],\n[2, 1,\"LDD \"],\n[2, 1,\"STD \"],\n[2, 1,\"LDU \"],\n[2, 1,\"STU \"],\n[2, 6,\"SUBB\"],\n[2, 6,\"CMPB\"],\n[2, 6,\"SBCB\"],\n[2, 6,\"ADDD\"],\n[2, 6,\"ANDB\"],\n[2, 6,\"BITB\"],\n[2, 6,\"LDB\"],\n[2, 6,\"STB\"],\n[2, 6,\"EORB\"],\n[2, 6,\"ADCB\"],\n[2, 6,\"ORB\"],\n[2, 6,\"ADDB\"],\n[2, 6,\"LDD\"],\n[2, 6,\"STD\"],\n[2, 6,\"LDU\"],\n[2, 6,\"STU\"],\n[3, 7,\"SUBB\"],\n[3, 7,\"CMPB\"],\n[3, 7,\"SBCB\"],\n[3, 7,\"ADDD\"],\n[3, 7,\"ANDB\"],\n[3, 7,\"BITB\"],\n[3, 7,\"LDB\"],\n[3, 7,\"STB\"],\n[3, 7,\"EORB\"],\n[3, 7,\"ADCB\"],\n[3, 7,\"ORB\"],\n[3, 7,\"ADDB\"],\n[3, 7,\"LDD\"],\n[3, 7,\"STD\"],\n[3, 7,\"LDU\"],\n[3, 7,\"STU\"]\n];\n\nvar ds11 = {\n0x3F: [2,2,\"SWI3\"],\n0x83: [4,8,\"CMPU\"],\n0x8C: [4,8,\"CMPS\"],\n0x93: [3,1,\"CMPU\"],\n0x9C: [3,1,\"CMPS\"],\n0xA3: [3,6,\"CMPU\"],\n0xAC: [3,6,\"CMPS\"],\n0xB3: [4,7,\"CMPU\"],\n0xBC: [4,7,\"CMPS\"]\n};\n\nvar ds10 = {\n0x21:[5,3,\"LBRN\"],\n0x22:[5,3,\"LBHI\"],\n0x23:[5,3,\"LBLS\"],\n0x24:[5,3,\"LBCC\"],\n0x25:[5,3,\"LBCS\"],\n0x26:[5,3,\"LBNE\"],\n0x27:[5,3,\"LBEQ\"],\n0x28:[5,3,\"LBVC\"],\n0x29:[5,3,\"LBVS\"],\n0x2a:[5,3,\"LBPL\"],\n0x2b:[5,3,\"LBMI\"],\n0x2c:[5,3,\"LBGE\"],\n0x2d:[5,3,\"LBLT\"],\n0x2e:[5,3,\"LBGT\"],\n0x2f:[5,3,\"LBLE\"],\n0x3F:[2,2,\"SWI2\"],\n0x83:[4,8,\"CMPD\"],\n0x8C:[4,8,\"CMPY\"],\n0x8E:[4,8,\"LDY\"],\n0x93:[3,1,\"CMPD\"],\n0x9C:[3,1,\"CMPY\"],\n0x9E:[3,1,\"LDY\"],\n0x9F:[3,1,\"STY\"],\n0xA3:[3,6,\"CMPD\"],\n0xAC:[3,6,\"CMPY\"],\n0xAE:[3,6,\"LDY\"],\n0xAF:[3,6,\"STY\"],\n0xB3:[4,7,\"CMPD\"],\n0xBC:[4,7,\"CMPY\"],\n0xBE:[4,7,\"LDY\"],\n0xBF:[4,7,\"STY\"],\n0xCE:[4,8,\"LDS\"],\n0xDE:[3,1,\"LDS\"],\n0xDF:[3,1,\"STS\"],\n0xEE:[3,6,\"LDS\"],\n0xEF:[3,6,\"STS\"],\n0xFE:[4,7,\"LDS\"],\n0xFF:[4,7,\"STS\"]\n};\n/*\nILLEGAL 0\nDIRECT 1\nINHERENT 2\nBRANCH_REL_16 3\nIMMEDIAT_8 4\nBRANCH_REL_8 5\nINDEXED 6\nEXTENDED 7\nIMMEDIAT_16 8\n*/\n\nvar disasm = function(i,a,b,c,d,pc) {\n var toHexN = function(n,d) {\n var s = n.toString(16);\n while (s.length >5];\n if (!(pb & 0x80)) {\n //direct5\n var disp = pb & 0x1f;\n if (disp>15) disp = disp-32;\n mnemo+=disp+','+ixr;\n break;\n }\n var ind = pb & 0x10;\n var mod = pb & 0x0f;\n var ofs8 = (b>127)?(b-256):b;\n var ofs16 = ((b*256+c)>32767)?((b*256+c)-65536):(b*256+c);\n if (!ind) {\n switch (mod) {\n case 0: mnemo += \",\"+ixr+'+'; break;\n case 1: mnemo += \",\"+ixr+'++'; break;\n case 2: mnemo += \",-\"+ixr; break;\n case 3: mnemo += \",--\"+ixr; break;\n case 4: mnemo += \",\"+ixr; break;\n case 5: mnemo += \"B,\"+ixr; break;\n case 6: mnemo += \"A,\"+ixr; break;\n case 7: mnemo += \"???\"; break;\n case 8: mnemo += ofs8+\",\"+ixr; bytes++; break;\n case 9: mnemo += ofs16+\",\"+ixr; bytes+=2; break;\n case 10: mnemo += \"???\"; break;\n case 11: mnemo += \"D,\"+ixr; break;\n case 12: mnemo += ofs8+\",PC\"; bytes++; break;\n case 13: mnemo += ofs16+\",PC\"; bytes+=2; break;\n case 14: mnemo += \"???\"; break;\n case 15: mnemo += \"$\"+toHex4((b*256+c)); bytes+=2; break;\n }\n } else {\n switch (mod) {\n case 0: mnemo += \"???\"; break;\n case 1: mnemo += \"[,\"+ixr+'++]'; break;\n case 2: mnemo += \"???\"; break;\n case 3: mnemo += \"[,--\"+ixr+']'; break;\n case 4: mnemo += \"[,\"+ixr+']'; break;\n case 5: mnemo += \"[B,\"+ixr+']'; break;\n case 6: mnemo += \"[A,\"+ixr+']'; break;\n case 7: mnemo += \"???\"; break;\n case 8: mnemo += \"[\"+ofs8+\",\"+ixr+']'; bytes++; break;\n case 9: mnemo += \"[\"+ofs16+\",\"+ixr+']'; bytes+=2; break;\n case 10: mnemo += \"???\"; break;\n case 11: mnemo += \"[D,\"+ixr+']'; break;\n case 12: mnemo += \"[\"+ofs8+\",PC]\"; bytes++; break;\n case 13: mnemo += \"[\"+ofs16+\",PC]\"; bytes+=2; break;\n case 14: mnemo += \"???\"; break;\n case 15: mnemo += \"[$\"+toHex4((b*256+c))+']'; bytes+=2; break;\n }\n }\n\n break;\n case 7: //extended\n mnemo+=\"\\t$\"+toHex4(a*256+b); break;\n case 8: //imm16\n mnemo+=\"\\t#$\"+toHex4(a*256+b); break;\n\n case 10: //pshs, puls\n rx = ['PC','U','Y','X','DP','B','A','CC'];\n ro = [];\n for (j=0;j<8;j++) {\n if ((a & 1)!==0) {ro.push(rx[7-j]);}\n a>>=1;\n }\n mnemo += '\\t'+ro.join(',');\n break;\n case 11: //pshs, puls\n rx = ['PC','S','Y','X','DP','B','A','CC'];\n ro = [];\n for (j=0;j<8;j++) {\n if ((a & 1)!==0) {ro.push(rx[7-j]);}\n a>>=1;\n }\n mnemo += '\\t'+ro.join(',');\n break;\n case 20: //TFR etc\n rx = ['D','X','Y','U','S','PC','?','?','A','B','CC','DP','?','?','?','?'];\n mnemo += '\\t'+rx[a>>4]+','+rx[a&0x0f];\n break;\n }\n\n return {line:mnemo,nbytes:bytes};\n };\n\n\n//---------- Exports\n\nreturn {\n steps: function(Ts){\n //T=0;\n while (Ts>0){\n Ts-=step();\n }\n },\n runFrame: function(Tt){\n while (T>i);\n if (n===0) {f+=fx[i].toLowerCase();} else {f+=fx[i];}\n }\n return f;\n },\n disasm: disasm,\n isStable: function() { return true; }\n};\n\n};\n", "\nimport { CPU, Bus, ClockBased, SavesState, Interruptable } from \"../devices\";\nimport { EmuHalt } from \"../emu\";\nimport { hex } from \"../util\";\n\n// Copyright 2015 by Paulo Augusto Peccin. See license.txt distributed with this file.\n\nexport var _MOS6502 = function() {\n var self = this;\n\n this.powerOn = function() {\n this.reset();\n };\n\n this.powerOff = function() {\n };\n\n this.clockPulse = function() {\n if (!RDY) return; // TODO Should be ignored in the last cycle of the instruction\n T++;\n instruction[T]();\n };\n\n this.connectBus = function(aBus) {\n bus = aBus;\n };\n\n this.setRDY = function(boo) {\n RDY = boo;\n };\n\n this.isRDY = function() {\n return RDY;\n }\n\n this.reset = function() {\n I = 1;\n T = -1;\n instruction = [ fetchOpcodeAndDecodeInstruction ]; // Bootstrap instruction\n PC = bus.read(RESET_VECTOR) | (bus.read(RESET_VECTOR + 1) << 8);\n this.setRDY(true);\n };\n\n // Interfaces\n var bus : Bus;\n var RDY : boolean = false;\n\n // Registers\n var PC : number = 0;\n var SP : number = 0;\n var A : number = 0;\n var X : number = 0;\n var Y : number = 0;\n\n // Status Bits\n var N : number = 0;\n var V : number = 0;\n var D : number = 0;\n var I : number = 0;\n var Z : number = 0;\n var C : number = 0;\n\n // Internal decoding registers\n var T : number = -1;\n var opcode : number = -1;\n var instruction : (() => void)[];\n var data : number = 0;\n var AD : number = 0;\n var BA : number = 0;\n var BALCrossed : boolean = false;\n var IA : number = 0;\n var branchOffset : number = 0;\n var branchOffsetCrossAdjust : number = 0;\n\n // Vectors\n const NMI_VECTOR = 0xfffa;\n const RESET_VECTOR = 0xfffc;\n const IRQ_VECTOR = 0xfffe;\n\n // Index registers names\n const rX = 0;\n const rY = 1;\n\n // Status bits names\n const bN = 7;\n const bV = 6;\n // const bE = 5;\t// Not used\n // const bB = 4;\t// Not used\n // const bD = 3; // Not used\n // const bI = 2; // Not used\n const bZ = 1;\n const bC = 0;\n\n // Auxiliary variables\n // TODO\n //noinspection JSUnusedGlobalSymbols\n this.debug = false;\n //noinspection JSUnusedGlobalSymbols\n this.trace = false;\n\n\n // Internal operations\n\n var fetchOpcodeAndDecodeInstruction = function() {\n opcode = bus.read(PC);\n instruction = instructions[opcode];\n T = 0;\n\n // if (self.trace) self.breakpoint(\"TRACE\");\n // console.log(\"PC: \" + PC + \", op: \" + opcode + \": \" + opcodes[opcode]);\n\n PC++;\n };\n\n var fetchNextOpcode = fetchOpcodeAndDecodeInstruction;\n\n var fetchOpcodeAndDiscard = function() {\n bus.read(PC);\n };\n\n var fetchBranchOffset = function() {\n branchOffset = bus.read(PC);\n PC++;\n };\n\n var fetchADL = function() {\n AD = bus.read(PC);\n PC++;\n };\n\n var fetchADH = function() {\n AD |= bus.read(PC) << 8;\n PC++;\n };\n\n var fetchADLFromBA = function() {\n AD = bus.read(BA);\n };\n\n var fetchADHFromBA = function() {\n AD |= bus.read(BA) << 8;\n };\n\n var fetchBAL = function() {\n BA = bus.read(PC);\n PC++;\n };\n\n var fetchBAH = function() {\n BA |= bus.read(PC) << 8;\n PC++;\n };\n\n var fetchBALFromIA = function() {\n BA = bus.read(IA);\n };\n\n var fetchBAHFromIA = function() {\n BA |= bus.read(IA) << 8;\n };\n\n var addXtoBAL = function() {\n var low = (BA & 255) + X;\n BALCrossed = low > 255;\n BA = (BA & 0xff00) | (low & 255);\n };\n\n var addYtoBAL = function() {\n var low = (BA & 255) + Y;\n BALCrossed = low > 255;\n BA = (BA & 0xff00) | (low & 255);\n };\n\n var add1toBAL = function() {\n var low = (BA & 255) + 1;\n BALCrossed = low > 255;\n BA = (BA & 0xff00) | (low & 255);\n };\n\n var add1toBAHifBALCrossed = function() {\n if (BALCrossed)\n BA = (BA + 0x0100) & 0xffff;\n };\n\n var fetchIAL = function() {\n IA = bus.read(PC);\n PC++;\n };\n\n var fetchIAH = function() {\n IA |= bus.read(PC) << 8;\n PC++;\n };\n\n var add1toIAL = function() {\n var low = (IA & 255) + 1;\n IA = (IA & 0xff00) | (low & 255);\n };\n\n var fetchDataFromImmediate = function() {\n data = bus.read(PC);\n PC++;\n };\n\n var fetchDataFromAD = function() {\n data = bus.read(AD);\n };\n\n var fetchDataFromBA = function() {\n data = bus.read(BA);\n };\n\n var writeDataToAD = function() {\n bus.write(AD, data);\n };\n\n var writeDataToBA = function() {\n bus.write(BA, data);\n };\n\n var addBranchOffsetToPCL = function() {\n var oldLow = (PC & 0x00ff);\n var newLow = (oldLow + branchOffset) & 255;\n // Negative offset?\n if (branchOffset > 127)\n branchOffsetCrossAdjust = (newLow > oldLow) ? -0x0100 : 0;\n else\n branchOffsetCrossAdjust = (newLow < oldLow) ? 0x0100 : 0;\n PC = (PC & 0xff00) | newLow;\n };\n\n var adjustPCHForBranchOffsetCross = function() {\n PC = (PC + branchOffsetCrossAdjust) & 0xffff;\n };\n\n var setZ = function(val) {\n Z = (val === 0) ? 1 : 0;\n };\n\n var setN = function(val) {\n N = (val & 0x080) ? 1 : 0;\n };\n\n var setV = function(boo) {\n V = boo ? 1 : 0;\n };\n\n var setC = function(boo) {\n C = boo ? 1 : 0;\n };\n\n var popFromStack = function() {\n SP = (SP + 1) & 255;\n return bus.read(0x0100 + SP);\n };\n\n var peekFromStack = function() {\n return bus.read(0x0100 + SP);\n };\n\n var pushToStack = function(val) {\n bus.write(0x0100 + SP, val);\n SP = (SP - 1) & 255;\n };\n\n var getStatusBits = function() {\n return N << 7 | V << 6 | 0x30 // Always push with E (bit 5) and B (bit 4) ON\n | D << 3 | I << 2 | Z << 1 | C;\n };\n\n var setStatusBits = function(val) {\n N = val >>> 7; V = val >>> 6 & 1; // E and B flags actually do not exist as real flags, so ignore\n D = val >>> 3 & 1; I = val >>> 2 & 1; Z = val >>> 1 & 1; C = val & 1;\n };\n\n var illegalOpcode = function(op) {\n if (self.debug) self.breakpoint(\"Illegal Opcode: \" + op);\n };\n\n var haltOpcode = function() {\n illegalOpcode(\"KIL/HLT/JAM\");\n // PC has already advanced past the opcode, so the halt is at PC-1\n const addr = (PC - 1) & 0xffff;\n throw new EmuHalt(`CPU executed halt instruction ($${hex(opcode,2)}) at $${hex(addr,4)}`);\n }\n\n\n // Addressing routines\n\n var implied = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var immediateRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var zeroPageRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL, // ADH will be zero\n fetchDataFromAD,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var absoluteRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n fetchDataFromAD,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var indirectXRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addXtoBAL();\n fetchADLFromBA();\n },\n function() {\n add1toBAL();\n fetchADHFromBA();\n },\n fetchDataFromAD,\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var absoluteIndexedRead = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL,\n fetchBAH,\n function() {\n addIndex();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n if (BALCrossed) {\n fetchDataFromBA();\n } else {\n operation();\n fetchNextOpcode();\n }\n },\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n };\n\n var zeroPageIndexedRead = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addIndex();\n fetchDataFromBA();\n },\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n };\n\n var indirectYRead = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() {\n addYtoBAL();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n if(BALCrossed) {\n fetchDataFromBA();\n } else {\n operation();\n fetchNextOpcode();\n }\n },\n function() {\n operation();\n fetchNextOpcode();\n }\n ];\n };\n\n var zeroPageWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL, // ADH will be zero\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var absoluteWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var indirectXWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addXtoBAL();\n fetchADLFromBA();\n },\n function() {\n add1toBAL();\n fetchADHFromBA();\n },\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var absoluteIndexedWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL,\n fetchBAH,\n function() {\n addIndex();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var zeroPageIndexedWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addIndex();\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var indirectYWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() {\n addYtoBAL();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n function() {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n\n\n var zeroPageReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL, // ADH will be zero\n fetchDataFromAD,\n writeDataToAD,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var absoluteReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n fetchDataFromAD,\n writeDataToAD,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var zeroPageIndexedReadModifyWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function () {\n addIndex();\n fetchDataFromBA();\n },\n writeDataToBA,\n function () {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var absoluteIndexedReadModifyWrite = function(index) {\n var addIndex = index === rX ? addXtoBAL : addYtoBAL;\n return function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL,\n fetchBAH,\n function () {\n addIndex();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n fetchDataFromBA,\n writeDataToBA,\n function () {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n };\n\n var indirectXReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBAL, // BAH will be zero\n fetchDataFromBA,\n function() {\n addXtoBAL();\n fetchADLFromBA();\n },\n function() {\n add1toBAL();\n fetchADHFromBA();\n },\n fetchDataFromAD,\n writeDataToAD,\n function() {\n operation();\n writeDataToAD();\n },\n fetchNextOpcode\n ];\n };\n\n var indirectYReadModifyWrite = function(operation) {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() {\n addYtoBAL();\n fetchDataFromBA();\n add1toBAHifBALCrossed();\n },\n fetchDataFromBA,\n writeDataToBA,\n function() {\n operation();\n writeDataToBA();\n },\n fetchNextOpcode\n ];\n };\n\n\n // Instructions ========================================================================================\n\n // Complete instruction set\n var opcodes = new Array(256);\n var instructions = new Array(256);\n\n opcodes[0x00] = \"BRK\"; instructions[0x00] = BRK();\n opcodes[0x01] = \"ORA\"; instructions[0x01] = ORA(indirectXRead);\n opcodes[0x02] = \"uKIL\"; instructions[0x02] = uKIL();\n opcodes[0x03] = \"uSLO\"; instructions[0x03] = uSLO(indirectXReadModifyWrite);\n opcodes[0x04] = \"uNOP\"; instructions[0x04] = uNOP(zeroPageRead);\n opcodes[0x05] = \"ORA\"; instructions[0x05] = ORA(zeroPageRead);\n opcodes[0x06] = \"ASL\"; instructions[0x06] = ASL(zeroPageReadModifyWrite);\n opcodes[0x07] = \"uSLO\"; instructions[0x07] = uSLO(zeroPageReadModifyWrite);\n opcodes[0x08] = \"PHP\"; instructions[0x08] = PHP();\n opcodes[0x09] = \"ORA\"; instructions[0x09] = ORA(immediateRead);\n opcodes[0x0a] = \"ASL\"; instructions[0x0a] = ASL_ACC();\n opcodes[0x0b] = \"uANC\"; instructions[0x0b] = uANC(immediateRead);\n opcodes[0x0c] = \"uNOP\"; instructions[0x0c] = uNOP(absoluteRead);\n opcodes[0x0d] = \"ORA\"; instructions[0x0d] = ORA(absoluteRead);\n opcodes[0x0e] = \"ASL\"; instructions[0x0e] = ASL(absoluteReadModifyWrite);\n opcodes[0x0f] = \"uSLO\"; instructions[0x0f] = uSLO(absoluteReadModifyWrite);\n opcodes[0x10] = \"BPL\"; instructions[0x10] = Bxx(bN, 0); // BPL\n opcodes[0x11] = \"ORA\"; instructions[0x11] = ORA(indirectYRead);\n opcodes[0x12] = \"uKIL\"; instructions[0x12] = uKIL();\n opcodes[0x13] = \"uSLO\"; instructions[0x13] = uSLO(indirectYReadModifyWrite);\n opcodes[0x14] = \"uNOP\"; instructions[0x14] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x15] = \"ORA\"; instructions[0x15] = ORA(zeroPageIndexedRead(rX));\n opcodes[0x16] = \"ASL\"; instructions[0x16] = ASL(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x17] = \"uSLO\"; instructions[0x17] = uSLO(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x18] = \"CLC\"; instructions[0x18] = CLC();\n opcodes[0x19] = \"ORA\"; instructions[0x19] = ORA(absoluteIndexedRead(rY));\n opcodes[0x1a] = \"uNOP\"; instructions[0x1a] = uNOP(implied);\n opcodes[0x1b] = \"uSLO\"; instructions[0x1b] = uSLO(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x1c] = \"uNOP\"; instructions[0x1c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x1d] = \"ORA\"; instructions[0x1d] = ORA(absoluteIndexedRead(rX));\n opcodes[0x1e] = \"ASL\"; instructions[0x1e] = ASL(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x1f] = \"uSLO\"; instructions[0x1f] = uSLO(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x20] = \"JSR\"; instructions[0x20] = JSR();\n opcodes[0x21] = \"AND\"; instructions[0x21] = AND(indirectXRead);\n opcodes[0x22] = \"uKIL\"; instructions[0x22] = uKIL();\n opcodes[0x23] = \"uRLA\"; instructions[0x23] = uRLA(indirectXReadModifyWrite);\n opcodes[0x24] = \"BIT\"; instructions[0x24] = BIT(zeroPageRead);\n opcodes[0x25] = \"AND\"; instructions[0x25] = AND(zeroPageRead);\n opcodes[0x26] = \"ROL\"; instructions[0x26] = ROL(zeroPageReadModifyWrite);\n opcodes[0x27] = \"uRLA\"; instructions[0x27] = uRLA(zeroPageReadModifyWrite);\n opcodes[0x28] = \"PLP\"; instructions[0x28] = PLP();\n opcodes[0x29] = \"AND\"; instructions[0x29] = AND(immediateRead);\n opcodes[0x2a] = \"ROL\"; instructions[0x2a] = ROL_ACC();\n opcodes[0x2b] = \"uANC\"; instructions[0x2b] = uANC(immediateRead);\n opcodes[0x2c] = \"BIT\"; instructions[0x2c] = BIT(absoluteRead);\n opcodes[0x2d] = \"AND\"; instructions[0x2d] = AND(absoluteRead);\n opcodes[0x2e] = \"ROL\"; instructions[0x2e] = ROL(absoluteReadModifyWrite);\n opcodes[0x2f] = \"uRLA\"; instructions[0x2f] = uRLA(absoluteReadModifyWrite);\n opcodes[0x30] = \"BMI\"; instructions[0x30] = Bxx(bN, 1); // BMI\n opcodes[0x31] = \"AND\"; instructions[0x31] = AND(indirectYRead);\n opcodes[0x32] = \"uKIL\"; instructions[0x32] = uKIL();\n opcodes[0x33] = \"uRLA\"; instructions[0x33] = uRLA(indirectYReadModifyWrite);\n opcodes[0x34] = \"uNOP\"; instructions[0x34] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x35] = \"AND\"; instructions[0x35] = AND(zeroPageIndexedRead(rX));\n opcodes[0x36] = \"ROL\"; instructions[0x36] = ROL(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x37] = \"uRLA\"; instructions[0x37] = uRLA(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x38] = \"SEC\"; instructions[0x38] = SEC();\n opcodes[0x39] = \"AND\"; instructions[0x39] = AND(absoluteIndexedRead(rY));\n opcodes[0x3a] = \"uNOP\"; instructions[0x3a] = uNOP(implied);\n opcodes[0x3b] = \"uRLA\"; instructions[0x3b] = uRLA(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x3c] = \"uNOP\"; instructions[0x3c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x3d] = \"AND\"; instructions[0x3d] = AND(absoluteIndexedRead(rX));\n opcodes[0x3e] = \"ROL\"; instructions[0x3e] = ROL(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x3f] = \"uRLA\"; instructions[0x3f] = uRLA(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x40] = \"RTI\"; instructions[0x40] = RTI();\n opcodes[0x41] = \"EOR\"; instructions[0x41] = EOR(indirectXRead);\n opcodes[0x42] = \"uKIL\"; instructions[0x42] = uKIL();\n opcodes[0x43] = \"uSRE\"; instructions[0x43] = uSRE(indirectXReadModifyWrite);\n opcodes[0x44] = \"uNOP\"; instructions[0x44] = uNOP(zeroPageRead);\n opcodes[0x45] = \"EOR\"; instructions[0x45] = EOR(zeroPageRead);\n opcodes[0x46] = \"LSR\"; instructions[0x46] = LSR(zeroPageReadModifyWrite);\n opcodes[0x47] = \"uSRE\"; instructions[0x47] = uSRE(zeroPageReadModifyWrite);\n opcodes[0x48] = \"PHA\"; instructions[0x48] = PHA();\n opcodes[0x49] = \"EOR\"; instructions[0x49] = EOR(immediateRead);\n opcodes[0x4a] = \"LSR\"; instructions[0x4a] = LSR_ACC();\n opcodes[0x4b] = \"uASR\"; instructions[0x4b] = uASR(immediateRead);\n opcodes[0x4c] = \"JMP\"; instructions[0x4c] = JMP_ABS();\n opcodes[0x4d] = \"EOR\"; instructions[0x4d] = EOR(absoluteRead);\n opcodes[0x4e] = \"LSR\"; instructions[0x4e] = LSR(absoluteReadModifyWrite);\n opcodes[0x4f] = \"uSRE\"; instructions[0x4f] = uSRE(absoluteReadModifyWrite);\n opcodes[0x50] = \"BVC\"; instructions[0x50] = Bxx(bV, 0); // BVC\n opcodes[0x51] = \"EOR\"; instructions[0x51] = EOR(indirectYRead);\n opcodes[0x52] = \"uKIL\"; instructions[0x52] = uKIL();\n opcodes[0x53] = \"uSRE\"; instructions[0x53] = uSRE(indirectYReadModifyWrite);\n opcodes[0x54] = \"uNOP\"; instructions[0x54] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x55] = \"EOR\"; instructions[0x55] = EOR(zeroPageIndexedRead(rX));\n opcodes[0x56] = \"LSR\"; instructions[0x56] = LSR(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x57] = \"uSRE\"; instructions[0x57] = uSRE(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x58] = \"CLI\"; instructions[0x58] = CLI();\n opcodes[0x59] = \"EOR\"; instructions[0x59] = EOR(absoluteIndexedRead(rY));\n opcodes[0x5a] = \"uNOP\"; instructions[0x5a] = uNOP(implied);\n opcodes[0x5b] = \"uSRE\"; instructions[0x5b] = uSRE(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x5c] = \"uNOP\"; instructions[0x5c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x5d] = \"EOR\"; instructions[0x5d] = EOR(absoluteIndexedRead(rX));\n opcodes[0x5e] = \"LSR\"; instructions[0x5e] = LSR(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x5f] = \"uSRE\"; instructions[0x5f] = uSRE(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x60] = \"RTS\"; instructions[0x60] = RTS();\n opcodes[0x61] = \"ADC\"; instructions[0x61] = ADC(indirectXRead);\n opcodes[0x62] = \"uKIL\"; instructions[0x62] = uKIL();\n opcodes[0x63] = \"uRRA\"; instructions[0x63] = uRRA(indirectXReadModifyWrite);\n opcodes[0x64] = \"uNOP\"; instructions[0x64] = uNOP(zeroPageRead);\n opcodes[0x65] = \"ADC\"; instructions[0x65] = ADC(zeroPageRead);\n opcodes[0x66] = \"ROR\"; instructions[0x66] = ROR(zeroPageReadModifyWrite);\n opcodes[0x67] = \"uRRA\"; instructions[0x67] = uRRA(zeroPageReadModifyWrite);\n opcodes[0x68] = \"PLA\"; instructions[0x68] = PLA();\n opcodes[0x69] = \"ADC\"; instructions[0x69] = ADC(immediateRead);\n opcodes[0x6a] = \"ROR\"; instructions[0x6a] = ROR_ACC();\n opcodes[0x6b] = \"uARR\"; instructions[0x6b] = uARR(immediateRead);\n opcodes[0x6c] = \"JMP\"; instructions[0x6c] = JMP_IND();\n opcodes[0x6d] = \"ADC\"; instructions[0x6d] = ADC(absoluteRead);\n opcodes[0x6e] = \"ROR\"; instructions[0x6e] = ROR(absoluteReadModifyWrite);\n opcodes[0x6f] = \"uRRA\"; instructions[0x6f] = uRRA(absoluteReadModifyWrite);\n opcodes[0x70] = \"BVS\"; instructions[0x70] = Bxx(bV, 1); // BVS\n opcodes[0x71] = \"ADC\"; instructions[0x71] = ADC(indirectYRead);\n opcodes[0x72] = \"uKIL\"; instructions[0x72] = uKIL();\n opcodes[0x73] = \"uRRA\"; instructions[0x73] = uRRA(indirectYReadModifyWrite);\n opcodes[0x74] = \"uNOP\"; instructions[0x74] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0x75] = \"ADC\"; instructions[0x75] = ADC(zeroPageIndexedRead(rX));\n opcodes[0x76] = \"ROR\"; instructions[0x76] = ROR(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x77] = \"uRRA\"; instructions[0x77] = uRRA(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0x78] = \"SEI\"; instructions[0x78] = SEI();\n opcodes[0x79] = \"ADC\"; instructions[0x79] = ADC(absoluteIndexedRead(rY));\n opcodes[0x7a] = \"uNOP\"; instructions[0x7a] = uNOP(implied);\n opcodes[0x7b] = \"uRRA\"; instructions[0x7b] = uRRA(absoluteIndexedReadModifyWrite(rY));\n opcodes[0x7c] = \"uNOP\"; instructions[0x7c] = uNOP(absoluteIndexedRead(rX));\n opcodes[0x7d] = \"ADC\"; instructions[0x7d] = ADC(absoluteIndexedRead(rX));\n opcodes[0x7e] = \"ROR\"; instructions[0x7e] = ROR(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x7f] = \"uRRA\"; instructions[0x7f] = uRRA(absoluteIndexedReadModifyWrite(rX));\n opcodes[0x80] = \"uNOP\"; instructions[0x80] = uNOP(immediateRead);\n opcodes[0x81] = \"STA\"; instructions[0x81] = STA(indirectXWrite);\n opcodes[0x82] = \"uNOP\"; instructions[0x82] = uNOP(immediateRead);\n opcodes[0x83] = \"uSAX\"; instructions[0x83] = uSAX(indirectXWrite);\n opcodes[0x84] = \"STY\"; instructions[0x84] = STY(zeroPageWrite);\n opcodes[0x85] = \"STA\"; instructions[0x85] = STA(zeroPageWrite);\n opcodes[0x86] = \"STX\"; instructions[0x86] = STX(zeroPageWrite);\n opcodes[0x87] = \"uSAX\"; instructions[0x87] = uSAX(zeroPageWrite);\n opcodes[0x88] = \"DEY\"; instructions[0x88] = DEY();\n opcodes[0x89] = \"uNOP\"; instructions[0x89] = uNOP(immediateRead);\n opcodes[0x8a] = \"TXA\"; instructions[0x8a] = TXA();\n opcodes[0x8b] = \"uANE\"; instructions[0x8b] = uANE(immediateRead);\n opcodes[0x8c] = \"STY\"; instructions[0x8c] = STY(absoluteWrite);\n opcodes[0x8d] = \"STA\"; instructions[0x8d] = STA(absoluteWrite);\n opcodes[0x8e] = \"STX\"; instructions[0x8e] = STX(absoluteWrite);\n opcodes[0x8f] = \"uSAX\"; instructions[0x8f] = uSAX(absoluteWrite);\n opcodes[0x90] = \"BCC\"; instructions[0x90] = Bxx(bC, 0); // BCC\n opcodes[0x91] = \"STA\"; instructions[0x91] = STA(indirectYWrite);\n opcodes[0x92] = \"uKIL\"; instructions[0x92] = uKIL();\n opcodes[0x93] = \"uSHA\"; instructions[0x93] = uSHA(indirectYWrite);\n opcodes[0x94] = \"STY\"; instructions[0x94] = STY(zeroPageIndexedWrite(rX));\n opcodes[0x95] = \"STA\"; instructions[0x95] = STA(zeroPageIndexedWrite(rX));\n opcodes[0x96] = \"STX\"; instructions[0x96] = STX(zeroPageIndexedWrite(rY));\n opcodes[0x97] = \"uSAX\"; instructions[0x97] = uSAX(zeroPageIndexedWrite(rY));\n opcodes[0x98] = \"TYA\"; instructions[0x98] = TYA();\n opcodes[0x99] = \"STA\"; instructions[0x99] = STA(absoluteIndexedWrite(rY));\n opcodes[0x9a] = \"TXS\"; instructions[0x9a] = TXS();\n opcodes[0x9b] = \"uSHS\"; instructions[0x9b] = uSHS(absoluteIndexedWrite(rY));\n opcodes[0x9c] = \"uSHY\"; instructions[0x9c] = uSHY(absoluteIndexedWrite(rX));\n opcodes[0x9d] = \"STA\"; instructions[0x9d] = STA(absoluteIndexedWrite(rX));\n opcodes[0x9e] = \"uSHX\"; instructions[0x9e] = uSHX(absoluteIndexedWrite(rY));\n opcodes[0x9f] = \"uSHA\"; instructions[0x9f] = uSHA(absoluteIndexedWrite(rY));\n opcodes[0xa0] = \"LDY\"; instructions[0xa0] = LDY(immediateRead);\n opcodes[0xa1] = \"LDA\"; instructions[0xa1] = LDA(indirectXRead);\n opcodes[0xa2] = \"LDX\"; instructions[0xa2] = LDX(immediateRead);\n opcodes[0xa3] = \"uLAX\"; instructions[0xa3] = uLAX(indirectXRead);\n opcodes[0xa4] = \"LDY\"; instructions[0xa4] = LDY(zeroPageRead);\n opcodes[0xa5] = \"LDA\"; instructions[0xa5] = LDA(zeroPageRead);\n opcodes[0xa6] = \"LDX\"; instructions[0xa6] = LDX(zeroPageRead);\n opcodes[0xa7] = \"uLAX\"; instructions[0xa7] = uLAX(zeroPageRead);\n opcodes[0xa8] = \"TAY\"; instructions[0xa8] = TAY();\n opcodes[0xa9] = \"LDA\"; instructions[0xa9] = LDA(immediateRead);\n opcodes[0xaa] = \"TAX\"; instructions[0xaa] = TAX();\n opcodes[0xab] = \"uLXA\"; instructions[0xab] = uLXA(immediateRead);\n opcodes[0xac] = \"LDY\"; instructions[0xac] = LDY(absoluteRead);\n opcodes[0xad] = \"LDA\"; instructions[0xad] = LDA(absoluteRead);\n opcodes[0xae] = \"LDX\"; instructions[0xae] = LDX(absoluteRead);\n opcodes[0xaf] = \"uLAX\"; instructions[0xaf] = uLAX(absoluteRead);\n opcodes[0xb0] = \"BCS\"; instructions[0xb0] = Bxx(bC, 1); // BCS\n opcodes[0xb1] = \"LDA\"; instructions[0xb1] = LDA(indirectYRead);\n opcodes[0xb2] = \"uKIL\"; instructions[0xb2] = uKIL();\n opcodes[0xb3] = \"uLAX\"; instructions[0xb3] = uLAX(indirectYRead);\n opcodes[0xb4] = \"LDY\"; instructions[0xb4] = LDY(zeroPageIndexedRead(rX));\n opcodes[0xb5] = \"LDA\"; instructions[0xb5] = LDA(zeroPageIndexedRead(rX));\n opcodes[0xb6] = \"LDX\"; instructions[0xb6] = LDX(zeroPageIndexedRead(rY));\n opcodes[0xb7] = \"uLAX\"; instructions[0xb7] = uLAX(zeroPageIndexedRead(rY));\n opcodes[0xb8] = \"CLV\"; instructions[0xb8] = CLV();\n opcodes[0xb9] = \"LDA\"; instructions[0xb9] = LDA(absoluteIndexedRead(rY));\n opcodes[0xba] = \"TSX\"; instructions[0xba] = TSX();\n opcodes[0xbb] = \"uLAS\"; instructions[0xbb] = uLAS(absoluteIndexedRead(rY));\n opcodes[0xbc] = \"LDY\"; instructions[0xbc] = LDY(absoluteIndexedRead(rX));\n opcodes[0xbd] = \"LDA\"; instructions[0xbd] = LDA(absoluteIndexedRead(rX));\n opcodes[0xbe] = \"LDX\"; instructions[0xbe] = LDX(absoluteIndexedRead(rY));\n opcodes[0xbf] = \"uLAX\"; instructions[0xbf] = uLAX(absoluteIndexedRead(rY));\n opcodes[0xc0] = \"CPY\"; instructions[0xc0] = CPY(immediateRead);\n opcodes[0xc1] = \"CMP\"; instructions[0xc1] = CMP(indirectXRead);\n opcodes[0xc2] = \"uNOP\"; instructions[0xc2] = uNOP(immediateRead);\n opcodes[0xc3] = \"uDCP\"; instructions[0xc3] = uDCP(indirectXReadModifyWrite);\n opcodes[0xc4] = \"CPY\"; instructions[0xc4] = CPY(zeroPageRead);\n opcodes[0xc5] = \"CMP\"; instructions[0xc5] = CMP(zeroPageRead);\n opcodes[0xc6] = \"DEC\"; instructions[0xc6] = DEC(zeroPageReadModifyWrite);\n opcodes[0xc7] = \"uDCP\"; instructions[0xc7] = uDCP(zeroPageReadModifyWrite);\n opcodes[0xc8] = \"INY\"; instructions[0xc8] = INY();\n opcodes[0xc9] = \"CMP\"; instructions[0xc9] = CMP(immediateRead);\n opcodes[0xca] = \"DEX\"; instructions[0xca] = DEX();\n opcodes[0xcb] = \"uSBX\"; instructions[0xcb] = uSBX(immediateRead);\n opcodes[0xcc] = \"CPY\"; instructions[0xcc] = CPY(absoluteRead);\n opcodes[0xcd] = \"CMP\"; instructions[0xcd] = CMP(absoluteRead);\n opcodes[0xce] = \"DEC\"; instructions[0xce] = DEC(absoluteReadModifyWrite);\n opcodes[0xcf] = \"uDCP\"; instructions[0xcf] = uDCP(absoluteReadModifyWrite);\n opcodes[0xd0] = \"BNE\"; instructions[0xd0] = Bxx(bZ, 0); // BNE\n opcodes[0xd1] = \"CMP\"; instructions[0xd1] = CMP(indirectYRead);\n opcodes[0xd2] = \"uKIL\"; instructions[0xd2] = uKIL();\n opcodes[0xd3] = \"uDCP\"; instructions[0xd3] = uDCP(indirectYReadModifyWrite);\n opcodes[0xd4] = \"uNOP\"; instructions[0xd4] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0xd5] = \"CMP\"; instructions[0xd5] = CMP(zeroPageIndexedRead(rX));\n opcodes[0xd6] = \"DEC\"; instructions[0xd6] = DEC(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xd7] = \"uDCP\"; instructions[0xd7] = uDCP(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xd8] = \"CLD\"; instructions[0xd8] = CLD();\n opcodes[0xd9] = \"CMP\"; instructions[0xd9] = CMP(absoluteIndexedRead(rY));\n opcodes[0xda] = \"uNOP\"; instructions[0xda] = uNOP(implied);\n opcodes[0xdb] = \"uDCP\"; instructions[0xdb] = uDCP(absoluteIndexedReadModifyWrite(rY));\n opcodes[0xdc] = \"uNOP\"; instructions[0xdc] = uNOP(absoluteIndexedRead(rX));\n opcodes[0xdd] = \"CMP\"; instructions[0xdd] = CMP(absoluteIndexedRead(rX));\n opcodes[0xde] = \"DEC\"; instructions[0xde] = DEC(absoluteIndexedReadModifyWrite(rX));\n opcodes[0xdf] = \"uDCP\"; instructions[0xdf] = uDCP(absoluteIndexedReadModifyWrite(rX));\n opcodes[0xe0] = \"CPX\"; instructions[0xe0] = CPX(immediateRead);\n opcodes[0xe1] = \"SBC\"; instructions[0xe1] = SBC(indirectXRead);\n opcodes[0xe2] = \"uNOP\"; instructions[0xe2] = uNOP(immediateRead);\n opcodes[0xe3] = \"uISB\"; instructions[0xe3] = uISB(indirectXReadModifyWrite);\n opcodes[0xe4] = \"CPX\"; instructions[0xe4] = CPX(zeroPageRead);\n opcodes[0xe5] = \"SBC\"; instructions[0xe5] = SBC(zeroPageRead);\n opcodes[0xe6] = \"INC\"; instructions[0xe6] = INC(zeroPageReadModifyWrite);\n opcodes[0xe7] = \"uISB\"; instructions[0xe7] = uISB(zeroPageReadModifyWrite);\n opcodes[0xe8] = \"INX\"; instructions[0xe8] = INX();\n opcodes[0xe9] = \"SBC\"; instructions[0xe9] = SBC(immediateRead);\n opcodes[0xea] = \"NOP\"; instructions[0xea] = NOP();\n opcodes[0xeb] = \"SBC\"; instructions[0xeb] = SBC(immediateRead);\n opcodes[0xec] = \"CPX\"; instructions[0xec] = CPX(absoluteRead);\n opcodes[0xed] = \"SBC\"; instructions[0xed] = SBC(absoluteRead);\n opcodes[0xee] = \"INC\"; instructions[0xee] = INC(absoluteReadModifyWrite);\n opcodes[0xef] = \"uISB\"; instructions[0xef] = uISB(absoluteReadModifyWrite);\n opcodes[0xf0] = \"BEQ\"; instructions[0xf0] = Bxx(bZ, 1); // BEQ\n opcodes[0xf1] = \"SBC\"; instructions[0xf1] = SBC(indirectYRead);\n opcodes[0xf2] = \"uKIL\"; instructions[0xf2] = uKIL();\n opcodes[0xf3] = \"uISB\"; instructions[0xf3] = uISB(indirectYReadModifyWrite);\n opcodes[0xf4] = \"uNOP\"; instructions[0xf4] = uNOP(zeroPageIndexedRead(rX));\n opcodes[0xf5] = \"SBC\"; instructions[0xf5] = SBC(zeroPageIndexedRead(rX));\n opcodes[0xf6] = \"INC\"; instructions[0xf6] = INC(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xf7] = \"uISB\"; instructions[0xf7] = uISB(zeroPageIndexedReadModifyWrite(rX));\n opcodes[0xf8] = \"SED\"; instructions[0xf8] = SED();\n opcodes[0xf9] = \"SBC\"; instructions[0xf9] = SBC(absoluteIndexedRead(rY));\n opcodes[0xfa] = \"uNOP\"; instructions[0xfa] = uNOP(implied);\n opcodes[0xfb] = \"uISB\"; instructions[0xfb] = uISB(absoluteIndexedReadModifyWrite(rY));\n opcodes[0xfc] = \"uNOP\"; instructions[0xfc] = uNOP(absoluteIndexedRead(rX));\n opcodes[0xfd] = \"SBC\"; instructions[0xfd] = SBC(absoluteIndexedRead(rX));\n opcodes[0xfe] = \"INC\"; instructions[0xfe] = INC(absoluteIndexedReadModifyWrite(rX));\n opcodes[0xff] = \"uISB\"; instructions[0xff] = uISB(absoluteIndexedReadModifyWrite(rX));\n\n\n // Single Byte instructions\n\n function ASL_ACC() {\n return implied(function() {\n setC(A > 127);\n A = (A << 1) & 255;\n setZ(A);\n setN(A);\n });\n }\n\n function CLC() {\n return implied(function() {\n C = 0;\n });\n }\n\n function CLD() {\n return implied(function() {\n D = 0;\n });\n }\n\n function CLI() {\n return implied(function() {\n I = 0;\n });\n }\n\n function CLV() {\n return implied(function() {\n V = 0;\n });\n }\n\n function DEX() {\n return implied(function() {\n X = (X - 1) & 255;\n setZ(X);\n setN(X);\n });\n }\n\n function DEY() {\n return implied(function() {\n Y = (Y - 1) & 255;\n setZ(Y);\n setN(Y);\n });\n }\n\n function INX() {\n return implied(function() {\n X = (X + 1) & 255;\n setZ(X);\n setN(X);\n });\n }\n\n function INY() {\n return implied(function() {\n Y = (Y + 1) & 255;\n setZ(Y);\n setN(Y);\n });\n }\n\n function LSR_ACC() {\n return implied(function() {\n C = A & 0x01;\n A >>>= 1;\n setZ(A);\n N = 0;\n });\n }\n\n function NOP() {\n return implied(function() {\n // nothing\n });\n }\n\n function ROL_ACC() {\n return implied(function() {\n var newC = A > 127;\n A = ((A << 1) | C) & 255;\n setC(newC);\n setZ(A);\n setN(A);\n });\n }\n\n function ROR_ACC() {\n return implied(function() {\n var newC = A & 0x01;\n A = (A >>> 1) | (C << 7);\n setC(newC);\n setZ(A);\n setN(A);\n });\n }\n\n function SEC() {\n return implied(function() {\n C = 1;\n });\n }\n\n function SED() {\n return implied(function() {\n D = 1;\n });\n }\n\n function SEI() {\n return implied(function() {\n I = 1;\n });\n }\n\n function TAX() {\n return implied(function() {\n X = A;\n setZ(X);\n setN(X);\n });\n }\n\n function TAY() {\n return implied(function() {\n Y = A;\n setZ(Y);\n setN(Y);\n });\n }\n\n function TSX() {\n return implied(function() {\n X = SP;\n setZ(X);\n setN(X);\n });\n }\n\n function TXA() {\n return implied(function() {\n A = X;\n setZ(A);\n setN(A);\n });\n }\n\n function TXS() {\n return implied(function() {\n SP = X;\n });\n }\n\n function TYA() {\n return implied(function() {\n A = Y;\n setZ(A);\n setN(A);\n });\n }\n\n function uKIL() {\n return [\n fetchOpcodeAndDecodeInstruction,\n function() {\n haltOpcode();\n },\n function() {\n T--; // Causes the processor to be stuck in this instruction forever\n }\n ];\n }\n\n function uNOP(addressing) {\n return addressing(function() {\n illegalOpcode(\"NOP/DOP\");\n // nothing\n });\n }\n\n\n // Internal Execution on Memory Data\n\n function ADC(addressing) {\n return addressing(function() {\n if (D) {\n var operand = data;\n var AL = (A & 15) + (operand & 15) + C;\n if (AL > 9) { AL += 6; }\n var AH = ((A >> 4) + (operand >> 4) + ((AL > 15)?1:0)) << 4;\n setZ((A + operand + C) & 255);\n setN(AH);\n setV(((A ^AH) & ~(A ^ operand)) & 128);\n if (AH > 0x9f) { AH += 0x60; }\n setC(AH > 255);\n A = (AH | (AL & 15)) & 255;\n } else {\n var add = A + data + C;\n setC(add > 255);\n setV(((A ^ add) & (data ^ add)) & 0x80);\n A = add & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function AND(addressing) {\n return addressing(function() {\n A &= data;\n setZ(A);\n setN(A);\n });\n }\n\n function BIT(addressing) {\n return addressing(function() {\n var par = data;\n setZ(A & par);\n setV(par & 0x40);\n setN(par);\n });\n }\n\n function CMP(addressing) {\n return addressing(function() {\n var val = (A - data) & 255;\n setC(A >= data);\n setZ(val);\n setN(val);\n });\n }\n\n function CPX(addressing) {\n return addressing(function() {\n var val = (X - data) & 255;\n setC(X >= data);\n setZ(val);\n setN(val);\n });\n }\n\n function CPY(addressing) {\n return addressing(function() {\n var val = (Y - data) & 255;\n setC(Y >= data);\n setZ(val);\n setN(val);\n });\n }\n\n function EOR(addressing) {\n return addressing(function() {\n A ^= data;\n setZ(A);\n setN(A);\n });\n }\n\n function LDA(addressing) {\n return addressing(function() {\n A = data;\n setZ(A);\n setN(A);\n });\n }\n\n function LDX(addressing) {\n return addressing(function() {\n X = data;\n setZ(X);\n setN(X);\n });\n }\n\n function LDY(addressing) {\n return addressing(function() {\n Y = data;\n setZ(Y);\n setN(Y);\n });\n }\n\n function ORA(addressing) {\n return addressing(function() {\n A |= data;\n setZ(A);\n setN(A);\n });\n }\n\n function SBC(addressing) {\n return addressing(function() {\n if (D) {\n var operand = data;\n var AL = (A & 15) - (operand & 15) - (1-C);\n var AH = (A >> 4) - (operand >> 4) - ((AL < 0)?1:0);\n if (AL < 0) { AL -= 6; }\n if (AH < 0) { AH -= 6; }\n var sub = A - operand - (1-C);\n setC(~sub & 256);\n setV(((A ^ operand) & (A ^ sub)) & 128);\n setZ(sub & 255);\n setN(sub);\n A = ((AH << 4) | (AL & 15)) & 255;\n } else {\n operand = (~data) & 255;\n sub = A + operand + C;\n setC(sub > 255);\n setV(((A ^ sub) & (operand ^ sub) & 0x80));\n A = sub & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function uANC(addressing) {\n return addressing(function() {\n illegalOpcode(\"ANC\");\n A &= data;\n setZ(A);\n N = C = (A & 0x080) ? 1 : 0;\n });\n }\n\n function uANE(addressing) {\n return addressing(function() {\n illegalOpcode(\"ANE\");\n // Exact operation unknown. Do nothing\n });\n }\n\n function uARR(addressing) {\n // Some sources say flags are affected per ROR, others say its more complex. The complex one is chosen\n return addressing(function() {\n illegalOpcode(\"ARR\");\n var val = A & data;\n var oldC = C ? 0x80 : 0;\n val = (val >>> 1) | oldC;\n A = val;\n setZ(val);\n setN(val);\n var comp = A & 0x60;\n if (comp == 0x60) \t\t{ C = 1; V = 0; }\n else if (comp == 0x00) \t{ C = 0; V = 0; }\n else if (comp == 0x20) \t{ C = 0; V = 1; }\n else if (comp == 0x40) \t{ C = 1; V = 1; }\n });\n }\n\n function uASR(addressing) {\n return addressing(function() {\n illegalOpcode(\"ASR\");\n var val = A & data;\n C = (val & 0x01);\t\t// bit 0\n val = val >>> 1;\n A = val;\n setZ(val);\n N = 0;\n });\n }\n\n function uLAS(addressing) {\n return addressing(function() {\n illegalOpcode(\"LAS\");\n var val = SP & data;\n A = val;\n X = val;\n SP = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uLAX(addressing) {\n return addressing(function() {\n illegalOpcode(\"LAX\");\n var val = data;\n A = val;\n X = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uLXA(addressing) {\n return addressing(function() {\n // Some sources say its an OR with $EE then AND with IMM, others exclude the OR,\n // others exclude both the OR and the AND. Excluding just the OR...\n illegalOpcode(\"LXA\");\n var val = A /* | 0xEE) */ & data;\n A = val;\n X = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uSBX(addressing) {\n return addressing(function() {\n illegalOpcode(\"SBX\");\n var par = A & X;\n var val = data;\n var newX = (par - val) & 255;\n X = newX;\n setC(par >= val);\n setZ(newX);\n setN(newX);\n });\n }\n\n\n // Store operations\n\n function STA(addressing) {\n return addressing(function() {\n data = A;\n });\n }\n\n function STX(addressing) {\n return addressing(function() {\n data = X;\n });\n }\n\n function STY(addressing) {\n return addressing(function() {\n data = Y;\n });\n }\n\n function uSAX(addressing) {\n return addressing(function() {\n // Some sources say it would affect N and Z flags, some say it wouldn't. Chose not to affect\n illegalOpcode(\"SAX\");\n data = A & X;\n });\n }\n\n function uSHA(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHA\");\n data = A & X & ((BA >>> 8) + 1) & 255; // A & X & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n function uSHS(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHS\");\n var val = A & X;\n SP = val;\n data = val & ((BA >>> 8) + 1) & 255; // A & X & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n function uSHX(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHX\");\n data = X & ((BA >>> 8) + 1) & 255; // X & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n function uSHY(addressing) {\n return addressing(function() {\n illegalOpcode(\"SHY\");\n data = Y & ((BA >>> 8) + 1) & 255; // Y & (High byte of effective address + 1) !!!\n // data would also be stored BAH if page boundary is crossed. Unobservable, not needed here\n });\n }\n\n\n // Read-Modify-Write operations\n\n function ASL(addressing) {\n return addressing(function() {\n setC(data > 127);\n var par = (data << 1) & 255;\n data = par;\n setZ(par);\n setN(par);\n });\n }\n\n function DEC(addressing) {\n return addressing(function() {\n var par = (data - 1) & 255;\n data = par;\n setZ(par);\n setN(par);\n });\n }\n\n function INC(addressing) {\n return addressing(function() {\n var par = (data + 1) & 255;\n data = par;\n setZ(par);\n setN(par);\n });\n }\n\n function LSR(addressing) {\n return addressing(function() {\n C = data & 0x01;\n data >>>= 1;\n setZ(data);\n N = 0;\n });\n }\n\n function ROL(addressing) {\n return addressing(function() {\n var newC = data > 127;\n var par = ((data << 1) | C) & 255;\n data = par;\n setC(newC);\n setZ(par);\n setN(par);\n });\n }\n\n function ROR(addressing) {\n return addressing(function() {\n var newC = data & 0x01;\n var par = (data >>> 1) | (C << 7);\n data = par;\n setC(newC);\n setZ(par);\n setN(par);\n });\n }\n\n function uDCP(addressing) {\n return addressing(function() {\n illegalOpcode(\"DCP\");\n var par = (data - 1) & 255;\n data = par;\n par = A - par;\n setC(par >= 0);\n setZ(par);\n setN(par);\n });\n }\n\n function uISB(addressing) {\n return addressing(function() {\n illegalOpcode(\"ISB\");\n data = (data + 1) & 255; // ISB is the same as SBC but incs the operand first\n if (D) {\n var operand = data;\n var AL = (A & 15) - (operand & 15) - (1-C);\n var AH = (A >> 4) - (operand >> 4) - ((AL < 0)?1:0);\n if (AL < 0) { AL -= 6; }\n if (AH < 0) { AH -= 6; }\n var sub = A - operand - (1-C);\n setC(~sub & 256);\n setV(((A ^ operand) & (A ^ sub)) & 128);\n setZ(sub & 255);\n setN(sub);\n A = ((AH << 4) | (AL & 15)) & 255;\n } else {\n operand = (~data) & 255;\n sub = A + operand + C;\n setC(sub > 255);\n setV(((A ^ sub) & (operand ^ sub) & 0x80));\n A = sub & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function uRLA(addressing) {\n return addressing(function() {\n illegalOpcode(\"RLA\");\n var val = data;\n var oldC = C;\n setC(val & 0x80);\t\t// bit 7 was set\n val = ((val << 1) | oldC) & 255;\n data = val;\n A &= val;\n setZ(val); // TODO Verify. May be A instead of val in the flags setting\n setN(val);\n });\n }\n\n function uRRA(addressing) {\n return addressing(function() {\n illegalOpcode(\"RRA\");\n var val = data;\n var oldC = C ? 0x80 : 0;\n setC(val & 0x01);\t\t// bit 0 was set\n val = (val >>> 1) | oldC;\n data = val;\n // RRA is the same as ADC from here\n if (D) {\n var operand = data;\n var AL = (A & 15) + (operand & 15) + C;\n if (AL > 9) { AL += 6; }\n var AH = ((A >> 4) + (operand >> 4) + ((AL > 15)?1:0)) << 4;\n setZ((A + operand + C) & 255);\n setN(AH);\n setV(((A ^AH) & ~(A ^ operand)) & 128);\n if (AH > 0x9f) { AH += 0x60; }\n setC(AH > 255);\n A = (AH | (AL & 15)) & 255;\n } else {\n var add = A + data + C;\n setC(add > 255);\n setV(((A ^ add) & (data ^ add)) & 0x80);\n A = add & 255;\n setZ(A);\n setN(A);\n }\n });\n }\n\n function uSLO(addressing) {\n return addressing(function() {\n illegalOpcode(\"SLO\");\n var val = data;\n setC(val & 0x80);\t\t// bit 7 was set\n val = (val << 1) & 255;\n data = val;\n val = A | val;\n A = val;\n setZ(val);\n setN(val);\n });\n }\n\n function uSRE(addressing) {\n return addressing(function() {\n illegalOpcode(\"SRE\");\n var val = data;\n setC(val & 0x01);\t\t// bit 0 was set\n val = val >>> 1;\n data = val;\n val = (A ^ val) & 255;\n A = val;\n setZ(val);\n setN(val);\n });\n }\n\n\n // Miscellaneous operations\n\n function PHA() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n function() { pushToStack(A); },\n fetchNextOpcode\n ];\n }\n\n function PHP() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n function() { pushToStack(getStatusBits()); },\n fetchNextOpcode\n ];\n }\n\n function PLA() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() {\n A = popFromStack();\n setZ(A);\n setN(A);\n },\n fetchNextOpcode\n ];\n }\n\n function PLP() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() { setStatusBits(popFromStack()); },\n fetchNextOpcode\n ];\n }\n\n function JSR() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n peekFromStack,\n function() { pushToStack((PC >>> 8) & 0xff); },\n function() { pushToStack(PC & 0xff); },\n fetchADH,\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function BRK() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate, // For debugging purposes, use operand as an arg for BRK!\n function() {\n if (self.debug) self.breakpoint(\"BRK \" + data);\n pushToStack((PC >>> 8) & 0xff);\n },\n function() { pushToStack(PC & 0xff); },\n function() { pushToStack(getStatusBits()); }, // set B flag\n function() { AD = bus.read(IRQ_VECTOR); },\n function() { AD |= bus.read(IRQ_VECTOR + 1) << 8; },\n function() { PC = AD; I = 1; fetchNextOpcode(); }\n ];\n }\n\n function IRQ() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate, // For debugging purposes, use operand as an arg for BRK!\n function() {\n if (self.debug) self.breakpoint(\"IRQ \" + data);\n pushToStack((PC >>> 8) & 0xff);\n },\n function() { pushToStack(PC & 0xff); },\n function() { pushToStack(getStatusBits() & ~0x10); }, // no BRK flag\n function() { AD = bus.read(IRQ_VECTOR); },\n function() { AD |= bus.read(IRQ_VECTOR + 1) << 8; },\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function NMI() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchDataFromImmediate,\n function() {\n if (self.debug) self.breakpoint(\"NMI \" + data);\n pushToStack((PC >>> 8) & 0xff);\n },\n function() { pushToStack(PC & 0xff); },\n function() { pushToStack(getStatusBits() & ~0x10); }, // no BRK flag\n function() { AD = bus.read(NMI_VECTOR); },\n function() { AD |= bus.read(NMI_VECTOR + 1) << 8; },\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function RTI() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() { setStatusBits(popFromStack()); },\n function() { AD = popFromStack(); },\n function() { AD |= popFromStack() << 8; },\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function RTS() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchOpcodeAndDiscard,\n peekFromStack,\n function() { AD = popFromStack(); },\n function() { AD |= popFromStack() << 8; },\n function() { PC = AD; fetchDataFromImmediate(); },\n fetchNextOpcode\n ];\n }\n\n function JMP_ABS() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchADL,\n fetchADH,\n function() { PC = AD; fetchNextOpcode(); }\n ];\n }\n\n function JMP_IND() {\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchIAL, // IAH will be zero\n fetchIAH,\n fetchBALFromIA,\n function() {\n add1toIAL();\n fetchBAHFromIA();\n },\n function() { PC = BA; fetchNextOpcode(); }\n ];\n }\n\n function Bxx(reg, cond) {\n var branchTaken;\n if (reg === bZ) branchTaken = function() { return Z === cond; };\n else if (reg === bN) branchTaken = function() { return N === cond; };\n else if (reg === bC) branchTaken = function() { return C === cond; };\n else branchTaken = function() { return V === cond; };\n return [\n fetchOpcodeAndDecodeInstruction,\n fetchBranchOffset,\n function() {\n if (branchTaken()) {\n fetchOpcodeAndDiscard();\n addBranchOffsetToPCL();\n } else {\n fetchNextOpcode();\n }\n },\n function() {\n if(branchOffsetCrossAdjust) {\n fetchOpcodeAndDiscard();\n adjustPCHForBranchOffsetCross();\n } else {\n fetchNextOpcode();\n }\n },\n fetchNextOpcode\n ];\n }\n\n\n // Savestate -------------------------------------------\n\n this.saveState = function():MOS6502State {\n return {\n PC: (PC-1) & 0xffff,\n A: A, X: X, Y: Y, SP: SP,\n N: N, V: V, D: D, I: I, Z: Z, C: C,\n T: T, o: opcode, R: RDY?1:0,\n d: data, AD: AD, BA: BA, BC: BALCrossed?1:0, IA: IA,\n bo: branchOffset, boa: branchOffsetCrossAdjust\n };\n };\n\n this.loadState = function(state:MOS6502State) {\n PC = (state.PC+1) & 0xffff;\n A = state.A; X = state.X; Y = state.Y; SP = state.SP;\n N = state.N; V = state.V; D = state.D; I = state.I; Z = state.Z; C = state.C;\n T = state.T; opcode = state.o; RDY = !!state.R;\n data = state.d; AD = state.AD; BA = state.BA; BALCrossed = !!state.BC; IA = state.IA;\n branchOffset = state.bo; branchOffsetCrossAdjust = state.boa;\n instruction = opcode < 0 ? [ fetchOpcodeAndDecodeInstruction ] : instructions[opcode];\n };\n\n\n // Accessory methods\n\n this.toString = function() {\n return \"CPU \" +\n \" PC: \" + PC.toString(16) + \" op: \" + opcode.toString() + \" T: \" + T + \" data: \" + data + \"\\n\" +\n \" A: \" + A.toString(16) + \" X: \" + X.toString(16) + \" Y: \" + Y.toString(16) + \" SP: \" + SP.toString(16) + \" \" +\n \"N\" + N + \" \" + \"V\" + V + \" \" + \"D\" + D + \" \" + \"I\" + I + \" \" + \"Z\" + Z + \" \" + \"C\" + C + \" \";\n };\n\n this.breakpoint = function(mes) {\n //jt.Util.log(mes);\n if (this.trace) {\n var text = \"CPU Breakpoint! \" + (mes ? \"(\" + mes + \")\" : \"\") + \"\\n\\n\" + this.toString();\n //jt.Util.message(text);\n }\n };\n\n var cycletime = [\n 7, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 6, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 0, 6, 0, 6, 3, 3, 3, 3, 2, 0, 2, 0, 4, 4, 4, 4,\n 2, 6, 0, 0, 4, 4, 4, 4, 2, 5, 2, 0, 0, 5, 0, 0,\n 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 0, 4, 4, 4, 4,\n 2, 5, 0, 5, 4, 4, 4, 4, 2, 4, 2, 0, 4, 4, 4, 4,\n 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7,\n 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 0, 4, 4, 6, 6,\n 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7\n ];\n\n var extracycles = [\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1\n ];\n\n var insnlengths = [\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 3, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 0, 2, 0, 2, 2, 2, 2, 2, 1, 0, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 0, 2, 2, 2, 3, 1, 3, 1, 0, 0, 3, 0, 0,\n 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3,\n 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3\n ];\n\n var validinsns = [\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 0, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 3, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 0, 2, 0, 0, 2, 2, 2, 0, 1, 0, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 0, 3, 0, 0,\n 2, 2, 2, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0,\n 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0,\n 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0\n ];\n\n this.getOpcodeMetadata = function(opcode, address) {\n // TODO: more intelligent maximum cycles\n //var i = instructions[opcode];\n return {\n opcode:opcode,\n mnenomic:opcodes[opcode],\n minCycles:cycletime[opcode],\n maxCycles:cycletime[opcode] + extracycles[opcode],\n insnlength:insnlengths[opcode]\n };\n }\n\n // only call when isPCStable() is true\n this.setNMI = function() {\n instruction = NMI();\n T = 1;\n PC = (PC-1) & 0xffff;\n }\n this.setIRQ = function() {\n if (!I) { // only if not disabled\n instruction = IRQ();\n T = 1;\n PC = (PC-1) & 0xffff;\n }\n }\n\n this.getSP = function() { return SP; }\n this.getPC = function() { return (PC-1) & 0xffff; }\n this.getT = function() { return T; }\n this.isHalted = function() { return opcodes[opcode] == \"uKIL\"; }\n \n this.isPCStable = function() {\n return T == 0;\n }\n};\n\nexport interface MOS6502State {\nPC : number;\nSP : number;\nA : number;\nX : number;\nY : number;\nN : number;\nV : number;\nD : number;\nI : number;\nZ : number;\nC : number;\nT : number;\no : number;\nR : number;\nd : number;\nAD : number;\nBA : number;\nBC : number;\nIA : number;\nbo : number;\nboa : number;\n}\n\nexport enum MOS6502Interrupts { None=0, NMI=1, IRQ=2 };\n\nexport class MOS6502 implements CPU, ClockBased, SavesState, Interruptable {\n\n cpu = new _MOS6502();\n interruptType : MOS6502Interrupts = MOS6502Interrupts.None;\n \n connectMemoryBus(bus:Bus) {\n this.cpu.connectBus(bus);\n }\n advanceClock() {\n if (this.interruptType && this.isStable()) {\n switch (this.interruptType) {\n case MOS6502Interrupts.NMI: this.cpu.setNMI(); break;\n case MOS6502Interrupts.IRQ: this.cpu.setIRQ(); break;\n }\n this.interruptType = 0;\n }\n this.cpu.clockPulse();\n }\n advanceInsn() {\n do {\n this.advanceClock();\n } while (!this.isStable());\n }\n reset() {\n this.cpu.reset();\n this.interruptType = 0;\n }\n interrupt(itype:number) {\n if (this.interruptType != MOS6502Interrupts.NMI) {\n this.interruptType = itype;\n }\n }\n NMI() {\n this.interrupt(MOS6502Interrupts.NMI);\n }\n IRQ() {\n this.interrupt(MOS6502Interrupts.IRQ);\n }\n getSP() {\n return this.cpu.getSP();\n }\n getPC() {\n return this.cpu.getPC();\n }\n isHalted() {\n return this.cpu.isHalted();\n }\n saveState() {\n var s = this.cpu.saveState();\n s.it = this.interruptType;\n return s;\n }\n loadState(s) {\n this.cpu.loadState(s);\n this.interruptType = s.it;\n }\n isStable() : boolean {\n return this.cpu.isPCStable();\n }\n getOpcodeMetadata(op: number) {\n return this.cpu.getOpcodeMetadata(op);\n }\n}\n", "\nimport { CpuState, EmuState } from \"./baseplatform\";\nimport { CPU, SampledAudioSink, ProbeAll, NullProbe } from \"./devices\";\nimport { EmuHalt } from \"./emu\";\n\n// WASM Support\n// TODO: detangle from c64\n\nexport abstract class BaseWASMMachine {\n prefix : string;\n instance : WebAssembly.Instance;\n exports : any;\n sys : number;\n pixel_dest : Uint32Array;\n pixel_src : Uint32Array;\n stateptr : number;\n statearr : Uint8Array;\n cpustateptr : number;\n cpustatearr : Uint8Array;\n ctrlstateptr : number;\n ctrlstatearr : Uint8Array;\n cpu : CPU;\n romptr : number;\n romlen : number;\n romarr : Uint8Array;\n biosptr : number;\n biosarr : Uint8Array;\n audio : SampledAudioSink;\n audioarr : Float32Array;\n probe : ProbeAll;\n maxROMSize : number = 0x40000;\n\n abstract getCPUState() : CpuState;\n abstract saveState() : EmuState;\n abstract loadState(state: EmuState);\n\n constructor(prefix: string) {\n this.prefix = prefix;\n var self = this;\n this.cpu = {\n getPC: self.getPC.bind(self),\n getSP: self.getSP.bind(self),\n isStable: self.isStable.bind(self),\n reset: self.reset.bind(self),\n saveState: () => {\n return self.getCPUState();\n },\n loadState: () => {\n console.log(\"loadState not implemented\")\n },\n connectMemoryBus() {\n console.log(\"connectMemoryBus not implemented\")\n },\n }\n }\n getImports(wmod: WebAssembly.Module) {\n return {};\n }\n async fetchWASM() {\n var wasmResponse = await fetch('res/'+this.prefix+'/'+this.prefix+'.wasm');\n if (wasmResponse.status == 200 || (wasmResponse as any as Blob).size) {\n var wasmBinary = await wasmResponse.arrayBuffer();\n var wasmCompiled = await WebAssembly.compile(wasmBinary);\n var wasmResult = await WebAssembly.instantiate(wasmCompiled, this.getImports(wasmCompiled));\n this.instance = wasmResult;\n this.exports = wasmResult.exports;\n } else throw new Error('could not load WASM file');\n }\n allocateBIOS(biosBinary: Uint8Array) {\n this.biosptr = this.exports.malloc(biosBinary.byteLength);\n this.biosarr = new Uint8Array(this.exports.memory.buffer, this.biosptr, biosBinary.byteLength);\n}\n async fetchBIOS() {\n var biosResponse = await fetch('res/'+this.prefix+'/'+this.prefix+'.bios');\n if (biosResponse.status == 200 || (biosResponse as any as Blob).size) {\n var biosBinary = new Uint8Array(await biosResponse.arrayBuffer());\n this.allocateBIOS(biosBinary);\n this.loadBIOS(biosBinary);\n } else throw new Error('could not load BIOS file');\n }\n async initWASM() {\n // init machine instance\n this.sys = this.exports.machine_init(this.biosptr);\n let statesize = this.exports.machine_get_state_size();\n this.stateptr = this.exports.malloc(statesize);\n let ctrlstatesize = this.exports.machine_get_controls_state_size();\n this.ctrlstateptr = this.exports.malloc(ctrlstatesize);\n let cpustatesize = this.exports.machine_get_cpu_state_size();\n this.cpustateptr = this.exports.malloc(cpustatesize);\n this.romptr = this.exports.malloc(this.maxROMSize);\n // create state buffers\n // must do this after allocating memory (and everytime we grow memory?)\n this.statearr = new Uint8Array(this.exports.memory.buffer, this.stateptr, statesize);\n this.ctrlstatearr = new Uint8Array(this.exports.memory.buffer, this.ctrlstateptr, ctrlstatesize);\n this.cpustatearr = new Uint8Array(this.exports.memory.buffer, this.cpustateptr, cpustatesize);\n // create audio buffer\n let sampbufsize = 4096*4;\n this.audioarr = new Float32Array(this.exports.memory.buffer, this.exports.machine_get_sample_buffer(), sampbufsize);\n // create ROM buffer\n this.romarr = new Uint8Array(this.exports.memory.buffer, this.romptr, this.maxROMSize);\n // enable c64 joystick map to arrow keys (TODO)\n //this.exports.c64_set_joystick_type(this.sys, 1);\n console.log('machine_init', this.sys, statesize, ctrlstatesize, cpustatesize, sampbufsize);\n }\n async loadWASM() {\n await this.fetchWASM();\n this.exports.memory.grow(96); // TODO: need more when probing?\n await this.fetchBIOS();\n await this.initWASM();\n }\n getPC() : number {\n return this.exports.machine_cpu_get_pc(this.sys);\n }\n getSP() : number {\n return this.exports.machine_cpu_get_sp(this.sys);\n }\n isStable() : boolean {\n return this.exports.machine_cpu_is_stable(this.sys);\n }\n loadROM(rom: Uint8Array) {\n if (rom.length > this.maxROMSize) throw new EmuHalt(`Rom size too big: ${rom.length} bytes`);\n this.romarr.set(rom);\n this.romlen = rom.length;\n console.log('load rom', rom.length, 'bytes');\n this.reset(); // TODO?\n }\n // TODO: can't load after machine_init\n loadBIOS(srcArray: Uint8Array) {\n this.biosarr.set(srcArray);\n }\n reset() {\n this.exports.machine_reset(this.sys);\n }\n /* TODO: we don't need this because c64_exec does this?\n pollControls() {\n this.exports.machine_start_frame(this.sys);\n }\n */\n read(address: number) : number {\n return this.exports.machine_mem_read(this.sys, address & 0xffff);\n }\n readConst(address: number) : number {\n return this.exports.machine_mem_read(this.sys, address & 0xffff);\n }\n write(address: number, value: number) : void {\n this.exports.machine_mem_write(this.sys, address & 0xffff, value & 0xff);\n }\n getAudioParams() {\n return {sampleRate:44100, stereo:false};\n }\n videoOffsetBytes = 0;\n connectVideo(pixels:Uint32Array) : void {\n this.pixel_dest = pixels;\n var pixbuf = this.exports.machine_get_pixel_buffer(this.sys); // save video pointer\n console.log('connectVideo', pixbuf, pixels.length);\n this.pixel_src = new Uint32Array(this.exports.memory.buffer, pixbuf+this.videoOffsetBytes, pixels.length);\n }\n syncVideo() {\n if (this.exports.machine_update_video) {\n this.exports.machine_update_video(this.sys);\n }\n if (this.pixel_dest != null) {\n this.pixel_dest.set(this.pixel_src);\n }\n }\n // assume controls buffer is smaller than cpu buffer\n saveControlsState() : any {\n //console.log(1, this.romptr, this.romlen, this.ctrlstateptr, this.romarr.slice(0,4), this.ctrlstatearr.slice(0,4));\n this.exports.machine_save_controls_state(this.sys, this.ctrlstateptr);\n //console.log(2, this.romptr, this.romlen, this.ctrlstateptr, this.romarr.slice(0,4), this.ctrlstatearr.slice(0,4));\n return { controls:this.ctrlstatearr.slice(0) }\n }\n loadControlsState(state) : void {\n this.ctrlstatearr.set(state.controls);\n this.exports.machine_load_controls_state(this.sys, this.ctrlstateptr);\n }\n connectAudio(audio : SampledAudioSink) : void {\n this.audio = audio;\n }\n syncAudio() {\n if (this.audio != null) {\n var n = this.exports.machine_get_sample_count();\n for (var i=0; i address\n addr2symbol: AddrSymbolMap;\t// address -> symbol\n debuginfo: {}; // extra platform-specific debug info\n symbolsizes?: SymbolMap; // symbol -> size in bytes, if known\n symbolAddrs: number[]; // unique symbol addresses, sorted (function starts)\n\n constructor(symbolmap: SymbolMap, debuginfo: {}, symbolsizes?: SymbolMap) {\n this.symbolmap = symbolmap;\n this.debuginfo = debuginfo;\n this.symbolsizes = symbolsizes;\n this.addr2symbol = invertMap(symbolmap);\n this.symbolAddrs = [...new Set(Object.values(symbolmap || {}))].sort((a, b) => a - b);\n //// TODO: shouldn't be necc.\n if (!this.addr2symbol[0x0]) this.addr2symbol[0x0] = '$00'; // needed for ...\n this.addr2symbol[0x10000] = '__END__'; // ... dump memory to work\n }\n}\n\ntype MemoryMapType = \"main\" | \"vram\";\ntype MemoryMap = { [type: string]: Segment[] };\n\nexport function isDebuggable(arg: any): arg is Debuggable {\n return arg && typeof arg.getDebugCategories === 'function';\n}\n\nexport interface Debuggable {\n getDebugCategories?(): string[];\n getDebugInfo?(category: string, state: EmuState): string;\n}\n\nexport interface Platform {\n start(): void | Promise;\n reset(): void;\n isRunning(): boolean;\n getToolForFilename(s: string): string;\n getDefaultExtensions(): string[];\n getPresets?(): Preset[];\n pause(): void;\n resume(): void;\n loadROM(title: string, rom: any, origin?: number); // TODO: Uint8Array\n loadBIOS?(title: string, rom: Uint8Array);\n getROMExtension?(rom: FileData): string;\n\n loadState?(state: EmuState): void;\n saveState?(): EmuState;\n loadControlsState?(state: EmuControlsState): void;\n saveControlsState?(): EmuControlsState;\n\n inspect?(ident: string): string;\n disassemble?(addr: number, readfn: (addr: number) => number): DisasmLine;\n readAddress?(addr: number): number;\n readVRAMAddress?(addr: number): number;\n\n setFrameRate?(fps: number): void;\n getFrameRate?(): number;\n\n setupDebug?(callback: BreakpointCallback): void;\n clearDebug?(): void;\n step?(): void;\n runToVsync?(): void;\n runToPC?(pc: number[]): void;\n // like runToPC(), but each address may carry its own extra condition\n // (null = break unconditionally); handles debug-clock bookkeeping so\n // callers don't have to reach into internal fields to arm a runEval()\n runEvalAtPC?(targets: Map): void;\n runUntilReturn?(): void;\n stepBack?(): void;\n runEval?(evalfunc: DebugEvalCondition): void;\n runToFrameClock?(clock: number): void;\n stepOver?(): void;\n hasCustomStepOver?(): boolean; // true if stepOver() is not the generic instruction-level implementation\n restartAtPC?(pc: number): boolean;\n\n getOpcodeMetadata?(opcode: number, offset: number): OpcodeMetadata; //TODO\n getSP?(): number;\n getPC?(): number;\n getOriginPC?(): number;\n newCodeAnalyzer?(): CodeAnalyzer;\n\n getPlatformName?(): string;\n getMemoryMap?(): MemoryMap;\n\n setRecorder?(recorder: EmuRecorder): void;\n advance?(novideo?: boolean): number;\n advanceFrameClock?(trap: DebugCondition, step: number): number;\n showHelp?(): string;\n resize?(): void;\n\n getRasterScanline?(): number;\n getRasterLineClock?(): number;\n setBreakpoint?(id: string, cond: DebugCondition);\n clearBreakpoint?(id: string);\n hasBreakpoint?(id: string): boolean;\n getCPUState?(): CpuState;\n\n debugSymbols?: DebugSymbols;\n getDebugTree?(): {};\n /** HDL platforms: the design's signals as a tree of values, nested by module (see debugtree.ts) */\n getSignals?(): {};\n /** can the program read paddles (or a mouse)? A host only sends them if so. */\n acceptsPaddles?(): boolean;\n /** x and y in 0..255, and the buttons held */\n setPaddles?(x: number, y: number, buttons: boolean[]): void;\n /** HDL platforms: clock cycles since power-up */\n getClockCount?(): number | undefined;\n /**\n * HDL platforms: call `sink` with the design's state before every clock\n * (null stops). Costs the fast frame path, so only while recording.\n */\n setTraceSink?(sink: ((state: {[name: string]: any}) => void) | null): void;\n\n startProbing?(): ProbeRecorder;\n stopProbing?(): void;\n\n isBlocked?(): boolean; // is blocked, halted, or waiting for input?\n\n readFile?(path: string): FileData;\n writeFile?(path: string, data: FileData): boolean;\n sourceFileFetch?: (path: string) => FileData;\n\n getDownloadFile?(): { extension: string, blob: Blob };\n getDebugSymbolFile?(): { extension: string, blob: Blob };\n}\n\nexport interface Preset {\n id: string;\n name: string;\n chapter?: number;\n title?: string;\n category?: string;\n}\n\nexport interface MemoryBus {\n read: (address: number) => number;\n write: (address: number, value: number) => void;\n contend?: (address: number, cycles: number) => number;\n isContended?: (address: number) => boolean;\n}\n\nexport type DebugCondition = () => boolean;\nexport type DebugEvalCondition = (c: CpuState) => boolean;\nexport type BreakpointCallback = (s: EmuState, msg?: string) => void;\n// for composite breakpoints w/ single debug function\nexport class BreakpointList {\n id2bp: { [id: string]: Breakpoint } = {};\n getDebugCondition(): DebugCondition {\n if (Object.keys(this.id2bp).length == 0) {\n return null; // no breakpoints\n } else {\n // evaluate all breakpoints\n return () => {\n var result = false;\n for (var id in this.id2bp)\n if (this.id2bp[id].cond())\n result = true;\n return result;\n };\n }\n }\n}\nexport interface Breakpoint {\n cond: DebugCondition;\n};\n\nexport interface EmuRecorder {\n frameRequested(): boolean;\n recordFrame(state: EmuState);\n}\n\n/////\n\nexport abstract class BasePlatform {\n recorder: EmuRecorder = null;\n debugSymbols: DebugSymbols;\n internalFiles: { [path: string]: FileData } = {};\n\n abstract loadState(state: EmuState): void;\n abstract saveState(): EmuState;\n abstract pause(): void;\n abstract resume(): void;\n abstract advance(novideo?: boolean): number;\n\n setRecorder(recorder: EmuRecorder): void {\n this.recorder = recorder;\n }\n updateRecorder() {\n // are we recording and do we need to save a frame?\n if (this.recorder && (this).isRunning() && this.recorder.frameRequested()) {\n this.recorder.recordFrame(this.saveState());\n }\n }\n inspect(sym: string): string {\n return inspectSymbol((this as any) as Platform, sym);\n }\n getDebugTree(): {} {\n var o: any = {};\n o.state = this.saveState();\n if (this.debugSymbols?.debuginfo) o.debuginfo = this.debugSymbols.debuginfo;\n return o;\n }\n readFile(path: string): FileData {\n return this.internalFiles[path];\n }\n writeFile(path: string, data: FileData): boolean {\n this.internalFiles[path] = data;\n return true;\n }\n}\n\nexport abstract class BaseDebugPlatform extends BasePlatform {\n onBreakpointHit: BreakpointCallback;\n debugCallback: DebugCondition;\n debugSavedState: EmuState = null;\n debugBreakState: EmuState = null;\n debugTargetClock: number = 0;\n debugClock: number = 0;\n breakpoints: BreakpointList = new BreakpointList();\n frameCount: number = 0;\n\n abstract getCPUState(): CpuState;\n\n // Some CPU cores save their program counter one byte before or after the\n // opcode they are on, so a raw PC lands on an operand or on the previous\n // instruction. debugPCDelta corrects it: getCPUState() and saveState()\n // report PC + delta, which is the address of the opcode, the same address\n // getPC() returns.\n debugPCDelta = 0;\n fixPC(c) { c.PC = (c.PC + this.debugPCDelta) & 0xffff; return c; }\n unfixPC(c) { c.PC = (c.PC - this.debugPCDelta) & 0xffff; return c; }\n\n // True if a breakpoint targets the effective PC (see EPC), which some\n // platforms use to fold a bank offset into the address. Those need the CPU\n // state to find, so they skip the cheap getPC() test in runEvalAtPC().\n debugUsesEPC(): boolean { return false; }\n\n setBreakpoint(id: string, cond: DebugCondition) {\n if (cond) {\n this.breakpoints.id2bp[id] = { cond: cond };\n this.restartDebugging();\n } else {\n this.clearBreakpoint(id);\n }\n }\n clearBreakpoint(id: string) {\n delete this.breakpoints.id2bp[id];\n }\n hasBreakpoint(id: string) {\n return this.breakpoints.id2bp[id] != null;\n }\n getDebugCallback(): DebugCondition {\n return this.breakpoints.getDebugCondition();\n }\n setupDebug(callback: BreakpointCallback): void {\n this.onBreakpointHit = callback;\n }\n clearDebug() {\n if (this.debugBreakState != null && this.debugSavedState != null) {\n this.loadState(this.debugSavedState);\n }\n this.debugSavedState = null;\n this.debugBreakState = null;\n this.debugTargetClock = -1;\n this.debugClock = 0;\n this.onBreakpointHit = null;\n this.clearBreakpoint('debug');\n this.frameCount = 0;\n }\n setDebugCondition(debugCond: DebugCondition) {\n this.setBreakpoint('debug', debugCond);\n }\n resetDebugging() {\n if (this.debugSavedState) {\n this.loadState(this.debugSavedState);\n } else {\n this.debugSavedState = this.saveState();\n }\n this.debugClock = 0;\n this.debugCallback = this.getDebugCallback();\n this.debugBreakState = null;\n }\n restartDebugging() {\n this.resetDebugging();\n this.resume();\n }\n preFrame() {\n // save state before frame, to record any inputs that happened pre-frame\n if (this.debugCallback && !this.debugBreakState) {\n // save state every frame and rewind debug clocks\n this.debugSavedState = this.saveState();\n this.debugTargetClock -= this.debugClock;\n this.debugClock = 0;\n }\n }\n postFrame() {\n // reload debug state at end of frame after breakpoint\n if (this.debugCallback && this.debugBreakState) {\n this.loadState(this.debugBreakState);\n }\n this.frameCount++;\n }\n pollControls() {\n }\n nextFrame(novideo: boolean): number {\n this.pollControls();\n this.updateRecorder();\n this.preFrame();\n var steps = this.advance(novideo);\n this.postFrame();\n return steps;\n }\n // default debugging\n abstract getSP(): number;\n abstract getPC(): number;\n abstract isStable(): boolean;\n\n evalDebugCondition() {\n if (this.debugCallback && !this.debugBreakState) {\n this.debugCallback();\n }\n }\n wasBreakpointHit(): boolean {\n return this.debugBreakState != null;\n }\n breakpointHit(targetClock: number, reason?: string) {\n console.log(this.debugTargetClock, targetClock, this.debugClock, this.isStable());\n this.debugTargetClock = targetClock;\n this.debugBreakState = this.saveState();\n console.log(\"Breakpoint at clk\", this.debugClock, \"PC\", this.debugBreakState.c.PC.toString(16));\n this.pause();\n if (this.onBreakpointHit) {\n this.onBreakpointHit(this.debugBreakState, reason);\n }\n }\n haltAndCatchFire(reason: string) {\n this.breakpointHit(this.debugClock, reason);\n }\n runEval(evalfunc: DebugEvalCondition) {\n this.setDebugCondition(() => {\n if (++this.debugClock >= this.debugTargetClock && this.isStable()) {\n var cpuState = this.getCPUState();\n if (evalfunc(cpuState)) {\n this.breakpointHit(this.debugClock);\n return true;\n } else {\n return false;\n }\n }\n });\n }\n runToPC(pc: number[]) {\n this.runEvalAtPC(new Map(pc.map((a) => [a, null])));\n }\n // Runs until a breakpoint is hit, which can be a whole frame away, so it\n // tests getPC() on its own rather than building a CPU state at every\n // instruction. The state is only wanted once an address matches, to run\n // that breakpoint's condition.\n runEvalAtPC(targets: Map) {\n this.debugTargetClock++;\n const useEPC = this.debugUsesEPC();\n this.setDebugCondition(() => {\n if (++this.debugClock < this.debugTargetClock || !this.isStable()) return;\n if (!useEPC && !targets.has(this.getPC())) return;\n const c = this.getCPUState();\n const epc = c.EPC != null ? c.EPC : c.PC;\n if (!targets.has(epc)) return;\n const cond = targets.get(epc);\n if (cond && !cond(c)) return;\n this.breakpointHit(this.debugClock);\n return true;\n });\n }\n runUntilReturn() {\n var SP0 = this.getSP();\n this.runEval((c: CpuState): boolean => {\n return c.SP > SP0; // TODO: check for RTS/RET opcode\n });\n }\n // step over one CPU instruction; if it is a subroutine call,\n // run at full speed until the instruction following it\n stepOver() {\n var p = (this);\n var pc = this.getPC();\n var d = null;\n var readfn = p.readAddress?.bind(p);\n if (readfn && p.disassemble) {\n d = p.disassemble(pc, readfn);\n }\n if (d && d.iscall) {\n // run until we return from the subroutine call\n var nextPC = pc + d.nbytes;\n this.debugTargetClock++;\n this.runEval((c) => c.PC == nextPC);\n } else {\n // not a call, just single-step\n this.step();\n }\n }\n hasCustomStepOver() { return false; }\n runToFrameClock(clock: number): void {\n this.restartDebugging();\n this.debugTargetClock = clock;\n this.runEval((): boolean => { return true; });\n }\n step() {\n this.runToFrameClock(this.debugClock + 1);\n }\n stepBack() {\n var prevState;\n var prevClock;\n var clock0 = this.debugTargetClock;\n this.restartDebugging();\n this.debugTargetClock = clock0 - 25; // TODO: depends on CPU\n this.runEval((c: CpuState): boolean => {\n if (this.debugClock < clock0) {\n prevState = this.saveState();\n prevClock = this.debugClock;\n return false;\n } else {\n if (prevState) {\n this.loadState(prevState);\n this.debugClock = prevClock;\n }\n return true;\n }\n });\n }\n runToVsync() {\n this.restartDebugging();\n var frame0 = this.frameCount;\n this.runEval((): boolean => {\n return this.frameCount > frame0;\n });\n }\n}\n\nexport function inspectSymbol(platform: Platform, sym: string): string {\n if (!platform.debugSymbols) return;\n var symmap = platform.debugSymbols.symbolmap;\n var addr2sym = platform.debugSymbols.addr2symbol;\n if (!symmap || !platform.readAddress) return null;\n var addr = symmap[\"_\" + sym] || symmap[sym]; // look for C or asm symbol\n if (!(typeof addr == 'number')) return null;\n var b = platform.readAddress(addr);\n // don't show 2 bytes if there's a symbol at the next address\n if (addr2sym && addr2sym[addr + 1] != null) {\n return \"$\" + hex(addr, 4) + \" = $\" + hex(b, 2) + \" (\" + b + \" decimal)\"; // unsigned\n } else {\n let b2 = platform.readAddress(addr + 1);\n let w = b | (b2 << 8);\n return \"$\" + hex(addr, 4) + \" = $\" + hex(b, 2) + \" $\" + hex(b2, 2) + \" (\" + ((w << 16) >> 16) + \" decimal)\"; // signed\n }\n}\n\n////// 6502\n\n// TODO: can merge w/ Z80?\nexport abstract class Base6502Platform extends BaseDebugPlatform {\n\n // the MOS6502 keeps its PC one byte past the opcode it fetched\n debugPCDelta = -1;\n getSP() { return this.getCPUState().SP };\n getPC() { return this.getCPUState().PC };\n isStable() { return !this.getCPUState()['T']; }\n abstract readAddress(addr: number): number;\n\n newCPU(membus: MemoryBus) {\n var cpu = new _MOS6502();\n cpu.connectBus(membus);\n return cpu;\n }\n\n getOpcodeMetadata(opcode, offset) {\n return getOpcodeMetadata_6502(opcode, offset);\n }\n\n getOriginPC(): number {\n return (this.readAddress(0xfffc) | (this.readAddress(0xfffd) << 8)) & 0xffff;\n }\n\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassemble6502(pc, read(pc), read(pc + 1), read(pc + 2));\n }\n getToolForFilename = getToolForFilename_6502;\n getDefaultExtensions() { return [\".c\", \".sdcc\", \".cpp\", \".o64\", \".acme\", \".xa\", \".ca65\", \".dasm\", \".ecs\", \".wiz\"]; };\n\n getDebugCategories() {\n return ['CPU', 'ZPRAM', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6502(state.c);\n case 'ZPRAM': return dumpRAM(state.b || state.ram, 0x0, 0x100);\n case 'Stack': return dumpStackToString(this, state.b || state.ram, 0x100, 0x1ff, 0x100 + state.c.SP, 0x20);\n }\n }\n}\n\nexport function cpuStateToLongString_6502(c): string {\n function decodeFlags(c) {\n var s = \"\";\n s += c.N ? \" N\" : \" -\";\n s += c.V ? \" V\" : \" -\";\n s += c.D ? \" D\" : \" -\";\n s += c.Z ? \" Z\" : \" -\";\n s += c.C ? \" C\" : \" -\";\n s += c.I ? \" I\" : \" -\";\n return s;\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c) + \"\\n\"\n + \" A \" + hex(c.A) + \" \" + (c.R ? \"\" : \"BUSY\") + \"\\n\"\n + \" X \" + hex(c.X) + \"\\n\"\n + \" Y \" + hex(c.Y) + \" \" + \"SP \" + hex(c.SP) + \"\\n\";\n}\n\nvar OPMETA_6502 = {\n cycletime: [\n 7, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 4, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 4, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 6, 6, 0, 8, 3, 3, 5, 5, 3, 2, 2, 2, 3, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 6, 6, 0, 8, 3, 3, 5, 5, 4, 2, 2, 2, 5, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 0, 6, 0, 6, 3, 3, 3, 3, 2, 0, 2, 0, 4, 4, 4, 4, 2, 6, 0, 0, 4, 4, 4, 4, 2, 5, 2, 0, 0, 5, 0, 0, 2, 6, 2, 6, 3, 3, 3, 3, 2, 2, 2, 0, 4, 4, 4, 4, 2, 5, 0, 5, 4, 4, 4, 4, 2, 4, 2, 0, 4, 4, 4, 4, 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 2, 4, 4, 3, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7, 2, 6, 0, 8, 3, 3, 5, 5, 2, 2, 2, 0, 4, 4, 6, 6, 2, 5, 0, 8, 4, 4, 6, 6, 2, 4, 0, 7, 4, 4, 7, 7\n ],\n extracycles: [\n 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1\n ],\n insnlengths: [\n 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 3, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 1, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 0, 2, 0, 2, 2, 2, 2, 2, 1, 0, 1, 0, 3, 3, 3, 3, 2, 2, 0, 0, 2, 2, 2, 3, 1, 3, 1, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 1, 0, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 2, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 2, 1, 0, 3, 3, 3, 3, 2, 2, 0, 2, 2, 2, 2, 2, 1, 3, 0, 3, 3, 3, 3, 3\n ],\n validinsns: [\n 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 0, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 3, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 0, 2, 0, 0, 2, 2, 2, 0, 1, 0, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 0, 3, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 3, 0, 0, 0, 3, 3, 0\n ],\n}\n\nexport function getOpcodeMetadata_6502(opcode, address) {\n // TODO: more intelligent maximum cycles\n // TODO: must always be new object, b/c we might modify it\n return {\n opcode: opcode,\n minCycles: OPMETA_6502.cycletime[opcode],\n maxCycles: OPMETA_6502.cycletime[opcode] + OPMETA_6502.extracycles[opcode],\n insnlength: OPMETA_6502.insnlengths[opcode]\n };\n}\n\n////// Z80\n\nexport function cpuStateToLongString_Z80(c) {\n function decodeFlags(flags) {\n return printFlags(flags, [\"S\", \"Z\", , \"H\", , \"V\", \"N\", \"C\"], true);\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c.AF) + \" \" + (c.iff1 ? \"I\" : \"-\") + (c.iff2 ? \"I\" : \"-\") + \"\\n\"\n + \"SP \" + hex(c.SP, 4) + \" IR \" + hex(c.IR, 4) + \"\\n\"\n + \"IX \" + hex(c.IX, 4) + \" IY \" + hex(c.IY, 4) + \"\\n\"\n + \"AF \" + hex(c.AF, 4) + \" BC \" + hex(c.BC, 4) + \"\\n\"\n + \"DE \" + hex(c.DE, 4) + \" HL \" + hex(c.HL, 4) + \"\\n\"\n ;\n}\n\nexport function cpuStateToLongString_SM83(c) {\n function decodeFlags(af) {\n return printFlags(af, [\"Z\", \"N\", \"H\", \"C\"], true);\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c.AF >> 4) + \" \" + (c.ime ? \"I\" : \"-\") + \"\\n\"\n + \"SP \" + hex(c.SP, 4) + \"\\n\"\n + \"AF \" + hex(c.AF, 4) + \" BC \" + hex(c.BC, 4) + \"\\n\"\n + \"DE \" + hex(c.DE, 4) + \" HL \" + hex(c.HL, 4) + \"\\n\"\n ;\n}\n\nexport abstract class BaseZ80Platform extends BaseDebugPlatform {\n\n _cpu;\n waitCycles: number = 0;\n\n newCPU(membus: MemoryBus, iobus: MemoryBus) {\n this._cpu = new Z80();\n this._cpu.connectMemoryBus(membus);\n this._cpu.connectIOBus(iobus);\n return this._cpu;\n }\n\n getPC() { return this._cpu.getPC(); }\n getSP() { return this._cpu.getSP(); }\n isStable() { return true; }\n\n // TODO: refactor other parts into here\n runCPU(cpu, cycles: number): number {\n this._cpu = cpu; // TODO?\n this.waitCycles = 0; // TODO: needs to spill over betwenn calls\n if (this.wasBreakpointHit())\n return 0;\n var debugCond = this.getDebugCallback();\n var n = 0;\n this.waitCycles += cycles;\n while (this.waitCycles > 0) {\n if (debugCond && debugCond()) {\n debugCond = null;\n break;\n }\n var cyc = cpu.advanceInsn();\n n += cyc;\n this.waitCycles -= cyc;\n }\n return n;\n }\n\n getToolForFilename = getToolForFilename_z80;\n getDefaultExtensions() { return [\".c\", \".sdcc\", \".ns\", \".s\", \".scc\", \".sgb\", \".z\", \".wiz\"]; };\n // TODO: Z80 opcode metadata\n //this.getOpcodeMetadata = function() { }\n\n getDebugCategories() {\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_Z80(state.c);\n case 'Stack': {\n var sp = (state.c.SP - 1) & 0xffff;\n var start = sp & 0xff00;\n var end = start + 0xff;\n if (sp == 0) sp = 0x10000;\n console.log(sp, start, end);\n return dumpStackToString(this, [], start, end, sp, 0xcd);\n }\n }\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassembleZ80(pc, read(pc), read(pc + 1), read(pc + 2), read(pc + 3));\n }\n}\n\n////// 6809\n\nexport function cpuStateToLongString_6809(c) {\n function decodeFlags(flags) {\n return printFlags(flags, [\"E\", \"F\", \"H\", \"I\", \"N\", \"Z\", \"V\", \"C\"], true);\n }\n return \"PC \" + hex(c.PC, 4) + \" \" + decodeFlags(c.CC) + \"\\n\"\n + \"SP \" + hex(c.SP, 4) + \"\\n\"\n + \"DP \" + hex(c.DP, 2) + \"\\n\"\n + \" A \" + hex(c.A, 2) + \"\\n\"\n + \" B \" + hex(c.B, 2) + \"\\n\"\n + \" X \" + hex(c.X, 4) + \"\\n\"\n + \" Y \" + hex(c.Y, 4) + \"\\n\"\n + \" U \" + hex(c.U, 4) + \"\\n\"\n ;\n}\n\nexport abstract class Base6809Platform extends BaseZ80Platform {\n\n newCPU(membus: MemoryBus) {\n var cpu = Object.create(CPU6809());\n cpu.init(membus.write, membus.read, 0);\n return cpu;\n }\n\n cpuStateToLongString(c: CpuState) {\n return cpuStateToLongString_6809(c);\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n // TODO: don't create new CPU\n return Object.create(CPU6809()).disasm(read(pc), read(pc + 1), read(pc + 2), read(pc + 3), read(pc + 4), pc);\n }\n getDefaultExtensions() { return [\".c\", \".lwasm\", \".xasm\"]; };\n //this.getOpcodeMetadata = function() { }\n getToolForFilename = getToolForFilename_6809;\n getDebugCategories() {\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6809(state.c);\n default: return super.getDebugInfo(category, state);\n }\n }\n}\n\n\n//TODO: how to get stack_end?\nexport function dumpStackToString(platform: Platform, mem: Uint8Array | number[], start: number, end: number, sp: number, jsrop: number, bigendian?: boolean): string {\n var s = \"\";\n var nraw = 0;\n //s = dumpRAM(mem.slice(start,start+end+1), start, end-start+1);\n function read(addr) {\n if (addr < mem.length) return mem[addr];\n else return platform.readAddress(addr);\n }\n while (sp < end) {\n sp++;\n // see if there's a JSR on the stack here\n // TODO: make work with roms and memory maps\n var addr = read(sp) + read(sp + 1) * 256;\n if (bigendian) { addr = ((addr & 0xff) << 8) | ((addr & 0xff00) >> 8) }\n var jsrofs = jsrop == 0x20 ? -2 : -3; // 6502 vs Z80\n var opcode = read(addr + jsrofs); // might be out of bounds\n if (opcode == jsrop) { // JSR\n s += \"\\n$\" + hex(sp) + \": \";\n s += hex(addr, 4) + \" \" + lookupSymbol(platform, addr, true);\n sp++;\n nraw = 0;\n } else {\n if (nraw == 0)\n s += \"\\n$\" + hex(sp) + \": \";\n s += hex(read(sp)) + \" \";\n if (++nraw == 8) nraw = 0;\n }\n }\n return s + \"\\n\";\n}\n\n// TODO: slow, funky, uses global\nexport function lookupSymbol(platform: Platform, addr: number, extra: boolean) {\n var start = addr;\n var addr2symbol = platform.debugSymbols && platform.debugSymbols.addr2symbol;\n while (addr2symbol && addr >= 0) {\n var sym = addr2symbol[addr];\n if (sym) { // return first symbol we find\n var sym = addr2symbol[addr];\n return extra ? (sym + \" + $\" + hex(start - addr)) : sym;\n }\n if (!extra) break;\n addr--;\n }\n return \"\";\n}\n\n/// new Machine platform adapters\n\nexport interface Machine extends Bus, Resettable, FrameBased, AcceptsROM, HasCPU, SavesState, SavesInputState {\n}\n\nexport function hasVideo(arg: any): arg is VideoSource {\n return typeof arg.connectVideo === 'function';\n}\nexport function hasAudio(arg: any): arg is SampledAudioSource {\n return typeof arg.connectAudio === 'function';\n}\nexport function hasKeyInput(arg: any): arg is AcceptsKeyInput {\n return typeof arg.setKeyInput === 'function';\n}\nexport function hasJoyInput(arg: any): arg is AcceptsJoyInput {\n return typeof arg.setJoyInput === 'function';\n}\nexport function hasPaddleInput(arg: any): arg is AcceptsPaddleInput {\n return typeof arg.setPaddleInput === 'function';\n}\nexport function isRaster(arg: any): arg is RasterFrameBased {\n return typeof arg.getRasterY === 'function';\n}\nexport function hasProbe(arg: any): arg is Probeable {\n return typeof arg.connectProbe == 'function';\n}\nexport function hasBIOS(arg: any): arg is AcceptsBIOS {\n return typeof arg.loadBIOS == 'function';\n}\nexport function hasSerialIO(arg: any): arg is HasSerialIO {\n return typeof arg.connectSerialIO === 'function';\n}\n\nexport abstract class BaseMachinePlatform extends BaseDebugPlatform implements Platform {\n machine: T;\n mainElement: HTMLElement;\n options: any; // URL options (?options=key%3Dvalue), if any\n timer: AnimationTimer;\n video: RasterVideo;\n audio: SampledAudio;\n poller: ControllerPoller;\n serialIOInterface: SerialIOInterface;\n serialVisualizer: SerialIOVisualizer;\n\n probeRecorder: ProbeRecorder;\n startProbing;\n stopProbing;\n // The probe's singleFrame flag saved while runToVsync() holds a frame open,\n // restored by pause() when the run stops (the run is timer-driven, so the\n // stop happens after runToVsync() has returned).\n probeSingleFrame: boolean = null;\n\n abstract newMachine(): T;\n abstract getToolForFilename(s: string): string;\n abstract getDefaultExtensions(): string[];\n abstract getPresets(): Preset[];\n\n constructor(mainElement: HTMLElement, options?: any) {\n super();\n this.mainElement = mainElement;\n this.options = options || {};\n }\n\n reset() {\n this.machine.reset();\n if (this.serialVisualizer != null) this.serialVisualizer.reset();\n }\n // The machine's CPU state is the core's own, so debugPCDelta corrects its PC\n // on the way out and restores it on the way in. The machine's cpu.getPC()\n // already names the opcode, so getPC() is left alone.\n loadState(s) {\n if (!this.debugPCDelta || !s.c) return this.machine.loadState(s);\n this.unfixPC(s.c);\n try { this.machine.loadState(s); } finally { this.fixPC(s.c); }\n }\n saveState() {\n const s = this.machine.saveState();\n if (this.debugPCDelta && s.c) this.fixPC(s.c);\n return s;\n }\n getSP() { return this.machine.cpu.getSP(); }\n getPC() { return this.machine.cpu.getPC(); }\n isStable() { return this.machine.cpu.isStable(); }\n getCPUState() { return this.fixPC(this.machine.cpu.saveState()); }\n loadControlsState(s) { this.machine.loadControlsState(s); }\n saveControlsState() { return this.machine.saveControlsState(); }\n\n async start() {\n this.machine = this.newMachine();\n const m = this.machine;\n // block on WASM loading\n if (m instanceof BaseWASMMachine) {\n await m.loadWASM();\n }\n var videoFrequency;\n if (hasVideo(m)) {\n var vp = m.getVideoParams();\n this.video = new RasterVideo(this.mainElement, vp.width, vp.height,\n {\n overscan: !!vp.overscan,\n rotate: vp.rotate | 0,\n aspect: vp.aspect\n });\n this.video.create();\n m.connectVideo(this.video.getFrameData());\n // TODO: support keyboard w/o video?\n if (hasKeyInput(m)) {\n this.video.setKeyboardEvents(m.setKeyInput.bind(m));\n this.poller = new ControllerPoller(m.setKeyInput.bind(m));\n }\n videoFrequency = vp.videoFrequency;\n }\n this.timer = new AnimationTimer(videoFrequency || 60, this.nextFrame.bind(this));\n if (hasAudio(m)) {\n var ap = m.getAudioParams();\n this.audio = new SampledAudio(ap.sampleRate);\n this.audio.start();\n m.connectAudio(this.audio);\n }\n if (hasPaddleInput(m)) {\n this.video.setupMouseEvents();\n }\n if (hasProbe(m)) {\n this.probeRecorder = new ProbeRecorder(m);\n this.startProbing = () => {\n m.connectProbe(this.probeRecorder);\n return this.probeRecorder;\n };\n this.stopProbing = () => {\n m.connectProbe(null);\n };\n }\n if (hasBIOS(m)) {\n this.loadBIOS = (title, data) => {\n m.loadBIOS(data, title);\n };\n }\n if (hasSerialIO(m)) {\n if (this.serialIOInterface == null) {\n this.serialVisualizer = new SerialIOVisualizer(this.mainElement, m);\n } else {\n m.connectSerialIO(this.serialIOInterface);\n }\n }\n }\n\n loadROM(title, data, origin?: number) {\n this.machine.loadROM(data, title, origin);\n this.reset();\n }\n\n loadBIOS: (title, data) => void; // only set if hasBIOS() is true\n\n acceptsPaddles() {\n return hasPaddleInput(this.machine);\n }\n\n setPaddles(x: number, y: number, buttons: boolean[]) {\n // pollControls() passes these on to the machine at the next frame\n this.video.paddle_x = x;\n this.video.paddle_y = y;\n buttons.forEach((b, i) => this.video.paddle_buttons[i] = b);\n }\n\n pollControls() {\n this.poller && this.poller.poll();\n if (hasPaddleInput(this.machine)) {\n this.machine.setPaddleInput(0, this.video.paddle_x);\n this.machine.setPaddleInput(1, this.video.paddle_y);\n if (this.machine.setPaddleButton && this.video.paddle_buttons != null) {\n this.machine.setPaddleButton(0, this.video.paddle_buttons[0]);\n this.machine.setPaddleButton(1, this.video.paddle_buttons[1]);\n this.machine.setPaddleButton(2, this.video.paddle_buttons[2]);\n }\n }\n // TODO: put into interface\n if (this.machine['pollControls']) {\n this.machine['pollControls']();\n }\n }\n\n advance(novideo: boolean) {\n let trap = this.getDebugCallback();\n try {\n var steps = this.machine.advanceFrame(trap);\n return steps;\n } finally {\n // in case EmuHalt is thrown...\n if (!novideo && this.video) {\n this.video.updateFrame();\n this.updateVideoDebugger();\n }\n if (!novideo && this.serialVisualizer) {\n this.serialVisualizer.refresh();\n }\n }\n }\n\n updateVideoDebugger() {\n if (!this.isRunning() && isRaster(this.machine) && this.machine.getRasterCanvasPosition) {\n const { x, y } = this.machine.getRasterCanvasPosition();\n if (x >= 0 || y >= 0) {\n const ctx = this.video?.getContext();\n if (ctx) {\n drawCrosshair(ctx, x, y, 1);\n }\n }\n }\n }\n\n advanceFrameClock(trap, step) {\n if (!(step > 0)) return;\n if (this.machine instanceof BaseWASMMachine) {\n return this.machine.advanceFrameClock(trap, step);\n } else {\n return this.machine.advanceFrame(() => {\n return --step <= 0;\n });\n }\n }\n\n isRunning() {\n return this.timer && this.timer.isRunning();\n }\n\n resume() {\n this.timer.start();\n this.audio && this.audio.start();\n this.poller && this.poller.start();\n }\n\n pause() {\n this.timer.stop();\n this.audio && this.audio.stop();\n this.poller && this.poller.stop();\n // runToVsync() holds a frame open for the probe; put the probe's own\n // setting back now that the run has stopped.\n if (this.probeRecorder && this.probeSingleFrame != null) {\n this.probeRecorder.singleFrame = this.probeSingleFrame;\n this.probeSingleFrame = null;\n }\n }\n\n // so probe views stick around TODO: must be a better way?\n runToVsync() {\n // A single-frame step stops on the next frame boundary -- exactly where\n // ProbeRecorder.logNewFrame() clears a singleFrame buffer -- which would\n // leave the probe views blank. Clear here and hold the frame open until\n // the run stops instead. pause() restores the saved setting.\n if (this.probeRecorder) {\n this.probeSingleFrame = this.probeRecorder.singleFrame;\n this.probeRecorder.reset();\n this.probeRecorder.singleFrame = false;\n }\n this.restartDebugging();\n var flag = false;\n this.runEval((): boolean => {\n if (this.getRasterScanline() > 0) flag = true;\n else return flag;\n });\n }\n\n // TODO: reset target clock counter\n getRasterScanline() {\n return isRaster(this.machine) && this.machine.getRasterY ? this.machine.getRasterY() : -1;\n }\n getRasterLineClock() {\n return isRaster(this.machine) && this.machine.getRasterX ? this.machine.getRasterX() : -1;\n }\n\n readAddress(addr: number): number {\n return this.machine.read(addr);\n }\n\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n }\n getDebugInfo(category: string, state: EmuState): string {\n return isDebuggable(this.machine) && this.machine.getDebugInfo(category, state);\n }\n}\n\n// TODO: move debug info into CPU?\n\nexport abstract class Base6502MachinePlatform extends BaseMachinePlatform {\n\n getOpcodeMetadata = getOpcodeMetadata_6502;\n getToolForFilename(fn) { return getToolForFilename_6502(fn); }\n getDefaultExtensions() { return [\".c\", \".cpp\", \".o64\", \".acme\", \".xa\", \".ca65\", \".dasm\", \".ecs\", \".wiz\"]; }\n\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassemble6502(pc, read(pc), read(pc + 1), read(pc + 2));\n }\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n else\n return ['CPU', 'ZPRAM', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6502(state.c);\n case 'ZPRAM': return dumpRAM(state.b || state.ram, 0x0, 0x100);\n case 'Stack': return dumpStackToString(this, state.b || state.ram, 0x100, 0x1ff, 0x100 + state.c.SP, 0x20);\n default: return isDebuggable(this.machine) && this.machine.getDebugInfo(category, state);\n }\n }\n}\n\nexport abstract class BaseZ80MachinePlatform extends BaseMachinePlatform {\n\n //getOpcodeMetadata = getOpcodeMetadata_z80;\n getToolForFilename = getToolForFilename_z80;\n getDefaultExtensions() { return [\".c\", \".ns\", \".s\", \".scc\", \".sgb\", \".z\", \".wiz\"]; }\n\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n else\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_Z80(state.c);\n case 'Stack': {\n var sp = (state.c.SP - 1) & 0xffff;\n var start = sp & 0xff00;\n var end = start + 0xff;\n if (sp == 0) sp = 0x10000;\n return dumpStackToString(this, [], start, end, sp, 0xcd);\n }\n default: return isDebuggable(this.machine) && this.machine.getDebugInfo(category, state);\n }\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n return disassembleZ80(pc, read(pc), read(pc + 1), read(pc + 2), read(pc + 3));\n }\n\n}\n\nexport abstract class Base6809MachinePlatform extends BaseMachinePlatform {\n\n getToolForFilename = getToolForFilename_6809;\n getDefaultExtensions() { return [\".c\", \".lwasm\", \".xasm\"]; }\n\n getDebugCategories() {\n if (isDebuggable(this.machine))\n return this.machine.getDebugCategories();\n else\n return ['CPU', 'Stack'];\n }\n getDebugInfo(category: string, state: EmuState): string {\n switch (category) {\n case 'CPU': return cpuStateToLongString_6809(state.c);\n case 'Stack': {\n var sp = (state.c.SP - 1) & 0xffff;\n var start = sp & 0xff00;\n var end = start + 0xff;\n if (sp == 0) sp = 0x10000;\n return dumpStackToString(this, [], start, end, sp, 0x17, true);\n }\n default: return super.getDebugInfo(category, state);\n }\n }\n disassemble(pc: number, read: (addr: number) => number): DisasmLine {\n // TODO: don't create new CPU\n return Object.create(CPU6809()).disasm(read(pc), read(pc + 1), read(pc + 2), read(pc + 3), read(pc + 4), pc);\n }\n}\n\n///\n\nclass SerialIOVisualizer {\n\n textarea: HTMLTextAreaElement;\n //vlist: VirtualTextScroller;\n device: HasSerialIO;\n lastOutCount = -1;\n lastInCount = -1;\n\n constructor(parentElement: HTMLElement, device: HasSerialIO) {\n this.device = device;\n this.textarea = document.createElement(\"textarea\");\n this.textarea.classList.add('transcript');\n this.textarea.classList.add('transcript-style-2');\n this.textarea.style.display = 'none';\n parentElement.appendChild(this.textarea);\n /*\n this.vlist = new VirtualTextScroller(parentElement);\n this.vlist.create(parentElement, 1024, this.getMemoryLineAt.bind(this));\n this.vlist.maindiv.style.height = '8em';\n this.vlist.maindiv.style.overflow = 'clip';\n */\n }\n reset() {\n this.lastOutCount = 0;\n this.lastInCount = 0;\n this.textarea.style.display = 'none';\n }\n refresh() {\n var lastop = '';\n if (this.device.serialOut.length != this.lastOutCount) {\n var s = '';\n for (var ev of this.device.serialOut) {\n if (lastop != ev.op) {\n if (s != '') s += '\\n';\n if (ev.op === 'read') s += '<< ';\n else if (ev.op === 'write') s += '>> ';\n lastop = ev.op;\n }\n if (ev.value == 10) { s += '\\u21b5'; lastop = ''; }\n else { s += byteToASCII(ev.value); }\n }\n this.textarea.value = s;\n this.lastOutCount = this.device.serialOut.length;\n this.textarea.style.display = 'block';\n }\n }\n}\n"], - "mappings": "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EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,CAChE,EAEIE,EAAkB,CAClB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAA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AAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,EACzhCC,GAAQ,IAAI,WAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAGjCC,EAAU,CACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAGjCC,EAAU,CACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC9B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EA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EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,MAAM,EACb,CAAC,EAAI,EAAE,KAAK,EACZ,CAAC,EAAI,EAAE,KAAK,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,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEIC,GAAc,CAChB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEIC,GAAc,CAChB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEIC,GAAa,CACf,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,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AAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/vB,EACA,YAAa,CACX,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/vB,EACA,YAAa,CACX,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/vB,EACA,WAAY,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,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", - "names": ["OPS_6502", "disassemble6502", "pc", "b0", "b1", "b2", "op", "s", "am", "isaddr", "offset", "hex", "FastZ80", "coreParameter", "core", "a", "b", "c", "d", "e", "h", "l", "a_prime", "b_prime", "c_prime", "d_prime", "e_prime", "h_prime", "l_prime", "ix", "iy", "i", "r", "sp", "pc", "flags", "flags_prime", "imode", "iff1", "iff2", "halted", "do_delayed_di", "do_delayed_ei", "cycle_counter", "getState", "get_flags_register", "get_flags_prime", "setState", "state", "set_flags_register", "set_flags_prime", "reset", "run_instruction", "doing_delayed_di", "doing_delayed_ei", "opcode", "decode_instruction", "retval", "interrupt", "non_maskable", "data", "push_word", "vector_address", "get_operand", "operand", "op_array", "do_add", "do_adc", "do_sub", "do_sbc", "do_and", "do_xor", "do_or", "do_cp", "func", "instructions", "cycle_counts", "get_signed_offset_byte", "value", "update_xy_flags", "result", "get_parity", "parity_bits", "pop_word", "do_conditional_absolute_jump", "condition", "do_conditional_relative_jump", "offset", "do_conditional_call", "do_conditional_return", "do_reset", "address", "temp", "do_inc", "do_dec", "do_hl_add", "hl", "do_hl_adc", "do_hl_sbc", "do_in", "port", "do_neg", "do_ldi", "read_value", "do_cpi", "temp_carry", "do_ini", "do_outi", "do_ldd", "do_cpd", "do_ind", "do_outd", "do_rlc", "do_rrc", "do_rl", "do_rr", "do_sla", "do_sra", "do_sll", "do_srl", "do_ix_add", "temp_s", "temp_z", "temp_p", "bit_number", "reg_code", "cycle_counts_cb", "dd_instructions", "cycle_counts_dd", "ed_instructions", "cycle_counts_ed", "hl_value", "temp1", "temp2", "ddcb_functions", "Z80", "v", "bus", "s", "MasterAudio", "resumeAudioContext", "AY38910_Audio", "master", "i", "val", "SN76489_Audio", "newPOKEYAudio", "count", "audio", "pokey", "POKEYDeviceChannel", "combinePolys", "a", "b", "arr", "n", "divideBy", "NOTPOLY5", "POLY4", "PURE", "VOL_ONLY", "VOLUME_MASK", "POLY9", "CH1_179", "CH3_179", "CH1_CH2", "CH3_CH4", "CH1_FILTER", "CH2_FILTER", "CLOCK_15", "DIV_64", "DIV_15", "POLY4_SIZE", "POLY5_SIZE", "POLY9_SIZE", "POLY17_SIZE", "CHAN1", "CHAN2", "CHAN3", "CHAN4", "CHIP1", "CHIP2", "CHIP3", "CHIP4", "SAMPLE", "FREQ_17_EXACT", "FREQ_17_APPROX", "bit1", "bit2", "bit4", "bit5", "bit9", "bit15", "bit31", "bit17", "bit17_5", "bit5_4", "wavetones", "div2", "div6", "div31", "div93", "bit15_4", "bit5_2", "bit5_6", "tiawavetones", "regs", "counters", "deltas", "volume", "audc", "waveforms", "buffer", "sampleRate", "clock", "baseDelta", "dirty", "length", "rate", "updateValues", "addr", "ctrl", "base", "div", "j", "k", "value", "s", "sample", "d", "v", "wav", "cnt", "on", "WorkerSoundChannel", "worker", "output", "pending", "pendingLength", "e", "buf", "l", "audioStreamFactory", "AUDIO_CHUNK_SAMPLES", "audioUnlockEvents", "pendingUnlocks", "resumeAudioContext", "ctx", "onGesture", "ev", "SampleAudio", "clockfreq", "self", "sfrac", "sinc", "accum", "buffer", "bufpos", "bufferlist", "ifill", "written", "read", "skippedBuffers", "lastSkipLog", "underruns", "fillHist", "collectStats", "baseSinc", "trim", "fillAvg", "lastTrimAdj", "FILL_TARGET", "FILL_ALPHA", "TRIM_GAIN", "MAX_TRIM", "TRIM_INTERVAL_MS", "MAXBUFFERS", "targetDepth", "mix", "ape", "lbuf", "m", "buf", "i", "clearBuffers", "createContext", "AudioContext", "audioStreamFactory", "arrbuf", "value", "out", "now", "trimNow", "want", "count", "total", "weighted", "maxFill", "fill", "on", "SampledAudio", "sampleRate", "TssChannelAdapter", "chans", "oversample", "c", "sink", "l", "bufs", "ch", "compactProbeLines", "byClk", "k", "ProbeRecorder", "m", "buflen", "newbuflen", "a", "src", "clocks", "address", "SP", "type", "value", "op", "count", "i", "NullProbe", "src", "BasicHeadlessMachine", "key", "code", "flags", "probe", "probing", "data", "title", "origin", "state", "c", "membus", "a", "val", "v", "iobus", "BasicMachine", "audio", "pixels", "BasicScanlineMachine", "trap", "endLineClock", "steps", "sl", "Z80_OPS", "Z80_OPS_ED", "Z80_OPS_CB", "disassembleZ80", "pc", "b0", "b1", "b2", "b3", "op", "n", "am", "bytes", "isaddr", "iscall", "ireg", "hex", "offset", "CPU6809", "ticks", "rA", "rB", "rX", "rY", "rU", "rS", "PC", "CC", "DP", "F_CARRY", "F_OVERFLOW", "F_ZERO", "F_NEGATIVE", "F_IRQMASK", "F_HALFCARRY", "F_FIRQMASK", "F_ENTIRE", "vecRESET", "vecNMI", "vecSWI", "vecIRQ", "vecFIRQ", "vecSWI2", "vecSWI3", "IRQs", "byteTo", "byteAt", "cycles", "cycles2", "flagsNZ", "setV8", "a", "b", "r", "setV16", "getD", "setD", "v", "PUSHB", "PUSHW", "PUSHBU", "PUSHWU", "PULLB", "PULLW", "PULLBU", "PULLWU", "PSHS", "ucTemp", "i", "PSHU", "PULS", "PULU", "getPBR", "ucPostByte", "setPBR", "TFREXG", "bExchange", "signed", "x", "signed16", "fetch", "fetch16", "v1", "v2", "ReadWord", "addr", "WriteWord", "PostByte", "pb", "preg", "xchg", "sTemp", "sByte", "flagsNZ16", "word", "oINC", "oDEC", "oSUB", "temp", "oSUB16", "oADD", "oADD16", "oADC", "oSBC", "oCMP", "oCMP16", "oNEG", "oLSR", "oASR", "oASL", "oROL", "oldc", "oROR", "oEOR", "oOR", "oAND", "oCOM", "dpadd", "step", "oldT", "oldPC", "opcode", "cf", "nhi", "nlo", "reset", "ds", "ds11", "ds10", "disasm", "c", "d", "pc", "toHexN", "n", "s", "toHex2", "toHex4", "rx", "ro", "j", "sx", "bytes", "mode", "mnemo", "ixr", "disp", "ind", "mod", "ofs8", "ofs16", "Ts", "Tt", "t", "bt", "ba", "tck", "reg", "value", "f", "fx", "_MOS6502", "self", "RDY", "T", "instruction", "aBus", "bus", "boo", "I", "fetchOpcodeAndDecodeInstruction", "PC", "RESET_VECTOR", "SP", "A", "X", "Y", "N", "V", "D", "Z", "C", "opcode", "data", "AD", "BA", "BALCrossed", "IA", "branchOffset", "branchOffsetCrossAdjust", "NMI_VECTOR", "IRQ_VECTOR", "rX", "rY", "bN", "bV", "bZ", "bC", "instructions", "fetchNextOpcode", "fetchOpcodeAndDiscard", "fetchBranchOffset", "fetchADL", "fetchADH", "fetchADLFromBA", "fetchADHFromBA", "fetchBAL", "fetchBAH", "fetchBALFromIA", "fetchBAHFromIA", "addXtoBAL", "low", "addYtoBAL", "add1toBAL", "add1toBAHifBALCrossed", "fetchIAL", "fetchIAH", "add1toIAL", "fetchDataFromImmediate", "fetchDataFromAD", "fetchDataFromBA", "writeDataToAD", "writeDataToBA", "addBranchOffsetToPCL", "oldLow", "newLow", "adjustPCHForBranchOffsetCross", "setZ", "val", "setN", "setV", "setC", "popFromStack", "peekFromStack", "pushToStack", "getStatusBits", "setStatusBits", "illegalOpcode", "op", "haltOpcode", "addr", "EmuHalt", "hex", "implied", "operation", "immediateRead", "zeroPageRead", "absoluteRead", "indirectXRead", "absoluteIndexedRead", "index", "addIndex", "zeroPageIndexedRead", "indirectYRead", "zeroPageWrite", "absoluteWrite", "indirectXWrite", "absoluteIndexedWrite", "zeroPageIndexedWrite", "indirectYWrite", "zeroPageReadModifyWrite", "absoluteReadModifyWrite", "zeroPageIndexedReadModifyWrite", "absoluteIndexedReadModifyWrite", "indirectXReadModifyWrite", "indirectYReadModifyWrite", "opcodes", "BRK", "ORA", "uKIL", "uSLO", "uNOP", "ASL", "PHP", "ASL_ACC", "uANC", "Bxx", "CLC", "JSR", "AND", "uRLA", "BIT", "ROL", "PLP", "ROL_ACC", "SEC", "RTI", "EOR", "uSRE", "LSR", "PHA", "LSR_ACC", "uASR", "JMP_ABS", "CLI", "RTS", "ADC", "uRRA", "ROR", "PLA", "ROR_ACC", "uARR", "JMP_IND", "SEI", "STA", "uSAX", "STY", "STX", "DEY", "TXA", "uANE", "uSHA", "TYA", "TXS", "uSHS", "uSHY", "uSHX", "LDY", "LDA", "LDX", "uLAX", "TAY", "TAX", "uLXA", "CLV", "TSX", "uLAS", "CPY", "CMP", "uDCP", "DEC", "INY", "DEX", "uSBX", "CLD", "CPX", "SBC", "uISB", "INC", "INX", "NOP", "SED", "newC", "addressing", "operand", "AL", "AH", "add", "par", "sub", "oldC", "comp", "newX", "IRQ", "NMI", "reg", "cond", "branchTaken", "state", "mes", "text", "cycletime", "extracycles", "insnlengths", "validinsns", "address", "MOS6502", "_MOS6502", "bus", "itype", "s", "op", "BaseWASMMachine", "prefix", "self", "wmod", "wasmResponse", "wasmBinary", "wasmCompiled", "wasmResult", "biosBinary", "biosResponse", "statesize", "ctrlstatesize", "cpustatesize", "sampbufsize", "rom", "EmuHalt", "srcArray", "address", "value", "pixels", "pixbuf", "state", "audio", "n", "i", "trap", "cpf", "NullProbe", "datalen", "dataaddr", "databuf", "probe", "DebugSymbols", "symbolmap", "debuginfo", "symbolsizes", "invertMap", "a", "b", "isDebuggable", "arg", "BreakpointList", "result", "id", "BasePlatform", "recorder", "sym", "inspectSymbol", "_a", "o", "path", "data", "BaseDebugPlatform", "c", "cond", "callback", "debugCond", "novideo", "steps", "targetClock", "reason", "evalfunc", "cpuState", "pc", "targets", "useEPC", "epc", "SP0", "p", "d", "readfn", "nextPC", "clock", "prevState", "prevClock", "clock0", "frame0", "platform", "symmap", "addr2sym", "addr", "hex", "b2", "w", "Base6502Platform", "getToolForFilename_6502", "membus", "cpu", "_MOS6502", "opcode", "offset", "getOpcodeMetadata_6502", "read", "disassemble6502", "category", "state", "cpuStateToLongString_6502", "dumpRAM", "dumpStackToString", "decodeFlags", "s", "OPMETA_6502", "address", "cpuStateToLongString_Z80", "flags", "printFlags", "cpuStateToLongString_SM83", "af", "BaseZ80Platform", "getToolForFilename_z80", "iobus", "Z80", "cycles", "n", "cyc", "sp", "start", "end", "disassembleZ80", "cpuStateToLongString_6809", "Base6809Platform", "getToolForFilename_6809", "CPU6809", "mem", "jsrop", "bigendian", "nraw", "jsrofs", "lookupSymbol", "extra", "addr2symbol", "hasVideo", "hasAudio", "hasKeyInput", "hasPaddleInput", "arg", "isRaster", "hasProbe", "hasBIOS", "hasSerialIO", "BaseMachinePlatform", "BaseDebugPlatform", "mainElement", "options", "s", "m", "BaseWASMMachine", "videoFrequency", "hasVideo", "vp", "RasterVideo", "hasKeyInput", "ControllerPoller", "AnimationTimer", "hasAudio", "ap", "SampledAudio", "ProbeRecorder", "title", "data", "SerialIOVisualizer", "origin", "x", "y", "buttons", "b", "i", "novideo", "trap", "steps", "_a", "ctx", "drawCrosshair", "step", "flag", "addr", "isDebuggable", "category", "state", "Base6502MachinePlatform", "getOpcodeMetadata_6502", "fn", "getToolForFilename_6502", "pc", "read", "disassemble6502", "cpuStateToLongString_6502", "dumpRAM", "dumpStackToString", "BaseZ80MachinePlatform", "getToolForFilename_z80", "cpuStateToLongString_Z80", "sp", "start", "end", "disassembleZ80", "Base6809MachinePlatform", "getToolForFilename_6809", "cpuStateToLongString_6809", "CPU6809", "parentElement", "device", "lastop", "ev", "byteToASCII"] -} diff --git a/gen/chunk-UNDRK5PG.js b/gen/chunk-JELKPLZC.js similarity index 98% rename from gen/chunk-UNDRK5PG.js rename to gen/chunk-JELKPLZC.js index 740de93c..79637890 100644 --- a/gen/chunk-UNDRK5PG.js +++ b/gen/chunk-JELKPLZC.js @@ -1,4 +1,4 @@ -import{A as P,C as w,a as b,b as v}from"./chunk-FFJHITEL.js";import{$ as C,V as S,X as p}from"./chunk-VZWSP3EG.js";var o=class{constructor(t){this.loaded=!1;this.preinitted=!1;this.started=!1;this.romtype="cart";this.running=!1;this.initluavars=!1;this.mainElement=t,this.timer=new C(20,this.poll.bind(this))}luacall(t){return this.js_lua_string||(this.js_lua_string=Module.cwrap("_Z13js_lua_stringPKc","string",["string"])),this.js_lua_string(t||"")}_pause(){this.running=!1,this.timer.stop()}pause(){this.loaded&&this.running&&(this.luacall("emu.pause()"),this._pause())}_resume(){this.luacall("emu.unpause()"),this.running=!0,this.timer.start()}resume(){this.loaded&&!this.running&&this._resume()}reset(){this.loaded&&(this.luacall("manager:machine():soft_reset()"),this.running=!0,this.initluavars=!1)}isRunning(){return this.running}bufferConsoleOutput(t){typeof t=="string"&&console.log(t)}startModule(t,e){this.started=!0;var r=this.romfn=this.romfn||e.romfn,n=this.romdata=this.romdata||e.romdata||new p(e.romsize).mem,g=this.romtype=this.romtype||e.romtype,a=this.video=new S(this.mainElement,e.width,e.height);a.create(),$(a.canvas).attr("id","canvas"),console.log("loading",e.jsfile);var u=[e.driver,"-debug","-debugger","none","-verbose","-window","-nokeepaspect","-resolution",a.canvas.width+"x"+a.canvas.height];r&&u.push("-"+g,r),e.extraargs&&(u=u.concat(e.extraargs)),console.log(u),window.JSMESS={},window.Module={arguments:u,screenIsReadOnly:!0,print:this.bufferConsoleOutput,canvas:a.canvas,doNotCaptureKeyboard:!0,keyboardListeningElement:a.canvas,preInit:()=>{console.log("loading FS"),ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT="canvas",e.cfgfile&&(FS.mkdir("/cfg"),FS.writeFile("/cfg/"+e.cfgfile,e.cfgdata,{encoding:"utf8"})),e.biosfile&&(FS.mkdir("/roms"),FS.mkdir("/roms/"+e.driver),FS.writeFile("/roms/"+e.biosfile,e.biosdata,{encoding:"binary"})),FS.mkdir("/emulator"),r&&FS.writeFile(r,n,{encoding:"binary"}),e.preInit&&e.preInit(self),this.preinitted=!0},preRun:[()=>{$(a.canvas).click(i=>{a.canvas.focus()}),this.loaded=!0,console.log("about to run...")}]};var d,c,m=$.Deferred(),f=$.Deferred();if(e.cfgfile&&(d=$.get("mame/cfg/"+e.cfgfile,i=>{e.cfgdata=i,console.log("loaded "+e.cfgfile)},"text")),e.biosfile){var s=new XMLHttpRequest;s.open("GET","mame/roms/"+e.biosfile,!0),s.responseType="arraybuffer",s.onload=i=>{e.biosdata=new Uint8Array(s.response),console.log("loaded "+e.biosfile),m.resolve()},s.ontimeout=function(i){throw Error("Timeout loading "+e.biosfile)},s.send()}else m.resolve();c=$.get("mame/debugger.lua",i=>{this.luadebugscript=i,console.log("loaded debugger.lua")},"text");{var l=new XMLHttpRequest;l.open("GET","mame/"+e.jsfile.replace(".js",".wasm"),!0),l.responseType="arraybuffer",l.onload=i=>{console.log("loaded WASM file"),window.Module.wasmBinary=new Uint8Array(l.response),f.resolve()},l.ontimeout=function(i){throw Error("Timeout loading "+e.jsfile)},l.send()}$.when(c,d,m,f).done(()=>{var i=document.createElement("script");i.src="mame/"+e.jsfile,document.getElementsByTagName("head")[0].appendChild(i),console.log("created script element")}),window.mamelua=i=>(this.initlua(),[i,this.luacall(i)])}loadROMFile(t){this.romdata=t,this.preinitted&&this.romfn&&FS.writeFile(this.romfn,t,{encoding:"binary"})}loadRegion(t,e){if(this.loaded&&e.length>0){for(var r='rgn = manager:machine():memory().regions["'+t+`"] +import{C as P,E as w,a as b,b as v}from"./chunk-4YTESWOC.js";import{$ as C,V as S,X as p}from"./chunk-VZWSP3EG.js";var o=class{constructor(t){this.loaded=!1;this.preinitted=!1;this.started=!1;this.romtype="cart";this.running=!1;this.initluavars=!1;this.mainElement=t,this.timer=new C(20,this.poll.bind(this))}luacall(t){return this.js_lua_string||(this.js_lua_string=Module.cwrap("_Z13js_lua_stringPKc","string",["string"])),this.js_lua_string(t||"")}_pause(){this.running=!1,this.timer.stop()}pause(){this.loaded&&this.running&&(this.luacall("emu.pause()"),this._pause())}_resume(){this.luacall("emu.unpause()"),this.running=!0,this.timer.start()}resume(){this.loaded&&!this.running&&this._resume()}reset(){this.loaded&&(this.luacall("manager:machine():soft_reset()"),this.running=!0,this.initluavars=!1)}isRunning(){return this.running}bufferConsoleOutput(t){typeof t=="string"&&console.log(t)}startModule(t,e){this.started=!0;var r=this.romfn=this.romfn||e.romfn,n=this.romdata=this.romdata||e.romdata||new p(e.romsize).mem,g=this.romtype=this.romtype||e.romtype,a=this.video=new S(this.mainElement,e.width,e.height);a.create(),$(a.canvas).attr("id","canvas"),console.log("loading",e.jsfile);var u=[e.driver,"-debug","-debugger","none","-verbose","-window","-nokeepaspect","-resolution",a.canvas.width+"x"+a.canvas.height];r&&u.push("-"+g,r),e.extraargs&&(u=u.concat(e.extraargs)),console.log(u),window.JSMESS={},window.Module={arguments:u,screenIsReadOnly:!0,print:this.bufferConsoleOutput,canvas:a.canvas,doNotCaptureKeyboard:!0,keyboardListeningElement:a.canvas,preInit:()=>{console.log("loading FS"),ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT="canvas",e.cfgfile&&(FS.mkdir("/cfg"),FS.writeFile("/cfg/"+e.cfgfile,e.cfgdata,{encoding:"utf8"})),e.biosfile&&(FS.mkdir("/roms"),FS.mkdir("/roms/"+e.driver),FS.writeFile("/roms/"+e.biosfile,e.biosdata,{encoding:"binary"})),FS.mkdir("/emulator"),r&&FS.writeFile(r,n,{encoding:"binary"}),e.preInit&&e.preInit(self),this.preinitted=!0},preRun:[()=>{$(a.canvas).click(i=>{a.canvas.focus()}),this.loaded=!0,console.log("about to run...")}]};var d,c,m=$.Deferred(),f=$.Deferred();if(e.cfgfile&&(d=$.get("mame/cfg/"+e.cfgfile,i=>{e.cfgdata=i,console.log("loaded "+e.cfgfile)},"text")),e.biosfile){var s=new XMLHttpRequest;s.open("GET","mame/roms/"+e.biosfile,!0),s.responseType="arraybuffer",s.onload=i=>{e.biosdata=new Uint8Array(s.response),console.log("loaded "+e.biosfile),m.resolve()},s.ontimeout=function(i){throw Error("Timeout loading "+e.biosfile)},s.send()}else m.resolve();c=$.get("mame/debugger.lua",i=>{this.luadebugscript=i,console.log("loaded debugger.lua")},"text");{var l=new XMLHttpRequest;l.open("GET","mame/"+e.jsfile.replace(".js",".wasm"),!0),l.responseType="arraybuffer",l.onload=i=>{console.log("loaded WASM file"),window.Module.wasmBinary=new Uint8Array(l.response),f.resolve()},l.ontimeout=function(i){throw Error("Timeout loading "+e.jsfile)},l.send()}$.when(c,d,m,f).done(()=>{var i=document.createElement("script");i.src="mame/"+e.jsfile,document.getElementsByTagName("head")[0].appendChild(i),console.log("created script element")}),window.mamelua=i=>(this.initlua(),[i,this.luacall(i)])}loadROMFile(t){this.romdata=t,this.preinitted&&this.romfn&&FS.writeFile(this.romfn,t,{encoding:"binary"})}loadRegion(t,e){if(this.loaded&&e.length>0){for(var r='rgn = manager:machine():memory().regions["'+t+`"] `,n=0;n>1,d=this.height-b>>1,p=this.fgColor,M=this.bgColor,l=this.ram,v=this.nameTable,V=this.colorTable,P=this.charPatternTable,G=this.colorTableMask,S=this.patternTableMask,ce=this.spriteAttributeTable,de=this.spritePatternTable,$=(this.registers[1]&2)!==0,H=this.registers[1]&1,Z=($?16:8)<<(H?1:0),j=this.flicker?4:32,J=this.palette,N=!1,Q=!1,Y=31,R,f,D,T,C,F,m;if(t>=d&&t208&&(k-=256),k++;var y=k+Z,U=-1;if(B<8||!a)c>=k&&c=k&&X=64&&c<128&&c>=k&&c>H,Me=de+(me<<3)+pe,E=0;E=0&&O>H,Te=l[Me+(re>=8?16:0)];(Te&128>>(re&7))!==0&&(W[O]===0?W[O]=ge+1:N=!0)}}}z++}I+=4}else ee=!0}z>4&&(Q=!0,Y=B)}var _=h?(c>>3)*40:c>>3<<5,x=c&7;for(R=0;R=o&&R>3)],F=l[V+(T>>3)],m=l[P+(T<<3)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 2:T=l[v+_+(g>>3)],C=((c&192)<<5)+(T<<3),F=l[V+(C&G)+x],m=l[P+(C&S)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 3:T=l[v+_+(g>>3)],x=(c&28)>>2,m=l[P+(T<<3)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 1:T=l[v+_+Math.floor(g/6)],m=l[P+(T<<3)+x],f=(m&128>>g%6)!==0?p:M;break;case 5:T=l[v+_+Math.floor(g/6)],C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(m&128>>g%6)!==0?p:M;break;case 6:T=l[v+_+(g>>3)],x=(c&28)>>2,C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 7:f=(g&4)===0?p:M;break}if(f===0&&(f=M),!h){var se=W[g]-1;se>0&&(f=se)}}else f=M;D=J[f],e[s++]=D}}else for(D=J[M],R=0;R>4,this.bgColor=this.registers[7]&15;break}}setVDPWriteCommand3(t){this.setVDPWriteRegister(t)}writeAddress(t){if(!this.latch)this.addressRegister=this.addressRegister&65280|t;else{switch((t&192)>>6){case 0:this.setReadAddress(t);break;case 1:this.setWriteAddress(t);break;case 2:this.setVDPWriteRegister(t);break;case 3:this.setVDPWriteCommand3(t);break}this.redrawRequired=!0}this.latch=!this.latch}updateMode(t,e){if(this.bitmapMode=(t&2)!==0,this.textMode=(e&16)!==0,this.bitmapMode)switch((e&24)>>3){case 0:this.screenMode=2;break;case 1:this.screenMode=6;break;case 2:this.screenMode=5;break;case 3:this.screenMode=7;break}else switch((e&24)>>3){case 0:this.screenMode=0;break;case 1:this.screenMode=3;break;case 2:this.screenMode=1;break;case 3:this.screenMode=7;break}this.bitmapMode?(this.colorTable=(this.registers[3]&128)<<6,this.charPatternTable=(this.registers[4]&4)<<11,this.updateTableMasks()):(this.colorTable=this.registers[3]<<6,this.charPatternTable=(this.registers[4]&7)<<11),this.nameTable=(this.registers[2]&15)<<10,this.spriteAttributeTable=(this.registers[5]&127)<<7,this.spritePatternTable=(this.registers[6]&7)<<11}updateTableMasks(){this.screenMode===2?(this.colorTableMask=(this.registers[3]&127)<<6|63,this.patternTableMask=(this.registers[4]&3)<<11|this.colorTableMask&2047):this.screenMode===5||this.screenMode===6?(this.colorTableMask=this.ramMask,this.patternTableMask=(this.registers[4]&3)<<11|2047):(this.colorTableMask=this.ramMask,this.patternTableMask=this.ramMask)}writeData(t){this.probe.logVRAMWrite(this.addressRegister,t),this.ram[this.addressRegister++]=t,this.prefetchByte=t,this.addressRegister&=this.ramMask,this.latch=!1,this.redrawRequired=!0}readStatus(){var t=this.statusRegister;return this.statusRegister=31,this.interruptsOn&&this.cru.setVDPInterrupt(!1),this.latch=!1,t}readData(){var t=this.prefetchByte;return this.prefetchByte=this.ram[this.addressRegister++],this.probe.logVRAMRead(this.addressRegister-1,this.prefetchByte),this.addressRegister&=this.ramMask,this.latch=!1,t}getRAM(){return this.ram}colorTableSize(){return this.screenMode===0?32:this.screenMode===2?Math.min(this.colorTableMask+1,6144):0}patternTableSize(){return this.bitmapMode?Math.min(this.patternTableMask+1,6144):2048}getDebugTables(){var t=[["Pattern Table",this.charPatternTable,this.patternTableSize()],["Name Table",this.nameTable,768],["Color Table",this.colorTable,this.colorTableSize()],["Sprite Patterns",this.spritePatternTable,2048],["Sprite Attributes",this.spriteAttributeTable,128]];return t}getRegsString(){for(var e="Registers:",r=0;r>1,d=this.height-b>>1,p=this.fgColor,M=this.bgColor,l=this.ram,v=this.nameTable,V=this.colorTable,P=this.charPatternTable,G=this.colorTableMask,S=this.patternTableMask,ce=this.spriteAttributeTable,de=this.spritePatternTable,$=(this.registers[1]&2)!==0,H=this.registers[1]&1,Z=($?16:8)<<(H?1:0),j=this.flicker?4:32,J=this.palette,N=!1,Q=!1,Y=31,R,f,D,T,C,F,m;if(t>=d&&t208&&(k-=256),k++;var y=k+Z,U=-1;if(B<8||!a)c>=k&&c=k&&X=64&&c<128&&c>=k&&c>H,Me=de+(me<<3)+pe,E=0;E=0&&O>H,Te=l[Me+(re>=8?16:0)];(Te&128>>(re&7))!==0&&(W[O]===0?W[O]=ge+1:N=!0)}}}z++}I+=4}else ee=!0}z>4&&(Q=!0,Y=B)}var _=h?(c>>3)*40:c>>3<<5,x=c&7;for(R=0;R=o&&R>3)],F=l[V+(T>>3)],m=l[P+(T<<3)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 2:T=l[v+_+(g>>3)],C=((c&192)<<5)+(T<<3),F=l[V+(C&G)+x],m=l[P+(C&S)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 3:T=l[v+_+(g>>3)],x=(c&28)>>2,m=l[P+(T<<3)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 1:T=l[v+_+Math.floor(g/6)],m=l[P+(T<<3)+x],f=(m&128>>g%6)!==0?p:M;break;case 5:T=l[v+_+Math.floor(g/6)],C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(m&128>>g%6)!==0?p:M;break;case 6:T=l[v+_+(g>>3)],x=(c&28)>>2,C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 7:f=(g&4)===0?p:M;break}if(f===0&&(f=M),!h){var se=W[g]-1;se>0&&(f=se)}}else f=M;D=J[f],e[s++]=D}}else for(D=J[M],R=0;R>4,this.bgColor=this.registers[7]&15;break}}setVDPWriteCommand3(t){this.setVDPWriteRegister(t)}writeAddress(t){if(!this.latch)this.addressRegister=this.addressRegister&65280|t;else{switch((t&192)>>6){case 0:this.setReadAddress(t);break;case 1:this.setWriteAddress(t);break;case 2:this.setVDPWriteRegister(t);break;case 3:this.setVDPWriteCommand3(t);break}this.redrawRequired=!0}this.latch=!this.latch}updateMode(t,e){if(this.bitmapMode=(t&2)!==0,this.textMode=(e&16)!==0,this.bitmapMode)switch((e&24)>>3){case 0:this.screenMode=2;break;case 1:this.screenMode=6;break;case 2:this.screenMode=5;break;case 3:this.screenMode=7;break}else switch((e&24)>>3){case 0:this.screenMode=0;break;case 1:this.screenMode=3;break;case 2:this.screenMode=1;break;case 3:this.screenMode=7;break}this.bitmapMode?(this.colorTable=(this.registers[3]&128)<<6,this.charPatternTable=(this.registers[4]&4)<<11,this.updateTableMasks()):(this.colorTable=this.registers[3]<<6,this.charPatternTable=(this.registers[4]&7)<<11),this.nameTable=(this.registers[2]&15)<<10,this.spriteAttributeTable=(this.registers[5]&127)<<7,this.spritePatternTable=(this.registers[6]&7)<<11}updateTableMasks(){this.screenMode===2?(this.colorTableMask=(this.registers[3]&127)<<6|63,this.patternTableMask=(this.registers[4]&3)<<11|this.colorTableMask&2047):this.screenMode===5||this.screenMode===6?(this.colorTableMask=this.ramMask,this.patternTableMask=(this.registers[4]&3)<<11|2047):(this.colorTableMask=this.ramMask,this.patternTableMask=this.ramMask)}writeData(t){this.probe.logVRAMWrite(this.addressRegister,t),this.ram[this.addressRegister++]=t,this.prefetchByte=t,this.addressRegister&=this.ramMask,this.latch=!1,this.redrawRequired=!0}readStatus(){var t=this.statusRegister;return this.statusRegister=31,this.interruptsOn&&this.cru.setVDPInterrupt(!1),this.latch=!1,t}readData(){var t=this.prefetchByte;return this.prefetchByte=this.ram[this.addressRegister++],this.probe.logVRAMRead(this.addressRegister-1,this.prefetchByte),this.addressRegister&=this.ramMask,this.latch=!1,t}getRAM(){return this.ram}colorTableSize(){return this.screenMode===0?32:this.screenMode===2?Math.min(this.colorTableMask+1,6144):0}patternTableSize(){return this.bitmapMode?Math.min(this.patternTableMask+1,6144):2048}getDebugTables(){var t=[["Pattern Table",this.charPatternTable,this.patternTableSize()],["Name Table",this.nameTable,768],["Color Table",this.colorTable,this.colorTableSize()],["Sprite Patterns",this.spritePatternTable,2048],["Sprite Attributes",this.spriteAttributeTable,128]];return t}getRegsString(){for(var e="Registers:",r=0;r0&&(e+=A(i[0],20)+": $"+w(i[1],4)+" - $"+w(i[1]+i[2]-1,4)+` `);return e+=A("Address Register",20)+": $"+w(this.addressRegister,4)+` @@ -8,4 +8,4 @@ import{c as ie,l as he,q as ne,t as oe}from"./chunk-FFJHITEL.js";import{a as A,c `,this.ramMask!=16383&&(e+=A("RAM Mask",20)+": $"+w(this.ramMask)+` `),e}hexView(t,e,r){for(var s="",i=null,h=t,a=0,n=0;n>2&3)*85,(e>>4&3)*85),this.prefetchByte=e,this.addressRegister&=this.ramMask,this.redrawRequired=!0}else{var s=this.addressRegister;super.writeData(e),this.writeTwiddled(s,e)}this.latch=!1}writeTwiddled(e,r){for(var s=e&16380,i=s*2,h=this.ram[s],a=this.ram[s+1],n=this.ram[s+2],b=this.ram[s+3],o=0;o<8;++o){var d=7-o,p=h>>>d&1|(a>>>d&1)<<1|(n>>>d&1)<<2|(b>>>d&1)<<3;this.vramUntwiddled[i+o]=p}}getState(){var e=super.getState();return e.cram=this.cram.slice(0),e}restoreState(e){super.restoreState(e),this.cram.set(e.cram)}drawScanline(e){this.screenMode==4?this.rasterize_line(e):super.drawScanline(e)}findSprites(e){var r=this.spriteAttributeTable,s=[],i=8,h;for(this.registers[1]&2&&(i=16),h=0;h<64;h++){var a=this.ram[r+h];if(a===208)break;if(a>=240&&(a-=256),e>=a&&e=8)){b=!0;var V=e-M[2],P=h+M[1]*32+V*4,G=P*2+l,S=this.vramUntwiddled[G];if(S!==0){if(o){this.statusRegister|=32;break}this.fb32[r+(s+a-this.registers[8]&255)]=this.cpalette[16+S],o=!0}}}!b&&d>1&&(a+=d-1)}}border_clear(e,r){e=e|0,r=r|0;let s=16+(this.registers[7]&15),i=this.cpalette[s];this.fb32.fill(i,e,e+r)}rasterize_line(e){e|=0;var r=this.registers,s=256,i=this.numVisibleLines,h=this.width-s>>1,a=this.height-i>>1;let n=(e+a)*this.width|0,b=n+h|0;if(!this.displayOn||e<0||e>=i)e=262-a&&this.border_clear((e-262+a)*this.width,this.width);else{var o=e+r[9];o>=224&&(o-=224);let d=this.findSprites(e),p=r[0]&64&&e<16?0:r[8],M=this.nameTable+(o>>>3)*64,l=o&7;this.rasterize_background_line(b,p,M,l),this.rasterize_sprites(e,b,p,d),this.rasterize_foreground_line(b,p,M,l),this.border_clear(n,h),this.border_clear(b+256,h),r[0]&32&&this.border_clear(b,8)}e==i&&(this.statusRegister|=128,this.interruptsOn&&this.cru.setVDPInterrupt(!0)),e<=i?this.lineCounter>0?this.lineCounter--:(this.lineCounter=this.registers[10],this.lineInterruptPending=!0):this.lineCounter=this.registers[10],this.lineInterruptPending&&this.registers[0]&16}getDebugTables(){if(this.screenMode==4){var e=[["Pattern Table",0,16384],["Name Table",this.nameTable,2048],["Sprite Attributes",this.spriteAttributeTable,256]];return e}else return super.getDebugTables()}},le=class extends K{constructor(){super(...arguments);this.cram=new Uint8Array(64);this.cram_latch=0}writeData(e){if(this.writeToCRAM){if(this.addressRegister&1){let r=this.cram_latch+(e<<8),s=u((r&15)*17,(r>>4&15)*17,(r>>8&15)*17),i=this.addressRegister&this.cram.length-1;this.cram[i-1]=this.cram_latch,this.cram[i]=e,this.cpalette[i>>1]=s,this.prefetchByte=e,this.addressRegister&=this.ramMask,this.redrawRequired=!0}else this.cram_latch=e;this.addressRegister++}else super.writeData(e);this.latch=!1}};var be=2,ue=class extends oe{constructor(){super(...arguments);this.cpuFrequency=3579545;this.canvasWidth=304;this.numTotalScanlines=262;this.numVisibleScanlines=240;this.cpuCyclesPerLine=this.cpuFrequency/(262*60);this.sampleRate=262*60*be;this.overscan=!0;this.cpu=new ie}getKeyboardFunction(){return null}init(e,r,s){this.connectCPUMemoryBus(e),this.connectCPUIOBus(r),this.handler=ae(this.inputs,this.getKeyboardMap(),this.getKeyboardFunction()),this.psg=s,this.audioadapter=s&&new he(s.psg,be,this.sampleRate)}connectVideo(e){super.connectVideo(e);var r={setVDPInterrupt:s=>{s&&this.vdpInterrupt()}};this.vdp=this.newVDP(this.pixels,r,!0)}connectProbe(e){super.connectProbe(e),this.vdp.probe=e||this.nullProbe}newVDP(e,r,s){return new L(e,r,s)}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.vdp.drawScanline(this.scanline)}loadState(e){super.loadState(e),this.vdp.restoreState(e.vdp)}saveState(){var e=super.saveState();return e.vdp=this.vdp.getState(),e}reset(){super.reset(),this.vdp.reset(),this.psg.reset()}getDebugCategories(){return["CPU","Stack","VDP"]}getDebugInfo(e,r){if(e==="VDP")return this.vdpStateToLongString(r.vdp)}vdpStateToLongString(e){return this.vdp.getRegsString()}readVRAMAddress(e){return this.vdp.ram[e&16383]}};export{K as a,le as b,ue as c}; -//# sourceMappingURL=chunk-Q6XQLGXR.js.map +//# sourceMappingURL=chunk-PKBI5W34.js.map diff --git a/gen/chunk-Q6XQLGXR.js.map b/gen/chunk-PKBI5W34.js.map similarity index 100% rename from gen/chunk-Q6XQLGXR.js.map rename to gen/chunk-PKBI5W34.js.map diff --git a/gen/coleco-OJFZRPF2.js b/gen/coleco-NPYYZM2X.js similarity index 95% rename from gen/coleco-OJFZRPF2.js rename to gen/coleco-NPYYZM2X.js index 1630f996..4fa98726 100644 --- a/gen/coleco-OJFZRPF2.js +++ b/gen/coleco-NPYYZM2X.js @@ -1,4 +1,4 @@ -import{c as h}from"./chunk-Q6XQLGXR.js";import{b as m}from"./chunk-UNDRK5PG.js";import{J as M,d as D,f as E}from"./chunk-FFJHITEL.js";import{b as n}from"./chunk-UXRCACYH.js";import{P as r,ba as e,ea as f,ha as g,l as a,m as c}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var x=f([[e.UP,0,1],[e.DOWN,0,4],[e.LEFT,0,8],[e.RIGHT,0,2],[e.A,0,64],[e.B,1,64],[e.GP_A,0,64],[e.GP_B,1,64],[e.P2_UP,2,1],[e.P2_DOWN,2,4],[e.P2_LEFT,2,8],[e.P2_RIGHT,2,2],[e.P2_A,2,64],[e.P2_B,3,64]]),t=class extends h{constructor(){super();this.defaultROMSize=32768;this.ram=new Uint8Array(1024);this.read=g([[0,8191,8191,A=>this.bios?this.bios[A]:0],[24576,32767,1023,A=>this.ram[A]],[32768,65535,32767,A=>this.rom?this.rom[A]:0]]);this.write=g([[24576,32767,1023,(A,B)=>{this.ram[A]=B}]]);this.init(this,this.newIOBus(),new E(new D)),this.bios=new a().decode(c(atob(I)))}getKeyboardMap(){return x}vdpInterrupt(){this.probe.logInterrupt(0),this.cpu.NMI()}newIOBus(){return{read:A=>{switch(A&=255,A){case 252:return this.inputs[this.keypadMode?1:0]^255;case 255:return this.inputs[this.keypadMode?3:2]^255}return A>=160&&A<=191?A&1?this.vdp.readStatus():this.vdp.readData():0},write:(A,B)=>{switch(A&=255,B&=255,A>>4){case 8:case 9:this.keypadMode=!0;break;case 12:case 13:this.keypadMode=!1;break;case 10:case 11:return A&1?this.vdp.writeAddress(B):this.vdp.writeData(B);case 15:this.psg.setData(B);break}}}}loadState(A){super.loadState(A),this.keypadMode=A.kpm}saveState(){var A=super.saveState();return A.kpm=this.keypadMode,A}reset(){super.reset(),this.keypadMode=!1}},I=` +import{c as h}from"./chunk-PKBI5W34.js";import{b as m}from"./chunk-JELKPLZC.js";import{L as M,d as D,f as E}from"./chunk-4YTESWOC.js";import{b as n}from"./chunk-UXRCACYH.js";import{P as r,ba as e,ea as f,ha as g,l as a,m as c}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var x=f([[e.UP,0,1],[e.DOWN,0,4],[e.LEFT,0,8],[e.RIGHT,0,2],[e.A,0,64],[e.B,1,64],[e.GP_A,0,64],[e.GP_B,1,64],[e.P2_UP,2,1],[e.P2_DOWN,2,4],[e.P2_LEFT,2,8],[e.P2_RIGHT,2,2],[e.P2_A,2,64],[e.P2_B,3,64]]),t=class extends h{constructor(){super();this.defaultROMSize=32768;this.ram=new Uint8Array(1024);this.read=g([[0,8191,8191,A=>this.bios?this.bios[A]:0],[24576,32767,1023,A=>this.ram[A]],[32768,65535,32767,A=>this.rom?this.rom[A]:0]]);this.write=g([[24576,32767,1023,(A,B)=>{this.ram[A]=B}]]);this.init(this,this.newIOBus(),new E(new D)),this.bios=new a().decode(c(atob(I)))}getKeyboardMap(){return x}vdpInterrupt(){this.probe.logInterrupt(0),this.cpu.NMI()}newIOBus(){return{read:A=>{switch(A&=255,A){case 252:return this.inputs[this.keypadMode?1:0]^255;case 255:return this.inputs[this.keypadMode?3:2]^255}return A>=160&&A<=191?A&1?this.vdp.readStatus():this.vdp.readData():0},write:(A,B)=>{switch(A&=255,B&=255,A>>4){case 8:case 9:this.keypadMode=!0;break;case 12:case 13:this.keypadMode=!1;break;case 10:case 11:return A&1?this.vdp.writeAddress(B):this.vdp.writeData(B);case 15:this.psg.setData(B);break}}}}loadState(A){super.loadState(A),this.keypadMode=A.kpm}saveState(){var A=super.saveState();return A.kpm=this.keypadMode,A}reset(){super.reset(),this.keypadMode=!1}},I=` TFpHAAAgAAAAB7djQcnHAQEDBgcx/3MYawAAAMMMgAehB+EPB+USB+UVB+UYB+UbB+UeB+QHHAZm IYA8igUCBYIAKgCAff5VIAl8/qogBCoKgOnHAwkfgICAAAMFT6CgB4LgByEH4WDAYMBABlggQIAg B+HAwOCgYAMGKweBQAYxBphAQEAG+KBABnAGEuAGUAabB+QA4AflBkggIAYyB+FgoKCgwAZdwAY5 @@ -34,4 +34,4 @@ PANDTwNjYHAGWShQAwKHOBA4A8LZA0IIeAaZOEREKChsADBAIBA4BqkoA4KfA0KIVFQDIvg4QANi FwAGaQNjr3gHIwZYEAAGEEAwCDBABgkHoTAIBlEIFANIAlAgBiAAfAdhAwJ3B0IGfwMDjgPmiAcB A8SRHAYnBihQAwK9BwFgEAODTQPjNXgDAmgHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8H HwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBwM=`;var Q=[{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"mode2bitmap.c",name:"Mode 2 Bitmap"},{id:"mode2compressed.c",name:"Mode 2 Bitmap (LZG)"},{id:"lines.c",name:"Mode 2 Lines"},{id:"multicolor.c",name:"Multicolor Mode"},{id:"siegegame.c",name:"Siege Game"},{id:"shoot.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"}],o=class extends M{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"BIOS",start:0,size:8192,type:"rom"},{name:"Cartridge Header",start:32768,size:256,type:"rom"}]}}}newMachine(){return new t}getPresets(){return Q}readAddress(A){return this.machine.read(A)}readVRAMAddress(A){return this.machine.readVRAMAddress(A)}showHelp(){return"https://8bitworkshop.com/docs/platforms/coleco/"}},i=class extends m{constructor(){super(...arguments);this.getToolForFilename=n}start(){this.startModule(this.mainElement,{jsfile:"mame8bitws.js",cfgfile:"coleco.cfg",biosfile:"coleco/313 10031-4005 73108a.u2",driver:"coleco",width:280*2,height:432,romfn:"/emulator/cart.rom",romsize:32768,preInit:function(A){}})}loadROM(A,B){this.loadROMFile(B),this.loadRegion(":coleco_cart:rom",B)}getPresets(){return Q}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}};r["coleco.mame"]=i;r.coleco=o;export{Q as ColecoVision_PRESETS}; -//# sourceMappingURL=coleco-OJFZRPF2.js.map +//# sourceMappingURL=coleco-NPYYZM2X.js.map diff --git a/gen/coleco-OJFZRPF2.js.map b/gen/coleco-NPYYZM2X.js.map similarity index 100% rename from gen/coleco-OJFZRPF2.js.map rename to gen/coleco-NPYYZM2X.js.map diff --git a/gen/common/audio.js b/gen/common/audio.js index 84d98e00..f493d534 100644 --- a/gen/common/audio.js +++ b/gen/common/audio.js @@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.TssChannelAdapter = exports.SampledAudio = exports.SampleAudio = exports.AUDIO_CHUNK_SAMPLES = exports.WorkerSoundChannel = exports.POKEYDeviceChannel = exports.SN76489_Audio = exports.AY38910_Audio = exports.MasterAudio = void 0; exports.newPOKEYAudio = newPOKEYAudio; exports.setAudioStreamFactory = setAudioStreamFactory; +exports.isAudioBlocked = isAudioBlocked; +exports.onAudioStateChange = onAudioStateChange; exports.resumeAudioContext = resumeAudioContext; class MasterAudio { constructor() { @@ -350,20 +352,89 @@ exports.AUDIO_CHUNK_SAMPLES = 2048; // must be called synchronously inside the handler for Safari/iOS to allow it. // Called on every start(), since stop() suspends the context. const audioUnlockEvents = ['pointerdown', 'touchend', 'mousedown', 'keydown', 'click']; -const pendingUnlocks = new WeakSet(); +const pendingUnlocks = new WeakSet(); // waiting for the first user gesture +const unlockListeners = new WeakSet(); // document gesture handlers installed +// Every AudioContext the IDE starts is registered here so the UI can tell +// whether Web Audio is still waiting for the user gesture that owns the page. +// Browsers keep one suspended until then, and resume() resolves asynchronously, +// so notify listeners on registration, state changes and resume completion. +const audioContexts = new Set(); +const audioStateListeners = new Set(); +function notifyAudioState() { + for (const listener of Array.from(audioStateListeners)) + listener(); +} +function markAudioUnlocked(ctx) { + pendingUnlocks.delete(ctx); + notifyAudioState(); +} +function trackAudioContext(ctx) { + if (audioContexts.has(ctx)) + return; + audioContexts.add(ctx); + if (typeof ctx.addEventListener === 'function') { + ctx.addEventListener('statechange', () => { + if (ctx.state === 'running') { + pendingUnlocks.delete(ctx); + } + else if (ctx.state === 'closed') { + // a closed context can never be resumed, so stop counting it as blocked + audioContexts.delete(ctx); + pendingUnlocks.delete(ctx); + } + notifyAudioState(); + }); + } + notifyAudioState(); +} +/** + * True while an AudioContext is waiting for the user gesture that unlocks + * Web Audio. A context the IDE suspends itself (pause, tab blur) is not blocked; + * it comes back without a gesture. + */ +function isAudioBlocked() { + for (const ctx of audioContexts) { + if (ctx.state !== 'running' && pendingUnlocks.has(ctx)) + return true; + } + return false; +} +/** Subscribe to AudioContext creation and state changes. Returns an unsubscribe fn. */ +function onAudioStateChange(listener) { + audioStateListeners.add(listener); + return () => { audioStateListeners.delete(listener); }; +} +function resumeTrackedContext(ctx) { + const resumed = ctx.resume(); + if (resumed && typeof resumed.then === 'function') { + resumed.then(() => { + if (ctx.state === 'running') + markAudioUnlocked(ctx); + else + notifyAudioState(); + }, () => { }); + } +} function resumeAudioContext(ctx) { - if (!ctx || ctx.state === 'running') + if (!ctx || ctx.state === 'closed') return; - ctx.resume().catch(() => { }); - if (typeof document === 'undefined' || pendingUnlocks.has(ctx)) + trackAudioContext(ctx); + if (ctx.state === 'running') { + pendingUnlocks.delete(ctx); return; + } pendingUnlocks.add(ctx); + notifyAudioState(); // show the click hint even if resume() stays suspended + resumeTrackedContext(ctx); + if (typeof document === 'undefined' || unlockListeners.has(ctx)) + return; + unlockListeners.add(ctx); const onGesture = () => { - ctx.resume().catch(() => { }); + resumeTrackedContext(ctx); if (ctx.state === 'running') { for (const ev of audioUnlockEvents) document.removeEventListener(ev, onGesture, true); - pendingUnlocks.delete(ctx); + unlockListeners.delete(ctx); } }; for (const ev of audioUnlockEvents) diff --git a/gen/common/audio.js.map b/gen/common/audio.js.map index 87c7446d..5ff98852 100644 --- a/gen/common/audio.js.map +++ b/gen/common/audio.js.map @@ -1 +1 @@ -{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/common/audio.ts"],"names":[],"mappings":";;;AA8EA,sCAQC;AA6SD,sDAEC;AAYD,gDAaC;AAxZD,MAAa,WAAW;IAAxB;QACE,WAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAiB/B,CAAC;IAfC,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvB,8DAA8D;YAC9D,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAlBD,kCAkBC;AAED,MAAa,aAAa;IAKxB,YAAY,MAAoB;QAHhC,QAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC7B,WAAM,GAAG,CAAC,CAAC;QAGT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,KAAK;QACH,KAAK,IAAI,CAAC,GAAC,EAAE,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,cAAc,CAAC,GAAY;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,GAAY;QAClB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,eAAe,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1C;AA5BD,sCA4BC;AAED,MAAa,aAAa;IAIxB,YAAY,MAAoB;QAFhC,QAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAG3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,KAAK;QACH,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAY;QAClB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAhBD,sCAgBC;AAED,sCAAsC;AACtC,0DAA0D;AAC1D,iGAAiG;AAEjG,SAAgB,aAAa,CAAC,KAAY;IACxC,IAAI,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,IAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,IAAI,0BAAkB,EAAE,CAAC;QACrC,KAAK,CAAC,OAAO,GAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,eAAe;QACzC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC;IACxB,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YAAE,CAAC,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,CAAC;IACjB,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAEM,IAAI,kBAAkB,GAAG;IAE9B,oDAAoD;IACpD,IAAI,QAAQ,GAAM,IAAI,CAAA,CAAK,mCAAmC;IAC9D,IAAI,KAAK,GAAS,IAAI,CAAA,CAAK,6BAA6B;IACxD,IAAI,IAAI,GAAU,IAAI,CAAA,CAAK,mCAAmC;IAC9D,IAAI,QAAQ,GAAM,IAAI,CAAA,CAAK,gCAAgC;IAC3D,IAAI,WAAW,GAAG,IAAI,CAAA,CAAK,iBAAiB;IAE5C,mCAAmC;IACnC,IAAI,KAAK,GAAS,IAAI,CAAA,CAAK,6BAA6B;IACxD,IAAI,OAAO,GAAO,IAAI,CAAA,CAAK,kCAAkC;IAC7D,IAAI,OAAO,GAAO,IAAI,CAAA,CAAK,kCAAkC;IAC7D,IAAI,OAAO,GAAO,IAAI,CAAA,CAAK,kCAAkC;IAC7D,IAAI,OAAO,GAAO,IAAI,CAAA,CAAK,kCAAkC;IAC7D,IAAI,UAAU,GAAI,IAAI,CAAA,CAAK,wCAAwC;IACnE,IAAI,UAAU,GAAI,IAAI,CAAA,CAAK,wCAAwC;IACnE,IAAI,QAAQ,GAAM,IAAI,CAAA,CAAK,sCAAsC;IAEjE;2BACuB;IACvB,IAAI,MAAM,GAAQ,EAAE,CAAA,CAAO,yCAAyC;IACpE,IAAI,MAAM,GAAQ,GAAG,CAAA,CAAM,yCAAyC;IAEpE,sDAAsD;IACtD,IAAI,UAAU,GAAI,MAAM,CAAA;IACxB,IAAI,UAAU,GAAI,MAAM,CAAA;IACxB,IAAI,UAAU,GAAI,MAAM,CAAA;IAExB,IAAI,WAAW,GAAG,UAAU,CAAA,CAAI,+BAA+B;IAE/D,8BAA8B;IAC9B,IAAI,KAAK,GAAS,CAAC,CAAA;IACnB,IAAI,KAAK,GAAS,CAAC,CAAA;IACnB,IAAI,KAAK,GAAS,CAAC,CAAA;IACnB,IAAI,KAAK,GAAS,CAAC,CAAA;IACnB,IAAI,KAAK,GAAS,CAAC,CAAA;IACnB,IAAI,KAAK,GAAS,CAAC,CAAA;IACnB,IAAI,KAAK,GAAS,CAAC,CAAA;IACnB,IAAI,KAAK,GAAS,EAAE,CAAA;IACpB,IAAI,MAAM,GAAQ,GAAG,CAAA;IAErB,IAAI,aAAa,GAAO,SAAS,CAAA,CAAE,+BAA+B;IAClE,IAAI,cAAc,GAAM,SAAS,CAAA,CAAE,qCAAqC;IAExE,iBAAiB;IACjB,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,CAAE,CAAE,CAAC;IACnC,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,EAAC,CAAC,CAAE,CAAE,CAAC,CAAC,QAAQ;IAC9C,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAE,CAAE,CAAC;IAC/D,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAE,CAAE,CAAC;IAC/F,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAA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"} \ No newline at end of file +{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/common/audio.ts"],"names":[],"mappings":"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CAAC,EAAC,CAAC,EAAC,CAAC,CAAE,CAAE,CAAC;IAC/F,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC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"} \ No newline at end of file diff --git a/gen/cpc-PND5VPIB.js b/gen/cpc-BDRGBH6L.js similarity index 96% rename from gen/cpc-PND5VPIB.js rename to gen/cpc-BDRGBH6L.js index 4ed8529e..779a5f5c 100644 --- a/gen/cpc-PND5VPIB.js +++ b/gen/cpc-BDRGBH6L.js @@ -1,2 +1,2 @@ -import{J as d,u as p}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{P as n}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var m=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],o=class extends p{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=224;this.joymask0=0;this.runaddr=16384}loadROM(t){let s=new Uint8Array(t.length+m.length);s.set(m,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,m.length),super.loadROM(s)}reset(){if(super.reset(),this.exports.machine_exec(this.sys,1e6),this.romptr&&this.romlen){this.exports.machine_load_rom(this.sys,this.romptr,this.romlen);for(var t=0;t<1e5&&this.getPC()!=this.runaddr;t++)this.exports.machine_tick(this.sys)}}advanceFrame(t){var s=this.getRasterY(),r=Math.floor((this.numTotalScanlines-s)*(4e6/50)/this.numTotalScanlines),e=this.probe!=null;return e&&this.exports.machine_reset_probe_buffer(),r=super.advanceFrameClock(t,r),e&&this.copyProbeData(),r}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:-1,y:this.getRasterY()-14}}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var t=this.cpustatearr,s=t[9]+(t[8]<<8),r=t[10]+(t[11]<<8),e=t[12]+(t[13]<<8),a=t[14]+(t[15]<<8),x=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),h=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:h,SP:x,AF:s,BC:a,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(h)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0),joymask0:this.joymask0}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=t.joymask0|0}getVideoParams(){return{width:768,height:272,overscan:!0,videoFrequency:50,aspect:1.3}}setKeyInput(t,s,r){if(!(t==16||t==17||t==18||t==224)){var e=0,a=0;t==37&&(t=8,e=4),t==38&&(t=11,e=1),t==39&&(t=9,e=8),t==40&&(t=10,e=2),t==32&&(e=16),t==65&&(t=65,a=4),t==87&&(t=87,a=1),t==68&&(t=68,a=8),t==83&&(t=83,a=2),t==69&&(a=16),t==113&&(t=241),t==115&&(t=243),t==119&&(t=245),t==121&&(t=247),r&1?(this.exports.machine_key_down(this.sys,t),this.joymask0|=e):r&64&&(this.exports.machine_key_up(this.sys,t),this.joymask0&=~e)}}};var g=[{id:"easy_stdio_boxes.c",name:"Standard I/O",category:"C"},{id:"easy_mode_strings.c",name:"Video Modes"},{id:"easy_random.c",name:"Random Numbers"},{id:"easy_sprites.c",name:"Keyboard + Sprites"},{id:"medium_scrolling.c",name:"Scrolling Text"},{id:"siegegame.c",name:"Siege Game"},{id:"music.c",name:"Music Player"},{id:"hello.asm",name:"Hello World",category:"Assembly"}],v={main:[{name:"BIOS",start:0,size:16384,type:"rom"},{name:"Screen RAM",start:49152,size:16384,type:"ram"}]},i=class extends d{newMachine(){return new o("cpc")}getPresets(){return g}readAddress(c){return this.machine.readConst(c)}getMemoryMap(){return v}showHelp(){return"https://8bitworkshop.com/docs/platforms/cpc/"}};n["cpc.6128"]=i;n["cpc.464"]=i;n["cpc.kcc"]=i; -//# sourceMappingURL=cpc-PND5VPIB.js.map +import{L as d,w as p}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P as n}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var m=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],o=class extends p{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=224;this.joymask0=0;this.runaddr=16384}loadROM(t){let s=new Uint8Array(t.length+m.length);s.set(m,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,m.length),super.loadROM(s)}reset(){if(super.reset(),this.exports.machine_exec(this.sys,1e6),this.romptr&&this.romlen){this.exports.machine_load_rom(this.sys,this.romptr,this.romlen);for(var t=0;t<1e5&&this.getPC()!=this.runaddr;t++)this.exports.machine_tick(this.sys)}}advanceFrame(t){var s=this.getRasterY(),r=Math.floor((this.numTotalScanlines-s)*(4e6/50)/this.numTotalScanlines),e=this.probe!=null;return e&&this.exports.machine_reset_probe_buffer(),r=super.advanceFrameClock(t,r),e&&this.copyProbeData(),r}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:-1,y:this.getRasterY()-14}}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var t=this.cpustatearr,s=t[9]+(t[8]<<8),r=t[10]+(t[11]<<8),e=t[12]+(t[13]<<8),a=t[14]+(t[15]<<8),x=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),h=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:h,SP:x,AF:s,BC:a,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(h)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0),joymask0:this.joymask0}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=t.joymask0|0}getVideoParams(){return{width:768,height:272,overscan:!0,videoFrequency:50,aspect:1.3}}setKeyInput(t,s,r){if(!(t==16||t==17||t==18||t==224)){var e=0,a=0;t==37&&(t=8,e=4),t==38&&(t=11,e=1),t==39&&(t=9,e=8),t==40&&(t=10,e=2),t==32&&(e=16),t==65&&(t=65,a=4),t==87&&(t=87,a=1),t==68&&(t=68,a=8),t==83&&(t=83,a=2),t==69&&(a=16),t==113&&(t=241),t==115&&(t=243),t==119&&(t=245),t==121&&(t=247),r&1?(this.exports.machine_key_down(this.sys,t),this.joymask0|=e):r&64&&(this.exports.machine_key_up(this.sys,t),this.joymask0&=~e)}}};var g=[{id:"easy_stdio_boxes.c",name:"Standard I/O",category:"C"},{id:"easy_mode_strings.c",name:"Video Modes"},{id:"easy_random.c",name:"Random Numbers"},{id:"easy_sprites.c",name:"Keyboard + Sprites"},{id:"medium_scrolling.c",name:"Scrolling Text"},{id:"siegegame.c",name:"Siege Game"},{id:"music.c",name:"Music Player"},{id:"hello.asm",name:"Hello World",category:"Assembly"}],v={main:[{name:"BIOS",start:0,size:16384,type:"rom"},{name:"Screen RAM",start:49152,size:16384,type:"ram"}]},i=class extends d{newMachine(){return new o("cpc")}getPresets(){return g}readAddress(c){return this.machine.readConst(c)}getMemoryMap(){return v}showHelp(){return"https://8bitworkshop.com/docs/platforms/cpc/"}};n["cpc.6128"]=i;n["cpc.464"]=i;n["cpc.kcc"]=i; +//# sourceMappingURL=cpc-BDRGBH6L.js.map diff --git a/gen/cpc-PND5VPIB.js.map b/gen/cpc-BDRGBH6L.js.map similarity index 100% rename from gen/cpc-PND5VPIB.js.map rename to gen/cpc-BDRGBH6L.js.map diff --git a/gen/devel-NF5PPKHA.js b/gen/devel-DS2JT5JJ.js similarity index 97% rename from gen/devel-NF5PPKHA.js rename to gen/devel-DS2JT5JJ.js index 110bd346..8a1ced2b 100644 --- a/gen/devel-NF5PPKHA.js +++ b/gen/devel-DS2JT5JJ.js @@ -1,2 +1,2 @@ -import{I as y,n as m,r as v}from"./chunk-FFJHITEL.js";import{a as x}from"./chunk-3FIVEUG2.js";import"./chunk-UXRCACYH.js";import{D as f,P as c,_ as p,ha as n,n as a}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var l=31,s=class extends v{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new m;this.ram=new Uint8Array(16384);this.read=n([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=n([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[l]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r').appendTo(t);$('

Serial Output

').appendTo(e);var r=$('
').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function S(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var d=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.lengththis.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(S(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},h=class extends y{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=e?new u(e):new o}async start(){super.start(),this.serial=new d,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=f(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=a(this.serial.outputBytes),p(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}getSerialOutput(){return a(this.serial.outputBytes)}newMachine(){return new s}getPresets(){return w}readAddress(e){return this.machine.readConst(e)}};c["devel-6502"]=h;export{d as SerialTestHarness}; -//# sourceMappingURL=devel-NF5PPKHA.js.map +import{K as y,p as m,t as v}from"./chunk-4YTESWOC.js";import{a as x}from"./chunk-3FIVEUG2.js";import"./chunk-UXRCACYH.js";import{D as f,P as c,_ as p,ha as n,n as a}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var l=31,s=class extends v{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new m;this.ram=new Uint8Array(16384);this.read=n([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=n([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[l]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r').appendTo(t);$('

Serial Output

').appendTo(e);var r=$('
').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function S(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var d=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.lengththis.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(S(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},h=class extends y{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=e?new u(e):new o}async start(){super.start(),this.serial=new d,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=f(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=a(this.serial.outputBytes),p(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}getSerialOutput(){return a(this.serial.outputBytes)}newMachine(){return new s}getPresets(){return w}readAddress(e){return this.machine.readConst(e)}};c["devel-6502"]=h;export{d as SerialTestHarness}; +//# sourceMappingURL=devel-DS2JT5JJ.js.map diff --git a/gen/devel-NF5PPKHA.js.map b/gen/devel-DS2JT5JJ.js.map similarity index 100% rename from gen/devel-NF5PPKHA.js.map rename to gen/devel-DS2JT5JJ.js.map diff --git a/gen/embedui.js b/gen/embedui.js index 6cb7a950..20b5cf46 100644 --- a/gen/embedui.js +++ b/gen/embedui.js @@ -1,2 +1,2 @@ -import{b as k,c as S}from"./chunk-MQGCXKDS.js";import{B as h,G as v,I as y,J as c,P as d,l as p,z as w}from"./chunk-VZWSP3EG.js";import{g as M}from"./chunk-N7W4C4V2.js";var C=M(S()),i,t,f,m=c(window.location.search),R=window.location.hash?c(window.location.hash.substr(1)):{};for(u in R)m[u]=R[u];var u;function E(){typeof window.onerror=="object"&&(window.onerror=function(e,r,n,o,a){var s=e+" "+r+" "+n+":"+o+", "+a;$.get("/error?msg="+encodeURIComponent(s),"text")})}function F(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&t.isRunning()?(t.pause(),e=!0):document.visibilityState=="visible"&&e&&(t.resume(),e=!1)}),$(window).on("focus",function(){e&&(t.resume(),e=!1)}),$(window).on("blur",function(){t.isRunning()&&(t.pause(),e=!0)})}async function b(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await t.loadROM(e,r),t.resume()}function I(){return $("#emulator").find("canvas")}function O(e,r,n){v("gif.js/dist/gif.js").then(()=>{var o=I()[0];if(!o){alert("Could not find canvas element to record video!");return}var a=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?a=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(a=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:a});s.on("finished",function(x){console.log("finished encoding GIF"),n(x)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var l=0;console.log("Recording video",o);var g=()=>{l++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(g,e))};g()})}async function j(e){if(!d[i])throw Error("Invalid platform '"+i+"'.");t=new d[i]($("#emuscreen")[0]),await t.start(),e.rec&&I().on("focus",()=>{t.resume()});var r=e.n||"Game",n,o=e.url,a=e.r;if(o)return console.log(o),w(o,l=>{b(r,l)},"arraybuffer"),!0;if(a){var s=y(a);n=new p().decode(s)}return F(),b(r,n),!0}async function P(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await k(h(i));console.log("starting platform",i),await j(e)}catch(n){console.log(n),alert('Platform "'+i+'" not supported.')}}function G(){E(),m.p&&P(m)}window.addEventListener("message",H,!1);function H(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!t)P(e);else if(r=="reset")t.reset(),f.reset();else if(r=="getReplay"){var n={frameCount:f.frameCount,checkpoints:f.checkpoints,framerecs:f.framerecs,checkpointInterval:f.checkpointInterval,maxCheckpoints:f.maxCheckpoints};e.source.postMessage({ack:r,replay:n},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);f.callbackNewCheckpoint=a=>{e.source.postMessage({ack:r,state:o(t,a)},e.origin)}}else r=="recordVideo"?O(e.data.intervalMsec,e.data.maxFrames,function(a){e.data.filename&&(0,C.saveAs)(a,e.data.filename),e.source.postMessage({ack:r,gif:a},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");G();export{t as platform,i as platform_id,G as startEmbed,f as stateRecorder}; +import{b as k,c as S}from"./chunk-3H6WIH6E.js";import{B as h,G as v,I as y,J as c,P as d,l as p,z as w}from"./chunk-VZWSP3EG.js";import{g as M}from"./chunk-N7W4C4V2.js";var C=M(S()),i,t,f,m=c(window.location.search),R=window.location.hash?c(window.location.hash.substr(1)):{};for(u in R)m[u]=R[u];var u;function E(){typeof window.onerror=="object"&&(window.onerror=function(e,r,n,o,a){var s=e+" "+r+" "+n+":"+o+", "+a;$.get("/error?msg="+encodeURIComponent(s),"text")})}function F(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&t.isRunning()?(t.pause(),e=!0):document.visibilityState=="visible"&&e&&(t.resume(),e=!1)}),$(window).on("focus",function(){e&&(t.resume(),e=!1)}),$(window).on("blur",function(){t.isRunning()&&(t.pause(),e=!0)})}async function b(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await t.loadROM(e,r),t.resume()}function I(){return $("#emulator").find("canvas")}function O(e,r,n){v("gif.js/dist/gif.js").then(()=>{var o=I()[0];if(!o){alert("Could not find canvas element to record video!");return}var a=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?a=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(a=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:a});s.on("finished",function(x){console.log("finished encoding GIF"),n(x)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var l=0;console.log("Recording video",o);var g=()=>{l++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(g,e))};g()})}async function j(e){if(!d[i])throw Error("Invalid platform '"+i+"'.");t=new d[i]($("#emuscreen")[0]),await t.start(),e.rec&&I().on("focus",()=>{t.resume()});var r=e.n||"Game",n,o=e.url,a=e.r;if(o)return console.log(o),w(o,l=>{b(r,l)},"arraybuffer"),!0;if(a){var s=y(a);n=new p().decode(s)}return F(),b(r,n),!0}async function P(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await k(h(i));console.log("starting platform",i),await j(e)}catch(n){console.log(n),alert('Platform "'+i+'" not supported.')}}function G(){E(),m.p&&P(m)}window.addEventListener("message",H,!1);function H(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!t)P(e);else if(r=="reset")t.reset(),f.reset();else if(r=="getReplay"){var n={frameCount:f.frameCount,checkpoints:f.checkpoints,framerecs:f.framerecs,checkpointInterval:f.checkpointInterval,maxCheckpoints:f.maxCheckpoints};e.source.postMessage({ack:r,replay:n},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);f.callbackNewCheckpoint=a=>{e.source.postMessage({ack:r,state:o(t,a)},e.origin)}}else r=="recordVideo"?O(e.data.intervalMsec,e.data.maxFrames,function(a){e.data.filename&&(0,C.saveAs)(a,e.data.filename),e.source.postMessage({ack:r,gif:a},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");G();export{t as platform,i as platform_id,G as startEmbed,f as stateRecorder}; //# sourceMappingURL=embedui.js.map diff --git a/gen/exidy-EY3YDB6L.js b/gen/exidy-XIUHGVKQ.js similarity index 98% rename from gen/exidy-EY3YDB6L.js rename to gen/exidy-XIUHGVKQ.js index dde5453d..ac42f9a5 100644 --- a/gen/exidy-EY3YDB6L.js +++ b/gen/exidy-XIUHGVKQ.js @@ -1,2 +1,2 @@ -import{I as G,n as S,t as k}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{P,ba as c,ca as v,ea as R,ha as C}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var T=R([[c.START,1,-1],[c.RIGHT,1,-4],[c.LEFT,1,-8],[c.A,1,-16],[c.UP,1,-32],[c.DOWN,1,-64],[c.SELECT,1,-128]]);var U={collision_mask:4,collision_invert:4,scrnbase:16384,charbase:18432};var b=class extends k{constructor(){super();this.cpuFrequency=705562;this.sampleRate=894886;this.numVisibleScanlines=256;this.numTotalScanlines=262;this.cpuCyclesPerLine=42;this.canvasWidth=256;this.defaultROMSize=45056;this.cpu=new S;this.ram=new Uint8Array(28672);this.color_latch=[84,238,107];this.palette=[4278190080,4278190335,4294901760,4294902015,4278255360,4278255615,4294967040,4294967295];this.inputs=new Uint8Array(4);this.keyMap=T;this.handler=v(this.inputs,this.keyMap);this.scrnbase=16384;this.charbase=18432;this.collision_mask=0;this.collision_invert=0;this.current_collision=0;this.pia_regs=new Uint8Array(4);this.bus={read:C([[0,1023,0,t=>this.ram[t]],[4096,16383,0,t=>this.rom[t-4096]],[16384,20479,0,t=>this.ram[t]],[20736,20991,3,t=>t==3?this.int_latch():this.inputs[t]],[20992,21007,3,t=>this.readPIA(t)],[24576,28671,0,t=>this.ram[t]],[32768,65535,0,t=>this.rom[t-32768]]]),write:C([[0,1023,0,(t,e)=>{this.ram[t]=e}],[16384,20479,0,(t,e)=>{this.ram[t]=e}],[20480,20737,0,(t,e)=>{this.ram[t]=e}],[20992,21007,3,(t,e)=>{this.writePIA(t,e)}],[21008,21010,3,(t,e)=>{this.setColorLatch(t,e)}],[24576,28671,0,(t,e)=>{this.ram[t]=e}]])};this.connectCPUMemoryBus(this),this.updatePalette(),this.inputs[0]=234,this.inputs[1]=255}configure(t){this.collision_mask=t.collision_mask,this.collision_invert=t.collision_invert,this.scrnbase=t.scrnbase,this.charbase=t.charbase}loadROM(t){if(super.loadROM(t),t.length==11616)this.rom.set(t.slice(10240,12288),32768),this.rom.set(t.slice(9984,10240),32512),this.rom.set(t.slice(0,10240),2048),this.scrnbase=16384,this.charbase=18432;else if(t.length==14336)this.rom.set(t.slice(13312,14336),32768),this.rom.set(t.slice(12032,12288),32512),this.scrnbase=16384,this.charbase=18432;else if(t.length==32768)this.rom.set(t.slice(30720,32768),32768),this.rom.set(t.slice(0,24576),8192),this.scrnbase=16384,this.charbase=24576;else if(t.length==45056)this.configure(U);else if(t.length!=45056)throw new Error("Warning: ROM size not recognized: "+t.length);let e=32768;this.sprite_gfx=this.rom.subarray(e,e+2048)}read(t){return this.bus.read(t)}readConst(t){return t==20739?this.inputs[3]:this.bus.read(t)}write(t,e){this.bus.write(t,e)}readPIA(t){return this.pia_regs[t&3]}writePIA(t,e){this.pia_regs[t&3]=e}int_latch(){let t=this.inputs[3];t|=this.inputs[1]&128?0:64;let e=this.current_collision^this.collision_invert;return e&=this.collision_mask,t|=e,this.inputs[3]=128,t}checkCollisionM1CHAR(){let t=this.ram[20480],e=this.ram[20544],r=236-t-4,i=244-e-4,a=this.ram[20737];if(a&128&&!(a&16)&&this.collision_mask!=0)return!1;let l=a&32?1:0,o=((this.ram[20736]&15)+16*l)*32;for(let s=0;s<16;s++){let x=i+s;if(x<0||x>=256)continue;let d=x>>3,y=x&7,M=this.sprite_gfx[o+s],m=this.sprite_gfx[o+s+16];for(let n=0;n<16;n++){let _=n<8?M:m,p=n<8?128>>n:128>>n-8;if(!(_&p))continue;let h=r+n;if(h<0||h>=256)continue;let u=h>>3,g=this.ram[this.scrnbase+d*32+u];if(this.ram[this.charbase+g*8+y]&128>>(h&7))return!0}}return!1}checkCollisionM1M2(){let t=236-this.ram[20480]-4,e=244-this.ram[20544]-4,r=236-this.ram[20608]-4,i=244-this.ram[20672]-4;if(t+16<=r||r+16<=t||e+16<=i||i+16<=e)return!1;let a=this.ram[20737],l=a&32?1:0,f=((this.ram[20736]&15)+16*l)*32,o=a&64?1:0,s=((this.ram[20736]>>4)+32+16*o)*32,x=Math.max(t,r),d=Math.min(t+16,r+16),y=Math.max(e,i),M=Math.min(e+16,i+16);for(let m=y;m>h:128>>h-8,I=u<8?this.sprite_gfx[s+_]:this.sprite_gfx[s+_+16],z=u<8?128>>u:128>>u-8;if(g&E&&I&z)return!0}}return!1}updatePalette(){this.set_1_color(0,0),this.set_1_color(1,7),this.set_1_color(2,0),this.set_1_color(3,6),this.set_1_color(4,4),this.set_1_color(5,3),this.set_1_color(6,2),this.set_1_color(7,1)}set_1_color(t,e){let r=this.color_latch[0]&1<=0&&l<16){l=15-l;let f=this.scanline*this.canvasWidth,o=this.sprite_gfx[r+l];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}o=this.sprite_gfx[r+l+16];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s+8;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}}}drawSprite1(){let t=this.ram[20737];if(t&128&&!(t&16)&&this.collision_mask!=0)return;let e=this.ram[20480],r=this.ram[20544],i=t&32?1:0,a=(this.ram[20736]&15)+16*i;this.drawSprite(e,r,a*32,1)}drawSprite2(){let t=this.ram[20737];if(t&64&&this.collision_mask!=0)return;let e=this.ram[20608],r=this.ram[20672],i=t&64?1:0,a=(this.ram[20736]>>4)+0+16*i;this.drawSprite(e,r,a*32,3)}startScanline(){}drawScanline(){let t=this.scanline,e=t>>3,r=t*this.canvasWidth;for(let i=0;i<256;i++){let a=i>>3,l=this.ram[this.scrnbase+e*32+a],f=4+(l>>6&3),s=this.ram[this.charbase+l*8+(t&7)]&128>>(i&7)?f:0;this.pixels[r+i]=this.palette[s]}this.drawSprite2(),this.drawSprite1()}postFrame(){this.current_collision=0,this.collision_mask&4&&this.checkCollisionM1CHAR()&&(this.current_collision|=4),this.collision_mask&16&&this.checkCollisionM1M2()&&(this.current_collision|=16),this.inputs[3]&=127,this.cpu.IRQ()}getVideoParams(){return{width:256,height:256,aspect:6/5}}};var F=[4278190080,4278190335,4278255360,4278255615,4294901760,4294902015,4294967040,4294967295];var L=[{id:"minimal.c",name:"Minimal Example",category:"C"}],w=class extends G{newMachine(){return new b}getPresets(){return L}readAddress(A){return this.machine.readConst(A)}getMemoryMap(){return{main:[{name:"RAM",start:0,size:1024,type:"ram"},{name:"Sprite I/O",start:20480,size:256,type:"io"},{name:"I/O",start:20736,size:3,type:"io"},{name:"PIA 6821",start:20992,size:15,type:"io"},{name:"Color Latches",start:21008,size:3,type:"io"},{name:"Screen RAM",start:16384,size:1024,type:"ram"},{name:"Character RAM",start:18432,size:2048,type:"ram"},{name:"Program ROM",start:32768,size:32768,type:"rom"}]}}};P.exidy=w; -//# sourceMappingURL=exidy-EY3YDB6L.js.map +import{K as G,p as S,v as k}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P,ba as c,ca as v,ea as R,ha as C}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var T=R([[c.START,1,-1],[c.RIGHT,1,-4],[c.LEFT,1,-8],[c.A,1,-16],[c.UP,1,-32],[c.DOWN,1,-64],[c.SELECT,1,-128]]);var U={collision_mask:4,collision_invert:4,scrnbase:16384,charbase:18432};var b=class extends k{constructor(){super();this.cpuFrequency=705562;this.sampleRate=894886;this.numVisibleScanlines=256;this.numTotalScanlines=262;this.cpuCyclesPerLine=42;this.canvasWidth=256;this.defaultROMSize=45056;this.cpu=new S;this.ram=new Uint8Array(28672);this.color_latch=[84,238,107];this.palette=[4278190080,4278190335,4294901760,4294902015,4278255360,4278255615,4294967040,4294967295];this.inputs=new Uint8Array(4);this.keyMap=T;this.handler=v(this.inputs,this.keyMap);this.scrnbase=16384;this.charbase=18432;this.collision_mask=0;this.collision_invert=0;this.current_collision=0;this.pia_regs=new Uint8Array(4);this.bus={read:C([[0,1023,0,t=>this.ram[t]],[4096,16383,0,t=>this.rom[t-4096]],[16384,20479,0,t=>this.ram[t]],[20736,20991,3,t=>t==3?this.int_latch():this.inputs[t]],[20992,21007,3,t=>this.readPIA(t)],[24576,28671,0,t=>this.ram[t]],[32768,65535,0,t=>this.rom[t-32768]]]),write:C([[0,1023,0,(t,e)=>{this.ram[t]=e}],[16384,20479,0,(t,e)=>{this.ram[t]=e}],[20480,20737,0,(t,e)=>{this.ram[t]=e}],[20992,21007,3,(t,e)=>{this.writePIA(t,e)}],[21008,21010,3,(t,e)=>{this.setColorLatch(t,e)}],[24576,28671,0,(t,e)=>{this.ram[t]=e}]])};this.connectCPUMemoryBus(this),this.updatePalette(),this.inputs[0]=234,this.inputs[1]=255}configure(t){this.collision_mask=t.collision_mask,this.collision_invert=t.collision_invert,this.scrnbase=t.scrnbase,this.charbase=t.charbase}loadROM(t){if(super.loadROM(t),t.length==11616)this.rom.set(t.slice(10240,12288),32768),this.rom.set(t.slice(9984,10240),32512),this.rom.set(t.slice(0,10240),2048),this.scrnbase=16384,this.charbase=18432;else if(t.length==14336)this.rom.set(t.slice(13312,14336),32768),this.rom.set(t.slice(12032,12288),32512),this.scrnbase=16384,this.charbase=18432;else if(t.length==32768)this.rom.set(t.slice(30720,32768),32768),this.rom.set(t.slice(0,24576),8192),this.scrnbase=16384,this.charbase=24576;else if(t.length==45056)this.configure(U);else if(t.length!=45056)throw new Error("Warning: ROM size not recognized: "+t.length);let e=32768;this.sprite_gfx=this.rom.subarray(e,e+2048)}read(t){return this.bus.read(t)}readConst(t){return t==20739?this.inputs[3]:this.bus.read(t)}write(t,e){this.bus.write(t,e)}readPIA(t){return this.pia_regs[t&3]}writePIA(t,e){this.pia_regs[t&3]=e}int_latch(){let t=this.inputs[3];t|=this.inputs[1]&128?0:64;let e=this.current_collision^this.collision_invert;return e&=this.collision_mask,t|=e,this.inputs[3]=128,t}checkCollisionM1CHAR(){let t=this.ram[20480],e=this.ram[20544],r=236-t-4,i=244-e-4,a=this.ram[20737];if(a&128&&!(a&16)&&this.collision_mask!=0)return!1;let l=a&32?1:0,o=((this.ram[20736]&15)+16*l)*32;for(let s=0;s<16;s++){let x=i+s;if(x<0||x>=256)continue;let d=x>>3,y=x&7,M=this.sprite_gfx[o+s],m=this.sprite_gfx[o+s+16];for(let n=0;n<16;n++){let _=n<8?M:m,p=n<8?128>>n:128>>n-8;if(!(_&p))continue;let h=r+n;if(h<0||h>=256)continue;let u=h>>3,g=this.ram[this.scrnbase+d*32+u];if(this.ram[this.charbase+g*8+y]&128>>(h&7))return!0}}return!1}checkCollisionM1M2(){let t=236-this.ram[20480]-4,e=244-this.ram[20544]-4,r=236-this.ram[20608]-4,i=244-this.ram[20672]-4;if(t+16<=r||r+16<=t||e+16<=i||i+16<=e)return!1;let a=this.ram[20737],l=a&32?1:0,f=((this.ram[20736]&15)+16*l)*32,o=a&64?1:0,s=((this.ram[20736]>>4)+32+16*o)*32,x=Math.max(t,r),d=Math.min(t+16,r+16),y=Math.max(e,i),M=Math.min(e+16,i+16);for(let m=y;m>h:128>>h-8,I=u<8?this.sprite_gfx[s+_]:this.sprite_gfx[s+_+16],z=u<8?128>>u:128>>u-8;if(g&E&&I&z)return!0}}return!1}updatePalette(){this.set_1_color(0,0),this.set_1_color(1,7),this.set_1_color(2,0),this.set_1_color(3,6),this.set_1_color(4,4),this.set_1_color(5,3),this.set_1_color(6,2),this.set_1_color(7,1)}set_1_color(t,e){let r=this.color_latch[0]&1<=0&&l<16){l=15-l;let f=this.scanline*this.canvasWidth,o=this.sprite_gfx[r+l];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}o=this.sprite_gfx[r+l+16];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s+8;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}}}drawSprite1(){let t=this.ram[20737];if(t&128&&!(t&16)&&this.collision_mask!=0)return;let e=this.ram[20480],r=this.ram[20544],i=t&32?1:0,a=(this.ram[20736]&15)+16*i;this.drawSprite(e,r,a*32,1)}drawSprite2(){let t=this.ram[20737];if(t&64&&this.collision_mask!=0)return;let e=this.ram[20608],r=this.ram[20672],i=t&64?1:0,a=(this.ram[20736]>>4)+0+16*i;this.drawSprite(e,r,a*32,3)}startScanline(){}drawScanline(){let t=this.scanline,e=t>>3,r=t*this.canvasWidth;for(let i=0;i<256;i++){let a=i>>3,l=this.ram[this.scrnbase+e*32+a],f=4+(l>>6&3),s=this.ram[this.charbase+l*8+(t&7)]&128>>(i&7)?f:0;this.pixels[r+i]=this.palette[s]}this.drawSprite2(),this.drawSprite1()}postFrame(){this.current_collision=0,this.collision_mask&4&&this.checkCollisionM1CHAR()&&(this.current_collision|=4),this.collision_mask&16&&this.checkCollisionM1M2()&&(this.current_collision|=16),this.inputs[3]&=127,this.cpu.IRQ()}getVideoParams(){return{width:256,height:256,aspect:6/5}}};var F=[4278190080,4278190335,4278255360,4278255615,4294901760,4294902015,4294967040,4294967295];var L=[{id:"minimal.c",name:"Minimal Example",category:"C"}],w=class extends G{newMachine(){return new b}getPresets(){return L}readAddress(A){return this.machine.readConst(A)}getMemoryMap(){return{main:[{name:"RAM",start:0,size:1024,type:"ram"},{name:"Sprite I/O",start:20480,size:256,type:"io"},{name:"I/O",start:20736,size:3,type:"io"},{name:"PIA 6821",start:20992,size:15,type:"io"},{name:"Color Latches",start:21008,size:3,type:"io"},{name:"Screen RAM",start:16384,size:1024,type:"ram"},{name:"Character RAM",start:18432,size:2048,type:"ram"},{name:"Program ROM",start:32768,size:32768,type:"rom"}]}}};P.exidy=w; +//# sourceMappingURL=exidy-XIUHGVKQ.js.map diff --git a/gen/exidy-EY3YDB6L.js.map b/gen/exidy-XIUHGVKQ.js.map similarity index 100% rename from gen/exidy-EY3YDB6L.js.map rename to gen/exidy-XIUHGVKQ.js.map diff --git a/gen/galaxian-574VKGFX.js b/gen/galaxian-KOF65FZ3.js similarity index 97% rename from gen/galaxian-574VKGFX.js rename to gen/galaxian-KOF65FZ3.js index 50692a17..7844268d 100644 --- a/gen/galaxian-574VKGFX.js +++ b/gen/galaxian-KOF65FZ3.js @@ -1,2 +1,2 @@ -import{J as Q,c as z,d as X,e as L,l as j,t as J}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{P as B,Q as N,Y,ba as s,ca as q,ea as F,ga as Z,ha as _}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,e,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var r=0;r<264;r++)c[l+r]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],r=0;r<8;r++){var h=128>>r,p=A+(d&h?1:0)+(v&h?2:0);c[a]=e[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],P=240-(f0-(w<3?1:0)),o=x-P;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],r=0;r<8;r++){var h=128>>r,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-r:a+r]=e[A+p])}for(var d=n[m+8],v=n[m+2056],r=0;r<8;r++){var h=128>>r,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-r:a+r+8]=e[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var P=t[96+(i<<2)+1];(P+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var r=0;r<2;r++)if(i=r?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;Hthis.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,e)=>{this.ram[t]=e}],[20480,22527,1023,(t,e)=>{this.vram[t]=e}],[22528,24575,255,(t,e)=>{this.oram[t]=e}],[28673,28673,0,(t,e)=>{this.interruptEnabled=e&1}],[28676,28676,0,(t,e)=>{this.gfx.starsEnabled=e&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,e)=>{t&1&&this.psg1.selectRegister(e&15),t&2&&this.psg1.setData(e),t&4&&this.psg2.selectRegister(e&15),t&8&&this.psg2.setData(e)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var e=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),e}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var e=0;e<32;e++){var f=this.rom[this.palBase+e];this.palette[e]=4278190080;for(var u=0;u<8;u++)1<this.rom[t]],[16384,18431,2047,t=>this.ram[t]],[18432,20479,1023,t=>this.vram[t]],[20480,24575,255,t=>this.oram[t]],[28672,28672,0,t=>{this.watchdog_counter=M}],[30720,30720,0,t=>{this.watchdog_counter=M}],[33024,33024,0,t=>this.inputs[0]],[33025,33025,0,t=>this.inputs[1]],[33026,33026,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[33282,33282,0,t=>this.m_protection_result],[37120,37120,0,t=>this.inputs[0]],[37121,37121,0,t=>this.inputs[1]],[37122,37122,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[37394,37394,0,t=>this.m_protection_result]]);this.write=_([[16384,18431,2047,(t,e)=>{this.ram[t]=e}],[18432,20479,1023,(t,e)=>{this.vram[t]=e}],[20480,24575,255,(t,e)=>{this.oram[t]=e}],[26625,26625,0,(t,e)=>{this.interruptEnabled=e&1}],[26626,26626,0,(t,e)=>{}],[26627,26627,0,(t,e)=>{}],[26628,26628,0,(t,e)=>{this.gfx.starsEnabled=e&1}],[26632,26632,0,(t,e)=>{this.gfx.missileWidth=e}],[26633,26633,0,(t,e)=>{this.gfx.missileOffset=e}],[33282,33282,0,this.scramble_protection_w.bind(this)]]);this.m_protection_state=0;this.m_protection_result=0;this.init()}scramble_protection_w(t,e){switch(this.m_protection_state=this.m_protection_state<<4|e&15,this.m_protection_state&4095){case 3849:this.m_protection_result=255;break;case 2633:this.m_protection_result=191;break;case 793:this.m_protection_result=79;break;case 1481:this.m_protection_result=111;break;case 582:this.m_protection_result^=128;break;case 2911:this.m_protection_result=111;break}}scramble_protection_alt_r(){var t=this.m_protection_result>>7&1;return t<<5|(t^1)<<7}};var v0=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shoot2.c",name:"Solarian Game"}],R=class extends Q{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Video RAM",start:20480,size:1024,type:"ram"},{name:"Sprite RAM",start:22528,size:256,type:"ram"},{name:"I/O Registers",start:24576,size:8192,type:"io"}]}}}newMachine(){return new g}getPresets(){return[]}readAddress(t){return this.machine.readConst(t)}readVRAMAddress(t){return t<2048?this.machine.vram[t]:this.machine.oram[t-2048]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#galaxian-scramble"}},U=class extends R{newMachine(){return new S}getPresets(){return v0}};B.galaxian=R;B["galaxian-scramble"]=U; -//# sourceMappingURL=galaxian-574VKGFX.js.map +import{L as Q,c as z,d as X,e as L,n as j,v as J}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P as B,Q as N,Y,ba as s,ca as q,ea as F,ga as Z,ha as _}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,e,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var r=0;r<264;r++)c[l+r]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],r=0;r<8;r++){var h=128>>r,p=A+(d&h?1:0)+(v&h?2:0);c[a]=e[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],P=240-(f0-(w<3?1:0)),o=x-P;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],r=0;r<8;r++){var h=128>>r,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-r:a+r]=e[A+p])}for(var d=n[m+8],v=n[m+2056],r=0;r<8;r++){var h=128>>r,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-r:a+r+8]=e[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var P=t[96+(i<<2)+1];(P+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var r=0;r<2;r++)if(i=r?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;Hthis.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,e)=>{this.ram[t]=e}],[20480,22527,1023,(t,e)=>{this.vram[t]=e}],[22528,24575,255,(t,e)=>{this.oram[t]=e}],[28673,28673,0,(t,e)=>{this.interruptEnabled=e&1}],[28676,28676,0,(t,e)=>{this.gfx.starsEnabled=e&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,e)=>{t&1&&this.psg1.selectRegister(e&15),t&2&&this.psg1.setData(e),t&4&&this.psg2.selectRegister(e&15),t&8&&this.psg2.setData(e)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var e=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),e}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var e=0;e<32;e++){var f=this.rom[this.palBase+e];this.palette[e]=4278190080;for(var u=0;u<8;u++)1<this.rom[t]],[16384,18431,2047,t=>this.ram[t]],[18432,20479,1023,t=>this.vram[t]],[20480,24575,255,t=>this.oram[t]],[28672,28672,0,t=>{this.watchdog_counter=M}],[30720,30720,0,t=>{this.watchdog_counter=M}],[33024,33024,0,t=>this.inputs[0]],[33025,33025,0,t=>this.inputs[1]],[33026,33026,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[33282,33282,0,t=>this.m_protection_result],[37120,37120,0,t=>this.inputs[0]],[37121,37121,0,t=>this.inputs[1]],[37122,37122,0,t=>this.inputs[2]|this.scramble_protection_alt_r()],[37394,37394,0,t=>this.m_protection_result]]);this.write=_([[16384,18431,2047,(t,e)=>{this.ram[t]=e}],[18432,20479,1023,(t,e)=>{this.vram[t]=e}],[20480,24575,255,(t,e)=>{this.oram[t]=e}],[26625,26625,0,(t,e)=>{this.interruptEnabled=e&1}],[26626,26626,0,(t,e)=>{}],[26627,26627,0,(t,e)=>{}],[26628,26628,0,(t,e)=>{this.gfx.starsEnabled=e&1}],[26632,26632,0,(t,e)=>{this.gfx.missileWidth=e}],[26633,26633,0,(t,e)=>{this.gfx.missileOffset=e}],[33282,33282,0,this.scramble_protection_w.bind(this)]]);this.m_protection_state=0;this.m_protection_result=0;this.init()}scramble_protection_w(t,e){switch(this.m_protection_state=this.m_protection_state<<4|e&15,this.m_protection_state&4095){case 3849:this.m_protection_result=255;break;case 2633:this.m_protection_result=191;break;case 793:this.m_protection_result=79;break;case 1481:this.m_protection_result=111;break;case 582:this.m_protection_result^=128;break;case 2911:this.m_protection_result=111;break}}scramble_protection_alt_r(){var t=this.m_protection_result>>7&1;return t<<5|(t^1)<<7}};var v0=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shoot2.c",name:"Solarian Game"}],R=class extends Q{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Video RAM",start:20480,size:1024,type:"ram"},{name:"Sprite RAM",start:22528,size:256,type:"ram"},{name:"I/O Registers",start:24576,size:8192,type:"io"}]}}}newMachine(){return new g}getPresets(){return[]}readAddress(t){return this.machine.readConst(t)}readVRAMAddress(t){return t<2048?this.machine.vram[t]:this.machine.oram[t-2048]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#galaxian-scramble"}},U=class extends R{newMachine(){return new S}getPresets(){return v0}};B.galaxian=R;B["galaxian-scramble"]=U; +//# sourceMappingURL=galaxian-KOF65FZ3.js.map diff --git a/gen/galaxian-574VKGFX.js.map b/gen/galaxian-KOF65FZ3.js.map similarity index 100% rename from gen/galaxian-574VKGFX.js.map rename to gen/galaxian-KOF65FZ3.js.map diff --git a/gen/gb-QINPLCGV.js b/gen/gb-4WE7DNZW.js similarity index 99% rename from gen/gb-QINPLCGV.js rename to gen/gb-4WE7DNZW.js index 1b4e76c9..85c11364 100644 --- a/gen/gb-QINPLCGV.js +++ b/gen/gb-4WE7DNZW.js @@ -1,4 +1,4 @@ -import{a as L,b as Q}from"./chunk-G3VBABUZ.js";import{D as Y,G as J,H as $,t as K,w as G}from"./chunk-FFJHITEL.js";import{b as Z}from"./chunk-UXRCACYH.js";import{P as W,Y as O,ba as g,ca as z,ea as N,g as m,ha as j}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var x=class x{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&x.FLAG_Z)}getN(){return!!(this.F&x.FLAG_N)}getH(){return!!(this.F&x.FLAG_H)}getC(){return!!(this.F&x.FLAG_C)}setZ(t){t?this.F|=x.FLAG_Z:this.F&=~x.FLAG_Z}setN(t){t?this.F|=x.FLAG_N:this.F&=~x.FLAG_N}setH(t){t?this.F|=x.FLAG_H:this.F&=~x.FLAG_H}setC(t){t?this.F|=x.FLAG_C:this.F&=~x.FLAG_C}setFlags(t,e,s,i){this.F=(t?x.FLAG_Z:0)|(e?x.FLAG_N:0)|(s?x.FLAG_H:0)|(i?x.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH()||(t&15)>9)&&(t+=6)),t&=255,this.setZ(t===0),this.setH(!1),this.A=t}cbOp(t){var e=t>>3&31,s=t&7,i=this.getReg(s),h=s===6?4:2,r;if(t<64){switch(e){case 0:r=(i<<1|i>>7)&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 1:r=(i>>1|i<<7)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 2:r=(i<<1|(this.getC()?1:0))&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 3:r=(i>>1|(this.getC()?128:0))&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 4:r=i<<1&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 5:r=(i>>1|i&128)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 6:r=(i&15)<<4|(i&240)>>4,this.setFlags(r===0,!1,!1,!1);break;case 7:r=i>>1&255,this.setFlags(r===0,!1,!1,!!(i&1));break;default:r=i}this.setReg(s,r),s===6&&(h=4)}else if(t<128){var a=t>>3&7;this.setZ(!(i&1<>3&7;this.setReg(s,i&~(1<>3&7;this.setReg(s,i|1<0)return t;if(this.halted)return 1;this.stable=!0;var e=this.fetchByte();this.o=e,this.stable=!1;var s=this.executeOpcode(e);return this.stable=!0,s}executeOpcode(t){var e=t>>6&3,s=t>>3&7,i=t&7,h=s>>1&3,r=s&1;switch(e){case 0:return this.execX0(s,i,h,r,t);case 1:return i===6&&s===6?(this.halted=!0,1):(this.setReg(s,this.getReg(i)),s===6||i===6?2:1);case 2:return this.aluOp(s,this.getReg(i)),i===6?2:1;case 3:return this.execX3(s,i,h,r,t)}return 1}execX0(t,e,s,i,h){switch(e){case 0:switch(t){case 0:return 1;case 1:var r=this.fetchWord();return this.writeWord(r,this.SP),5;case 2:return this.PC=this.PC+1&65535,1;case 3:var a=this.fetchSignedByte();return this.PC=this.PC+a&65535,3;case 4:case 5:case 6:case 7:var a=this.fetchSignedByte();return this.checkCondition(t-4)?(this.PC=this.PC+a&65535,3):2}break;case 1:return i===0?(this.setReg16(s,this.fetchWord()),3):(this.addHL(this.getReg16(s)),2);case 2:if(i===0)switch(s){case 0:return this.write(this.getBC(),this.A),2;case 1:return this.write(this.getDE(),this.A),2;case 2:return this.write(this.getHL(),this.A),this.setHL(this.getHL()+1&65535),2;case 3:return this.write(this.getHL(),this.A),this.setHL(this.getHL()-1&65535),2}else switch(s){case 0:return this.A=this.read(this.getBC()),2;case 1:return this.A=this.read(this.getDE()),2;case 2:return this.A=this.read(this.getHL()),this.setHL(this.getHL()+1&65535),2;case 3:return this.A=this.read(this.getHL()),this.setHL(this.getHL()-1&65535),2}break;case 3:return i===0?(this.setReg16(s,this.getReg16(s)+1&65535),2):(this.setReg16(s,this.getReg16(s)-1&65535),2);case 4:return this.setReg(t,this.inc8(this.getReg(t))),t===6?3:1;case 5:return this.setReg(t,this.dec8(this.getReg(t))),t===6?3:1;case 6:return this.setReg(t,this.fetchByte()),t===6?3:2;case 7:switch(t){case 0:var c=this.A>>7&1;return this.A=(this.A<<1|c)&255,this.setFlags(!1,!1,!1,!!c),1;case 1:var o=this.A&1;return this.A=(this.A>>1|o<<7)&255,this.setFlags(!1,!1,!1,!!o),1;case 2:var c=this.A>>7&1;return this.A=(this.A<<1|(this.getC()?1:0))&255,this.setFlags(!1,!1,!1,!!c),1;case 3:var o=this.A&1;return this.A=(this.A>>1|(this.getC()?128:0))&255,this.setFlags(!1,!1,!1,!!o),1;case 4:return this.daa(),1;case 5:return this.A=~this.A&255,this.setN(!0),this.setH(!0),1;case 6:return this.setN(!1),this.setH(!1),this.setC(!0),1;case 7:return this.setN(!1),this.setH(!1),this.setC(!this.getC()),1}break}return 1}execX3(t,e,s,i,h){switch(e){case 0:switch(t){case 0:case 1:case 2:case 3:return this.checkCondition(t)?(this.PC=this.popWord(),5):2;case 4:var r=this.fetchByte();return this.write(65280+r,this.A),3;case 5:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.SP=c,4;case 6:var r=this.fetchByte();return this.A=this.read(65280+r),3;case 7:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.setHL(c),3}break;case 1:if(i===0)return this.setReg16AF(s,this.popWord()),3;switch(s){case 0:return this.PC=this.popWord(),4;case 1:return this.PC=this.popWord(),this.ime=!0,4;case 2:return this.PC=this.getHL(),1;case 3:return this.SP=this.getHL(),2}break;case 2:switch(t){case 0:case 1:case 2:case 3:var o=this.fetchWord();return this.checkCondition(t)?(this.PC=o,4):3;case 4:return this.write(65280+this.C,this.A),2;case 5:return this.write(this.fetchWord(),this.A),4;case 6:return this.A=this.read(65280+this.C),2;case 7:return this.A=this.read(this.fetchWord()),4}break;case 3:switch(t){case 0:return this.PC=this.fetchWord(),4;case 1:var n=this.fetchByte();return 2+this.cbOp(n);case 6:return this.ime=!1,this.imeDelay=!1,1;case 7:return this.imeDelay=!0,1;default:return 1}case 4:switch(t){case 0:case 1:case 2:case 3:var o=this.fetchWord();return this.checkCondition(t)?(this.pushWord(this.PC),this.PC=o,6):3;default:return 1}case 5:if(i===0)return this.pushWord(this.getReg16AF(s)),4;if(s===0){var o=this.fetchWord();return this.pushWord(this.PC),this.PC=o,6}return 1;case 6:return this.aluOp(t,this.fetchByte()),2;case 7:return this.pushWord(this.PC),this.PC=t*8,4}return 1}};x.FLAG_Z=128,x.FLAG_N=64,x.FLAG_H=32,x.FLAG_C=16;var D=x;function he(M,t){var e=M&31,s=(M>>5|(t&3)<<3)&31,i=t>>2&31,h=e*527+23>>6,r=s*527+23>>6,a=i*527+23>>6;return 4278190080|a<<16|r<<8|h}var X=new Uint8Array([255,127,181,86,74,41,0,0]),re=N([[g.RIGHT,0,1],[g.LEFT,0,2],[g.UP,0,4],[g.DOWN,0,8],[g.A,0,16],[g.B,0,32],[g.GP_A,0,16],[g.GP_B,0,32],[g.SELECT,0,64],[g.START,0,128]]),ee=[[0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,1],[1,0,0,0,0,1,1,1],[0,1,1,1,1,1,1,0]],l=new Uint8Array(48);l[0]=128,l[1]=63,l[2]=0,l[3]=255,l[4]=191,l[5]=255,l[6]=63,l[7]=0,l[8]=255,l[9]=191,l[10]=127,l[11]=255,l[12]=159,l[13]=255,l[14]=191,l[15]=255,l[16]=255,l[17]=0,l[18]=0,l[19]=191,l[20]=0,l[21]=0,l[22]=112;var U=class{constructor(){this.enabled=!1;this.nr50=0;this.nr51=0;this.ch1_enabled=!1;this.ch1_dacEnabled=!1;this.ch1_duty=0;this.ch1_dutyPos=0;this.ch1_lengthCounter=0;this.ch1_lengthEnabled=!1;this.ch1_volume=0;this.ch1_envInitVol=0;this.ch1_envDir=0;this.ch1_envPeriod=0;this.ch1_envTimer=0;this.ch1_freq=0;this.ch1_freqTimer=0;this.ch1_sweepPeriod=0;this.ch1_sweepDir=0;this.ch1_sweepShift=0;this.ch1_sweepTimer=0;this.ch1_sweepEnabled=!1;this.ch1_sweepShadow=0;this.ch2_enabled=!1;this.ch2_dacEnabled=!1;this.ch2_duty=0;this.ch2_dutyPos=0;this.ch2_lengthCounter=0;this.ch2_lengthEnabled=!1;this.ch2_volume=0;this.ch2_envInitVol=0;this.ch2_envDir=0;this.ch2_envPeriod=0;this.ch2_envTimer=0;this.ch2_freq=0;this.ch2_freqTimer=0;this.ch3_enabled=!1;this.ch3_dacEnabled=!1;this.ch3_lengthCounter=0;this.ch3_lengthEnabled=!1;this.ch3_volume=0;this.ch3_freq=0;this.ch3_freqTimer=0;this.ch3_samplePos=0;this.ch3_sampleBuffer=0;this.waveRAM=new Uint8Array(16);this.ch4_enabled=!1;this.ch4_dacEnabled=!1;this.ch4_lengthCounter=0;this.ch4_lengthEnabled=!1;this.ch4_volume=0;this.ch4_envInitVol=0;this.ch4_envDir=0;this.ch4_envPeriod=0;this.ch4_envTimer=0;this.ch4_clockShift=0;this.ch4_widthMode=0;this.ch4_divisor=0;this.ch4_freqTimer=0;this.ch4_lfsr=32767;this.frameSeqTimer=0;this.frameSeqStep=0;this.regs=new Uint8Array(48)}reset(){this.enabled=!1,this.nr50=0,this.nr51=0,this.ch1_enabled=!1,this.ch1_dacEnabled=!1,this.ch1_duty=0,this.ch1_dutyPos=0,this.ch1_lengthCounter=0,this.ch1_lengthEnabled=!1,this.ch1_volume=0,this.ch1_envInitVol=0,this.ch1_envDir=0,this.ch1_envPeriod=0,this.ch1_envTimer=0,this.ch1_freq=0,this.ch1_freqTimer=0,this.ch1_sweepPeriod=0,this.ch1_sweepDir=0,this.ch1_sweepShift=0,this.ch1_sweepTimer=0,this.ch1_sweepEnabled=!1,this.ch1_sweepShadow=0,this.ch2_enabled=!1,this.ch2_dacEnabled=!1,this.ch2_duty=0,this.ch2_dutyPos=0,this.ch2_lengthCounter=0,this.ch2_lengthEnabled=!1,this.ch2_volume=0,this.ch2_envInitVol=0,this.ch2_envDir=0,this.ch2_envPeriod=0,this.ch2_envTimer=0,this.ch2_freq=0,this.ch2_freqTimer=0,this.ch3_enabled=!1,this.ch3_dacEnabled=!1,this.ch3_lengthCounter=0,this.ch3_lengthEnabled=!1,this.ch3_volume=0,this.ch3_freq=0,this.ch3_freqTimer=0,this.ch3_samplePos=0,this.ch3_sampleBuffer=0,this.waveRAM.fill(0),this.ch4_enabled=!1,this.ch4_dacEnabled=!1,this.ch4_lengthCounter=0,this.ch4_lengthEnabled=!1,this.ch4_volume=0,this.ch4_envInitVol=0,this.ch4_envDir=0,this.ch4_envPeriod=0,this.ch4_envTimer=0,this.ch4_clockShift=0,this.ch4_widthMode=0,this.ch4_divisor=0,this.ch4_freqTimer=0,this.ch4_lfsr=32767,this.frameSeqTimer=0,this.frameSeqStep=0,this.regs.fill(0)}readRegister(t){if(t>=48&&t<=63)return this.ch3_enabled?this.waveRAM[this.ch3_samplePos>>1]:this.waveRAM[t-48];if(t===38){var e=(this.enabled?128:0)|(this.ch1_enabled?1:0)|(this.ch2_enabled?2:0)|(this.ch3_enabled?4:0)|(this.ch4_enabled?8:0);return e|112}if(!this.enabled)return 255;var s=t-16;return this.regs[s]|l[s]}writeRegister(t,e){if(t>=48&&t<=63){this.waveRAM[t-48]=e;return}if(t===38){var s=this.enabled;if(this.enabled=!!(e&128),s&&!this.enabled){for(var i=16;i<=37;i++)this.writeRegister(i,0);this.ch1_enabled=!1,this.ch2_enabled=!1,this.ch3_enabled=!1,this.ch4_enabled=!1}!s&&this.enabled&&(this.frameSeqTimer=0,this.frameSeqStep=0);return}if(this.enabled){var h=t-16;switch(this.regs[h]=e,t){case 16:this.ch1_sweepPeriod=e>>4&7,this.ch1_sweepDir=e>>3&1,this.ch1_sweepShift=e&7;break;case 17:this.ch1_duty=e>>6&3,this.ch1_lengthCounter=64-(e&63);break;case 18:this.ch1_envInitVol=e>>4&15,this.ch1_envDir=e>>3&1,this.ch1_envPeriod=e&7,this.ch1_dacEnabled=(e&248)!==0,this.ch1_dacEnabled||(this.ch1_enabled=!1);break;case 19:this.ch1_freq=this.ch1_freq&1792|e;break;case 20:this.ch1_freq=this.ch1_freq&255|(e&7)<<8,this.ch1_lengthEnabled=!!(e&64),e&128&&this.triggerChannel1();break;case 22:this.ch2_duty=e>>6&3,this.ch2_lengthCounter=64-(e&63);break;case 23:this.ch2_envInitVol=e>>4&15,this.ch2_envDir=e>>3&1,this.ch2_envPeriod=e&7,this.ch2_dacEnabled=(e&248)!==0,this.ch2_dacEnabled||(this.ch2_enabled=!1);break;case 24:this.ch2_freq=this.ch2_freq&1792|e;break;case 25:this.ch2_freq=this.ch2_freq&255|(e&7)<<8,this.ch2_lengthEnabled=!!(e&64),e&128&&this.triggerChannel2();break;case 26:this.ch3_dacEnabled=!!(e&128),this.ch3_dacEnabled||(this.ch3_enabled=!1);break;case 27:this.ch3_lengthCounter=256-e;break;case 28:this.ch3_volume=e>>5&3;break;case 29:this.ch3_freq=this.ch3_freq&1792|e;break;case 30:this.ch3_freq=this.ch3_freq&255|(e&7)<<8,this.ch3_lengthEnabled=!!(e&64),e&128&&this.triggerChannel3();break;case 32:this.ch4_lengthCounter=64-(e&63);break;case 33:this.ch4_envInitVol=e>>4&15,this.ch4_envDir=e>>3&1,this.ch4_envPeriod=e&7,this.ch4_dacEnabled=(e&248)!==0,this.ch4_dacEnabled||(this.ch4_enabled=!1);break;case 34:this.ch4_clockShift=e>>4&15,this.ch4_widthMode=e>>3&1,this.ch4_divisor=e&7;break;case 35:this.ch4_lengthEnabled=!!(e&64),e&128&&this.triggerChannel4();break;case 36:this.nr50=e;break;case 37:this.nr51=e;break}}}triggerChannel1(){this.ch1_dacEnabled&&(this.ch1_enabled=!0),this.ch1_lengthCounter===0&&(this.ch1_lengthCounter=64),this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_volume=this.ch1_envInitVol,this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_sweepShadow=this.ch1_freq,this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepEnabled=this.ch1_sweepPeriod>0||this.ch1_sweepShift>0,this.ch1_sweepShift>0&&this.calcSweepFreq()}triggerChannel2(){this.ch2_dacEnabled&&(this.ch2_enabled=!0),this.ch2_lengthCounter===0&&(this.ch2_lengthCounter=64),this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_volume=this.ch2_envInitVol,this.ch2_envTimer=this.ch2_envPeriod||8}triggerChannel3(){this.ch3_dacEnabled&&(this.ch3_enabled=!0),this.ch3_lengthCounter===0&&(this.ch3_lengthCounter=256),this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=0}triggerChannel4(){this.ch4_dacEnabled&&(this.ch4_enabled=!0),this.ch4_lengthCounter===0&&(this.ch4_lengthCounter=64);var t=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=t<>this.ch1_sweepShift;return this.ch1_sweepDir?t=this.ch1_sweepShadow-t:t=this.ch1_sweepShadow+t,t>2047&&(this.ch1_enabled=!1),t}clock(t){if(this.enabled)for(var e=0;e=8192&&(this.frameSeqTimer=0,this.clockFrameSequencer()),this.ch1_enabled&&(this.ch1_freqTimer--,this.ch1_freqTimer<=0&&(this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_dutyPos=this.ch1_dutyPos+1&7)),this.ch2_enabled&&(this.ch2_freqTimer--,this.ch2_freqTimer<=0&&(this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_dutyPos=this.ch2_dutyPos+1&7)),this.ch3_enabled&&(this.ch3_freqTimer--,this.ch3_freqTimer<=0)){this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=this.ch3_samplePos+1&31;var s=this.waveRAM[this.ch3_samplePos>>1];this.ch3_sampleBuffer=this.ch3_samplePos&1?s&15:s>>4}if(this.ch4_enabled&&(this.ch4_freqTimer--,this.ch4_freqTimer<=0)){var i=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=i<>1&1;this.ch4_lfsr=this.ch4_lfsr>>1|h<<14,this.ch4_widthMode&&(this.ch4_lfsr=this.ch4_lfsr&-65|h<<6)}}}clockFrameSequencer(){(this.frameSeqStep&1)===0&&this.clockLengthCounters(),(this.frameSeqStep===2||this.frameSeqStep===6)&&this.clockSweep(),this.frameSeqStep===7&&this.clockEnvelopes(),this.frameSeqStep=this.frameSeqStep+1&7}clockLengthCounters(){this.ch1_lengthEnabled&&this.ch1_lengthCounter>0&&(this.ch1_lengthCounter--,this.ch1_lengthCounter===0&&(this.ch1_enabled=!1)),this.ch2_lengthEnabled&&this.ch2_lengthCounter>0&&(this.ch2_lengthCounter--,this.ch2_lengthCounter===0&&(this.ch2_enabled=!1)),this.ch3_lengthEnabled&&this.ch3_lengthCounter>0&&(this.ch3_lengthCounter--,this.ch3_lengthCounter===0&&(this.ch3_enabled=!1)),this.ch4_lengthEnabled&&this.ch4_lengthCounter>0&&(this.ch4_lengthCounter--,this.ch4_lengthCounter===0&&(this.ch4_enabled=!1))}clockSweep(){if(this.ch1_sweepEnabled&&(this.ch1_sweepTimer--,this.ch1_sweepTimer<=0&&(this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepPeriod>0))){var t=this.calcSweepFreq();t<=2047&&this.ch1_sweepShift>0&&(this.ch1_sweepShadow=t,this.ch1_freq=t,this.calcSweepFreq())}}clockEnvelopes(){this.ch1_envPeriod>0&&(this.ch1_envTimer--,this.ch1_envTimer<=0&&(this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_envDir&&this.ch1_volume<15?this.ch1_volume++:!this.ch1_envDir&&this.ch1_volume>0&&this.ch1_volume--)),this.ch2_envPeriod>0&&(this.ch2_envTimer--,this.ch2_envTimer<=0&&(this.ch2_envTimer=this.ch2_envPeriod||8,this.ch2_envDir&&this.ch2_volume<15?this.ch2_volume++:!this.ch2_envDir&&this.ch2_volume>0&&this.ch2_volume--)),this.ch4_envPeriod>0&&(this.ch4_envTimer--,this.ch4_envTimer<=0&&(this.ch4_envTimer=this.ch4_envPeriod||8,this.ch4_envDir&&this.ch4_volume<15?this.ch4_volume++:!this.ch4_envDir&&this.ch4_volume>0&&this.ch4_volume--))}getSample(){if(!this.enabled)return 0;var t=0,e=0,s=0,i=0;if(this.ch1_enabled&&this.ch1_dacEnabled&&(t=ee[this.ch1_duty][this.ch1_dutyPos]?this.ch1_volume:0),this.ch2_enabled&&this.ch2_dacEnabled&&(e=ee[this.ch2_duty][this.ch2_dutyPos]?this.ch2_volume:0),this.ch3_enabled&&this.ch3_dacEnabled){var h=this.ch3_sampleBuffer;switch(this.ch3_volume){case 0:h=0;break;case 1:break;case 2:h>>=1;break;case 3:h>>=2;break}s=h}this.ch4_enabled&&this.ch4_dacEnabled&&(i=this.ch4_lfsr&1?0:this.ch4_volume);var r=t/7.5-1,a=e/7.5-1,c=s/7.5-1,o=i/7.5-1,n=0,u=0;this.nr51&16&&(n+=r),this.nr51&32&&(n+=a),this.nr51&64&&(n+=c),this.nr51&128&&(n+=o),this.nr51&1&&(u+=r),this.nr51&2&&(u+=a),this.nr51&4&&(u+=c),this.nr51&8&&(u+=o);var w=(this.nr50>>4&7)+1,f=(this.nr50&7)+1;return n*=w/8,u*=f/8,(n+u)/8}saveState(){return{enabled:this.enabled,nr50:this.nr50,nr51:this.nr51,ch1_enabled:this.ch1_enabled,ch1_dacEnabled:this.ch1_dacEnabled,ch1_duty:this.ch1_duty,ch1_dutyPos:this.ch1_dutyPos,ch1_lengthCounter:this.ch1_lengthCounter,ch1_lengthEnabled:this.ch1_lengthEnabled,ch1_volume:this.ch1_volume,ch1_envInitVol:this.ch1_envInitVol,ch1_envDir:this.ch1_envDir,ch1_envPeriod:this.ch1_envPeriod,ch1_envTimer:this.ch1_envTimer,ch1_freq:this.ch1_freq,ch1_freqTimer:this.ch1_freqTimer,ch1_sweepPeriod:this.ch1_sweepPeriod,ch1_sweepDir:this.ch1_sweepDir,ch1_sweepShift:this.ch1_sweepShift,ch1_sweepTimer:this.ch1_sweepTimer,ch1_sweepEnabled:this.ch1_sweepEnabled,ch1_sweepShadow:this.ch1_sweepShadow,ch2_enabled:this.ch2_enabled,ch2_dacEnabled:this.ch2_dacEnabled,ch2_duty:this.ch2_duty,ch2_dutyPos:this.ch2_dutyPos,ch2_lengthCounter:this.ch2_lengthCounter,ch2_lengthEnabled:this.ch2_lengthEnabled,ch2_volume:this.ch2_volume,ch2_envInitVol:this.ch2_envInitVol,ch2_envDir:this.ch2_envDir,ch2_envPeriod:this.ch2_envPeriod,ch2_envTimer:this.ch2_envTimer,ch2_freq:this.ch2_freq,ch2_freqTimer:this.ch2_freqTimer,ch3_enabled:this.ch3_enabled,ch3_dacEnabled:this.ch3_dacEnabled,ch3_lengthCounter:this.ch3_lengthCounter,ch3_lengthEnabled:this.ch3_lengthEnabled,ch3_volume:this.ch3_volume,ch3_freq:this.ch3_freq,ch3_freqTimer:this.ch3_freqTimer,ch3_samplePos:this.ch3_samplePos,ch3_sampleBuffer:this.ch3_sampleBuffer,waveRAM:this.waveRAM.slice(0),ch4_enabled:this.ch4_enabled,ch4_dacEnabled:this.ch4_dacEnabled,ch4_lengthCounter:this.ch4_lengthCounter,ch4_lengthEnabled:this.ch4_lengthEnabled,ch4_volume:this.ch4_volume,ch4_envInitVol:this.ch4_envInitVol,ch4_envDir:this.ch4_envDir,ch4_envPeriod:this.ch4_envPeriod,ch4_envTimer:this.ch4_envTimer,ch4_clockShift:this.ch4_clockShift,ch4_widthMode:this.ch4_widthMode,ch4_divisor:this.ch4_divisor,ch4_freqTimer:this.ch4_freqTimer,ch4_lfsr:this.ch4_lfsr,frameSeqTimer:this.frameSeqTimer,frameSeqStep:this.frameSeqStep,regs:this.regs.slice(0)}}loadState(t){this.enabled=t.enabled,this.nr50=t.nr50,this.nr51=t.nr51,this.ch1_enabled=t.ch1_enabled,this.ch1_dacEnabled=t.ch1_dacEnabled,this.ch1_duty=t.ch1_duty,this.ch1_dutyPos=t.ch1_dutyPos,this.ch1_lengthCounter=t.ch1_lengthCounter,this.ch1_lengthEnabled=t.ch1_lengthEnabled,this.ch1_volume=t.ch1_volume,this.ch1_envInitVol=t.ch1_envInitVol,this.ch1_envDir=t.ch1_envDir,this.ch1_envPeriod=t.ch1_envPeriod,this.ch1_envTimer=t.ch1_envTimer,this.ch1_freq=t.ch1_freq,this.ch1_freqTimer=t.ch1_freqTimer,this.ch1_sweepPeriod=t.ch1_sweepPeriod,this.ch1_sweepDir=t.ch1_sweepDir,this.ch1_sweepShift=t.ch1_sweepShift,this.ch1_sweepTimer=t.ch1_sweepTimer,this.ch1_sweepEnabled=t.ch1_sweepEnabled,this.ch1_sweepShadow=t.ch1_sweepShadow,this.ch2_enabled=t.ch2_enabled,this.ch2_dacEnabled=t.ch2_dacEnabled,this.ch2_duty=t.ch2_duty,this.ch2_dutyPos=t.ch2_dutyPos,this.ch2_lengthCounter=t.ch2_lengthCounter,this.ch2_lengthEnabled=t.ch2_lengthEnabled,this.ch2_volume=t.ch2_volume,this.ch2_envInitVol=t.ch2_envInitVol,this.ch2_envDir=t.ch2_envDir,this.ch2_envPeriod=t.ch2_envPeriod,this.ch2_envTimer=t.ch2_envTimer,this.ch2_freq=t.ch2_freq,this.ch2_freqTimer=t.ch2_freqTimer,this.ch3_enabled=t.ch3_enabled,this.ch3_dacEnabled=t.ch3_dacEnabled,this.ch3_lengthCounter=t.ch3_lengthCounter,this.ch3_lengthEnabled=t.ch3_lengthEnabled,this.ch3_volume=t.ch3_volume,this.ch3_freq=t.ch3_freq,this.ch3_freqTimer=t.ch3_freqTimer,this.ch3_samplePos=t.ch3_samplePos,this.ch3_sampleBuffer=t.ch3_sampleBuffer,t.waveRAM&&this.waveRAM.set(t.waveRAM),this.ch4_enabled=t.ch4_enabled,this.ch4_dacEnabled=t.ch4_dacEnabled,this.ch4_lengthCounter=t.ch4_lengthCounter,this.ch4_lengthEnabled=t.ch4_lengthEnabled,this.ch4_volume=t.ch4_volume,this.ch4_envInitVol=t.ch4_envInitVol,this.ch4_envDir=t.ch4_envDir,this.ch4_envPeriod=t.ch4_envPeriod,this.ch4_envTimer=t.ch4_envTimer,this.ch4_clockShift=t.ch4_clockShift,this.ch4_widthMode=t.ch4_widthMode,this.ch4_divisor=t.ch4_divisor,this.ch4_freqTimer=t.ch4_freqTimer,this.ch4_lfsr=t.ch4_lfsr,this.frameSeqTimer=t.frameSeqTimer,this.frameSeqStep=t.frameSeqStep,t.regs&&this.regs.set(t.regs)}},T=class extends K{constructor(){super();this.cpuFrequency=4194304;this.canvasWidth=160;this.numVisibleScanlines=144;this.numTotalScanlines=154;this.cpuCyclesPerLine=456;this.sampleRate=9240*4;this.overscan=!1;this.defaultROMSize=32768;this.aspectRatio=10/9;this.cpu=new D;this.ram=new Uint8Array(8192);this.vram=new Uint8Array(8192);this.oam=new Uint8Array(160);this.hram=new Uint8Array(128);this.extram=new Uint8Array(8192);this.cgbMode=!1;this.forceColor=!1;this.vramBank1=new Uint8Array(8192);this.vramBankSelect=0;this.wramBanks=new Uint8Array(28672);this.wramBankSelect=1;this.bgCRAM=new Uint8Array(64);this.objCRAM=new Uint8Array(64);this.bgCRAMIndex=0;this.bgCRAMAutoInc=!1;this.objCRAMIndex=0;this.objCRAMAutoInc=!1;this.doubleSpeed=!1;this.speedSwitchArmed=!1;this.hdmaSrc=0;this.hdmaDst=0;this.hdmaLength=255;this.hdmaActive=!1;this.hdmaHblank=!1;this.joyp=207;this.sb=0;this.sc=0;this.divCounter=0;this.tima=0;this.tma=0;this.tac=0;this.iflag=0;this.ie=0;this.lcdc=145;this.stat=0;this.scy=0;this.scx=0;this.ly=0;this.lyc=0;this.dma=0;this.bgp=252;this.obp0=255;this.obp1=255;this.wy=0;this.wx=0;this.apu=new U;this.apuCycleAccum=0;this.ppuMode=0;this.ppuDot=0;this.windowLine=0;this.mbcType=0;this.romBank=1;this.ramBank=0;this.ramEnabled=!1;this.mbcMode=0;this.romBankMask=31;this.hasRTC=!1;this.rtcRegisterSelect=-1;this.rtcLatchLast=0;this.rtcSec=0;this.rtcMin=0;this.rtcHour=0;this.rtcDay=0;this.rtcHalt=!1;this.rtcCarry=!1;this.rtcLatched=new Uint8Array(5);this.rtcLastSync=0;this.read=j([[0,16383,16383,e=>this.rom?this.rom[e]:255],[16384,32767,16383,e=>this.readBankedROM(e)],[32768,40959,8191,e=>this.readVRAM(e)],[40960,49151,8191,e=>this.readExtRAM(e)],[49152,53247,4095,e=>this.ram[e]],[53248,57343,4095,e=>this.readWRAMBank(e)],[57344,61439,4095,e=>this.ram[e]],[61440,65023,4095,e=>this.readWRAMBank(e)],[65024,65183,255,e=>this.oam[e]],[65184,65279,255,e=>255],[65280,65407,127,e=>this.readIO(e)],[65408,65534,127,e=>this.hram[e]],[65535,65535,0,e=>this.ie]]);this.write=j([[0,8191,8191,(e,s)=>{this.writeMBC(e,s)}],[8192,16383,8191,(e,s)=>{this.writeMBC(8192+e,s)}],[16384,24575,8191,(e,s)=>{this.writeMBC(16384+e,s)}],[24576,32767,8191,(e,s)=>{this.writeMBC(24576+e,s)}],[32768,40959,8191,(e,s)=>{this.writeVRAM(e,s)}],[40960,49151,8191,(e,s)=>{this.writeExtRAM(e,s)}],[49152,53247,4095,(e,s)=>{this.ram[e]=s}],[53248,57343,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[57344,61439,4095,(e,s)=>{this.ram[e]=s}],[61440,65023,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[65024,65183,255,(e,s)=>{this.oam[e]=s}],[65184,65279,255,(e,s)=>{}],[65280,65407,127,(e,s)=>{this.writeIO(e,s)}],[65408,65534,127,(e,s)=>{this.hram[e]=s}],[65535,65535,0,(e,s)=>{this.ie=s}]]);this.timerSubCycles=0;this.bgPriorityLine=new Uint8Array(160);this.bgAttrPriLine=new Uint8Array(160);this.handler=z(this.inputs,this.getKeyboardMap()),this.connectCPUMemoryBus(this)}getKeyboardMap(){return re}now(){return Date.now()}syncRTC(){if(!this.hasRTC||this.rtcHalt){this.rtcLastSync=this.now();return}var e=Math.floor((this.now()-this.rtcLastSync)/1e3);if(!(e<=0)){this.rtcLastSync+=e*1e3;var s=this.rtcSec+e;this.rtcSec=s%60,s=this.rtcMin+Math.floor(s/60),this.rtcMin=s%60,s=this.rtcHour+Math.floor(s/60),this.rtcHour=s%24;var i=this.rtcDay+Math.floor(s/24);i>511&&(this.rtcCarry=!0,i&=511),this.rtcDay=i}}latchRTC(){this.syncRTC(),this.rtcLatched[0]=this.rtcSec,this.rtcLatched[1]=this.rtcMin,this.rtcLatched[2]=this.rtcHour,this.rtcLatched[3]=this.rtcDay&255,this.rtcLatched[4]=this.rtcDay>>8&1|(this.rtcHalt?64:0)|(this.rtcCarry?128:0)}resetRTC(){var e=new Date(this.now());this.rtcSec=e.getSeconds(),this.rtcMin=e.getMinutes(),this.rtcHour=e.getHours(),this.rtcDay=0,this.rtcHalt=!1,this.rtcCarry=!1,this.rtcRegisterSelect=-1,this.rtcLatchLast=0,this.rtcLastSync=this.now(),this.latchRTC()}readVRAM(e){return this.cgbMode&&this.vramBankSelect?this.vramBank1[e]:this.vram[e]}writeVRAM(e,s){this.cgbMode&&this.vramBankSelect?this.vramBank1[e]=s:this.vram[e]=s}readWRAMBank(e){return!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]:this.wramBanks[(this.wramBankSelect-1)*4096+e]}writeWRAMBank(e,s){!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]=s:this.wramBanks[(this.wramBankSelect-1)*4096+e]=s}readBankedROM(e){if(!this.rom)return 255;var s=this.romBank;this.mbcType===0&&(s=1);var i=e+s*16384;return i=8&&s<=12?this.rtcRegisterSelect=s:(this.rtcRegisterSelect=-1,this.ramBank=s&3):this.mbcMode===0?(this.romBank=this.romBank&31|(s&3)<<5,this.romBank&=this.romBankMask):this.ramBank=s&3:(this.mbcType===1?this.mbcMode=s&1:this.mbcType===3&&this.rtcLatchLast===0&&s===1&&this.latchRTC(),this.rtcLatchLast=s)}}writeMBC5(e,s){e<8192?this.ramEnabled=(s&15)===10:e<12288?(this.romBank=this.romBank&256|s,this.romBank&=this.romBankMask):e<16384?(this.romBank=this.romBank&255|(s&1)<<8,this.romBank&=this.romBankMask):e<24576&&(this.ramBank=s&15)}readExtRAM(e){if(this.hasRTC&&this.rtcRegisterSelect>=0)return this.syncRTC(),this.rtcLatched[this.rtcRegisterSelect-8];if(!this.ramEnabled&&this.mbcType>0)return 255;var s=e+this.ramBank*8192;return s=0)&&!(!this.ramEnabled&&this.mbcType>0)){var i=e+this.ramBank*8192;i>8&255;case 5:return this.tima;case 6:return this.tma;case 7:return this.tac|248;case 15:return this.iflag|224;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:return this.apu.readRegister(e);case 64:return this.lcdc;case 65:return this.stat|128;case 66:return this.scy;case 67:return this.scx;case 68:return this.ly;case 69:return this.lyc;case 70:return this.dma;case 71:return this.bgp;case 72:return this.obp0;case 73:return this.obp1;case 74:return this.wy;case 75:return this.wx;case 77:return this.cgbMode?(this.doubleSpeed?128:0)|(this.speedSwitchArmed?1:0)|126:255;case 79:return this.cgbMode?this.vramBankSelect|254:255;case 85:return this.cgbMode?this.hdmaLength:255;case 104:return this.cgbMode?this.bgCRAMIndex|(this.bgCRAMAutoInc?128:0):255;case 105:return this.cgbMode?this.bgCRAM[this.bgCRAMIndex&63]:255;case 106:return this.cgbMode?this.objCRAMIndex|(this.objCRAMAutoInc?128:0):255;case 107:return this.cgbMode?this.objCRAM[this.objCRAMIndex&63]:255;case 112:return this.cgbMode?this.wramBankSelect:255;default:return 255}}writeIO(e,s){switch(e){case 0:this.joyp=s;break;case 1:this.sb=s;break;case 2:this.sc=s;break;case 4:this.divCounter=0;break;case 5:this.tima=s;break;case 6:this.tma=s;break;case 7:this.tac=s&7;break;case 15:this.iflag=s&31;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:this.apu.writeRegister(e,s);break;case 64:this.lcdc=s,s&128||(this.ly=0,this.ppuMode=0,this.ppuDot=0,this.stat=this.stat&252);break;case 65:this.stat=this.stat&7|s&120;break;case 66:this.scy=s;break;case 67:this.scx=s;break;case 68:break;case 69:this.lyc=s;break;case 70:this.dmaTransfer(s);break;case 71:this.bgp=s;break;case 72:this.obp0=s;break;case 73:this.obp1=s;break;case 74:this.wy=s;break;case 75:this.wx=s;break;case 77:this.cgbMode&&(this.speedSwitchArmed=!!(s&1));break;case 79:this.cgbMode&&(this.vramBankSelect=s&1);break;case 81:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&255|s<<8);break;case 82:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&65280|s&240);break;case 83:this.cgbMode&&(this.hdmaDst=this.hdmaDst&255|(s&31)<<8);break;case 84:this.cgbMode&&(this.hdmaDst=this.hdmaDst&65280|s&240);break;case 85:this.cgbMode&&this.startHDMA(s);break;case 104:this.cgbMode&&(this.bgCRAMIndex=s&63,this.bgCRAMAutoInc=!!(s&128));break;case 105:this.cgbMode&&(this.bgCRAM[this.bgCRAMIndex&63]=s,this.bgCRAMAutoInc&&(this.bgCRAMIndex=this.bgCRAMIndex+1&63));break;case 106:this.cgbMode&&(this.objCRAMIndex=s&63,this.objCRAMAutoInc=!!(s&128));break;case 107:this.cgbMode&&(this.objCRAM[this.objCRAMIndex&63]=s,this.objCRAMAutoInc&&(this.objCRAMIndex=this.objCRAMIndex+1&63));break;case 112:this.cgbMode&&(this.wramBankSelect=s&7,this.wramBankSelect===0&&(this.wramBankSelect=1));break}}readJoypad(){var e=this.joyp|15;return this.joyp&16||(e&=~(this.inputs[0]&15)),this.joyp&32||(e&=~(this.inputs[0]>>4&15)),e|192}dmaTransfer(e){this.dma=e;for(var s=e<<8,i=0;i<160;i++)this.oam[i]=this.read(s+i)}startHDMA(e){if(this.hdmaActive&&!(e&128)){this.hdmaActive=!1,this.hdmaLength=e|128;return}var s=((e&127)+1)*16;e&128?(this.hdmaActive=!0,this.hdmaHblank=!0,this.hdmaLength=e&127):(this.performHDMABlock(s),this.hdmaLength=255)}performHDMABlock(e){for(var s=this.hdmaSrc&65520,i=this.hdmaDst&8176,h=0;h255&&(this.tima=this.tma,this.iflag|=4)}}syncInterrupts(){var e=this.iflag&this.ie&31;this.cpu.interruptFlags=e}syncInterruptsBack(){var e=this.iflag&this.ie&31&~this.cpu.interruptFlags;this.iflag&=~e}advanceCPU(){this.syncInterrupts();var e=this.cpu.interruptFlags,s=this.cpu,i=1,h=!1;this.cpu.isStable()&&(this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),this.cgbMode&&this.speedSwitchArmed&&!this.cpu.halted&&this.read(this.cpu.getPC())===16&&(h=!0)),i=s.advanceInsn(1);var r=i*4;this.probe.logClocks(r);var a=this.doubleSpeed?i*2:r;if(h&&this.performSpeedSwitch(),this.cpu.interruptFlags!==e&&(this.probe.logInterrupt(e&~this.cpu.interruptFlags),this.syncInterruptsBack()),this.updateTimerCycles(a),this.updatePPUMode(a),this.apu.clock(a),this.audio){this.apuCycleAccum+=a;for(var c=114;this.apuCycleAccum>=c;)this.apuCycleAccum-=c,this.audio.feedSample(this.apu.getSample(),1)}return a}updatePPUMode(e){if(!(this.scanline>=144)){this.ppuDot+=e;var s=this.ppuMode;this.ppuDot<80?this.ppuMode=2:this.ppuDot<252?this.ppuMode=3:this.ppuMode=0,this.ppuMode!==s&&(this.stat=this.stat&252|this.ppuMode&3,this.ppuMode===0&&this.stat&8?(this.iflag|=2,this.cgbMode&&this.tickHDMA()):this.ppuMode===2&&this.stat&32&&(this.iflag|=2))}}updateTimerCycles(e){if(this.divCounter=this.divCounter+e&65535,!!(this.tac&4)){var s;switch(this.tac&3){case 0:s=1024;break;case 1:s=16;break;case 2:s=64;break;case 3:s=256;break;default:s=1024}for(this.timerSubCycles+=e;this.timerSubCycles>=s;)this.timerSubCycles-=s,this.tima=this.tima+1&255,this.tima===0&&(this.tima=this.tma,this.iflag|=4)}}startScanline(){this.ly=this.scanline,this.ppuDot=0,this.scanline<144?this.ppuMode=2:(this.ppuMode=1,this.scanline===144&&(this.iflag|=1,this.stat&16&&(this.iflag|=2))),this.ly===this.lyc?(this.stat|=4,this.stat&64&&(this.iflag|=2)):this.stat&=-5,this.stat=this.stat&252|this.ppuMode&3}drawScanline(){if(this.lcdc&128&&!(this.scanline>=144)){var e=this.scanline*160;if(this.lcdc&1||this.cgbMode)this.drawBGLine(e);else for(var s=0;s<160;s++)this.pixels[e+s]=L[0],this.bgPriorityLine[s]=0,this.bgAttrPriLine[s]=0;this.lcdc&32&&this.scanline>=this.wy&&this.drawWindowLine(e),this.lcdc&2&&this.drawSpriteLine(e)}}getPaletteColor(e,s){var i=e>>s*2&3;return L[i]}getCGBColor(e,s,i){var h=s*8+i*2;return he(e[h],e[h+1])}drawBGLine(e){for(var s=this.lcdc&8?7168:6144,i=!(this.lcdc&16),h=this.scanline+this.scy&255,r=h>>3&31,a=h&7,c=0;c<160;c++){var o=c+this.scx&255,n=o>>3&31,u=7-(o&7),w=s+r*32+n,f=this.vram[w],d;if(i?d=4096+(f<<24>>24)*16:d=f*16,this.cgbMode){var v=this.vramBank1[w],p=v&7,C=v&8?1:0,S=!!(v&32),y=!!(v&64),P=!!(v&128),B=y?7-a:a,R=S?o&7:u,_=C?this.vramBank1:this.vram,b=_[d+B*2],A=_[d+B*2+1],F=(A>>R&1)<<1|b>>R&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=P?1:0,this.pixels[e+c]=this.getCGBColor(this.bgCRAM,p,F)}else{var b=this.vram[d+a*2],A=this.vram[d+a*2+1],F=(A>>u&1)<<1|b>>u&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=0,this.pixels[e+c]=this.getPaletteColor(this.bgp,F)}}}drawWindowLine(e){var s=this.wx-7;if(!(s>=160)){for(var i=this.lcdc&64?7168:6144,h=!(this.lcdc&16),r=this.windowLine,a=r>>3&31,c=r&7,o=!1,n=Math.max(0,s);n<160;n++){var u=n-s,w=u>>3&31,f=7-(u&7),d=i+a*32+w,v=this.vram[d],p;if(h?p=4096+(v<<24>>24)*16:p=v*16,this.cgbMode){var C=this.vramBank1[d],S=C&7,y=C&8?1:0,P=!!(C&32),B=!!(C&64),R=!!(C&128),_=B?7-c:c,b=P?u&7:f,A=y?this.vramBank1:this.vram,F=A[p+_*2],E=A[p+_*2+1],k=(E>>b&1)<<1|F>>b&1;this.bgPriorityLine[n]=k,this.bgAttrPriLine[n]=R?1:0,this.pixels[e+n]=this.getCGBColor(this.bgCRAM,S,k)}else{var F=this.vram[p+c*2],E=this.vram[p+c*2+1],k=(E>>f&1)<<1|F>>f&1;this.bgPriorityLine[n]=k,this.bgAttrPriLine[n]=0,this.pixels[e+n]=this.getPaletteColor(this.bgp,k)}o=!0}o&&this.windowLine++}}drawSpriteLine(e){for(var s=this.lcdc&4?16:8,i=0,h=[],r=0;r<40&&i<10;r++){var a=this.oam[r*4]-16,c=this.oam[r*4+1]-8;this.scanline>=a&&this.scanlineH.x!==I.x?H.x-I.x:H.index-I.index);for(var o=h.length-1;o>=0;o--){var n=h[o].index,u=this.oam[n*4]-16,w=this.oam[n*4+1]-8,f=this.oam[n*4+2],d=this.oam[n*4+3],v=!!(d&32),p=!!(d&64),C=!!(d&128);s===16&&(f&=254);var S=this.scanline-u;p&&(S=s-1-S);for(var y=f*16+S*2,P=this.cgbMode&&d&8?this.vramBank1:this.vram,B=P[y],R=P[y+1],_=0;_<8;_++){var b=w+_;if(!(b<0||b>=160)){var A=v?_:7-_,F=(R>>A&1)<<1|B>>A&1;if(F!==0)if(this.cgbMode){var E=this.lcdc&1;if(E&&(this.bgAttrPriLine[b]&&this.bgPriorityLine[b]!==0||C&&this.bgPriorityLine[b]!==0))continue;var k=d&7;this.pixels[e+b]=this.getCGBColor(this.objCRAM,k,F)}else{if(C){var se=this.pixels[e+b];if(se!==L[this.bgp&3])continue}var ie=d&16?this.obp1:this.obp0;this.pixels[e+b]=this.getPaletteColor(ie,F)}}}}}loadROM(e,s){if(e.length>327){var i=e[327];switch(i){case 0:this.mbcType=0;break;case 1:case 2:case 3:this.mbcType=1;break;case 15:case 16:case 17:case 18:case 19:this.mbcType=3;break;case 25:case 26:case 27:case 28:case 29:case 30:this.mbcType=5;break;default:console.log(`Unhandled cartridge type 0x${i.toString(16)} @ 0x147, treating as MBC5`),this.mbcType=5;break}this.hasRTC=i===15||i===16}else throw new O("ROM not long enough for header");if(e.length>323){var h=e[323];this.cgbMode=this.forceColor||h===128||h===192}this.rom=new Uint8Array(Math.max(e.length,32768)),this.rom.set(e);var r=Math.max(2,this.rom.length>>14);switch(this.romBankMask=r-1,e[329]){case 0:break;case 1:this.extram=new Uint8Array(2048);break;case 2:this.extram=new Uint8Array(8192);break;case 3:this.extram=new Uint8Array(32768);break;case 4:this.extram=new Uint8Array(131072);break;case 5:this.extram=new Uint8Array(65536);break;default:console.log(`Invalid RAM size code @ 0x149: ${e[329]}`);break}this.reset()}reset(){super.reset(),this.ram.fill(0),this.vram.fill(0),this.oam.fill(0),this.hram.fill(0),this.iflag=0,this.ie=0,this.lcdc=145,this.stat=0,this.scy=0,this.scx=0,this.ly=0,this.lyc=0,this.bgp=252,this.obp0=255,this.obp1=255,this.wy=0,this.wx=0,this.joyp=207,this.divCounter=0,this.tima=0,this.tma=0,this.tac=0,this.ppuMode=0,this.ppuDot=0,this.windowLine=0,this.romBank=1,this.ramBank=0,this.ramEnabled=!1,this.mbcMode=0,this.timerSubCycles=0,this.apuCycleAccum=0,this.apu.reset(),this.vramBank1.fill(0),this.vramBankSelect=0,this.wramBanks.fill(0),this.wramBankSelect=1;for(var e=0;e<8;e++)this.bgCRAM.set(X,e*8),this.objCRAM.set(X,e*8);this.bgCRAMIndex=0,this.bgCRAMAutoInc=!1,this.objCRAMIndex=0,this.objCRAMAutoInc=!1,this.doubleSpeed=!1,this.speedSwitchArmed=!1,this.hdmaSrc=0,this.hdmaDst=0,this.hdmaLength=255,this.hdmaActive=!1,this.hdmaHblank=!1,this.cgbMode&&(this.cpu.A=17),this.hasRTC?this.resetRTC():(this.rtcRegisterSelect=-1,this.rtcLatchLast=0)}preFrame(){this.windowLine=0}readVRAMAddress(e){return this.cgbMode&&e>=8192?this.vramBank1[e&8191]:this.vram[e&8191]}saveState(){var e=super.saveState();return e.vram=this.vram.slice(0),e.oam=this.oam.slice(0),e.hram=this.hram.slice(0),e.extram=this.extram.slice(0),e.io={joyp:this.joyp,sb:this.sb,sc:this.sc,divCounter:this.divCounter,tima:this.tima,tma:this.tma,tac:this.tac,iflag:this.iflag,ie:this.ie,lcdc:this.lcdc,stat:this.stat,scy:this.scy,scx:this.scx,ly:this.ly,lyc:this.lyc,dma:this.dma,bgp:this.bgp,obp0:this.obp0,obp1:this.obp1,wy:this.wy,wx:this.wx,ppuMode:this.ppuMode,ppuDot:this.ppuDot,windowLine:this.windowLine,romBank:this.romBank,ramBank:this.ramBank,ramEnabled:this.ramEnabled,mbcMode:this.mbcMode,timerSubCycles:this.timerSubCycles},e.apu=this.apu.saveState(),e.apuCycleAccum=this.apuCycleAccum,e.rtc={hasRTC:this.hasRTC,sec:this.rtcSec,min:this.rtcMin,hour:this.rtcHour,day:this.rtcDay,halt:this.rtcHalt,carry:this.rtcCarry,registerSelect:this.rtcRegisterSelect,latchLast:this.rtcLatchLast,latched:this.rtcLatched.slice(0),lastSync:this.rtcLastSync},this.cgbMode&&(e.cgb={vramBank1:this.vramBank1.slice(0),vramBankSelect:this.vramBankSelect,wramBanks:this.wramBanks.slice(0),wramBankSelect:this.wramBankSelect,bgCRAM:this.bgCRAM.slice(0),objCRAM:this.objCRAM.slice(0),bgCRAMIndex:this.bgCRAMIndex,bgCRAMAutoInc:this.bgCRAMAutoInc,objCRAMIndex:this.objCRAMIndex,objCRAMAutoInc:this.objCRAMAutoInc,doubleSpeed:this.doubleSpeed,speedSwitchArmed:this.speedSwitchArmed,hdmaSrc:this.hdmaSrc,hdmaDst:this.hdmaDst,hdmaLength:this.hdmaLength,hdmaActive:this.hdmaActive,hdmaHblank:this.hdmaHblank}),e}loadState(e){super.loadState(e),this.vram.set(e.vram),this.oam.set(e.oam),this.hram.set(e.hram),e.extram&&this.extram.set(e.extram);var s=e.io;if(this.joyp=s.joyp,this.sb=s.sb,this.sc=s.sc,this.divCounter=s.divCounter,this.tima=s.tima,this.tma=s.tma,this.tac=s.tac,this.iflag=s.iflag,this.ie=s.ie,this.lcdc=s.lcdc,this.stat=s.stat,this.scy=s.scy,this.scx=s.scx,this.ly=s.ly,this.lyc=s.lyc,this.dma=s.dma,this.bgp=s.bgp,this.obp0=s.obp0,this.obp1=s.obp1,this.wy=s.wy,this.wx=s.wx,this.ppuMode=s.ppuMode,this.ppuDot=s.ppuDot,this.windowLine=s.windowLine,this.romBank=s.romBank,this.ramBank=s.ramBank,this.ramEnabled=s.ramEnabled,this.mbcMode=s.mbcMode,this.timerSubCycles=s.timerSubCycles,e.apu&&this.apu.loadState(e.apu),this.apuCycleAccum=e.apuCycleAccum||0,e.rtc){var i=e.rtc;this.hasRTC=i.hasRTC,this.rtcSec=i.sec,this.rtcMin=i.min,this.rtcHour=i.hour,this.rtcDay=i.day,this.rtcHalt=i.halt,this.rtcCarry=i.carry,this.rtcRegisterSelect=i.registerSelect,this.rtcLatchLast=i.latchLast,i.latched&&this.rtcLatched.set(i.latched),this.rtcLastSync=i.lastSync}if(e.cgb){var h=e.cgb;this.vramBank1.set(h.vramBank1),this.vramBankSelect=h.vramBankSelect,this.wramBanks.set(h.wramBanks),this.wramBankSelect=h.wramBankSelect,this.bgCRAM.set(h.bgCRAM),this.objCRAM.set(h.objCRAM),this.bgCRAMIndex=h.bgCRAMIndex,this.bgCRAMAutoInc=h.bgCRAMAutoInc,this.objCRAMIndex=h.objCRAMIndex,this.objCRAMAutoInc=h.objCRAMAutoInc,this.doubleSpeed=h.doubleSpeed,this.speedSwitchArmed=h.speedSwitchArmed,this.hdmaSrc=h.hdmaSrc,this.hdmaDst=h.hdmaDst,this.hdmaLength=h.hdmaLength,this.hdmaActive=h.hdmaActive,this.hdmaHblank=h.hdmaHblank}}getDebugCategories(){return["CPU","Stack","PPU"]}getDebugInfo(e,s){if(e==="PPU"){var i="LCDC "+m(this.lcdc,2)+" STAT "+m(this.stat,2)+` +import{a as L,b as Q}from"./chunk-G3VBABUZ.js";import{F as Y,I as J,J as $,v as K,y as G}from"./chunk-4YTESWOC.js";import{b as Z}from"./chunk-UXRCACYH.js";import{P as W,Y as O,ba as g,ca as z,ea as N,g as m,ha as j}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var x=class x{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&x.FLAG_Z)}getN(){return!!(this.F&x.FLAG_N)}getH(){return!!(this.F&x.FLAG_H)}getC(){return!!(this.F&x.FLAG_C)}setZ(t){t?this.F|=x.FLAG_Z:this.F&=~x.FLAG_Z}setN(t){t?this.F|=x.FLAG_N:this.F&=~x.FLAG_N}setH(t){t?this.F|=x.FLAG_H:this.F&=~x.FLAG_H}setC(t){t?this.F|=x.FLAG_C:this.F&=~x.FLAG_C}setFlags(t,e,s,i){this.F=(t?x.FLAG_Z:0)|(e?x.FLAG_N:0)|(s?x.FLAG_H:0)|(i?x.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH()||(t&15)>9)&&(t+=6)),t&=255,this.setZ(t===0),this.setH(!1),this.A=t}cbOp(t){var e=t>>3&31,s=t&7,i=this.getReg(s),h=s===6?4:2,r;if(t<64){switch(e){case 0:r=(i<<1|i>>7)&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 1:r=(i>>1|i<<7)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 2:r=(i<<1|(this.getC()?1:0))&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 3:r=(i>>1|(this.getC()?128:0))&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 4:r=i<<1&255,this.setFlags(r===0,!1,!1,!!(i&128));break;case 5:r=(i>>1|i&128)&255,this.setFlags(r===0,!1,!1,!!(i&1));break;case 6:r=(i&15)<<4|(i&240)>>4,this.setFlags(r===0,!1,!1,!1);break;case 7:r=i>>1&255,this.setFlags(r===0,!1,!1,!!(i&1));break;default:r=i}this.setReg(s,r),s===6&&(h=4)}else if(t<128){var a=t>>3&7;this.setZ(!(i&1<>3&7;this.setReg(s,i&~(1<>3&7;this.setReg(s,i|1<0)return t;if(this.halted)return 1;this.stable=!0;var e=this.fetchByte();this.o=e,this.stable=!1;var s=this.executeOpcode(e);return this.stable=!0,s}executeOpcode(t){var e=t>>6&3,s=t>>3&7,i=t&7,h=s>>1&3,r=s&1;switch(e){case 0:return this.execX0(s,i,h,r,t);case 1:return i===6&&s===6?(this.halted=!0,1):(this.setReg(s,this.getReg(i)),s===6||i===6?2:1);case 2:return this.aluOp(s,this.getReg(i)),i===6?2:1;case 3:return this.execX3(s,i,h,r,t)}return 1}execX0(t,e,s,i,h){switch(e){case 0:switch(t){case 0:return 1;case 1:var r=this.fetchWord();return this.writeWord(r,this.SP),5;case 2:return this.PC=this.PC+1&65535,1;case 3:var a=this.fetchSignedByte();return this.PC=this.PC+a&65535,3;case 4:case 5:case 6:case 7:var a=this.fetchSignedByte();return this.checkCondition(t-4)?(this.PC=this.PC+a&65535,3):2}break;case 1:return i===0?(this.setReg16(s,this.fetchWord()),3):(this.addHL(this.getReg16(s)),2);case 2:if(i===0)switch(s){case 0:return this.write(this.getBC(),this.A),2;case 1:return this.write(this.getDE(),this.A),2;case 2:return this.write(this.getHL(),this.A),this.setHL(this.getHL()+1&65535),2;case 3:return this.write(this.getHL(),this.A),this.setHL(this.getHL()-1&65535),2}else switch(s){case 0:return this.A=this.read(this.getBC()),2;case 1:return this.A=this.read(this.getDE()),2;case 2:return this.A=this.read(this.getHL()),this.setHL(this.getHL()+1&65535),2;case 3:return this.A=this.read(this.getHL()),this.setHL(this.getHL()-1&65535),2}break;case 3:return i===0?(this.setReg16(s,this.getReg16(s)+1&65535),2):(this.setReg16(s,this.getReg16(s)-1&65535),2);case 4:return this.setReg(t,this.inc8(this.getReg(t))),t===6?3:1;case 5:return this.setReg(t,this.dec8(this.getReg(t))),t===6?3:1;case 6:return this.setReg(t,this.fetchByte()),t===6?3:2;case 7:switch(t){case 0:var c=this.A>>7&1;return this.A=(this.A<<1|c)&255,this.setFlags(!1,!1,!1,!!c),1;case 1:var o=this.A&1;return this.A=(this.A>>1|o<<7)&255,this.setFlags(!1,!1,!1,!!o),1;case 2:var c=this.A>>7&1;return this.A=(this.A<<1|(this.getC()?1:0))&255,this.setFlags(!1,!1,!1,!!c),1;case 3:var o=this.A&1;return this.A=(this.A>>1|(this.getC()?128:0))&255,this.setFlags(!1,!1,!1,!!o),1;case 4:return this.daa(),1;case 5:return this.A=~this.A&255,this.setN(!0),this.setH(!0),1;case 6:return this.setN(!1),this.setH(!1),this.setC(!0),1;case 7:return this.setN(!1),this.setH(!1),this.setC(!this.getC()),1}break}return 1}execX3(t,e,s,i,h){switch(e){case 0:switch(t){case 0:case 1:case 2:case 3:return this.checkCondition(t)?(this.PC=this.popWord(),5):2;case 4:var r=this.fetchByte();return this.write(65280+r,this.A),3;case 5:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.SP=c,4;case 6:var r=this.fetchByte();return this.A=this.read(65280+r),3;case 7:var a=this.fetchSignedByte(),c=this.SP+a&65535;return this.setFlags(!1,!1,(this.SP&15)+(a&15)>15,(this.SP&255)+(a&255)>255),this.setHL(c),3}break;case 1:if(i===0)return this.setReg16AF(s,this.popWord()),3;switch(s){case 0:return this.PC=this.popWord(),4;case 1:return this.PC=this.popWord(),this.ime=!0,4;case 2:return this.PC=this.getHL(),1;case 3:return this.SP=this.getHL(),2}break;case 2:switch(t){case 0:case 1:case 2:case 3:var o=this.fetchWord();return this.checkCondition(t)?(this.PC=o,4):3;case 4:return this.write(65280+this.C,this.A),2;case 5:return this.write(this.fetchWord(),this.A),4;case 6:return this.A=this.read(65280+this.C),2;case 7:return this.A=this.read(this.fetchWord()),4}break;case 3:switch(t){case 0:return this.PC=this.fetchWord(),4;case 1:var n=this.fetchByte();return 2+this.cbOp(n);case 6:return this.ime=!1,this.imeDelay=!1,1;case 7:return this.imeDelay=!0,1;default:return 1}case 4:switch(t){case 0:case 1:case 2:case 3:var o=this.fetchWord();return this.checkCondition(t)?(this.pushWord(this.PC),this.PC=o,6):3;default:return 1}case 5:if(i===0)return this.pushWord(this.getReg16AF(s)),4;if(s===0){var o=this.fetchWord();return this.pushWord(this.PC),this.PC=o,6}return 1;case 6:return this.aluOp(t,this.fetchByte()),2;case 7:return this.pushWord(this.PC),this.PC=t*8,4}return 1}};x.FLAG_Z=128,x.FLAG_N=64,x.FLAG_H=32,x.FLAG_C=16;var D=x;function he(M,t){var e=M&31,s=(M>>5|(t&3)<<3)&31,i=t>>2&31,h=e*527+23>>6,r=s*527+23>>6,a=i*527+23>>6;return 4278190080|a<<16|r<<8|h}var X=new Uint8Array([255,127,181,86,74,41,0,0]),re=N([[g.RIGHT,0,1],[g.LEFT,0,2],[g.UP,0,4],[g.DOWN,0,8],[g.A,0,16],[g.B,0,32],[g.GP_A,0,16],[g.GP_B,0,32],[g.SELECT,0,64],[g.START,0,128]]),ee=[[0,0,0,0,0,0,0,1],[1,0,0,0,0,0,0,1],[1,0,0,0,0,1,1,1],[0,1,1,1,1,1,1,0]],l=new Uint8Array(48);l[0]=128,l[1]=63,l[2]=0,l[3]=255,l[4]=191,l[5]=255,l[6]=63,l[7]=0,l[8]=255,l[9]=191,l[10]=127,l[11]=255,l[12]=159,l[13]=255,l[14]=191,l[15]=255,l[16]=255,l[17]=0,l[18]=0,l[19]=191,l[20]=0,l[21]=0,l[22]=112;var U=class{constructor(){this.enabled=!1;this.nr50=0;this.nr51=0;this.ch1_enabled=!1;this.ch1_dacEnabled=!1;this.ch1_duty=0;this.ch1_dutyPos=0;this.ch1_lengthCounter=0;this.ch1_lengthEnabled=!1;this.ch1_volume=0;this.ch1_envInitVol=0;this.ch1_envDir=0;this.ch1_envPeriod=0;this.ch1_envTimer=0;this.ch1_freq=0;this.ch1_freqTimer=0;this.ch1_sweepPeriod=0;this.ch1_sweepDir=0;this.ch1_sweepShift=0;this.ch1_sweepTimer=0;this.ch1_sweepEnabled=!1;this.ch1_sweepShadow=0;this.ch2_enabled=!1;this.ch2_dacEnabled=!1;this.ch2_duty=0;this.ch2_dutyPos=0;this.ch2_lengthCounter=0;this.ch2_lengthEnabled=!1;this.ch2_volume=0;this.ch2_envInitVol=0;this.ch2_envDir=0;this.ch2_envPeriod=0;this.ch2_envTimer=0;this.ch2_freq=0;this.ch2_freqTimer=0;this.ch3_enabled=!1;this.ch3_dacEnabled=!1;this.ch3_lengthCounter=0;this.ch3_lengthEnabled=!1;this.ch3_volume=0;this.ch3_freq=0;this.ch3_freqTimer=0;this.ch3_samplePos=0;this.ch3_sampleBuffer=0;this.waveRAM=new Uint8Array(16);this.ch4_enabled=!1;this.ch4_dacEnabled=!1;this.ch4_lengthCounter=0;this.ch4_lengthEnabled=!1;this.ch4_volume=0;this.ch4_envInitVol=0;this.ch4_envDir=0;this.ch4_envPeriod=0;this.ch4_envTimer=0;this.ch4_clockShift=0;this.ch4_widthMode=0;this.ch4_divisor=0;this.ch4_freqTimer=0;this.ch4_lfsr=32767;this.frameSeqTimer=0;this.frameSeqStep=0;this.regs=new Uint8Array(48)}reset(){this.enabled=!1,this.nr50=0,this.nr51=0,this.ch1_enabled=!1,this.ch1_dacEnabled=!1,this.ch1_duty=0,this.ch1_dutyPos=0,this.ch1_lengthCounter=0,this.ch1_lengthEnabled=!1,this.ch1_volume=0,this.ch1_envInitVol=0,this.ch1_envDir=0,this.ch1_envPeriod=0,this.ch1_envTimer=0,this.ch1_freq=0,this.ch1_freqTimer=0,this.ch1_sweepPeriod=0,this.ch1_sweepDir=0,this.ch1_sweepShift=0,this.ch1_sweepTimer=0,this.ch1_sweepEnabled=!1,this.ch1_sweepShadow=0,this.ch2_enabled=!1,this.ch2_dacEnabled=!1,this.ch2_duty=0,this.ch2_dutyPos=0,this.ch2_lengthCounter=0,this.ch2_lengthEnabled=!1,this.ch2_volume=0,this.ch2_envInitVol=0,this.ch2_envDir=0,this.ch2_envPeriod=0,this.ch2_envTimer=0,this.ch2_freq=0,this.ch2_freqTimer=0,this.ch3_enabled=!1,this.ch3_dacEnabled=!1,this.ch3_lengthCounter=0,this.ch3_lengthEnabled=!1,this.ch3_volume=0,this.ch3_freq=0,this.ch3_freqTimer=0,this.ch3_samplePos=0,this.ch3_sampleBuffer=0,this.waveRAM.fill(0),this.ch4_enabled=!1,this.ch4_dacEnabled=!1,this.ch4_lengthCounter=0,this.ch4_lengthEnabled=!1,this.ch4_volume=0,this.ch4_envInitVol=0,this.ch4_envDir=0,this.ch4_envPeriod=0,this.ch4_envTimer=0,this.ch4_clockShift=0,this.ch4_widthMode=0,this.ch4_divisor=0,this.ch4_freqTimer=0,this.ch4_lfsr=32767,this.frameSeqTimer=0,this.frameSeqStep=0,this.regs.fill(0)}readRegister(t){if(t>=48&&t<=63)return this.ch3_enabled?this.waveRAM[this.ch3_samplePos>>1]:this.waveRAM[t-48];if(t===38){var e=(this.enabled?128:0)|(this.ch1_enabled?1:0)|(this.ch2_enabled?2:0)|(this.ch3_enabled?4:0)|(this.ch4_enabled?8:0);return e|112}if(!this.enabled)return 255;var s=t-16;return this.regs[s]|l[s]}writeRegister(t,e){if(t>=48&&t<=63){this.waveRAM[t-48]=e;return}if(t===38){var s=this.enabled;if(this.enabled=!!(e&128),s&&!this.enabled){for(var i=16;i<=37;i++)this.writeRegister(i,0);this.ch1_enabled=!1,this.ch2_enabled=!1,this.ch3_enabled=!1,this.ch4_enabled=!1}!s&&this.enabled&&(this.frameSeqTimer=0,this.frameSeqStep=0);return}if(this.enabled){var h=t-16;switch(this.regs[h]=e,t){case 16:this.ch1_sweepPeriod=e>>4&7,this.ch1_sweepDir=e>>3&1,this.ch1_sweepShift=e&7;break;case 17:this.ch1_duty=e>>6&3,this.ch1_lengthCounter=64-(e&63);break;case 18:this.ch1_envInitVol=e>>4&15,this.ch1_envDir=e>>3&1,this.ch1_envPeriod=e&7,this.ch1_dacEnabled=(e&248)!==0,this.ch1_dacEnabled||(this.ch1_enabled=!1);break;case 19:this.ch1_freq=this.ch1_freq&1792|e;break;case 20:this.ch1_freq=this.ch1_freq&255|(e&7)<<8,this.ch1_lengthEnabled=!!(e&64),e&128&&this.triggerChannel1();break;case 22:this.ch2_duty=e>>6&3,this.ch2_lengthCounter=64-(e&63);break;case 23:this.ch2_envInitVol=e>>4&15,this.ch2_envDir=e>>3&1,this.ch2_envPeriod=e&7,this.ch2_dacEnabled=(e&248)!==0,this.ch2_dacEnabled||(this.ch2_enabled=!1);break;case 24:this.ch2_freq=this.ch2_freq&1792|e;break;case 25:this.ch2_freq=this.ch2_freq&255|(e&7)<<8,this.ch2_lengthEnabled=!!(e&64),e&128&&this.triggerChannel2();break;case 26:this.ch3_dacEnabled=!!(e&128),this.ch3_dacEnabled||(this.ch3_enabled=!1);break;case 27:this.ch3_lengthCounter=256-e;break;case 28:this.ch3_volume=e>>5&3;break;case 29:this.ch3_freq=this.ch3_freq&1792|e;break;case 30:this.ch3_freq=this.ch3_freq&255|(e&7)<<8,this.ch3_lengthEnabled=!!(e&64),e&128&&this.triggerChannel3();break;case 32:this.ch4_lengthCounter=64-(e&63);break;case 33:this.ch4_envInitVol=e>>4&15,this.ch4_envDir=e>>3&1,this.ch4_envPeriod=e&7,this.ch4_dacEnabled=(e&248)!==0,this.ch4_dacEnabled||(this.ch4_enabled=!1);break;case 34:this.ch4_clockShift=e>>4&15,this.ch4_widthMode=e>>3&1,this.ch4_divisor=e&7;break;case 35:this.ch4_lengthEnabled=!!(e&64),e&128&&this.triggerChannel4();break;case 36:this.nr50=e;break;case 37:this.nr51=e;break}}}triggerChannel1(){this.ch1_dacEnabled&&(this.ch1_enabled=!0),this.ch1_lengthCounter===0&&(this.ch1_lengthCounter=64),this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_volume=this.ch1_envInitVol,this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_sweepShadow=this.ch1_freq,this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepEnabled=this.ch1_sweepPeriod>0||this.ch1_sweepShift>0,this.ch1_sweepShift>0&&this.calcSweepFreq()}triggerChannel2(){this.ch2_dacEnabled&&(this.ch2_enabled=!0),this.ch2_lengthCounter===0&&(this.ch2_lengthCounter=64),this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_volume=this.ch2_envInitVol,this.ch2_envTimer=this.ch2_envPeriod||8}triggerChannel3(){this.ch3_dacEnabled&&(this.ch3_enabled=!0),this.ch3_lengthCounter===0&&(this.ch3_lengthCounter=256),this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=0}triggerChannel4(){this.ch4_dacEnabled&&(this.ch4_enabled=!0),this.ch4_lengthCounter===0&&(this.ch4_lengthCounter=64);var t=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=t<>this.ch1_sweepShift;return this.ch1_sweepDir?t=this.ch1_sweepShadow-t:t=this.ch1_sweepShadow+t,t>2047&&(this.ch1_enabled=!1),t}clock(t){if(this.enabled)for(var e=0;e=8192&&(this.frameSeqTimer=0,this.clockFrameSequencer()),this.ch1_enabled&&(this.ch1_freqTimer--,this.ch1_freqTimer<=0&&(this.ch1_freqTimer=(2048-this.ch1_freq)*4,this.ch1_dutyPos=this.ch1_dutyPos+1&7)),this.ch2_enabled&&(this.ch2_freqTimer--,this.ch2_freqTimer<=0&&(this.ch2_freqTimer=(2048-this.ch2_freq)*4,this.ch2_dutyPos=this.ch2_dutyPos+1&7)),this.ch3_enabled&&(this.ch3_freqTimer--,this.ch3_freqTimer<=0)){this.ch3_freqTimer=(2048-this.ch3_freq)*2,this.ch3_samplePos=this.ch3_samplePos+1&31;var s=this.waveRAM[this.ch3_samplePos>>1];this.ch3_sampleBuffer=this.ch3_samplePos&1?s&15:s>>4}if(this.ch4_enabled&&(this.ch4_freqTimer--,this.ch4_freqTimer<=0)){var i=this.ch4_divisor===0?8:this.ch4_divisor*16;this.ch4_freqTimer=i<>1&1;this.ch4_lfsr=this.ch4_lfsr>>1|h<<14,this.ch4_widthMode&&(this.ch4_lfsr=this.ch4_lfsr&-65|h<<6)}}}clockFrameSequencer(){(this.frameSeqStep&1)===0&&this.clockLengthCounters(),(this.frameSeqStep===2||this.frameSeqStep===6)&&this.clockSweep(),this.frameSeqStep===7&&this.clockEnvelopes(),this.frameSeqStep=this.frameSeqStep+1&7}clockLengthCounters(){this.ch1_lengthEnabled&&this.ch1_lengthCounter>0&&(this.ch1_lengthCounter--,this.ch1_lengthCounter===0&&(this.ch1_enabled=!1)),this.ch2_lengthEnabled&&this.ch2_lengthCounter>0&&(this.ch2_lengthCounter--,this.ch2_lengthCounter===0&&(this.ch2_enabled=!1)),this.ch3_lengthEnabled&&this.ch3_lengthCounter>0&&(this.ch3_lengthCounter--,this.ch3_lengthCounter===0&&(this.ch3_enabled=!1)),this.ch4_lengthEnabled&&this.ch4_lengthCounter>0&&(this.ch4_lengthCounter--,this.ch4_lengthCounter===0&&(this.ch4_enabled=!1))}clockSweep(){if(this.ch1_sweepEnabled&&(this.ch1_sweepTimer--,this.ch1_sweepTimer<=0&&(this.ch1_sweepTimer=this.ch1_sweepPeriod||8,this.ch1_sweepPeriod>0))){var t=this.calcSweepFreq();t<=2047&&this.ch1_sweepShift>0&&(this.ch1_sweepShadow=t,this.ch1_freq=t,this.calcSweepFreq())}}clockEnvelopes(){this.ch1_envPeriod>0&&(this.ch1_envTimer--,this.ch1_envTimer<=0&&(this.ch1_envTimer=this.ch1_envPeriod||8,this.ch1_envDir&&this.ch1_volume<15?this.ch1_volume++:!this.ch1_envDir&&this.ch1_volume>0&&this.ch1_volume--)),this.ch2_envPeriod>0&&(this.ch2_envTimer--,this.ch2_envTimer<=0&&(this.ch2_envTimer=this.ch2_envPeriod||8,this.ch2_envDir&&this.ch2_volume<15?this.ch2_volume++:!this.ch2_envDir&&this.ch2_volume>0&&this.ch2_volume--)),this.ch4_envPeriod>0&&(this.ch4_envTimer--,this.ch4_envTimer<=0&&(this.ch4_envTimer=this.ch4_envPeriod||8,this.ch4_envDir&&this.ch4_volume<15?this.ch4_volume++:!this.ch4_envDir&&this.ch4_volume>0&&this.ch4_volume--))}getSample(){if(!this.enabled)return 0;var t=0,e=0,s=0,i=0;if(this.ch1_enabled&&this.ch1_dacEnabled&&(t=ee[this.ch1_duty][this.ch1_dutyPos]?this.ch1_volume:0),this.ch2_enabled&&this.ch2_dacEnabled&&(e=ee[this.ch2_duty][this.ch2_dutyPos]?this.ch2_volume:0),this.ch3_enabled&&this.ch3_dacEnabled){var h=this.ch3_sampleBuffer;switch(this.ch3_volume){case 0:h=0;break;case 1:break;case 2:h>>=1;break;case 3:h>>=2;break}s=h}this.ch4_enabled&&this.ch4_dacEnabled&&(i=this.ch4_lfsr&1?0:this.ch4_volume);var r=t/7.5-1,a=e/7.5-1,c=s/7.5-1,o=i/7.5-1,n=0,u=0;this.nr51&16&&(n+=r),this.nr51&32&&(n+=a),this.nr51&64&&(n+=c),this.nr51&128&&(n+=o),this.nr51&1&&(u+=r),this.nr51&2&&(u+=a),this.nr51&4&&(u+=c),this.nr51&8&&(u+=o);var w=(this.nr50>>4&7)+1,f=(this.nr50&7)+1;return n*=w/8,u*=f/8,(n+u)/8}saveState(){return{enabled:this.enabled,nr50:this.nr50,nr51:this.nr51,ch1_enabled:this.ch1_enabled,ch1_dacEnabled:this.ch1_dacEnabled,ch1_duty:this.ch1_duty,ch1_dutyPos:this.ch1_dutyPos,ch1_lengthCounter:this.ch1_lengthCounter,ch1_lengthEnabled:this.ch1_lengthEnabled,ch1_volume:this.ch1_volume,ch1_envInitVol:this.ch1_envInitVol,ch1_envDir:this.ch1_envDir,ch1_envPeriod:this.ch1_envPeriod,ch1_envTimer:this.ch1_envTimer,ch1_freq:this.ch1_freq,ch1_freqTimer:this.ch1_freqTimer,ch1_sweepPeriod:this.ch1_sweepPeriod,ch1_sweepDir:this.ch1_sweepDir,ch1_sweepShift:this.ch1_sweepShift,ch1_sweepTimer:this.ch1_sweepTimer,ch1_sweepEnabled:this.ch1_sweepEnabled,ch1_sweepShadow:this.ch1_sweepShadow,ch2_enabled:this.ch2_enabled,ch2_dacEnabled:this.ch2_dacEnabled,ch2_duty:this.ch2_duty,ch2_dutyPos:this.ch2_dutyPos,ch2_lengthCounter:this.ch2_lengthCounter,ch2_lengthEnabled:this.ch2_lengthEnabled,ch2_volume:this.ch2_volume,ch2_envInitVol:this.ch2_envInitVol,ch2_envDir:this.ch2_envDir,ch2_envPeriod:this.ch2_envPeriod,ch2_envTimer:this.ch2_envTimer,ch2_freq:this.ch2_freq,ch2_freqTimer:this.ch2_freqTimer,ch3_enabled:this.ch3_enabled,ch3_dacEnabled:this.ch3_dacEnabled,ch3_lengthCounter:this.ch3_lengthCounter,ch3_lengthEnabled:this.ch3_lengthEnabled,ch3_volume:this.ch3_volume,ch3_freq:this.ch3_freq,ch3_freqTimer:this.ch3_freqTimer,ch3_samplePos:this.ch3_samplePos,ch3_sampleBuffer:this.ch3_sampleBuffer,waveRAM:this.waveRAM.slice(0),ch4_enabled:this.ch4_enabled,ch4_dacEnabled:this.ch4_dacEnabled,ch4_lengthCounter:this.ch4_lengthCounter,ch4_lengthEnabled:this.ch4_lengthEnabled,ch4_volume:this.ch4_volume,ch4_envInitVol:this.ch4_envInitVol,ch4_envDir:this.ch4_envDir,ch4_envPeriod:this.ch4_envPeriod,ch4_envTimer:this.ch4_envTimer,ch4_clockShift:this.ch4_clockShift,ch4_widthMode:this.ch4_widthMode,ch4_divisor:this.ch4_divisor,ch4_freqTimer:this.ch4_freqTimer,ch4_lfsr:this.ch4_lfsr,frameSeqTimer:this.frameSeqTimer,frameSeqStep:this.frameSeqStep,regs:this.regs.slice(0)}}loadState(t){this.enabled=t.enabled,this.nr50=t.nr50,this.nr51=t.nr51,this.ch1_enabled=t.ch1_enabled,this.ch1_dacEnabled=t.ch1_dacEnabled,this.ch1_duty=t.ch1_duty,this.ch1_dutyPos=t.ch1_dutyPos,this.ch1_lengthCounter=t.ch1_lengthCounter,this.ch1_lengthEnabled=t.ch1_lengthEnabled,this.ch1_volume=t.ch1_volume,this.ch1_envInitVol=t.ch1_envInitVol,this.ch1_envDir=t.ch1_envDir,this.ch1_envPeriod=t.ch1_envPeriod,this.ch1_envTimer=t.ch1_envTimer,this.ch1_freq=t.ch1_freq,this.ch1_freqTimer=t.ch1_freqTimer,this.ch1_sweepPeriod=t.ch1_sweepPeriod,this.ch1_sweepDir=t.ch1_sweepDir,this.ch1_sweepShift=t.ch1_sweepShift,this.ch1_sweepTimer=t.ch1_sweepTimer,this.ch1_sweepEnabled=t.ch1_sweepEnabled,this.ch1_sweepShadow=t.ch1_sweepShadow,this.ch2_enabled=t.ch2_enabled,this.ch2_dacEnabled=t.ch2_dacEnabled,this.ch2_duty=t.ch2_duty,this.ch2_dutyPos=t.ch2_dutyPos,this.ch2_lengthCounter=t.ch2_lengthCounter,this.ch2_lengthEnabled=t.ch2_lengthEnabled,this.ch2_volume=t.ch2_volume,this.ch2_envInitVol=t.ch2_envInitVol,this.ch2_envDir=t.ch2_envDir,this.ch2_envPeriod=t.ch2_envPeriod,this.ch2_envTimer=t.ch2_envTimer,this.ch2_freq=t.ch2_freq,this.ch2_freqTimer=t.ch2_freqTimer,this.ch3_enabled=t.ch3_enabled,this.ch3_dacEnabled=t.ch3_dacEnabled,this.ch3_lengthCounter=t.ch3_lengthCounter,this.ch3_lengthEnabled=t.ch3_lengthEnabled,this.ch3_volume=t.ch3_volume,this.ch3_freq=t.ch3_freq,this.ch3_freqTimer=t.ch3_freqTimer,this.ch3_samplePos=t.ch3_samplePos,this.ch3_sampleBuffer=t.ch3_sampleBuffer,t.waveRAM&&this.waveRAM.set(t.waveRAM),this.ch4_enabled=t.ch4_enabled,this.ch4_dacEnabled=t.ch4_dacEnabled,this.ch4_lengthCounter=t.ch4_lengthCounter,this.ch4_lengthEnabled=t.ch4_lengthEnabled,this.ch4_volume=t.ch4_volume,this.ch4_envInitVol=t.ch4_envInitVol,this.ch4_envDir=t.ch4_envDir,this.ch4_envPeriod=t.ch4_envPeriod,this.ch4_envTimer=t.ch4_envTimer,this.ch4_clockShift=t.ch4_clockShift,this.ch4_widthMode=t.ch4_widthMode,this.ch4_divisor=t.ch4_divisor,this.ch4_freqTimer=t.ch4_freqTimer,this.ch4_lfsr=t.ch4_lfsr,this.frameSeqTimer=t.frameSeqTimer,this.frameSeqStep=t.frameSeqStep,t.regs&&this.regs.set(t.regs)}},T=class extends K{constructor(){super();this.cpuFrequency=4194304;this.canvasWidth=160;this.numVisibleScanlines=144;this.numTotalScanlines=154;this.cpuCyclesPerLine=456;this.sampleRate=9240*4;this.overscan=!1;this.defaultROMSize=32768;this.aspectRatio=10/9;this.cpu=new D;this.ram=new Uint8Array(8192);this.vram=new Uint8Array(8192);this.oam=new Uint8Array(160);this.hram=new Uint8Array(128);this.extram=new Uint8Array(8192);this.cgbMode=!1;this.forceColor=!1;this.vramBank1=new Uint8Array(8192);this.vramBankSelect=0;this.wramBanks=new Uint8Array(28672);this.wramBankSelect=1;this.bgCRAM=new Uint8Array(64);this.objCRAM=new Uint8Array(64);this.bgCRAMIndex=0;this.bgCRAMAutoInc=!1;this.objCRAMIndex=0;this.objCRAMAutoInc=!1;this.doubleSpeed=!1;this.speedSwitchArmed=!1;this.hdmaSrc=0;this.hdmaDst=0;this.hdmaLength=255;this.hdmaActive=!1;this.hdmaHblank=!1;this.joyp=207;this.sb=0;this.sc=0;this.divCounter=0;this.tima=0;this.tma=0;this.tac=0;this.iflag=0;this.ie=0;this.lcdc=145;this.stat=0;this.scy=0;this.scx=0;this.ly=0;this.lyc=0;this.dma=0;this.bgp=252;this.obp0=255;this.obp1=255;this.wy=0;this.wx=0;this.apu=new U;this.apuCycleAccum=0;this.ppuMode=0;this.ppuDot=0;this.windowLine=0;this.mbcType=0;this.romBank=1;this.ramBank=0;this.ramEnabled=!1;this.mbcMode=0;this.romBankMask=31;this.hasRTC=!1;this.rtcRegisterSelect=-1;this.rtcLatchLast=0;this.rtcSec=0;this.rtcMin=0;this.rtcHour=0;this.rtcDay=0;this.rtcHalt=!1;this.rtcCarry=!1;this.rtcLatched=new Uint8Array(5);this.rtcLastSync=0;this.read=j([[0,16383,16383,e=>this.rom?this.rom[e]:255],[16384,32767,16383,e=>this.readBankedROM(e)],[32768,40959,8191,e=>this.readVRAM(e)],[40960,49151,8191,e=>this.readExtRAM(e)],[49152,53247,4095,e=>this.ram[e]],[53248,57343,4095,e=>this.readWRAMBank(e)],[57344,61439,4095,e=>this.ram[e]],[61440,65023,4095,e=>this.readWRAMBank(e)],[65024,65183,255,e=>this.oam[e]],[65184,65279,255,e=>255],[65280,65407,127,e=>this.readIO(e)],[65408,65534,127,e=>this.hram[e]],[65535,65535,0,e=>this.ie]]);this.write=j([[0,8191,8191,(e,s)=>{this.writeMBC(e,s)}],[8192,16383,8191,(e,s)=>{this.writeMBC(8192+e,s)}],[16384,24575,8191,(e,s)=>{this.writeMBC(16384+e,s)}],[24576,32767,8191,(e,s)=>{this.writeMBC(24576+e,s)}],[32768,40959,8191,(e,s)=>{this.writeVRAM(e,s)}],[40960,49151,8191,(e,s)=>{this.writeExtRAM(e,s)}],[49152,53247,4095,(e,s)=>{this.ram[e]=s}],[53248,57343,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[57344,61439,4095,(e,s)=>{this.ram[e]=s}],[61440,65023,4095,(e,s)=>{this.writeWRAMBank(e,s)}],[65024,65183,255,(e,s)=>{this.oam[e]=s}],[65184,65279,255,(e,s)=>{}],[65280,65407,127,(e,s)=>{this.writeIO(e,s)}],[65408,65534,127,(e,s)=>{this.hram[e]=s}],[65535,65535,0,(e,s)=>{this.ie=s}]]);this.timerSubCycles=0;this.bgPriorityLine=new Uint8Array(160);this.bgAttrPriLine=new Uint8Array(160);this.handler=z(this.inputs,this.getKeyboardMap()),this.connectCPUMemoryBus(this)}getKeyboardMap(){return re}now(){return Date.now()}syncRTC(){if(!this.hasRTC||this.rtcHalt){this.rtcLastSync=this.now();return}var e=Math.floor((this.now()-this.rtcLastSync)/1e3);if(!(e<=0)){this.rtcLastSync+=e*1e3;var s=this.rtcSec+e;this.rtcSec=s%60,s=this.rtcMin+Math.floor(s/60),this.rtcMin=s%60,s=this.rtcHour+Math.floor(s/60),this.rtcHour=s%24;var i=this.rtcDay+Math.floor(s/24);i>511&&(this.rtcCarry=!0,i&=511),this.rtcDay=i}}latchRTC(){this.syncRTC(),this.rtcLatched[0]=this.rtcSec,this.rtcLatched[1]=this.rtcMin,this.rtcLatched[2]=this.rtcHour,this.rtcLatched[3]=this.rtcDay&255,this.rtcLatched[4]=this.rtcDay>>8&1|(this.rtcHalt?64:0)|(this.rtcCarry?128:0)}resetRTC(){var e=new Date(this.now());this.rtcSec=e.getSeconds(),this.rtcMin=e.getMinutes(),this.rtcHour=e.getHours(),this.rtcDay=0,this.rtcHalt=!1,this.rtcCarry=!1,this.rtcRegisterSelect=-1,this.rtcLatchLast=0,this.rtcLastSync=this.now(),this.latchRTC()}readVRAM(e){return this.cgbMode&&this.vramBankSelect?this.vramBank1[e]:this.vram[e]}writeVRAM(e,s){this.cgbMode&&this.vramBankSelect?this.vramBank1[e]=s:this.vram[e]=s}readWRAMBank(e){return!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]:this.wramBanks[(this.wramBankSelect-1)*4096+e]}writeWRAMBank(e,s){!this.cgbMode||this.wramBankSelect<=1?this.ram[4096+e]=s:this.wramBanks[(this.wramBankSelect-1)*4096+e]=s}readBankedROM(e){if(!this.rom)return 255;var s=this.romBank;this.mbcType===0&&(s=1);var i=e+s*16384;return i=8&&s<=12?this.rtcRegisterSelect=s:(this.rtcRegisterSelect=-1,this.ramBank=s&3):this.mbcMode===0?(this.romBank=this.romBank&31|(s&3)<<5,this.romBank&=this.romBankMask):this.ramBank=s&3:(this.mbcType===1?this.mbcMode=s&1:this.mbcType===3&&this.rtcLatchLast===0&&s===1&&this.latchRTC(),this.rtcLatchLast=s)}}writeMBC5(e,s){e<8192?this.ramEnabled=(s&15)===10:e<12288?(this.romBank=this.romBank&256|s,this.romBank&=this.romBankMask):e<16384?(this.romBank=this.romBank&255|(s&1)<<8,this.romBank&=this.romBankMask):e<24576&&(this.ramBank=s&15)}readExtRAM(e){if(this.hasRTC&&this.rtcRegisterSelect>=0)return this.syncRTC(),this.rtcLatched[this.rtcRegisterSelect-8];if(!this.ramEnabled&&this.mbcType>0)return 255;var s=e+this.ramBank*8192;return s=0)&&!(!this.ramEnabled&&this.mbcType>0)){var i=e+this.ramBank*8192;i>8&255;case 5:return this.tima;case 6:return this.tma;case 7:return this.tac|248;case 15:return this.iflag|224;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:return this.apu.readRegister(e);case 64:return this.lcdc;case 65:return this.stat|128;case 66:return this.scy;case 67:return this.scx;case 68:return this.ly;case 69:return this.lyc;case 70:return this.dma;case 71:return this.bgp;case 72:return this.obp0;case 73:return this.obp1;case 74:return this.wy;case 75:return this.wx;case 77:return this.cgbMode?(this.doubleSpeed?128:0)|(this.speedSwitchArmed?1:0)|126:255;case 79:return this.cgbMode?this.vramBankSelect|254:255;case 85:return this.cgbMode?this.hdmaLength:255;case 104:return this.cgbMode?this.bgCRAMIndex|(this.bgCRAMAutoInc?128:0):255;case 105:return this.cgbMode?this.bgCRAM[this.bgCRAMIndex&63]:255;case 106:return this.cgbMode?this.objCRAMIndex|(this.objCRAMAutoInc?128:0):255;case 107:return this.cgbMode?this.objCRAM[this.objCRAMIndex&63]:255;case 112:return this.cgbMode?this.wramBankSelect:255;default:return 255}}writeIO(e,s){switch(e){case 0:this.joyp=s;break;case 1:this.sb=s;break;case 2:this.sc=s;break;case 4:this.divCounter=0;break;case 5:this.tima=s;break;case 6:this.tma=s;break;case 7:this.tac=s&7;break;case 15:this.iflag=s&31;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:this.apu.writeRegister(e,s);break;case 64:this.lcdc=s,s&128||(this.ly=0,this.ppuMode=0,this.ppuDot=0,this.stat=this.stat&252);break;case 65:this.stat=this.stat&7|s&120;break;case 66:this.scy=s;break;case 67:this.scx=s;break;case 68:break;case 69:this.lyc=s;break;case 70:this.dmaTransfer(s);break;case 71:this.bgp=s;break;case 72:this.obp0=s;break;case 73:this.obp1=s;break;case 74:this.wy=s;break;case 75:this.wx=s;break;case 77:this.cgbMode&&(this.speedSwitchArmed=!!(s&1));break;case 79:this.cgbMode&&(this.vramBankSelect=s&1);break;case 81:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&255|s<<8);break;case 82:this.cgbMode&&(this.hdmaSrc=this.hdmaSrc&65280|s&240);break;case 83:this.cgbMode&&(this.hdmaDst=this.hdmaDst&255|(s&31)<<8);break;case 84:this.cgbMode&&(this.hdmaDst=this.hdmaDst&65280|s&240);break;case 85:this.cgbMode&&this.startHDMA(s);break;case 104:this.cgbMode&&(this.bgCRAMIndex=s&63,this.bgCRAMAutoInc=!!(s&128));break;case 105:this.cgbMode&&(this.bgCRAM[this.bgCRAMIndex&63]=s,this.bgCRAMAutoInc&&(this.bgCRAMIndex=this.bgCRAMIndex+1&63));break;case 106:this.cgbMode&&(this.objCRAMIndex=s&63,this.objCRAMAutoInc=!!(s&128));break;case 107:this.cgbMode&&(this.objCRAM[this.objCRAMIndex&63]=s,this.objCRAMAutoInc&&(this.objCRAMIndex=this.objCRAMIndex+1&63));break;case 112:this.cgbMode&&(this.wramBankSelect=s&7,this.wramBankSelect===0&&(this.wramBankSelect=1));break}}readJoypad(){var e=this.joyp|15;return this.joyp&16||(e&=~(this.inputs[0]&15)),this.joyp&32||(e&=~(this.inputs[0]>>4&15)),e|192}dmaTransfer(e){this.dma=e;for(var s=e<<8,i=0;i<160;i++)this.oam[i]=this.read(s+i)}startHDMA(e){if(this.hdmaActive&&!(e&128)){this.hdmaActive=!1,this.hdmaLength=e|128;return}var s=((e&127)+1)*16;e&128?(this.hdmaActive=!0,this.hdmaHblank=!0,this.hdmaLength=e&127):(this.performHDMABlock(s),this.hdmaLength=255)}performHDMABlock(e){for(var s=this.hdmaSrc&65520,i=this.hdmaDst&8176,h=0;h255&&(this.tima=this.tma,this.iflag|=4)}}syncInterrupts(){var e=this.iflag&this.ie&31;this.cpu.interruptFlags=e}syncInterruptsBack(){var e=this.iflag&this.ie&31&~this.cpu.interruptFlags;this.iflag&=~e}advanceCPU(){this.syncInterrupts();var e=this.cpu.interruptFlags,s=this.cpu,i=1,h=!1;this.cpu.isStable()&&(this.probe.logExecute(this.cpu.getPC(),this.cpu.getSP()),this.cgbMode&&this.speedSwitchArmed&&!this.cpu.halted&&this.read(this.cpu.getPC())===16&&(h=!0)),i=s.advanceInsn(1);var r=i*4;this.probe.logClocks(r);var a=this.doubleSpeed?i*2:r;if(h&&this.performSpeedSwitch(),this.cpu.interruptFlags!==e&&(this.probe.logInterrupt(e&~this.cpu.interruptFlags),this.syncInterruptsBack()),this.updateTimerCycles(a),this.updatePPUMode(a),this.apu.clock(a),this.audio){this.apuCycleAccum+=a;for(var c=114;this.apuCycleAccum>=c;)this.apuCycleAccum-=c,this.audio.feedSample(this.apu.getSample(),1)}return a}updatePPUMode(e){if(!(this.scanline>=144)){this.ppuDot+=e;var s=this.ppuMode;this.ppuDot<80?this.ppuMode=2:this.ppuDot<252?this.ppuMode=3:this.ppuMode=0,this.ppuMode!==s&&(this.stat=this.stat&252|this.ppuMode&3,this.ppuMode===0&&this.stat&8?(this.iflag|=2,this.cgbMode&&this.tickHDMA()):this.ppuMode===2&&this.stat&32&&(this.iflag|=2))}}updateTimerCycles(e){if(this.divCounter=this.divCounter+e&65535,!!(this.tac&4)){var s;switch(this.tac&3){case 0:s=1024;break;case 1:s=16;break;case 2:s=64;break;case 3:s=256;break;default:s=1024}for(this.timerSubCycles+=e;this.timerSubCycles>=s;)this.timerSubCycles-=s,this.tima=this.tima+1&255,this.tima===0&&(this.tima=this.tma,this.iflag|=4)}}startScanline(){this.ly=this.scanline,this.ppuDot=0,this.scanline<144?this.ppuMode=2:(this.ppuMode=1,this.scanline===144&&(this.iflag|=1,this.stat&16&&(this.iflag|=2))),this.ly===this.lyc?(this.stat|=4,this.stat&64&&(this.iflag|=2)):this.stat&=-5,this.stat=this.stat&252|this.ppuMode&3}drawScanline(){if(this.lcdc&128&&!(this.scanline>=144)){var e=this.scanline*160;if(this.lcdc&1||this.cgbMode)this.drawBGLine(e);else for(var s=0;s<160;s++)this.pixels[e+s]=L[0],this.bgPriorityLine[s]=0,this.bgAttrPriLine[s]=0;this.lcdc&32&&this.scanline>=this.wy&&this.drawWindowLine(e),this.lcdc&2&&this.drawSpriteLine(e)}}getPaletteColor(e,s){var i=e>>s*2&3;return L[i]}getCGBColor(e,s,i){var h=s*8+i*2;return he(e[h],e[h+1])}drawBGLine(e){for(var s=this.lcdc&8?7168:6144,i=!(this.lcdc&16),h=this.scanline+this.scy&255,r=h>>3&31,a=h&7,c=0;c<160;c++){var o=c+this.scx&255,n=o>>3&31,u=7-(o&7),w=s+r*32+n,f=this.vram[w],d;if(i?d=4096+(f<<24>>24)*16:d=f*16,this.cgbMode){var v=this.vramBank1[w],p=v&7,C=v&8?1:0,S=!!(v&32),y=!!(v&64),P=!!(v&128),B=y?7-a:a,R=S?o&7:u,_=C?this.vramBank1:this.vram,b=_[d+B*2],A=_[d+B*2+1],F=(A>>R&1)<<1|b>>R&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=P?1:0,this.pixels[e+c]=this.getCGBColor(this.bgCRAM,p,F)}else{var b=this.vram[d+a*2],A=this.vram[d+a*2+1],F=(A>>u&1)<<1|b>>u&1;this.bgPriorityLine[c]=F,this.bgAttrPriLine[c]=0,this.pixels[e+c]=this.getPaletteColor(this.bgp,F)}}}drawWindowLine(e){var s=this.wx-7;if(!(s>=160)){for(var i=this.lcdc&64?7168:6144,h=!(this.lcdc&16),r=this.windowLine,a=r>>3&31,c=r&7,o=!1,n=Math.max(0,s);n<160;n++){var u=n-s,w=u>>3&31,f=7-(u&7),d=i+a*32+w,v=this.vram[d],p;if(h?p=4096+(v<<24>>24)*16:p=v*16,this.cgbMode){var C=this.vramBank1[d],S=C&7,y=C&8?1:0,P=!!(C&32),B=!!(C&64),R=!!(C&128),_=B?7-c:c,b=P?u&7:f,A=y?this.vramBank1:this.vram,F=A[p+_*2],E=A[p+_*2+1],k=(E>>b&1)<<1|F>>b&1;this.bgPriorityLine[n]=k,this.bgAttrPriLine[n]=R?1:0,this.pixels[e+n]=this.getCGBColor(this.bgCRAM,S,k)}else{var F=this.vram[p+c*2],E=this.vram[p+c*2+1],k=(E>>f&1)<<1|F>>f&1;this.bgPriorityLine[n]=k,this.bgAttrPriLine[n]=0,this.pixels[e+n]=this.getPaletteColor(this.bgp,k)}o=!0}o&&this.windowLine++}}drawSpriteLine(e){for(var s=this.lcdc&4?16:8,i=0,h=[],r=0;r<40&&i<10;r++){var a=this.oam[r*4]-16,c=this.oam[r*4+1]-8;this.scanline>=a&&this.scanlineH.x!==I.x?H.x-I.x:H.index-I.index);for(var o=h.length-1;o>=0;o--){var n=h[o].index,u=this.oam[n*4]-16,w=this.oam[n*4+1]-8,f=this.oam[n*4+2],d=this.oam[n*4+3],v=!!(d&32),p=!!(d&64),C=!!(d&128);s===16&&(f&=254);var S=this.scanline-u;p&&(S=s-1-S);for(var y=f*16+S*2,P=this.cgbMode&&d&8?this.vramBank1:this.vram,B=P[y],R=P[y+1],_=0;_<8;_++){var b=w+_;if(!(b<0||b>=160)){var A=v?_:7-_,F=(R>>A&1)<<1|B>>A&1;if(F!==0)if(this.cgbMode){var E=this.lcdc&1;if(E&&(this.bgAttrPriLine[b]&&this.bgPriorityLine[b]!==0||C&&this.bgPriorityLine[b]!==0))continue;var k=d&7;this.pixels[e+b]=this.getCGBColor(this.objCRAM,k,F)}else{if(C){var se=this.pixels[e+b];if(se!==L[this.bgp&3])continue}var ie=d&16?this.obp1:this.obp0;this.pixels[e+b]=this.getPaletteColor(ie,F)}}}}}loadROM(e,s){if(e.length>327){var i=e[327];switch(i){case 0:this.mbcType=0;break;case 1:case 2:case 3:this.mbcType=1;break;case 15:case 16:case 17:case 18:case 19:this.mbcType=3;break;case 25:case 26:case 27:case 28:case 29:case 30:this.mbcType=5;break;default:console.log(`Unhandled cartridge type 0x${i.toString(16)} @ 0x147, treating as MBC5`),this.mbcType=5;break}this.hasRTC=i===15||i===16}else throw new O("ROM not long enough for header");if(e.length>323){var h=e[323];this.cgbMode=this.forceColor||h===128||h===192}this.rom=new Uint8Array(Math.max(e.length,32768)),this.rom.set(e);var r=Math.max(2,this.rom.length>>14);switch(this.romBankMask=r-1,e[329]){case 0:break;case 1:this.extram=new Uint8Array(2048);break;case 2:this.extram=new Uint8Array(8192);break;case 3:this.extram=new Uint8Array(32768);break;case 4:this.extram=new Uint8Array(131072);break;case 5:this.extram=new Uint8Array(65536);break;default:console.log(`Invalid RAM size code @ 0x149: ${e[329]}`);break}this.reset()}reset(){super.reset(),this.ram.fill(0),this.vram.fill(0),this.oam.fill(0),this.hram.fill(0),this.iflag=0,this.ie=0,this.lcdc=145,this.stat=0,this.scy=0,this.scx=0,this.ly=0,this.lyc=0,this.bgp=252,this.obp0=255,this.obp1=255,this.wy=0,this.wx=0,this.joyp=207,this.divCounter=0,this.tima=0,this.tma=0,this.tac=0,this.ppuMode=0,this.ppuDot=0,this.windowLine=0,this.romBank=1,this.ramBank=0,this.ramEnabled=!1,this.mbcMode=0,this.timerSubCycles=0,this.apuCycleAccum=0,this.apu.reset(),this.vramBank1.fill(0),this.vramBankSelect=0,this.wramBanks.fill(0),this.wramBankSelect=1;for(var e=0;e<8;e++)this.bgCRAM.set(X,e*8),this.objCRAM.set(X,e*8);this.bgCRAMIndex=0,this.bgCRAMAutoInc=!1,this.objCRAMIndex=0,this.objCRAMAutoInc=!1,this.doubleSpeed=!1,this.speedSwitchArmed=!1,this.hdmaSrc=0,this.hdmaDst=0,this.hdmaLength=255,this.hdmaActive=!1,this.hdmaHblank=!1,this.cgbMode&&(this.cpu.A=17),this.hasRTC?this.resetRTC():(this.rtcRegisterSelect=-1,this.rtcLatchLast=0)}preFrame(){this.windowLine=0}readVRAMAddress(e){return this.cgbMode&&e>=8192?this.vramBank1[e&8191]:this.vram[e&8191]}saveState(){var e=super.saveState();return e.vram=this.vram.slice(0),e.oam=this.oam.slice(0),e.hram=this.hram.slice(0),e.extram=this.extram.slice(0),e.io={joyp:this.joyp,sb:this.sb,sc:this.sc,divCounter:this.divCounter,tima:this.tima,tma:this.tma,tac:this.tac,iflag:this.iflag,ie:this.ie,lcdc:this.lcdc,stat:this.stat,scy:this.scy,scx:this.scx,ly:this.ly,lyc:this.lyc,dma:this.dma,bgp:this.bgp,obp0:this.obp0,obp1:this.obp1,wy:this.wy,wx:this.wx,ppuMode:this.ppuMode,ppuDot:this.ppuDot,windowLine:this.windowLine,romBank:this.romBank,ramBank:this.ramBank,ramEnabled:this.ramEnabled,mbcMode:this.mbcMode,timerSubCycles:this.timerSubCycles},e.apu=this.apu.saveState(),e.apuCycleAccum=this.apuCycleAccum,e.rtc={hasRTC:this.hasRTC,sec:this.rtcSec,min:this.rtcMin,hour:this.rtcHour,day:this.rtcDay,halt:this.rtcHalt,carry:this.rtcCarry,registerSelect:this.rtcRegisterSelect,latchLast:this.rtcLatchLast,latched:this.rtcLatched.slice(0),lastSync:this.rtcLastSync},this.cgbMode&&(e.cgb={vramBank1:this.vramBank1.slice(0),vramBankSelect:this.vramBankSelect,wramBanks:this.wramBanks.slice(0),wramBankSelect:this.wramBankSelect,bgCRAM:this.bgCRAM.slice(0),objCRAM:this.objCRAM.slice(0),bgCRAMIndex:this.bgCRAMIndex,bgCRAMAutoInc:this.bgCRAMAutoInc,objCRAMIndex:this.objCRAMIndex,objCRAMAutoInc:this.objCRAMAutoInc,doubleSpeed:this.doubleSpeed,speedSwitchArmed:this.speedSwitchArmed,hdmaSrc:this.hdmaSrc,hdmaDst:this.hdmaDst,hdmaLength:this.hdmaLength,hdmaActive:this.hdmaActive,hdmaHblank:this.hdmaHblank}),e}loadState(e){super.loadState(e),this.vram.set(e.vram),this.oam.set(e.oam),this.hram.set(e.hram),e.extram&&this.extram.set(e.extram);var s=e.io;if(this.joyp=s.joyp,this.sb=s.sb,this.sc=s.sc,this.divCounter=s.divCounter,this.tima=s.tima,this.tma=s.tma,this.tac=s.tac,this.iflag=s.iflag,this.ie=s.ie,this.lcdc=s.lcdc,this.stat=s.stat,this.scy=s.scy,this.scx=s.scx,this.ly=s.ly,this.lyc=s.lyc,this.dma=s.dma,this.bgp=s.bgp,this.obp0=s.obp0,this.obp1=s.obp1,this.wy=s.wy,this.wx=s.wx,this.ppuMode=s.ppuMode,this.ppuDot=s.ppuDot,this.windowLine=s.windowLine,this.romBank=s.romBank,this.ramBank=s.ramBank,this.ramEnabled=s.ramEnabled,this.mbcMode=s.mbcMode,this.timerSubCycles=s.timerSubCycles,e.apu&&this.apu.loadState(e.apu),this.apuCycleAccum=e.apuCycleAccum||0,e.rtc){var i=e.rtc;this.hasRTC=i.hasRTC,this.rtcSec=i.sec,this.rtcMin=i.min,this.rtcHour=i.hour,this.rtcDay=i.day,this.rtcHalt=i.halt,this.rtcCarry=i.carry,this.rtcRegisterSelect=i.registerSelect,this.rtcLatchLast=i.latchLast,i.latched&&this.rtcLatched.set(i.latched),this.rtcLastSync=i.lastSync}if(e.cgb){var h=e.cgb;this.vramBank1.set(h.vramBank1),this.vramBankSelect=h.vramBankSelect,this.wramBanks.set(h.wramBanks),this.wramBankSelect=h.wramBankSelect,this.bgCRAM.set(h.bgCRAM),this.objCRAM.set(h.objCRAM),this.bgCRAMIndex=h.bgCRAMIndex,this.bgCRAMAutoInc=h.bgCRAMAutoInc,this.objCRAMIndex=h.objCRAMIndex,this.objCRAMAutoInc=h.objCRAMAutoInc,this.doubleSpeed=h.doubleSpeed,this.speedSwitchArmed=h.speedSwitchArmed,this.hdmaSrc=h.hdmaSrc,this.hdmaDst=h.hdmaDst,this.hdmaLength=h.hdmaLength,this.hdmaActive=h.hdmaActive,this.hdmaHblank=h.hdmaHblank}}getDebugCategories(){return["CPU","Stack","PPU"]}getDebugInfo(e,s){if(e==="PPU"){var i="LCDC "+m(this.lcdc,2)+" STAT "+m(this.stat,2)+` LY `+m(this.ly,2)+" LYC "+m(this.lyc,2)+` SCX `+m(this.scx,2)+" SCY "+m(this.scy,2)+` WX `+m(this.wx,2)+" WY "+m(this.wy,2)+` @@ -14,4 +14,4 @@ SPD `+(this.doubleSpeed?"2x":"1x")+` `),this.hasRTC&&(this.syncRTC(),i+=`--- RTC --- `+m(this.rtcHour,2)+":"+m(this.rtcMin,2)+":"+m(this.rtcSec,2)+" day "+this.rtcDay+(this.rtcHalt?" HALT":"")+(this.rtcCarry?" CARRY":"")+` `),i}}};var te=[{id:"hello.c",name:"Hello World",category:"C"},{id:"typewriter.c",name:"Typewriter Text"},{id:"testdrawing.c",name:"Drawing Routines"},{id:"joypad.c",name:"Joypad Input"},{id:"testphys.c",name:"Sprite Movement"},{id:"sprites.c",name:"Multiple Sprites"},{id:"metasprites.c",name:"Metasprites"},{id:"paint.c",name:"Paint Program"},{id:"scroll.c",name:"Scrolling"},{id:"large_map.c",name:"Large Scrolling Map"},{id:"window.c",name:"Window Status Bar"},{id:"galaxy.c",name:"Window + Sprites"},{id:"interrupts.c",name:"VBlank + Timer Interrupts"},{id:"vram.c",name:"VRAM/OAM Access"},{id:"detect.c",name:"Detect Hardware"},{id:"gbc.c",name:"Game Boy Color"},{id:"gbdecompress.c",name:"Decompression"},{id:"music.c",name:"Music Player"},{id:"aputest.c",name:"Sound Tester"},{id:"demo_vgr3.c",name:"Compressed VGM Music"},{id:"clock.c",name:"MBC3 Real-Time Clock"},{id:"savegame.c",name:"Battery Save RAM"},{id:"banking.c",name:"ROM Bank Switching"},{id:"flicker.c",name:"Flicker Transparency",category:"Advanced Graphics"},{id:"parallax.c",name:"Parallax Scrolling"},{id:"animstream.c",name:"Streaming Animation"},{id:"raster.c",name:"STAT/LYC Raster Effects"},{id:"wireframe.c",name:"Wireframe 3D"},{id:"polyfill.c",name:"Filled Polygons"},{id:"raycast.c",name:"Raycasting 3D"},{id:"siegegame.c",name:"Siege Game",category:"Games"},{id:"climber.c",name:"Climber Game"},{id:"chase.c",name:"Shiru's Chase Game"},{id:"pakupaku.c",name:"Paku Paku"},{id:"sm83.c",name:"C vs. Assembly",category:"Assembler"},{id:"hello.sgb",name:"Hello World (ASM)"},{id:"main.wiz",name:"Snake Game (Wiz)"}],q=class extends ${constructor(){super(...arguments);this.getToolForFilename=Z;this.lcdPersistence=.5}newMachine(){return new T}getPresets(){return te}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}readAddress(e){return this.machine.read(e)}readVRAMAddress(e){return this.machine.readVRAMAddress(e)}async start(){var e;if(await super.start(),typeof HTMLCanvasElement!="undefined"&&((e=this.video)==null?void 0:e.canvas)instanceof HTMLCanvasElement){let s=this.video.updateFrame.bind(this.video);this.video.updateFrame=(...i)=>{this.applyLCDPersistence(),s(...i)}}}applyLCDPersistence(){if(!(this.lcdPersistence>0)||this.machine.cgbMode){this.lcdPrevFrame=null;return}let e=this.video.getFrameData(),s=this.lcdPrevFrame;if(!s||s.length!=e.length){this.lcdPrevFrame=new Uint32Array(e);return}let i=Math.round(this.lcdPersistence*256),h=256-i;for(let r=0;r>8,n=(c>>8&255)*i+(a>>8&255)*h>>8,u=(c>>16&255)*i+(a>>16&255)*h>>8;s[r]=e[r]=4278190080|u<<16|n<<8|o}}getOriginPC(){return 256}getROMExtension(){return".gb"}getMemoryMap(){return{main:[{name:"ROM Bank 0",start:0,size:16384,type:"rom"},{name:"ROM Bank 1+",start:16384,size:16384,type:"rom"},{name:"Video RAM",start:32768,size:8192,type:"ram"},{name:"External RAM",start:40960,size:8192,type:"ram"},{name:"Work RAM",start:49152,size:8192,type:"ram"},{name:"OAM",start:65024,size:160,type:"ram"},{name:"I/O Registers",start:65280,size:128,type:"io"},{name:"High RAM",start:65408,size:127,type:"ram"}]}}getDebugCategories(){return G(this.machine)?this.machine.getDebugCategories():["CPU","Stack","PPU"]}getDebugInfo(e,s){switch(e){case"CPU":return Y(s.c);case"Stack":{var i=s.c.SP-1&65535,h=i&65280,r=h+255;return i==0&&(i=65536),J(this,[],h,r,i,205)}default:return G(this.machine)&&this.machine.getDebugInfo(e,s)}}disassemble(e,s){return Q(e,s(e),s(e+1),s(e+2))}showHelp(){return"https://8bitworkshop.com/docs/platforms/gameboy/"}},V=class extends q{constructor(){super(...arguments);this.lcdPersistence=0}newMachine(){var e=new T;return e}getPresets(){return te}getROMExtension(){return".gbc"}getMemoryMap(){return{main:[{name:"ROM Bank 0",start:0,size:16384,type:"rom"},{name:"ROM Bank 1+",start:16384,size:16384,type:"rom"},{name:"Video RAM B0",start:32768,size:8192,type:"ram"},{name:"External RAM",start:40960,size:8192,type:"ram"},{name:"Work RAM 0",start:49152,size:4096,type:"ram"},{name:"Work RAM 1-7",start:53248,size:4096,type:"ram"},{name:"OAM",start:65024,size:160,type:"ram"},{name:"I/O Registers",start:65280,size:128,type:"io"},{name:"High RAM",start:65408,size:127,type:"ram"}]}}showHelp(){return"https://8bitworkshop.com/docs/platforms/gameboy/"}};W.gb=q;W["gb.color"]=V; -//# sourceMappingURL=gb-QINPLCGV.js.map +//# sourceMappingURL=gb-4WE7DNZW.js.map diff --git a/gen/gb-QINPLCGV.js.map b/gen/gb-4WE7DNZW.js.map similarity index 100% rename from gen/gb-QINPLCGV.js.map rename to gen/gb-4WE7DNZW.js.map diff --git a/gen/ide/ui.js b/gen/ide/ui.js index aafb4160..fbf1c6f2 100644 --- a/gen/ide/ui.js +++ b/gen/ide/ui.js @@ -63,6 +63,7 @@ const baseplatform_1 = require("../common/baseplatform"); const emu_1 = require("../common/emu"); const books_1 = require("../common/books"); const controls_1 = require("../common/controls"); +const audio_1 = require("../common/audio"); const hdlhost_1 = require("./hdlhost"); const recorder_1 = require("../common/recorder"); const util_1 = require("../common/util"); @@ -2322,7 +2323,29 @@ function renderControls(div) { } return div.children().length > 0; } +function showAudioHint() { + const hint = $("#emuaudiohint"); + if (!hint.length) + return; + let wasBlocked = false; + const update = () => { + if ((0, audio_1.isAudioBlocked)()) { + wasBlocked = true; + hint.show(); + } + else { + hint.hide(); + if (wasBlocked) + unsubscribe(); + } + }; + // AudioContext.resume() is async, so wait for the context to actually start + // instead of hiding on the click that asked it to. + const unsubscribe = (0, audio_1.onAudioStateChange)(update); + update(); +} function showInstructions() { + showAudioHint(); var div = $("#emucontrols"); if (!renderControls(div)) return; diff --git a/gen/ide/ui.js.map b/gen/ide/ui.js.map index 1b24cf5a..bd8ce0d9 100644 --- a/gen/ide/ui.js.map +++ b/gen/ide/ui.js.map @@ -1 +1 @@ -{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ide/ui.ts"],"names":[],"mappings":";AACA,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHlC,4CAEC;AACD,8CAEC;AACD,4CAEC;AACD,0CAEC;AAuLD,wCAUC;AAgdD,wDAEC;AAED,4DAEC;AAiXD,0CAGC;AAmID,8CASC;AAsBD,0CAQC;AAwJD,wCA8BC;AA4BD,0BAgBC;AAwBD,0CAKC;AAmDD,wCAMC;AAsiBD,sCAKC;AAaD,0CASC;AA+RD,gDA8BC;AAGD,0BAwDC;AAmBD,oCAEC;AAED,sCAEC;AAED,oCAEC;AAED,0CAYC;AAKD,kDAMC;AAxlFD,yDAA2C;AAC3C,yDAAuI;AACvI,uCAAmE;AACnE,2CAAiD;AACjD,iDAAuD;AACvD,uCAA2C;AAC3C,iDAAuD;AACvD,yCAGwB;AACxB,iDAA0H;AAC1H,mDAAsD;AACtD,yDAAmD;AACnD,uDAA2G;AAC3G,+CAAyE;AACzE,+CAAoD;AACpD,uCAA6E;AAC7E,yCAAwD;AACxD,uCAAuG;AACvG,uCAAqJ;AACrJ,yCAAsD;AACtD,+CAAwN;AACxN,iCAAsM;AACtM,uCAAoC;AACpC,+CAAuI;AACvI,oDAAuD;AACvD,sDAA6D;AAC7D,0DAA4D;AAC5D,qDAAsD;AACtD,iDAAmD;AACnD,mDAAuM;AACvM,6CAA+H;AAC/H,+CAAmG;AACnG,6CAAwD;AACxD,iDAAoE;AACpE,uCAA2C;AAC3C,qCAAgD;AACvC,4FADA,oBAAW,OACA;AAAE,wFADA,gBAAO,OACA;AAC7B,+CAA+E;AAE/E,8DAA0F;AAC1F,uCAAwC;AA4BxC,mCAAmC;AAExB,QAAA,EAAE,GAAG,IAAA,wBAAiB,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAkB,CAAC;AAUlF,kBAAkB;AAElB,IAAI,UAAU,CAAC,CAAG,oCAAoC;AACtD,IAAI,aAAqB,CAAC,CAAC,sCAAsC;AACjE,IAAI,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;AACjC,IAAI,SAAkB,CAAC;AACvB,IAAI,aAAgC,CAAC;AACrC,IAAI,UAAmB,CAAC,CAAE,6BAA6B;AACvD,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC,yDAAyD;AACxF,IAAI,kBAA2B,CAAC,CAAC,sEAAsE;AACvG,IAAI,cAAmB,CAAC,CAAK,gCAAgC;AAC7D,IAAI,cAAsB,CAAC,CAAC,sCAAsC;AAClE,IAAI,KAAkB,CAAC,CAAG,mBAAmB;AAE7C,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,KAAK,CAAC,CAAC;AAOpC,IAAI,aAAa,CAAC,CAAE,6BAA6B;AACjD,IAAI,aAAa,CAAC,CAAE,yBAAyB;AAC7C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,IAAI,eAAe,GAAW,IAAI,CAAC;AACnC,IAAI,gBAAgB,GAAqB,IAAI,CAAC;AAC9C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,aAAa,GAAG,gBAAgB,CAAC;AAErC,SAAgB,gBAAgB;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAgB,iBAAiB;IAC/B,OAAO,uBAAe,CAAC;AACzB,CAAC;AACD,SAAgB,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC;AACD,SAAgB,eAAe;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS;IAChB,mHAAmH;IACnH,OAAO,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,eAAe,GAAY;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,8CAA8C,CAAC;QAC3D,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAC3C,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,CAAC;AAEJ,2BAA2B;AAC3B,MAAM,SAAS;IACb,aAAa,CAAC,EAAU;QACtB,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,eAAO,IAAI,mBAAW,IAAI,CAAC,UAAU;gBACvC,YAAY,CAAC,OAAO,CAAC,aAAa,GAAG,mBAAW,EAAE,eAAO,CAAC,CAAC;;gBAE3D,YAAY,CAAC,UAAU,CAAC,aAAa,GAAG,mBAAW,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,mBAAW,CAAC,CAAC;YACpD,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,gBAAQ,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,eAAe;QACb,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,UAAE,CAAC,IAAI,CAAC;YACf,YAAY,CAAC,UAAU,CAAC,WAAW,GAAG,gBAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,aAAa;QACX,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,gBAAQ,CAAC,CAAC;IACrF,CAAC;IACD,iBAAiB;QACf,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IACD,aAAa,CAAC,QAAgB;QAC5B,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;IACnG,CAAC;IACD,kBAAkB;QAChB,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IACD,aAAa;QACX,IAAI,eAAe,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IACD,4DAA4D;IAC5D,0BAA0B;QACxB,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC1F,CAAC;IACD,sBAAsB;QACpB,IAAI,eAAe,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC;CACF;AAED,IAAI,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AAEhC,qDAAqD;AACrD,8EAA8E;AAC9E,oEAAoE;AACpE,0EAA0E;AAC1E,KAAK,UAAU,wBAAwB,CAAC,WAAoB,EAAE,WAAoB;IAChF,IAAI,UAAU,EAAE,CAAC;QACf,uDAAuD;QACvD,WAAW,IAAI,IAAA,mBAAS,EAAC,qHAAqH,CAAC,CAAC;QAChJ,OAAO;IACT,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,0DAA0D;QAC1D,WAAW,IAAI,IAAA,mBAAS,EAAC,0GAA0G,CAAC,CAAC;QACrI,OAAO;IACT,CAAC;IACD,IAAI,MAAM,GAAG,MAAM,IAAA,kCAAwB,GAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,IAAI,MAAM,CAAC,SAAS,IAAI,WAAW;QAAE,OAAO,CAAC,iCAAiC;IAC9E,uEAAuE;IACvE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;YAAE,OAAO;QACpD,SAAS,CAAC,sBAAsB,EAAE,CAAC;IACrC,CAAC;IACD,IAAA,mBAAS,EAAC,IAAA,iCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,KAAK,UAAU,oBAAoB;IACjC,IAAI,mBAAmB;QAAE,OAAO;IAChC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,IAAI,MAAM,GAAG,MAAM,IAAA,kCAAwB,GAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAA,oBAAU,EAAC,IAAA,iCAAuB,EAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC,cAAc;QACjB,OAAO,uBAAe,CAAC,QAAQ,IAAI,KAAK,CAAC;;QAEzC,OAAO,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,IAAI,IAAI,uBAAe,CAAC,QAAQ,IAAI,KAAK,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,MAAM,GAAsB,IAAI,8BAAoB,CAAC,mBAAW,CAAC,CAAC;IACtE,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,wBAAwB,CAAC,CAAC;QAC9E,OAAO,IAAI,2BAAiB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,UAAE,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,2BAAiB,CAAC,MAAM,EAAE,MAAM,kBAAkB,CAAC,UAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,2BAAiB,CAAC,MAAM,EAAE,IAAI,+BAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IACvC,uBAAe,GAAG,IAAI,qBAAW,CAAC,SAAS,EAAE,EAAE,mBAAW,EAAE,gBAAQ,EAAE,UAAU,CAAC,CAAC;IAClF,IAAA,kCAAkB,EAAC,GAAG,EAAE,CAAC,uBAAe,CAAC,CAAC;IAC1C,uBAAe,CAAC,UAAU,GAAG,UAAE,CAAC,IAAI,IAAI,IAAI,CAAC;IAC7C,sBAAc,GAAG,IAAI,wBAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAgB,EAAE,uBAAe,CAAC,CAAC;IACxF,uBAAe,CAAC,mBAAmB,GAAG,CAAC,MAAoB,EAAE,EAAE;QAC7D,IAAI,IAAA,2BAAa,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAA,uBAAgB,GAAE,EAAE,CAAC;YACnE,IAAA,iCAAmB,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrH,CAAC;QACD,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,uBAAe,CAAC,mBAAmB,GAAG,CAAC,IAAa,EAAE,EAAE;QACtD,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IACF,+CAA+C;IAC/C,uBAAe,CAAC,aAAa,GAAG,CAAC,IAAY,EAAE,IAAc,EAAE,EAAE;QAC/D,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,GAAG,YAAY,sBAAY,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5D,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,GAAG,YAAY,2BAAc,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;gBACvE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,yDAAyD;QACzD,IAAI,QAAQ,GAAG,sBAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,QAAQ,IAAI,QAAQ,KAAK,sBAAc,CAAC,SAAS,EAAE,EAAE,CAAC;YACxD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAE,EAAE,IAAI;IACnC,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACzC,IAAI,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,EAAE,IAAI,sBAAc,CAAC,WAAW,EAAE;QACpC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IACzC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,iEAAiE;AACjE,IAAI,eAAe,GAAa,EAAE,CAAC;AAEnC,SAAgB,cAAc,CAAC,EAAU;IACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,sBAAc,CAAC,aAAa,CAAC,cAAc,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,iBAAiB,EAAE,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,GAAG,cAAc,GAAG,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IACtC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9C,0EAA0E;QAC1E,6DAA6D;QAC7D,MAAM,IAAI,GAAG,IAAA,iCAAsB,EAAC,EAAE,CAAC,CAAC;QACxC,IAAI,IAAI;YAAE,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;gBACvB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YACzC,CAAC,CAAC;YACF,sBAAc,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3C,sBAAc,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACf,eAAe,GAAG,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,IAAY;;QAC9B,IAAI,IAAI,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,4CAA4C;QAC5C,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,sBAAsB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrF,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,GAAG,IAAI,KAAI,MAAA,IAAA,sBAAW,EAAC,IAAI,CAAC,0CAAE,WAAW,CAAA,CAAC;QAClD,OAAO,IAAI,sBAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,aAAa,CAAC,EAAU;QAC/B,aAAa,CAAC,EAAE,EAAE,IAAA,yBAAkB,EAAC,EAAE,CAAC,EAAE,GAAG,EAAE;YAC7C,IAAI,IAAI,GAAG,uBAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAC1B,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;iBACnB,IAAI,IAAI,YAAY,UAAU;gBACjC,OAAO,IAAI,2BAAc,CAAC,EAAE,EAAE,IAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,aAAa,CAAC,uBAAe,CAAC,QAAQ,CAAC,CAAC;IAExC,yBAAyB;IACzB,uBAAe,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QACxC,IAAI,IAAI,IAAI,EAAE,IAAI,uBAAe,CAAC,QAAQ,EAAE,CAAC;YAC3C,aAAa,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,QAAQ,GAAG,IAAI,CAAC;IAChB,IAAI,QAAQ,GAAG,uBAAe,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1B,0DAA0D;YAC1D,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACvG,aAAa,CAAC,KAAK,EAAE,IAAA,yBAAkB,EAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;oBACvD,OAAO,IAAI,qBAAW,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,KAAK,IAAI,KAAK,IAAI,eAAe,EAAE,CAAC;QAClC,IAAI,KAAK,GAAG,cAAc,GAAG,KAAK,CAAC;QACnC,sBAAc,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACjE,aAAa,CAAC,KAAK,EAAE,IAAA,yBAAkB,EAAC,KAAK,CAAC,EAAE,GAAG,EAAE;YACnD,OAAO,IAAI,oBAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,QAAQ,GAAG,IAAI,CAAC;IAChB,IAAI,gBAAQ,CAAC,WAAW,IAAI,gBAAQ,CAAC,SAAS,EAAE,CAAC;QAC/C,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE;YAC3C,OAAO,IAAI,0BAAgB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,gBAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,aAAa,CAAC,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE;YAC9C,OAAO,IAAI,uBAAU,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,uBAAe,CAAC,QAAQ,IAAI,uBAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChE,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE;YAC1C,OAAO,IAAI,0BAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,gBAAQ,CAAC,eAAe,EAAE,CAAC;QAC7B,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE;YAC1C,OAAO,IAAI,2BAAc,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,gBAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE;YAC9C,OAAO,IAAI,+BAAkB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,uBAAuB;QACvB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE;YAC3C,mCAAmC;YACnC,OAAO,IAAI,+BAAkB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE;YAC3C,OAAO,IAAI,yBAAY,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,aAAa,EAAE,cAAc,EAAE,GAAG,EAAE;YAChD,OAAO,IAAI,2BAAc,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,EAAE;YAChD,OAAO,IAAI,4BAAe,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE;YAC7C,OAAO,IAAI,yBAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH;;;;UAIE;IACJ,CAAC;IACD,IAAI,gBAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,aAAa,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE;YAC7C,OAAO,IAAI,4BAAgB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAA,+BAAiB,GAAE,EAAE,CAAC;QACxB,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,EAAE;YAChD,OAAO,IAAI,4BAAe,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,aAAa,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE;QACjD,OAAO,IAAI,6BAAe,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,6EAA6E;IAC7E,kBAAkB;IAClB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,KAAK,IAAI,KAAK,IAAI,sBAAW,EAAE,CAAC;QAC9B,sBAAc,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,MAAc;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,IAAI,GAAG,UAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,GAAG,sBAAc,CAAC,YAAY,CAAC,IAAI,CAAiB,CAAC;QAC/D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,4DAA4D;IAC5D,IAAI,QAAQ,GAAG,uBAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,uBAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IACD,wDAAwD;IACxD,iBAAiB,EAAE,CAAC;IACpB,iBAAiB;IACjB,sBAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,gBAAgB;IAChB,uBAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,gBAAgB;IAChB,cAAc,CAAC,SAAS,EAAE,UAAE,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB;IAC1C,sBAAsB;IACtB,oDAAoD;IACpD,uBAAe,CAAC,QAAQ,GAAG,SAAS,CAAC;IACrC,uDAAuD;IACvD,qBAAO,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,mBAAW,GAAG,GAAG,GAAG,uBAAe,CAAC,QAAQ,CAAC,CAAC;IACzE,qBAAO,CAAC,IAAI,EAAE,CAAC;IACf,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACnC,sCAAsC;IACtC,IAAI,MAAM,GAAG,MAAM,uBAAe,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,uBAAuB;QACvB,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,yCAAyC;QACzC,IAAI,IAAI,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,IAAI,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5C,uBAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;QACnD,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAChC,iEAAiE;QACjE,IAAI,CAAC,UAAE,CAAC,OAAO,EAAE,CAAC;YAChB,IAAA,mBAAS,EAAC,wBAAwB,GAAG,SAAS,GAAG,YAAY;gBAC3D,eAAe,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAA,oBAAU,EAAC,sBAAsB,GAAG,SAAS,GAAG,8CAA8C,CAAC,CAAC;QAClG,CAAC;aAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,IAAA,mBAAS,EAAC,uBAAuB,GAAG,IAAI,GAAG,sCAAsC,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,8BAA8B;QACtE,CAAC;QACD,OAAO,UAAE,CAAC,OAAO,CAAC;QAClB,eAAe,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EAAU;IAC/B,0BAA0B;IAC1B,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;QACd,UAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC;SAAM,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,IAAA,yBAAc,EAAC,EAAE,CAAC,CAAC;QAClC,IAAI,QAAQ,EAAE,CAAC;YACb,UAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,UAAE,CAAC,QAAQ,GAAG,mBAAW,CAAC;QAC1B,UAAE,CAAC,IAAI,GAAG,EAAE,CAAC;IACf,CAAC;IACD,eAAe,EAAE,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAc;IAC3C,IAAI,GAAG,GAAG,IAAA,0BAAe,EAAC,gBAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,IAAA,sBAAe,EAAC,mBAAW,CAAC,GAAG,YAAY,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAU;IACtC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAA,oBAAU,EAAC,iCAAiC,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,KAAK,UAAU,sBAAsB,CAAC,UAAoB;IACxD,IAAI,YAAY,GAAG,IAAA,sBAAe,EAAC,mBAAW,CAAC,CAAC;IAChD,0DAA0D;IAC1D,IAAI,UAAU,GAAiC,EAAE,CAAC;IAClD,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,8BAA8B;IAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChC,CAAC,CAAC,IAAI,CAAC;QACL,GAAG,EAAE,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,IAAA,0BAAe,EAAC,IAAI,CAAC;QACrE,IAAI,EAAE,MAAM;KACb,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAChC,CAAC;IACF,IAAI,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,OAAO,GAAqB,EAAE,CAAC;IACnC,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,CAAC;IAC7B,uBAAuB;IACvB,IAAI,QAAQ,GAAG,MAAM,sBAAsB,CAAC,gBAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC7E,IAAI,aAAuB,CAAC;IAC5B,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,aAAa,GAAG,gBAAQ,CAAC,oBAAoB,EAAE,CAAC;QAChD,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAc,CAAC,CAAC;QACxF,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,sDAAsD;YAC3D,4BAA4B,GAAG,QAAQ,GAAG,SAAS;QACrD,WAAW,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC;QACzC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YACrB,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;oBAAE,OAAO;gBAC5C,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,IAAI,GAAG,QAAQ,CAAC;gBACpB,UAAE,CAAC,OAAO,GAAG,GAAG,CAAC;gBACjB,aAAa,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;KACK,CAAC,CAAC;IACV,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,CAAC;IACvB,MAAM,cAAc,GAAG,CAAC,CAAC,8DAA8D,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAqB,CAAC;IACnD,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;IAC/D,cAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,yBAAyB;AACzB,SAAS,gBAAgB,CAAC,KAAe;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,SAAS,cAAc;QACrB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACrC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,IAAA,mBAAS,EAAC,iBAAiB,CAAC,CAAC;gBAC7B,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,iCAAiC;YACrE,CAAC;iBAAM,CAAC;gBACN,UAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACxB,OAAO,CAAC,OAAO,CAAC;oBACd,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAE,CAAC,IAAI,CAAC,GAAG,yBAAyB;oBAC3E,OAAO,EAAE;wBACP,OAAO,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;wBACzC,MAAM,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE;qBACrD;oBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;wBACnB,IAAI,MAAM;4BACR,eAAe,EAAE,CAAC;;4BAElB,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,iCAAiC;oBACvE,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YAClB,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;gBACzB,IAAI,MAAM,GAAS,CAAC,CAAC,MAAO,CAAC,MAAqB,CAAC;gBACnD,IAAI,IAAI,GAAa,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC5C,6CAA6C;gBAC7C,IAAI,IAAA,uBAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;oBACjC,uBAAuB;gBACzB,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB;gBAC3E,CAAC;gBACD,wBAAwB;gBACxB,sBAAc,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;gBAC/D,cAAc,EAAE,CAAC;YACnB,CAAC,CAAA;YACD,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAChD,CAAC;IACH,CAAC;IACD,IAAI,KAAK;QAAE,cAAc,EAAE,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAA,oBAAU,EAAC,wEAAwE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,SAAS,GAAG,MAAM,QAAQ,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;IAC5B,IAAI,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;IACtC,IAAI,MAAM,GAAG;QACX,MAAM,EAAE,SAAS;KAClB,CAAA;IACD,IAAI,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC;QACtC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,UAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAe;IACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE;YACrD,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAc;IAC9C,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACtC,IAAI,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;IACtC,IAAI,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC;QACtC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IACH,IAAI,MAAM,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,SAAS,GAAG,MAAM,CAAC,MAAa,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,IAAI,OAAO,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,CAAC,2CAA2C,CAAC,CAAC;QAC9D,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAA,oBAAU,EAAC,gDAAgD,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,MAAM,aAAa,GAA+B,EAAE,CAAC;IACrD,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,IAAI,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YACtC,yEAAyE;YACzE,gDAAgD;YAChD,OAAO,IAAA,sBAAe,EAAC,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAChC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,kBAAkB,EAAE,CAAC,QAAgC,EAAE,EAAE;YACvD,oBAAoB;YACpB,gEAAgE;YAChE,IAAI,OAAQ,MAAc,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;gBAC9D,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,IAAK,MAAc,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,wDAAwD;oBACxD,yEAAyE;oBACzE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;wBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;wBACvC,8EAA8E;wBAC9E,6EAA6E;wBAC7E,6DAA6D;wBAC7D,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;4BAAE,SAAS;wBAC7D,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,IAAA,yBAAkB,EAAC,uBAAe,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,wBAAwB;IACtC,OAAO,IAAA,yBAAkB,EAAC,sBAAc,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1D,CAAC;AAGD,SAAS,WAAW,CAAC,CAAC;IACpB,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,EAAE,GAAG,sBAAc,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAClD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,IAAI,GAAG,GAAG,UAAU,GAAG,IAAA,sBAAe,EAAC,mBAAW,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;QAC/D,IAAA,oBAAa,EAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,IAAI,eAAO;oBAAE,IAAA,oBAAU,EAAC,uGAAuG,CAAC,CAAC;;oBAC5H,IAAA,oBAAU,EAAC,oCAAoC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC3E,IAAI,EAAE,EAAE,CAAC;oBACP,IAAI,QAAQ,EAAE,CAAC;wBACb,GAAG,CAAC,OAAO,CAAC,IAAkB,CAAC,CAAC;wBAChC,uBAAe,CAAC,UAAU,CAAC,EAAE,EAAE,IAAkB,CAAC,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,OAAO,CAAC,IAAc,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,IAAA,oBAAU,EAAC,6DAA6D,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,CAAC;IACpB,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,EAAE,GAAG,sBAAc,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;YACjE,IAAI,EAAE,EAAE,CAAC;gBACP,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC7B,gCAAgC;oBAChC,IAAI,UAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;wBAClB,SAAS,CAAC,eAAe,EAAE,CAAC;wBAC5B,eAAe,EAAE,CAAC;oBACpB,CAAC;yBAAM,CAAC;wBACN,cAAc,EAAE,CAAC;wBACjB,IAAA,mBAAS,EAAC,UAAU,GAAG,EAAE,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,oBAAU,EAAC,kCAAkC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,CAAC;IACpB,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,uBAAe,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,EAAE,GAAG,sBAAc,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC;YACb,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO;YACpD,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,IAAI,GAAG,uBAAe,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClD,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;oBACjC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;wBAAE,OAAO;oBACzC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACpC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBACX,cAAc,EAAE,CAAC;wBACjB,KAAK,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,4BAA4B;wBACrE,IAAI,EAAE,IAAI,uBAAe,CAAC,QAAQ,EAAE,CAAC;4BACnC,aAAa,CAAC,KAAK,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,oBAAU,EAAC,kCAAkC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAID,SAAS,gBAAgB,CAAC,GAAG;IAC3B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,QAAQ,CAAC;IACb,MAAM,OAAO,GAAG,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAChF,IAAI,eAAe,GAAG,MAAM,CAAC,EAAE,IAAI,uBAAe,CAAC,QAAQ,CAAC;QAC5D,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3F,CAAC;aAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrB,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjH,IAAI,eAAe;YAAE,cAAc,GAAG,MAAM,CAAC;QAC7C,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,GAAG;IACxB,IAAI,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAC;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7E,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC3B,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAA,sBAAe,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAA,sBAAe,EAAC,mBAAW,CAAC,EAAE,CAAC;oBAC1F,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,QAAgB,EAAE,MAAc,EAAE,UAAc;IACxF,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,EAAE,CAAC;IACrB,IAAI,QAAQ,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ;gBAAE,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClF,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,uBAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/H,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAG;IACzB,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACjC,gCAAgC;IAChC,IAAI,IAAI,GAAG,uBAAe,CAAC,QAAQ,CAAC;IACpC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;IACtC,IAAI,CAAC,eAAO,EAAE,CAAC;QACb,oDAAoD;QACpD,aAAa,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;QACxD,cAAc,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAA,yBAAkB,EAAC,eAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,2BAA2B;QAC3B,MAAM,aAAa,CAAC,GAAG,EAAE,eAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,cAAc,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,qBAAqB;IACrB,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAClC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,GAAgB;IACvC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAA;QAC7G,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,8DAA8D;QAC9D,IAAI,IAAI,IAAI,sBAAsB,EAAE;YAAE,IAAI,GAAG,uBAAe,CAAC,QAAQ,CAAC;QACtE,gDAAgD;QAChD,IAAI,sBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAChB,IAAI,GAAG,GAAG,sBAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,YAAY,sBAAY,EAAE,CAAC;oBAChC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe;IACtB,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,eAAe,GAAG,KAAK,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,MAAqB,EAAE,OAAgB;IAC7D,IAAI,GAAG,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IACxC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,eAAe,GAAG,OAAO,CAAC;IAC1B,oEAAoE;IACpE,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC;IACP,IAAI,OAAO,IAAI,sBAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,uBAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3H,EAAE,GAAG,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAW;IAC5C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,IAAI,IAAI,GAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,YAAY,aAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,IAAI,YAAY,GAAyB,IAAI,CAAC;AAE9C,KAAK,UAAU,gBAAgB,CAAC,IAAkB;IAChD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAA,0BAAgB,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;IACD,8BAA8B;IAC9B,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC/B,sBAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,iBAAiB,EAAE,CAAC,CAAC,wDAAwD;QAC7E,kGAAkG;QAClG,cAAc,CAAC,IAAA,wBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,gCAAgC;QACnE,sBAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,eAAe,EAAE,CAAC;QAClB,6DAA6D;QAC7D,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,IAAI,YAAY;gBAAE,sBAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,sCAAsC;QACtC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;YAAE,OAAO;QAChC,4EAA4E;QAC5E,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAChF,IAAI,YAAY;YAAE,sBAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACzD,qBAAqB;QACrB,gBAAQ,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3F,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,WAAW;QACX,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,IAAI,cAAc,IAAI,IAAA,mBAAY,EAAC,GAAG,EAAE,cAAc,CAAC,EAAE,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,eAAe,EAAE,CAAC,CAAC,sDAAsD;oBACzE,eAAe,EAAE,CAAC;oBAClB,MAAM,gBAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAClE,cAAc,GAAG,GAAG,CAAC;oBACrB,uEAAuE;oBACvE,yEAAyE;oBACzE,+DAA+D;oBAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,IAAI,qBAAO,CAAC,UAAU,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;4BAAE,OAAO,EAAE,CAAC;oBACvE,CAAC;oBACD,kBAAkB,EAAE,CAAC;gBACvB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACf,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBAC/B,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;oBAChC,cAAc,GAAG,IAAI,CAAC;oBACtB,iBAAiB,EAAE,CAAC;oBACpB,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QACD,gCAAgC;QAChC,iBAAiB,EAAE,CAAC;QACpB,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,6EAA6E;QAC7E,sBAAc,CAAC,aAAa,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,IAAI,gBAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,QAAQ,GAAG,mBAAW,GAAG,MAAM,CAAC;QACpC,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ,YAAY,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAA;YACjE,gBAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,SAAS,aAAa,CAAC,KAAM;IAC3B,IAAI,CAAC,IAAA,2BAAY,EAAC,gBAAQ,CAAC;QAAE,OAAO;IACpC,IAAI,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,gBAAQ,CAAC,kBAAkB,EAAE,CAAC;IAC5C,IAAI,OAAO,IAAI,CAAC,aAAa;QAC3B,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,KAAK,IAAI,gBAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,IAAA,2BAAoB,EAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAChD,IAAI,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE;YACpC,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC;YACtC,IAAI,GAAG,IAAI,aAAa;gBACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClB,aAAa,GAAG,GAAG,CAAC;gBACpB,aAAa,GAAG,IAAI,CAAC;gBACrB,aAAa,CAAC,sBAAc,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACnC,CAAC,CAAA;QACD,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,eAAe,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,aAAa,GAAG,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,aAAa,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,QAAgB;IAC1D,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC9F,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC/C,IAAA,gCAAkB,GAAE,CAAC;AACvB,CAAC;AAED,0DAA0D;AAE1D,SAAS,WAAW,CAAC,GAAgB;IACnC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,uBAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACtF,IAAI,CAAC,sBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO;IAC3C,IAAI,GAAG,GAAG,sBAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAG,YAAY,sBAAY,EAAE,CAAC;QAChC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,gFAAgF;AAChF,oCAAoC;AAEpC,SAAS,kBAAkB;IACzB,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,GAAG,YAAY,0BAAgB,IAAI,GAAG,YAAY,uBAAU;QAAE,OAAO,GAAG,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,eAAe,CAAC,CAAS;IACvC,IAAI,MAAM,GAAG,IAAA,mCAAqB,EAAC,CAAC,EAAE,gBAAQ,IAAI,gBAAQ,CAAC,YAAY,IAAI,gBAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5G,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,GAAG,GAAG,kBAAkB,EAAE,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,GAAG,GAAI,GAAW,CAAC,WAAW,CAAC,CAAC,CAAE,GAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAe,CAAC,MAAM,CAAC;QACtB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,UAAG,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAClC,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE;YAC3B,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,oBAAoB;YACzC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAA,oBAAU,EAAC,gCAAgC,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YACD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,SAAS,GAAe,EAAE,CAAC;IAC/B,IAAI,gBAAQ,IAAI,eAAe,EAAE,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;QAClE,sEAAsE;QACtE,2DAA2D;QAC3D,uEAAuE;QACvE,iCAAiC;QACjC,IAAI,gBAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,+DAA+D;QAC/D,IAAI,gBAAQ,CAAC,UAAU,IAAI,gBAAQ,CAAC,OAAO,EAAE,SAAS;YAClD,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9E,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,6BAAgB,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,kBAAkB,EAAE,EAAE,CAAC;YACzB,wEAAwE;YACxE,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,SAAS,GAAe,EAAE,CAAC;IAC/B,IAAI,CAAC,kBAAkB,IAAI,CAAC,gBAAQ,IAAI,CAAC,eAAe,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7E,IAAI,OAAO,GAAG,gBAAQ,CAAC,SAAS,IAAI,gBAAQ,CAAC,SAAS,EAAE,CAAC;IACzD,IAAI,gBAAQ,CAAC,IAAI;QACf,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACxE,IAAI,gBAAQ,CAAC,QAAQ;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,gBAAQ,CAAC,cAAc;QACzB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IAChF,IAAI,gBAAQ,CAAC,QAAQ;QACnB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnF,IAAI,gBAAQ,CAAC,UAAU;QACrB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IACnF,IAAI,gBAAQ,CAAC,WAAW;QACtB,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IAC1F,4CAA4C;IAC5C,IAAI,CAAC,gBAAQ,CAAC,OAAO,IAAI,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAW,CAAC,UAAU,CAAC,SAAS,CAAC;QAC9E,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAChF,4DAA4D;IAC5D,oHAAoH;IACpH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,gBAAQ,IAAI,cAAc,IAAI,IAAI,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,IAAA,oBAAU,EAAC,mDAAmD,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;;QACC,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,SAAS,mBAAmB,CAAC,EAAU;IACrC,OAAO,IAAA,qCAAuB,EAAC,EAAE,EAAE;QACjC,QAAQ,EAAE,uBAAe,CAAC,WAAW,EAAE;QACvC,aAAa,EAAE,uBAAe,CAAC,aAAa;QAC5C,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,wBAAwB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,sBAAc,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC7E,WAAW,EAAE,gBAAQ,CAAC,YAAY,IAAI,gBAAQ,CAAC,YAAY,CAAC,WAAW;KACxE,EAAE,2BAAiB,CAAC,CAAC;AACxB,CAAC;AAED,8EAA8E;AAC9E,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,SAAS,mBAAmB,CAAC,KAAe;IAC1C,oEAAoE;IACpE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,yDAAyD;QACzD,IAAI,eAAe,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAC/D,mDAAmD;QACnD,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,OAAO;IACtF,CAAC;IACD,uCAAuC;IACvC,IAAI,CAAC,gBAAQ,CAAC,WAAW;QAAE,OAAO;IAClC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,oBAAoB,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,IAAA,gCAAkB,GAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,sBAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpI,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,GAAG,GAAG,sBAAc,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzD,IAAI,GAAG,YAAY,sBAAY;gBAAE,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;IACH,CAAC;IACD,IAAI,IAAI,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACnC,wDAAwD;IACxD,sBAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,SAAgB,iBAAiB,CAAC,EAAU;IAC1C,IAAI,CAAC,gBAAQ,CAAC,WAAW;QAAE,OAAO;IAClC,IAAI,IAAI,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,GAAG,GAAG,sBAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3E,IAAI,IAAI,IAAI,GAAG,YAAY,sBAAY,EAAE,CAAC;QACxC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,GAAG,YAAY,0BAAgB,EAAE,CAAC;QAC3C,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,kBAAkB,GAAG,IAAI,CAAC;IAC1B,sBAAc,GAAG,KAAK,CAAC;IACvB,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,sBAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc;IAC5C,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAwB;IAClD,IAAI,gBAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,gBAAQ,CAAC,UAAU,CAAC,CAAC,KAAe,EAAE,GAAW,EAAE,EAAE;YACnD,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,mBAAmB,CAAC,KAAK,IAAI,OAAO,EAAE,SAAS,CAAC,CAAC;YACjD,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QACH,gBAAgB,GAAG,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,KAAwB;IACtD,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,oBAAoB,GAAG,KAAK,CAAC;IAC7B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,KAAK;QAAE,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAA,gCAAkB,GAAE,CAAC;AACvB,CAAC;AAED,SAAS,MAAM;IACb,kBAAkB,GAAG,IAAI,CAAC;IAC1B,IAAI,gBAAQ,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QACrC,gBAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IACD,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,KAAK;IACZ,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,eAAe,EAAE,CAAC;IAClB,MAAM,EAAE,CAAC;IACT,UAAU,GAAG,IAAI,CAAC;IAClB,IAAA,gCAAkB,GAAE,CAAC,CAAC,6CAA6C;AACrE,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,0DAA0D;AAC1D,SAAS,iBAAiB;IACxB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,IAAI,gBAAQ,CAAC,SAAS,IAAI,gBAAQ,CAAC,SAAS,EAAE;QAAE,KAAK,EAAE,CAAC;;QACnD,MAAM,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,OAAO;IACd,IAAI,CAAC,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QAC1B,gBAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IACD,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,eAAe,EAAE,CAAC;QAAC,eAAe,EAAE,CAAC;IAAC,CAAC;AAC7C,CAAC;AAED,SAAS,MAAM;IACb,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAE7B,sEAAsE;IACtE,uDAAuD;IACvD,IAAI,qBAAO,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAC1B,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,UAAU,GAAG,KAAK,CAAC;QACnB,eAAe,GAAG,IAAI,CAAC;QACvB,OAAO;IACT,CAAC;IAED,eAAe,EAAE,CAAC;IAClB,4EAA4E;IAC5E,+EAA+E;IAC/E,kBAAkB,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QAC1B,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,CAAC;IACV,UAAU,GAAG,KAAK,CAAC;IACnB,eAAe,GAAG,IAAI,CAAC;IACvB,IAAA,gCAAkB,GAAE,CAAC;AACvB,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,gBAAQ,CAAC,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ;IACf,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5B,uEAAuE;IACvE,IAAI,gBAAQ,CAAC,iBAAiB,IAAI,gBAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC/D,gBAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,0EAA0E;IAC1E,mEAAmE;IACnE,IAAI,sBAAc,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;QAC9C,IAAI,GAAG,GAAG,qBAAqB,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;IACH,CAAC;IACD,2CAA2C;IAC3C,IAAI,gBAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,gBAAQ,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,gBAAQ,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,cAAc,GAAmD,IAAI,CAAC;AAE1E,yEAAyE;AACzE,SAAS,qBAAqB;IAC5B,IAAI,QAAQ,GAAG,uBAAe,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5D,IAAI,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC5B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;gBAC5C,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAC1B,KAAK,IAAI,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;wBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;QACD,cAAc,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,cAAc,CAAC,GAAG,CAAC;AAC5B,CAAC;AAED,6EAA6E;AAC7E,gFAAgF;AAChF,8DAA8D;AAC9D,SAAS,cAAc,CAAC,GAAgB;;IACtC,IAAI,CAAC,gBAAQ,CAAC,OAAO,IAAI,CAAC,sBAAc,IAAI,CAAC,sBAAc,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,EAAE,GAAG,sBAAc,CAAC,CAAC,CAAC,GAAG,IAAI,sBAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,IAAI,GAAG,GAAG,gBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,oEAAoE;IACpE,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,GAAG,MAAA,gBAAQ,CAAC,WAAW,0CAAE,IAAI,CAAC,gBAAQ,CAAC,CAAC;IAClD,IAAI,MAAM,IAAI,gBAAQ,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG,gBAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,gBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC,CAAE,oCAAoC;QAClE,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC,CAAC,oCAAoC;QAC3F,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,gBAAQ,CAAC,UAAU,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACrD,CAAC;AAED,wEAAwE;AACxE,0EAA0E;AAC1E,qEAAqE;AACrE,SAAgB,cAAc;IAC5B,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,IAAI,GAAG,IAAA,gCAAkB,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,sBAAc,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,CAAC;IAChB,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,+DAA+D;IAC9F,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1B,oBAAoB,GAAG,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAC1D,IAAI,gBAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,gBAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,gBAAQ,CAAC,OAAO,EAAE,CAAC;QAC5B,mFAAmF;QACnF,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACpG,gBAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,gBAAQ,CAAC,OAAO,EAAE,CAAC;QAC5B,sEAAsE;QACtE,oEAAoE;QACpE,+DAA+D;QAC/D,gBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2DAA2D;AAC3D,SAAS,qBAAqB;IAC5B,KAAK,IAAI,EAAE,IAAI,sBAAc,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,GAAG,YAAY,sBAAY,EAAE,CAAC;YAChC,IAAI,CAAC;gBAAC,GAAG,CAAC,eAAe,EAAE,CAAC;YAAC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,2CAA2C;AAC3C,qBAAO,CAAC,SAAS,CAAC,GAAG,EAAE;IACrB,qBAAqB,EAAE,CAAC;IACxB,IAAI,sBAAc,CAAC,WAAW,EAAE,IAAI,cAAc,EAAE,CAAC;QACnD,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,eAAe,EAAE,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QAC9C,IAAI,qBAAO,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAgB,OAAO,CAAC,EAAY;IAClC,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO;IACvD,sBAAc,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,CAAC;IAChB,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,IAAI,gBAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,gBAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,gBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,gBAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,EAAE,CAAC;IACX,CAAC;;QAAM,IAAA,oBAAU,EAAC,6CAA6C,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,gBAAQ,CAAC,cAAc,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5B,gBAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED,SAAgB,eAAe;IAC7B,sBAAc,GAAG,IAAI,CAAC;IACtB,IAAI,gBAAQ,CAAC,UAAU;QAAE,gBAAQ,CAAC,UAAU,EAAE,CAAC;IAC/C,kBAAkB,EAAE,CAAC,CAAC,sBAAsB;IAC5C,aAAa,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,aAAa;IACpB,gBAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,eAAe,EAAE,CAAC;IAClB,sBAAc,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,eAAe,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC;IAChB,4DAA4D;IAC5D,IAAI,qBAAO,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,EAAE,EAAE,CAAC;QACxD,kBAAkB,GAAG,IAAI,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,kBAAkB,GAAG,KAAK,CAAC,CAAC,uCAAuC;QACnE,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAA,gCAAkB,GAAE,CAAC;AACvB,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,IAAI,YAAY,GAAG,cAAc,CAAC;IAClC,iBAAiB,EAAE,CAAC;IACpB,IAAI,gBAAQ,CAAC,UAAU,IAAI,gBAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS;QACtD,eAAe,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC;QAChB,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,gBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;IACjE,CAAC;SAAM,CAAC;QACN,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,YAAY;QAAE,gBAAgB,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QACzB,sBAAc,CAAC,IAAI,EAAE,CAAC;QACtB,eAAe,GAAG,KAAK,CAAC;IAC1B,CAAC;SAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,2BAA2B;QACxD,sBAAc,CAAC,IAAI,EAAE,CAAC;QACtB,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,gBAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,GAAG,IAAI;QACZ,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;;QAErC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,GAAG,GAAG,gBAAQ,CAAC,YAAY,EAAE,CAAC;IAClC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,OAAO;QAAE,cAAc,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,GAAG,GAAG,gBAAQ,CAAC,YAAY,EAAE,CAAC;IAClC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5B,cAAc,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB;IACxB,cAAc,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,EAAE,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,oBAAoB;QAClE,IAAI,QAAQ,GAAG,gBAAQ,CAAC,eAAe,EAAE,CAAC;QAC1C,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAChC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,cAAc,EAAE,CAAC;QACnB,gBAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,aAAa,EAAE,CAAC;QAChB,cAAc,GAAG,KAAK,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,aAAa,CAAC,KAAK,EAAE,CAAC;IACtB,gBAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;IACvB,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,cAAc,EAAE,CAAC;QACnB,iBAAiB,EAAE,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,gBAAgB,EAAE,CAAC;IACrB,CAAC;IACD,IAAA,gCAAkB,GAAE,CAAC;AACvB,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,OAAO,GAAG,CAAC,sBAAY,CAAC,cAAc,CAAC;IAC3C,CAAC,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,GAAG,YAAY,sBAAY,EAAE,CAAC;QAChC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,sBAAY,CAAC,cAAc,GAAG,OAAO,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM;IACzC,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB;YAC7D,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC3C,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE;gBAC7B,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;wBAAE,OAAO;oBAC5C,IAAI,IAAI,GAAG,QAAQ,CAAC;oBACpB,IAAI,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBAC7C,uBAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBAChD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;4BAC5B,IAAA,oBAAU,EAAC,QAAQ,GAAG,mCAAmC,CAAC,CAAC;wBAC7D,CAAC;6BAAM,CAAC;4BACN,uBAAe,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBACzC,CAAC;wBACD,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAC/B,iBAAiB,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,oBAAU,EAAC,8DAA8D,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AACD,8BAA8B;AAC9B,SAAS,eAAe;IACtB,IAAI,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC3C,yEAAyE;IACzE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,SAAS;QACjH,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,YAAY,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SACxE,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM;QACvC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,aAAa,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SAC5E,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ;QAChF,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,cAAc,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SAC7E,IAAI,IAAI,IAAI,WAAW;QAC1B,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,YAAY,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SACzE,IAAI,IAAI,IAAI,KAAK;QACpB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,UAAU,GAAG,CAAC,GAAG,IAAI,CAAA,CAAC,CAAC,CAAC,CAAC;SAC1E,IAAI,IAAI,IAAI,KAAK;QACpB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,UAAU,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SACzE,IAAI,IAAI,IAAI,MAAM;QACrB,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SACxE,IAAI,IAAI,IAAI,IAAI;QACnB,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,YAAY,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SAC1E,IAAI,IAAI,IAAI,QAAQ;QACvB,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,eAAe,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;;QAEhF,IAAA,oBAAU,EAAC,+CAA+C,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO;QAC5F,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,WAAW,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;SACjF,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO;QACnF,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,UAAU,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,CAAC,CAAC,CAAC;;QAE/E,IAAA,oBAAU,EAAC,8CAA8C,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB;IACzB,yBAAyB;IACzB,SAAS,GAAG,IAAI,iBAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChG,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxF,oEAAoE;IACpE,0CAA0C;IAC1C,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;QACtD,IAAI,CAAC,iBAAiB,EAAE;YAAE,MAAM,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtF,0EAA0E;IAC1E,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC3D,wEAAwE;IACxE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,gBAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAC9H,CAAC;IACD,SAAS,CAAC,QAAQ,EAAE,CAAC;IACrB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACtC,IAAI,gBAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtH,CAAC;IACD,IAAI,gBAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,gBAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,gBAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,gBAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACxH,CAAC;IACD,IAAI,gBAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACvH,CAAC;IACD,IAAI,CAAC,gBAAQ,CAAC,OAAO,IAAI,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAW,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjF,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACtG,CAAC;IACD,SAAS,CAAC,QAAQ,EAAE,CAAC;IACrB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,6BAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACtG,kBAAkB;IAClB,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,qBAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,sBAAe,CAAC,CAAC;IAChD,CAAC,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,+BAAwB,CAAC,CAAC;IACzD,CAAC,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,8BAAuB,CAAC,CAAC;IACzD,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,2BAAoB,CAAC,CAAC;IACnD,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,6BAAsB,CAAC,CAAC;IACrD,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,wBAAiB,CAAC,CAAC;IAChD,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,6BAAe,CAAC,CAAC;IAC7C,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,+BAAiB,CAAC,CAAC;IACjD,CAAC,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,iCAAmB,CAAC,CAAC;IACpD,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,qCAAuB,CAAC,CAAC;IACvD,IAAI,gBAAQ,CAAC,kBAAkB,EAAE,CAAC;QAChC,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,8BAAgB,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,CAAC,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,sCAAwB,CAAC,CAAC;IAC3D,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,0BAAY,CAAC,CAAC;IAC5C,IAAI,IAAA,kCAAoB,GAAE;QACxB,CAAC,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,mCAAqB,CAAC,CAAC;;QAExD,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,gBAAQ,CAAC,YAAY,IAAI,gBAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC3C,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7C,CAAC;IACD,CAAC,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,uBAAY,CAAC,CAAC;IACxC,kBAAkB,EAAE,CAAC;IACrB,iBAAiB;IACjB,IAAI,gBAAQ,CAAC,eAAe,EAAE,CAAC;QAC7B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,gBAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACpH,CAAC;IACD,sBAAsB;IACtB,IAAI,gBAAQ,CAAC,WAAW,IAAI,gBAAQ,CAAC,OAAO,EAAE,CAAC;QAC7C,iBAAiB,EAAE,CAAC;IACtB,CAAC;IACD,kBAAkB;IAClB,IAAI,gBAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,QAAQ,GAAG,mBAAW,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC;QACrF,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,6EAA6E;QAC7E,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAQ,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,8DAA8D;IAC9D,YAAY,EAAE,CAAC;IACf,yDAAyD;IACzD,CAAC;QACC,IAAI,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,yBAAyB;IACzB,CAAC,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnD,CAAC;AAED,sEAAsE;AACtE,kEAAkE;AAClE,SAAS,eAAe;IACtB,IAAI,CAAC,sBAAc;QAAE,OAAO;IAC5B,qEAAqE;IACrE,kEAAkE;IAClE,IAAI,IAAI,GAAG,IAAA,qCAAwB,GAAE,CAAC;IACtC,IAAI,QAAQ,GAAG,sBAAc,CAAC,SAAS,EAAE,YAAY,sBAAY,CAAC;IAClE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAA,2BAAgB,EAAC,sBAAc,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1E,IAAI,IAAI,GAAG,QAAQ,GAAG,EAAE,CAAC;IACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAClC,sBAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/C,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3F,uEAAuE;IACvE,MAAM,MAAM,GAAG,2BAAe,CAAC,mBAAW,CAAC;WACtC,2BAAe,CAAC,IAAA,sBAAe,EAAC,mBAAW,CAAC,CAAC;WAC7C,2BAAe,CAAC,IAAA,0BAAmB,EAAC,mBAAW,CAAC,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IAE5C,4EAA4E;IAC5E,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,EAAE,IAAI,oBAAS;QAAE,KAAK,MAAM,CAAC,IAAI,oBAAS,CAAC,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;QACxC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAC/D,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC;IACF,IAAI,gBAAQ,CAAC,oBAAoB,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAI,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YACrD,IAAI,IAAI,GAAG,IAAI,IAAI,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;YACrC,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,MAAM,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC;gBAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,iEAAiE;IACjE,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;IAC1C,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAC,OAAA,CAAC,CAAA,MAAA,IAAA,sBAAW,EAAC,CAAC,CAAC,0CAAE,IAAI,KAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA,MAAA,IAAA,sBAAW,EAAC,CAAC,CAAC,0CAAE,IAAI,KAAI,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;IAE3F,MAAM,aAAa,GAAG;;qCAEa,GAAG,CAAC,IAAI,CAAC;QACtC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;QACjG,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,qCAAqC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;QACvI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;aACrH,CAAC;IAEZ,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACjC,IAAI,IAAI,GAAG,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QACtC,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACrG,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACvC,OAAO,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC;IACvG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP,IAAI,EAAE;gBACJ,KAAK,EAAE,gBAAgB;gBACvB,SAAS,EAAE,UAAU;gBACrB,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC;aAC/D;YACD,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE;SACjD;QACD,OAAO,EAAE;;iCAEoB,GAAG,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,mBAAW,CAAC;QACtE,aAAa;;;;UAIX,SAAS;;WAER;KACR,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,2EAA2E;AAC3E,uEAAuE;AACvE,mEAAmE;AACnE,sBAAsB;AACtB,SAAS,YAAY;IACnB,IAAI,IAAI,GAAG,gBAAQ,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,IAAI,GAAG,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,wEAAwE;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,GAAW,EAAE,EAAE;QAC1D,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,6EAA6E;QAC7E,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC;IACF,qCAAqC;IACrC,IAAI,IAAI,CAAC,OAAO;QAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzF,mDAAmD;IACnD,MAAM,WAAW,GAAG,IAAA,iCAAsB,EAAC,IAAI,EAAE,mBAAW,CAAC,CAAC;IAC9D,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,mBAAW,EAC3C,IAAI,CAAC,IAAI,GAAG,YAAY,GAAG,aAAa,EACxC,WAAW,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,YAAY,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IACtC,IAAI,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IACpC,IAAI,aAAa,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IACjC,IAAI,CAAC,gBAAQ,CAAC,iBAAiB;QAAE,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,mCAAmC;IAC3F,IAAI,aAAa,GAAG,GAAG,EAAE;QACvB,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;QACxB,MAAM,EAAE,CAAC;QACT,IAAI,KAAK,GAAW,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,IAAI,IAAI,GAAW,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;YACrD,aAAa,EAAE,CAAC;YAChB,eAAe,CAAC,gBAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,MAAM,EAAE,CAAC;QACT,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACxB,aAAa,EAAE,CAAC;YAChB,eAAe,CAAC,gBAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE;QACjC,MAAM,EAAE,CAAC;QACT,IAAI,KAAK,GAAW,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,aAAa,EAAE,CAAC;YAChB,eAAe,CAAC,gBAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IACF,aAAa,CAAC,oBAAoB,GAAG,GAAG,EAAE;QACxC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;QAC/C,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7C,aAAa,EAAE,CAAC;QAChB,aAAa,CAAC,gBAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvC,2CAA2C;IAC3C,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC7H,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC;QACnC,MAAM,IAAA,iBAAU,EAAC,0BAA0B,CAAC,CAAC;QAC7C,IAAI,MAAM,GAAG,mBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,GAAG;YACV;gBACE,OAAO,EAAE,sBAAsB;gBAC/B,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,+BAA+B,GAAG,mBAAW,GAAG,gEAAgE;aAC1H;YACD;gBACE,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,gGAAgG;aAC1G;YACD;gBACE,OAAO,EAAE,YAAY;gBACrB,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,oFAAoF;oBACpG,CAAC,CAAC,4EAA4E;aACjF;YACD;gBACE,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,4EAA4E;aACtF;YACD;gBACE,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,QAAQ;gBACnB,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,wGAAwG;aAClH;YACD;gBACE,OAAO,EAAE,qBAAqB;gBAC9B,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE,yFAAyF;aACnG;YACD;gBACE,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,6KAA6K;aACvL;SACF,CAAC;QACF,IAAI,IAAA,uBAAgB,GAAE,EAAE,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC;gBACZ,OAAO,EAAE,qBAAqB;gBAC9B,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,oKAAoK;aAC9K,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC;gBACT,OAAO,EAAE,kBAAkB;gBAC3B,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,qFAAqF;aAC/F,CAAC,CAAC;QACL,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,OAAO,CAAC;gBACZ,OAAO,EAAE,qBAAqB;gBAC9B,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,qBAAqB;gBAC5B,OAAO,EAAE,4FAA4F;aACtG,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CAAC;gBACZ,OAAO,EAAE,qBAAqB;gBAC9B,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,kCAAkC;gBACzC,OAAO,EAAE,wKAAwK;aAClL,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;YAClB,UAAU,EAAE,KAAK;YACjB,gBAAgB;YAChB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,GAAG,EAAE;gBACV,SAAS,CAAC,aAAa,EAAE,CAAC;gBAC1B,wCAAwC;YAC1C,CAAC;SACF,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,mDAAmD;AAEnD,SAAS,kBAAkB,CAAC,QAAQ;IAClC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;IAChE,gDAAgD;IAChD,IAAI,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,oBAAoB,EAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC;QAC5C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,YAAY,aAAO,EAAE,CAAC;YAC1C,aAAa,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,IAAA,uBAAgB,GAAE,EAAE,CAAC;YAC9B,0CAA0C;YAC1C,IAAA,iCAAmB,EAAC,GAAG,EAAE,GAAG,EAAE;gBAC5B,QAAQ,EAAE,mBAAW;gBACrB,MAAM,EAAE,sBAAc,CAAC,CAAC,CAAC,sBAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC1D,MAAM,EAAE,sBAAc,CAAC,UAAU,IAAI,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,GAAa;IACzC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC;IACT,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,wBAAwB;AAC1B,CAAC;AAED,eAAe;AACf,SAAS,mBAAmB;IAC1B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACrD,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACxD,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,eAAe,CAAC,cAAwB,EAAE,cAAmB;IAC3E,IAAI,cAAc,EAAE,CAAC;QACnB,UAAE,GAAG,cAAc,CAAC;IACtB,CAAC;IACD,qBAAqB,EAAE,CAAC;IACxB,IAAI,cAAc;QAChB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,UAAE,CAAC,CAAC,CAAC;;QAE3C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,UAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,mBAAW;QAAE,UAAE,CAAC,QAAQ,GAAG,mBAAW,CAAC;IAC3C,OAAO,UAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB;IACvC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,UAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,8EAA8E;IAC9E,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IACzD,2EAA2E;IAC3E,sCAAsC;IACtC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,OAAO,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IACD,6DAA6D;IAC7D,IAAI,sBAAc,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;QAAE,OAAO,GAAG,GAAG,EAAE,CAAC;IACvD,kDAAkD;IAClD,IAAI,sBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB;IAC/B,SAAS,YAAY;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,KAAK,sBAAc,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC5C,sBAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,4EAA4E;YAC5E,MAAM,QAAQ,GAAG,uBAAe,CAAC,QAAQ,CAAC;YAC1C,IAAI,QAAQ,IAAI,sBAAc,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC;gBACzD,sBAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAmB;IAChD,IAAI,WAAW,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,IAAI,uBAAe,CAAC,QAAQ,CAAC;QAC7E,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAC5C,sBAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACjD,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,IAAI,gBAAQ,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7E,MAAM,EAAE,CAAC;YACT,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,CAAC,eAAe,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YAC3D,OAAO,EAAE,CAAC;YACV,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACxB,IAAI,gBAAQ,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YACrC,MAAM,EAAE,CAAC;YACT,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACrC,IAAI,gBAAQ,IAAI,gBAAQ,CAAC,MAAM;YAAE,UAAU,CAAC,gBAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sCAAsC;AACtC,SAAS,cAAc,CAAC,GAAW;IACjC,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,KAAK,IAAI,IAAI,IAAI,4BAAiB,CAAC,IAAA,0BAAmB,EAAC,mBAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3E,IAAI,GAAG,GAAG,CAAC,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzD,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,wDAAwD;YACxD,IAAI,GAAG,GAAG,CAAC,CAAC,6BAA6B,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;gBACjE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;oBAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO;IACjC,IAAI,mBAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,4CAA4C;IAC3F,IAAI,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,gFAAgF;gBAChF,gFAAgF;gBAChF,8CAA8C;gBAC9C,gBAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC,eAAS,CAAC,mBAAW,CAAC;QAAE,MAAM,KAAK,CAAC,oBAAoB,GAAG,mBAAW,GAAG,IAAI,CAAC,CAAC;IACpF,IAAI,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,GAAG,IAAA,wBAAiB,EAAC,UAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAClD,gBAAQ,GAAG,IAAI,eAAS,CAAC,mBAAW,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,aAAa,EAAE,CAAC;IAChB,aAAa,GAAG,IAAI,4BAAiB,CAAC,gBAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,gBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,IAAI,CAAC,UAAE,CAAC,IAAI,EAAE,CAAC;QACb,mCAAmC;QACnC,IAAI,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QACvC,iDAAiD;QACjD,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,eAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,UAAE,CAAC,IAAI,GAAG,WAAW,IAAI,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAA,oBAAU,EAAC,sFAAsF,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,mBAAmB;IACnB,IAAI,mBAAW,IAAI,KAAK,IAAI,UAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvF,UAAE,CAAC,IAAI,IAAI,IAAI,CAAC;IAClB,CAAC;IACD,+BAA+B;IAC/B,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IACvC,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,CAAC;IACtB,IAAA,oBAAc,EAAC,aAAa,CAAC,CAAC;IAC9B,IAAA,wBAAc,GAAE,CAAC;IACjB,MAAM,gBAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,MAAM,mBAAmB,EAAE,CAAC;IAC5B,MAAM,WAAW,EAAE,CAAC;IACpB,MAAM,WAAW,CAAC,UAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACnC,wBAAwB,EAAE,CAAC;IAC3B,gBAAQ,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpE,kBAAkB,EAAE,CAAC;IACrB,0EAA0E;IAC1E,IAAI,CAAC,0BAAc,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;QAClD,IAAA,6BAAe,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAA,kCAAoB,EAAC,kBAAkB,CAAC,CAAC;QACzC,IAAA,gCAAkB,EAAC,GAAG,EAAE;YACtB,0EAA0E;YAC1E,iFAAiF;YACjF,IAAI,GAAG,GAAG,sBAAc,CAAC,MAAM,CAAC,sBAAc,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,YAAY,GAAG,GAAG,IAAI,QAAQ,CAAC,aAAa,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACzF,IAAI,GAAG,GAAG,sBAAc,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,SAAS,GAAG,YAAY,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,kFAAkF;YAClF,OAAO,CAAC,GAAG,iBAAiB,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,uDAAuD;QACvD,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,gCAAkB,GAAE,CAAC,CAAC;QAC/D,IAAA,gCAAkB,GAAE,CAAC;QACrB,IAAA,2BAAa,EAAC,IAAA,uBAAY,GAAE,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IACD,oBAAoB,EAAE,CAAC;IACvB,gBAAgB,EAAE,CAAC;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,oBAAoB,EAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,CAAC;IACvB,CAAC;IACD,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB;IAC3B,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,MAAM,GAAG,IAAA,eAAO,EAAC,mBAAW,CAAC,CAAC;IAClC,KAAK,IAAI,IAAI,IAAI,aAAK,EAAE,CAAC;QACvB,IAAI,IAAI,GAAG,CAAC,CAAC,yCAAyC,CAAC;aACpD,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;aACpD,WAAW,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;aACtD,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,kBAAkB;IAClB,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;IAC/C,IAAA,uBAAa,EAAC,IAAI,CAAC,CAAC;IACpB,IAAA,oBAAa,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,GAAG,IAAA,yBAAkB,EAAC,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAA,uBAAa,EAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC9B,uBAAuB;gBACzB,CAAC;qBAAM,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;oBAC/E,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO,UAAE,CAAC,SAAS,CAAC;gBACpB,UAAE,CAAC,IAAI,GAAG,IAAI,CAAC;gBACf,eAAe,EAAE,CAAC;gBAClB,oBAAoB,EAAE,CAAC;YACzB,CAAC;oBAAS,CAAC;gBACT,IAAA,uBAAa,EAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAA,oBAAU,EAAC,uCAAuC,GAAG,GAAG,CAAC,CAAC;YAC1D,IAAA,uBAAa,EAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,MAAM,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,gDAAgD;IACnE,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,KAAK,CAAC,CAAC,8BAA8B;IAC/C,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,UAAE,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACpC,IAAI,OAAO,GAAG,UAAE,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI;YAAE,MAAM;QAC3C,IAAI,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,KAAK,GAAG,OAAO,CAAC;YACpB,IAAI,UAAE,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzC,KAAK,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,OAAO,CAAC,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBAC1E,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,UAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QAAC,CAAC,CAAC,oBAAoB;QACpD,OAAO,UAAE,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAChC,OAAO,UAAE,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAChC,OAAO,UAAE,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,UAAE,CAAC,MAAM,CAAC;IACjB,OAAO,UAAE,CAAC,KAAK,CAAC;IAChB,eAAe,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,IAAI,GAAG,gBAAQ,CAAC,eAAe,IAAI,gBAAQ,CAAC,eAAe,EAAE,CAAC;IAClE,IAAI,QAAQ,GAAG,CAAC,CAAC,oBAAoB,GAAG,mBAAW,GAAG,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAC3C,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IACzC,CAAC;IACD,aAAa,GAAG,IAAI,IAAI,mBAAW,CAAC;IACpC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,kBAAkB;IAChC,0EAA0E;IAC1E,mBAAW,GAAG,UAAE,CAAC,QAAQ,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC3D,eAAO,GAAG,UAAE,CAAC,IAAI,CAAC;IAClB,4EAA4E;IAC5E,IAAI,CAAC,UAAE,CAAC,IAAI,IAAI,CAAC,UAAE,CAAC,IAAI;QACtB,eAAO,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAW,CAAC,CAAC;IACjD,oBAAoB;IACpB,IAAI,eAAe,IAAI,eAAO,IAAI,eAAO,KAAK,GAAG,EAAE,CAAC;QAClD,IAAI,IAAI,GAAG,IAAA,mBAAQ,GAAE,CAAC,eAAO,CAAC,CAAC;QAC/B,gDAAgD;QAChD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,mBAAW,EAAE,UAAE,EAAE,IAAI,CAAC,CAAC;YACnC,UAAE,CAAC,IAAI,GAAG,eAAO,CAAC;YAClB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,UAAE,CAAC,QAAQ;gBAClC,UAAE,CAAC,QAAQ,GAAG,mBAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAE,CAAC,IAAI;gBAC3B,UAAE,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1B,sEAAsE;YACtE,uCAAuC;QACzC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,eAAO,GAAG,EAAE,CAAC;QACb,OAAO,UAAE,CAAC,IAAI,CAAC;IACjB,CAAC;IACD,uBAAuB;IACvB,IAAI,CAAC,mBAAW,EAAE,CAAC;QACjB,IAAI,OAAO;YAAE,IAAA,oBAAU,EAAC,+CAA+C,CAAC,CAAC;QACzE,mBAAW,GAAG,UAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;IACpC,CAAC;AACH,CAAC;AAED,QAAQ;AACD,KAAK,UAAU,OAAO;IAC3B,sBAAsB;IACtB,IAAI,UAAE,CAAC,SAAS,EAAE,CAAC;QACjB,IAAA,8BAAuB,EAAC,UAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,oEAAoE;IACpE,2DAA2D;IAC3D,IAAI,eAAe,IAAI,UAAE,CAAC,IAAI,IAAI,CAAC,IAAA,mBAAQ,GAAE,CAAC,UAAE,CAAC,IAAI,CAAC,IAAI,UAAE,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QAC1E,IAAI,OAAO,CAAC,eAAe,UAAE,CAAC,IAAI,iDAAiD,CAAC,EAAE,CAAC;YACrF,IAAA,8BAAuB,EAAC,qBAAqB,GAAG,UAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,OAAO,UAAE,CAAC,IAAI,CAAC,CAAC,wBAAwB;IAC1C,CAAC;IACD,kBAAkB,EAAE,CAAC;IACrB,IAAA,oBAAW,EAAC;QACV,aAAa,EAAE,GAAG,EAAE,CAAC,mBAAW;QAChC,OAAO,EAAE,OAAO;QAChB,eAAe,EAAE,eAAe;QAChC,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI,gBAAQ,IAAI,gBAAQ,CAAC,MAAM;YAAE,gBAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7E,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,sBAAc;YAAE,sBAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrE,oEAAoE;QACpE,iEAAiE;QACjE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE;gBAAE,OAAO;YAC/B,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC;oBACT,iBAAiB,GAAG,IAAI,CAAC,CAAC,mCAAmC;gBAC/D,CAAC;YACH,CAAC;iBAAM,IAAI,iBAAiB,EAAE,CAAC;gBAC7B,iBAAiB,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,gBAAQ,CAAC,SAAS,EAAE;oBAAE,OAAO,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,uCAAuC;IACvC,gBAAQ,GAAG,eAAO,IAAI,IAAA,sBAAe,EAAC,mBAAW,CAAC,CAAC;IACnD,mBAAmB;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,gBAAQ,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAQ,CAAC;IACtE,CAAC;IACD,eAAe;IACf,KAAK,GAAG,IAAA,kCAAwB,EAAC,gBAAQ,CAAC,CAAC;IAC3C,wBAAwB;IACxB,IAAI,UAAE,CAAC,SAAS,EAAE,CAAC;QACjB,eAAe,CAAC,UAAE,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,CAAC,mBAAmB;IAC7B,CAAC;IACD,uBAAuB;IACvB,IAAI,UAAE,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IACD,iCAAiC;IACjC,oBAAoB,EAAE,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAA,0BAAmB,EAAC,mBAAW,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,mBAAW,CAAC,CAAC,CAAC,wCAAwC;QACvF,MAAM,aAAa,EAAE,CAAC;QACtB,sBAAc,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,mBAAW,GAAG,MAAM,GAAG,CAAC,eAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,eAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtH,sBAAc,CAAC,WAAW,CAAC,sBAAc,CAAC,WAAW,EAAE,IAAI,uBAAe,CAAC,QAAQ,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,IAAA,oBAAU,EAAC,YAAY,GAAG,mBAAW,GAAG,mBAAmB,CAAC,CAAC;IAC/D,CAAC;YAAS,CAAC;QACT,YAAY,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED,wCAAwC;AAExC,SAAgB,YAAY,CAAC,IAAY,EAAE,IAAc;IACvD,gBAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,gBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,gBAAQ,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC;AAED,SAAgB,eAAe,CAAC,GAAY;IAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;IACtC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,yEAAyE;IACzE,yDAAyD;IACzD,sBAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,gBAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,gBAAQ,CAAC,SAAS,EAAE,CAAC;QACnC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,8DAA8D;QAC9D,6BAA6B;IAC/B,CAAC;AACH,CAAC;AAKM,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,IAAI,MAAM,GAAG,uBAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,sBAAc,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AACD,SAAS,kBAAkB;IACzB,IAAI,UAAU,IAAI,cAAc,YAAY,UAAU,EAAE,CAAC;QACvD,IAAI,MAAM,GAAG,IAAA,wBAAiB,EAAC,sBAAsB,EAAE,CAAC,CAAC;QACzD,IAAI,MAAM,GAAG,CAAC,gBAAQ,CAAC,eAAe,IAAI,gBAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;eAC9E,GAAG,GAAG,IAAA,sBAAe,EAAC,mBAAW,CAAC,GAAG,MAAM,CAAC;QACjD,wBAAwB,CAAC,WAAW,CAAC,OAAO,MAAM,GAAG,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,WAAW;AAEX,SAAS,kBAAkB;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC5D,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,OAAO,EAAE,CAAC;gBACV,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,eAAe,EAAE,IAAI,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC9E,MAAM,EAAE,CAAC;YACX,CAAC;YACD,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,eAAe,EAAE,IAAI,CAAC,gBAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC9E,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;AAC/D,CAAC;AAED,qCAAqC;AACrC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;IACnC,uDAAuD;IACvD,IAAI,OAAO,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC1D,kBAAkB,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ide/ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/kim1-LJE4QR3M.js b/gen/kim1-AISOICBO.js similarity index 97% rename from gen/kim1-LJE4QR3M.js rename to gen/kim1-AISOICBO.js index 5e873fb9..51646c77 100644 --- a/gen/kim1-LJE4QR3M.js +++ b/gen/kim1-AISOICBO.js @@ -1,2 +1,2 @@ -import{I as y,n as l,r as V}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{P as p,ba as e,g as h,ga as F,ha as f,l as I,m as x}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var B=[e.VK_DELETE,e.VK_ENTER,e.VK_RIGHT,e.VK_F7,e.VK_F1,e.VK_F3,e.VK_F5,e.VK_DOWN,e.VK_3,e.VK_W,e.VK_A,e.VK_4,e.VK_Z,e.VK_S,e.VK_E,e.VK_SHIFT,e.VK_5,e.VK_R,e.VK_D,e.VK_6,e.VK_C,e.VK_F,e.VK_T,e.VK_X,e.VK_7,e.VK_Y,e.VK_G,e.VK_8,e.VK_B,e.VK_H,e.VK_U,e.VK_V,e.VK_9,e.VK_I,e.VK_J,e.VK_0,e.VK_M,e.VK_K,e.VK_O,e.VK_N,null,e.VK_P,e.VK_L,e.VK_MINUS,e.VK_PERIOD,null,null,e.VK_COMMA,null,null,e.VK_SEMICOLON,e.VK_HOME,e.VK_SHIFT,e.VK_EQUALS,e.VK_TILDE,e.VK_SLASH,e.VK_1,e.VK_LEFT,e.VK_CONTROL,e.VK_2,e.VK_SPACE,e.VK_ALT,e.VK_Q,null],A=0,a=class{constructor(){this.regs=new Uint8Array(16);this.ina=0;this.inb=0}read(o){return this.regs[o]}write(o,r){this.regs[o]=r}input_a(){return this.ina&~this.regs[1]}input_b(){return this.inb&~this.regs[1]}output_a(){return this.regs[0]^255|this.regs[1]}output_b(){return this.regs[2]^255|this.regs[3]}},g=class extends V{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=4096;this.cpu=new l;this.ram=new Uint8Array(6144);this.rriot1=new a;this.rriot2=new a;this.digits=[];this.read=f([[5888,5951,15,r=>this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<>3,u=s&7;i&1?this.inputs[A+K]|=1<this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<>3,u=s&7;i&1?this.inputs[A+K]|=1<>1}var nt=V([[s.SELECT,0,1],[s.START,0,4],[s.VK_2,0,8],[s.UP,1,1],[s.DOWN,1,2],[s.LEFT,1,4],[s.RIGHT,1,8],[s.A,1,16],[s.B,1,32],[s.P2_UP,2,1],[s.P2_DOWN,2,2],[s.P2_LEFT,2,4],[s.P2_RIGHT,2,8],[s.P2_A,2,16],[s.P2_B,2,32]]);var k=57344,q=k,y=16384,lt=q+y,Q=32768,ot=16384,pt=k+y+Q+ot,A=class extends D{constructor(){super();this.cpuFrequency=W;this.canvasWidth=T;this.numVisibleScanlines=Z;this.numTotalScanlines=g;this.cpuCyclesPerLine=it;this.defaultROMSize=pt;this.sampleRate=K*g*2;this.cpu=new v;this.ram=new Uint8Array(2048);this.sprram=new Uint8Array(512);this.vram=new Uint8Array(2048);this.palram=new Uint8Array(128);this.palette=new Uint32Array(64);this.interruptEnabled=!1;this.watchdog_counter=O;this.ctcVector=0;this.read=w([[0,57343,65535,t=>this.rom?this.rom[t]:0],[57344,59391,2047,t=>this.ram[t]],[59392,61439,511,t=>this.sprram[t]],[61440,63487,2047,t=>this.vram[t]],[63488,65535,127,t=>this.palram[t]]]);this.write=w([[57344,59391,2047,(t,e)=>{this.ram[t]=e}],[59392,61439,511,(t,e)=>{this.sprram[t]=e}],[61440,63487,2047,(t,e)=>{this.vram[t]=e}],[63488,65535,127,(t,e)=>{this.palram[t]=e,this.updatePalette(t)}]]);var t=new Y;this.psg1=new P(t),this.psg2=new P(t),this.audioadapter=new z([this.psg1.psg,this.psg2.psg],2,this.sampleRate),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set([0,0,0,255,255]),this.handler=N(this.inputs,nt)}readConst(t){return this.read(t)}newIOBus(){return{read:t=>(t&=255,t<=4?this.inputs[t]:t>=8&&t<=15?this.inputs[3]:(t>=240&&t<=243,0)),write:(t,e)=>{t&=255,t==224&&(this.watchdog_counter=O),t>=240&&t<=243&&((t&3)==0&&!(e&1)||(e&1)==0&&(this.ctcVector=e&248)),t>=0&&t<=7}}}updatePalette(t){let e=t>>1;if(e>=64)return;let r=this.palram[e*2+1],n=E(r>>6&3),i=E(r&7),a=E(r>>3&7),o=(this.palram[e*2]&1)<<2;n=E(o|r>>6&3),this.palette[e]=4278190080|a<<16|i<<8|n}drawScanline(){let t=this.scanline;if(t>=Z)return;let e=t*T;if((t&1)==0){t>>=1;let r=Math.floor(t/C),n=t%C;if(r>4&3,F=(l&4)!=0,m=(l&8)!=0?15-n:n,u=i*C*2;this.drawTileLine(e+u,x,m,h,F)}}this.drawSpriteScanline(t,e)}drawTileLine(t,e,r,n,i){let a=q,o=y/2,x=e*32+(r<8,r),h=this.rom[a+x]||0,F=this.rom[a+o+x]||0,d=n*4;for(let m=0;m<8;m++){let u=7-m,p=i?14-m*2:m*2,b=h>>u&1|(F>>u&1)<<1;this.pixels[t+p]=this.pixels[t+p+512]=this.pixels[t+p+1]=this.pixels[t+p+513]=this.palette[d+b]}}drawSpriteScanline(t,e){let r=lt,n=Q/4;for(let i=31;i>=0;i--){let a=i*4,o=this.sprram[a]-2&255;o=496-o;let l=this.sprram[a+1],x=this.sprram[a+2]|(l&8?256:0),h=this.sprram[a+3]-3&511,F=(l&16)!=0,d=(l&32)!=0,u=16+(l&3)*16,p=t-o;if(p<0||p>=32)continue;let b=d?31-p:p,J=x*128+b;for(let f=0;f<4;f++){let M=J+f*32,$=this.rom[r+M]||0,tt=this.rom[r+n+M]||0,et=this.rom[r+n*2+M]||0,rt=this.rom[r+n*3+M]||0;for(let _=0;_<8;_++){let S=7-_,L=$>>S&1|(tt>>S&1)<<1|(et>>S&1)<<2|(rt>>S&1)<<3;if(L==0)continue;let R;F?R=h+31-(f*8+_):R=h+f*8+_,R>=0&&R>1}var nt=V([[s.SELECT,0,1],[s.START,0,4],[s.VK_2,0,8],[s.UP,1,1],[s.DOWN,1,2],[s.LEFT,1,4],[s.RIGHT,1,8],[s.A,1,16],[s.B,1,32],[s.P2_UP,2,1],[s.P2_DOWN,2,2],[s.P2_LEFT,2,4],[s.P2_RIGHT,2,8],[s.P2_A,2,16],[s.P2_B,2,32]]);var k=57344,q=k,y=16384,lt=q+y,Q=32768,ot=16384,pt=k+y+Q+ot,A=class extends D{constructor(){super();this.cpuFrequency=W;this.canvasWidth=T;this.numVisibleScanlines=Z;this.numTotalScanlines=g;this.cpuCyclesPerLine=it;this.defaultROMSize=pt;this.sampleRate=K*g*2;this.cpu=new v;this.ram=new Uint8Array(2048);this.sprram=new Uint8Array(512);this.vram=new Uint8Array(2048);this.palram=new Uint8Array(128);this.palette=new Uint32Array(64);this.interruptEnabled=!1;this.watchdog_counter=O;this.ctcVector=0;this.read=w([[0,57343,65535,t=>this.rom?this.rom[t]:0],[57344,59391,2047,t=>this.ram[t]],[59392,61439,511,t=>this.sprram[t]],[61440,63487,2047,t=>this.vram[t]],[63488,65535,127,t=>this.palram[t]]]);this.write=w([[57344,59391,2047,(t,e)=>{this.ram[t]=e}],[59392,61439,511,(t,e)=>{this.sprram[t]=e}],[61440,63487,2047,(t,e)=>{this.vram[t]=e}],[63488,65535,127,(t,e)=>{this.palram[t]=e,this.updatePalette(t)}]]);var t=new Y;this.psg1=new P(t),this.psg2=new P(t),this.audioadapter=new z([this.psg1.psg,this.psg2.psg],2,this.sampleRate),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set([0,0,0,255,255]),this.handler=N(this.inputs,nt)}readConst(t){return this.read(t)}newIOBus(){return{read:t=>(t&=255,t<=4?this.inputs[t]:t>=8&&t<=15?this.inputs[3]:(t>=240&&t<=243,0)),write:(t,e)=>{t&=255,t==224&&(this.watchdog_counter=O),t>=240&&t<=243&&((t&3)==0&&!(e&1)||(e&1)==0&&(this.ctcVector=e&248)),t>=0&&t<=7}}}updatePalette(t){let e=t>>1;if(e>=64)return;let r=this.palram[e*2+1],n=E(r>>6&3),i=E(r&7),a=E(r>>3&7),o=(this.palram[e*2]&1)<<2;n=E(o|r>>6&3),this.palette[e]=4278190080|a<<16|i<<8|n}drawScanline(){let t=this.scanline;if(t>=Z)return;let e=t*T;if((t&1)==0){t>>=1;let r=Math.floor(t/C),n=t%C;if(r>4&3,F=(l&4)!=0,m=(l&8)!=0?15-n:n,u=i*C*2;this.drawTileLine(e+u,x,m,h,F)}}this.drawSpriteScanline(t,e)}drawTileLine(t,e,r,n,i){let a=q,o=y/2,x=e*32+(r<8,r),h=this.rom[a+x]||0,F=this.rom[a+o+x]||0,d=n*4;for(let m=0;m<8;m++){let u=7-m,p=i?14-m*2:m*2,b=h>>u&1|(F>>u&1)<<1;this.pixels[t+p]=this.pixels[t+p+512]=this.pixels[t+p+1]=this.pixels[t+p+513]=this.palette[d+b]}}drawSpriteScanline(t,e){let r=lt,n=Q/4;for(let i=31;i>=0;i--){let a=i*4,o=this.sprram[a]-2&255;o=496-o;let l=this.sprram[a+1],x=this.sprram[a+2]|(l&8?256:0),h=this.sprram[a+3]-3&511,F=(l&16)!=0,d=(l&32)!=0,u=16+(l&3)*16,p=t-o;if(p<0||p>=32)continue;let b=d?31-p:p,J=x*128+b;for(let f=0;f<4;f++){let M=J+f*32,$=this.rom[r+M]||0,tt=this.rom[r+n+M]||0,et=this.rom[r+n*2+M]||0,rt=this.rom[r+n*3+M]||0;for(let _=0;_<8;_++){let S=7-_,L=$>>S&1|(tt>>S&1)<<1|(et>>S&1)<<2|(rt>>S&1)<<3;if(L==0)continue;let R;F?R=h+31-(f*8+_):R=h+f*8+_,R>=0&&R{let e=s>>14<<1,D=this.slotmask>>e&3,g=this.slots[D];return g?g.read(s):0};this.write=(s,e)=>{let D=s>>14<<1,g=this.slotmask>>D&3,B=this.slots[g];B&&B.write(s,e)};this.init(this,this.newIOBus(),new Q(new U)),this.bios=new E().decode(O(atob(h))),this.bios[3541]=0,this.bios[3542]=0,this.bios[3543]=0,this.slots=[{read:s=>this.bios[s]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.ram[s]|0,write:(s,e)=>{this.ram[s]=e}}]}loadBIOS(s){this.bios=s}getKeyboardMap(){return n}getKeyboardFunction(){return(s,e,D,g)=>{for(var B=F,T=0;T>3,f=7-(T&7);g&1?this.inputs[i+R]|=1<{switch(s&=255,s){case 152:return this.vdp.readData();case 153:return this.vdp.readStatus();case 162:return this.psg.currentRegister()==14?~this.inputs[a]:this.psg.readData();case 168:return this.slotmask;case 169:return~this.inputs[i+(this.ppi_c&15)];case 170:return this.ppi_c}return 0},write:(s,e)=>{switch(s&=255,e&=255,s){case 152:this.vdp.writeData(e);break;case 153:this.vdp.writeAddress(e);break;case 168:this.slotmask=e;break;case 170:this.ppi_c=e;break;case 171:let D=e>>1&7;this.ppi_c=this.ppi_c&~(1<{let e=s>>14<<1,D=this.slotmask>>e&3,g=this.slots[D];return g?g.read(s):0};this.write=(s,e)=>{let D=s>>14<<1,g=this.slotmask>>D&3,B=this.slots[g];B&&B.write(s,e)};this.init(this,this.newIOBus(),new Q(new U)),this.bios=new E().decode(O(atob(h))),this.bios[3541]=0,this.bios[3542]=0,this.bios[3543]=0,this.slots=[{read:s=>this.bios[s]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.ram[s]|0,write:(s,e)=>{this.ram[s]=e}}]}loadBIOS(s){this.bios=s}getKeyboardMap(){return n}getKeyboardFunction(){return(s,e,D,g)=>{for(var B=F,T=0;T>3,f=7-(T&7);g&1?this.inputs[i+R]|=1<{switch(s&=255,s){case 152:return this.vdp.readData();case 153:return this.vdp.readStatus();case 162:return this.psg.currentRegister()==14?~this.inputs[a]:this.psg.readData();case 168:return this.slotmask;case 169:return~this.inputs[i+(this.ppi_c&15)];case 170:return this.ppi_c}return 0},write:(s,e)=>{switch(s&=255,e&=255,s){case 152:this.vdp.writeData(e);break;case 153:this.vdp.writeAddress(e);break;case 168:this.slotmask=e;break;case 170:this.ppi_c=e;break;case 171:let D=e>>1&7;this.ppi_c=this.ppi_c&~(1<this.rom?this.rom[e]:0],[8192,16383,8191,e=>this.ram[e]]]);this.write=a([[8192,9215,1023,(e,s)=>{this.ram[e]=s}],[9216,16383,8191,(e,s)=>{this.ram[e]=s;for(var l=e-1024<<3,r=0;r<8;r++)this.pixels[l+r]=s&1<{switch(e&=3,e){case 0:case 1:case 2:return this.inputs[e];case 3:return this.bitshift_register>>8-this.bitshift_offset&255}return 0},write:(e,s)=>{switch(e&=7,s&=255,e){case 2:this.bitshift_offset=s&7;break;case 3:case 5:break;case 4:this.bitshift_register=this.bitshift_register>>8|s<<8;break;case 6:this.watchdog_counter=p;break}}}}startScanline(){}drawScanline(){this.scanline==95?this.interrupt(207):this.scanline==223&&this.interrupt(215)}interrupt(e){this.probe.logInterrupt(e),this.cpu.interrupt(e)}advanceFrame(e){return this.watchdog_counter--<=0&&(console.log("WATCHDOG FIRED"),this.reset()),super.advanceFrame(e)}loadState(e){super.loadState(e),this.bitshift_register=e.bsr,this.bitshift_offset=e.bso,this.watchdog_counter=e.wdc}saveState(){var e=super.saveState();return e.bsr=this.bitshift_register,e.bso=this.bitshift_offset,e.wdc=this.watchdog_counter,e}reset(){super.reset(),this.watchdog_counter=p}};var S=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shifter.c",name:"Sprite w/ Bit Shifter"},{id:"game2.c",name:"Cosmic Impalas"}],n=class extends u{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Frame Buffer",start:9216,size:7168,type:"ram"}]}}}newMachine(){return new i}getPresets(){return S}readAddress(e){return this.machine.read(e)}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080"}};f.mw8080bw=n; -//# sourceMappingURL=mw8080bw-ZZ2TCUYV.js.map +import{L as u,c as o,v as m}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P as f,ba as t,ca as c,ea as h,ha as a}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var _=h([[t.A,1,16],[t.LEFT,1,32],[t.RIGHT,1,64],[t.P2_A,2,16],[t.P2_LEFT,2,32],[t.P2_RIGHT,2,64],[t.SELECT,1,1],[t.START,1,4],[t.P2_START,1,2]]),p=256,w=4293848814,b=4278190080,i=class extends m{constructor(){super();this.cpuFrequency=1996800;this.canvasWidth=256;this.numTotalScanlines=262;this.numVisibleScanlines=224;this.cpuCyclesPerLine=Math.floor(1996800/(262*60));this.defaultROMSize=8192;this.rotate=-90;this.sampleRate=1;this.bitshift_offset=0;this.bitshift_register=0;this.cpu=new o;this.ram=new Uint8Array(8192);this.read=a([[0,8191,8191,e=>this.rom?this.rom[e]:0],[8192,16383,8191,e=>this.ram[e]]]);this.write=a([[8192,9215,1023,(e,s)=>{this.ram[e]=s}],[9216,16383,8191,(e,s)=>{this.ram[e]=s;for(var l=e-1024<<3,r=0;r<8;r++)this.pixels[l+r]=s&1<{switch(e&=3,e){case 0:case 1:case 2:return this.inputs[e];case 3:return this.bitshift_register>>8-this.bitshift_offset&255}return 0},write:(e,s)=>{switch(e&=7,s&=255,e){case 2:this.bitshift_offset=s&7;break;case 3:case 5:break;case 4:this.bitshift_register=this.bitshift_register>>8|s<<8;break;case 6:this.watchdog_counter=p;break}}}}startScanline(){}drawScanline(){this.scanline==95?this.interrupt(207):this.scanline==223&&this.interrupt(215)}interrupt(e){this.probe.logInterrupt(e),this.cpu.interrupt(e)}advanceFrame(e){return this.watchdog_counter--<=0&&(console.log("WATCHDOG FIRED"),this.reset()),super.advanceFrame(e)}loadState(e){super.loadState(e),this.bitshift_register=e.bsr,this.bitshift_offset=e.bso,this.watchdog_counter=e.wdc}saveState(){var e=super.saveState();return e.bsr=this.bitshift_register,e.bso=this.bitshift_offset,e.wdc=this.watchdog_counter,e}reset(){super.reset(),this.watchdog_counter=p}};var S=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shifter.c",name:"Sprite w/ Bit Shifter"},{id:"game2.c",name:"Cosmic Impalas"}],n=class extends u{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Frame Buffer",start:9216,size:7168,type:"ram"}]}}}newMachine(){return new i}getPresets(){return S}readAddress(e){return this.machine.read(e)}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080"}};f.mw8080bw=n; +//# sourceMappingURL=mw8080bw-3UNGEVVC.js.map diff --git a/gen/mw8080bw-ZZ2TCUYV.js.map b/gen/mw8080bw-3UNGEVVC.js.map similarity index 100% rename from gen/mw8080bw-ZZ2TCUYV.js.map rename to gen/mw8080bw-3UNGEVVC.js.map diff --git a/gen/nes-KNS3DDZZ.js b/gen/nes-ID4YFIRR.js similarity index 99% rename from gen/nes-KNS3DDZZ.js rename to gen/nes-ID4YFIRR.js index c4327bfb..eab610e8 100644 --- a/gen/nes-KNS3DDZZ.js +++ b/gen/nes-ID4YFIRR.js @@ -1,4 +1,4 @@ -import{b as qe}from"./chunk-O3XXQS4T.js";import{a as hs}from"./chunk-SRBQMLE7.js";import{a as ze}from"./chunk-UNDRK5PG.js";import{B as Le,k as Ve,p as we,q as Ge,z as De}from"./chunk-FFJHITEL.js";import{i as he}from"./chunk-UXRCACYH.js";import{$ as Oe,L as Me,P as ie,V as se,Y as re,ba as I,da as Ie,ea as Pe,g as pt,n as Ne}from"./chunk-VZWSP3EG.js";import{a as Be,d as S,f as ss,h as rs,i as c}from"./chunk-N7W4C4V2.js";function v(u,t,e,i,s){for(let r=0;r{});var T,Z,k,A,st,M,B,Et,b,y,G,F,as,K,Q,Rt,ns,os,ls,ve,cs,ms,fs,ps,us,xs,ds,Rs,gs,bs,$,ae,ne,Tt,Cs,_s,tt,At,Ss,ys,Ue,Es,et,gt,bt,Ct,ht,it,Ts,As,ks,Fs,_t,St,Bs,Ns,X,Ms,Os,Is,at,oe,le,Ps,Vs,ws,Gs,Ds,Ls,zs,We,qs,vs,ut,kt,nt,ot,lt,ct,mt,ft,yt,D,He,Us,Ws,Hs,Ys,Js,Xs,js,Zs,Ft,ce,Ye=S(()=>{H();T=0,Z=1,k=2,A=3,st=4,M=5,B=6,Et=7,b=8,y=9,G=10,F=11,as=12,K=0,Q=1,Rt=2,ns=3,os=4,ls=5,ve=6,cs=7,ms=8,fs=9,ps=10,us=11,xs=12,ds=13,Rs=14,gs=15,bs=16,$=17,ae=18,ne=19,Tt=20,Cs=21,_s=22,tt=23,At=24,Ss=25,ys=26,Ue=27,Es=28,et=29,gt=30,bt=31,Ct=32,ht=33,it=34,Ts=35,As=36,ks=37,Fs=38,_t=39,St=40,Bs=41,Ns=42,X=43,Ms=44,Os=45,Is=46,at=47,oe=48,le=49,Ps=50,Vs=51,ws=52,Gs=53,Ds=54,Ls=55,zs=56,We=57,qs=58,vs=59,ut=60,kt=61,nt=62,ot=63,lt=64,ct=65,mt=66,ft=67,yt=68,D=69,He=71,Us=72,Ws=73,Hs=74,Ys=75,Js=76,Xs=77,js={ins:-1,mode:0,size:1,cycles:2},Zs={105:{ins:K,mode:M,size:2,cycles:2},101:{ins:K,mode:T,size:2,cycles:3},117:{ins:K,mode:B,size:2,cycles:4},109:{ins:K,mode:A,size:3,cycles:4},125:{ins:K,mode:b,size:3,cycles:4},121:{ins:K,mode:y,size:3,cycles:4},97:{ins:K,mode:G,size:2,cycles:6},113:{ins:K,mode:F,size:2,cycles:5},41:{ins:Q,mode:M,size:2,cycles:2},37:{ins:Q,mode:T,size:2,cycles:3},53:{ins:Q,mode:B,size:2,cycles:4},45:{ins:Q,mode:A,size:3,cycles:4},61:{ins:Q,mode:b,size:3,cycles:4},57:{ins:Q,mode:y,size:3,cycles:4},33:{ins:Q,mode:G,size:2,cycles:6},49:{ins:Q,mode:F,size:2,cycles:5},10:{ins:Rt,mode:st,size:1,cycles:2},6:{ins:Rt,mode:T,size:2,cycles:5},22:{ins:Rt,mode:B,size:2,cycles:6},14:{ins:Rt,mode:A,size:3,cycles:6},30:{ins:Rt,mode:b,size:3,cycles:7},144:{ins:ns,mode:Z,size:2,cycles:2},176:{ins:os,mode:Z,size:2,cycles:2},240:{ins:ls,mode:Z,size:2,cycles:2},48:{ins:cs,mode:Z,size:2,cycles:2},208:{ins:ms,mode:Z,size:2,cycles:2},16:{ins:fs,mode:Z,size:2,cycles:2},80:{ins:us,mode:Z,size:2,cycles:2},112:{ins:xs,mode:Z,size:2,cycles:2},36:{ins:ve,mode:T,size:2,cycles:3},44:{ins:ve,mode:A,size:3,cycles:4},0:{ins:ps,mode:k,size:1,cycles:7},24:{ins:ds,mode:k,size:1,cycles:2},216:{ins:Rs,mode:k,size:1,cycles:2},88:{ins:gs,mode:k,size:1,cycles:2},184:{ins:bs,mode:k,size:1,cycles:2},201:{ins:$,mode:M,size:2,cycles:2},197:{ins:$,mode:T,size:2,cycles:3},213:{ins:$,mode:B,size:2,cycles:4},205:{ins:$,mode:A,size:3,cycles:4},221:{ins:$,mode:b,size:3,cycles:4},217:{ins:$,mode:y,size:3,cycles:4},193:{ins:$,mode:G,size:2,cycles:6},209:{ins:$,mode:F,size:2,cycles:5},224:{ins:ae,mode:M,size:2,cycles:2},228:{ins:ae,mode:T,size:2,cycles:3},236:{ins:ae,mode:A,size:3,cycles:4},192:{ins:ne,mode:M,size:2,cycles:2},196:{ins:ne,mode:T,size:2,cycles:3},204:{ins:ne,mode:A,size:3,cycles:4},198:{ins:Tt,mode:T,size:2,cycles:5},214:{ins:Tt,mode:B,size:2,cycles:6},206:{ins:Tt,mode:A,size:3,cycles:6},222:{ins:Tt,mode:b,size:3,cycles:7},202:{ins:Cs,mode:k,size:1,cycles:2},136:{ins:_s,mode:k,size:1,cycles:2},73:{ins:tt,mode:M,size:2,cycles:2},69:{ins:tt,mode:T,size:2,cycles:3},85:{ins:tt,mode:B,size:2,cycles:4},77:{ins:tt,mode:A,size:3,cycles:4},93:{ins:tt,mode:b,size:3,cycles:4},89:{ins:tt,mode:y,size:3,cycles:4},65:{ins:tt,mode:G,size:2,cycles:6},81:{ins:tt,mode:F,size:2,cycles:5},230:{ins:At,mode:T,size:2,cycles:5},246:{ins:At,mode:B,size:2,cycles:6},238:{ins:At,mode:A,size:3,cycles:6},254:{ins:At,mode:b,size:3,cycles:7},232:{ins:Ss,mode:k,size:1,cycles:2},200:{ins:ys,mode:k,size:1,cycles:2},76:{ins:Ue,mode:A,size:3,cycles:3},108:{ins:Ue,mode:as,size:3,cycles:5},32:{ins:Es,mode:A,size:3,cycles:6},169:{ins:et,mode:M,size:2,cycles:2},165:{ins:et,mode:T,size:2,cycles:3},181:{ins:et,mode:B,size:2,cycles:4},173:{ins:et,mode:A,size:3,cycles:4},189:{ins:et,mode:b,size:3,cycles:4},185:{ins:et,mode:y,size:3,cycles:4},161:{ins:et,mode:G,size:2,cycles:6},177:{ins:et,mode:F,size:2,cycles:5},162:{ins:gt,mode:M,size:2,cycles:2},166:{ins:gt,mode:T,size:2,cycles:3},182:{ins:gt,mode:Et,size:2,cycles:4},174:{ins:gt,mode:A,size:3,cycles:4},190:{ins:gt,mode:y,size:3,cycles:4},160:{ins:bt,mode:M,size:2,cycles:2},164:{ins:bt,mode:T,size:2,cycles:3},180:{ins:bt,mode:B,size:2,cycles:4},172:{ins:bt,mode:A,size:3,cycles:4},188:{ins:bt,mode:b,size:3,cycles:4},74:{ins:Ct,mode:st,size:1,cycles:2},70:{ins:Ct,mode:T,size:2,cycles:5},86:{ins:Ct,mode:B,size:2,cycles:6},78:{ins:Ct,mode:A,size:3,cycles:6},94:{ins:Ct,mode:b,size:3,cycles:7},26:{ins:ht,mode:k,size:1,cycles:2},58:{ins:ht,mode:k,size:1,cycles:2},90:{ins:ht,mode:k,size:1,cycles:2},122:{ins:ht,mode:k,size:1,cycles:2},218:{ins:ht,mode:k,size:1,cycles:2},234:{ins:ht,mode:k,size:1,cycles:2},250:{ins:ht,mode:k,size:1,cycles:2},9:{ins:it,mode:M,size:2,cycles:2},5:{ins:it,mode:T,size:2,cycles:3},21:{ins:it,mode:B,size:2,cycles:4},13:{ins:it,mode:A,size:3,cycles:4},29:{ins:it,mode:b,size:3,cycles:4},25:{ins:it,mode:y,size:3,cycles:4},1:{ins:it,mode:G,size:2,cycles:6},17:{ins:it,mode:F,size:2,cycles:5},72:{ins:Ts,mode:k,size:1,cycles:3},8:{ins:As,mode:k,size:1,cycles:3},104:{ins:ks,mode:k,size:1,cycles:4},40:{ins:Fs,mode:k,size:1,cycles:4},42:{ins:_t,mode:st,size:1,cycles:2},38:{ins:_t,mode:T,size:2,cycles:5},54:{ins:_t,mode:B,size:2,cycles:6},46:{ins:_t,mode:A,size:3,cycles:6},62:{ins:_t,mode:b,size:3,cycles:7},106:{ins:St,mode:st,size:1,cycles:2},102:{ins:St,mode:T,size:2,cycles:5},118:{ins:St,mode:B,size:2,cycles:6},110:{ins:St,mode:A,size:3,cycles:6},126:{ins:St,mode:b,size:3,cycles:7},64:{ins:Bs,mode:k,size:1,cycles:6},96:{ins:Ns,mode:k,size:1,cycles:6},233:{ins:X,mode:M,size:2,cycles:2},235:{ins:X,mode:M,size:2,cycles:2},229:{ins:X,mode:T,size:2,cycles:3},245:{ins:X,mode:B,size:2,cycles:4},237:{ins:X,mode:A,size:3,cycles:4},253:{ins:X,mode:b,size:3,cycles:4},249:{ins:X,mode:y,size:3,cycles:4},225:{ins:X,mode:G,size:2,cycles:6},241:{ins:X,mode:F,size:2,cycles:5},56:{ins:Ms,mode:k,size:1,cycles:2},248:{ins:Os,mode:k,size:1,cycles:2},120:{ins:Is,mode:k,size:1,cycles:2},133:{ins:at,mode:T,size:2,cycles:3},149:{ins:at,mode:B,size:2,cycles:4},141:{ins:at,mode:A,size:3,cycles:4},157:{ins:at,mode:b,size:3,cycles:5},153:{ins:at,mode:y,size:3,cycles:5},129:{ins:at,mode:G,size:2,cycles:6},145:{ins:at,mode:F,size:2,cycles:6},134:{ins:oe,mode:T,size:2,cycles:3},150:{ins:oe,mode:Et,size:2,cycles:4},142:{ins:oe,mode:A,size:3,cycles:4},132:{ins:le,mode:T,size:2,cycles:3},148:{ins:le,mode:B,size:2,cycles:4},140:{ins:le,mode:A,size:3,cycles:4},170:{ins:Ps,mode:k,size:1,cycles:2},168:{ins:Vs,mode:k,size:1,cycles:2},186:{ins:ws,mode:k,size:1,cycles:2},138:{ins:Gs,mode:k,size:1,cycles:2},154:{ins:Ds,mode:k,size:1,cycles:2},152:{ins:Ls,mode:k,size:1,cycles:2},75:{ins:zs,mode:M,size:2,cycles:2},11:{ins:We,mode:M,size:2,cycles:2},43:{ins:We,mode:M,size:2,cycles:2},107:{ins:qs,mode:M,size:2,cycles:2},203:{ins:vs,mode:M,size:2,cycles:2},163:{ins:ut,mode:G,size:2,cycles:6},167:{ins:ut,mode:T,size:2,cycles:3},175:{ins:ut,mode:A,size:3,cycles:4},179:{ins:ut,mode:F,size:2,cycles:5},183:{ins:ut,mode:Et,size:2,cycles:4},191:{ins:ut,mode:y,size:3,cycles:4},131:{ins:kt,mode:G,size:2,cycles:6},135:{ins:kt,mode:T,size:2,cycles:3},143:{ins:kt,mode:A,size:3,cycles:4},151:{ins:kt,mode:Et,size:2,cycles:4},195:{ins:nt,mode:G,size:2,cycles:8},199:{ins:nt,mode:T,size:2,cycles:5},207:{ins:nt,mode:A,size:3,cycles:6},211:{ins:nt,mode:F,size:2,cycles:8},215:{ins:nt,mode:B,size:2,cycles:6},219:{ins:nt,mode:y,size:3,cycles:7},223:{ins:nt,mode:b,size:3,cycles:7},227:{ins:ot,mode:G,size:2,cycles:8},231:{ins:ot,mode:T,size:2,cycles:5},239:{ins:ot,mode:A,size:3,cycles:6},243:{ins:ot,mode:F,size:2,cycles:8},247:{ins:ot,mode:B,size:2,cycles:6},251:{ins:ot,mode:y,size:3,cycles:7},255:{ins:ot,mode:b,size:3,cycles:7},35:{ins:lt,mode:G,size:2,cycles:8},39:{ins:lt,mode:T,size:2,cycles:5},47:{ins:lt,mode:A,size:3,cycles:6},51:{ins:lt,mode:F,size:2,cycles:8},55:{ins:lt,mode:B,size:2,cycles:6},59:{ins:lt,mode:y,size:3,cycles:7},63:{ins:lt,mode:b,size:3,cycles:7},99:{ins:ct,mode:G,size:2,cycles:8},103:{ins:ct,mode:T,size:2,cycles:5},111:{ins:ct,mode:A,size:3,cycles:6},115:{ins:ct,mode:F,size:2,cycles:8},119:{ins:ct,mode:B,size:2,cycles:6},123:{ins:ct,mode:y,size:3,cycles:7},127:{ins:ct,mode:b,size:3,cycles:7},3:{ins:mt,mode:G,size:2,cycles:8},7:{ins:mt,mode:T,size:2,cycles:5},15:{ins:mt,mode:A,size:3,cycles:6},19:{ins:mt,mode:F,size:2,cycles:8},23:{ins:mt,mode:B,size:2,cycles:6},27:{ins:mt,mode:y,size:3,cycles:7},31:{ins:mt,mode:b,size:3,cycles:7},67:{ins:ft,mode:G,size:2,cycles:8},71:{ins:ft,mode:T,size:2,cycles:5},79:{ins:ft,mode:A,size:3,cycles:6},83:{ins:ft,mode:F,size:2,cycles:8},87:{ins:ft,mode:B,size:2,cycles:6},91:{ins:ft,mode:y,size:3,cycles:7},95:{ins:ft,mode:b,size:3,cycles:7},128:{ins:yt,mode:M,size:2,cycles:2},130:{ins:yt,mode:M,size:2,cycles:2},137:{ins:yt,mode:M,size:2,cycles:2},194:{ins:yt,mode:M,size:2,cycles:2},226:{ins:yt,mode:M,size:2,cycles:2},12:{ins:D,mode:A,size:3,cycles:4},28:{ins:D,mode:b,size:3,cycles:4},60:{ins:D,mode:b,size:3,cycles:4},92:{ins:D,mode:b,size:3,cycles:4},124:{ins:D,mode:b,size:3,cycles:4},220:{ins:D,mode:b,size:3,cycles:4},252:{ins:D,mode:b,size:3,cycles:4},4:{ins:D,mode:T,size:2,cycles:3},68:{ins:D,mode:T,size:2,cycles:3},100:{ins:D,mode:T,size:2,cycles:3},20:{ins:D,mode:B,size:2,cycles:4},52:{ins:D,mode:B,size:2,cycles:4},84:{ins:D,mode:B,size:2,cycles:4},116:{ins:D,mode:B,size:2,cycles:4},212:{ins:D,mode:B,size:2,cycles:4},244:{ins:D,mode:B,size:2,cycles:4},147:{ins:He,mode:F,size:2,cycles:6},159:{ins:He,mode:y,size:3,cycles:5},155:{ins:Us,mode:y,size:3,cycles:5},156:{ins:Ws,mode:b,size:3,cycles:5},158:{ins:Hs,mode:y,size:3,cycles:5},187:{ins:Ys,mode:y,size:3,cycles:4},139:{ins:Js,mode:M,size:2,cycles:2},171:{ins:Xs,mode:M,size:2,cycles:2}},Ft=class{constructor(t){c(this,"IRQ_NORMAL",0);c(this,"IRQ_NMI",1);c(this,"IRQ_RESET",2);this.nes=t,this.mem=new Uint8Array(65536),this.mem.fill(255,0,8192);for(let e=0;e<4;e++){let i=e*2048;this.mem[i+8]=247,this.mem[i+9]=239,this.mem[i+10]=223,this.mem[i+15]=191}this.REG_ACC=0,this.REG_X=0,this.REG_Y=0,this.REG_SP=511,this.REG_PC=32767,this.REG_PC_NEW=32767,this.REG_STATUS=40,this.setStatus(40),this.F_CARRY=0,this.F_DECIMAL=0,this.F_INTERRUPT=1,this.F_INTERRUPT_NEW=1,this.F_OVERFLOW=0,this.F_SIGN=0,this.F_ZERO=1,this.F_NOTUSED=1,this.F_NOTUSED_NEW=1,this.F_BRK=1,this.F_BRK_NEW=1,this.cyclesToHalt=0,this.crash=!1,this.irqRequested=!1,this.irqType=null,this.nmiRaised=!1,this.nmiPending=!1,this.nmiImmediate=!1,this.dataBus=0,this.instrBusCycles=0,this.apuCatchupCycles=0,this._cpuCycleBase=0,this.nmiRaisedAtCycle=0,this.nmiDotsRemainingInStep=0}emulate(){var x;if(this.nmiImmediate)return this.nmiImmediate=!1,this.nmiPending=!1,this.nmiRaised=!1,this.instrBusCycles=0,this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.doNonMaskableInterrupt(this.getStatus()&239),this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this._cpuCycleBase+=7,7;let t,e,i=0,s=0;if(this.nmiRaised&&(this.nmiPending=!0,this.nmiRaised=!1),this.irqRequested){switch(t=this.getStatus(),this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.irqType){case 0:{if(this.F_INTERRUPT!==0)break;this.doIrq(t&239),s=7;break}case 2:{this.doResetInterrupt(),s=7;break}}this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.irqRequested=!1}if(this.nes.mmap===null)return 32;this.instrBusCycles=0,this.apuCatchupCycles=0,this.nmiDotsRemainingInStep=0,this._dmcFetchCycles=this._cyclesToNextDmcFetch();let r=this.loadFromCartridge(this.REG_PC+1);this.dataBus=r,this.instrBusCycles=1,this.nes.ppu.advanceDots(3);let a=(x=Zs[r])!=null?x:js,n=a.cycles,l=0,o=a.mode,p=this.REG_PC;this.REG_PC+=a.size;let h=0;switch(o){case 0:{h=this.loadDirect(p+2);break}case 1:{h=this.loadDirect(p+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:{this.loadDirect(p+2);break}case 3:{h=this.load16bit(p+2);break}case 4:{this.loadDirect(p+2),h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{let m=this.loadDirect(p+2);this.loadDirect(m),h=m+this.REG_X&255;break}case 7:{let m=this.loadDirect(p+2);this.loadDirect(m),h=m+this.REG_Y&255;break}case 8:{h=this.load16bit(p+2),i=h>>8&255,(h&65280)!==(h+this.REG_X&65280)&&(this.load(h&65280|h+this.REG_X&255),l=1),h+=this.REG_X;break}case 9:{h=this.load16bit(p+2),i=h>>8&255,(h&65280)!==(h+this.REG_Y&65280)&&(this.load(h&65280|h+this.REG_Y&255),l=1),h+=this.REG_Y;break}case 10:{let m=this.loadDirect(p+2);this.loadDirect(m);let f=m+this.REG_X&255;h=this.loadDirect(f)|this.loadDirect(f+1&255)<<8;break}case 11:{let m=this.loadDirect(p+2);h=this.loadDirect(m)|this.loadDirect(m+1&255)<<8,i=h>>8&255,(h&65280)!==(h+this.REG_Y&65280)&&(this.load(h&65280|h+this.REG_Y&255),l=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(p+2);var d=h&65280|(h&255)+1&255;h=this.load(h)|this.load(d)<<8;break}}switch(h&=65535,a.ins){case 0:{e=this.load(h),t=this.REG_ACC+e+this.F_CARRY,((this.REG_ACC^e)&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,n+=l;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,n+=l;break}case 2:{o===st?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(n+=this._takeBranch(p,h));break}case 4:{this.F_CARRY===1&&(n+=this._takeBranch(p,h));break}case 5:{this.F_ZERO===0&&(n+=this._takeBranch(p,h));break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(n+=this._takeBranch(p,h));break}case 8:{this.F_ZERO!==0&&(n+=this._takeBranch(p,h));break}case 9:{this.F_SIGN===0&&(n+=this._takeBranch(p,h));break}case 10:{this.REG_PC+=2,this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.F_BRK=1,this.push(this.getStatus()),this.F_INTERRUPT=1,this.REG_PC=this.load16bit(65534),this.REG_PC--;break}case 11:{this.F_OVERFLOW===0&&(n+=this._takeBranch(p,h));break}case 12:{this.F_OVERFLOW===1&&(n+=this._takeBranch(p,h));break}case 13:{this.F_CARRY=0;break}case 14:{this.F_DECIMAL=0;break}case 15:{this.F_INTERRUPT=0;break}case 16:{this.F_OVERFLOW=0;break}case 17:{t=this.REG_ACC-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,n+=l;break}case 18:{t=this.REG_X-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 19:{t=this.REG_Y-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 20:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t-1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t);break}case 21:{this.REG_X=this.REG_X-1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 22:{this.REG_Y=this.REG_Y-1&255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 23:{this.REG_ACC=(this.load(h)^this.REG_ACC)&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,n+=l;break}case 24:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t+1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t);break}case 25:{this.REG_X=this.REG_X+1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 26:{this.REG_Y++,this.REG_Y&=255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 27:{this.REG_PC=h-1;break}case 28:{this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.loadDirect(p+3),this.REG_PC=h-1;break}case 29:{this.REG_ACC=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,n+=l;break}case 30:{this.REG_X=this.load(h),this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X,n+=l;break}case 31:{this.REG_Y=this.load(h),this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y,n+=l;break}case 32:{o===st?(t=this.REG_ACC&255,this.F_CARRY=t&1,t>>=1,this.REG_ACC=t):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h)&255,this.write(h,t),this.F_CARRY=t&1,t>>=1,this.write(h,t)),this.F_SIGN=0,this.F_ZERO=t;break}case 33:break;case 34:{t=(this.load(h)|this.REG_ACC)&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.REG_ACC=t,n+=l;break}case 35:{this.push(this.REG_ACC);break}case 36:{this.F_BRK=1,this.push(this.getStatus());break}case 37:{this.REG_ACC=this.pull(),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 38:{this.setStatusFromStack(this.pull());break}case 39:{o===st?(t=this.REG_ACC,e=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+e,this.REG_ACC=t):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+e,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 40:{o===st?(e=this.F_CARRY<<7,this.F_CARRY=this.REG_ACC&1,t=(this.REG_ACC>>1)+e,this.REG_ACC=t):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+e,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 41:{if(this.setStatusFromStack(this.pull()),this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;this.REG_PC--;break}case 42:{if(this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;break}case 43:{e=this.load(h),t=this.REG_ACC-e-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^e)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255,n+=l;break}case 44:{this.F_CARRY=1;break}case 45:{this.F_DECIMAL=1;break}case 46:{this.F_INTERRUPT=1;break}case 47:{l===0&&(o===b||o===y||o===F)&&this.load(h),this.write(h,this.REG_ACC);break}case 48:{this.write(h,this.REG_X);break}case 49:{this.write(h,this.REG_Y);break}case 50:{this.REG_X=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 51:{this.REG_Y=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 52:{this.REG_X=this.REG_SP&255,this.F_SIGN=this.REG_SP>>7&1,this.F_ZERO=this.REG_X;break}case 53:{this.REG_ACC=this.REG_X,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 54:{this.REG_SP=this.REG_X&255;break}case 55:{this.REG_ACC=this.REG_Y,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 56:{t=this.REG_ACC&this.load(h),this.F_CARRY=t&1,this.REG_ACC=this.F_ZERO=t>>1,this.F_SIGN=0;break}case 57:{this.REG_ACC=this.F_ZERO=this.REG_ACC&this.load(h),this.F_CARRY=this.F_SIGN=this.REG_ACC>>7&1;break}case 58:{t=this.REG_ACC&this.load(h),this.REG_ACC=this.F_ZERO=(t>>1)+(this.F_CARRY<<7),this.F_SIGN=this.F_CARRY,this.F_CARRY=t>>7&1,this.F_OVERFLOW=(t>>7^t>>6)&1;break}case 59:{t=(this.REG_X&this.REG_ACC)-this.load(h),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.F_CARRY=t<0?0:1,this.REG_X=t&255;break}case 60:{this.REG_ACC=this.REG_X=this.F_ZERO=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,n+=l;break}case 61:{this.write(h,this.REG_ACC&this.REG_X);break}case 62:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t-1&255,this.write(h,t),t=this.REG_ACC-t,this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 63:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t+1&255,this.write(h,t);let m=t;t=this.REG_ACC-m-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^m)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255;break}case 64:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+e,this.write(h,t),this.REG_ACC=this.REG_ACC&t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 65:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+e,this.write(h,t);let m=t;t=this.REG_ACC+m+this.F_CARRY,((this.REG_ACC^m)&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255;break}case 66:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),this.F_CARRY=t>>7&1,t=t<<1&255,this.write(h,t),this.REG_ACC=this.REG_ACC|t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 67:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h)&255,this.write(h,t),this.F_CARRY=t&1,t>>=1,this.write(h,t),this.REG_ACC=this.REG_ACC^t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 68:break;case 69:{this.load(h),n+=l;break}case 71:{l===0&&this.load(h);let f=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles?this.REG_ACC&this.REG_X:this.REG_ACC&this.REG_X&(i+1&255|0);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 72:{l===0&&this.load(h);let m=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles;this.REG_SP=256|this.REG_ACC&this.REG_X;let f=m?this.REG_SP&255:this.REG_SP&255&(i+1&255);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 73:{l===0&&this.load(h);let f=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles?this.REG_Y:this.REG_Y&(i+1&255);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 74:{l===0&&this.load(h);let f=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles?this.REG_X:this.REG_X&(i+1&255);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 75:{t=this.load(h)&(this.REG_SP&255),this.REG_ACC=this.REG_X=this.F_ZERO=t,this.REG_SP=256|t,this.F_SIGN=t>>7&1,n+=l;break}case 76:{this.REG_ACC=this.F_ZERO=(this.REG_ACC|255)&this.REG_X&this.load(h),this.F_SIGN=this.REG_ACC>>7&1;break}case 77:{this.REG_ACC=this.REG_X=this.F_ZERO=(this.REG_ACC|255)&this.load(h),this.F_SIGN=this.REG_ACC>>7&1;break}default:throw new Error(`Game crashed, invalid opcode at address $${p.toString(16)}`)}if(this.instrBusCycles=5&&(this.nmiImmediate=!0,this.nmiRaised=!1),this.nmiPending&&(this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.doNonMaskableInterrupt(this.getStatus()&239),this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.nmiPending=!1,s=7),this._cpuCycleBase+=n+s,n+s}loadFromCartridge(t){return this.nes.mmap.load(t)}_loadFromCartridgePlain(t){return this.nes.mmap.load(t)}_loadFromCartridgeWithGameGenie(t){let e=this.nes.mmap.load(t);return this.nes.gameGenie.applyCodes(t,e)}_updateCartridgeLoader(){this.nes.gameGenie.enabled&&this.nes.gameGenie.patches.length>0?this.loadFromCartridge=this._loadFromCartridgeWithGameGenie:delete this.loadFromCartridge}load(t){if(t<8192)this.dataBus=this.mem[t&2047],this.instrBusCycles++,this.nes.ppu.advanceDots(3);else if(t>=16384){if(t===16405){this.nes.papu.advanceFrameCounter(this.instrBusCycles-this.apuCatchupCycles),this.apuCatchupCycles=this.instrBusCycles;let e=this.loadFromCartridge(t);return this.instrBusCycles++,this.nes.ppu.advanceDots(3),e}this.dataBus=this.loadFromCartridge(t),this.instrBusCycles++,this.nes.ppu.advanceDots(3)}else this.instrBusCycles++,this.dataBus=this.loadFromCartridge(t),this.nes.ppu.advanceDots(3);return this.dataBus}loadDirect(t){return t<8192?this.dataBus=this.mem[t&2047]:this.dataBus=this.loadFromCartridge(t),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus}load16bit(t){let e;return t<8191?(this.dataBus=this.mem[t&2047],e=this.dataBus,this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus=this.mem[t+1&2047],this.instrBusCycles++,this.nes.ppu.advanceDots(3),e|this.dataBus<<8):(this.dataBus=this.loadFromCartridge(t),e=this.dataBus,this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus=this.loadFromCartridge(t+1),this.instrBusCycles++,this.nes.ppu.advanceDots(3),e|this.dataBus<<8)}write(t,e){t>=8192&&t<16384?(this.instrBusCycles++,this.dataBus=e,this.nes.mmap.write(t,e),this.nes.ppu.advanceDots(3)):(this.dataBus=e,t<8192?this.mem[t&2047]=e:this.nes.mmap.write(t,e),this.instrBusCycles++,this.nes.ppu.advanceDots(3))}requestIrq(t){this.irqRequested&&t===this.IRQ_NORMAL||(this.irqRequested=!0,this.irqType=t)}push(t){this.dataBus=t,this.mem[this.REG_SP|256]=t,this.REG_SP--,this.REG_SP=this.REG_SP&255,this.instrBusCycles++,this.nes.ppu.advanceDots(3)}pull(){return this.REG_SP++,this.REG_SP=this.REG_SP&255,this.dataBus=this.mem[256|this.REG_SP],this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus}_cyclesToNextDmcFetch(){if(!this.nes.papu)return 2147483647;let t=this.nes.papu.dmc;if(!t||!t.isEnabled||t.dmaFrequency<=0||!t.hasSample)return 2147483647;let e=t.dmaFrequency>>3,i=t.shiftCounter+7>>3;return i<=0&&(i=e),i+(t.dmaCounter-1)*e}_takeBranch(t,e){let i=t+3&65535,s=e+1&65535;if(this.load(i),(i&65280)!==(s&65280)){let r=i&65280|s&255;return this.load(r),this.REG_PC=e,2}return this.REG_PC=e,1}pageCrossed(t,e){return(t&65280)!==(e&65280)}haltCycles(t){this.cyclesToHalt+=t}doNonMaskableInterrupt(t){if(this.nes.mmap===null)return;this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.F_INTERRUPT_NEW=1,this.push(t),this.dataBus=this.loadFromCartridge(65530),this.instrBusCycles++,this.nes.ppu.advanceDots(3);let e=this.dataBus;this.dataBus=this.loadFromCartridge(65531),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW=e|this.dataBus<<8,this.REG_PC_NEW--}doResetInterrupt(){this.dataBus=this.loadFromCartridge(65532),this.instrBusCycles++,this.nes.ppu.advanceDots(3);let t=this.dataBus;this.dataBus=this.loadFromCartridge(65533),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW=t|this.dataBus<<8,this.REG_PC_NEW--}doIrq(t){this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.push(t),this.F_INTERRUPT_NEW=1,this.F_BRK_NEW=0,this.dataBus=this.loadFromCartridge(65534),this.instrBusCycles++,this.nes.ppu.advanceDots(3);let e=this.dataBus;this.dataBus=this.loadFromCartridge(65535),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW=e|this.dataBus<<8,this.REG_PC_NEW--}getStatus(){return this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7}setStatus(t){this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===1?0:1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1}setStatusFromStack(t){this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===1?0:1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(Ft,"JSON_PROPERTIES",["mem","cyclesToHalt","dataBus","irqRequested","irqType","nmiRaised","nmiPending","nmiImmediate","REG_ACC","REG_X","REG_Y","REG_SP","REG_PC","REG_PC_NEW","REG_STATUS","F_CARRY","F_DECIMAL","F_INTERRUPT","F_INTERRUPT_NEW","F_OVERFLOW","F_SIGN","F_ZERO","F_NOTUSED","F_NOTUSED_NEW","F_BRK","F_BRK_NEW","_cpuCycleBase"]);ce=Ft});var N,me,fe,Je=S(()=>{H();N=class N{constructor(){this.state=new Array(8);for(let t=0;t{pe=class{constructor(){this.pix=new Uint8Array(64),this.initialized=!1,this.opaque=new Uint8Array(8)}setBuffer(t){for(let e=0;e<8;e++)this.setScanline(e,t[e],t[e+8])}setScanline(t,e,i){this.initialized=!0;let s=t<<3;for(let r=0;r<8;r++)this.pix[s+r]=(e>>7-r&1)+((i>>7-r&1)<<1),this.pix[s+r]===0&&(this.opaque[t]=!1)}render(t,e,i,s,r,a,n,l,o,p,h,d,x){if(a<-7||a>=256||n<-7||n>=240)return;a<0&&(e-=a),a+s>=256&&(s=256-a),n<0&&(i-=n),n+r>=240&&(r=240-n);let m,f,R,_;if(!p&&!h){m=(n<<8)+a,f=0;for(let E=0;E<8;E++){for(let g=0;g<8;g++)g>=e&&g=i&&E=e&&g=i&&E=e&&g=i&&E=e&&g=i&&E{ue=class{constructor(t,e,i){this.width=t,this.height=e,this.name=i,this.tile=new Uint8Array(t*e),this.attrib=new Uint8Array(t*e)}getTileIndex(t,e){return this.tile[e*this.width+t]}getAttrib(t,e){return this.attrib[e*this.width+t]}writeAttrib(t,e){let i=t%8*4,s=Math.floor(t/8)*4,r,a,n,l;for(let o=0;o<2;o++)for(let p=0;p<2;p++){r=e>>2*(o*2+p)&3;for(let h=0;h<2;h++)for(let d=0;d<2;d++)a=i+p*2+d,n=s+o*2+h,l=n*this.width+a,this.attrib[l]=r<<2&12}}toJSON(){return{tile:this.tile.slice(0),attrib:this.attrib.slice(0)}}fromJSON(t){this.tile.set(t.tile),this.attrib.set(t.attrib)}},Xe=ue});var xe,Ze,Ke=S(()=>{xe=class{constructor(){this.curTable=new Uint32Array(64),this.emphTable=new Array(8),this.currentEmph=-1}loadNTSCPalette(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)}loadPALPalette(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)}makeTables(){let t,e,i,s,r,a,n,l;for(let o=0;o<8;o++)for(a=1,n=1,l=1,(o&1)!==0&&(n=.75,l=.75),(o&2)!==0&&(a=.75,l=.75),(o&4)!==0&&(a=.75,n=.75),this.emphTable[o]=new Uint32Array(64),r=0;r<64;r++)s=this.curTable[r],t=Math.floor(this.getRed(s)*a),e=Math.floor(this.getGreen(s)*n),i=Math.floor(this.getBlue(s)*l),this.emphTable[o][r]=this.getRgb(t,e,i)}setEmphasis(t){if(t!==this.currentEmph){this.currentEmph=t;for(let e=0;e<64;e++)this.curTable[e]=this.emphTable[t][e]}}getEntry(t){return this.curTable[t]}getRed(t){return t>>16&255}getGreen(t){return t>>8&255}getBlue(t){return t&255}getRgb(t,e,i){return t<<16|e<<8|i}loadDefaultPalette(){this.curTable[0]=this.getRgb(117,117,117),this.curTable[1]=this.getRgb(39,27,143),this.curTable[2]=this.getRgb(0,0,171),this.curTable[3]=this.getRgb(71,0,159),this.curTable[4]=this.getRgb(143,0,119),this.curTable[5]=this.getRgb(171,0,19),this.curTable[6]=this.getRgb(167,0,0),this.curTable[7]=this.getRgb(127,11,0),this.curTable[8]=this.getRgb(67,47,0),this.curTable[9]=this.getRgb(0,71,0),this.curTable[10]=this.getRgb(0,81,0),this.curTable[11]=this.getRgb(0,63,23),this.curTable[12]=this.getRgb(27,63,95),this.curTable[13]=this.getRgb(0,0,0),this.curTable[14]=this.getRgb(0,0,0),this.curTable[15]=this.getRgb(0,0,0),this.curTable[16]=this.getRgb(188,188,188),this.curTable[17]=this.getRgb(0,115,239),this.curTable[18]=this.getRgb(35,59,239),this.curTable[19]=this.getRgb(131,0,243),this.curTable[20]=this.getRgb(191,0,191),this.curTable[21]=this.getRgb(231,0,91),this.curTable[22]=this.getRgb(219,43,0),this.curTable[23]=this.getRgb(203,79,15),this.curTable[24]=this.getRgb(139,115,0),this.curTable[25]=this.getRgb(0,151,0),this.curTable[26]=this.getRgb(0,171,0),this.curTable[27]=this.getRgb(0,147,59),this.curTable[28]=this.getRgb(0,131,139),this.curTable[29]=this.getRgb(0,0,0),this.curTable[30]=this.getRgb(0,0,0),this.curTable[31]=this.getRgb(0,0,0),this.curTable[32]=this.getRgb(255,255,255),this.curTable[33]=this.getRgb(63,191,255),this.curTable[34]=this.getRgb(95,151,255),this.curTable[35]=this.getRgb(167,139,253),this.curTable[36]=this.getRgb(247,123,255),this.curTable[37]=this.getRgb(255,119,183),this.curTable[38]=this.getRgb(255,119,99),this.curTable[39]=this.getRgb(255,155,59),this.curTable[40]=this.getRgb(243,191,63),this.curTable[41]=this.getRgb(131,211,19),this.curTable[42]=this.getRgb(79,223,75),this.curTable[43]=this.getRgb(88,248,152),this.curTable[44]=this.getRgb(0,235,219),this.curTable[45]=this.getRgb(0,0,0),this.curTable[46]=this.getRgb(0,0,0),this.curTable[47]=this.getRgb(0,0,0),this.curTable[48]=this.getRgb(255,255,255),this.curTable[49]=this.getRgb(171,231,255),this.curTable[50]=this.getRgb(199,215,255),this.curTable[51]=this.getRgb(215,203,255),this.curTable[52]=this.getRgb(255,199,255),this.curTable[53]=this.getRgb(255,199,219),this.curTable[54]=this.getRgb(255,191,179),this.curTable[55]=this.getRgb(255,219,171),this.curTable[56]=this.getRgb(255,231,163),this.curTable[57]=this.getRgb(227,255,163),this.curTable[58]=this.getRgb(171,243,191),this.curTable[59]=this.getRgb(179,255,207),this.curTable[60]=this.getRgb(159,255,243),this.curTable[61]=this.getRgb(0,0,0),this.curTable[62]=this.getRgb(0,0,0),this.curTable[63]=this.getRgb(0,0,0),this.makeTables(),this.setEmphasis(0)}},Ze=xe});var Nt,de,Qe=S(()=>{Bt();H();je();Ke();Nt=class{constructor(t){c(this,"STATUS_VRAMWRITE",4);c(this,"STATUS_SLSPRITECOUNT",5);c(this,"STATUS_SPRITE0HIT",6);c(this,"STATUS_VBLANK",7);this.nes=t,this.showSpr0Hit=!1,this.clipToTvSize=!0;let e;for(this.vramMem=new Uint8Array(32768),this.spriteMem=new Uint8Array(256),this.vramAddress=null,this.vramTmpAddress=null,this.vramBufferedReadValue=0,this.firstWrite=!0,this.openBusLatch=0,this.openBusDecayFrames=0,this.sramAddress=0,this.currentMirroring=-1,this.nmiOutput=!1,this.nmiSuppressed=!1,this.vblankPending=!1,this.frameEnded=!1,this.dummyCycleToggle=!1,this.validTileData=!1,this.scanlineAlreadyRendered=null,this.f_nmiOnVblank=0,this.f_spriteSize=0,this.f_bgPatternTable=0,this.f_spPatternTable=0,this.f_addrInc=0,this.f_nTblAddress=0,this.f_color=0,this.f_spVisibility=0,this.f_bgVisibility=0,this.f_spClipping=0,this.f_bgClipping=0,this.f_dispType=0,this.cntFV=0,this.cntV=0,this.cntH=0,this.cntVT=0,this.cntHT=0,this.regFV=0,this.regV=0,this.regH=0,this.regVT=0,this.regHT=0,this.regFH=0,this.regS=0,this.curNt=null,this.attrib=new Uint8Array(32),this.buffer=new Uint32Array(256*240),this.bgbuffer=new Uint32Array(256*240),this.pixrendered=new Uint32Array(256*240),this.validTileData=null,this.scantile=new Array(32),this.scanline=0,this.lastRenderedScanline=-1,this.curX=0,this.sprX=new Uint8Array(64),this.sprY=new Uint8Array(64),this.sprTile=new Uint8Array(64),this.sprCol=new Uint8Array(64),this.vertFlip=new Uint8Array(64),this.horiFlip=new Uint8Array(64),this.bgPriority=new Uint8Array(64),this.spr0HitX=0,this.spr0HitY=0,this.hitSpr0=!1,this.secondaryOAM=new Uint8Array(32),this.secondaryOAM.fill(255),this.spritesFound=0,this.sprite0InSecondary=!1,this.scanlineSpriteCount=new Uint8Array(241),this.scanlineSecondaryOAM=new Uint8Array(7712),this.scanlineSprite0=new Uint8Array(241),this.sprPalette=new Uint32Array(16),this.imgPalette=new Uint32Array(16),this.ptTile=new Array(512),e=0;e<512;e++)this.ptTile[e]=new xt;for(this.ntable1=new Array(4),this.currentMirroring=-1,this.nameTable=new Array(4),e=0;e<4;e++)this.nameTable[e]=new Xe(32,32,`Nt${e}`);for(this.vramMirrorTable=new Uint16Array(32768),e=0;e<32768;e++)this.vramMirrorTable[e]=e;this.palTable=new Ze,this.palTable.loadNTSCPalette(),this.updateControlReg1(0),this.updateControlReg2(0)}setMirroring(t){if(t!==this.currentMirroring){this.currentMirroring=t,this.triggerRendering(),this.vramMirrorTable===null&&(this.vramMirrorTable=new Uint16Array(32768));for(let e=0;e<32768;e++)this.vramMirrorTable[e]=e;this.defineMirrorRegion(16160,16128,32),this.defineMirrorRegion(16192,16128,32),this.defineMirrorRegion(16256,16128,32),this.defineMirrorRegion(16320,16128,32),this.defineMirrorRegion(12288,8192,3840),this.defineMirrorRegion(16384,0,16384),t===this.nes.rom.HORIZONTAL_MIRRORING?(this.ntable1[0]=0,this.ntable1[1]=0,this.ntable1[2]=1,this.ntable1[3]=1,this.defineMirrorRegion(9216,8192,1024),this.defineMirrorRegion(11264,10240,1024)):t===this.nes.rom.VERTICAL_MIRRORING?(this.ntable1[0]=0,this.ntable1[1]=1,this.ntable1[2]=0,this.ntable1[3]=1,this.defineMirrorRegion(10240,8192,1024),this.defineMirrorRegion(11264,9216,1024)):t===this.nes.rom.SINGLESCREEN_MIRRORING?(this.ntable1[0]=0,this.ntable1[1]=0,this.ntable1[2]=0,this.ntable1[3]=0,this.defineMirrorRegion(9216,8192,1024),this.defineMirrorRegion(10240,8192,1024),this.defineMirrorRegion(11264,8192,1024)):t===this.nes.rom.SINGLESCREEN_MIRRORING2?(this.ntable1[0]=1,this.ntable1[1]=1,this.ntable1[2]=1,this.ntable1[3]=1,this.defineMirrorRegion(9216,9216,1024),this.defineMirrorRegion(10240,9216,1024),this.defineMirrorRegion(11264,9216,1024)):(this.ntable1[0]=0,this.ntable1[1]=1,this.ntable1[2]=2,this.ntable1[3]=3)}}defineMirrorRegion(t,e,i){for(let s=0;s0&&(this.openBusDecayFrames--,this.openBusDecayFrames===0&&(this.openBusLatch=0)),this.lastRenderedScanline<239&&this.renderFramePartially(this.lastRenderedScanline+1,240-this.lastRenderedScanline),this.endFrame(),this.lastRenderedScanline=-1}_fireVblankSet(t,e){this.vblankPending=!1,this.nmiSuppressed||(this.setStatusFlag(this.STATUS_VBLANK,!0),this._updateNmiOutput(),t.nmiRaised&&(t.nmiDotsRemainingInStep=e)),this.nmiSuppressed=!1,this.startVBlank(),this.frameEnded=!0}_fireVblankClear(t,e){t.nmiRaised&&e&&(t.nmiPending=!0,t.nmiRaised=!1),this.setStatusFlag(this.STATUS_VBLANK,!1),this.setStatusFlag(this.STATUS_SPRITE0HIT,!1),this.setStatusFlag(this.STATUS_SLSPRITECOUNT,!1),this.hitSpr0=!1,this.spr0HitX=-1,this.spr0HitY=-1,this._updateNmiOutput()}advanceDots(t){let e=this.curX+t;if(e<341&&!(this.scanline===0&&this.vblankPending&&this.curX<=1&&e>=1)&&!(this.scanline===20&&this.curX<=1&&e>=1)&&(this.spr0HitX=e)){this.curX=e;return}let i=this.nes.cpu;for(let s=0;s=21&&this.scanline<=260){let t=this.scanline+1-21;this.performOAMCorruption(),(this.f_bgVisibility===1||this.f_spVisibility===1)&&(this.scanlineAlreadyRendered||(this.cntHT=this.regHT,this.cntH=this.regH,this.renderBgScanline(!0,t)),this.scanlineAlreadyRendered=!1,!this.hitSpr0&&this.f_bgVisibility===1&&this.f_spVisibility===1&&this.scanlineSprite0[t]&&this.checkSprite0(t)&&(this.hitSpr0=!0)),t<240&&this.evaluateSprites(t+1),!this.hitSpr0&&this.f_bgVisibility===1&&this.f_spVisibility===1&&(this._precomputeSprite0Hit(t+1),this.spr0HitX!==-1&&(this.hitSpr0=!0)),(this.f_bgVisibility===1||this.f_spVisibility===1)&&this.nes.mmap.clockIrqCounter()}}this.scanline++,this.regsToAddress(),this.cntsToAddress()}startFrame(){this.scanlineSpriteCount.fill(0),this.scanlineSprite0.fill(0);let t;if(this.f_dispType===0)t=this.imgPalette[0];else switch(this.f_color){case 0:t=0;break;case 1:t=65280;break;case 2:t=255;break;case 3:t=0;break;case 4:t=16711680;break;default:t=0}this.buffer.fill(t),this.pixrendered.fill(65)}endFrame(){let t,e,i=this.buffer;if(this.showSpr0Hit){if(this.sprX[0]>=0&&this.sprX[0]<256&&this.sprY[0]>=0&&this.sprY[0]<240){for(t=0;t<256;t++)i[(this.sprY[0]<<8)+t]=16733525;for(t=0;t<240;t++)i[(t<<8)+this.sprX[0]]=16733525}if(this.spr0HitX>=0&&this.spr0HitX<256&&this.spr0HitY>=0&&this.spr0HitY<240){for(t=0;t<256;t++)i[(this.spr0HitY<<8)+t]=5635925;for(t=0;t<240;t++)i[(t<<8)+this.spr0HitX]=5635925}}if(this.clipToTvSize||this.f_bgClipping===0||this.f_spClipping===0)for(e=0;e<240;e++)i.fill(0,e<<8,(e<<8)+8);if(this.clipToTvSize){for(e=0;e<240;e++)i.fill(0,(e<<8)+248,(e<<8)+256);i.fill(0,0,2048),i.fill(0,59392,61440)}this.nes.ui.writeFrame(i)}updateControlReg1(t){this.triggerRendering(),this.f_nmiOnVblank=t>>7&1,this.f_spriteSize=t>>5&1,this.f_bgPatternTable=t>>4&1,this.f_spPatternTable=t>>3&1,this.f_addrInc=t>>2&1,this.f_nTblAddress=t&3,this.regV=t>>1&1,this.regH=t&1,this.regS=t>>4&1,this._updateNmiOutput()}_updateNmiOutput(){let t=(this.nes.cpu.mem[8194]&128)!==0,e=this.f_nmiOnVblank!==0&&t;if(e&&!this.nmiOutput)this.nes.cpu.nmiRaised=!0,this.nes.cpu.nmiRaisedAtCycle=this.nes.cpu.instrBusCycles;else if(!e&&this.nmiOutput&&this.nes.cpu.nmiRaised){let i=this.nes.cpu.instrBusCycles-this.nes.cpu.nmiRaisedAtCycle;(i===0||i===1&&this.nes.cpu.nmiDotsRemainingInStep===0)&&(this.nes.cpu.nmiRaised=!1)}this.nmiOutput=e}updateControlReg2(t){if(this.triggerRendering(),this.f_color=t>>5&7,this.f_spVisibility=t>>4&1,this.f_bgVisibility=t>>3&1,this.f_spClipping=t>>2&1,this.f_bgClipping=t>>1&1,this.f_dispType=t&1,!this.hitSpr0&&this.f_bgVisibility===1&&this.f_spVisibility===1&&this.scanline>=21&&this.scanline<=260){let e=this.scanline+1-21;this.scanlineSprite0[e]&&this.checkSprite0(e)&&(this.hitSpr0=!0)}this.f_dispType===0&&this.palTable.setEmphasis(this.f_color),this.updatePalettes()}setStatusFlag(t,e){let i=1<=20&&this.scanline<=260){let i=this.curX;if(i<=64)return 255;if(i<=256){let s=this.spriteMem[this.sramAddress];return(this.sramAddress&3)===2&&(s&=227),s}else return 255}let e=this.spriteMem[this.sramAddress];return(this.sramAddress&3)===2&&(e&=227),e}sramWrite(t){(this.f_spVisibility===1||this.f_bgVisibility===1)&&this.scanline>=20&&this.scanline<=260?this.sramAddress=this.sramAddress+4&252:(this.spriteMem[this.sramAddress]=t,this.spriteRamWriteUpdate(this.sramAddress,t),this.sramAddress++,this.sramAddress%=256)}scrollWrite(t){this.triggerRendering(),this.firstWrite?(this.regHT=t>>3&31,this.regFH=t&7):(this.regFV=t&7,this.regVT=t>>3&31),this.firstWrite=!this.firstWrite}writeVRAMAddress(t){this.firstWrite?(this.regFV=t>>4&3,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3):(this.triggerRendering(),this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31,this.cntFV=this.regFV,this.cntV=this.regV,this.cntH=this.regH,this.cntVT=this.regVT,this.cntHT=this.regHT,this.checkSprite0(this.scanline+1-21)),this.firstWrite=!this.firstWrite,this.cntsToAddress(),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress)}vramLoad(){let t;if(this.cntsToAddress(),this.regsToAddress(),this.vramAddress<=16127)return t=this.vramBufferedReadValue,this.vramAddress<8192?this.vramBufferedReadValue=this.vramMem[this.vramAddress]:this.vramBufferedReadValue=this.mirroredLoad(this.vramAddress),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress),this._incrementVramAddress(),this.cntsFromAddress(),this.regsFromAddress(),t;let e=this.vramAddress&31;return(e&19)===16&&(e&=15),t=this.vramMem[16128+e]&63|this.openBusLatch&192,this.vramBufferedReadValue=this.mirroredLoad(this.vramAddress&12287),this._incrementVramAddress(),this.cntsFromAddress(),this.regsFromAddress(),t}vramWrite(t){this.triggerRendering(),this.cntsToAddress(),this.regsToAddress(),this.vramAddress>=8192?this.mirroredWrite(this.vramAddress,t):(this.nes.mmap.canWriteChr(this.vramAddress)&&this.writeMem(this.vramAddress,t),this.nes.mmap.latchAccess(this.vramAddress)),this._incrementVramAddress(),this.regsFromAddress(),this.cntsFromAddress()}sramDMA(t){let e=t*256,i;for(let n=0;n<256;n++){i=this.nes.cpu.mem[e+n];let l=this.sramAddress+n&255;this.spriteMem[l]=i,this.spriteRamWriteUpdate(l,i)}let s=this.nes.cpu,a=(s._cpuCycleBase+s.instrBusCycles)%2===0?514:513;s.haltCycles(a)}regsFromAddress(){let t=this.vramTmpAddress>>8&255;this.regFV=t>>4&7,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3,t=this.vramTmpAddress&255,this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31}_incrementVramAddress(){let t=this.f_spVisibility===1||this.f_bgVisibility===1,e=this.scanline>=20&&this.scanline<=260;if(t&&e)if((this.vramAddress&31)===31?(this.vramAddress&=-32,this.vramAddress^=1024):this.vramAddress+=1,(this.vramAddress&28672)!==28672)this.vramAddress+=4096;else{this.vramAddress&=-28673;let i=this.vramAddress>>5&31;i===29?(i=0,this.vramAddress^=2048):i===31?i=0:i+=1,this.vramAddress=this.vramAddress&-993|i<<5}else this.vramAddress+=this.f_addrInc===1?32:1}cntsFromAddress(){let t=this.vramAddress>>8&255;this.cntFV=t>>4&3,this.cntV=t>>3&1,this.cntH=t>>2&1,this.cntVT=this.cntVT&7|(t&3)<<3,t=this.vramAddress&255,this.cntVT=this.cntVT&24|t>>5&7,this.cntHT=t&31}regsToAddress(){let t=(this.regFV&7)<<4;t|=(this.regV&1)<<3,t|=(this.regH&1)<<2,t|=this.regVT>>3&3;let e=(this.regVT&7)<<5;e|=this.regHT&31,this.vramTmpAddress=(t<<8|e)&32767}cntsToAddress(){let t=(this.cntFV&7)<<4;t|=(this.cntV&1)<<3,t|=(this.cntH&1)<<2,t|=this.cntVT>>3&3;let e=(this.cntVT&7)<<5;e|=this.cntHT&31,this.vramAddress=(t<<8|e)&32767}incTileCounter(t){for(let e=t;e!==0;e--)this.cntHT++,this.cntHT===32&&(this.cntHT=0,this.cntVT++,this.cntVT>=30&&(this.cntH++,this.cntH===2&&(this.cntH=0,this.cntV++,this.cntV===2&&(this.cntV=0,this.cntFV++,this.cntFV&=7))))}mirroredLoad(t){return this.vramMem[this.vramMirrorTable[t]]}mirroredWrite(t,e){if(t>=16128&&t<16160)t===16128||t===16144?(this.writeMem(16128,e),this.writeMem(16144,e)):t===16132||t===16148?(this.writeMem(16132,e),this.writeMem(16148,e)):t===16136||t===16152?(this.writeMem(16136,e),this.writeMem(16152,e)):t===16140||t===16156?(this.writeMem(16140,e),this.writeMem(16156,e)):this.writeMem(t,e);else if(t=21&&this.scanline<=260&&(this.renderFramePartially(this.lastRenderedScanline+1,this.scanline-21-this.lastRenderedScanline),this.lastRenderedScanline=this.scanline-21)}renderFramePartially(t,e){if(this._inRendering=!0,this.nes.mmap.onSpriteRender(),this.f_spVisibility===1&&this.renderSpritesPartially(t,e,1),this.f_bgVisibility===1){let i=t<<8,s=t+e<<8;s>61440&&(s=61440);let r=this.buffer,a=this.bgbuffer,n=this.pixrendered;for(let l=i;l255&&(r[l]=a[l])}this.f_spVisibility===1&&this.renderSpritesPartially(t,e,0),this.nes.mmap.onBgRender(),this._inRendering=!1,this.validTileData=!1}renderBgScanline(t,e){let i=this.regS===0?0:256,s=this.regS===0?0:4096,r=(e<<8)-this.regFH;if(this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],this.cntHT=this.regHT,this.cntH=this.regH,this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],e<240&&e-this.cntFV>=0){let a=this.cntFV<<3,n=this.scantile,l=this.attrib,o=this.ptTile,p=this.nameTable,h=this.imgPalette,d=this.pixrendered,x=t?this.bgbuffer:this.buffer,m=this.nes.mmap,f,R,_,E;this._inRendering=!0,this.nes.mmap.onBgRender(),this.f_spriteSize===1&&m.latchAccess(8168);for(let g=0;g<32;g++){if(e>=0){let L=p[this.curNt].getTileIndex(this.cntHT,this.cntVT);if(this.validTileData){if(f=n[g],typeof f=="undefined")continue;R=f.pix,_=l[g]}else{if(f=o[i+L],typeof f=="undefined")continue;if(R=f.pix,_=p[this.curNt].getAttrib(this.cntHT,this.cntVT),m.bgTileOverride){let W=m.getBgTileData(i,L,this.cntHT,this.cntVT);W&&(f=W.tile,R=f.pix,_=W.attrib)}n[g]=f,l[g]=_}let z=0,q=(g<<3)-this.regFH;if(q>-8)if(q<0&&(r-=q,z=-q),f.opaque[this.cntFV])for(;z<8;z++)x[r]=h[R[a+z]+_],d[r]|=256,r++;else for(;z<8;z++)E=R[a+z],E!==0&&(x[r]=h[E+_],d[r]|=256),r++;m.latchAccess(s+L*16+this.cntFV+8)}++this.cntHT===32&&(this.cntHT=0,this.cntH++,this.cntH%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH])}this._inRendering=!1,this.validTileData=!0}this.cntFV++,this.cntFV===8&&(this.cntFV=0,this.cntVT++,this.cntVT===30?(this.cntVT=0,this.cntV++,this.cntV%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH]):this.cntVT===32&&(this.cntVT=0),this.validTileData=!1)}performOAMCorruption(){if(!(this.f_spVisibility===1||this.f_bgVisibility===1)||this.sramAddress===0)return;let e=this.sramAddress&248;for(let i=0;i<8;i++)this.spriteMem[i]=this.spriteMem[e+i&255];for(let i=0;i<8;i++)this.spriteRamWriteUpdate(i,this.spriteMem[i])}evaluateSprites(t){if(!(this.f_spVisibility===1||this.f_bgVisibility===1))return;let i=t*32;for(let x=0;x<32;x++)this.scanlineSecondaryOAM[i+x]=255;this.scanlineSpriteCount[t]=0,this.scanlineSprite0[t]=0;let s=this.f_spriteSize===0?8:16,r=0,a=0,n=this.sramAddress>>2&63,l=this.sramAddress&3,o=0,p=n,h=!0,d=0;do{let x;r>=8?x=o:h?x=l:x=0,h=!1;let m=this.spriteMem[p*4+x&255];if(t>m&&t<=m+s)if(r<8){for(let f=0;f<4;f++)this.scanlineSecondaryOAM[i+a+f]=this.spriteMem[p*4+x+f&255];d===0&&(this.scanlineSprite0[t]=1),r++,a+=4}else{this.setStatusFlag(this.STATUS_SLSPRITECOUNT,!0);break}else r>=8&&(o=o+1&3);p=p+1&63,d++}while(p!==0);this.scanlineSpriteCount[t]=r;for(let x=0;x<32;x++)this.secondaryOAM[x]=this.scanlineSecondaryOAM[i+x];this.spritesFound=r,this.sprite0InSecondary=this.scanlineSprite0[t]===1,this.sramAddress=0}renderSpritesPartially(t,e,i){if(this.f_spVisibility!==1)return;let s=this.nes.mmap,r=this.ptTile,a=this.buffer,n=this.sprPalette,l=this.pixrendered;for(let o=t;o=240)continue;let p=this.scanlineSpriteCount[o],h=o*32;for(let d=0;d>7&1,E=f>>6&1,g=f>>5&1,L=(f&3)<<2;if(g===i)if(this.f_spriteSize===0){let z=this.f_spPatternTable===0?m:m+256,q=this.f_spPatternTable===0?0:4096,W=x+1,J=o-W;if(J<0||J>=8)continue;r[z].render(a,0,J,8,J+1,R,W,L,n,E,_,d,l),s.latchAccess(q+m*16+8)}else{let z=(m&1)!==0?4096:0,q=m&254,W=(m&1)!==0?q-1+256:q,J=x+1,j=o-J;if(j<0||j>=16)continue;let dt,rt;j<8?(dt=_?1:0,rt=j):(dt=_?0:1,rt=j-8),r[W+dt].render(a,0,rt,8,rt+1,R,J+(j<8?0:8),L,n,E,_,d,l),s.latchAccess(z+q*16+8),s.latchAccess(z+(q+1)*16+8)}}}}checkSprite0(t){if(this.spr0HitX=-1,this.spr0HitY=-1,t<0||t>=240||!this.scanlineSprite0[t]||this.scanlineSpriteCount[t]===0)return!1;let e=t*32,i=this.scanlineSecondaryOAM[e+0],s=this.scanlineSecondaryOAM[e+1],r=this.scanlineSecondaryOAM[e+2],a=this.scanlineSecondaryOAM[e+3],n=i+1,l=r>>7&1,o=r>>6&1,p=this.f_spClipping===0||this.f_bgClipping===0,h,d,x=this.nes.mmap;if(this.f_spriteSize===0){let m=this.f_spPatternTable===0?0:256;if(n<=t&&n+8>t&&a<256)return d=x.getSpritePatternTile(s+m),h=l?7-(t-n):t-n,h*=8,this._checkSpr0Pixels(d,h,a,o,t,p)}else if(n<=t&&n+16>t&&a<256)return h=l?15-(t-n):t-n,h<8?d=x.getSpritePatternTile(s+(l?1:0)+((s&1)!==0?255:0)):(d=x.getSpritePatternTile(s+(l?0:1)+((s&1)!==0?255:0)),h=l?15-h:h-8),h*=8,this._checkSpr0Pixels(d,h,a,o,t,p);return!1}_checkSpr0Pixels(t,e,i,s,r,a){let n=r*256+i;for(let l=0;l<8;l++){let o=s?7-l:l,p=i+l;if(p>=0&&p<255){if(a&&p<8){n++;continue}if(n>=0&&n<61440&&this.pixrendered[n]>255&&t.pix[e+o]!==0)return this.spr0HitX=p,this.spr0HitY=r,!0}n++}return!1}_precomputeSprite0Hit(t){if(t<1||t>239||!this.scanlineSprite0[t]||this.scanlineSpriteCount[t]===0)return!1;let e=t*32,i=this.scanlineSecondaryOAM[e+0],s=this.scanlineSecondaryOAM[e+1],r=this.scanlineSecondaryOAM[e+2],a=this.scanlineSecondaryOAM[e+3],n=i+1,l=r>>7&1,o=r>>6&1,p=this.f_spClipping===0||this.f_bgClipping===0,h=this.f_spriteSize===0?8:16;if(!(n<=t&&n+h>t)||a>=256)return!1;let d=l?h-1-(t-n):t-n,x,m;if(this.f_spriteSize===0){let g=this.f_spPatternTable===0?0:256;x=this.ptTile[s+g],m=d*8}else{let g=(s&1)!==0?256:0,L=s&-2;d<8?(x=this.ptTile[L+g+(l?1:0)],m=d*8):(x=this.ptTile[L+g+(l?0:1)],m=(d-8)*8)}if(!x)return!1;let f=this.cntFV,R=this.cntVT,_=this.cntV,E=this.regS===0?0:256;for(let g=0;g<8;g++){let L=a+g;if(L>=255||p&&L<8)continue;let z=o?7-g:g;if(x.pix[m+z]===0)continue;let q=L+this.regFH>>3,W=this.regHT+q,J=this.regH;W>=32&&(W-=32,J^=1);let j=this.ntable1[(_<<1)+J],dt=this.nameTable[j].getTileIndex(W,R),rt=this.ptTile[E+dt];if(!rt)continue;let is=L+this.regFH&7;if(rt.pix[f*8+is]!==0)return this.spr0HitX=L,this.spr0HitY=t-1,!0}return!1}writeMem(t,e){this.vramMem[t]=e,t<8192?(this.vramMem[t]=e,this.patternWrite(t,e)):t>=8192&&t<9152?this.nameTableWrite(this.ntable1[0],t-8192,e):t>=9152&&t<9216?this.attribTableWrite(this.ntable1[0],t-9152,e):t>=9216&&t<10176?this.nameTableWrite(this.ntable1[1],t-9216,e):t>=10176&&t<10240?this.attribTableWrite(this.ntable1[1],t-10176,e):t>=10240&&t<11200?this.nameTableWrite(this.ntable1[2],t-10240,e):t>=11200&&t<11264?this.attribTableWrite(this.ntable1[2],t-11200,e):t>=11264&&t<12224?this.nameTableWrite(this.ntable1[3],t-11264,e):t>=12224&&t<12288?this.attribTableWrite(this.ntable1[3],t-12224,e):t>=16128&&t<16160&&this.updatePalettes()}updatePalettes(){let t;for(t=0;t<16;t++)this.f_dispType===0?this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&63):this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&48);for(t=0;t<16;t++)this.f_dispType===0?this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&63):this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&48)}patternWrite(t,e){let i=t>>4,s=t&15;s<8?this.ptTile[i].setScanline(s,e,this.vramMem[t+8]):this.ptTile[i].setScanline(s-8,this.vramMem[t-8],e)}nameTableWrite(t,e,i){this.nameTable[t].tile[e]=i;let s=this.scanline+1-21;this.checkSprite0(s)}attribTableWrite(t,e,i){this.nameTable[t].writeAttrib(e,i),this.nameTable[t].tile[960+e]=i}spriteRamWriteUpdate(t,e){let i=t>>2;if(i===0){let s=this.scanline+1-21;this.checkSprite0(s)}switch(t&3){case 0:this.sprY[i]=e;break;case 1:this.sprTile[i]=e;break;case 2:this.vertFlip[i]=e>>7&1,this.horiFlip[i]=e>>6&1,this.bgPriority[i]=e>>5&1,this.sprCol[i]=(e&3)<<2;break;case 3:this.sprX[i]=e;break}}isPixelWhite(t,e){return this.triggerRendering(),this.nes.ppu.buffer[(e<<8)+t]===16777215}toJSON(){let t,e=w(this);for(e.nameTable=[],t=0;t=0&&(this.scantile[e]=this.ptTile[i])}for(e=0;e{H();U=class U{constructor(t){this.papu=t,this.isEnabled=!1,this.hasSample=!1,this.irqGenerated=!1,this.playMode=U.MODE_NORMAL,this.dmaFrequency=0,this.dmaCounter=0,this.deltaCounter=0,this.playStartAddress=0,this.playAddress=0,this.playLength=0,this.playLengthCounter=0,this.sample=0,this.dacLsb=0,this.shiftCounter=0,this.reg4012=0,this.reg4013=0,this.data=0,this.lastFetchedByte=0}clockDmc(){this.hasSample&&((this.data&1)===0?this.deltaCounter>0&&this.deltaCounter--:this.deltaCounter<63&&this.deltaCounter++,this.sample=this.isEnabled?(this.deltaCounter<<1)+this.dacLsb:0,this.data>>=1),this.dmaCounter--,this.dmaCounter<=0&&(this.hasSample=!1,this.endOfSample(),this.dmaCounter=8),this.irqGenerated&&this.papu.nes.cpu.requestIrq(this.papu.nes.cpu.IRQ_NORMAL)}endOfSample(){this.playLengthCounter===0&&this.playMode===U.MODE_LOOP&&(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength),this.playLengthCounter>0&&(this.nextSample(),this.playLengthCounter===0&&this.playMode===U.MODE_IRQ&&(this.irqGenerated=!0))}nextSample(){this.data=this.papu.nes.mmap.load(this.playAddress),this.lastFetchedByte=this.data,this.papu.nes.cpu.haltCycles(4),this.playLengthCounter--,this.playAddress++,this.playAddress>65535&&(this.playAddress=32768),this.hasSample=!0}writeReg(t,e){t===16400?(e>>6===0?this.playMode=U.MODE_NORMAL:(e>>6&1)===1?this.playMode=U.MODE_LOOP:e>>6===2&&(this.playMode=U.MODE_IRQ),(e&128)===0&&(this.irqGenerated=!1),this.dmaFrequency=this.papu.getDmcFrequency(e&15)):t===16401?(this.deltaCounter=e>>1&63,this.dacLsb=e&1,this.sample=(this.deltaCounter<<1)+this.dacLsb):t===16402?(this.playStartAddress=e<<6|49152,this.reg4012=e):t===16403?(this.playLength=(e<<4)+1,this.reg4013=e):t===16405&&(this.irqGenerated=!1,(e>>4&1)===0?this.playLengthCounter=0:this.playLengthCounter===0&&(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength,!this.hasSample&&this.playLengthCounter>0&&(this.nextSample(),this.dmaCounter=8,this.shiftCounter=this.dmaFrequency,this.playLengthCounter===0&&this.playMode===U.MODE_IRQ&&(this.irqGenerated=!0))))}setEnabled(t){this.isEnabled=t}getLengthStatus(){return this.playLengthCounter===0||!this.isEnabled?0:1}getIrqStatus(){return this.irqGenerated?1:0}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(U,"MODE_NORMAL",0),c(U,"MODE_LOOP",1),c(U,"MODE_IRQ",2),c(U,"JSON_PROPERTIES",["isEnabled","hasSample","irqGenerated","playMode","dmaFrequency","dmaCounter","deltaCounter","playStartAddress","playAddress","playLength","playLengthCounter","shiftCounter","reg4012","reg4013","sample","dacLsb","data","lastFetchedByte"]);Re=U,$e=Re});var Mt,ei,ii=S(()=>{H();Mt=class{constructor(t){this.papu=t,this.progTimerCount=0,this.progTimerMax=0,this.isEnabled=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1,this.envReset=!1,this.shiftNow=!1,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.shiftReg=1,this.randomBit=0,this.randomMode=0,this.sampleValue=0,this.tmp=0,this.accValue=0,this.accCount=1}clockLengthCounter(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())}clockEnvDecay(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()}updateSampleValue(){this.isEnabled&&this.lengthCounter>0&&(this.sampleValue=this.randomBit*this.masterVolume)}writeReg(t,e){t===16396?(this.envDecayDisable=(e&16)!==0,this.envDecayRate=e&15,this.envDecayLoopEnable=(e&32)!==0,this.lengthCounterEnable=(e&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume):t===16398?(this.progTimerMax=this.papu.getNoiseWaveLength(e&15),this.randomMode=e>>7):t===16399&&(this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(e&248)),this.envReset=!0)}setEnabled(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()}getLengthStatus(){return this.lengthCounter===0||!this.isEnabled?0:1}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(Mt,"JSON_PROPERTIES",["isEnabled","envDecayDisable","envDecayLoopEnable","lengthCounterEnable","envReset","shiftNow","lengthCounter","progTimerCount","progTimerMax","envDecayRate","envDecayCounter","envVolume","masterVolume","shiftReg","randomBit","randomMode","sampleValue","accValue","accCount","tmp"]);ei=Mt});var Ot,ge,si=S(()=>{H();Ot=class{constructor(t,e){this.papu=t,this.dutyLookup=[0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1],this.impLookup=[1,-1,0,0,0,0,0,0,1,0,-1,0,0,0,0,0,1,0,0,0,-1,0,0,0,-1,0,1,0,0,0,0,0],this.sqr1=e,this.progTimerCount=0,this.progTimerMax=0,this.lengthCounter=0,this.squareCounter=0,this.sweepCounter=0,this.sweepCounterMax=0,this.sweepMode=0,this.sweepShiftAmount=0,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.dutyMode=0,this.vol=0,this.isEnabled=!1,this.lengthCounterEnable=!1,this.sweepActive=!1,this.sweepCarry=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1,this.envReset=!1,this.updateSweepPeriod=!1,this.sweepResult=0,this.sampleValue=0}clockLengthCounter(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())}clockEnvDecay(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()}clockSweep(){--this.sweepCounter<=0&&(this.sweepCounter=this.sweepCounterMax+1,this.sweepActive&&this.sweepShiftAmount>0&&this.progTimerMax>7&&(this.sweepCarry=!1,this.sweepMode===0?(this.progTimerMax+=this.progTimerMax>>this.sweepShiftAmount,this.progTimerMax>2047&&(this.progTimerMax=4095,this.sweepCarry=!0)):this.progTimerMax=this.progTimerMax-((this.progTimerMax>>this.sweepShiftAmount)+(this.sqr1?1:0)))),this.updateSweepPeriod&&(this.updateSweepPeriod=!1,this.sweepCounter=this.sweepCounterMax+1)}updateSampleValue(){this.isEnabled&&this.lengthCounter>0&&this.progTimerMax>7?this.sweepMode===0&&this.progTimerMax+(this.progTimerMax>>this.sweepShiftAmount)>2047?this.sampleValue=0:this.sampleValue=this.masterVolume*this.dutyLookup[(this.dutyMode<<3)+this.squareCounter]:this.sampleValue=0}writeReg(t,e){let i=this.sqr1?0:4;t===16384+i?(this.envDecayDisable=(e&16)!==0,this.envDecayRate=e&15,this.envDecayLoopEnable=(e&32)!==0,this.dutyMode=e>>6&3,this.lengthCounterEnable=(e&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()):t===16385+i?(this.sweepActive=(e&128)!==0,this.sweepCounterMax=e>>4&7,this.sweepMode=e>>3&1,this.sweepShiftAmount=e&7,this.updateSweepPeriod=!0):t===16386+i?(this.progTimerMax&=1792,this.progTimerMax|=e):t===16387+i&&(this.progTimerMax&=255,this.progTimerMax|=(e&7)<<8,this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(e&248)),this.envReset=!0)}setEnabled(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()}getLengthStatus(){return this.lengthCounter===0||!this.isEnabled?0:1}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(Ot,"JSON_PROPERTIES",["isEnabled","lengthCounterEnable","sweepActive","envDecayDisable","envDecayLoopEnable","envReset","sweepCarry","updateSweepPeriod","progTimerCount","progTimerMax","lengthCounter","squareCounter","sweepCounter","sweepCounterMax","sweepMode","sweepShiftAmount","envDecayRate","envDecayCounter","envVolume","masterVolume","dutyMode","sweepResult","sampleValue","vol"]);ge=Ot});var It,ri,hi=S(()=>{H();It=class{constructor(t){this.papu=t,this.progTimerCount=0,this.progTimerMax=0,this.triangleCounter=0,this.isEnabled=!1,this.sampleCondition=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.linearCounter=0,this.lcLoadValue=0,this.lcHalt=!0,this.lcControl=!1,this.tmp=0,this.sampleValue=15}clockLengthCounter(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleCondition())}clockLinearCounter(){this.lcHalt?(this.linearCounter=this.lcLoadValue,this.updateSampleCondition()):this.linearCounter>0&&(this.linearCounter--,this.updateSampleCondition()),this.lcControl||(this.lcHalt=!1)}getLengthStatus(){return this.lengthCounter===0||!this.isEnabled?0:1}readReg(t){return 0}writeReg(t,e){t===16392?(this.lcControl=(e&128)!==0,this.lcLoadValue=e&127,this.lengthCounterEnable=!this.lcControl):t===16394?(this.progTimerMax&=1792,this.progTimerMax|=e):t===16395&&(this.progTimerMax&=255,this.progTimerMax|=(e&7)<<8,this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(e&248)),this.lcHalt=!0),this.updateSampleCondition()}clockProgrammableTimer(t){if(this.progTimerMax>0)for(this.progTimerCount+=t;this.progTimerMax>0&&this.progTimerCount>=this.progTimerMax;)this.progTimerCount-=this.progTimerMax,this.isEnabled&&this.lengthCounter>0&&this.linearCounter>0&&this.clockTriangleGenerator()}clockTriangleGenerator(){this.triangleCounter++,this.triangleCounter&=31}setEnabled(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleCondition()}updateSampleCondition(){this.sampleCondition=this.isEnabled&&this.progTimerMax>7&&this.linearCounter>0&&this.lengthCounter>0}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(It,"JSON_PROPERTIES",["isEnabled","sampleCondition","lengthCounterEnable","lcHalt","lcControl","progTimerCount","progTimerMax","triangleCounter","lengthCounter","linearCounter","lcLoadValue","sampleValue","tmp"]);ri=It});var ai,Ks,Qs,$s,tr,Pt,be,ni=S(()=>{H();ti();ii();si();hi();ai=17897725e-1,Ks=[7457,14913,22371,29828,29829],Qs=[7457,14913,22371,29829,37281],$s=29830,tr=37282,Pt=class{constructor(t){this.nes=t,this.square1=new ge(this,!0),this.square2=new ge(this,!1),this.triangle=new ri(this),this.noise=new ei(this),this.dmc=new $e(this),this.startedPlaying=!1,this.recordOutput=!1,this.triValue=0,this.prevSampleL=0,this.prevSampleR=0,this.smpAccumL=0,this.smpAccumR=0,this.dacRange=0,this.dcValue=0,this.masterVolume=256,this.panning=[80,170,100,150,128],this.setPanning(this.panning),this.initLengthLookup(),this.initDmcFrequencyLookup(),this.initNoiseWavelengthLookup(),this.initDACtables();for(let e=0;e<20;e++)e===16?this.writeReg(16400,16):this.writeReg(16384+e,0);this.sampleRate=this.nes.opts.sampleRate,this.sampleTimerMax=Math.floor(1024*ai/this.sampleRate),this.sampleTimer=0,this.updateChannelEnable(0),this.frameCycleCounter=0,this.frameStep=0,this.countSequence=0,this.sampleCount=0,this.frameIrqEnabled=!1,this.frameIrqActive=!1,this.frameIrqClearPending=!1,this.apuCycleParity=0,this.accCount=0,this.smpSquare1=0,this.smpSquare2=0,this.smpTriangle=0,this.smpDmc=0,this.channelEnableValue=255,this.extraCycles=0,this.maxSample=-5e5,this.minSample=5e5}readReg(t){let e=0;return e|=this.square1.getLengthStatus(),e|=this.square2.getLengthStatus()<<1,e|=this.triangle.getLengthStatus()<<2,e|=this.noise.getLengthStatus()<<3,e|=this.dmc.getLengthStatus()<<4,e|=this.nes.cpu.dataBus&32,e|=(this.frameIrqActive?1:0)<<6,e|=this.dmc.getIrqStatus()<<7,this.frameIrqActive&&(this.frameIrqClearPending=!0),e&255}writeReg(t,e){if(t>=16384&&t<16388)this.square1.writeReg(t,e);else if(t>=16388&&t<16392)this.square2.writeReg(t,e);else if(t>=16392&&t<16396)this.triangle.writeReg(t,e);else if(t>=16396&&t<=16399)this.noise.writeReg(t,e);else if(t===16400)this.dmc.writeReg(t,e);else if(t===16401)this.dmc.writeReg(t,e);else if(t===16402)this.dmc.writeReg(t,e);else if(t===16403)this.dmc.writeReg(t,e);else if(t===16405)this.updateChannelEnable(e),this.dmc.writeReg(t,e);else if(t===16407){this.countSequence=e>>7&1;let i=this.nes.cpu,s=i.instrBusCycles+1-i.apuCatchupCycles,r=this.apuCycleParity+s&1;this.frameCycleCounter=-7+r,this.frameStep=0,e&64?(this.frameIrqEnabled=!1,this.frameIrqActive=!1,this.frameIrqClearPending=!1):this.frameIrqEnabled=!0,this.countSequence===1&&(this.clockQuarterFrame(),this.clockHalfFrame())}}updateChannelEnable(t){this.channelEnableValue=t&65535,this.square1.setEnabled((t&1)!==0),this.square2.setEnabled((t&2)!==0),this.triangle.setEnabled((t&4)!==0),this.noise.setEnabled((t&8)!==0),this.dmc.setEnabled((t&16)!==0)}clockFrameCounter(t,e){let i=t-(e||0);this.processFrameIrqClear(i),this.apuCycleParity=this.apuCycleParity+i&1,t+=this.extraCycles;let s=this.sampleTimerMax-this.sampleTimer;t<<10>s?(this.extraCycles=(t<<10)-s>>10,t-=this.extraCycles):this.extraCycles=0;let r=this.dmc,a=this.triangle,n=this.square1,l=this.square2,o=this.noise;if(r.isEnabled)for(r.shiftCounter-=t<<3;r.shiftCounter<=0&&r.dmaFrequency>0;)r.shiftCounter+=r.dmaFrequency,r.clockDmc();if(a.progTimerMax>0)for(a.progTimerCount-=t;a.progTimerCount<=0;)a.progTimerCount+=a.progTimerMax+1,a.linearCounter>0&&a.lengthCounter>0&&(a.triangleCounter++,a.triangleCounter&=31,a.isEnabled&&(a.triangleCounter>=16?a.sampleValue=a.triangleCounter&15:a.sampleValue=15-(a.triangleCounter&15),a.sampleValue<<=4));n.progTimerCount-=t,n.progTimerCount<=0&&(n.progTimerCount+=n.progTimerMax+1<<1,n.squareCounter++,n.squareCounter&=7,n.updateSampleValue()),l.progTimerCount-=t,l.progTimerCount<=0&&(l.progTimerCount+=l.progTimerMax+1<<1,l.squareCounter++,l.squareCounter&=7,l.updateSampleValue());let p=t;if(o.progTimerCount-p>0)o.progTimerCount-=p,o.accCount+=p,o.accValue+=p*o.sampleValue;else for(;p-- >0;)--o.progTimerCount<=0&&o.progTimerMax>0&&(o.shiftReg<<=1,o.tmp=(o.shiftReg<<(o.randomMode===0?1:6)^o.shiftReg)&32768,o.tmp!==0?(o.shiftReg|=1,o.randomBit=0,o.sampleValue=0):(o.randomBit=1,o.isEnabled&&o.lengthCounter>0?o.sampleValue=o.masterVolume:o.sampleValue=0),o.progTimerCount+=o.progTimerMax),o.accValue+=o.sampleValue,o.accCount++;this.frameIrqEnabled&&this.frameIrqActive&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this._advanceFrameSteps(i),this.accSample(t),this.sampleTimer+=t<<10,this.sampleTimer>=this.sampleTimerMax&&(this.sample(),this.sampleTimer-=this.sampleTimerMax)}processFrameIrqClear(t){if(!this.frameIrqClearPending||t<=0)return;let e=(this.apuCycleParity&1)===0?1:2;t>=e&&(this.frameIrqActive=!1,this.frameIrqClearPending=!1)}advanceFrameCounter(t){this.processFrameIrqClear(t),this.apuCycleParity=this.apuCycleParity+t&1,this._advanceFrameSteps(t)}_advanceFrameSteps(t){this.frameCycleCounter+=t;let e=this.countSequence===0?Ks:Qs,i=this.countSequence===0?$s:tr;for(;;)if(this.frameStep=e[this.frameStep])this.fireFrameStep(this.frameStep),this.frameStep++;else if(this.frameStep>=e.length&&this.frameCycleCounter>=i)this.frameStep=0,this.frameCycleCounter-=i,this.countSequence===0&&(this.frameIrqActive=this.frameIrqEnabled,this.frameIrqClearPending=!1);else break}accSample(t){this.triangle.sampleCondition&&(this.triValue=Math.floor((this.triangle.progTimerCount<<4)/(this.triangle.progTimerMax+1)),this.triValue>16&&(this.triValue=16),this.triangle.triangleCounter>=16&&(this.triValue=16-this.triValue),this.triValue+=this.triangle.sampleValue),t===2?(this.smpTriangle+=this.triValue<<1,this.smpDmc+=this.dmc.sample<<1,this.smpSquare1+=this.square1.sampleValue<<1,this.smpSquare2+=this.square2.sampleValue<<1,this.accCount+=2):t===4?(this.smpTriangle+=this.triValue<<2,this.smpDmc+=this.dmc.sample<<2,this.smpSquare1+=this.square1.sampleValue<<2,this.smpSquare2+=this.square2.sampleValue<<2,this.accCount+=4):(this.smpTriangle+=t*this.triValue,this.smpDmc+=t*this.dmc.sample,this.smpSquare1+=t*this.square1.sampleValue,this.smpSquare2+=t*this.square2.sampleValue,this.accCount+=t)}fireFrameStep(t){if(this.countSequence===0)switch(t){case 0:this.clockQuarterFrame();break;case 1:this.clockQuarterFrame(),this.clockHalfFrame();break;case 2:this.clockQuarterFrame();break;case 3:this.frameIrqActive=!0,this.frameIrqClearPending=!1;break;case 4:this.clockQuarterFrame(),this.clockHalfFrame(),this.frameIrqActive=!0,this.frameIrqClearPending=!1;break}else switch(t){case 0:this.clockQuarterFrame();break;case 1:this.clockQuarterFrame(),this.clockHalfFrame();break;case 2:this.clockQuarterFrame();break;case 3:break;case 4:this.clockQuarterFrame(),this.clockHalfFrame();break}}clockQuarterFrame(){this.square1.clockEnvDecay(),this.square2.clockEnvDecay(),this.noise.clockEnvDecay(),this.triangle.clockLinearCounter()}clockHalfFrame(){this.triangle.clockLengthCounter(),this.square1.clockLengthCounter(),this.square2.clockLengthCounter(),this.noise.clockLengthCounter(),this.square1.clockSweep(),this.square2.clockSweep()}sample(){let t,e;this.accCount>0?(this.smpSquare1<<=4,this.smpSquare1=Math.floor(this.smpSquare1/this.accCount),this.smpSquare2<<=4,this.smpSquare2=Math.floor(this.smpSquare2/this.accCount),this.smpTriangle=Math.floor(this.smpTriangle/this.accCount),this.smpDmc<<=4,this.smpDmc=Math.floor(this.smpDmc/this.accCount),this.accCount=0):(this.smpSquare1=this.square1.sampleValue<<4,this.smpSquare2=this.square2.sampleValue<<4,this.smpTriangle=this.triangle.sampleValue,this.smpDmc=this.dmc.sample<<4);let i=Math.floor((this.noise.accValue<<4)/this.noise.accCount);this.noise.accValue=i>>4,this.noise.accCount=1,t=this.smpSquare1*this.stereoPosLSquare1+this.smpSquare2*this.stereoPosLSquare2>>8,e=3*this.smpTriangle*this.stereoPosLTriangle+(i<<1)*this.stereoPosLNoise+this.smpDmc*this.stereoPosLDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),e>=this.tnd_table.length&&(e=this.tnd_table.length-1);let s=this.square_table[t]+this.tnd_table[e]-this.dcValue;t=this.smpSquare1*this.stereoPosRSquare1+this.smpSquare2*this.stereoPosRSquare2>>8,e=3*this.smpTriangle*this.stereoPosRTriangle+(i<<1)*this.stereoPosRNoise+this.smpDmc*this.stereoPosRDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),e>=this.tnd_table.length&&(e=this.tnd_table.length-1);let r=this.square_table[t]+this.tnd_table[e]-this.dcValue,a=s-this.prevSampleL;this.prevSampleL+=a,this.smpAccumL+=a-(this.smpAccumL>>10),s=this.smpAccumL;let n=r-this.prevSampleR;this.prevSampleR+=n,this.smpAccumR+=n-(this.smpAccumR>>10),r=this.smpAccumR,s>this.maxSample&&(this.maxSample=s),s>3]}getDmcFrequency(t){return t>=0&&t<16?this.dmcFreqLookup[t]:0}getNoiseWaveLength(t){return t>=0&&t<16?this.noiseWavelengthLookup[t]:0}setFrameRate(t){this.sampleTimerMax=Math.floor(1024*ai*t/(this.sampleRate*60))}setPanning(t){for(let e=0;e<5;e++)this.panning[e]=t[e];this.updateStereoPos()}setMasterVolume(t){t<0&&(t=0),t>256&&(t=256),this.masterVolume=t,this.updateStereoPos()}updateStereoPos(){this.stereoPosLSquare1=this.panning[0]*this.masterVolume>>8,this.stereoPosLSquare2=this.panning[1]*this.masterVolume>>8,this.stereoPosLTriangle=this.panning[2]*this.masterVolume>>8,this.stereoPosLNoise=this.panning[3]*this.masterVolume>>8,this.stereoPosLDMC=this.panning[4]*this.masterVolume>>8,this.stereoPosRSquare1=this.masterVolume-this.stereoPosLSquare1,this.stereoPosRSquare2=this.masterVolume-this.stereoPosLSquare2,this.stereoPosRTriangle=this.masterVolume-this.stereoPosLTriangle,this.stereoPosRNoise=this.masterVolume-this.stereoPosLNoise,this.stereoPosRDMC=this.masterVolume-this.stereoPosLDMC}initLengthLookup(){this.lengthLookup=[10,254,20,2,40,4,80,6,160,8,60,10,14,12,26,14,12,16,24,18,48,20,96,22,192,24,72,26,16,28,32,30]}initDmcFrequencyLookup(){this.dmcFreqLookup=new Array(16),this.dmcFreqLookup[0]=3424,this.dmcFreqLookup[1]=3040,this.dmcFreqLookup[2]=2720,this.dmcFreqLookup[3]=2560,this.dmcFreqLookup[4]=2288,this.dmcFreqLookup[5]=2032,this.dmcFreqLookup[6]=1808,this.dmcFreqLookup[7]=1712,this.dmcFreqLookup[8]=1520,this.dmcFreqLookup[9]=1280,this.dmcFreqLookup[10]=1136,this.dmcFreqLookup[11]=1024,this.dmcFreqLookup[12]=848,this.dmcFreqLookup[13]=672,this.dmcFreqLookup[14]=576,this.dmcFreqLookup[15]=432}initNoiseWavelengthLookup(){this.noiseWavelengthLookup=new Array(16),this.noiseWavelengthLookup[0]=4,this.noiseWavelengthLookup[1]=8,this.noiseWavelengthLookup[2]=16,this.noiseWavelengthLookup[3]=32,this.noiseWavelengthLookup[4]=64,this.noiseWavelengthLookup[5]=96,this.noiseWavelengthLookup[6]=128,this.noiseWavelengthLookup[7]=160,this.noiseWavelengthLookup[8]=202,this.noiseWavelengthLookup[9]=254,this.noiseWavelengthLookup[10]=380,this.noiseWavelengthLookup[11]=508,this.noiseWavelengthLookup[12]=762,this.noiseWavelengthLookup[13]=1016,this.noiseWavelengthLookup[14]=2034,this.noiseWavelengthLookup[15]=4068}initDACtables(){let t,e,i,s=0,r=0;for(this.square_table=new Float32Array(512),this.tnd_table=new Float32Array(3264),i=0;i<512;i++)t=95.52/(8128/(i/16)+100),t*=.98411,t*=5e4,e=Math.floor(t),this.square_table[i]=e,e>s&&(s=e);for(i=0;i<3264;i++)t=163.67/(24329/(i/16)+100),t*=.98411,t*=5e4,e=Math.floor(t),this.tnd_table[i]=e,e>r&&(r=e);this.dacRange=s+r,this.dcValue=this.dacRange/2}toJSON(){let t=w(this);return t.dmc=this.dmc.toJSON(),t.noise=this.noise.toJSON(),t.square1=this.square1.toJSON(),t.square2=this.square2.toJSON(),t.triangle=this.triangle.toJSON(),t}fromJSON(t){V(this,t),this.dmc.fromJSON(t.dmc),this.noise.fromJSON(t.noise),this.square1.fromJSON(t.square1),this.square2.fromJSON(t.square2),this.triangle.fromJSON(t.triangle)}};c(Pt,"JSON_PROPERTIES",["channelEnableValue","sampleRate","frameIrqEnabled","frameIrqActive","frameIrqClearPending","apuCycleParity","startedPlaying","recordOutput","frameCycleCounter","frameStep","countSequence","sampleTimer","sampleTimerMax","sampleCount","triValue","smpSquare1","smpSquare2","smpTriangle","smpDmc","accCount","prevSampleL","prevSampleR","smpAccumL","smpAccumR","masterVolume","stereoPosLSquare1","stereoPosLSquare2","stereoPosLTriangle","stereoPosLNoise","stereoPosLDMC","stereoPosRSquare1","stereoPosRSquare2","stereoPosRTriangle","stereoPosRNoise","stereoPosRDMC","extraCycles","maxSample","minSample","panning"]);be=Pt});function er(u){return oi.indexOf(u)}function ir(u){return oi[u]}function Ce(u,t){let e=u.toString(16);return"0000".substring(0,t-e.length)+e}var oi,_e,li,ci=S(()=>{oi="APZLGITYEOXUKSVN";_e=class{constructor(){this.patches=[],this.enabled=!0,this.onChange=null}setEnabled(t){this.enabled=t,this.onChange&&this.onChange()}addCode(t){let e=this.decode(t);if(!e)throw new Error(`Invalid Game Genie code: ${t}`);this.patches.push(e),this.onChange&&this.onChange()}addPatch(t,e,i){this.patches.push({addr:t,value:e,key:i}),this.onChange&&this.onChange()}removeAllCodes(){this.patches=[],this.onChange&&this.onChange()}applyCodes(t,e){if(!this.enabled)return e;for(let i=0;i>3);return{value:i,addr:s,wantskey:a,key:r}}encodeHex(t,e,i,s){let r=Ce(t,4)+":"+Ce(e,2);return(i!==void 0||s)&&(r+="?"),i!==void 0&&(r+=Ce(i,2)),r}decodeHex(t){let e=t.match(/([0-9a-fA-F]+):([0-9a-fA-F]+)(\?[0-9a-fA-F]*)?/);if(!e)return null;let i=parseInt(e[1],16),s=parseInt(e[2],16),r=e[3]!==void 0,a=e[3]!==void 0&&e[3].length>1?parseInt(e[3].substring(1),16):void 0;return{value:s,addr:i,wantskey:r,key:a}}encode(t,e,i,s){let r=Array(6);return r[0]=(e&7)+(e>>4&8),r[1]=(e>>4&7)+(t>>4&8),r[2]=t>>4&7,r[3]=(t>>12)+(t&8),r[4]=(t&7)+(t>>8&8),r[5]=t>>8&7,i===void 0?(r[5]+=e&8,s&&(r[2]+=8)):(r[2]+=8,r[5]+=i&8,r[6]=(i&7)+(i>>4&8),r[7]=(i>>4&7)+(e&8)),r.map(ir).join("")}},li=_e});var Vt,C,O=S(()=>{H();Vt=class{constructor(t){this.nes=t,this.joy1StrobeState=0,this.joy2StrobeState=0,this.joypadLastWrite=0,this.joypadOutputBit0=0,this.joypadLastWriteCycle=-2,this.zapperFired=!1,this.zapperX=null,this.zapperY=null,this.bgTileOverride=!1}write(t,e){t<8192?this.nes.cpu.mem[t&2047]=e:t>=32768||(t>=24576?(this.nes.cpu.mem[t]=e,this.nes.opts.onBatteryRamWrite(t,e)):t>16407?this.nes.cpu.mem[t]=e:t>8199&&t<16384?this.regWrite(8192+(t&7),e):this.regWrite(t,e))}writelow(t,e){t<8192?this.nes.cpu.mem[t&2047]=e:t>=32768||(t>16407?this.nes.cpu.mem[t]=e:t>8199&&t<16384?this.regWrite(8192+(t&7),e):this.regWrite(t,e))}load(t){return t&=65535,t>16407?t<24576?this.nes.cpu.dataBus:this.nes.cpu.mem[t]:t>=8192?this.regLoad(t):this.nes.cpu.mem[t&2047]}regLoad(t){switch(t>>12){case 0:break;case 1:break;case 2:case 3:switch(t&7){case 0:return this.nes.ppu.openBusLatch;case 1:return this.nes.ppu.openBusLatch;case 2:return this.nes.ppu.readStatusRegister();case 3:return this.nes.ppu.openBusLatch;case 4:return this.nes.ppu.sramLoad();case 5:return this.nes.ppu.openBusLatch;case 6:return this.nes.ppu.openBusLatch;case 7:return this.nes.ppu.vramLoad()}break;case 4:switch(t-16405){case 0:return this.nes.papu.readReg(t);case 1:return this.joy1Read()&31|this.nes.cpu.dataBus&224;case 2:{let i=0;return this.zapperX!==null&&this.zapperY!==null&&(this.nes.ppu.isPixelWhite(this.zapperX,this.zapperY)||(i=8)),this.zapperFired&&(i|=16),(this.joy2Read()|i)&31|this.nes.cpu.dataBus&224}}break}let e=this.nes.cpu;if(e._dmcFetchCycles>0&&e._dmcFetchCycles===e.instrBusCycles+1){let i=this.nes.papu.dmc;if(i&&i.isEnabled)return i.lastFetchedByte}return e.dataBus}regWrite(t,e){switch(t>=8192&&t<=16383&&(this.nes.ppu.openBusLatch=e,this.nes.ppu.openBusDecayFrames=36),t){case 8192:this.nes.cpu.mem[t]=e,this.nes.ppu.updateControlReg1(e);break;case 8193:this.nes.cpu.mem[t]=e,this.nes.ppu.updateControlReg2(e);break;case 8195:this.nes.ppu.writeSRAMAddress(e);break;case 8196:this.nes.ppu.sramWrite(e);break;case 8197:this.nes.ppu.scrollWrite(e);break;case 8198:this.nes.ppu.writeVRAMAddress(e);break;case 8199:this.nes.ppu.vramWrite(e);break;case 16404:this.nes.ppu.sramDMA(e);break;case 16405:this.nes.papu.writeReg(t,e);break;case 16406:{let i=this.nes.cpu,s=i._cpuCycleBase+i.instrBusCycles;if(s-this.joypadLastWriteCycle>1){let r=this.joypadLastWrite&1;r!==this.joypadOutputBit0&&(this.joypadOutputBit0===1&&r===0&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadOutputBit0=r)}if(this.joypadLastWrite=e,this.joypadLastWriteCycle=s,s%2===1){let r=e&1;this.joypadOutputBit0===1&&r===0&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadOutputBit0=r}break}case 16407:this.nes.papu.writeReg(t,e);break;default:t>=16384&&t<=16407&&this.nes.papu.writeReg(t,e)}}_syncJoypadOutput(){let t=this.joypadLastWrite&1;t!==this.joypadOutputBit0&&(this.joypadOutputBit0===1&&t===0&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadOutputBit0=t)}joy1Read(){if(this._syncJoypadOutput(),this.joypadOutputBit0)return this.nes.controllers[1].state[0];let t;return this.joy1StrobeState<8?t=this.nes.controllers[1].state[this.joy1StrobeState]:t=1,this.joy1StrobeState++,this.joy1StrobeState===24&&(this.joy1StrobeState=0),t}joy2Read(){if(this._syncJoypadOutput(),this.joypadOutputBit0)return this.nes.controllers[2].state[0];let t;return this.joy2StrobeState<8?t=this.nes.controllers[2].state[this.joy2StrobeState]:t=1,this.joy2StrobeState++,this.joy2StrobeState===24&&(this.joy2StrobeState=0),t}loadROM(){if(!this.nes.rom.valid||this.nes.rom.romCount<1)throw new Error("NoMapper: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}loadPRGROM(){this.nes.rom.romCount>1?(this.loadRomBank(0,32768),this.loadRomBank(1,49152)):(this.loadRomBank(0,32768),this.loadRomBank(0,49152))}loadCHRROM(){this.nes.rom.vromCount>0&&(this.nes.rom.vromCount===1?(this.loadVromBank(0,0),this.loadVromBank(0,4096)):(this.loadVromBank(0,0),this.loadVromBank(1,4096)))}loadBatteryRam(){if(this.nes.rom.batteryRam){let t=this.nes.rom.batteryRam;t!==null&&t.length===8192&&v(t,0,this.nes.cpu.mem,24576,8192)}}loadRomBank(t,e){t%=this.nes.rom.romCount,v(this.nes.rom.rom[t],0,this.nes.cpu.mem,e,16384)}loadVromBank(t,e){if(this.nes.rom.vromCount===0)return;this.nes.ppu.triggerRendering(),v(this.nes.rom.vrom[t%this.nes.rom.vromCount],0,this.nes.ppu.vramMem,e,4096);let i=this.nes.rom.vromTile[t%this.nes.rom.vromCount];v(i,0,this.nes.ppu.ptTile,e>>4,256)}load32kRomBank(t,e){this.loadRomBank(t*2%this.nes.rom.romCount,e),this.loadRomBank((t*2+1)%this.nes.rom.romCount,e+16384)}load8kVromBank(t,e){this.nes.rom.vromCount!==0&&(this.nes.ppu.triggerRendering(),this.loadVromBank(t%this.nes.rom.vromCount,e),this.loadVromBank((t+1)%this.nes.rom.vromCount,e+4096))}load1kVromBank(t,e){if(this.nes.rom.vromCount===0)return;this.nes.ppu.triggerRendering();let i=Math.floor(t/4)%this.nes.rom.vromCount,s=t%4*1024;v(this.nes.rom.vrom[i],s,this.nes.ppu.vramMem,e,1024);let r=this.nes.rom.vromTile[i],a=e>>4;for(let n=0;n<64;n++)this.nes.ppu.ptTile[a+n]=r[(t%4<<6)+n]}load2kVromBank(t,e){if(this.nes.rom.vromCount===0)return;this.nes.ppu.triggerRendering();let i=Math.floor(t/2)%this.nes.rom.vromCount,s=t%2*2048;v(this.nes.rom.vrom[i],s,this.nes.ppu.vramMem,e,2048);let r=this.nes.rom.vromTile[i],a=e>>4;for(let n=0;n<128;n++)this.nes.ppu.ptTile[a+n]=r[(t%2<<7)+n]}load8kRomBank(t,e){let i=Math.floor(t/2)%this.nes.rom.romCount,s=t%2*8192;v(this.nes.rom.rom[i],s,this.nes.cpu.mem,e,8192)}canWriteChr(t){return this.nes.rom.vromCount===0}clockIrqCounter(){}latchAccess(t){}onBgRender(){}onSpriteRender(){}getBgTileData(){return null}getSpritePatternTile(t){return this.nes.ppu.ptTile[t]}toJSON(){return{joy1StrobeState:this.joy1StrobeState,joy2StrobeState:this.joy2StrobeState,joypadLastWrite:this.joypadLastWrite,joypadOutputBit0:this.joypadOutputBit0,joypadLastWriteCycle:this.joypadLastWriteCycle}}fromJSON(t){var e;this.joy1StrobeState=t.joy1StrobeState,this.joy2StrobeState=t.joy2StrobeState,this.joypadLastWrite=t.joypadLastWrite,this.joypadOutputBit0=t.joypadOutputBit0||0,this.joypadLastWriteCycle=(e=t.joypadLastWriteCycle)!=null?e:-2}};c(Vt,"mapperName","NROM");C=Vt});var wt,mi,fi=S(()=>{O();wt=class extends C{constructor(t){super(t),this.regBuffer=0,this.regBufferCounter=0,this.mirroring=0,this.oneScreenMirroring=0,this.prgSwitchingArea=1,this.prgSwitchingSize=1,this.vromSwitchingSize=0,this.romSelectionReg0=0,this.romSelectionReg1=0,this.romBankSelect=0}write(t,e){if(t<32768){super.write(t,e);return}(e&128)!==0?(this.regBufferCounter=0,this.regBuffer=0,this.getRegNumber(t)===0&&(this.prgSwitchingArea=1,this.prgSwitchingSize=1)):(this.regBuffer=this.regBuffer&255-(1<>2&1,this.prgSwitchingSize=e>>3&1,this.vromSwitchingSize=e>>4&1;break;case 1:this.romSelectionReg0=e>>4&1,this.nes.rom.vromCount>0&&(this.vromSwitchingSize===0?this.romSelectionReg0===0?this.load8kVromBank(e&15,0):this.load8kVromBank(Math.floor(this.nes.rom.vromCount/2)+(e&15),0):this.romSelectionReg0===0?this.loadVromBank(e&15,0):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(e&15),0));break;case 2:this.romSelectionReg1=e>>4&1,this.nes.rom.vromCount>0&&this.vromSwitchingSize===1&&(this.romSelectionReg1===0?this.loadVromBank(e&15,4096):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(e&15),4096));break;default:{let s,r=0;this.nes.rom.romCount>=32?this.vromSwitchingSize===0?this.romSelectionReg0===1&&(r=16):r=(this.romSelectionReg0|this.romSelectionReg1<<1)<<3:this.nes.rom.romCount>=16&&this.romSelectionReg0===1&&(r=8),this.prgSwitchingSize===0?(s=r+(e&15),this.load32kRomBank(s,32768)):(s=r*2+(e&15),this.prgSwitchingArea===0?this.loadRomBank(s,49152):this.loadRomBank(s,32768))}}}getRegNumber(t){return t>=32768&&t<=40959?0:t>=40960&&t<=49151?1:t>=49152&&t<=57343?2:3}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC1: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}switchLowHighPrgRom(t){}switch16to32(){}switch32to16(){}toJSON(){let t=super.toJSON();return t.mirroring=this.mirroring,t.oneScreenMirroring=this.oneScreenMirroring,t.prgSwitchingArea=this.prgSwitchingArea,t.prgSwitchingSize=this.prgSwitchingSize,t.vromSwitchingSize=this.vromSwitchingSize,t.romSelectionReg0=this.romSelectionReg0,t.romSelectionReg1=this.romSelectionReg1,t.romBankSelect=this.romBankSelect,t.regBuffer=this.regBuffer,t.regBufferCounter=this.regBufferCounter,t}fromJSON(t){super.fromJSON(t),this.mirroring=t.mirroring,this.oneScreenMirroring=t.oneScreenMirroring,this.prgSwitchingArea=t.prgSwitchingArea,this.prgSwitchingSize=t.prgSwitchingSize,this.vromSwitchingSize=t.vromSwitchingSize,this.romSelectionReg0=t.romSelectionReg0,this.romSelectionReg1=t.romSelectionReg1,this.romBankSelect=t.romBankSelect,this.regBuffer=t.regBuffer,this.regBufferCounter=t.regBufferCounter}};c(wt,"mapperName","MMC1");mi=wt});var Gt,pi,ui=S(()=>{O();Gt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.loadRomBank(e,32768)}loadROM(){if(!this.nes.rom.valid)throw new Error("UNROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(Gt,"mapperName","UxROM");pi=Gt});var Dt,xi,di=S(()=>{O();Dt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load8kVromBank(e*2,0)}};c(Dt,"mapperName","CNROM");xi=Dt});var P,Se,Y,Lt=S(()=>{O();P=class P extends C{constructor(t){super(t),this.command=0,this.prgAddressSelect=0,this.chrAddressSelect=0,this.pageNumber=0,this.irqCounter=255,this.irqLatchValue=255,this.irqReload=0,this.irqEnable=0,this.prgAddressChanged=!1}write(t,e){if(t<32768){super.write(t,e);return}switch(t&57345){case 32768:{this.command=e&7;let i=e>>6&1;i!==this.prgAddressSelect&&(this.prgAddressChanged=!0),this.prgAddressSelect=i,this.chrAddressSelect=e>>7&1;break}case 32769:this.executeCommand(this.command,e);break;case 40960:(e&1)!==0?this.nes.ppu.setMirroring(this.nes.rom.HORIZONTAL_MIRRORING):this.nes.ppu.setMirroring(this.nes.rom.VERTICAL_MIRRORING);break;case 40961:break;case 49152:this.irqLatchValue=e;break;case 49153:this.irqReload=1;break;case 57344:this.irqEnable=0;break;case 57345:this.irqEnable=1;break}}executeCommand(t,e){switch(t){case P.CMD_SEL_2_1K_VROM_0000:this.chrAddressSelect===0?(this.load1kVromBank(e,0),this.load1kVromBank(e+1,1024)):(this.load1kVromBank(e,4096),this.load1kVromBank(e+1,5120));break;case P.CMD_SEL_2_1K_VROM_0800:this.chrAddressSelect===0?(this.load1kVromBank(e,2048),this.load1kVromBank(e+1,3072)):(this.load1kVromBank(e,6144),this.load1kVromBank(e+1,7168));break;case P.CMD_SEL_1K_VROM_1000:this.chrAddressSelect===0?this.load1kVromBank(e,4096):this.load1kVromBank(e,0);break;case P.CMD_SEL_1K_VROM_1400:this.chrAddressSelect===0?this.load1kVromBank(e,5120):this.load1kVromBank(e,1024);break;case P.CMD_SEL_1K_VROM_1800:this.chrAddressSelect===0?this.load1kVromBank(e,6144):this.load1kVromBank(e,2048);break;case P.CMD_SEL_1K_VROM_1C00:this.chrAddressSelect===0?this.load1kVromBank(e,7168):this.load1kVromBank(e,3072);break;case P.CMD_SEL_ROM_PAGE1:this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1),this.prgAddressSelect===0?this.load8kRomBank(e,32768):this.load8kRomBank(e,49152);break;case P.CMD_SEL_ROM_PAGE2:this.load8kRomBank(e,40960),this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1)}}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC3: Invalid ROM! Unable to load.");this.load8kRomBank((this.nes.rom.romCount-1)*2,49152),this.load8kRomBank((this.nes.rom.romCount-1)*2+1,57344),this.load8kRomBank(0,32768),this.load8kRomBank(1,40960),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}clockIrqCounter(){this.irqReload===1&&(this.irqCounter=this.irqLatchValue,this.irqReload=0),this.irqCounter--,this.irqCounter<0&&(this.irqEnable===1&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this.irqCounter=this.irqLatchValue)}toJSON(){let t=super.toJSON();return t.command=this.command,t.prgAddressSelect=this.prgAddressSelect,t.chrAddressSelect=this.chrAddressSelect,t.pageNumber=this.pageNumber,t.irqCounter=this.irqCounter,t.irqReload=this.irqReload,t.irqLatchValue=this.irqLatchValue,t.irqEnable=this.irqEnable,t.prgAddressChanged=this.prgAddressChanged,t}fromJSON(t){super.fromJSON(t),this.command=t.command,this.prgAddressSelect=t.prgAddressSelect,this.chrAddressSelect=t.chrAddressSelect,this.pageNumber=t.pageNumber,this.irqCounter=t.irqCounter,this.irqReload=t.irqReload||0,this.irqLatchValue=t.irqLatchValue,this.irqEnable=t.irqEnable,this.prgAddressChanged=t.prgAddressChanged}};c(P,"mapperName","MMC3"),c(P,"CMD_SEL_2_1K_VROM_0000",0),c(P,"CMD_SEL_2_1K_VROM_0800",1),c(P,"CMD_SEL_1K_VROM_1000",2),c(P,"CMD_SEL_1K_VROM_1400",3),c(P,"CMD_SEL_1K_VROM_1800",4),c(P,"CMD_SEL_1K_VROM_1C00",5),c(P,"CMD_SEL_ROM_PAGE1",6),c(P,"CMD_SEL_ROM_PAGE2",7);Se=P,Y=Se});var zt,Ri,gi=S(()=>{O();H();zt=class extends C{constructor(t){super(t),this.prgMode=3,this.prgBankReg=new Uint8Array(5),this.prgBankReg[4]=255,this.prgRam=new Uint8Array(65536),this.prgRamProtectA=3,this.prgRamProtectB=3,this.chrMode=3,this.chrBankA=new Uint16Array(8),this.chrBankB=new Uint16Array(4),this.chrUpperBits=0,this.lastChrWrite=0,this.ntMapping=new Uint8Array(4),this.exramMode=0,this.exram=new Uint8Array(1024),this.fillTile=0,this.fillAttr=0,this.irqTarget=0,this.irqEnabled=!1,this.irqPending=!1,this.inFrame=!1,this.irqCounter=0,this.multA=0,this.multB=0,this.splitEnabled=!1,this.splitRight=!1,this.splitTile=0,this.splitScroll=0,this.splitPage=0,this.pulse1=this._initPulse(),this.pulse2=this._initPulse(),this.pcmValue=0,this.pcmReadMode=!1,this.pcmIrqEnabled=!1,this.audioEnabled=0,this._chrBankTarget=-1}_initPulse(){return{enabled:!1,dutyCycle:0,lengthHalt:!1,constantVolume:!1,volume:0,timer:0,timerCounter:0,lengthCounter:0,envelopeCounter:0,envelopeDecay:15,envelopeStart:!1,sequencePos:0}}load(t){if(t&=65535,t<20480)return super.load(t);if(t===20501){let e=0;return this.pulse1.lengthCounter>0&&(e|=1),this.pulse2.lengthCounter>0&&(e|=2),e}if(t===20496)return 0;if(t>=20736&&t<=20740)return this.nes.cpu.dataBus;if(t===20741)return this.nes.cpu.dataBus;if(t===20996){let e=this.nes.ppu;e.scanline>=20&&e.scanline<=260&&(e.f_bgVisibility===1||e.f_spVisibility===1)||(this.inFrame=!1);let s=0;return this.irqPending&&(s|=128),this.inFrame&&(s|=64),this.irqPending=!1,s}if(t===20997)return this.multA*this.multB&255;if(t===20998)return this.multA*this.multB>>8&255;if(t>=23552&&t<=24575)return this.exramMode>=2?this.exram[t-23552]:this.nes.cpu.dataBus;if(t<24576)return this.nes.cpu.dataBus;if(t<32768){let i=(this.prgBankReg[0]&7)*8192+(t-24576);return this.prgRam[i&65535]}return this._readPrg(t)}_readPrg(t){let e,i,s,r,a;switch(this.prgMode){case 0:return i=this.prgBankReg[4],r=(i&124)>>2,this._readPrgRom32k(r,t-32768);case 1:return t<49152?(i=this.prgBankReg[2],s=(i&128)===0,s?(r=(i&6)>>1,this.prgRam[r*16384+(t-32768)]):(r=(i&126)>>1,this._readPrgRom16k(r,t-32768))):(i=this.prgBankReg[4],r=(i&126)>>1,this._readPrgRom16k(r,t-49152));case 2:return t<49152?(i=this.prgBankReg[2],s=(i&128)===0,s?(r=(i&6)>>1,this.prgRam[r*16384+(t-32768)]):(r=(i&126)>>1,this._readPrgRom16k(r,t-32768))):t<57344?(i=this.prgBankReg[3],s=(i&128)===0,s?(r=i&7,this.prgRam[r*8192+(t-49152)]):(r=i&127,this._readPrgRom8k(r,t-49152))):(i=this.prgBankReg[4],r=i&127,this._readPrgRom8k(r,t-57344));default:return t<40960?e=1:t<49152?e=2:t<57344?e=3:e=4,i=this.prgBankReg[e],a=e===1?32768:e===2?40960:e===3?49152:57344,e<4&&(i&128)===0?(r=i&7,this.prgRam[r*8192+(t-a)]):(r=i&127,this._readPrgRom8k(r,t-a))}}_readPrgRom32k(t,e){let i=(t*2+Math.floor(e/16384))%this.nes.rom.romCount,s=e%16384;return this.nes.rom.rom[i][s]}_readPrgRom16k(t,e){return t%=this.nes.rom.romCount,this.nes.rom.rom[t][e]}_readPrgRom8k(t,e){let i=Math.floor(t/2)%this.nes.rom.romCount,s=t%2*8192+e;return i=20480&&t<=20483){this._writePulse(this.pulse1,t-20480,e);return}if(t>=20484&&t<=20487){this._writePulse(this.pulse2,t-20484,e);return}if(t===20496){this.pcmReadMode=(e&1)!==0,this.pcmIrqEnabled=(e&128)!==0;return}if(t===20497){!this.pcmReadMode&&e!==0&&(this.pcmValue=e);return}if(t===20501){this.audioEnabled=e&3,this.pulse1.enabled=(e&1)!==0,this.pulse2.enabled=(e&2)!==0,this.pulse1.enabled||(this.pulse1.lengthCounter=0),this.pulse2.enabled||(this.pulse2.lengthCounter=0);return}if(t===20736){this.prgMode=e&3,this._syncPrg();return}if(t===20737){this.chrMode=e&3,this._syncChr();return}if(t===20738){this.prgRamProtectA=e&3;return}if(t===20739){this.prgRamProtectB=e&3;return}if(t===20740){this.exramMode=e&3,this.bgTileOverride=this.exramMode===1,this._syncNametables();return}if(t===20741){let i=e;this.ntMapping[0]=i&3,i>>=2,this.ntMapping[1]=i&3,i>>=2,this.ntMapping[2]=i&3,i>>=2,this.ntMapping[3]=i&3,this._syncNametables();return}if(t===20742){this.fillTile=e,this._syncNametables();return}if(t===20743){this.fillAttr=e&3,this._syncNametables();return}if(t===20755){this.prgBankReg[0]=e&7;return}if(t>=20756&&t<=20759){let i=t-20755;this.prgBankReg[i]=e,this._syncPrg();return}if(t>=20768&&t<=20775){let i=t-20768;this.chrBankA[i]=this.chrUpperBits<<8|e,this.lastChrWrite=0,this._syncChr();return}if(t>=20776&&t<=20779){let i=t-20776;this.chrBankB[i]=this.chrUpperBits<<8|e,this.lastChrWrite=1,this._syncChr();return}if(t===20784){this.chrUpperBits=e&3;return}if(t===20992){this.splitEnabled=(e&128)!==0,this.splitRight=(e&64)!==0,this.splitTile=e&31;return}if(t===20993){this.splitScroll=e;return}if(t===20994){this.splitPage=e&63;return}if(t===20995){this.irqTarget=e;return}if(t===20996){this.irqEnabled=(e&128)!==0,this.irqEnabled&&this.irqPending&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL);return}if(t===20997){this.multA=e;return}if(t===20998){this.multB=e;return}if(t>=23552&&t<=24575){let i=t-23552;this.exramMode===0||this.exramMode===1?(this.exram[i]=this.inFrame?e:0,this._syncExramToVram(i)):this.exramMode===2&&(this.exram[i]=e);return}if(t>=24576&&t<=32767){if(this.prgRamProtectA===2&&this.prgRamProtectB===1){let s=(this.prgBankReg[0]&7)*8192+(t-24576);this.prgRam[s&65535]=e,this.nes.cpu.mem[t]=e,this.nes.opts.onBatteryRamWrite(t,e)}return}if(t>=32768){this._writePrg(t,e);return}}_writePrg(t,e){let i,s,r,a,n;switch(this.prgMode){case 0:return;case 1:t<49152&&(s=this.prgBankReg[2],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=(s&6)>>1,this.prgRam[a*16384+(t-32768)]=e));return;case 2:t<49152?(s=this.prgBankReg[2],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=(s&6)>>1,this.prgRam[a*16384+(t-32768)]=e)):t<57344&&(s=this.prgBankReg[3],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=s&7,this.prgRam[a*8192+(t-49152)]=e));return;default:if(t<40960)i=1,n=32768;else if(t<49152)i=2,n=40960;else if(t<57344)i=3,n=49152;else return;s=this.prgBankReg[i],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=s&7,this.prgRam[a*8192+(t-n)]=e);return}}_isPrgRamWritable(){return this.prgRamProtectA===2&&this.prgRamProtectB===1}_syncPrg(){switch(this.prgMode){case 0:{let e=(this.prgBankReg[4]&124)>>2;this.load32kRomBank(e,32768);break}case 1:{let t=this.prgBankReg[2];if(t&128){let s=(t&126)>>1;this.loadRomBank(s%this.nes.rom.romCount,32768)}let i=(this.prgBankReg[4]&126)>>1;this.loadRomBank(i%this.nes.rom.romCount,49152);break}case 2:{let t=this.prgBankReg[2];if(t&128){let s=(t&126)>>1;this.loadRomBank(s%this.nes.rom.romCount,32768)}let e=this.prgBankReg[3];e&128&&this.load8kRomBank(e&127,49152);let i=this.prgBankReg[4];this.load8kRomBank(i&127,57344);break}default:{for(let t=1;t<=4;t++){let e=this.prgBankReg[t],i=24576+t*8192;(t===4||e&128)&&this.load8kRomBank(e&127,i)}break}}}_syncChr(){this.nes.ppu.triggerRendering(),this._chrBankTarget=-1,this.nes.ppu.f_spriteSize===0&&(this._applyChrSetA(),this._chrBankTarget=0)}_applyChrSetA(){if(this.nes.rom.vromCount!==0)switch(this.chrMode){case 0:this.load8kVromBank((this.chrBankA[7]&255)*2,0);break;case 1:this.loadVromBank(this.chrBankA[3]&255,0),this.loadVromBank(this.chrBankA[7]&255,4096);break;case 2:this.load2kVromBank(this.chrBankA[1]&511,0),this.load2kVromBank(this.chrBankA[3]&511,2048),this.load2kVromBank(this.chrBankA[5]&511,4096),this.load2kVromBank(this.chrBankA[7]&511,6144);break;default:for(let t=0;t<8;t++)this.load1kVromBank(this.chrBankA[t]&1023,t*1024);break}}_applyChrSetB(){if(this.nes.rom.vromCount!==0)switch(this.chrMode){case 0:this.load8kVromBank((this.chrBankB[3]&255)*2,0);break;case 1:this.loadVromBank(this.chrBankB[3]&255,0),this.loadVromBank(this.chrBankB[3]&255,4096);break;case 2:this.load2kVromBank(this.chrBankB[1]&511,0),this.load2kVromBank(this.chrBankB[3]&511,2048),this.load2kVromBank(this.chrBankB[1]&511,4096),this.load2kVromBank(this.chrBankB[3]&511,6144);break;default:for(let t=0;t<4;t++)this.load1kVromBank(this.chrBankB[t]&1023,t*1024),this.load1kVromBank(this.chrBankB[t]&1023,(t+4)*1024);break}}_syncNametables(){let t=this.nes.ppu,e=this.fillAttr|this.fillAttr<<2|this.fillAttr<<4|this.fillAttr<<6;for(let s=0;s<960;s++)t.vramMem[11264+s]=this.fillTile;for(let s=960;s<1024;s++)t.vramMem[11264+s]=e;if(this.exramMode>=2)for(let s=0;s<1024;s++)t.vramMem[10240+s]=0;else v(this.exram,0,t.vramMem,10240,1024);let i=[8192,9216,10240,11264];for(let s=0;s<4;s++){let r=8192+s*1024,a=i[this.ntMapping[s]];t.defineMirrorRegion(r,a,1024)}t.defineMirrorRegion(12288,8192,3840);for(let s=0;s<4;s++)t.ntable1[s]=this.ntMapping[s];this._populateNameTable(2,10240),this._populateNameTable(3,11264)}_populateNameTable(t,e){let i=this.nes.ppu,s=i.nameTable[t];for(let r=0;r<960;r++)s.tile[r]=i.vramMem[e+r];for(let r=0;r<64;r++)s.writeAttrib(r,i.vramMem[e+960+r])}_syncExramToVram(t){if(this.exramMode<2){let e=this.nes.ppu;e.vramMem[10240+t]=this.exram[t],t<960?e.nameTable[2].tile[t]=this.exram[t]:t<1024&&e.nameTable[2].writeAttrib(t-960,this.exram[t])}}_writePulse(t,e,i){switch(e){case 0:t.dutyCycle=i>>6&3,t.lengthHalt=(i&32)!==0,t.constantVolume=(i&16)!==0,t.volume=i&15;break;case 1:break;case 2:t.timer=t.timer&1792|i;break;case 3:t.timer=t.timer&255|(i&7)<<8,t.enabled&&(t.lengthCounter=this.nes.papu.getLengthMax(i)),t.envelopeStart=!0,t.sequencePos=0;break}}clockIrqCounter(){if(this.nes.ppu.scanline===20){this.inFrame=!0,this.irqCounter=0;return}this.irqCounter++,this.irqTarget!==0&&this.irqCounter===this.irqTarget&&(this.irqPending=!0,this.irqEnabled&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL)),(this.irqCounter&3)===0&&(this._clockPulseLengthCounter(this.pulse1),this._clockPulseLengthCounter(this.pulse2))}_clockPulseLengthCounter(t){t.enabled&&!t.lengthHalt&&t.lengthCounter>0&&t.lengthCounter--}onBgRender(){this.nes.ppu.f_spriteSize===1&&this._chrBankTarget!==1&&(this._applyChrSetB(),this._chrBankTarget=1,this.nes.ppu.validTileData=!1)}onSpriteRender(){this.nes.ppu.f_spriteSize===1&&this._chrBankTarget!==0&&(this._applyChrSetA(),this._chrBankTarget=0)}getSpritePatternTile(t){if(this.nes.ppu.f_spriteSize!==1||this.nes.rom.vromCount===0)return this.nes.ppu.ptTile[t];let e=this.nes.rom.vromCount,i=this.nes.rom.vromTile;switch(this.chrMode){case 0:{let s=(this.chrBankA[7]&255)*2,r=t>=256?1:0,a=(s+r)%e;return i[a][t-r*256]}case 1:{let s;return t<256?s=(this.chrBankA[3]&255)%e:s=(this.chrBankA[7]&255)%e,i[s][t%256]}case 2:{let s=[1,3,5,7],r=t>>7,a=t&127,n=this.chrBankA[s[r]]&511,l=Math.floor(n/2)%e;return i[l][(n%2<<7)+a]}default:{let s=t>>6,r=t&63,a=this.chrBankA[s]&1023,n=Math.floor(a/4)%e;return i[n][(a%4<<6)+r]}}}getBgTileData(t,e,i,s){if(this.exramMode!==1||this.nes.rom.vromCount===0)return null;let r=s*32+i,a=this.exram[r],l=(a&63|this.chrUpperBits<<6)%this.nes.rom.vromCount,o=this.nes.rom.vromTile[l][e];if(!o)return null;let p=(a>>6&3)<<2;return{tile:o,attrib:p}}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC5: Invalid ROM! Unable to load.");this.prgBankReg[4]=255,this._syncPrg(),this.loadCHRROM(),this.loadBatteryRam(),this._syncNametables(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}toJSON(){let t=super.toJSON();return t.prgMode=this.prgMode,t.prgBankReg=Array.from(this.prgBankReg),t.prgRam=Array.from(this.prgRam),t.prgRamProtectA=this.prgRamProtectA,t.prgRamProtectB=this.prgRamProtectB,t.chrMode=this.chrMode,t.chrBankA=Array.from(this.chrBankA),t.chrBankB=Array.from(this.chrBankB),t.chrUpperBits=this.chrUpperBits,t.lastChrWrite=this.lastChrWrite,t.ntMapping=Array.from(this.ntMapping),t.exramMode=this.exramMode,t.exram=Array.from(this.exram),t.fillTile=this.fillTile,t.fillAttr=this.fillAttr,t.irqTarget=this.irqTarget,t.irqEnabled=this.irqEnabled,t.irqPending=this.irqPending,t.inFrame=this.inFrame,t.irqCounter=this.irqCounter,t.multA=this.multA,t.multB=this.multB,t.splitEnabled=this.splitEnabled,t.splitRight=this.splitRight,t.splitTile=this.splitTile,t.splitScroll=this.splitScroll,t.splitPage=this.splitPage,t.pcmValue=this.pcmValue,t.pcmReadMode=this.pcmReadMode,t.pcmIrqEnabled=this.pcmIrqEnabled,t.audioEnabled=this.audioEnabled,t.pulse1=Object.assign({},this.pulse1),t.pulse2=Object.assign({},this.pulse2),t}fromJSON(t){super.fromJSON(t),this.prgMode=t.prgMode,this.prgBankReg=new Uint8Array(t.prgBankReg),this.prgRam=new Uint8Array(t.prgRam),this.prgRamProtectA=t.prgRamProtectA,this.prgRamProtectB=t.prgRamProtectB,this.chrMode=t.chrMode,this.chrBankA=new Uint16Array(t.chrBankA),this.chrBankB=new Uint16Array(t.chrBankB),this.chrUpperBits=t.chrUpperBits,this.lastChrWrite=t.lastChrWrite,this.ntMapping=new Uint8Array(t.ntMapping),this.exramMode=t.exramMode,this.exram=new Uint8Array(t.exram),this.fillTile=t.fillTile,this.fillAttr=t.fillAttr,this.irqTarget=t.irqTarget,this.irqEnabled=t.irqEnabled,this.irqPending=t.irqPending,this.inFrame=t.inFrame,this.irqCounter=t.irqCounter,this.multA=t.multA,this.multB=t.multB,this.splitEnabled=t.splitEnabled,this.splitRight=t.splitRight,this.splitTile=t.splitTile,this.splitScroll=t.splitScroll,this.splitPage=t.splitPage,this.pcmValue=t.pcmValue,this.pcmReadMode=t.pcmReadMode,this.pcmIrqEnabled=t.pcmIrqEnabled,this.audioEnabled=t.audioEnabled,t.pulse1&&(this.pulse1=Object.assign(this._initPulse(),t.pulse1)),t.pulse2&&(this.pulse2=Object.assign(this._initPulse(),t.pulse2)),this._syncPrg(),this._syncChr(),this._syncNametables()}};c(zt,"mapperName","MMC5");Ri=zt});var qt,bi,Ci=S(()=>{O();qt=class extends C{constructor(t){super(t)}write(t,e){t<32768?super.write(t,e):(this.load32kRomBank(e&7,32768),e&16?this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING2):this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING))}loadROM(){if(!this.nes.rom.valid)throw new Error("AOROM: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(qt,"mapperName","AxROM");bi=qt});var vt,_i,Si=S(()=>{O();vt=class extends C{constructor(t){super(t),this.prgBank=0,this.chrBankFD0=0,this.chrBankFE0=0,this.chrBankFD1=0,this.chrBankFE1=0,this.latch0=254,this.latch1=254}write(t,e){if(t<32768){super.write(t,e);return}switch(t&61440){case 40960:this.prgBank=e&15,this.load8kRomBank(this.prgBank,32768);break;case 45056:this.chrBankFD0=e&31,this._updateChr0();break;case 49152:this.chrBankFE0=e&31,this._updateChr0();break;case 53248:this.chrBankFD1=e&31,this._updateChr1();break;case 57344:this.chrBankFE1=e&31,this._updateChr1();break;case 61440:e&1?this.nes.ppu.setMirroring(this.nes.rom.HORIZONTAL_MIRRORING):this.nes.ppu.setMirroring(this.nes.rom.VERTICAL_MIRRORING);break}}_updateChr0(){let t=this.latch0===253?this.chrBankFD0:this.chrBankFE0;this.loadVromBank(t,0)}_updateChr1(){let t=this.latch1===253?this.chrBankFD1:this.chrBankFE1;this.loadVromBank(t,4096)}latchAccess(t){t===4056?this.latch0!==253&&(this.latch0=253,this._updateChr0()):t===4072?this.latch0!==254&&(this.latch0=254,this._updateChr0()):t>=8152&&t<=8159?this.latch1!==253&&(this.latch1=253,this._updateChr1()):t>=8168&&t<=8175&&this.latch1!==254&&(this.latch1=254,this._updateChr1())}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC2: Invalid ROM! Unable to load.");this.load8kRomBank(0,32768);let t=(this.nes.rom.romCount-1)*2+1;this.load8kRomBank(t-2,40960),this.load8kRomBank(t-1,49152),this.load8kRomBank(t,57344),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}toJSON(){let t=super.toJSON();return t.prgBank=this.prgBank,t.chrBankFD0=this.chrBankFD0,t.chrBankFE0=this.chrBankFE0,t.chrBankFD1=this.chrBankFD1,t.chrBankFE1=this.chrBankFE1,t.latch0=this.latch0,t.latch1=this.latch1,t}fromJSON(t){super.fromJSON(t),this.prgBank=t.prgBank,this.chrBankFD0=t.chrBankFD0,this.chrBankFE0=t.chrBankFE0,this.chrBankFD1=t.chrBankFD1,this.chrBankFE1=t.chrBankFE1,this.latch0=t.latch0,this.latch1=t.latch1}};c(vt,"mapperName","MMC2");_i=vt});var Ut,yi,Ei=S(()=>{O();Ut=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else{let i=(e&15)*2%this.nes.rom.romCount,s=((e&15)*2+1)%this.nes.rom.romCount;if(this.loadRomBank(i,32768),this.loadRomBank(s,49152),this.nes.rom.vromCount>0){let r=(e>>4)*2%this.nes.rom.vromCount;this.loadVromBank(r,0),this.loadVromBank(r+1,4096)}}}};c(Ut,"mapperName","Color Dreams");yi=Ut});var Wt,Ti,Ai=S(()=>{O();Wt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load32kRomBank(e,32768)}};c(Wt,"mapperName","BNROM");Ti=Wt});var Ht,ki,Fi=S(()=>{O();Ht=class extends C{constructor(t){super(t)}write(t,e){if(t<28672||t>32767){super.write(t,e);return}else this.load32kRomBank(e&3,32768),this.load8kVromBank((e>>2&3)*2,0)}};c(Ht,"mapperName","PCI556");ki=Ht});var Yt,Bi,Ni=S(()=>{O();Yt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load32kRomBank(e>>4&3,32768),this.load8kVromBank((e&3)*2,0)}};c(Yt,"mapperName","GxROM");Bi=Yt});var Jt,Mi,Oi=S(()=>{O();Jt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}t>=36864&&t<40960?e&16?this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING2):this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING):t>=49152&&this.loadRomBank(e&15,32768)}loadROM(){if(!this.nes.rom.valid)throw new Error("Mapper 71: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(Jt,"mapperName","Camerica");Mi=Jt});var Xt,Ii,Pi=S(()=>{O();Xt=class extends C{constructor(t){super(t)}write(t,e){(t&57600)===16640&&(this.load32kRomBank(e>>3&1,32768),this.load8kVromBank((e&7)*2,0)),super.write(t,e)}};c(Xt,"mapperName","NINA-03/NINA-06");Ii=Xt});var jt,Vi,wi=S(()=>{O();jt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.loadRomBank(e>>2,32768)}loadROM(){if(!this.nes.rom.valid)throw new Error("UN1ROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(jt,"mapperName","UN1ROM");Vi=jt});var Zt,Gi,Di=S(()=>{Lt();Zt=class extends Y{constructor(t){super(t),this.chrRegs=[0,0,0,0,0,0]}write(t,e){t!==40960&&(super.write(t,e),t===32768&&this.updateNametableMirroring())}executeCommand(t,e){t<=5?(this.chrRegs[t]=e,super.executeCommand(t,e&127),this.updateNametableMirroring()):super.executeCommand(t,e)}updateNametableMirroring(){let t=this.nes.ppu;if(this.chrAddressSelect===0){let e=this.chrRegs[0]>>7&1,i=this.chrRegs[1]>>7&1;t.ntable1[0]=e,t.ntable1[1]=e,t.ntable1[2]=i,t.ntable1[3]=i}else t.ntable1[0]=this.chrRegs[2]>>7&1,t.ntable1[1]=this.chrRegs[3]>>7&1,t.ntable1[2]=this.chrRegs[4]>>7&1,t.ntable1[3]=this.chrRegs[5]>>7&1;for(let e=0;e<4;e++){let i=8192+e*1024,s=8192+t.ntable1[e]*1024;t.defineMirrorRegion(i,s,1024)}t.currentMirroring=-1}loadROM(){super.loadROM(),this.updateNametableMirroring()}toJSON(){let t=super.toJSON();return t.chrRegs=this.chrRegs.slice(),t}fromJSON(t){super.fromJSON(t),this.chrRegs=t.chrRegs,this.updateNametableMirroring()}};c(Zt,"mapperName","TxSROM");Gi=Zt});var Kt,Li,zi=S(()=>{Lt();Bt();H();Kt=class extends Y{constructor(t){super(t),this.chrRam=new Uint8Array(8192),this.chrRamTiles=new Array(8);for(let e=0;e<8;e++){this.chrRamTiles[e]=new Array(64);for(let i=0;i<64;i++)this.chrRamTiles[e][i]=new xt}this.chrRamSlots=[-1,-1,-1,-1,-1,-1,-1,-1]}executeCommand(t,e){switch(t){case Y.CMD_SEL_2_1K_VROM_0000:{let i=this.chrAddressSelect===0?0:4096;if(e&64){let s=e&6;this.load1kChrRamBank(s,i),this.load1kChrRamBank(s+1,i+1024)}else{let s=e&63;this.saveChrRamSlot(i),this.saveChrRamSlot(i+1024),this.chrRamSlots[i>>10]=-1,this.chrRamSlots[(i>>10)+1]=-1,this.load1kVromBank(s,i),this.load1kVromBank(s+1,i+1024)}break}case Y.CMD_SEL_2_1K_VROM_0800:{let i=this.chrAddressSelect===0?2048:6144;if(e&64){let s=e&6;this.load1kChrRamBank(s,i),this.load1kChrRamBank(s+1,i+1024)}else{let s=e&63;this.saveChrRamSlot(i),this.saveChrRamSlot(i+1024),this.chrRamSlots[i>>10]=-1,this.chrRamSlots[(i>>10)+1]=-1,this.load1kVromBank(s,i),this.load1kVromBank(s+1,i+1024)}break}case Y.CMD_SEL_1K_VROM_1000:{let i=this.chrAddressSelect===0?4096:0;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}case Y.CMD_SEL_1K_VROM_1400:{let i=this.chrAddressSelect===0?5120:1024;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}case Y.CMD_SEL_1K_VROM_1800:{let i=this.chrAddressSelect===0?6144:2048;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}case Y.CMD_SEL_1K_VROM_1C00:{let i=this.chrAddressSelect===0?7168:3072;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}default:super.executeCommand(t,e)}}saveChrRamSlot(t){let e=t>>10,i=this.chrRamSlots[e];i!==-1&&v(this.nes.ppu.vramMem,e<<10,this.chrRam,i*1024,1024)}load1kChrRamBank(t,e){this.nes.ppu.triggerRendering(),t&=7,this.saveChrRamSlot(e);let i=e>>10;this.chrRamSlots[i]=t;let s=t*1024;v(this.chrRam,s,this.nes.ppu.vramMem,e,1024),this.rebuildChrRamTiles(t);let r=e>>4;for(let a=0;a<64;a++)this.nes.ppu.ptTile[r+a]=this.chrRamTiles[t][a]}rebuildChrRamTiles(t){let e=t*1024;for(let i=0;i<1024;i++){let s=i>>4,r=i%16;r<8?this.chrRamTiles[t][s].setScanline(r,this.chrRam[e+i],this.chrRam[e+i+8]):this.chrRamTiles[t][s].setScanline(r-8,this.chrRam[e+i-8],this.chrRam[e+i])}}canWriteChr(t){return t>=8192?!1:this.chrRamSlots[t>>10]!==-1}toJSON(){for(let e=0;e<8;e++)this.saveChrRamSlot(e<<10);let t=super.toJSON();return t.chrRam=Array.from(this.chrRam),t.chrRamSlots=this.chrRamSlots.slice(),t}fromJSON(t){super.fromJSON(t),this.chrRam=new Uint8Array(t.chrRam),this.chrRamSlots=t.chrRamSlots;for(let e=0;e<8;e++)this.rebuildChrRamTiles(e);for(let e=0;e<8;e++){let i=this.chrRamSlots[e];if(i!==-1){let s=e<<10>>4;for(let r=0;r<64;r++)this.nes.ppu.ptTile[s+r]=this.chrRamTiles[i][r]}}}};c(Kt,"mapperName","TQROM");Li=Kt});var Qt,qi,vi=S(()=>{O();Qt=class extends C{constructor(t){super(t)}write(t,e){if(t<24576||t>32767){super.write(t,e);return}else this.load32kRomBank(e>>4&3,32768),this.load8kVromBank((e&15)*2,0)}};c(Qt,"mapperName","Jaleco JF-11/JF-14");qi=Qt});var $t,Ui,Wi=S(()=>{O();$t=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.loadRomBank(e,49152)}loadROM(){if(!this.nes.rom.valid)throw new Error("Mapper 180: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(0,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c($t,"mapperName","UNROM (Crazy Climber)");Ui=$t});var te,Hi,Yi=S(()=>{O();te=class extends C{constructor(t){super(t)}write(t,e){if(t<16416||t>24575){super.write(t,e);return}else this.load32kRomBank(e>>4&3,32768),this.load8kVromBank((e&15)*2,0)}};c(te,"mapperName","Mapper 240");Hi=te});var ee,Ji,Xi=S(()=>{O();ee=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load32kRomBank(e,32768)}};c(ee,"mapperName","BxROM (Mapper 241)");Ji=ee});var ye,ji=S(()=>{O();fi();ui();di();Lt();gi();Ci();Si();Ei();Ai();Fi();Ni();Oi();Pi();wi();Di();zi();vi();Wi();Yi();Xi();ye={0:C,1:mi,2:pi,3:xi,4:Y,5:Ri,7:bi,9:_i,11:yi,34:Ti,38:ki,66:Bi,71:Mi,79:Ii,94:Vi,118:Gi,119:Li,140:qi,180:Ui,240:Hi,241:Ji}});var Ee,Zi,Ki=S(()=>{ji();Bt();Ee=class u{constructor(t){c(this,"VERTICAL_MIRRORING",0);c(this,"HORIZONTAL_MIRRORING",1);c(this,"FOURSCREEN_MIRRORING",2);c(this,"SINGLESCREEN_MIRRORING",3);c(this,"SINGLESCREEN_MIRRORING2",4);c(this,"SINGLESCREEN_MIRRORING3",5);c(this,"SINGLESCREEN_MIRRORING4",6);c(this,"CHRROM_MIRRORING",7);this.nes=t,this.valid=!1}load(t){let e,i,s;t instanceof ArrayBuffer&&(t=new Uint8Array(t));let r=ArrayBuffer.isView(t);if(r){if(t.length<4||t[0]!==78||t[1]!==69||t[2]!==83||t[3]!==26)throw new Error("Not a valid NES ROM.")}else if(!t.startsWith("NES"))throw new Error("Not a valid NES ROM.");for(this.header=new Uint8Array(16),e=0;e<16;e++)this.header[e]=r?t[e]:t.charCodeAt(e)&255;this.mirroring=(this.header[6]&1)!==0?1:0,this.batteryRam=(this.header[6]&2)!==0,this.trainer=(this.header[6]&4)!==0,this.fourScreen=(this.header[6]&8)!==0,this.isNES2=(this.header[7]&12)===8,this.isNES2?this._loadNES2Header():this._loadINES1Header(),this.rom=new Array(this.romCount);let a=16+(this.trainer?512:0);for(e=0;e=t.length);i++)this.rom[e][i]=r?t[a+i]:t.charCodeAt(a+i)&255;a+=16384}for(this.vrom=new Array(this.vromCount),e=0;e=t.length);i++)this.vrom[e][i]=r?t[a+i]:t.charCodeAt(a+i)&255;a+=4096}for(this.vromTile=new Array(this.vromCount),e=0;e>4,l=e%16,l<8?this.vromTile[s][n].setScanline(l,this.vrom[s][e],this.vrom[s][e+8]):this.vromTile[s][n].setScanline(l-8,this.vrom[s][e-8],this.vrom[s][e]);this.valid=!0}_loadINES1Header(){this.romCount=this.header[4],this.vromCount=this.header[5]*2,this.mapperType=this.header[6]>>4|this.header[7]&240;let t=!1;for(let e=8;e<16;e++)if(this.header[e]!==0){t=!0;break}t&&(this.mapperType&=15),this.subMapper=0,this.prgRamSize=0,this.prgNvRamSize=0,this.chrRamSize=0,this.chrNvRamSize=0,this.timingMode=0,this.consoleType=0}_loadNES2Header(){this.mapperType=this.header[6]>>4|this.header[7]&240|(this.header[8]&15)<<8,this.subMapper=this.header[8]>>4&15;let t=this.header[9]&15;if(t===15){let i=this.header[4]>>2&63,s=this.header[4]&3;this.romCount=Math.ceil(Math.pow(2,i)*(s*2+1)/16384)}else this.romCount=t<<8|this.header[4];let e=this.header[9]>>4&15;if(e===15){let i=this.header[5]>>2&63,s=this.header[5]&3;this.vromCount=Math.ceil(Math.pow(2,i)*(s*2+1)/4096)}else this.vromCount=(e<<8|this.header[5])*2;this.prgRamSize=u._decodeRamSize(this.header[10]&15),this.prgNvRamSize=u._decodeRamSize(this.header[10]>>4&15),this.chrRamSize=u._decodeRamSize(this.header[11]&15),this.chrNvRamSize=u._decodeRamSize(this.header[11]>>4&15),this.timingMode=this.header[12]&3,this.consoleType=this.header[7]&3}static _decodeRamSize(t){return t===0?0:64<sr});var Te,sr,$i=S(()=>{Ye();Je();Qe();ni();ci();Ki();Te=class{constructor(t){c(this,"frame",t=>{if(this.crashed)throw new Error("Game has crashed. Call reset() or loadROM() to restart.");this.frameInProgress||(this.controllers[1].clock(),this.controllers[2].clock(),this.ppu.startFrame(),this.frameInProgress=!0);let e,i=this.cpu,s=this.ppu,r=this.papu;try{for(;;)if(i.cyclesToHalt===0){if(t&&t())return!0;if(e=i.emulate(),r.clockFrameCounter(e,i.apuCatchupCycles),i.apuCatchupCycles=0,s.frameEnded){s.frameEnded=!1;break}}else{let a=Math.min(i.cyclesToHalt,8);for(let n=0;n{this.controllers[t].buttonDown(e)});c(this,"buttonUp",(t,e)=>{this.controllers[t].buttonUp(e)});c(this,"zapperMove",(t,e)=>{this.mmap&&(this.mmap.zapperX=t,this.mmap.zapperY=e)});c(this,"zapperFireDown",()=>{this.mmap&&(this.mmap.zapperFired=!0)});c(this,"zapperFireUp",()=>{this.mmap&&(this.mmap.zapperFired=!1)});this.opts=Be({onFrame:function(){},onAudioSample:null,onStatusUpdate:function(){},onBatteryRamWrite:function(){},emulateSound:!0,sampleRate:48e3},t),this.ui={writeFrame:this.opts.onFrame,updateStatus:this.opts.onStatusUpdate},this.cpu=new ce(this),this.ppu=new de(this),this.papu=new be(this),this.gameGenie=new li,this.gameGenie.onChange=()=>this.cpu._updateCartridgeLoader(),this.mmap=null,this.controllers={1:new fe,2:new fe},this.fpsFrameCount=0,this.romData=null,this.ui.updateStatus("Ready to load a ROM.")}reset(){this.cpu=new ce(this),this.ppu=new de(this),this.papu=new be(this),this.mmap!==null&&(this.mmap=this.rom.createMapper()),this.lastFpsTime=null,this.fpsFrameCount=0,this.crashed=!1,this.frameInProgress=!1}getFPS(){let t=Date.now(),e=null;return this.lastFpsTime&&(e=this.fpsFrameCount/((t-this.lastFpsTime)/1e3)),this.fpsFrameCount=0,this.lastFpsTime=t,e}reloadROM(){this.romData!==null&&this.loadROM(this.romData)}loadROM(t){this.rom=new Zi(this),this.rom.load(t),this.reset(),this.mmap=this.rom.createMapper(),this.mmap.loadROM(),this.ppu.setMirroring(this.rom.getMirroringType()),this.romData=t}setFramerate(t){this.papu.setFrameRate(t)}toJSON(){return{cpu:this.cpu.toJSON(),mmap:this.mmap.toJSON(),ppu:this.ppu.toJSON(),papu:this.papu.toJSON(),frameInProgress:this.frameInProgress,controllers:{1:this.controllers[1].toJSON(),2:this.controllers[2].toJSON()}}}fromJSON(t){this.reset(),this.cpu.fromJSON(t.cpu),this.mmap.fromJSON(t.mmap),this.ppu.fromJSON(t.ppu),this.papu.fromJSON(t.papu),this.frameInProgress=!!t.frameInProgress,t.controllers&&(t.controllers[1]&&this.controllers[1].fromJSON(t.controllers[1]),t.controllers[2]&&this.controllers[2].fromJSON(t.controllers[2]))}},sr=Te});var rr=($i(),rs(Qi)).default;function ts(){return hs()}var es=[{id:"hello.c",name:"Hello World"},{id:"attributes.c",name:"Attribute Table"},{id:"scroll.c",name:"Scrolling"},{id:"sprites.c",name:"Sprites"},{id:"metasprites.c",name:"Metasprites"},{id:"flicker.c",name:"Flickering Sprites"},{id:"metacursor.c",name:"Controllers"},{id:"vrambuffer.c",name:"VRAM Buffer"},{id:"statusbar.c",name:"Split Status Bar"},{id:"siegegame.c",name:"Siege Game"},{id:"tint.c",name:"Color Emphasis"},{id:"rletitle.c",name:"Title Screen RLE"},{id:"aputest.c",name:"Sound Tester"},{id:"music.c",name:"Music Player"},{id:"horizscroll.c",name:"Offscreen Scrolling"},{id:"monobitmap.c",name:"Monochrome Bitmap"},{id:"fami.c",name:"Famitone Demo"},{id:"shoot2.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"},{id:"bankswitch.c",name:"Bank Switching"},{id:"irq.c",name:"IRQ Scanline Counter"},{id:"ex0.dasm",name:"Initialization",category:"Assembly"},{id:"ex1.dasm",name:"Hello World"},{id:"ex2.dasm",name:"Scrolling Demo"},{id:"ex3.dasm",name:"Sprite Demo"},{id:"ex4.dasm",name:"Controller Demo"},{id:"musicdemo.dasm",name:"Famitone Demo"},{id:"xyscroll.dasm",name:"XY Split Scrolling"},{id:"road.dasm",name:"3-D Road Demo"},{id:"hello.cpp",name:"Hello Oscar64",category:"Oscar64"},{id:"chase/game.c",name:"Shiru's Chase Game",category:"Other"},{id:"hello.wiz",name:"Hello (Wiz)"}],hr=Pe([[I.A,0,0],[I.B,0,1],[I.GP_A,0,0],[I.GP_B,0,1],[I.SELECT,0,2],[I.START,0,3],[I.UP,0,4],[I.DOWN,0,5],[I.LEFT,0,6],[I.RIGHT,0,7],[I.P2_A,1,0],[I.P2_B,1,1],[I.P2_SELECT,1,2],[I.P2_START,1,3],[I.P2_UP,1,4],[I.P2_DOWN,1,5],[I.P2_LEFT,1,6],[I.P2_RIGHT,1,7]]),Ae=class{constructor(t){this.p=t;this.cpuCyclesPerLine=114;this.cpu={getPC:()=>this.p.getPC(),getSP:()=>this.p.getSP(),isStable:()=>!0}}advanceFrame(t){var e=0;return this.p.nes.frame(()=>t&&t()?!0:(e++,!1)),e}saveState(){return this.p.saveState()}loadState(t){this.p.loadState(t)}read(t){return this.p.readAddress(t)}readConst(t){return this.p.readAddress(t)}write(t,e){t<8192?this.p.nes.cpu.mem[t&2047]=e:this.p.nes.mmap.write(t,e)}connectProbe(t){this.p.connectProbe(t)}},ke=class extends De{constructor(e){super();this.audioFrequency=44030;this.frameindex=0;this.showDebugView=!1;this.machine=new Ae(this);this.getToolForFilename=he;this.nullProbe=new Ge;this.probe=this.nullProbe;this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"OAM Buffer",start:512,size:256,type:"ram"},{name:"Work RAM",start:768,size:3328,type:"ram"},{name:"PPU Registers",start:8192,last:8200,size:8192,type:"io"},{name:"APU Registers",start:16384,last:16416,size:8192,type:"io"},{name:"Optional Cartridge RAM",start:24576,size:8192,type:"ram"}]}};this.mainElement=e}getPresets(){return es}start(){this.debugPCDelta=1,this.audio=new Ve(this.audioFrequency),this.video=new se(this.mainElement,256,224,{overscan:!0}),this.video.create(),this.ntvideo=new se(this.mainElement,512,480,{overscan:!1}),this.ntvideo.create(),this.ntvideo.canvas.style.display="none",this.ntlastbuf=new Uint32Array(4096),ts().bind&&ts().bind("ctrl+shift+alt+n",()=>{this.showDebugView=!this.showDebugView,this.video.canvas.style.display=this.showDebugView?"none":"",this.ntvideo.canvas.style.display=this.showDebugView?"":"none"});var e=this.video.getFrameData();this.nes=new rr({onFrame:i=>{for(var s=0;s{this.frameindex<10?this.audio.feedSample(0,1):this.audio.feedSample((i+s)*.5,1)},onStatusUpdate:function(i){console.log(i)},sampleRate:this.audioFrequency}),this.timer=new Oe(60,this.nextFrame.bind(this)),this.poller=Ie(this.video,[],hr,(i,s,r,a)=>{a&1?this.nes.buttonDown(i.index+1,i.mask):a&64&&this.nes.buttonUp(i.index+1,i.mask)})}pollControls(){this.poller.poll()}advance(e){return this.nes.frame(),29780}updateDebugViews(){if(this.showDebugView){for(var e=0,i=0,s=this.ntvideo.getFrameData(),r=this.nes.ppu.regS===0?0:256,a=0;a<60;a++)for(var n=0;n<64;n++){e=8192+(n&31)+a%30*32,n>=32&&(e+=1024),a>=30&&(e+=2048);var l=this.nes.ppu.mirroredLoad(e)+r,o=this.nes.ppu.ptTile[l];i=e&11264|960|e&3072|e>>4&56|e>>2&7;var p=this.nes.ppu.mirroredLoad(i),h=l^p<<9^2147483648;if(h!=this.ntlastbuf[e&4095]){this.ntlastbuf[e&4095]=h;for(var d=a*64*8*8+n*8,x=0,m=(n&2)+((e&64)>>4),f=(p>>m&3)<<2,R=0;R<8;R++){for(var _=0;_<8;_++){var E=o.pix[x++];E&&(E+=f);var g=this.nes.ppu.imgPalette[E];s[d++]=g|4278190080}d+=504}}}this.ntvideo.updateFrame()}}loadROM(e,i){var s=Ne(i);this.nes.loadROM(s),this.frameindex=0,this.installIntercepts()}installIntercepts(){var e=this.nes.cpu;if(!e.haveProxied){var i=e.emulate.bind(e);e.emulate=()=>{e.irqRequested&&this.probe.logInterrupt(e.irqType||0),this.probe.logExecute(e.REG_PC+1,e.REG_SP);var f;try{f=i()}catch(R){throw R instanceof re?R:(this.haltAndCatchFire(R.message||"Illegal instruction"),new re("CPU STOPPED"))}return this.evalDebugCondition(),this.probe.logClocks(f),f>0?f:1};var s=e.doNonMaskableInterrupt.bind(e);e.doNonMaskableInterrupt=f=>(this.probe.logInterrupt(1),s(f)),e.haveProxied=!0}var r=this.nes.mmap;if(!r.haveProxied){var a=r.load.bind(r),n=r.write.bind(r),l=r.regLoad.bind(r),o=r.regWrite.bind(r),p=-1;r.load=f=>{var R=a(f);return f!=p&&this.probe.logRead(f,R),R},r.write=(f,R)=>{f!=p&&this.probe.logWrite(f,R),n(f,R)},r.regLoad=f=>{var R=l(f);return this.probe.logIORead(f,R),p=f,R},r.regWrite=(f,R)=>{this.probe.logIOWrite(f,R),p=f,o(f,R)},r.haveProxied=!0}var h=this.nes.ppu;if(!h.haveProxied){var d=h.endScanline.bind(h),x=h.startFrame.bind(h),m=h.writeMem.bind(h);h.endScanline=()=>{d(),this.probe.logNewScanline()},h.startFrame=()=>{x(),this.probe.logNewFrame()},h.writeMem=(f,R)=>{m(f,R),this.probe.logVRAMWrite(f,R)},h.haveProxied=!0}}newCodeAnalyzer(){return new qe(this)}getOriginPC(){return(this.readAddress(65530)|this.readAddress(65531)<<8)&65535}getDefaultExtensions(){return[...super.getDefaultExtensions(),".nesasm"]}getROMExtension(){return".nes"}reset(){this.nes.crashed=!1,this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET),this.installIntercepts()}isRunning(){return this.timer.isRunning()}pause(){this.timer.stop(),this.audio.stop()}resume(){this.timer.start(),this.audio.start()}runToVsync(){var e=this.frameindex;this.runEval(i=>this.frameindex>e)}getRasterScanline(){return this.nes.ppu.scanline}getRasterLineClock(){return this.nes.ppu.curX}getPC(){return this.nes.cpu.REG_PC+this.debugPCDelta&65535}getSP(){return this.nes.cpu.REG_SP&255}isStable(){return!0}getCPUState(){var e=this.nes.cpu.toJSON();return this.copy6502REGvars(e),e}saveState(){var e;return this.nes.mmap?e=this.nes.toJSON():(console.log("no nes.mmap!"),e={cpu:this.nes.cpu.toJSON(),ppu:this.nes.ppu.toJSON()}),e.c=e.cpu,this.copy6502REGvars(e.c),e.b=e.cpu.mem,e.ctrl=this.saveControlsState(),e}loadState(e){this.unfixPC(e.cpu),this.nes.fromJSON(e),this.fixPC(e.cpu),this.loadControlsState(e.ctrl),this.installIntercepts()}saveControlsState(){return{c1:this.nes.controllers[1].state.slice(0),c2:this.nes.controllers[2].state.slice(0)}}loadControlsState(e){this.nes.controllers[1].state=e.c1.slice(0),this.nes.controllers[2].state=e.c2.slice(0)}readAddress(e){return this.nes.cpu.mem[e]}readVRAMAddress(e){return this.nes.ppu.vramMem[e]}copy6502REGvars(e){return e.T=0,e.PC=e.REG_PC,this.fixPC(e),e.A=e.REG_ACC,e.X=e.REG_X,e.Y=e.REG_Y,e.SP=e.REG_SP&255,e.Z=e.F_ZERO,e.N=e.F_SIGN,e.V=e.F_OVERFLOW,e.D=e.F_DECIMAL,e.C=e.F_CARRY,e.I=e.F_INTERRUPT,e.R=1,e.o=this.readAddress(e.PC+1),e}getDebugCategories(){return super.getDebugCategories().concat(["PPU","Mapper"])}getDebugInfo(e,i){switch(e){case"PPU":return this.ppuStateToLongString(i.ppu,i.b);case"Mapper":return this.mapperStateToLongString(i.mmap,i.b);default:return super.getDebugInfo(e,i)}}ppuStateToLongString(e,i){for(var s="",r=[["f_nmiOnVblank","NMI_ON_VBLANK"],["f_spVisibility","SPRITES"],["f_spClipping","NO_CLIP_SPRITES"],["f_dispType","MONOCHROME"],["f_bgVisibility","BACKGROUND"],["f_bgClipping","NO_CLIP_BACKGROUND"]],a=0;a{});var T,Z,k,A,st,M,B,Et,b,y,G,F,as,K,Q,Rt,ns,os,ls,ve,cs,ms,fs,ps,us,xs,ds,Rs,gs,bs,$,ae,ne,Tt,Cs,_s,tt,At,Ss,ys,Ue,Es,et,gt,bt,Ct,ht,it,Ts,As,ks,Fs,_t,St,Bs,Ns,X,Ms,Os,Is,at,oe,le,Ps,Vs,ws,Gs,Ds,Ls,zs,We,qs,vs,ut,kt,nt,ot,lt,ct,mt,ft,yt,D,He,Us,Ws,Hs,Ys,Js,Xs,js,Zs,Ft,ce,Ye=S(()=>{H();T=0,Z=1,k=2,A=3,st=4,M=5,B=6,Et=7,b=8,y=9,G=10,F=11,as=12,K=0,Q=1,Rt=2,ns=3,os=4,ls=5,ve=6,cs=7,ms=8,fs=9,ps=10,us=11,xs=12,ds=13,Rs=14,gs=15,bs=16,$=17,ae=18,ne=19,Tt=20,Cs=21,_s=22,tt=23,At=24,Ss=25,ys=26,Ue=27,Es=28,et=29,gt=30,bt=31,Ct=32,ht=33,it=34,Ts=35,As=36,ks=37,Fs=38,_t=39,St=40,Bs=41,Ns=42,X=43,Ms=44,Os=45,Is=46,at=47,oe=48,le=49,Ps=50,Vs=51,ws=52,Gs=53,Ds=54,Ls=55,zs=56,We=57,qs=58,vs=59,ut=60,kt=61,nt=62,ot=63,lt=64,ct=65,mt=66,ft=67,yt=68,D=69,He=71,Us=72,Ws=73,Hs=74,Ys=75,Js=76,Xs=77,js={ins:-1,mode:0,size:1,cycles:2},Zs={105:{ins:K,mode:M,size:2,cycles:2},101:{ins:K,mode:T,size:2,cycles:3},117:{ins:K,mode:B,size:2,cycles:4},109:{ins:K,mode:A,size:3,cycles:4},125:{ins:K,mode:b,size:3,cycles:4},121:{ins:K,mode:y,size:3,cycles:4},97:{ins:K,mode:G,size:2,cycles:6},113:{ins:K,mode:F,size:2,cycles:5},41:{ins:Q,mode:M,size:2,cycles:2},37:{ins:Q,mode:T,size:2,cycles:3},53:{ins:Q,mode:B,size:2,cycles:4},45:{ins:Q,mode:A,size:3,cycles:4},61:{ins:Q,mode:b,size:3,cycles:4},57:{ins:Q,mode:y,size:3,cycles:4},33:{ins:Q,mode:G,size:2,cycles:6},49:{ins:Q,mode:F,size:2,cycles:5},10:{ins:Rt,mode:st,size:1,cycles:2},6:{ins:Rt,mode:T,size:2,cycles:5},22:{ins:Rt,mode:B,size:2,cycles:6},14:{ins:Rt,mode:A,size:3,cycles:6},30:{ins:Rt,mode:b,size:3,cycles:7},144:{ins:ns,mode:Z,size:2,cycles:2},176:{ins:os,mode:Z,size:2,cycles:2},240:{ins:ls,mode:Z,size:2,cycles:2},48:{ins:cs,mode:Z,size:2,cycles:2},208:{ins:ms,mode:Z,size:2,cycles:2},16:{ins:fs,mode:Z,size:2,cycles:2},80:{ins:us,mode:Z,size:2,cycles:2},112:{ins:xs,mode:Z,size:2,cycles:2},36:{ins:ve,mode:T,size:2,cycles:3},44:{ins:ve,mode:A,size:3,cycles:4},0:{ins:ps,mode:k,size:1,cycles:7},24:{ins:ds,mode:k,size:1,cycles:2},216:{ins:Rs,mode:k,size:1,cycles:2},88:{ins:gs,mode:k,size:1,cycles:2},184:{ins:bs,mode:k,size:1,cycles:2},201:{ins:$,mode:M,size:2,cycles:2},197:{ins:$,mode:T,size:2,cycles:3},213:{ins:$,mode:B,size:2,cycles:4},205:{ins:$,mode:A,size:3,cycles:4},221:{ins:$,mode:b,size:3,cycles:4},217:{ins:$,mode:y,size:3,cycles:4},193:{ins:$,mode:G,size:2,cycles:6},209:{ins:$,mode:F,size:2,cycles:5},224:{ins:ae,mode:M,size:2,cycles:2},228:{ins:ae,mode:T,size:2,cycles:3},236:{ins:ae,mode:A,size:3,cycles:4},192:{ins:ne,mode:M,size:2,cycles:2},196:{ins:ne,mode:T,size:2,cycles:3},204:{ins:ne,mode:A,size:3,cycles:4},198:{ins:Tt,mode:T,size:2,cycles:5},214:{ins:Tt,mode:B,size:2,cycles:6},206:{ins:Tt,mode:A,size:3,cycles:6},222:{ins:Tt,mode:b,size:3,cycles:7},202:{ins:Cs,mode:k,size:1,cycles:2},136:{ins:_s,mode:k,size:1,cycles:2},73:{ins:tt,mode:M,size:2,cycles:2},69:{ins:tt,mode:T,size:2,cycles:3},85:{ins:tt,mode:B,size:2,cycles:4},77:{ins:tt,mode:A,size:3,cycles:4},93:{ins:tt,mode:b,size:3,cycles:4},89:{ins:tt,mode:y,size:3,cycles:4},65:{ins:tt,mode:G,size:2,cycles:6},81:{ins:tt,mode:F,size:2,cycles:5},230:{ins:At,mode:T,size:2,cycles:5},246:{ins:At,mode:B,size:2,cycles:6},238:{ins:At,mode:A,size:3,cycles:6},254:{ins:At,mode:b,size:3,cycles:7},232:{ins:Ss,mode:k,size:1,cycles:2},200:{ins:ys,mode:k,size:1,cycles:2},76:{ins:Ue,mode:A,size:3,cycles:3},108:{ins:Ue,mode:as,size:3,cycles:5},32:{ins:Es,mode:A,size:3,cycles:6},169:{ins:et,mode:M,size:2,cycles:2},165:{ins:et,mode:T,size:2,cycles:3},181:{ins:et,mode:B,size:2,cycles:4},173:{ins:et,mode:A,size:3,cycles:4},189:{ins:et,mode:b,size:3,cycles:4},185:{ins:et,mode:y,size:3,cycles:4},161:{ins:et,mode:G,size:2,cycles:6},177:{ins:et,mode:F,size:2,cycles:5},162:{ins:gt,mode:M,size:2,cycles:2},166:{ins:gt,mode:T,size:2,cycles:3},182:{ins:gt,mode:Et,size:2,cycles:4},174:{ins:gt,mode:A,size:3,cycles:4},190:{ins:gt,mode:y,size:3,cycles:4},160:{ins:bt,mode:M,size:2,cycles:2},164:{ins:bt,mode:T,size:2,cycles:3},180:{ins:bt,mode:B,size:2,cycles:4},172:{ins:bt,mode:A,size:3,cycles:4},188:{ins:bt,mode:b,size:3,cycles:4},74:{ins:Ct,mode:st,size:1,cycles:2},70:{ins:Ct,mode:T,size:2,cycles:5},86:{ins:Ct,mode:B,size:2,cycles:6},78:{ins:Ct,mode:A,size:3,cycles:6},94:{ins:Ct,mode:b,size:3,cycles:7},26:{ins:ht,mode:k,size:1,cycles:2},58:{ins:ht,mode:k,size:1,cycles:2},90:{ins:ht,mode:k,size:1,cycles:2},122:{ins:ht,mode:k,size:1,cycles:2},218:{ins:ht,mode:k,size:1,cycles:2},234:{ins:ht,mode:k,size:1,cycles:2},250:{ins:ht,mode:k,size:1,cycles:2},9:{ins:it,mode:M,size:2,cycles:2},5:{ins:it,mode:T,size:2,cycles:3},21:{ins:it,mode:B,size:2,cycles:4},13:{ins:it,mode:A,size:3,cycles:4},29:{ins:it,mode:b,size:3,cycles:4},25:{ins:it,mode:y,size:3,cycles:4},1:{ins:it,mode:G,size:2,cycles:6},17:{ins:it,mode:F,size:2,cycles:5},72:{ins:Ts,mode:k,size:1,cycles:3},8:{ins:As,mode:k,size:1,cycles:3},104:{ins:ks,mode:k,size:1,cycles:4},40:{ins:Fs,mode:k,size:1,cycles:4},42:{ins:_t,mode:st,size:1,cycles:2},38:{ins:_t,mode:T,size:2,cycles:5},54:{ins:_t,mode:B,size:2,cycles:6},46:{ins:_t,mode:A,size:3,cycles:6},62:{ins:_t,mode:b,size:3,cycles:7},106:{ins:St,mode:st,size:1,cycles:2},102:{ins:St,mode:T,size:2,cycles:5},118:{ins:St,mode:B,size:2,cycles:6},110:{ins:St,mode:A,size:3,cycles:6},126:{ins:St,mode:b,size:3,cycles:7},64:{ins:Bs,mode:k,size:1,cycles:6},96:{ins:Ns,mode:k,size:1,cycles:6},233:{ins:X,mode:M,size:2,cycles:2},235:{ins:X,mode:M,size:2,cycles:2},229:{ins:X,mode:T,size:2,cycles:3},245:{ins:X,mode:B,size:2,cycles:4},237:{ins:X,mode:A,size:3,cycles:4},253:{ins:X,mode:b,size:3,cycles:4},249:{ins:X,mode:y,size:3,cycles:4},225:{ins:X,mode:G,size:2,cycles:6},241:{ins:X,mode:F,size:2,cycles:5},56:{ins:Ms,mode:k,size:1,cycles:2},248:{ins:Os,mode:k,size:1,cycles:2},120:{ins:Is,mode:k,size:1,cycles:2},133:{ins:at,mode:T,size:2,cycles:3},149:{ins:at,mode:B,size:2,cycles:4},141:{ins:at,mode:A,size:3,cycles:4},157:{ins:at,mode:b,size:3,cycles:5},153:{ins:at,mode:y,size:3,cycles:5},129:{ins:at,mode:G,size:2,cycles:6},145:{ins:at,mode:F,size:2,cycles:6},134:{ins:oe,mode:T,size:2,cycles:3},150:{ins:oe,mode:Et,size:2,cycles:4},142:{ins:oe,mode:A,size:3,cycles:4},132:{ins:le,mode:T,size:2,cycles:3},148:{ins:le,mode:B,size:2,cycles:4},140:{ins:le,mode:A,size:3,cycles:4},170:{ins:Ps,mode:k,size:1,cycles:2},168:{ins:Vs,mode:k,size:1,cycles:2},186:{ins:ws,mode:k,size:1,cycles:2},138:{ins:Gs,mode:k,size:1,cycles:2},154:{ins:Ds,mode:k,size:1,cycles:2},152:{ins:Ls,mode:k,size:1,cycles:2},75:{ins:zs,mode:M,size:2,cycles:2},11:{ins:We,mode:M,size:2,cycles:2},43:{ins:We,mode:M,size:2,cycles:2},107:{ins:qs,mode:M,size:2,cycles:2},203:{ins:vs,mode:M,size:2,cycles:2},163:{ins:ut,mode:G,size:2,cycles:6},167:{ins:ut,mode:T,size:2,cycles:3},175:{ins:ut,mode:A,size:3,cycles:4},179:{ins:ut,mode:F,size:2,cycles:5},183:{ins:ut,mode:Et,size:2,cycles:4},191:{ins:ut,mode:y,size:3,cycles:4},131:{ins:kt,mode:G,size:2,cycles:6},135:{ins:kt,mode:T,size:2,cycles:3},143:{ins:kt,mode:A,size:3,cycles:4},151:{ins:kt,mode:Et,size:2,cycles:4},195:{ins:nt,mode:G,size:2,cycles:8},199:{ins:nt,mode:T,size:2,cycles:5},207:{ins:nt,mode:A,size:3,cycles:6},211:{ins:nt,mode:F,size:2,cycles:8},215:{ins:nt,mode:B,size:2,cycles:6},219:{ins:nt,mode:y,size:3,cycles:7},223:{ins:nt,mode:b,size:3,cycles:7},227:{ins:ot,mode:G,size:2,cycles:8},231:{ins:ot,mode:T,size:2,cycles:5},239:{ins:ot,mode:A,size:3,cycles:6},243:{ins:ot,mode:F,size:2,cycles:8},247:{ins:ot,mode:B,size:2,cycles:6},251:{ins:ot,mode:y,size:3,cycles:7},255:{ins:ot,mode:b,size:3,cycles:7},35:{ins:lt,mode:G,size:2,cycles:8},39:{ins:lt,mode:T,size:2,cycles:5},47:{ins:lt,mode:A,size:3,cycles:6},51:{ins:lt,mode:F,size:2,cycles:8},55:{ins:lt,mode:B,size:2,cycles:6},59:{ins:lt,mode:y,size:3,cycles:7},63:{ins:lt,mode:b,size:3,cycles:7},99:{ins:ct,mode:G,size:2,cycles:8},103:{ins:ct,mode:T,size:2,cycles:5},111:{ins:ct,mode:A,size:3,cycles:6},115:{ins:ct,mode:F,size:2,cycles:8},119:{ins:ct,mode:B,size:2,cycles:6},123:{ins:ct,mode:y,size:3,cycles:7},127:{ins:ct,mode:b,size:3,cycles:7},3:{ins:mt,mode:G,size:2,cycles:8},7:{ins:mt,mode:T,size:2,cycles:5},15:{ins:mt,mode:A,size:3,cycles:6},19:{ins:mt,mode:F,size:2,cycles:8},23:{ins:mt,mode:B,size:2,cycles:6},27:{ins:mt,mode:y,size:3,cycles:7},31:{ins:mt,mode:b,size:3,cycles:7},67:{ins:ft,mode:G,size:2,cycles:8},71:{ins:ft,mode:T,size:2,cycles:5},79:{ins:ft,mode:A,size:3,cycles:6},83:{ins:ft,mode:F,size:2,cycles:8},87:{ins:ft,mode:B,size:2,cycles:6},91:{ins:ft,mode:y,size:3,cycles:7},95:{ins:ft,mode:b,size:3,cycles:7},128:{ins:yt,mode:M,size:2,cycles:2},130:{ins:yt,mode:M,size:2,cycles:2},137:{ins:yt,mode:M,size:2,cycles:2},194:{ins:yt,mode:M,size:2,cycles:2},226:{ins:yt,mode:M,size:2,cycles:2},12:{ins:D,mode:A,size:3,cycles:4},28:{ins:D,mode:b,size:3,cycles:4},60:{ins:D,mode:b,size:3,cycles:4},92:{ins:D,mode:b,size:3,cycles:4},124:{ins:D,mode:b,size:3,cycles:4},220:{ins:D,mode:b,size:3,cycles:4},252:{ins:D,mode:b,size:3,cycles:4},4:{ins:D,mode:T,size:2,cycles:3},68:{ins:D,mode:T,size:2,cycles:3},100:{ins:D,mode:T,size:2,cycles:3},20:{ins:D,mode:B,size:2,cycles:4},52:{ins:D,mode:B,size:2,cycles:4},84:{ins:D,mode:B,size:2,cycles:4},116:{ins:D,mode:B,size:2,cycles:4},212:{ins:D,mode:B,size:2,cycles:4},244:{ins:D,mode:B,size:2,cycles:4},147:{ins:He,mode:F,size:2,cycles:6},159:{ins:He,mode:y,size:3,cycles:5},155:{ins:Us,mode:y,size:3,cycles:5},156:{ins:Ws,mode:b,size:3,cycles:5},158:{ins:Hs,mode:y,size:3,cycles:5},187:{ins:Ys,mode:y,size:3,cycles:4},139:{ins:Js,mode:M,size:2,cycles:2},171:{ins:Xs,mode:M,size:2,cycles:2}},Ft=class{constructor(t){c(this,"IRQ_NORMAL",0);c(this,"IRQ_NMI",1);c(this,"IRQ_RESET",2);this.nes=t,this.mem=new Uint8Array(65536),this.mem.fill(255,0,8192);for(let e=0;e<4;e++){let i=e*2048;this.mem[i+8]=247,this.mem[i+9]=239,this.mem[i+10]=223,this.mem[i+15]=191}this.REG_ACC=0,this.REG_X=0,this.REG_Y=0,this.REG_SP=511,this.REG_PC=32767,this.REG_PC_NEW=32767,this.REG_STATUS=40,this.setStatus(40),this.F_CARRY=0,this.F_DECIMAL=0,this.F_INTERRUPT=1,this.F_INTERRUPT_NEW=1,this.F_OVERFLOW=0,this.F_SIGN=0,this.F_ZERO=1,this.F_NOTUSED=1,this.F_NOTUSED_NEW=1,this.F_BRK=1,this.F_BRK_NEW=1,this.cyclesToHalt=0,this.crash=!1,this.irqRequested=!1,this.irqType=null,this.nmiRaised=!1,this.nmiPending=!1,this.nmiImmediate=!1,this.dataBus=0,this.instrBusCycles=0,this.apuCatchupCycles=0,this._cpuCycleBase=0,this.nmiRaisedAtCycle=0,this.nmiDotsRemainingInStep=0}emulate(){var x;if(this.nmiImmediate)return this.nmiImmediate=!1,this.nmiPending=!1,this.nmiRaised=!1,this.instrBusCycles=0,this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.doNonMaskableInterrupt(this.getStatus()&239),this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this._cpuCycleBase+=7,7;let t,e,i=0,s=0;if(this.nmiRaised&&(this.nmiPending=!0,this.nmiRaised=!1),this.irqRequested){switch(t=this.getStatus(),this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.irqType){case 0:{if(this.F_INTERRUPT!==0)break;this.doIrq(t&239),s=7;break}case 2:{this.doResetInterrupt(),s=7;break}}this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.irqRequested=!1}if(this.nes.mmap===null)return 32;this.instrBusCycles=0,this.apuCatchupCycles=0,this.nmiDotsRemainingInStep=0,this._dmcFetchCycles=this._cyclesToNextDmcFetch();let r=this.loadFromCartridge(this.REG_PC+1);this.dataBus=r,this.instrBusCycles=1,this.nes.ppu.advanceDots(3);let a=(x=Zs[r])!=null?x:js,n=a.cycles,l=0,o=a.mode,p=this.REG_PC;this.REG_PC+=a.size;let h=0;switch(o){case 0:{h=this.loadDirect(p+2);break}case 1:{h=this.loadDirect(p+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:{this.loadDirect(p+2);break}case 3:{h=this.load16bit(p+2);break}case 4:{this.loadDirect(p+2),h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{let m=this.loadDirect(p+2);this.loadDirect(m),h=m+this.REG_X&255;break}case 7:{let m=this.loadDirect(p+2);this.loadDirect(m),h=m+this.REG_Y&255;break}case 8:{h=this.load16bit(p+2),i=h>>8&255,(h&65280)!==(h+this.REG_X&65280)&&(this.load(h&65280|h+this.REG_X&255),l=1),h+=this.REG_X;break}case 9:{h=this.load16bit(p+2),i=h>>8&255,(h&65280)!==(h+this.REG_Y&65280)&&(this.load(h&65280|h+this.REG_Y&255),l=1),h+=this.REG_Y;break}case 10:{let m=this.loadDirect(p+2);this.loadDirect(m);let f=m+this.REG_X&255;h=this.loadDirect(f)|this.loadDirect(f+1&255)<<8;break}case 11:{let m=this.loadDirect(p+2);h=this.loadDirect(m)|this.loadDirect(m+1&255)<<8,i=h>>8&255,(h&65280)!==(h+this.REG_Y&65280)&&(this.load(h&65280|h+this.REG_Y&255),l=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(p+2);var d=h&65280|(h&255)+1&255;h=this.load(h)|this.load(d)<<8;break}}switch(h&=65535,a.ins){case 0:{e=this.load(h),t=this.REG_ACC+e+this.F_CARRY,((this.REG_ACC^e)&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,n+=l;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,n+=l;break}case 2:{o===st?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(n+=this._takeBranch(p,h));break}case 4:{this.F_CARRY===1&&(n+=this._takeBranch(p,h));break}case 5:{this.F_ZERO===0&&(n+=this._takeBranch(p,h));break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(n+=this._takeBranch(p,h));break}case 8:{this.F_ZERO!==0&&(n+=this._takeBranch(p,h));break}case 9:{this.F_SIGN===0&&(n+=this._takeBranch(p,h));break}case 10:{this.REG_PC+=2,this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.F_BRK=1,this.push(this.getStatus()),this.F_INTERRUPT=1,this.REG_PC=this.load16bit(65534),this.REG_PC--;break}case 11:{this.F_OVERFLOW===0&&(n+=this._takeBranch(p,h));break}case 12:{this.F_OVERFLOW===1&&(n+=this._takeBranch(p,h));break}case 13:{this.F_CARRY=0;break}case 14:{this.F_DECIMAL=0;break}case 15:{this.F_INTERRUPT=0;break}case 16:{this.F_OVERFLOW=0;break}case 17:{t=this.REG_ACC-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,n+=l;break}case 18:{t=this.REG_X-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 19:{t=this.REG_Y-this.load(h),this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 20:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t-1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t);break}case 21:{this.REG_X=this.REG_X-1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 22:{this.REG_Y=this.REG_Y-1&255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 23:{this.REG_ACC=(this.load(h)^this.REG_ACC)&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,n+=l;break}case 24:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t+1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t);break}case 25:{this.REG_X=this.REG_X+1&255,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 26:{this.REG_Y++,this.REG_Y&=255,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 27:{this.REG_PC=h-1;break}case 28:{this.push(this.REG_PC>>8&255),this.push(this.REG_PC&255),this.loadDirect(p+3),this.REG_PC=h-1;break}case 29:{this.REG_ACC=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,n+=l;break}case 30:{this.REG_X=this.load(h),this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X,n+=l;break}case 31:{this.REG_Y=this.load(h),this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y,n+=l;break}case 32:{o===st?(t=this.REG_ACC&255,this.F_CARRY=t&1,t>>=1,this.REG_ACC=t):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h)&255,this.write(h,t),this.F_CARRY=t&1,t>>=1,this.write(h,t)),this.F_SIGN=0,this.F_ZERO=t;break}case 33:break;case 34:{t=(this.load(h)|this.REG_ACC)&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.REG_ACC=t,n+=l;break}case 35:{this.push(this.REG_ACC);break}case 36:{this.F_BRK=1,this.push(this.getStatus());break}case 37:{this.REG_ACC=this.pull(),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 38:{this.setStatusFromStack(this.pull());break}case 39:{o===st?(t=this.REG_ACC,e=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+e,this.REG_ACC=t):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+e,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 40:{o===st?(e=this.F_CARRY<<7,this.F_CARRY=this.REG_ACC&1,t=(this.REG_ACC>>1)+e,this.REG_ACC=t):(l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+e,this.write(h,t)),this.F_SIGN=t>>7&1,this.F_ZERO=t;break}case 41:{if(this.setStatusFromStack(this.pull()),this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;this.REG_PC--;break}case 42:{if(this.REG_PC=this.pull(),this.REG_PC+=this.pull()<<8,this.REG_PC===65535)return;break}case 43:{e=this.load(h),t=this.REG_ACC-e-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^e)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255,n+=l;break}case 44:{this.F_CARRY=1;break}case 45:{this.F_DECIMAL=1;break}case 46:{this.F_INTERRUPT=1;break}case 47:{l===0&&(o===b||o===y||o===F)&&this.load(h),this.write(h,this.REG_ACC);break}case 48:{this.write(h,this.REG_X);break}case 49:{this.write(h,this.REG_Y);break}case 50:{this.REG_X=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 51:{this.REG_Y=this.REG_ACC,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 52:{this.REG_X=this.REG_SP&255,this.F_SIGN=this.REG_SP>>7&1,this.F_ZERO=this.REG_X;break}case 53:{this.REG_ACC=this.REG_X,this.F_SIGN=this.REG_X>>7&1,this.F_ZERO=this.REG_X;break}case 54:{this.REG_SP=this.REG_X&255;break}case 55:{this.REG_ACC=this.REG_Y,this.F_SIGN=this.REG_Y>>7&1,this.F_ZERO=this.REG_Y;break}case 56:{t=this.REG_ACC&this.load(h),this.F_CARRY=t&1,this.REG_ACC=this.F_ZERO=t>>1,this.F_SIGN=0;break}case 57:{this.REG_ACC=this.F_ZERO=this.REG_ACC&this.load(h),this.F_CARRY=this.F_SIGN=this.REG_ACC>>7&1;break}case 58:{t=this.REG_ACC&this.load(h),this.REG_ACC=this.F_ZERO=(t>>1)+(this.F_CARRY<<7),this.F_SIGN=this.F_CARRY,this.F_CARRY=t>>7&1,this.F_OVERFLOW=(t>>7^t>>6)&1;break}case 59:{t=(this.REG_X&this.REG_ACC)-this.load(h),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.F_CARRY=t<0?0:1,this.REG_X=t&255;break}case 60:{this.REG_ACC=this.REG_X=this.F_ZERO=this.load(h),this.F_SIGN=this.REG_ACC>>7&1,n+=l;break}case 61:{this.write(h,this.REG_ACC&this.REG_X);break}case 62:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t-1&255,this.write(h,t),t=this.REG_ACC-t,this.F_CARRY=t>=0?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255;break}case 63:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),t=t+1&255,this.write(h,t);let m=t;t=this.REG_ACC-m-(1-this.F_CARRY),this.F_SIGN=t>>7&1,this.F_ZERO=t&255,((this.REG_ACC^t)&128)!==0&&((this.REG_ACC^m)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t<0?0:1,this.REG_ACC=t&255;break}case 64:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY,this.F_CARRY=t>>7&1,t=(t<<1&255)+e,this.write(h,t),this.REG_ACC=this.REG_ACC&t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 65:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),e=this.F_CARRY<<7,this.F_CARRY=t&1,t=(t>>1)+e,this.write(h,t);let m=t;t=this.REG_ACC+m+this.F_CARRY,((this.REG_ACC^m)&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255;break}case 66:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h),this.write(h,t),this.F_CARRY=t>>7&1,t=t<<1&255,this.write(h,t),this.REG_ACC=this.REG_ACC|t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 67:{l===0&&(o===b||o===y||o===F)&&this.load(h),t=this.load(h)&255,this.write(h,t),this.F_CARRY=t&1,t>>=1,this.write(h,t),this.REG_ACC=this.REG_ACC^t,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC;break}case 68:break;case 69:{this.load(h),n+=l;break}case 71:{l===0&&this.load(h);let f=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles?this.REG_ACC&this.REG_X:this.REG_ACC&this.REG_X&(i+1&255|0);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 72:{l===0&&this.load(h);let m=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles;this.REG_SP=256|this.REG_ACC&this.REG_X;let f=m?this.REG_SP&255:this.REG_SP&255&(i+1&255);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 73:{l===0&&this.load(h);let f=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles?this.REG_Y:this.REG_Y&(i+1&255);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 74:{l===0&&this.load(h);let f=this._dmcFetchCycles>0&&this._dmcFetchCycles<=this.instrBusCycles?this.REG_X:this.REG_X&(i+1&255);l===1&&(h=f<<8|h&255),this.write(h,f);break}case 75:{t=this.load(h)&(this.REG_SP&255),this.REG_ACC=this.REG_X=this.F_ZERO=t,this.REG_SP=256|t,this.F_SIGN=t>>7&1,n+=l;break}case 76:{this.REG_ACC=this.F_ZERO=(this.REG_ACC|255)&this.REG_X&this.load(h),this.F_SIGN=this.REG_ACC>>7&1;break}case 77:{this.REG_ACC=this.REG_X=this.F_ZERO=(this.REG_ACC|255)&this.load(h),this.F_SIGN=this.REG_ACC>>7&1;break}default:throw new Error(`Game crashed, invalid opcode at address $${p.toString(16)}`)}if(this.instrBusCycles=5&&(this.nmiImmediate=!0,this.nmiRaised=!1),this.nmiPending&&(this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.doNonMaskableInterrupt(this.getStatus()&239),this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.nmiPending=!1,s=7),this._cpuCycleBase+=n+s,n+s}loadFromCartridge(t){return this.nes.mmap.load(t)}_loadFromCartridgePlain(t){return this.nes.mmap.load(t)}_loadFromCartridgeWithGameGenie(t){let e=this.nes.mmap.load(t);return this.nes.gameGenie.applyCodes(t,e)}_updateCartridgeLoader(){this.nes.gameGenie.enabled&&this.nes.gameGenie.patches.length>0?this.loadFromCartridge=this._loadFromCartridgeWithGameGenie:delete this.loadFromCartridge}load(t){if(t<8192)this.dataBus=this.mem[t&2047],this.instrBusCycles++,this.nes.ppu.advanceDots(3);else if(t>=16384){if(t===16405){this.nes.papu.advanceFrameCounter(this.instrBusCycles-this.apuCatchupCycles),this.apuCatchupCycles=this.instrBusCycles;let e=this.loadFromCartridge(t);return this.instrBusCycles++,this.nes.ppu.advanceDots(3),e}this.dataBus=this.loadFromCartridge(t),this.instrBusCycles++,this.nes.ppu.advanceDots(3)}else this.instrBusCycles++,this.dataBus=this.loadFromCartridge(t),this.nes.ppu.advanceDots(3);return this.dataBus}loadDirect(t){return t<8192?this.dataBus=this.mem[t&2047]:this.dataBus=this.loadFromCartridge(t),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus}load16bit(t){let e;return t<8191?(this.dataBus=this.mem[t&2047],e=this.dataBus,this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus=this.mem[t+1&2047],this.instrBusCycles++,this.nes.ppu.advanceDots(3),e|this.dataBus<<8):(this.dataBus=this.loadFromCartridge(t),e=this.dataBus,this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus=this.loadFromCartridge(t+1),this.instrBusCycles++,this.nes.ppu.advanceDots(3),e|this.dataBus<<8)}write(t,e){t>=8192&&t<16384?(this.instrBusCycles++,this.dataBus=e,this.nes.mmap.write(t,e),this.nes.ppu.advanceDots(3)):(this.dataBus=e,t<8192?this.mem[t&2047]=e:this.nes.mmap.write(t,e),this.instrBusCycles++,this.nes.ppu.advanceDots(3))}requestIrq(t){this.irqRequested&&t===this.IRQ_NORMAL||(this.irqRequested=!0,this.irqType=t)}push(t){this.dataBus=t,this.mem[this.REG_SP|256]=t,this.REG_SP--,this.REG_SP=this.REG_SP&255,this.instrBusCycles++,this.nes.ppu.advanceDots(3)}pull(){return this.REG_SP++,this.REG_SP=this.REG_SP&255,this.dataBus=this.mem[256|this.REG_SP],this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.dataBus}_cyclesToNextDmcFetch(){if(!this.nes.papu)return 2147483647;let t=this.nes.papu.dmc;if(!t||!t.isEnabled||t.dmaFrequency<=0||!t.hasSample)return 2147483647;let e=t.dmaFrequency>>3,i=t.shiftCounter+7>>3;return i<=0&&(i=e),i+(t.dmaCounter-1)*e}_takeBranch(t,e){let i=t+3&65535,s=e+1&65535;if(this.load(i),(i&65280)!==(s&65280)){let r=i&65280|s&255;return this.load(r),this.REG_PC=e,2}return this.REG_PC=e,1}pageCrossed(t,e){return(t&65280)!==(e&65280)}haltCycles(t){this.cyclesToHalt+=t}doNonMaskableInterrupt(t){if(this.nes.mmap===null)return;this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.F_INTERRUPT_NEW=1,this.push(t),this.dataBus=this.loadFromCartridge(65530),this.instrBusCycles++,this.nes.ppu.advanceDots(3);let e=this.dataBus;this.dataBus=this.loadFromCartridge(65531),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW=e|this.dataBus<<8,this.REG_PC_NEW--}doResetInterrupt(){this.dataBus=this.loadFromCartridge(65532),this.instrBusCycles++,this.nes.ppu.advanceDots(3);let t=this.dataBus;this.dataBus=this.loadFromCartridge(65533),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW=t|this.dataBus<<8,this.REG_PC_NEW--}doIrq(t){this.REG_PC_NEW++,this.push(this.REG_PC_NEW>>8&255),this.push(this.REG_PC_NEW&255),this.push(t),this.F_INTERRUPT_NEW=1,this.F_BRK_NEW=0,this.dataBus=this.loadFromCartridge(65534),this.instrBusCycles++,this.nes.ppu.advanceDots(3);let e=this.dataBus;this.dataBus=this.loadFromCartridge(65535),this.instrBusCycles++,this.nes.ppu.advanceDots(3),this.REG_PC_NEW=e|this.dataBus<<8,this.REG_PC_NEW--}getStatus(){return this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7}setStatus(t){this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===1?0:1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_BRK=t>>4&1,this.F_NOTUSED=t>>5&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1}setStatusFromStack(t){this.F_CARRY=t&1,this.F_ZERO=(t>>1&1)===1?0:1,this.F_INTERRUPT=t>>2&1,this.F_DECIMAL=t>>3&1,this.F_OVERFLOW=t>>6&1,this.F_SIGN=t>>7&1}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(Ft,"JSON_PROPERTIES",["mem","cyclesToHalt","dataBus","irqRequested","irqType","nmiRaised","nmiPending","nmiImmediate","REG_ACC","REG_X","REG_Y","REG_SP","REG_PC","REG_PC_NEW","REG_STATUS","F_CARRY","F_DECIMAL","F_INTERRUPT","F_INTERRUPT_NEW","F_OVERFLOW","F_SIGN","F_ZERO","F_NOTUSED","F_NOTUSED_NEW","F_BRK","F_BRK_NEW","_cpuCycleBase"]);ce=Ft});var N,me,fe,Je=S(()=>{H();N=class N{constructor(){this.state=new Array(8);for(let t=0;t{pe=class{constructor(){this.pix=new Uint8Array(64),this.initialized=!1,this.opaque=new Uint8Array(8)}setBuffer(t){for(let e=0;e<8;e++)this.setScanline(e,t[e],t[e+8])}setScanline(t,e,i){this.initialized=!0;let s=t<<3;for(let r=0;r<8;r++)this.pix[s+r]=(e>>7-r&1)+((i>>7-r&1)<<1),this.pix[s+r]===0&&(this.opaque[t]=!1)}render(t,e,i,s,r,a,n,l,o,p,h,d,x){if(a<-7||a>=256||n<-7||n>=240)return;a<0&&(e-=a),a+s>=256&&(s=256-a),n<0&&(i-=n),n+r>=240&&(r=240-n);let m,f,R,_;if(!p&&!h){m=(n<<8)+a,f=0;for(let E=0;E<8;E++){for(let g=0;g<8;g++)g>=e&&g=i&&E=e&&g=i&&E=e&&g=i&&E=e&&g=i&&E{ue=class{constructor(t,e,i){this.width=t,this.height=e,this.name=i,this.tile=new Uint8Array(t*e),this.attrib=new Uint8Array(t*e)}getTileIndex(t,e){return this.tile[e*this.width+t]}getAttrib(t,e){return this.attrib[e*this.width+t]}writeAttrib(t,e){let i=t%8*4,s=Math.floor(t/8)*4,r,a,n,l;for(let o=0;o<2;o++)for(let p=0;p<2;p++){r=e>>2*(o*2+p)&3;for(let h=0;h<2;h++)for(let d=0;d<2;d++)a=i+p*2+d,n=s+o*2+h,l=n*this.width+a,this.attrib[l]=r<<2&12}}toJSON(){return{tile:this.tile.slice(0),attrib:this.attrib.slice(0)}}fromJSON(t){this.tile.set(t.tile),this.attrib.set(t.attrib)}},Xe=ue});var xe,Ze,Ke=S(()=>{xe=class{constructor(){this.curTable=new Uint32Array(64),this.emphTable=new Array(8),this.currentEmph=-1}loadNTSCPalette(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)}loadPALPalette(){this.curTable=new Uint32Array([5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0]),this.makeTables(),this.setEmphasis(0)}makeTables(){let t,e,i,s,r,a,n,l;for(let o=0;o<8;o++)for(a=1,n=1,l=1,(o&1)!==0&&(n=.75,l=.75),(o&2)!==0&&(a=.75,l=.75),(o&4)!==0&&(a=.75,n=.75),this.emphTable[o]=new Uint32Array(64),r=0;r<64;r++)s=this.curTable[r],t=Math.floor(this.getRed(s)*a),e=Math.floor(this.getGreen(s)*n),i=Math.floor(this.getBlue(s)*l),this.emphTable[o][r]=this.getRgb(t,e,i)}setEmphasis(t){if(t!==this.currentEmph){this.currentEmph=t;for(let e=0;e<64;e++)this.curTable[e]=this.emphTable[t][e]}}getEntry(t){return this.curTable[t]}getRed(t){return t>>16&255}getGreen(t){return t>>8&255}getBlue(t){return t&255}getRgb(t,e,i){return t<<16|e<<8|i}loadDefaultPalette(){this.curTable[0]=this.getRgb(117,117,117),this.curTable[1]=this.getRgb(39,27,143),this.curTable[2]=this.getRgb(0,0,171),this.curTable[3]=this.getRgb(71,0,159),this.curTable[4]=this.getRgb(143,0,119),this.curTable[5]=this.getRgb(171,0,19),this.curTable[6]=this.getRgb(167,0,0),this.curTable[7]=this.getRgb(127,11,0),this.curTable[8]=this.getRgb(67,47,0),this.curTable[9]=this.getRgb(0,71,0),this.curTable[10]=this.getRgb(0,81,0),this.curTable[11]=this.getRgb(0,63,23),this.curTable[12]=this.getRgb(27,63,95),this.curTable[13]=this.getRgb(0,0,0),this.curTable[14]=this.getRgb(0,0,0),this.curTable[15]=this.getRgb(0,0,0),this.curTable[16]=this.getRgb(188,188,188),this.curTable[17]=this.getRgb(0,115,239),this.curTable[18]=this.getRgb(35,59,239),this.curTable[19]=this.getRgb(131,0,243),this.curTable[20]=this.getRgb(191,0,191),this.curTable[21]=this.getRgb(231,0,91),this.curTable[22]=this.getRgb(219,43,0),this.curTable[23]=this.getRgb(203,79,15),this.curTable[24]=this.getRgb(139,115,0),this.curTable[25]=this.getRgb(0,151,0),this.curTable[26]=this.getRgb(0,171,0),this.curTable[27]=this.getRgb(0,147,59),this.curTable[28]=this.getRgb(0,131,139),this.curTable[29]=this.getRgb(0,0,0),this.curTable[30]=this.getRgb(0,0,0),this.curTable[31]=this.getRgb(0,0,0),this.curTable[32]=this.getRgb(255,255,255),this.curTable[33]=this.getRgb(63,191,255),this.curTable[34]=this.getRgb(95,151,255),this.curTable[35]=this.getRgb(167,139,253),this.curTable[36]=this.getRgb(247,123,255),this.curTable[37]=this.getRgb(255,119,183),this.curTable[38]=this.getRgb(255,119,99),this.curTable[39]=this.getRgb(255,155,59),this.curTable[40]=this.getRgb(243,191,63),this.curTable[41]=this.getRgb(131,211,19),this.curTable[42]=this.getRgb(79,223,75),this.curTable[43]=this.getRgb(88,248,152),this.curTable[44]=this.getRgb(0,235,219),this.curTable[45]=this.getRgb(0,0,0),this.curTable[46]=this.getRgb(0,0,0),this.curTable[47]=this.getRgb(0,0,0),this.curTable[48]=this.getRgb(255,255,255),this.curTable[49]=this.getRgb(171,231,255),this.curTable[50]=this.getRgb(199,215,255),this.curTable[51]=this.getRgb(215,203,255),this.curTable[52]=this.getRgb(255,199,255),this.curTable[53]=this.getRgb(255,199,219),this.curTable[54]=this.getRgb(255,191,179),this.curTable[55]=this.getRgb(255,219,171),this.curTable[56]=this.getRgb(255,231,163),this.curTable[57]=this.getRgb(227,255,163),this.curTable[58]=this.getRgb(171,243,191),this.curTable[59]=this.getRgb(179,255,207),this.curTable[60]=this.getRgb(159,255,243),this.curTable[61]=this.getRgb(0,0,0),this.curTable[62]=this.getRgb(0,0,0),this.curTable[63]=this.getRgb(0,0,0),this.makeTables(),this.setEmphasis(0)}},Ze=xe});var Nt,de,Qe=S(()=>{Bt();H();je();Ke();Nt=class{constructor(t){c(this,"STATUS_VRAMWRITE",4);c(this,"STATUS_SLSPRITECOUNT",5);c(this,"STATUS_SPRITE0HIT",6);c(this,"STATUS_VBLANK",7);this.nes=t,this.showSpr0Hit=!1,this.clipToTvSize=!0;let e;for(this.vramMem=new Uint8Array(32768),this.spriteMem=new Uint8Array(256),this.vramAddress=null,this.vramTmpAddress=null,this.vramBufferedReadValue=0,this.firstWrite=!0,this.openBusLatch=0,this.openBusDecayFrames=0,this.sramAddress=0,this.currentMirroring=-1,this.nmiOutput=!1,this.nmiSuppressed=!1,this.vblankPending=!1,this.frameEnded=!1,this.dummyCycleToggle=!1,this.validTileData=!1,this.scanlineAlreadyRendered=null,this.f_nmiOnVblank=0,this.f_spriteSize=0,this.f_bgPatternTable=0,this.f_spPatternTable=0,this.f_addrInc=0,this.f_nTblAddress=0,this.f_color=0,this.f_spVisibility=0,this.f_bgVisibility=0,this.f_spClipping=0,this.f_bgClipping=0,this.f_dispType=0,this.cntFV=0,this.cntV=0,this.cntH=0,this.cntVT=0,this.cntHT=0,this.regFV=0,this.regV=0,this.regH=0,this.regVT=0,this.regHT=0,this.regFH=0,this.regS=0,this.curNt=null,this.attrib=new Uint8Array(32),this.buffer=new Uint32Array(256*240),this.bgbuffer=new Uint32Array(256*240),this.pixrendered=new Uint32Array(256*240),this.validTileData=null,this.scantile=new Array(32),this.scanline=0,this.lastRenderedScanline=-1,this.curX=0,this.sprX=new Uint8Array(64),this.sprY=new Uint8Array(64),this.sprTile=new Uint8Array(64),this.sprCol=new Uint8Array(64),this.vertFlip=new Uint8Array(64),this.horiFlip=new Uint8Array(64),this.bgPriority=new Uint8Array(64),this.spr0HitX=0,this.spr0HitY=0,this.hitSpr0=!1,this.secondaryOAM=new Uint8Array(32),this.secondaryOAM.fill(255),this.spritesFound=0,this.sprite0InSecondary=!1,this.scanlineSpriteCount=new Uint8Array(241),this.scanlineSecondaryOAM=new Uint8Array(7712),this.scanlineSprite0=new Uint8Array(241),this.sprPalette=new Uint32Array(16),this.imgPalette=new Uint32Array(16),this.ptTile=new Array(512),e=0;e<512;e++)this.ptTile[e]=new xt;for(this.ntable1=new Array(4),this.currentMirroring=-1,this.nameTable=new Array(4),e=0;e<4;e++)this.nameTable[e]=new Xe(32,32,`Nt${e}`);for(this.vramMirrorTable=new Uint16Array(32768),e=0;e<32768;e++)this.vramMirrorTable[e]=e;this.palTable=new Ze,this.palTable.loadNTSCPalette(),this.updateControlReg1(0),this.updateControlReg2(0)}setMirroring(t){if(t!==this.currentMirroring){this.currentMirroring=t,this.triggerRendering(),this.vramMirrorTable===null&&(this.vramMirrorTable=new Uint16Array(32768));for(let e=0;e<32768;e++)this.vramMirrorTable[e]=e;this.defineMirrorRegion(16160,16128,32),this.defineMirrorRegion(16192,16128,32),this.defineMirrorRegion(16256,16128,32),this.defineMirrorRegion(16320,16128,32),this.defineMirrorRegion(12288,8192,3840),this.defineMirrorRegion(16384,0,16384),t===this.nes.rom.HORIZONTAL_MIRRORING?(this.ntable1[0]=0,this.ntable1[1]=0,this.ntable1[2]=1,this.ntable1[3]=1,this.defineMirrorRegion(9216,8192,1024),this.defineMirrorRegion(11264,10240,1024)):t===this.nes.rom.VERTICAL_MIRRORING?(this.ntable1[0]=0,this.ntable1[1]=1,this.ntable1[2]=0,this.ntable1[3]=1,this.defineMirrorRegion(10240,8192,1024),this.defineMirrorRegion(11264,9216,1024)):t===this.nes.rom.SINGLESCREEN_MIRRORING?(this.ntable1[0]=0,this.ntable1[1]=0,this.ntable1[2]=0,this.ntable1[3]=0,this.defineMirrorRegion(9216,8192,1024),this.defineMirrorRegion(10240,8192,1024),this.defineMirrorRegion(11264,8192,1024)):t===this.nes.rom.SINGLESCREEN_MIRRORING2?(this.ntable1[0]=1,this.ntable1[1]=1,this.ntable1[2]=1,this.ntable1[3]=1,this.defineMirrorRegion(9216,9216,1024),this.defineMirrorRegion(10240,9216,1024),this.defineMirrorRegion(11264,9216,1024)):(this.ntable1[0]=0,this.ntable1[1]=1,this.ntable1[2]=2,this.ntable1[3]=3)}}defineMirrorRegion(t,e,i){for(let s=0;s0&&(this.openBusDecayFrames--,this.openBusDecayFrames===0&&(this.openBusLatch=0)),this.lastRenderedScanline<239&&this.renderFramePartially(this.lastRenderedScanline+1,240-this.lastRenderedScanline),this.endFrame(),this.lastRenderedScanline=-1}_fireVblankSet(t,e){this.vblankPending=!1,this.nmiSuppressed||(this.setStatusFlag(this.STATUS_VBLANK,!0),this._updateNmiOutput(),t.nmiRaised&&(t.nmiDotsRemainingInStep=e)),this.nmiSuppressed=!1,this.startVBlank(),this.frameEnded=!0}_fireVblankClear(t,e){t.nmiRaised&&e&&(t.nmiPending=!0,t.nmiRaised=!1),this.setStatusFlag(this.STATUS_VBLANK,!1),this.setStatusFlag(this.STATUS_SPRITE0HIT,!1),this.setStatusFlag(this.STATUS_SLSPRITECOUNT,!1),this.hitSpr0=!1,this.spr0HitX=-1,this.spr0HitY=-1,this._updateNmiOutput()}advanceDots(t){let e=this.curX+t;if(e<341&&!(this.scanline===0&&this.vblankPending&&this.curX<=1&&e>=1)&&!(this.scanline===20&&this.curX<=1&&e>=1)&&(this.spr0HitX=e)){this.curX=e;return}let i=this.nes.cpu;for(let s=0;s=21&&this.scanline<=260){let t=this.scanline+1-21;this.performOAMCorruption(),(this.f_bgVisibility===1||this.f_spVisibility===1)&&(this.scanlineAlreadyRendered||(this.cntHT=this.regHT,this.cntH=this.regH,this.renderBgScanline(!0,t)),this.scanlineAlreadyRendered=!1,!this.hitSpr0&&this.f_bgVisibility===1&&this.f_spVisibility===1&&this.scanlineSprite0[t]&&this.checkSprite0(t)&&(this.hitSpr0=!0)),t<240&&this.evaluateSprites(t+1),!this.hitSpr0&&this.f_bgVisibility===1&&this.f_spVisibility===1&&(this._precomputeSprite0Hit(t+1),this.spr0HitX!==-1&&(this.hitSpr0=!0)),(this.f_bgVisibility===1||this.f_spVisibility===1)&&this.nes.mmap.clockIrqCounter()}}this.scanline++,this.regsToAddress(),this.cntsToAddress()}startFrame(){this.scanlineSpriteCount.fill(0),this.scanlineSprite0.fill(0);let t;if(this.f_dispType===0)t=this.imgPalette[0];else switch(this.f_color){case 0:t=0;break;case 1:t=65280;break;case 2:t=255;break;case 3:t=0;break;case 4:t=16711680;break;default:t=0}this.buffer.fill(t),this.pixrendered.fill(65)}endFrame(){let t,e,i=this.buffer;if(this.showSpr0Hit){if(this.sprX[0]>=0&&this.sprX[0]<256&&this.sprY[0]>=0&&this.sprY[0]<240){for(t=0;t<256;t++)i[(this.sprY[0]<<8)+t]=16733525;for(t=0;t<240;t++)i[(t<<8)+this.sprX[0]]=16733525}if(this.spr0HitX>=0&&this.spr0HitX<256&&this.spr0HitY>=0&&this.spr0HitY<240){for(t=0;t<256;t++)i[(this.spr0HitY<<8)+t]=5635925;for(t=0;t<240;t++)i[(t<<8)+this.spr0HitX]=5635925}}if(this.clipToTvSize||this.f_bgClipping===0||this.f_spClipping===0)for(e=0;e<240;e++)i.fill(0,e<<8,(e<<8)+8);if(this.clipToTvSize){for(e=0;e<240;e++)i.fill(0,(e<<8)+248,(e<<8)+256);i.fill(0,0,2048),i.fill(0,59392,61440)}this.nes.ui.writeFrame(i)}updateControlReg1(t){this.triggerRendering(),this.f_nmiOnVblank=t>>7&1,this.f_spriteSize=t>>5&1,this.f_bgPatternTable=t>>4&1,this.f_spPatternTable=t>>3&1,this.f_addrInc=t>>2&1,this.f_nTblAddress=t&3,this.regV=t>>1&1,this.regH=t&1,this.regS=t>>4&1,this._updateNmiOutput()}_updateNmiOutput(){let t=(this.nes.cpu.mem[8194]&128)!==0,e=this.f_nmiOnVblank!==0&&t;if(e&&!this.nmiOutput)this.nes.cpu.nmiRaised=!0,this.nes.cpu.nmiRaisedAtCycle=this.nes.cpu.instrBusCycles;else if(!e&&this.nmiOutput&&this.nes.cpu.nmiRaised){let i=this.nes.cpu.instrBusCycles-this.nes.cpu.nmiRaisedAtCycle;(i===0||i===1&&this.nes.cpu.nmiDotsRemainingInStep===0)&&(this.nes.cpu.nmiRaised=!1)}this.nmiOutput=e}updateControlReg2(t){if(this.triggerRendering(),this.f_color=t>>5&7,this.f_spVisibility=t>>4&1,this.f_bgVisibility=t>>3&1,this.f_spClipping=t>>2&1,this.f_bgClipping=t>>1&1,this.f_dispType=t&1,!this.hitSpr0&&this.f_bgVisibility===1&&this.f_spVisibility===1&&this.scanline>=21&&this.scanline<=260){let e=this.scanline+1-21;this.scanlineSprite0[e]&&this.checkSprite0(e)&&(this.hitSpr0=!0)}this.f_dispType===0&&this.palTable.setEmphasis(this.f_color),this.updatePalettes()}setStatusFlag(t,e){let i=1<=20&&this.scanline<=260){let i=this.curX;if(i<=64)return 255;if(i<=256){let s=this.spriteMem[this.sramAddress];return(this.sramAddress&3)===2&&(s&=227),s}else return 255}let e=this.spriteMem[this.sramAddress];return(this.sramAddress&3)===2&&(e&=227),e}sramWrite(t){(this.f_spVisibility===1||this.f_bgVisibility===1)&&this.scanline>=20&&this.scanline<=260?this.sramAddress=this.sramAddress+4&252:(this.spriteMem[this.sramAddress]=t,this.spriteRamWriteUpdate(this.sramAddress,t),this.sramAddress++,this.sramAddress%=256)}scrollWrite(t){this.triggerRendering(),this.firstWrite?(this.regHT=t>>3&31,this.regFH=t&7):(this.regFV=t&7,this.regVT=t>>3&31),this.firstWrite=!this.firstWrite}writeVRAMAddress(t){this.firstWrite?(this.regFV=t>>4&3,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3):(this.triggerRendering(),this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31,this.cntFV=this.regFV,this.cntV=this.regV,this.cntH=this.regH,this.cntVT=this.regVT,this.cntHT=this.regHT,this.checkSprite0(this.scanline+1-21)),this.firstWrite=!this.firstWrite,this.cntsToAddress(),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress)}vramLoad(){let t;if(this.cntsToAddress(),this.regsToAddress(),this.vramAddress<=16127)return t=this.vramBufferedReadValue,this.vramAddress<8192?this.vramBufferedReadValue=this.vramMem[this.vramAddress]:this.vramBufferedReadValue=this.mirroredLoad(this.vramAddress),this.vramAddress<8192&&this.nes.mmap.latchAccess(this.vramAddress),this._incrementVramAddress(),this.cntsFromAddress(),this.regsFromAddress(),t;let e=this.vramAddress&31;return(e&19)===16&&(e&=15),t=this.vramMem[16128+e]&63|this.openBusLatch&192,this.vramBufferedReadValue=this.mirroredLoad(this.vramAddress&12287),this._incrementVramAddress(),this.cntsFromAddress(),this.regsFromAddress(),t}vramWrite(t){this.triggerRendering(),this.cntsToAddress(),this.regsToAddress(),this.vramAddress>=8192?this.mirroredWrite(this.vramAddress,t):(this.nes.mmap.canWriteChr(this.vramAddress)&&this.writeMem(this.vramAddress,t),this.nes.mmap.latchAccess(this.vramAddress)),this._incrementVramAddress(),this.regsFromAddress(),this.cntsFromAddress()}sramDMA(t){let e=t*256,i;for(let n=0;n<256;n++){i=this.nes.cpu.mem[e+n];let l=this.sramAddress+n&255;this.spriteMem[l]=i,this.spriteRamWriteUpdate(l,i)}let s=this.nes.cpu,a=(s._cpuCycleBase+s.instrBusCycles)%2===0?514:513;s.haltCycles(a)}regsFromAddress(){let t=this.vramTmpAddress>>8&255;this.regFV=t>>4&7,this.regV=t>>3&1,this.regH=t>>2&1,this.regVT=this.regVT&7|(t&3)<<3,t=this.vramTmpAddress&255,this.regVT=this.regVT&24|t>>5&7,this.regHT=t&31}_incrementVramAddress(){let t=this.f_spVisibility===1||this.f_bgVisibility===1,e=this.scanline>=20&&this.scanline<=260;if(t&&e)if((this.vramAddress&31)===31?(this.vramAddress&=-32,this.vramAddress^=1024):this.vramAddress+=1,(this.vramAddress&28672)!==28672)this.vramAddress+=4096;else{this.vramAddress&=-28673;let i=this.vramAddress>>5&31;i===29?(i=0,this.vramAddress^=2048):i===31?i=0:i+=1,this.vramAddress=this.vramAddress&-993|i<<5}else this.vramAddress+=this.f_addrInc===1?32:1}cntsFromAddress(){let t=this.vramAddress>>8&255;this.cntFV=t>>4&3,this.cntV=t>>3&1,this.cntH=t>>2&1,this.cntVT=this.cntVT&7|(t&3)<<3,t=this.vramAddress&255,this.cntVT=this.cntVT&24|t>>5&7,this.cntHT=t&31}regsToAddress(){let t=(this.regFV&7)<<4;t|=(this.regV&1)<<3,t|=(this.regH&1)<<2,t|=this.regVT>>3&3;let e=(this.regVT&7)<<5;e|=this.regHT&31,this.vramTmpAddress=(t<<8|e)&32767}cntsToAddress(){let t=(this.cntFV&7)<<4;t|=(this.cntV&1)<<3,t|=(this.cntH&1)<<2,t|=this.cntVT>>3&3;let e=(this.cntVT&7)<<5;e|=this.cntHT&31,this.vramAddress=(t<<8|e)&32767}incTileCounter(t){for(let e=t;e!==0;e--)this.cntHT++,this.cntHT===32&&(this.cntHT=0,this.cntVT++,this.cntVT>=30&&(this.cntH++,this.cntH===2&&(this.cntH=0,this.cntV++,this.cntV===2&&(this.cntV=0,this.cntFV++,this.cntFV&=7))))}mirroredLoad(t){return this.vramMem[this.vramMirrorTable[t]]}mirroredWrite(t,e){if(t>=16128&&t<16160)t===16128||t===16144?(this.writeMem(16128,e),this.writeMem(16144,e)):t===16132||t===16148?(this.writeMem(16132,e),this.writeMem(16148,e)):t===16136||t===16152?(this.writeMem(16136,e),this.writeMem(16152,e)):t===16140||t===16156?(this.writeMem(16140,e),this.writeMem(16156,e)):this.writeMem(t,e);else if(t=21&&this.scanline<=260&&(this.renderFramePartially(this.lastRenderedScanline+1,this.scanline-21-this.lastRenderedScanline),this.lastRenderedScanline=this.scanline-21)}renderFramePartially(t,e){if(this._inRendering=!0,this.nes.mmap.onSpriteRender(),this.f_spVisibility===1&&this.renderSpritesPartially(t,e,1),this.f_bgVisibility===1){let i=t<<8,s=t+e<<8;s>61440&&(s=61440);let r=this.buffer,a=this.bgbuffer,n=this.pixrendered;for(let l=i;l255&&(r[l]=a[l])}this.f_spVisibility===1&&this.renderSpritesPartially(t,e,0),this.nes.mmap.onBgRender(),this._inRendering=!1,this.validTileData=!1}renderBgScanline(t,e){let i=this.regS===0?0:256,s=this.regS===0?0:4096,r=(e<<8)-this.regFH;if(this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],this.cntHT=this.regHT,this.cntH=this.regH,this.curNt=this.ntable1[this.cntV+this.cntV+this.cntH],e<240&&e-this.cntFV>=0){let a=this.cntFV<<3,n=this.scantile,l=this.attrib,o=this.ptTile,p=this.nameTable,h=this.imgPalette,d=this.pixrendered,x=t?this.bgbuffer:this.buffer,m=this.nes.mmap,f,R,_,E;this._inRendering=!0,this.nes.mmap.onBgRender(),this.f_spriteSize===1&&m.latchAccess(8168);for(let g=0;g<32;g++){if(e>=0){let L=p[this.curNt].getTileIndex(this.cntHT,this.cntVT);if(this.validTileData){if(f=n[g],typeof f=="undefined")continue;R=f.pix,_=l[g]}else{if(f=o[i+L],typeof f=="undefined")continue;if(R=f.pix,_=p[this.curNt].getAttrib(this.cntHT,this.cntVT),m.bgTileOverride){let W=m.getBgTileData(i,L,this.cntHT,this.cntVT);W&&(f=W.tile,R=f.pix,_=W.attrib)}n[g]=f,l[g]=_}let z=0,q=(g<<3)-this.regFH;if(q>-8)if(q<0&&(r-=q,z=-q),f.opaque[this.cntFV])for(;z<8;z++)x[r]=h[R[a+z]+_],d[r]|=256,r++;else for(;z<8;z++)E=R[a+z],E!==0&&(x[r]=h[E+_],d[r]|=256),r++;m.latchAccess(s+L*16+this.cntFV+8)}++this.cntHT===32&&(this.cntHT=0,this.cntH++,this.cntH%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH])}this._inRendering=!1,this.validTileData=!0}this.cntFV++,this.cntFV===8&&(this.cntFV=0,this.cntVT++,this.cntVT===30?(this.cntVT=0,this.cntV++,this.cntV%=2,this.curNt=this.ntable1[(this.cntV<<1)+this.cntH]):this.cntVT===32&&(this.cntVT=0),this.validTileData=!1)}performOAMCorruption(){if(!(this.f_spVisibility===1||this.f_bgVisibility===1)||this.sramAddress===0)return;let e=this.sramAddress&248;for(let i=0;i<8;i++)this.spriteMem[i]=this.spriteMem[e+i&255];for(let i=0;i<8;i++)this.spriteRamWriteUpdate(i,this.spriteMem[i])}evaluateSprites(t){if(!(this.f_spVisibility===1||this.f_bgVisibility===1))return;let i=t*32;for(let x=0;x<32;x++)this.scanlineSecondaryOAM[i+x]=255;this.scanlineSpriteCount[t]=0,this.scanlineSprite0[t]=0;let s=this.f_spriteSize===0?8:16,r=0,a=0,n=this.sramAddress>>2&63,l=this.sramAddress&3,o=0,p=n,h=!0,d=0;do{let x;r>=8?x=o:h?x=l:x=0,h=!1;let m=this.spriteMem[p*4+x&255];if(t>m&&t<=m+s)if(r<8){for(let f=0;f<4;f++)this.scanlineSecondaryOAM[i+a+f]=this.spriteMem[p*4+x+f&255];d===0&&(this.scanlineSprite0[t]=1),r++,a+=4}else{this.setStatusFlag(this.STATUS_SLSPRITECOUNT,!0);break}else r>=8&&(o=o+1&3);p=p+1&63,d++}while(p!==0);this.scanlineSpriteCount[t]=r;for(let x=0;x<32;x++)this.secondaryOAM[x]=this.scanlineSecondaryOAM[i+x];this.spritesFound=r,this.sprite0InSecondary=this.scanlineSprite0[t]===1,this.sramAddress=0}renderSpritesPartially(t,e,i){if(this.f_spVisibility!==1)return;let s=this.nes.mmap,r=this.ptTile,a=this.buffer,n=this.sprPalette,l=this.pixrendered;for(let o=t;o=240)continue;let p=this.scanlineSpriteCount[o],h=o*32;for(let d=0;d>7&1,E=f>>6&1,g=f>>5&1,L=(f&3)<<2;if(g===i)if(this.f_spriteSize===0){let z=this.f_spPatternTable===0?m:m+256,q=this.f_spPatternTable===0?0:4096,W=x+1,J=o-W;if(J<0||J>=8)continue;r[z].render(a,0,J,8,J+1,R,W,L,n,E,_,d,l),s.latchAccess(q+m*16+8)}else{let z=(m&1)!==0?4096:0,q=m&254,W=(m&1)!==0?q-1+256:q,J=x+1,j=o-J;if(j<0||j>=16)continue;let dt,rt;j<8?(dt=_?1:0,rt=j):(dt=_?0:1,rt=j-8),r[W+dt].render(a,0,rt,8,rt+1,R,J+(j<8?0:8),L,n,E,_,d,l),s.latchAccess(z+q*16+8),s.latchAccess(z+(q+1)*16+8)}}}}checkSprite0(t){if(this.spr0HitX=-1,this.spr0HitY=-1,t<0||t>=240||!this.scanlineSprite0[t]||this.scanlineSpriteCount[t]===0)return!1;let e=t*32,i=this.scanlineSecondaryOAM[e+0],s=this.scanlineSecondaryOAM[e+1],r=this.scanlineSecondaryOAM[e+2],a=this.scanlineSecondaryOAM[e+3],n=i+1,l=r>>7&1,o=r>>6&1,p=this.f_spClipping===0||this.f_bgClipping===0,h,d,x=this.nes.mmap;if(this.f_spriteSize===0){let m=this.f_spPatternTable===0?0:256;if(n<=t&&n+8>t&&a<256)return d=x.getSpritePatternTile(s+m),h=l?7-(t-n):t-n,h*=8,this._checkSpr0Pixels(d,h,a,o,t,p)}else if(n<=t&&n+16>t&&a<256)return h=l?15-(t-n):t-n,h<8?d=x.getSpritePatternTile(s+(l?1:0)+((s&1)!==0?255:0)):(d=x.getSpritePatternTile(s+(l?0:1)+((s&1)!==0?255:0)),h=l?15-h:h-8),h*=8,this._checkSpr0Pixels(d,h,a,o,t,p);return!1}_checkSpr0Pixels(t,e,i,s,r,a){let n=r*256+i;for(let l=0;l<8;l++){let o=s?7-l:l,p=i+l;if(p>=0&&p<255){if(a&&p<8){n++;continue}if(n>=0&&n<61440&&this.pixrendered[n]>255&&t.pix[e+o]!==0)return this.spr0HitX=p,this.spr0HitY=r,!0}n++}return!1}_precomputeSprite0Hit(t){if(t<1||t>239||!this.scanlineSprite0[t]||this.scanlineSpriteCount[t]===0)return!1;let e=t*32,i=this.scanlineSecondaryOAM[e+0],s=this.scanlineSecondaryOAM[e+1],r=this.scanlineSecondaryOAM[e+2],a=this.scanlineSecondaryOAM[e+3],n=i+1,l=r>>7&1,o=r>>6&1,p=this.f_spClipping===0||this.f_bgClipping===0,h=this.f_spriteSize===0?8:16;if(!(n<=t&&n+h>t)||a>=256)return!1;let d=l?h-1-(t-n):t-n,x,m;if(this.f_spriteSize===0){let g=this.f_spPatternTable===0?0:256;x=this.ptTile[s+g],m=d*8}else{let g=(s&1)!==0?256:0,L=s&-2;d<8?(x=this.ptTile[L+g+(l?1:0)],m=d*8):(x=this.ptTile[L+g+(l?0:1)],m=(d-8)*8)}if(!x)return!1;let f=this.cntFV,R=this.cntVT,_=this.cntV,E=this.regS===0?0:256;for(let g=0;g<8;g++){let L=a+g;if(L>=255||p&&L<8)continue;let z=o?7-g:g;if(x.pix[m+z]===0)continue;let q=L+this.regFH>>3,W=this.regHT+q,J=this.regH;W>=32&&(W-=32,J^=1);let j=this.ntable1[(_<<1)+J],dt=this.nameTable[j].getTileIndex(W,R),rt=this.ptTile[E+dt];if(!rt)continue;let is=L+this.regFH&7;if(rt.pix[f*8+is]!==0)return this.spr0HitX=L,this.spr0HitY=t-1,!0}return!1}writeMem(t,e){this.vramMem[t]=e,t<8192?(this.vramMem[t]=e,this.patternWrite(t,e)):t>=8192&&t<9152?this.nameTableWrite(this.ntable1[0],t-8192,e):t>=9152&&t<9216?this.attribTableWrite(this.ntable1[0],t-9152,e):t>=9216&&t<10176?this.nameTableWrite(this.ntable1[1],t-9216,e):t>=10176&&t<10240?this.attribTableWrite(this.ntable1[1],t-10176,e):t>=10240&&t<11200?this.nameTableWrite(this.ntable1[2],t-10240,e):t>=11200&&t<11264?this.attribTableWrite(this.ntable1[2],t-11200,e):t>=11264&&t<12224?this.nameTableWrite(this.ntable1[3],t-11264,e):t>=12224&&t<12288?this.attribTableWrite(this.ntable1[3],t-12224,e):t>=16128&&t<16160&&this.updatePalettes()}updatePalettes(){let t;for(t=0;t<16;t++)this.f_dispType===0?this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&63):this.imgPalette[t]=this.palTable.getEntry(this.vramMem[16128+t]&48);for(t=0;t<16;t++)this.f_dispType===0?this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&63):this.sprPalette[t]=this.palTable.getEntry(this.vramMem[16144+t]&48)}patternWrite(t,e){let i=t>>4,s=t&15;s<8?this.ptTile[i].setScanline(s,e,this.vramMem[t+8]):this.ptTile[i].setScanline(s-8,this.vramMem[t-8],e)}nameTableWrite(t,e,i){this.nameTable[t].tile[e]=i;let s=this.scanline+1-21;this.checkSprite0(s)}attribTableWrite(t,e,i){this.nameTable[t].writeAttrib(e,i),this.nameTable[t].tile[960+e]=i}spriteRamWriteUpdate(t,e){let i=t>>2;if(i===0){let s=this.scanline+1-21;this.checkSprite0(s)}switch(t&3){case 0:this.sprY[i]=e;break;case 1:this.sprTile[i]=e;break;case 2:this.vertFlip[i]=e>>7&1,this.horiFlip[i]=e>>6&1,this.bgPriority[i]=e>>5&1,this.sprCol[i]=(e&3)<<2;break;case 3:this.sprX[i]=e;break}}isPixelWhite(t,e){return this.triggerRendering(),this.nes.ppu.buffer[(e<<8)+t]===16777215}toJSON(){let t,e=w(this);for(e.nameTable=[],t=0;t=0&&(this.scantile[e]=this.ptTile[i])}for(e=0;e{H();U=class U{constructor(t){this.papu=t,this.isEnabled=!1,this.hasSample=!1,this.irqGenerated=!1,this.playMode=U.MODE_NORMAL,this.dmaFrequency=0,this.dmaCounter=0,this.deltaCounter=0,this.playStartAddress=0,this.playAddress=0,this.playLength=0,this.playLengthCounter=0,this.sample=0,this.dacLsb=0,this.shiftCounter=0,this.reg4012=0,this.reg4013=0,this.data=0,this.lastFetchedByte=0}clockDmc(){this.hasSample&&((this.data&1)===0?this.deltaCounter>0&&this.deltaCounter--:this.deltaCounter<63&&this.deltaCounter++,this.sample=this.isEnabled?(this.deltaCounter<<1)+this.dacLsb:0,this.data>>=1),this.dmaCounter--,this.dmaCounter<=0&&(this.hasSample=!1,this.endOfSample(),this.dmaCounter=8),this.irqGenerated&&this.papu.nes.cpu.requestIrq(this.papu.nes.cpu.IRQ_NORMAL)}endOfSample(){this.playLengthCounter===0&&this.playMode===U.MODE_LOOP&&(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength),this.playLengthCounter>0&&(this.nextSample(),this.playLengthCounter===0&&this.playMode===U.MODE_IRQ&&(this.irqGenerated=!0))}nextSample(){this.data=this.papu.nes.mmap.load(this.playAddress),this.lastFetchedByte=this.data,this.papu.nes.cpu.haltCycles(4),this.playLengthCounter--,this.playAddress++,this.playAddress>65535&&(this.playAddress=32768),this.hasSample=!0}writeReg(t,e){t===16400?(e>>6===0?this.playMode=U.MODE_NORMAL:(e>>6&1)===1?this.playMode=U.MODE_LOOP:e>>6===2&&(this.playMode=U.MODE_IRQ),(e&128)===0&&(this.irqGenerated=!1),this.dmaFrequency=this.papu.getDmcFrequency(e&15)):t===16401?(this.deltaCounter=e>>1&63,this.dacLsb=e&1,this.sample=(this.deltaCounter<<1)+this.dacLsb):t===16402?(this.playStartAddress=e<<6|49152,this.reg4012=e):t===16403?(this.playLength=(e<<4)+1,this.reg4013=e):t===16405&&(this.irqGenerated=!1,(e>>4&1)===0?this.playLengthCounter=0:this.playLengthCounter===0&&(this.playAddress=this.playStartAddress,this.playLengthCounter=this.playLength,!this.hasSample&&this.playLengthCounter>0&&(this.nextSample(),this.dmaCounter=8,this.shiftCounter=this.dmaFrequency,this.playLengthCounter===0&&this.playMode===U.MODE_IRQ&&(this.irqGenerated=!0))))}setEnabled(t){this.isEnabled=t}getLengthStatus(){return this.playLengthCounter===0||!this.isEnabled?0:1}getIrqStatus(){return this.irqGenerated?1:0}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(U,"MODE_NORMAL",0),c(U,"MODE_LOOP",1),c(U,"MODE_IRQ",2),c(U,"JSON_PROPERTIES",["isEnabled","hasSample","irqGenerated","playMode","dmaFrequency","dmaCounter","deltaCounter","playStartAddress","playAddress","playLength","playLengthCounter","shiftCounter","reg4012","reg4013","sample","dacLsb","data","lastFetchedByte"]);Re=U,$e=Re});var Mt,ei,ii=S(()=>{H();Mt=class{constructor(t){this.papu=t,this.progTimerCount=0,this.progTimerMax=0,this.isEnabled=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1,this.envReset=!1,this.shiftNow=!1,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.shiftReg=1,this.randomBit=0,this.randomMode=0,this.sampleValue=0,this.tmp=0,this.accValue=0,this.accCount=1}clockLengthCounter(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())}clockEnvDecay(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()}updateSampleValue(){this.isEnabled&&this.lengthCounter>0&&(this.sampleValue=this.randomBit*this.masterVolume)}writeReg(t,e){t===16396?(this.envDecayDisable=(e&16)!==0,this.envDecayRate=e&15,this.envDecayLoopEnable=(e&32)!==0,this.lengthCounterEnable=(e&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume):t===16398?(this.progTimerMax=this.papu.getNoiseWaveLength(e&15),this.randomMode=e>>7):t===16399&&(this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(e&248)),this.envReset=!0)}setEnabled(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()}getLengthStatus(){return this.lengthCounter===0||!this.isEnabled?0:1}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(Mt,"JSON_PROPERTIES",["isEnabled","envDecayDisable","envDecayLoopEnable","lengthCounterEnable","envReset","shiftNow","lengthCounter","progTimerCount","progTimerMax","envDecayRate","envDecayCounter","envVolume","masterVolume","shiftReg","randomBit","randomMode","sampleValue","accValue","accCount","tmp"]);ei=Mt});var Ot,ge,si=S(()=>{H();Ot=class{constructor(t,e){this.papu=t,this.dutyLookup=[0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1],this.impLookup=[1,-1,0,0,0,0,0,0,1,0,-1,0,0,0,0,0,1,0,0,0,-1,0,0,0,-1,0,1,0,0,0,0,0],this.sqr1=e,this.progTimerCount=0,this.progTimerMax=0,this.lengthCounter=0,this.squareCounter=0,this.sweepCounter=0,this.sweepCounterMax=0,this.sweepMode=0,this.sweepShiftAmount=0,this.envDecayRate=0,this.envDecayCounter=0,this.envVolume=0,this.masterVolume=0,this.dutyMode=0,this.vol=0,this.isEnabled=!1,this.lengthCounterEnable=!1,this.sweepActive=!1,this.sweepCarry=!1,this.envDecayDisable=!1,this.envDecayLoopEnable=!1,this.envReset=!1,this.updateSweepPeriod=!1,this.sweepResult=0,this.sampleValue=0}clockLengthCounter(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleValue())}clockEnvDecay(){this.envReset?(this.envReset=!1,this.envDecayCounter=this.envDecayRate+1,this.envVolume=15):--this.envDecayCounter<=0&&(this.envDecayCounter=this.envDecayRate+1,this.envVolume>0?this.envVolume--:this.envVolume=this.envDecayLoopEnable?15:0),this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()}clockSweep(){--this.sweepCounter<=0&&(this.sweepCounter=this.sweepCounterMax+1,this.sweepActive&&this.sweepShiftAmount>0&&this.progTimerMax>7&&(this.sweepCarry=!1,this.sweepMode===0?(this.progTimerMax+=this.progTimerMax>>this.sweepShiftAmount,this.progTimerMax>2047&&(this.progTimerMax=4095,this.sweepCarry=!0)):this.progTimerMax=this.progTimerMax-((this.progTimerMax>>this.sweepShiftAmount)+(this.sqr1?1:0)))),this.updateSweepPeriod&&(this.updateSweepPeriod=!1,this.sweepCounter=this.sweepCounterMax+1)}updateSampleValue(){this.isEnabled&&this.lengthCounter>0&&this.progTimerMax>7?this.sweepMode===0&&this.progTimerMax+(this.progTimerMax>>this.sweepShiftAmount)>2047?this.sampleValue=0:this.sampleValue=this.masterVolume*this.dutyLookup[(this.dutyMode<<3)+this.squareCounter]:this.sampleValue=0}writeReg(t,e){let i=this.sqr1?0:4;t===16384+i?(this.envDecayDisable=(e&16)!==0,this.envDecayRate=e&15,this.envDecayLoopEnable=(e&32)!==0,this.dutyMode=e>>6&3,this.lengthCounterEnable=(e&32)===0,this.envDecayDisable?this.masterVolume=this.envDecayRate:this.masterVolume=this.envVolume,this.updateSampleValue()):t===16385+i?(this.sweepActive=(e&128)!==0,this.sweepCounterMax=e>>4&7,this.sweepMode=e>>3&1,this.sweepShiftAmount=e&7,this.updateSweepPeriod=!0):t===16386+i?(this.progTimerMax&=1792,this.progTimerMax|=e):t===16387+i&&(this.progTimerMax&=255,this.progTimerMax|=(e&7)<<8,this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(e&248)),this.envReset=!0)}setEnabled(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleValue()}getLengthStatus(){return this.lengthCounter===0||!this.isEnabled?0:1}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(Ot,"JSON_PROPERTIES",["isEnabled","lengthCounterEnable","sweepActive","envDecayDisable","envDecayLoopEnable","envReset","sweepCarry","updateSweepPeriod","progTimerCount","progTimerMax","lengthCounter","squareCounter","sweepCounter","sweepCounterMax","sweepMode","sweepShiftAmount","envDecayRate","envDecayCounter","envVolume","masterVolume","dutyMode","sweepResult","sampleValue","vol"]);ge=Ot});var It,ri,hi=S(()=>{H();It=class{constructor(t){this.papu=t,this.progTimerCount=0,this.progTimerMax=0,this.triangleCounter=0,this.isEnabled=!1,this.sampleCondition=!1,this.lengthCounter=0,this.lengthCounterEnable=!1,this.linearCounter=0,this.lcLoadValue=0,this.lcHalt=!0,this.lcControl=!1,this.tmp=0,this.sampleValue=15}clockLengthCounter(){this.lengthCounterEnable&&this.lengthCounter>0&&(this.lengthCounter--,this.lengthCounter===0&&this.updateSampleCondition())}clockLinearCounter(){this.lcHalt?(this.linearCounter=this.lcLoadValue,this.updateSampleCondition()):this.linearCounter>0&&(this.linearCounter--,this.updateSampleCondition()),this.lcControl||(this.lcHalt=!1)}getLengthStatus(){return this.lengthCounter===0||!this.isEnabled?0:1}readReg(t){return 0}writeReg(t,e){t===16392?(this.lcControl=(e&128)!==0,this.lcLoadValue=e&127,this.lengthCounterEnable=!this.lcControl):t===16394?(this.progTimerMax&=1792,this.progTimerMax|=e):t===16395&&(this.progTimerMax&=255,this.progTimerMax|=(e&7)<<8,this.isEnabled&&(this.lengthCounter=this.papu.getLengthMax(e&248)),this.lcHalt=!0),this.updateSampleCondition()}clockProgrammableTimer(t){if(this.progTimerMax>0)for(this.progTimerCount+=t;this.progTimerMax>0&&this.progTimerCount>=this.progTimerMax;)this.progTimerCount-=this.progTimerMax,this.isEnabled&&this.lengthCounter>0&&this.linearCounter>0&&this.clockTriangleGenerator()}clockTriangleGenerator(){this.triangleCounter++,this.triangleCounter&=31}setEnabled(t){this.isEnabled=t,t||(this.lengthCounter=0),this.updateSampleCondition()}updateSampleCondition(){this.sampleCondition=this.isEnabled&&this.progTimerMax>7&&this.linearCounter>0&&this.lengthCounter>0}toJSON(){return w(this)}fromJSON(t){V(this,t)}};c(It,"JSON_PROPERTIES",["isEnabled","sampleCondition","lengthCounterEnable","lcHalt","lcControl","progTimerCount","progTimerMax","triangleCounter","lengthCounter","linearCounter","lcLoadValue","sampleValue","tmp"]);ri=It});var ai,Ks,Qs,$s,tr,Pt,be,ni=S(()=>{H();ti();ii();si();hi();ai=17897725e-1,Ks=[7457,14913,22371,29828,29829],Qs=[7457,14913,22371,29829,37281],$s=29830,tr=37282,Pt=class{constructor(t){this.nes=t,this.square1=new ge(this,!0),this.square2=new ge(this,!1),this.triangle=new ri(this),this.noise=new ei(this),this.dmc=new $e(this),this.startedPlaying=!1,this.recordOutput=!1,this.triValue=0,this.prevSampleL=0,this.prevSampleR=0,this.smpAccumL=0,this.smpAccumR=0,this.dacRange=0,this.dcValue=0,this.masterVolume=256,this.panning=[80,170,100,150,128],this.setPanning(this.panning),this.initLengthLookup(),this.initDmcFrequencyLookup(),this.initNoiseWavelengthLookup(),this.initDACtables();for(let e=0;e<20;e++)e===16?this.writeReg(16400,16):this.writeReg(16384+e,0);this.sampleRate=this.nes.opts.sampleRate,this.sampleTimerMax=Math.floor(1024*ai/this.sampleRate),this.sampleTimer=0,this.updateChannelEnable(0),this.frameCycleCounter=0,this.frameStep=0,this.countSequence=0,this.sampleCount=0,this.frameIrqEnabled=!1,this.frameIrqActive=!1,this.frameIrqClearPending=!1,this.apuCycleParity=0,this.accCount=0,this.smpSquare1=0,this.smpSquare2=0,this.smpTriangle=0,this.smpDmc=0,this.channelEnableValue=255,this.extraCycles=0,this.maxSample=-5e5,this.minSample=5e5}readReg(t){let e=0;return e|=this.square1.getLengthStatus(),e|=this.square2.getLengthStatus()<<1,e|=this.triangle.getLengthStatus()<<2,e|=this.noise.getLengthStatus()<<3,e|=this.dmc.getLengthStatus()<<4,e|=this.nes.cpu.dataBus&32,e|=(this.frameIrqActive?1:0)<<6,e|=this.dmc.getIrqStatus()<<7,this.frameIrqActive&&(this.frameIrqClearPending=!0),e&255}writeReg(t,e){if(t>=16384&&t<16388)this.square1.writeReg(t,e);else if(t>=16388&&t<16392)this.square2.writeReg(t,e);else if(t>=16392&&t<16396)this.triangle.writeReg(t,e);else if(t>=16396&&t<=16399)this.noise.writeReg(t,e);else if(t===16400)this.dmc.writeReg(t,e);else if(t===16401)this.dmc.writeReg(t,e);else if(t===16402)this.dmc.writeReg(t,e);else if(t===16403)this.dmc.writeReg(t,e);else if(t===16405)this.updateChannelEnable(e),this.dmc.writeReg(t,e);else if(t===16407){this.countSequence=e>>7&1;let i=this.nes.cpu,s=i.instrBusCycles+1-i.apuCatchupCycles,r=this.apuCycleParity+s&1;this.frameCycleCounter=-7+r,this.frameStep=0,e&64?(this.frameIrqEnabled=!1,this.frameIrqActive=!1,this.frameIrqClearPending=!1):this.frameIrqEnabled=!0,this.countSequence===1&&(this.clockQuarterFrame(),this.clockHalfFrame())}}updateChannelEnable(t){this.channelEnableValue=t&65535,this.square1.setEnabled((t&1)!==0),this.square2.setEnabled((t&2)!==0),this.triangle.setEnabled((t&4)!==0),this.noise.setEnabled((t&8)!==0),this.dmc.setEnabled((t&16)!==0)}clockFrameCounter(t,e){let i=t-(e||0);this.processFrameIrqClear(i),this.apuCycleParity=this.apuCycleParity+i&1,t+=this.extraCycles;let s=this.sampleTimerMax-this.sampleTimer;t<<10>s?(this.extraCycles=(t<<10)-s>>10,t-=this.extraCycles):this.extraCycles=0;let r=this.dmc,a=this.triangle,n=this.square1,l=this.square2,o=this.noise;if(r.isEnabled)for(r.shiftCounter-=t<<3;r.shiftCounter<=0&&r.dmaFrequency>0;)r.shiftCounter+=r.dmaFrequency,r.clockDmc();if(a.progTimerMax>0)for(a.progTimerCount-=t;a.progTimerCount<=0;)a.progTimerCount+=a.progTimerMax+1,a.linearCounter>0&&a.lengthCounter>0&&(a.triangleCounter++,a.triangleCounter&=31,a.isEnabled&&(a.triangleCounter>=16?a.sampleValue=a.triangleCounter&15:a.sampleValue=15-(a.triangleCounter&15),a.sampleValue<<=4));n.progTimerCount-=t,n.progTimerCount<=0&&(n.progTimerCount+=n.progTimerMax+1<<1,n.squareCounter++,n.squareCounter&=7,n.updateSampleValue()),l.progTimerCount-=t,l.progTimerCount<=0&&(l.progTimerCount+=l.progTimerMax+1<<1,l.squareCounter++,l.squareCounter&=7,l.updateSampleValue());let p=t;if(o.progTimerCount-p>0)o.progTimerCount-=p,o.accCount+=p,o.accValue+=p*o.sampleValue;else for(;p-- >0;)--o.progTimerCount<=0&&o.progTimerMax>0&&(o.shiftReg<<=1,o.tmp=(o.shiftReg<<(o.randomMode===0?1:6)^o.shiftReg)&32768,o.tmp!==0?(o.shiftReg|=1,o.randomBit=0,o.sampleValue=0):(o.randomBit=1,o.isEnabled&&o.lengthCounter>0?o.sampleValue=o.masterVolume:o.sampleValue=0),o.progTimerCount+=o.progTimerMax),o.accValue+=o.sampleValue,o.accCount++;this.frameIrqEnabled&&this.frameIrqActive&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this._advanceFrameSteps(i),this.accSample(t),this.sampleTimer+=t<<10,this.sampleTimer>=this.sampleTimerMax&&(this.sample(),this.sampleTimer-=this.sampleTimerMax)}processFrameIrqClear(t){if(!this.frameIrqClearPending||t<=0)return;let e=(this.apuCycleParity&1)===0?1:2;t>=e&&(this.frameIrqActive=!1,this.frameIrqClearPending=!1)}advanceFrameCounter(t){this.processFrameIrqClear(t),this.apuCycleParity=this.apuCycleParity+t&1,this._advanceFrameSteps(t)}_advanceFrameSteps(t){this.frameCycleCounter+=t;let e=this.countSequence===0?Ks:Qs,i=this.countSequence===0?$s:tr;for(;;)if(this.frameStep=e[this.frameStep])this.fireFrameStep(this.frameStep),this.frameStep++;else if(this.frameStep>=e.length&&this.frameCycleCounter>=i)this.frameStep=0,this.frameCycleCounter-=i,this.countSequence===0&&(this.frameIrqActive=this.frameIrqEnabled,this.frameIrqClearPending=!1);else break}accSample(t){this.triangle.sampleCondition&&(this.triValue=Math.floor((this.triangle.progTimerCount<<4)/(this.triangle.progTimerMax+1)),this.triValue>16&&(this.triValue=16),this.triangle.triangleCounter>=16&&(this.triValue=16-this.triValue),this.triValue+=this.triangle.sampleValue),t===2?(this.smpTriangle+=this.triValue<<1,this.smpDmc+=this.dmc.sample<<1,this.smpSquare1+=this.square1.sampleValue<<1,this.smpSquare2+=this.square2.sampleValue<<1,this.accCount+=2):t===4?(this.smpTriangle+=this.triValue<<2,this.smpDmc+=this.dmc.sample<<2,this.smpSquare1+=this.square1.sampleValue<<2,this.smpSquare2+=this.square2.sampleValue<<2,this.accCount+=4):(this.smpTriangle+=t*this.triValue,this.smpDmc+=t*this.dmc.sample,this.smpSquare1+=t*this.square1.sampleValue,this.smpSquare2+=t*this.square2.sampleValue,this.accCount+=t)}fireFrameStep(t){if(this.countSequence===0)switch(t){case 0:this.clockQuarterFrame();break;case 1:this.clockQuarterFrame(),this.clockHalfFrame();break;case 2:this.clockQuarterFrame();break;case 3:this.frameIrqActive=!0,this.frameIrqClearPending=!1;break;case 4:this.clockQuarterFrame(),this.clockHalfFrame(),this.frameIrqActive=!0,this.frameIrqClearPending=!1;break}else switch(t){case 0:this.clockQuarterFrame();break;case 1:this.clockQuarterFrame(),this.clockHalfFrame();break;case 2:this.clockQuarterFrame();break;case 3:break;case 4:this.clockQuarterFrame(),this.clockHalfFrame();break}}clockQuarterFrame(){this.square1.clockEnvDecay(),this.square2.clockEnvDecay(),this.noise.clockEnvDecay(),this.triangle.clockLinearCounter()}clockHalfFrame(){this.triangle.clockLengthCounter(),this.square1.clockLengthCounter(),this.square2.clockLengthCounter(),this.noise.clockLengthCounter(),this.square1.clockSweep(),this.square2.clockSweep()}sample(){let t,e;this.accCount>0?(this.smpSquare1<<=4,this.smpSquare1=Math.floor(this.smpSquare1/this.accCount),this.smpSquare2<<=4,this.smpSquare2=Math.floor(this.smpSquare2/this.accCount),this.smpTriangle=Math.floor(this.smpTriangle/this.accCount),this.smpDmc<<=4,this.smpDmc=Math.floor(this.smpDmc/this.accCount),this.accCount=0):(this.smpSquare1=this.square1.sampleValue<<4,this.smpSquare2=this.square2.sampleValue<<4,this.smpTriangle=this.triangle.sampleValue,this.smpDmc=this.dmc.sample<<4);let i=Math.floor((this.noise.accValue<<4)/this.noise.accCount);this.noise.accValue=i>>4,this.noise.accCount=1,t=this.smpSquare1*this.stereoPosLSquare1+this.smpSquare2*this.stereoPosLSquare2>>8,e=3*this.smpTriangle*this.stereoPosLTriangle+(i<<1)*this.stereoPosLNoise+this.smpDmc*this.stereoPosLDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),e>=this.tnd_table.length&&(e=this.tnd_table.length-1);let s=this.square_table[t]+this.tnd_table[e]-this.dcValue;t=this.smpSquare1*this.stereoPosRSquare1+this.smpSquare2*this.stereoPosRSquare2>>8,e=3*this.smpTriangle*this.stereoPosRTriangle+(i<<1)*this.stereoPosRNoise+this.smpDmc*this.stereoPosRDMC>>8,t>=this.square_table.length&&(t=this.square_table.length-1),e>=this.tnd_table.length&&(e=this.tnd_table.length-1);let r=this.square_table[t]+this.tnd_table[e]-this.dcValue,a=s-this.prevSampleL;this.prevSampleL+=a,this.smpAccumL+=a-(this.smpAccumL>>10),s=this.smpAccumL;let n=r-this.prevSampleR;this.prevSampleR+=n,this.smpAccumR+=n-(this.smpAccumR>>10),r=this.smpAccumR,s>this.maxSample&&(this.maxSample=s),s>3]}getDmcFrequency(t){return t>=0&&t<16?this.dmcFreqLookup[t]:0}getNoiseWaveLength(t){return t>=0&&t<16?this.noiseWavelengthLookup[t]:0}setFrameRate(t){this.sampleTimerMax=Math.floor(1024*ai*t/(this.sampleRate*60))}setPanning(t){for(let e=0;e<5;e++)this.panning[e]=t[e];this.updateStereoPos()}setMasterVolume(t){t<0&&(t=0),t>256&&(t=256),this.masterVolume=t,this.updateStereoPos()}updateStereoPos(){this.stereoPosLSquare1=this.panning[0]*this.masterVolume>>8,this.stereoPosLSquare2=this.panning[1]*this.masterVolume>>8,this.stereoPosLTriangle=this.panning[2]*this.masterVolume>>8,this.stereoPosLNoise=this.panning[3]*this.masterVolume>>8,this.stereoPosLDMC=this.panning[4]*this.masterVolume>>8,this.stereoPosRSquare1=this.masterVolume-this.stereoPosLSquare1,this.stereoPosRSquare2=this.masterVolume-this.stereoPosLSquare2,this.stereoPosRTriangle=this.masterVolume-this.stereoPosLTriangle,this.stereoPosRNoise=this.masterVolume-this.stereoPosLNoise,this.stereoPosRDMC=this.masterVolume-this.stereoPosLDMC}initLengthLookup(){this.lengthLookup=[10,254,20,2,40,4,80,6,160,8,60,10,14,12,26,14,12,16,24,18,48,20,96,22,192,24,72,26,16,28,32,30]}initDmcFrequencyLookup(){this.dmcFreqLookup=new Array(16),this.dmcFreqLookup[0]=3424,this.dmcFreqLookup[1]=3040,this.dmcFreqLookup[2]=2720,this.dmcFreqLookup[3]=2560,this.dmcFreqLookup[4]=2288,this.dmcFreqLookup[5]=2032,this.dmcFreqLookup[6]=1808,this.dmcFreqLookup[7]=1712,this.dmcFreqLookup[8]=1520,this.dmcFreqLookup[9]=1280,this.dmcFreqLookup[10]=1136,this.dmcFreqLookup[11]=1024,this.dmcFreqLookup[12]=848,this.dmcFreqLookup[13]=672,this.dmcFreqLookup[14]=576,this.dmcFreqLookup[15]=432}initNoiseWavelengthLookup(){this.noiseWavelengthLookup=new Array(16),this.noiseWavelengthLookup[0]=4,this.noiseWavelengthLookup[1]=8,this.noiseWavelengthLookup[2]=16,this.noiseWavelengthLookup[3]=32,this.noiseWavelengthLookup[4]=64,this.noiseWavelengthLookup[5]=96,this.noiseWavelengthLookup[6]=128,this.noiseWavelengthLookup[7]=160,this.noiseWavelengthLookup[8]=202,this.noiseWavelengthLookup[9]=254,this.noiseWavelengthLookup[10]=380,this.noiseWavelengthLookup[11]=508,this.noiseWavelengthLookup[12]=762,this.noiseWavelengthLookup[13]=1016,this.noiseWavelengthLookup[14]=2034,this.noiseWavelengthLookup[15]=4068}initDACtables(){let t,e,i,s=0,r=0;for(this.square_table=new Float32Array(512),this.tnd_table=new Float32Array(3264),i=0;i<512;i++)t=95.52/(8128/(i/16)+100),t*=.98411,t*=5e4,e=Math.floor(t),this.square_table[i]=e,e>s&&(s=e);for(i=0;i<3264;i++)t=163.67/(24329/(i/16)+100),t*=.98411,t*=5e4,e=Math.floor(t),this.tnd_table[i]=e,e>r&&(r=e);this.dacRange=s+r,this.dcValue=this.dacRange/2}toJSON(){let t=w(this);return t.dmc=this.dmc.toJSON(),t.noise=this.noise.toJSON(),t.square1=this.square1.toJSON(),t.square2=this.square2.toJSON(),t.triangle=this.triangle.toJSON(),t}fromJSON(t){V(this,t),this.dmc.fromJSON(t.dmc),this.noise.fromJSON(t.noise),this.square1.fromJSON(t.square1),this.square2.fromJSON(t.square2),this.triangle.fromJSON(t.triangle)}};c(Pt,"JSON_PROPERTIES",["channelEnableValue","sampleRate","frameIrqEnabled","frameIrqActive","frameIrqClearPending","apuCycleParity","startedPlaying","recordOutput","frameCycleCounter","frameStep","countSequence","sampleTimer","sampleTimerMax","sampleCount","triValue","smpSquare1","smpSquare2","smpTriangle","smpDmc","accCount","prevSampleL","prevSampleR","smpAccumL","smpAccumR","masterVolume","stereoPosLSquare1","stereoPosLSquare2","stereoPosLTriangle","stereoPosLNoise","stereoPosLDMC","stereoPosRSquare1","stereoPosRSquare2","stereoPosRTriangle","stereoPosRNoise","stereoPosRDMC","extraCycles","maxSample","minSample","panning"]);be=Pt});function er(u){return oi.indexOf(u)}function ir(u){return oi[u]}function Ce(u,t){let e=u.toString(16);return"0000".substring(0,t-e.length)+e}var oi,_e,li,ci=S(()=>{oi="APZLGITYEOXUKSVN";_e=class{constructor(){this.patches=[],this.enabled=!0,this.onChange=null}setEnabled(t){this.enabled=t,this.onChange&&this.onChange()}addCode(t){let e=this.decode(t);if(!e)throw new Error(`Invalid Game Genie code: ${t}`);this.patches.push(e),this.onChange&&this.onChange()}addPatch(t,e,i){this.patches.push({addr:t,value:e,key:i}),this.onChange&&this.onChange()}removeAllCodes(){this.patches=[],this.onChange&&this.onChange()}applyCodes(t,e){if(!this.enabled)return e;for(let i=0;i>3);return{value:i,addr:s,wantskey:a,key:r}}encodeHex(t,e,i,s){let r=Ce(t,4)+":"+Ce(e,2);return(i!==void 0||s)&&(r+="?"),i!==void 0&&(r+=Ce(i,2)),r}decodeHex(t){let e=t.match(/([0-9a-fA-F]+):([0-9a-fA-F]+)(\?[0-9a-fA-F]*)?/);if(!e)return null;let i=parseInt(e[1],16),s=parseInt(e[2],16),r=e[3]!==void 0,a=e[3]!==void 0&&e[3].length>1?parseInt(e[3].substring(1),16):void 0;return{value:s,addr:i,wantskey:r,key:a}}encode(t,e,i,s){let r=Array(6);return r[0]=(e&7)+(e>>4&8),r[1]=(e>>4&7)+(t>>4&8),r[2]=t>>4&7,r[3]=(t>>12)+(t&8),r[4]=(t&7)+(t>>8&8),r[5]=t>>8&7,i===void 0?(r[5]+=e&8,s&&(r[2]+=8)):(r[2]+=8,r[5]+=i&8,r[6]=(i&7)+(i>>4&8),r[7]=(i>>4&7)+(e&8)),r.map(ir).join("")}},li=_e});var Vt,C,O=S(()=>{H();Vt=class{constructor(t){this.nes=t,this.joy1StrobeState=0,this.joy2StrobeState=0,this.joypadLastWrite=0,this.joypadOutputBit0=0,this.joypadLastWriteCycle=-2,this.zapperFired=!1,this.zapperX=null,this.zapperY=null,this.bgTileOverride=!1}write(t,e){t<8192?this.nes.cpu.mem[t&2047]=e:t>=32768||(t>=24576?(this.nes.cpu.mem[t]=e,this.nes.opts.onBatteryRamWrite(t,e)):t>16407?this.nes.cpu.mem[t]=e:t>8199&&t<16384?this.regWrite(8192+(t&7),e):this.regWrite(t,e))}writelow(t,e){t<8192?this.nes.cpu.mem[t&2047]=e:t>=32768||(t>16407?this.nes.cpu.mem[t]=e:t>8199&&t<16384?this.regWrite(8192+(t&7),e):this.regWrite(t,e))}load(t){return t&=65535,t>16407?t<24576?this.nes.cpu.dataBus:this.nes.cpu.mem[t]:t>=8192?this.regLoad(t):this.nes.cpu.mem[t&2047]}regLoad(t){switch(t>>12){case 0:break;case 1:break;case 2:case 3:switch(t&7){case 0:return this.nes.ppu.openBusLatch;case 1:return this.nes.ppu.openBusLatch;case 2:return this.nes.ppu.readStatusRegister();case 3:return this.nes.ppu.openBusLatch;case 4:return this.nes.ppu.sramLoad();case 5:return this.nes.ppu.openBusLatch;case 6:return this.nes.ppu.openBusLatch;case 7:return this.nes.ppu.vramLoad()}break;case 4:switch(t-16405){case 0:return this.nes.papu.readReg(t);case 1:return this.joy1Read()&31|this.nes.cpu.dataBus&224;case 2:{let i=0;return this.zapperX!==null&&this.zapperY!==null&&(this.nes.ppu.isPixelWhite(this.zapperX,this.zapperY)||(i=8)),this.zapperFired&&(i|=16),(this.joy2Read()|i)&31|this.nes.cpu.dataBus&224}}break}let e=this.nes.cpu;if(e._dmcFetchCycles>0&&e._dmcFetchCycles===e.instrBusCycles+1){let i=this.nes.papu.dmc;if(i&&i.isEnabled)return i.lastFetchedByte}return e.dataBus}regWrite(t,e){switch(t>=8192&&t<=16383&&(this.nes.ppu.openBusLatch=e,this.nes.ppu.openBusDecayFrames=36),t){case 8192:this.nes.cpu.mem[t]=e,this.nes.ppu.updateControlReg1(e);break;case 8193:this.nes.cpu.mem[t]=e,this.nes.ppu.updateControlReg2(e);break;case 8195:this.nes.ppu.writeSRAMAddress(e);break;case 8196:this.nes.ppu.sramWrite(e);break;case 8197:this.nes.ppu.scrollWrite(e);break;case 8198:this.nes.ppu.writeVRAMAddress(e);break;case 8199:this.nes.ppu.vramWrite(e);break;case 16404:this.nes.ppu.sramDMA(e);break;case 16405:this.nes.papu.writeReg(t,e);break;case 16406:{let i=this.nes.cpu,s=i._cpuCycleBase+i.instrBusCycles;if(s-this.joypadLastWriteCycle>1){let r=this.joypadLastWrite&1;r!==this.joypadOutputBit0&&(this.joypadOutputBit0===1&&r===0&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadOutputBit0=r)}if(this.joypadLastWrite=e,this.joypadLastWriteCycle=s,s%2===1){let r=e&1;this.joypadOutputBit0===1&&r===0&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadOutputBit0=r}break}case 16407:this.nes.papu.writeReg(t,e);break;default:t>=16384&&t<=16407&&this.nes.papu.writeReg(t,e)}}_syncJoypadOutput(){let t=this.joypadLastWrite&1;t!==this.joypadOutputBit0&&(this.joypadOutputBit0===1&&t===0&&(this.joy1StrobeState=0,this.joy2StrobeState=0),this.joypadOutputBit0=t)}joy1Read(){if(this._syncJoypadOutput(),this.joypadOutputBit0)return this.nes.controllers[1].state[0];let t;return this.joy1StrobeState<8?t=this.nes.controllers[1].state[this.joy1StrobeState]:t=1,this.joy1StrobeState++,this.joy1StrobeState===24&&(this.joy1StrobeState=0),t}joy2Read(){if(this._syncJoypadOutput(),this.joypadOutputBit0)return this.nes.controllers[2].state[0];let t;return this.joy2StrobeState<8?t=this.nes.controllers[2].state[this.joy2StrobeState]:t=1,this.joy2StrobeState++,this.joy2StrobeState===24&&(this.joy2StrobeState=0),t}loadROM(){if(!this.nes.rom.valid||this.nes.rom.romCount<1)throw new Error("NoMapper: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}loadPRGROM(){this.nes.rom.romCount>1?(this.loadRomBank(0,32768),this.loadRomBank(1,49152)):(this.loadRomBank(0,32768),this.loadRomBank(0,49152))}loadCHRROM(){this.nes.rom.vromCount>0&&(this.nes.rom.vromCount===1?(this.loadVromBank(0,0),this.loadVromBank(0,4096)):(this.loadVromBank(0,0),this.loadVromBank(1,4096)))}loadBatteryRam(){if(this.nes.rom.batteryRam){let t=this.nes.rom.batteryRam;t!==null&&t.length===8192&&v(t,0,this.nes.cpu.mem,24576,8192)}}loadRomBank(t,e){t%=this.nes.rom.romCount,v(this.nes.rom.rom[t],0,this.nes.cpu.mem,e,16384)}loadVromBank(t,e){if(this.nes.rom.vromCount===0)return;this.nes.ppu.triggerRendering(),v(this.nes.rom.vrom[t%this.nes.rom.vromCount],0,this.nes.ppu.vramMem,e,4096);let i=this.nes.rom.vromTile[t%this.nes.rom.vromCount];v(i,0,this.nes.ppu.ptTile,e>>4,256)}load32kRomBank(t,e){this.loadRomBank(t*2%this.nes.rom.romCount,e),this.loadRomBank((t*2+1)%this.nes.rom.romCount,e+16384)}load8kVromBank(t,e){this.nes.rom.vromCount!==0&&(this.nes.ppu.triggerRendering(),this.loadVromBank(t%this.nes.rom.vromCount,e),this.loadVromBank((t+1)%this.nes.rom.vromCount,e+4096))}load1kVromBank(t,e){if(this.nes.rom.vromCount===0)return;this.nes.ppu.triggerRendering();let i=Math.floor(t/4)%this.nes.rom.vromCount,s=t%4*1024;v(this.nes.rom.vrom[i],s,this.nes.ppu.vramMem,e,1024);let r=this.nes.rom.vromTile[i],a=e>>4;for(let n=0;n<64;n++)this.nes.ppu.ptTile[a+n]=r[(t%4<<6)+n]}load2kVromBank(t,e){if(this.nes.rom.vromCount===0)return;this.nes.ppu.triggerRendering();let i=Math.floor(t/2)%this.nes.rom.vromCount,s=t%2*2048;v(this.nes.rom.vrom[i],s,this.nes.ppu.vramMem,e,2048);let r=this.nes.rom.vromTile[i],a=e>>4;for(let n=0;n<128;n++)this.nes.ppu.ptTile[a+n]=r[(t%2<<7)+n]}load8kRomBank(t,e){let i=Math.floor(t/2)%this.nes.rom.romCount,s=t%2*8192;v(this.nes.rom.rom[i],s,this.nes.cpu.mem,e,8192)}canWriteChr(t){return this.nes.rom.vromCount===0}clockIrqCounter(){}latchAccess(t){}onBgRender(){}onSpriteRender(){}getBgTileData(){return null}getSpritePatternTile(t){return this.nes.ppu.ptTile[t]}toJSON(){return{joy1StrobeState:this.joy1StrobeState,joy2StrobeState:this.joy2StrobeState,joypadLastWrite:this.joypadLastWrite,joypadOutputBit0:this.joypadOutputBit0,joypadLastWriteCycle:this.joypadLastWriteCycle}}fromJSON(t){var e;this.joy1StrobeState=t.joy1StrobeState,this.joy2StrobeState=t.joy2StrobeState,this.joypadLastWrite=t.joypadLastWrite,this.joypadOutputBit0=t.joypadOutputBit0||0,this.joypadLastWriteCycle=(e=t.joypadLastWriteCycle)!=null?e:-2}};c(Vt,"mapperName","NROM");C=Vt});var wt,mi,fi=S(()=>{O();wt=class extends C{constructor(t){super(t),this.regBuffer=0,this.regBufferCounter=0,this.mirroring=0,this.oneScreenMirroring=0,this.prgSwitchingArea=1,this.prgSwitchingSize=1,this.vromSwitchingSize=0,this.romSelectionReg0=0,this.romSelectionReg1=0,this.romBankSelect=0}write(t,e){if(t<32768){super.write(t,e);return}(e&128)!==0?(this.regBufferCounter=0,this.regBuffer=0,this.getRegNumber(t)===0&&(this.prgSwitchingArea=1,this.prgSwitchingSize=1)):(this.regBuffer=this.regBuffer&255-(1<>2&1,this.prgSwitchingSize=e>>3&1,this.vromSwitchingSize=e>>4&1;break;case 1:this.romSelectionReg0=e>>4&1,this.nes.rom.vromCount>0&&(this.vromSwitchingSize===0?this.romSelectionReg0===0?this.load8kVromBank(e&15,0):this.load8kVromBank(Math.floor(this.nes.rom.vromCount/2)+(e&15),0):this.romSelectionReg0===0?this.loadVromBank(e&15,0):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(e&15),0));break;case 2:this.romSelectionReg1=e>>4&1,this.nes.rom.vromCount>0&&this.vromSwitchingSize===1&&(this.romSelectionReg1===0?this.loadVromBank(e&15,4096):this.loadVromBank(Math.floor(this.nes.rom.vromCount/2)+(e&15),4096));break;default:{let s,r=0;this.nes.rom.romCount>=32?this.vromSwitchingSize===0?this.romSelectionReg0===1&&(r=16):r=(this.romSelectionReg0|this.romSelectionReg1<<1)<<3:this.nes.rom.romCount>=16&&this.romSelectionReg0===1&&(r=8),this.prgSwitchingSize===0?(s=r+(e&15),this.load32kRomBank(s,32768)):(s=r*2+(e&15),this.prgSwitchingArea===0?this.loadRomBank(s,49152):this.loadRomBank(s,32768))}}}getRegNumber(t){return t>=32768&&t<=40959?0:t>=40960&&t<=49151?1:t>=49152&&t<=57343?2:3}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC1: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}switchLowHighPrgRom(t){}switch16to32(){}switch32to16(){}toJSON(){let t=super.toJSON();return t.mirroring=this.mirroring,t.oneScreenMirroring=this.oneScreenMirroring,t.prgSwitchingArea=this.prgSwitchingArea,t.prgSwitchingSize=this.prgSwitchingSize,t.vromSwitchingSize=this.vromSwitchingSize,t.romSelectionReg0=this.romSelectionReg0,t.romSelectionReg1=this.romSelectionReg1,t.romBankSelect=this.romBankSelect,t.regBuffer=this.regBuffer,t.regBufferCounter=this.regBufferCounter,t}fromJSON(t){super.fromJSON(t),this.mirroring=t.mirroring,this.oneScreenMirroring=t.oneScreenMirroring,this.prgSwitchingArea=t.prgSwitchingArea,this.prgSwitchingSize=t.prgSwitchingSize,this.vromSwitchingSize=t.vromSwitchingSize,this.romSelectionReg0=t.romSelectionReg0,this.romSelectionReg1=t.romSelectionReg1,this.romBankSelect=t.romBankSelect,this.regBuffer=t.regBuffer,this.regBufferCounter=t.regBufferCounter}};c(wt,"mapperName","MMC1");mi=wt});var Gt,pi,ui=S(()=>{O();Gt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.loadRomBank(e,32768)}loadROM(){if(!this.nes.rom.valid)throw new Error("UNROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(Gt,"mapperName","UxROM");pi=Gt});var Dt,xi,di=S(()=>{O();Dt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load8kVromBank(e*2,0)}};c(Dt,"mapperName","CNROM");xi=Dt});var P,Se,Y,Lt=S(()=>{O();P=class P extends C{constructor(t){super(t),this.command=0,this.prgAddressSelect=0,this.chrAddressSelect=0,this.pageNumber=0,this.irqCounter=255,this.irqLatchValue=255,this.irqReload=0,this.irqEnable=0,this.prgAddressChanged=!1}write(t,e){if(t<32768){super.write(t,e);return}switch(t&57345){case 32768:{this.command=e&7;let i=e>>6&1;i!==this.prgAddressSelect&&(this.prgAddressChanged=!0),this.prgAddressSelect=i,this.chrAddressSelect=e>>7&1;break}case 32769:this.executeCommand(this.command,e);break;case 40960:(e&1)!==0?this.nes.ppu.setMirroring(this.nes.rom.HORIZONTAL_MIRRORING):this.nes.ppu.setMirroring(this.nes.rom.VERTICAL_MIRRORING);break;case 40961:break;case 49152:this.irqLatchValue=e;break;case 49153:this.irqReload=1;break;case 57344:this.irqEnable=0;break;case 57345:this.irqEnable=1;break}}executeCommand(t,e){switch(t){case P.CMD_SEL_2_1K_VROM_0000:this.chrAddressSelect===0?(this.load1kVromBank(e,0),this.load1kVromBank(e+1,1024)):(this.load1kVromBank(e,4096),this.load1kVromBank(e+1,5120));break;case P.CMD_SEL_2_1K_VROM_0800:this.chrAddressSelect===0?(this.load1kVromBank(e,2048),this.load1kVromBank(e+1,3072)):(this.load1kVromBank(e,6144),this.load1kVromBank(e+1,7168));break;case P.CMD_SEL_1K_VROM_1000:this.chrAddressSelect===0?this.load1kVromBank(e,4096):this.load1kVromBank(e,0);break;case P.CMD_SEL_1K_VROM_1400:this.chrAddressSelect===0?this.load1kVromBank(e,5120):this.load1kVromBank(e,1024);break;case P.CMD_SEL_1K_VROM_1800:this.chrAddressSelect===0?this.load1kVromBank(e,6144):this.load1kVromBank(e,2048);break;case P.CMD_SEL_1K_VROM_1C00:this.chrAddressSelect===0?this.load1kVromBank(e,7168):this.load1kVromBank(e,3072);break;case P.CMD_SEL_ROM_PAGE1:this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1),this.prgAddressSelect===0?this.load8kRomBank(e,32768):this.load8kRomBank(e,49152);break;case P.CMD_SEL_ROM_PAGE2:this.load8kRomBank(e,40960),this.prgAddressChanged&&(this.prgAddressSelect===0?this.load8kRomBank((this.nes.rom.romCount-1)*2,49152):this.load8kRomBank((this.nes.rom.romCount-1)*2,32768),this.prgAddressChanged=!1)}}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC3: Invalid ROM! Unable to load.");this.load8kRomBank((this.nes.rom.romCount-1)*2,49152),this.load8kRomBank((this.nes.rom.romCount-1)*2+1,57344),this.load8kRomBank(0,32768),this.load8kRomBank(1,40960),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}clockIrqCounter(){this.irqReload===1&&(this.irqCounter=this.irqLatchValue,this.irqReload=0),this.irqCounter--,this.irqCounter<0&&(this.irqEnable===1&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL),this.irqCounter=this.irqLatchValue)}toJSON(){let t=super.toJSON();return t.command=this.command,t.prgAddressSelect=this.prgAddressSelect,t.chrAddressSelect=this.chrAddressSelect,t.pageNumber=this.pageNumber,t.irqCounter=this.irqCounter,t.irqReload=this.irqReload,t.irqLatchValue=this.irqLatchValue,t.irqEnable=this.irqEnable,t.prgAddressChanged=this.prgAddressChanged,t}fromJSON(t){super.fromJSON(t),this.command=t.command,this.prgAddressSelect=t.prgAddressSelect,this.chrAddressSelect=t.chrAddressSelect,this.pageNumber=t.pageNumber,this.irqCounter=t.irqCounter,this.irqReload=t.irqReload||0,this.irqLatchValue=t.irqLatchValue,this.irqEnable=t.irqEnable,this.prgAddressChanged=t.prgAddressChanged}};c(P,"mapperName","MMC3"),c(P,"CMD_SEL_2_1K_VROM_0000",0),c(P,"CMD_SEL_2_1K_VROM_0800",1),c(P,"CMD_SEL_1K_VROM_1000",2),c(P,"CMD_SEL_1K_VROM_1400",3),c(P,"CMD_SEL_1K_VROM_1800",4),c(P,"CMD_SEL_1K_VROM_1C00",5),c(P,"CMD_SEL_ROM_PAGE1",6),c(P,"CMD_SEL_ROM_PAGE2",7);Se=P,Y=Se});var zt,Ri,gi=S(()=>{O();H();zt=class extends C{constructor(t){super(t),this.prgMode=3,this.prgBankReg=new Uint8Array(5),this.prgBankReg[4]=255,this.prgRam=new Uint8Array(65536),this.prgRamProtectA=3,this.prgRamProtectB=3,this.chrMode=3,this.chrBankA=new Uint16Array(8),this.chrBankB=new Uint16Array(4),this.chrUpperBits=0,this.lastChrWrite=0,this.ntMapping=new Uint8Array(4),this.exramMode=0,this.exram=new Uint8Array(1024),this.fillTile=0,this.fillAttr=0,this.irqTarget=0,this.irqEnabled=!1,this.irqPending=!1,this.inFrame=!1,this.irqCounter=0,this.multA=0,this.multB=0,this.splitEnabled=!1,this.splitRight=!1,this.splitTile=0,this.splitScroll=0,this.splitPage=0,this.pulse1=this._initPulse(),this.pulse2=this._initPulse(),this.pcmValue=0,this.pcmReadMode=!1,this.pcmIrqEnabled=!1,this.audioEnabled=0,this._chrBankTarget=-1}_initPulse(){return{enabled:!1,dutyCycle:0,lengthHalt:!1,constantVolume:!1,volume:0,timer:0,timerCounter:0,lengthCounter:0,envelopeCounter:0,envelopeDecay:15,envelopeStart:!1,sequencePos:0}}load(t){if(t&=65535,t<20480)return super.load(t);if(t===20501){let e=0;return this.pulse1.lengthCounter>0&&(e|=1),this.pulse2.lengthCounter>0&&(e|=2),e}if(t===20496)return 0;if(t>=20736&&t<=20740)return this.nes.cpu.dataBus;if(t===20741)return this.nes.cpu.dataBus;if(t===20996){let e=this.nes.ppu;e.scanline>=20&&e.scanline<=260&&(e.f_bgVisibility===1||e.f_spVisibility===1)||(this.inFrame=!1);let s=0;return this.irqPending&&(s|=128),this.inFrame&&(s|=64),this.irqPending=!1,s}if(t===20997)return this.multA*this.multB&255;if(t===20998)return this.multA*this.multB>>8&255;if(t>=23552&&t<=24575)return this.exramMode>=2?this.exram[t-23552]:this.nes.cpu.dataBus;if(t<24576)return this.nes.cpu.dataBus;if(t<32768){let i=(this.prgBankReg[0]&7)*8192+(t-24576);return this.prgRam[i&65535]}return this._readPrg(t)}_readPrg(t){let e,i,s,r,a;switch(this.prgMode){case 0:return i=this.prgBankReg[4],r=(i&124)>>2,this._readPrgRom32k(r,t-32768);case 1:return t<49152?(i=this.prgBankReg[2],s=(i&128)===0,s?(r=(i&6)>>1,this.prgRam[r*16384+(t-32768)]):(r=(i&126)>>1,this._readPrgRom16k(r,t-32768))):(i=this.prgBankReg[4],r=(i&126)>>1,this._readPrgRom16k(r,t-49152));case 2:return t<49152?(i=this.prgBankReg[2],s=(i&128)===0,s?(r=(i&6)>>1,this.prgRam[r*16384+(t-32768)]):(r=(i&126)>>1,this._readPrgRom16k(r,t-32768))):t<57344?(i=this.prgBankReg[3],s=(i&128)===0,s?(r=i&7,this.prgRam[r*8192+(t-49152)]):(r=i&127,this._readPrgRom8k(r,t-49152))):(i=this.prgBankReg[4],r=i&127,this._readPrgRom8k(r,t-57344));default:return t<40960?e=1:t<49152?e=2:t<57344?e=3:e=4,i=this.prgBankReg[e],a=e===1?32768:e===2?40960:e===3?49152:57344,e<4&&(i&128)===0?(r=i&7,this.prgRam[r*8192+(t-a)]):(r=i&127,this._readPrgRom8k(r,t-a))}}_readPrgRom32k(t,e){let i=(t*2+Math.floor(e/16384))%this.nes.rom.romCount,s=e%16384;return this.nes.rom.rom[i][s]}_readPrgRom16k(t,e){return t%=this.nes.rom.romCount,this.nes.rom.rom[t][e]}_readPrgRom8k(t,e){let i=Math.floor(t/2)%this.nes.rom.romCount,s=t%2*8192+e;return i=20480&&t<=20483){this._writePulse(this.pulse1,t-20480,e);return}if(t>=20484&&t<=20487){this._writePulse(this.pulse2,t-20484,e);return}if(t===20496){this.pcmReadMode=(e&1)!==0,this.pcmIrqEnabled=(e&128)!==0;return}if(t===20497){!this.pcmReadMode&&e!==0&&(this.pcmValue=e);return}if(t===20501){this.audioEnabled=e&3,this.pulse1.enabled=(e&1)!==0,this.pulse2.enabled=(e&2)!==0,this.pulse1.enabled||(this.pulse1.lengthCounter=0),this.pulse2.enabled||(this.pulse2.lengthCounter=0);return}if(t===20736){this.prgMode=e&3,this._syncPrg();return}if(t===20737){this.chrMode=e&3,this._syncChr();return}if(t===20738){this.prgRamProtectA=e&3;return}if(t===20739){this.prgRamProtectB=e&3;return}if(t===20740){this.exramMode=e&3,this.bgTileOverride=this.exramMode===1,this._syncNametables();return}if(t===20741){let i=e;this.ntMapping[0]=i&3,i>>=2,this.ntMapping[1]=i&3,i>>=2,this.ntMapping[2]=i&3,i>>=2,this.ntMapping[3]=i&3,this._syncNametables();return}if(t===20742){this.fillTile=e,this._syncNametables();return}if(t===20743){this.fillAttr=e&3,this._syncNametables();return}if(t===20755){this.prgBankReg[0]=e&7;return}if(t>=20756&&t<=20759){let i=t-20755;this.prgBankReg[i]=e,this._syncPrg();return}if(t>=20768&&t<=20775){let i=t-20768;this.chrBankA[i]=this.chrUpperBits<<8|e,this.lastChrWrite=0,this._syncChr();return}if(t>=20776&&t<=20779){let i=t-20776;this.chrBankB[i]=this.chrUpperBits<<8|e,this.lastChrWrite=1,this._syncChr();return}if(t===20784){this.chrUpperBits=e&3;return}if(t===20992){this.splitEnabled=(e&128)!==0,this.splitRight=(e&64)!==0,this.splitTile=e&31;return}if(t===20993){this.splitScroll=e;return}if(t===20994){this.splitPage=e&63;return}if(t===20995){this.irqTarget=e;return}if(t===20996){this.irqEnabled=(e&128)!==0,this.irqEnabled&&this.irqPending&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL);return}if(t===20997){this.multA=e;return}if(t===20998){this.multB=e;return}if(t>=23552&&t<=24575){let i=t-23552;this.exramMode===0||this.exramMode===1?(this.exram[i]=this.inFrame?e:0,this._syncExramToVram(i)):this.exramMode===2&&(this.exram[i]=e);return}if(t>=24576&&t<=32767){if(this.prgRamProtectA===2&&this.prgRamProtectB===1){let s=(this.prgBankReg[0]&7)*8192+(t-24576);this.prgRam[s&65535]=e,this.nes.cpu.mem[t]=e,this.nes.opts.onBatteryRamWrite(t,e)}return}if(t>=32768){this._writePrg(t,e);return}}_writePrg(t,e){let i,s,r,a,n;switch(this.prgMode){case 0:return;case 1:t<49152&&(s=this.prgBankReg[2],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=(s&6)>>1,this.prgRam[a*16384+(t-32768)]=e));return;case 2:t<49152?(s=this.prgBankReg[2],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=(s&6)>>1,this.prgRam[a*16384+(t-32768)]=e)):t<57344&&(s=this.prgBankReg[3],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=s&7,this.prgRam[a*8192+(t-49152)]=e));return;default:if(t<40960)i=1,n=32768;else if(t<49152)i=2,n=40960;else if(t<57344)i=3,n=49152;else return;s=this.prgBankReg[i],r=(s&128)===0,r&&this._isPrgRamWritable()&&(a=s&7,this.prgRam[a*8192+(t-n)]=e);return}}_isPrgRamWritable(){return this.prgRamProtectA===2&&this.prgRamProtectB===1}_syncPrg(){switch(this.prgMode){case 0:{let e=(this.prgBankReg[4]&124)>>2;this.load32kRomBank(e,32768);break}case 1:{let t=this.prgBankReg[2];if(t&128){let s=(t&126)>>1;this.loadRomBank(s%this.nes.rom.romCount,32768)}let i=(this.prgBankReg[4]&126)>>1;this.loadRomBank(i%this.nes.rom.romCount,49152);break}case 2:{let t=this.prgBankReg[2];if(t&128){let s=(t&126)>>1;this.loadRomBank(s%this.nes.rom.romCount,32768)}let e=this.prgBankReg[3];e&128&&this.load8kRomBank(e&127,49152);let i=this.prgBankReg[4];this.load8kRomBank(i&127,57344);break}default:{for(let t=1;t<=4;t++){let e=this.prgBankReg[t],i=24576+t*8192;(t===4||e&128)&&this.load8kRomBank(e&127,i)}break}}}_syncChr(){this.nes.ppu.triggerRendering(),this._chrBankTarget=-1,this.nes.ppu.f_spriteSize===0&&(this._applyChrSetA(),this._chrBankTarget=0)}_applyChrSetA(){if(this.nes.rom.vromCount!==0)switch(this.chrMode){case 0:this.load8kVromBank((this.chrBankA[7]&255)*2,0);break;case 1:this.loadVromBank(this.chrBankA[3]&255,0),this.loadVromBank(this.chrBankA[7]&255,4096);break;case 2:this.load2kVromBank(this.chrBankA[1]&511,0),this.load2kVromBank(this.chrBankA[3]&511,2048),this.load2kVromBank(this.chrBankA[5]&511,4096),this.load2kVromBank(this.chrBankA[7]&511,6144);break;default:for(let t=0;t<8;t++)this.load1kVromBank(this.chrBankA[t]&1023,t*1024);break}}_applyChrSetB(){if(this.nes.rom.vromCount!==0)switch(this.chrMode){case 0:this.load8kVromBank((this.chrBankB[3]&255)*2,0);break;case 1:this.loadVromBank(this.chrBankB[3]&255,0),this.loadVromBank(this.chrBankB[3]&255,4096);break;case 2:this.load2kVromBank(this.chrBankB[1]&511,0),this.load2kVromBank(this.chrBankB[3]&511,2048),this.load2kVromBank(this.chrBankB[1]&511,4096),this.load2kVromBank(this.chrBankB[3]&511,6144);break;default:for(let t=0;t<4;t++)this.load1kVromBank(this.chrBankB[t]&1023,t*1024),this.load1kVromBank(this.chrBankB[t]&1023,(t+4)*1024);break}}_syncNametables(){let t=this.nes.ppu,e=this.fillAttr|this.fillAttr<<2|this.fillAttr<<4|this.fillAttr<<6;for(let s=0;s<960;s++)t.vramMem[11264+s]=this.fillTile;for(let s=960;s<1024;s++)t.vramMem[11264+s]=e;if(this.exramMode>=2)for(let s=0;s<1024;s++)t.vramMem[10240+s]=0;else v(this.exram,0,t.vramMem,10240,1024);let i=[8192,9216,10240,11264];for(let s=0;s<4;s++){let r=8192+s*1024,a=i[this.ntMapping[s]];t.defineMirrorRegion(r,a,1024)}t.defineMirrorRegion(12288,8192,3840);for(let s=0;s<4;s++)t.ntable1[s]=this.ntMapping[s];this._populateNameTable(2,10240),this._populateNameTable(3,11264)}_populateNameTable(t,e){let i=this.nes.ppu,s=i.nameTable[t];for(let r=0;r<960;r++)s.tile[r]=i.vramMem[e+r];for(let r=0;r<64;r++)s.writeAttrib(r,i.vramMem[e+960+r])}_syncExramToVram(t){if(this.exramMode<2){let e=this.nes.ppu;e.vramMem[10240+t]=this.exram[t],t<960?e.nameTable[2].tile[t]=this.exram[t]:t<1024&&e.nameTable[2].writeAttrib(t-960,this.exram[t])}}_writePulse(t,e,i){switch(e){case 0:t.dutyCycle=i>>6&3,t.lengthHalt=(i&32)!==0,t.constantVolume=(i&16)!==0,t.volume=i&15;break;case 1:break;case 2:t.timer=t.timer&1792|i;break;case 3:t.timer=t.timer&255|(i&7)<<8,t.enabled&&(t.lengthCounter=this.nes.papu.getLengthMax(i)),t.envelopeStart=!0,t.sequencePos=0;break}}clockIrqCounter(){if(this.nes.ppu.scanline===20){this.inFrame=!0,this.irqCounter=0;return}this.irqCounter++,this.irqTarget!==0&&this.irqCounter===this.irqTarget&&(this.irqPending=!0,this.irqEnabled&&this.nes.cpu.requestIrq(this.nes.cpu.IRQ_NORMAL)),(this.irqCounter&3)===0&&(this._clockPulseLengthCounter(this.pulse1),this._clockPulseLengthCounter(this.pulse2))}_clockPulseLengthCounter(t){t.enabled&&!t.lengthHalt&&t.lengthCounter>0&&t.lengthCounter--}onBgRender(){this.nes.ppu.f_spriteSize===1&&this._chrBankTarget!==1&&(this._applyChrSetB(),this._chrBankTarget=1,this.nes.ppu.validTileData=!1)}onSpriteRender(){this.nes.ppu.f_spriteSize===1&&this._chrBankTarget!==0&&(this._applyChrSetA(),this._chrBankTarget=0)}getSpritePatternTile(t){if(this.nes.ppu.f_spriteSize!==1||this.nes.rom.vromCount===0)return this.nes.ppu.ptTile[t];let e=this.nes.rom.vromCount,i=this.nes.rom.vromTile;switch(this.chrMode){case 0:{let s=(this.chrBankA[7]&255)*2,r=t>=256?1:0,a=(s+r)%e;return i[a][t-r*256]}case 1:{let s;return t<256?s=(this.chrBankA[3]&255)%e:s=(this.chrBankA[7]&255)%e,i[s][t%256]}case 2:{let s=[1,3,5,7],r=t>>7,a=t&127,n=this.chrBankA[s[r]]&511,l=Math.floor(n/2)%e;return i[l][(n%2<<7)+a]}default:{let s=t>>6,r=t&63,a=this.chrBankA[s]&1023,n=Math.floor(a/4)%e;return i[n][(a%4<<6)+r]}}}getBgTileData(t,e,i,s){if(this.exramMode!==1||this.nes.rom.vromCount===0)return null;let r=s*32+i,a=this.exram[r],l=(a&63|this.chrUpperBits<<6)%this.nes.rom.vromCount,o=this.nes.rom.vromTile[l][e];if(!o)return null;let p=(a>>6&3)<<2;return{tile:o,attrib:p}}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC5: Invalid ROM! Unable to load.");this.prgBankReg[4]=255,this._syncPrg(),this.loadCHRROM(),this.loadBatteryRam(),this._syncNametables(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}toJSON(){let t=super.toJSON();return t.prgMode=this.prgMode,t.prgBankReg=Array.from(this.prgBankReg),t.prgRam=Array.from(this.prgRam),t.prgRamProtectA=this.prgRamProtectA,t.prgRamProtectB=this.prgRamProtectB,t.chrMode=this.chrMode,t.chrBankA=Array.from(this.chrBankA),t.chrBankB=Array.from(this.chrBankB),t.chrUpperBits=this.chrUpperBits,t.lastChrWrite=this.lastChrWrite,t.ntMapping=Array.from(this.ntMapping),t.exramMode=this.exramMode,t.exram=Array.from(this.exram),t.fillTile=this.fillTile,t.fillAttr=this.fillAttr,t.irqTarget=this.irqTarget,t.irqEnabled=this.irqEnabled,t.irqPending=this.irqPending,t.inFrame=this.inFrame,t.irqCounter=this.irqCounter,t.multA=this.multA,t.multB=this.multB,t.splitEnabled=this.splitEnabled,t.splitRight=this.splitRight,t.splitTile=this.splitTile,t.splitScroll=this.splitScroll,t.splitPage=this.splitPage,t.pcmValue=this.pcmValue,t.pcmReadMode=this.pcmReadMode,t.pcmIrqEnabled=this.pcmIrqEnabled,t.audioEnabled=this.audioEnabled,t.pulse1=Object.assign({},this.pulse1),t.pulse2=Object.assign({},this.pulse2),t}fromJSON(t){super.fromJSON(t),this.prgMode=t.prgMode,this.prgBankReg=new Uint8Array(t.prgBankReg),this.prgRam=new Uint8Array(t.prgRam),this.prgRamProtectA=t.prgRamProtectA,this.prgRamProtectB=t.prgRamProtectB,this.chrMode=t.chrMode,this.chrBankA=new Uint16Array(t.chrBankA),this.chrBankB=new Uint16Array(t.chrBankB),this.chrUpperBits=t.chrUpperBits,this.lastChrWrite=t.lastChrWrite,this.ntMapping=new Uint8Array(t.ntMapping),this.exramMode=t.exramMode,this.exram=new Uint8Array(t.exram),this.fillTile=t.fillTile,this.fillAttr=t.fillAttr,this.irqTarget=t.irqTarget,this.irqEnabled=t.irqEnabled,this.irqPending=t.irqPending,this.inFrame=t.inFrame,this.irqCounter=t.irqCounter,this.multA=t.multA,this.multB=t.multB,this.splitEnabled=t.splitEnabled,this.splitRight=t.splitRight,this.splitTile=t.splitTile,this.splitScroll=t.splitScroll,this.splitPage=t.splitPage,this.pcmValue=t.pcmValue,this.pcmReadMode=t.pcmReadMode,this.pcmIrqEnabled=t.pcmIrqEnabled,this.audioEnabled=t.audioEnabled,t.pulse1&&(this.pulse1=Object.assign(this._initPulse(),t.pulse1)),t.pulse2&&(this.pulse2=Object.assign(this._initPulse(),t.pulse2)),this._syncPrg(),this._syncChr(),this._syncNametables()}};c(zt,"mapperName","MMC5");Ri=zt});var qt,bi,Ci=S(()=>{O();qt=class extends C{constructor(t){super(t)}write(t,e){t<32768?super.write(t,e):(this.load32kRomBank(e&7,32768),e&16?this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING2):this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING))}loadROM(){if(!this.nes.rom.valid)throw new Error("AOROM: Invalid ROM! Unable to load.");this.loadPRGROM(),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(qt,"mapperName","AxROM");bi=qt});var vt,_i,Si=S(()=>{O();vt=class extends C{constructor(t){super(t),this.prgBank=0,this.chrBankFD0=0,this.chrBankFE0=0,this.chrBankFD1=0,this.chrBankFE1=0,this.latch0=254,this.latch1=254}write(t,e){if(t<32768){super.write(t,e);return}switch(t&61440){case 40960:this.prgBank=e&15,this.load8kRomBank(this.prgBank,32768);break;case 45056:this.chrBankFD0=e&31,this._updateChr0();break;case 49152:this.chrBankFE0=e&31,this._updateChr0();break;case 53248:this.chrBankFD1=e&31,this._updateChr1();break;case 57344:this.chrBankFE1=e&31,this._updateChr1();break;case 61440:e&1?this.nes.ppu.setMirroring(this.nes.rom.HORIZONTAL_MIRRORING):this.nes.ppu.setMirroring(this.nes.rom.VERTICAL_MIRRORING);break}}_updateChr0(){let t=this.latch0===253?this.chrBankFD0:this.chrBankFE0;this.loadVromBank(t,0)}_updateChr1(){let t=this.latch1===253?this.chrBankFD1:this.chrBankFE1;this.loadVromBank(t,4096)}latchAccess(t){t===4056?this.latch0!==253&&(this.latch0=253,this._updateChr0()):t===4072?this.latch0!==254&&(this.latch0=254,this._updateChr0()):t>=8152&&t<=8159?this.latch1!==253&&(this.latch1=253,this._updateChr1()):t>=8168&&t<=8175&&this.latch1!==254&&(this.latch1=254,this._updateChr1())}loadROM(){if(!this.nes.rom.valid)throw new Error("MMC2: Invalid ROM! Unable to load.");this.load8kRomBank(0,32768);let t=(this.nes.rom.romCount-1)*2+1;this.load8kRomBank(t-2,40960),this.load8kRomBank(t-1,49152),this.load8kRomBank(t,57344),this.loadCHRROM(),this.loadBatteryRam(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}toJSON(){let t=super.toJSON();return t.prgBank=this.prgBank,t.chrBankFD0=this.chrBankFD0,t.chrBankFE0=this.chrBankFE0,t.chrBankFD1=this.chrBankFD1,t.chrBankFE1=this.chrBankFE1,t.latch0=this.latch0,t.latch1=this.latch1,t}fromJSON(t){super.fromJSON(t),this.prgBank=t.prgBank,this.chrBankFD0=t.chrBankFD0,this.chrBankFE0=t.chrBankFE0,this.chrBankFD1=t.chrBankFD1,this.chrBankFE1=t.chrBankFE1,this.latch0=t.latch0,this.latch1=t.latch1}};c(vt,"mapperName","MMC2");_i=vt});var Ut,yi,Ei=S(()=>{O();Ut=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else{let i=(e&15)*2%this.nes.rom.romCount,s=((e&15)*2+1)%this.nes.rom.romCount;if(this.loadRomBank(i,32768),this.loadRomBank(s,49152),this.nes.rom.vromCount>0){let r=(e>>4)*2%this.nes.rom.vromCount;this.loadVromBank(r,0),this.loadVromBank(r+1,4096)}}}};c(Ut,"mapperName","Color Dreams");yi=Ut});var Wt,Ti,Ai=S(()=>{O();Wt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load32kRomBank(e,32768)}};c(Wt,"mapperName","BNROM");Ti=Wt});var Ht,ki,Fi=S(()=>{O();Ht=class extends C{constructor(t){super(t)}write(t,e){if(t<28672||t>32767){super.write(t,e);return}else this.load32kRomBank(e&3,32768),this.load8kVromBank((e>>2&3)*2,0)}};c(Ht,"mapperName","PCI556");ki=Ht});var Yt,Bi,Ni=S(()=>{O();Yt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load32kRomBank(e>>4&3,32768),this.load8kVromBank((e&3)*2,0)}};c(Yt,"mapperName","GxROM");Bi=Yt});var Jt,Mi,Oi=S(()=>{O();Jt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}t>=36864&&t<40960?e&16?this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING2):this.nes.ppu.setMirroring(this.nes.rom.SINGLESCREEN_MIRRORING):t>=49152&&this.loadRomBank(e&15,32768)}loadROM(){if(!this.nes.rom.valid)throw new Error("Mapper 71: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(Jt,"mapperName","Camerica");Mi=Jt});var Xt,Ii,Pi=S(()=>{O();Xt=class extends C{constructor(t){super(t)}write(t,e){(t&57600)===16640&&(this.load32kRomBank(e>>3&1,32768),this.load8kVromBank((e&7)*2,0)),super.write(t,e)}};c(Xt,"mapperName","NINA-03/NINA-06");Ii=Xt});var jt,Vi,wi=S(()=>{O();jt=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.loadRomBank(e>>2,32768)}loadROM(){if(!this.nes.rom.valid)throw new Error("UN1ROM: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(this.nes.rom.romCount-1,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c(jt,"mapperName","UN1ROM");Vi=jt});var Zt,Gi,Di=S(()=>{Lt();Zt=class extends Y{constructor(t){super(t),this.chrRegs=[0,0,0,0,0,0]}write(t,e){t!==40960&&(super.write(t,e),t===32768&&this.updateNametableMirroring())}executeCommand(t,e){t<=5?(this.chrRegs[t]=e,super.executeCommand(t,e&127),this.updateNametableMirroring()):super.executeCommand(t,e)}updateNametableMirroring(){let t=this.nes.ppu;if(this.chrAddressSelect===0){let e=this.chrRegs[0]>>7&1,i=this.chrRegs[1]>>7&1;t.ntable1[0]=e,t.ntable1[1]=e,t.ntable1[2]=i,t.ntable1[3]=i}else t.ntable1[0]=this.chrRegs[2]>>7&1,t.ntable1[1]=this.chrRegs[3]>>7&1,t.ntable1[2]=this.chrRegs[4]>>7&1,t.ntable1[3]=this.chrRegs[5]>>7&1;for(let e=0;e<4;e++){let i=8192+e*1024,s=8192+t.ntable1[e]*1024;t.defineMirrorRegion(i,s,1024)}t.currentMirroring=-1}loadROM(){super.loadROM(),this.updateNametableMirroring()}toJSON(){let t=super.toJSON();return t.chrRegs=this.chrRegs.slice(),t}fromJSON(t){super.fromJSON(t),this.chrRegs=t.chrRegs,this.updateNametableMirroring()}};c(Zt,"mapperName","TxSROM");Gi=Zt});var Kt,Li,zi=S(()=>{Lt();Bt();H();Kt=class extends Y{constructor(t){super(t),this.chrRam=new Uint8Array(8192),this.chrRamTiles=new Array(8);for(let e=0;e<8;e++){this.chrRamTiles[e]=new Array(64);for(let i=0;i<64;i++)this.chrRamTiles[e][i]=new xt}this.chrRamSlots=[-1,-1,-1,-1,-1,-1,-1,-1]}executeCommand(t,e){switch(t){case Y.CMD_SEL_2_1K_VROM_0000:{let i=this.chrAddressSelect===0?0:4096;if(e&64){let s=e&6;this.load1kChrRamBank(s,i),this.load1kChrRamBank(s+1,i+1024)}else{let s=e&63;this.saveChrRamSlot(i),this.saveChrRamSlot(i+1024),this.chrRamSlots[i>>10]=-1,this.chrRamSlots[(i>>10)+1]=-1,this.load1kVromBank(s,i),this.load1kVromBank(s+1,i+1024)}break}case Y.CMD_SEL_2_1K_VROM_0800:{let i=this.chrAddressSelect===0?2048:6144;if(e&64){let s=e&6;this.load1kChrRamBank(s,i),this.load1kChrRamBank(s+1,i+1024)}else{let s=e&63;this.saveChrRamSlot(i),this.saveChrRamSlot(i+1024),this.chrRamSlots[i>>10]=-1,this.chrRamSlots[(i>>10)+1]=-1,this.load1kVromBank(s,i),this.load1kVromBank(s+1,i+1024)}break}case Y.CMD_SEL_1K_VROM_1000:{let i=this.chrAddressSelect===0?4096:0;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}case Y.CMD_SEL_1K_VROM_1400:{let i=this.chrAddressSelect===0?5120:1024;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}case Y.CMD_SEL_1K_VROM_1800:{let i=this.chrAddressSelect===0?6144:2048;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}case Y.CMD_SEL_1K_VROM_1C00:{let i=this.chrAddressSelect===0?7168:3072;e&64?this.load1kChrRamBank(e&7,i):(this.saveChrRamSlot(i),this.chrRamSlots[i>>10]=-1,this.load1kVromBank(e&63,i));break}default:super.executeCommand(t,e)}}saveChrRamSlot(t){let e=t>>10,i=this.chrRamSlots[e];i!==-1&&v(this.nes.ppu.vramMem,e<<10,this.chrRam,i*1024,1024)}load1kChrRamBank(t,e){this.nes.ppu.triggerRendering(),t&=7,this.saveChrRamSlot(e);let i=e>>10;this.chrRamSlots[i]=t;let s=t*1024;v(this.chrRam,s,this.nes.ppu.vramMem,e,1024),this.rebuildChrRamTiles(t);let r=e>>4;for(let a=0;a<64;a++)this.nes.ppu.ptTile[r+a]=this.chrRamTiles[t][a]}rebuildChrRamTiles(t){let e=t*1024;for(let i=0;i<1024;i++){let s=i>>4,r=i%16;r<8?this.chrRamTiles[t][s].setScanline(r,this.chrRam[e+i],this.chrRam[e+i+8]):this.chrRamTiles[t][s].setScanline(r-8,this.chrRam[e+i-8],this.chrRam[e+i])}}canWriteChr(t){return t>=8192?!1:this.chrRamSlots[t>>10]!==-1}toJSON(){for(let e=0;e<8;e++)this.saveChrRamSlot(e<<10);let t=super.toJSON();return t.chrRam=Array.from(this.chrRam),t.chrRamSlots=this.chrRamSlots.slice(),t}fromJSON(t){super.fromJSON(t),this.chrRam=new Uint8Array(t.chrRam),this.chrRamSlots=t.chrRamSlots;for(let e=0;e<8;e++)this.rebuildChrRamTiles(e);for(let e=0;e<8;e++){let i=this.chrRamSlots[e];if(i!==-1){let s=e<<10>>4;for(let r=0;r<64;r++)this.nes.ppu.ptTile[s+r]=this.chrRamTiles[i][r]}}}};c(Kt,"mapperName","TQROM");Li=Kt});var Qt,qi,vi=S(()=>{O();Qt=class extends C{constructor(t){super(t)}write(t,e){if(t<24576||t>32767){super.write(t,e);return}else this.load32kRomBank(e>>4&3,32768),this.load8kVromBank((e&15)*2,0)}};c(Qt,"mapperName","Jaleco JF-11/JF-14");qi=Qt});var $t,Ui,Wi=S(()=>{O();$t=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.loadRomBank(e,49152)}loadROM(){if(!this.nes.rom.valid)throw new Error("Mapper 180: Invalid ROM! Unable to load.");this.loadRomBank(0,32768),this.loadRomBank(0,49152),this.loadCHRROM(),this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET)}};c($t,"mapperName","UNROM (Crazy Climber)");Ui=$t});var te,Hi,Yi=S(()=>{O();te=class extends C{constructor(t){super(t)}write(t,e){if(t<16416||t>24575){super.write(t,e);return}else this.load32kRomBank(e>>4&3,32768),this.load8kVromBank((e&15)*2,0)}};c(te,"mapperName","Mapper 240");Hi=te});var ee,Ji,Xi=S(()=>{O();ee=class extends C{constructor(t){super(t)}write(t,e){if(t<32768){super.write(t,e);return}else this.load32kRomBank(e,32768)}};c(ee,"mapperName","BxROM (Mapper 241)");Ji=ee});var ye,ji=S(()=>{O();fi();ui();di();Lt();gi();Ci();Si();Ei();Ai();Fi();Ni();Oi();Pi();wi();Di();zi();vi();Wi();Yi();Xi();ye={0:C,1:mi,2:pi,3:xi,4:Y,5:Ri,7:bi,9:_i,11:yi,34:Ti,38:ki,66:Bi,71:Mi,79:Ii,94:Vi,118:Gi,119:Li,140:qi,180:Ui,240:Hi,241:Ji}});var Ee,Zi,Ki=S(()=>{ji();Bt();Ee=class u{constructor(t){c(this,"VERTICAL_MIRRORING",0);c(this,"HORIZONTAL_MIRRORING",1);c(this,"FOURSCREEN_MIRRORING",2);c(this,"SINGLESCREEN_MIRRORING",3);c(this,"SINGLESCREEN_MIRRORING2",4);c(this,"SINGLESCREEN_MIRRORING3",5);c(this,"SINGLESCREEN_MIRRORING4",6);c(this,"CHRROM_MIRRORING",7);this.nes=t,this.valid=!1}load(t){let e,i,s;t instanceof ArrayBuffer&&(t=new Uint8Array(t));let r=ArrayBuffer.isView(t);if(r){if(t.length<4||t[0]!==78||t[1]!==69||t[2]!==83||t[3]!==26)throw new Error("Not a valid NES ROM.")}else if(!t.startsWith("NES"))throw new Error("Not a valid NES ROM.");for(this.header=new Uint8Array(16),e=0;e<16;e++)this.header[e]=r?t[e]:t.charCodeAt(e)&255;this.mirroring=(this.header[6]&1)!==0?1:0,this.batteryRam=(this.header[6]&2)!==0,this.trainer=(this.header[6]&4)!==0,this.fourScreen=(this.header[6]&8)!==0,this.isNES2=(this.header[7]&12)===8,this.isNES2?this._loadNES2Header():this._loadINES1Header(),this.rom=new Array(this.romCount);let a=16+(this.trainer?512:0);for(e=0;e=t.length);i++)this.rom[e][i]=r?t[a+i]:t.charCodeAt(a+i)&255;a+=16384}for(this.vrom=new Array(this.vromCount),e=0;e=t.length);i++)this.vrom[e][i]=r?t[a+i]:t.charCodeAt(a+i)&255;a+=4096}for(this.vromTile=new Array(this.vromCount),e=0;e>4,l=e%16,l<8?this.vromTile[s][n].setScanline(l,this.vrom[s][e],this.vrom[s][e+8]):this.vromTile[s][n].setScanline(l-8,this.vrom[s][e-8],this.vrom[s][e]);this.valid=!0}_loadINES1Header(){this.romCount=this.header[4],this.vromCount=this.header[5]*2,this.mapperType=this.header[6]>>4|this.header[7]&240;let t=!1;for(let e=8;e<16;e++)if(this.header[e]!==0){t=!0;break}t&&(this.mapperType&=15),this.subMapper=0,this.prgRamSize=0,this.prgNvRamSize=0,this.chrRamSize=0,this.chrNvRamSize=0,this.timingMode=0,this.consoleType=0}_loadNES2Header(){this.mapperType=this.header[6]>>4|this.header[7]&240|(this.header[8]&15)<<8,this.subMapper=this.header[8]>>4&15;let t=this.header[9]&15;if(t===15){let i=this.header[4]>>2&63,s=this.header[4]&3;this.romCount=Math.ceil(Math.pow(2,i)*(s*2+1)/16384)}else this.romCount=t<<8|this.header[4];let e=this.header[9]>>4&15;if(e===15){let i=this.header[5]>>2&63,s=this.header[5]&3;this.vromCount=Math.ceil(Math.pow(2,i)*(s*2+1)/4096)}else this.vromCount=(e<<8|this.header[5])*2;this.prgRamSize=u._decodeRamSize(this.header[10]&15),this.prgNvRamSize=u._decodeRamSize(this.header[10]>>4&15),this.chrRamSize=u._decodeRamSize(this.header[11]&15),this.chrNvRamSize=u._decodeRamSize(this.header[11]>>4&15),this.timingMode=this.header[12]&3,this.consoleType=this.header[7]&3}static _decodeRamSize(t){return t===0?0:64<sr});var Te,sr,$i=S(()=>{Ye();Je();Qe();ni();ci();Ki();Te=class{constructor(t){c(this,"frame",t=>{if(this.crashed)throw new Error("Game has crashed. Call reset() or loadROM() to restart.");this.frameInProgress||(this.controllers[1].clock(),this.controllers[2].clock(),this.ppu.startFrame(),this.frameInProgress=!0);let e,i=this.cpu,s=this.ppu,r=this.papu;try{for(;;)if(i.cyclesToHalt===0){if(t&&t())return!0;if(e=i.emulate(),r.clockFrameCounter(e,i.apuCatchupCycles),i.apuCatchupCycles=0,s.frameEnded){s.frameEnded=!1;break}}else{let a=Math.min(i.cyclesToHalt,8);for(let n=0;n{this.controllers[t].buttonDown(e)});c(this,"buttonUp",(t,e)=>{this.controllers[t].buttonUp(e)});c(this,"zapperMove",(t,e)=>{this.mmap&&(this.mmap.zapperX=t,this.mmap.zapperY=e)});c(this,"zapperFireDown",()=>{this.mmap&&(this.mmap.zapperFired=!0)});c(this,"zapperFireUp",()=>{this.mmap&&(this.mmap.zapperFired=!1)});this.opts=Be({onFrame:function(){},onAudioSample:null,onStatusUpdate:function(){},onBatteryRamWrite:function(){},emulateSound:!0,sampleRate:48e3},t),this.ui={writeFrame:this.opts.onFrame,updateStatus:this.opts.onStatusUpdate},this.cpu=new ce(this),this.ppu=new de(this),this.papu=new be(this),this.gameGenie=new li,this.gameGenie.onChange=()=>this.cpu._updateCartridgeLoader(),this.mmap=null,this.controllers={1:new fe,2:new fe},this.fpsFrameCount=0,this.romData=null,this.ui.updateStatus("Ready to load a ROM.")}reset(){this.cpu=new ce(this),this.ppu=new de(this),this.papu=new be(this),this.mmap!==null&&(this.mmap=this.rom.createMapper()),this.lastFpsTime=null,this.fpsFrameCount=0,this.crashed=!1,this.frameInProgress=!1}getFPS(){let t=Date.now(),e=null;return this.lastFpsTime&&(e=this.fpsFrameCount/((t-this.lastFpsTime)/1e3)),this.fpsFrameCount=0,this.lastFpsTime=t,e}reloadROM(){this.romData!==null&&this.loadROM(this.romData)}loadROM(t){this.rom=new Zi(this),this.rom.load(t),this.reset(),this.mmap=this.rom.createMapper(),this.mmap.loadROM(),this.ppu.setMirroring(this.rom.getMirroringType()),this.romData=t}setFramerate(t){this.papu.setFrameRate(t)}toJSON(){return{cpu:this.cpu.toJSON(),mmap:this.mmap.toJSON(),ppu:this.ppu.toJSON(),papu:this.papu.toJSON(),frameInProgress:this.frameInProgress,controllers:{1:this.controllers[1].toJSON(),2:this.controllers[2].toJSON()}}}fromJSON(t){this.reset(),this.cpu.fromJSON(t.cpu),this.mmap.fromJSON(t.mmap),this.ppu.fromJSON(t.ppu),this.papu.fromJSON(t.papu),this.frameInProgress=!!t.frameInProgress,t.controllers&&(t.controllers[1]&&this.controllers[1].fromJSON(t.controllers[1]),t.controllers[2]&&this.controllers[2].fromJSON(t.controllers[2]))}},sr=Te});var rr=($i(),rs(Qi)).default;function ts(){return hs()}var es=[{id:"hello.c",name:"Hello World"},{id:"attributes.c",name:"Attribute Table"},{id:"scroll.c",name:"Scrolling"},{id:"sprites.c",name:"Sprites"},{id:"metasprites.c",name:"Metasprites"},{id:"flicker.c",name:"Flickering Sprites"},{id:"metacursor.c",name:"Controllers"},{id:"vrambuffer.c",name:"VRAM Buffer"},{id:"statusbar.c",name:"Split Status Bar"},{id:"siegegame.c",name:"Siege Game"},{id:"tint.c",name:"Color Emphasis"},{id:"rletitle.c",name:"Title Screen RLE"},{id:"aputest.c",name:"Sound Tester"},{id:"music.c",name:"Music Player"},{id:"horizscroll.c",name:"Offscreen Scrolling"},{id:"monobitmap.c",name:"Monochrome Bitmap"},{id:"fami.c",name:"Famitone Demo"},{id:"shoot2.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"},{id:"bankswitch.c",name:"Bank Switching"},{id:"irq.c",name:"IRQ Scanline Counter"},{id:"ex0.dasm",name:"Initialization",category:"Assembly"},{id:"ex1.dasm",name:"Hello World"},{id:"ex2.dasm",name:"Scrolling Demo"},{id:"ex3.dasm",name:"Sprite Demo"},{id:"ex4.dasm",name:"Controller Demo"},{id:"musicdemo.dasm",name:"Famitone Demo"},{id:"xyscroll.dasm",name:"XY Split Scrolling"},{id:"road.dasm",name:"3-D Road Demo"},{id:"hello.cpp",name:"Hello Oscar64",category:"Oscar64"},{id:"chase/game.c",name:"Shiru's Chase Game",category:"Other"},{id:"hello.wiz",name:"Hello (Wiz)"}],hr=Pe([[I.A,0,0],[I.B,0,1],[I.GP_A,0,0],[I.GP_B,0,1],[I.SELECT,0,2],[I.START,0,3],[I.UP,0,4],[I.DOWN,0,5],[I.LEFT,0,6],[I.RIGHT,0,7],[I.P2_A,1,0],[I.P2_B,1,1],[I.P2_SELECT,1,2],[I.P2_START,1,3],[I.P2_UP,1,4],[I.P2_DOWN,1,5],[I.P2_LEFT,1,6],[I.P2_RIGHT,1,7]]),Ae=class{constructor(t){this.p=t;this.cpuCyclesPerLine=114;this.cpu={getPC:()=>this.p.getPC(),getSP:()=>this.p.getSP(),isStable:()=>!0}}advanceFrame(t){var e=0;return this.p.nes.frame(()=>t&&t()?!0:(e++,!1)),e}saveState(){return this.p.saveState()}loadState(t){this.p.loadState(t)}read(t){return this.p.readAddress(t)}readConst(t){return this.p.readAddress(t)}write(t,e){t<8192?this.p.nes.cpu.mem[t&2047]=e:this.p.nes.mmap.write(t,e)}connectProbe(t){this.p.connectProbe(t)}},ke=class extends De{constructor(e){super();this.audioFrequency=44030;this.frameindex=0;this.showDebugView=!1;this.machine=new Ae(this);this.getToolForFilename=he;this.nullProbe=new Ge;this.probe=this.nullProbe;this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"OAM Buffer",start:512,size:256,type:"ram"},{name:"Work RAM",start:768,size:3328,type:"ram"},{name:"PPU Registers",start:8192,last:8200,size:8192,type:"io"},{name:"APU Registers",start:16384,last:16416,size:8192,type:"io"},{name:"Optional Cartridge RAM",start:24576,size:8192,type:"ram"}]}};this.mainElement=e}getPresets(){return es}start(){this.debugPCDelta=1,this.audio=new Ve(this.audioFrequency),this.video=new se(this.mainElement,256,224,{overscan:!0}),this.video.create(),this.ntvideo=new se(this.mainElement,512,480,{overscan:!1}),this.ntvideo.create(),this.ntvideo.canvas.style.display="none",this.ntlastbuf=new Uint32Array(4096),ts().bind&&ts().bind("ctrl+shift+alt+n",()=>{this.showDebugView=!this.showDebugView,this.video.canvas.style.display=this.showDebugView?"none":"",this.ntvideo.canvas.style.display=this.showDebugView?"":"none"});var e=this.video.getFrameData();this.nes=new rr({onFrame:i=>{for(var s=0;s{this.frameindex<10?this.audio.feedSample(0,1):this.audio.feedSample((i+s)*.5,1)},onStatusUpdate:function(i){console.log(i)},sampleRate:this.audioFrequency}),this.timer=new Oe(60,this.nextFrame.bind(this)),this.poller=Ie(this.video,[],hr,(i,s,r,a)=>{a&1?this.nes.buttonDown(i.index+1,i.mask):a&64&&this.nes.buttonUp(i.index+1,i.mask)})}pollControls(){this.poller.poll()}advance(e){return this.nes.frame(),29780}updateDebugViews(){if(this.showDebugView){for(var e=0,i=0,s=this.ntvideo.getFrameData(),r=this.nes.ppu.regS===0?0:256,a=0;a<60;a++)for(var n=0;n<64;n++){e=8192+(n&31)+a%30*32,n>=32&&(e+=1024),a>=30&&(e+=2048);var l=this.nes.ppu.mirroredLoad(e)+r,o=this.nes.ppu.ptTile[l];i=e&11264|960|e&3072|e>>4&56|e>>2&7;var p=this.nes.ppu.mirroredLoad(i),h=l^p<<9^2147483648;if(h!=this.ntlastbuf[e&4095]){this.ntlastbuf[e&4095]=h;for(var d=a*64*8*8+n*8,x=0,m=(n&2)+((e&64)>>4),f=(p>>m&3)<<2,R=0;R<8;R++){for(var _=0;_<8;_++){var E=o.pix[x++];E&&(E+=f);var g=this.nes.ppu.imgPalette[E];s[d++]=g|4278190080}d+=504}}}this.ntvideo.updateFrame()}}loadROM(e,i){var s=Ne(i);this.nes.loadROM(s),this.frameindex=0,this.installIntercepts()}installIntercepts(){var e=this.nes.cpu;if(!e.haveProxied){var i=e.emulate.bind(e);e.emulate=()=>{e.irqRequested&&this.probe.logInterrupt(e.irqType||0),this.probe.logExecute(e.REG_PC+1,e.REG_SP);var f;try{f=i()}catch(R){throw R instanceof re?R:(this.haltAndCatchFire(R.message||"Illegal instruction"),new re("CPU STOPPED"))}return this.evalDebugCondition(),this.probe.logClocks(f),f>0?f:1};var s=e.doNonMaskableInterrupt.bind(e);e.doNonMaskableInterrupt=f=>(this.probe.logInterrupt(1),s(f)),e.haveProxied=!0}var r=this.nes.mmap;if(!r.haveProxied){var a=r.load.bind(r),n=r.write.bind(r),l=r.regLoad.bind(r),o=r.regWrite.bind(r),p=-1;r.load=f=>{var R=a(f);return f!=p&&this.probe.logRead(f,R),R},r.write=(f,R)=>{f!=p&&this.probe.logWrite(f,R),n(f,R)},r.regLoad=f=>{var R=l(f);return this.probe.logIORead(f,R),p=f,R},r.regWrite=(f,R)=>{this.probe.logIOWrite(f,R),p=f,o(f,R)},r.haveProxied=!0}var h=this.nes.ppu;if(!h.haveProxied){var d=h.endScanline.bind(h),x=h.startFrame.bind(h),m=h.writeMem.bind(h);h.endScanline=()=>{d(),this.probe.logNewScanline()},h.startFrame=()=>{x(),this.probe.logNewFrame()},h.writeMem=(f,R)=>{m(f,R),this.probe.logVRAMWrite(f,R)},h.haveProxied=!0}}newCodeAnalyzer(){return new qe(this)}getOriginPC(){return(this.readAddress(65530)|this.readAddress(65531)<<8)&65535}getDefaultExtensions(){return[...super.getDefaultExtensions(),".nesasm"]}getROMExtension(){return".nes"}reset(){this.nes.crashed=!1,this.nes.cpu.requestIrq(this.nes.cpu.IRQ_RESET),this.installIntercepts()}isRunning(){return this.timer.isRunning()}pause(){this.timer.stop(),this.audio.stop()}resume(){this.timer.start(),this.audio.start()}runToVsync(){var e=this.frameindex;this.runEval(i=>this.frameindex>e)}getRasterScanline(){return this.nes.ppu.scanline}getRasterLineClock(){return this.nes.ppu.curX}getPC(){return this.nes.cpu.REG_PC+this.debugPCDelta&65535}getSP(){return this.nes.cpu.REG_SP&255}isStable(){return!0}getCPUState(){var e=this.nes.cpu.toJSON();return this.copy6502REGvars(e),e}saveState(){var e;return this.nes.mmap?e=this.nes.toJSON():(console.log("no nes.mmap!"),e={cpu:this.nes.cpu.toJSON(),ppu:this.nes.ppu.toJSON()}),e.c=e.cpu,this.copy6502REGvars(e.c),e.b=e.cpu.mem,e.ctrl=this.saveControlsState(),e}loadState(e){this.unfixPC(e.cpu),this.nes.fromJSON(e),this.fixPC(e.cpu),this.loadControlsState(e.ctrl),this.installIntercepts()}saveControlsState(){return{c1:this.nes.controllers[1].state.slice(0),c2:this.nes.controllers[2].state.slice(0)}}loadControlsState(e){this.nes.controllers[1].state=e.c1.slice(0),this.nes.controllers[2].state=e.c2.slice(0)}readAddress(e){return this.nes.cpu.mem[e]}readVRAMAddress(e){return this.nes.ppu.vramMem[e]}copy6502REGvars(e){return e.T=0,e.PC=e.REG_PC,this.fixPC(e),e.A=e.REG_ACC,e.X=e.REG_X,e.Y=e.REG_Y,e.SP=e.REG_SP&255,e.Z=e.F_ZERO,e.N=e.F_SIGN,e.V=e.F_OVERFLOW,e.D=e.F_DECIMAL,e.C=e.F_CARRY,e.I=e.F_INTERRUPT,e.R=1,e.o=this.readAddress(e.PC+1),e}getDebugCategories(){return super.getDebugCategories().concat(["PPU","Mapper"])}getDebugInfo(e,i){switch(e){case"PPU":return this.ppuStateToLongString(i.ppu,i.b);case"Mapper":return this.mapperStateToLongString(i.mmap,i.b);default:return super.getDebugInfo(e,i)}}ppuStateToLongString(e,i){for(var s="",r=[["f_nmiOnVblank","NMI_ON_VBLANK"],["f_spVisibility","SPRITES"],["f_spClipping","NO_CLIP_SPRITES"],["f_dispType","MONOCHROME"],["f_bgVisibility","BACKGROUND"],["f_bgClipping","NO_CLIP_BACKGROUND"]],a=0;a="0"&&r[0]<="9"&&(r="L"+r),r=Me(r,".","_"),i+=`${n}:${l}:${r} `}return{extension:".mlb",blob:new Blob([i],{type:"text/plain"})}}},Fe=class extends ze{constructor(){super(...arguments);this.getToolForFilename=he;this.getOpcodeMetadata=Le}start(){}loadROM(e,i){if(!this.started)this.startModule(this.mainElement,{jsfile:"mame8bitws.js",driver:"nes",width:256,height:240,romfn:"/emulator/cart.nes",romdata:new Uint8Array(i),preInit:function(a){}});else{var s=i[4]*16384,r=i[5]*8192;this.loadROMFile(i),this.loadRegion(":nes_slot:cart:prg_rom",i.slice(16,16+s)),this.loadRegion(":nes_slot:cart:chr_rom",i.slice(16+s,16+s+r))}}getPresets(){return es}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}};ie.nes=ke;ie["nes.mame"]=Fe; -//# sourceMappingURL=nes-KNS3DDZZ.js.map +//# sourceMappingURL=nes-ID4YFIRR.js.map diff --git a/gen/nes-KNS3DDZZ.js.map b/gen/nes-ID4YFIRR.js.map similarity index 100% rename from gen/nes-KNS3DDZZ.js.map rename to gen/nes-ID4YFIRR.js.map diff --git a/gen/pacman-5A7HXGRT.js b/gen/pacman-I4CSCLAQ.js similarity index 98% rename from gen/pacman-5A7HXGRT.js rename to gen/pacman-I4CSCLAQ.js index ade6502f..bd7e400f 100644 --- a/gen/pacman-5A7HXGRT.js +++ b/gen/pacman-I4CSCLAQ.js @@ -1,2 +1,2 @@ -import{J as B,c as w,t as V}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{P as R,Y as M,ba as x,ca as P,ea as U,ga as E}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var D=U([[x.UP,0,1],[x.LEFT,0,2],[x.RIGHT,0,4],[x.DOWN,0,8],[x.VK_5,0,32],[x.VK_6,0,64],[x.A,0,128],[x.START,1,32],[x.VK_2,1,64]]),l=224,p=288,v=class{constructor(n,r,t,e){this.rom=n;this.vram=r;this.cram=t;this.ram=e;this.tiles=new Uint8Array(256*64);this.sprites=new Uint8Array(64*256);this.colors=new Uint32Array(32);this.paletteRom=new Uint8Array(256);this.spritePos=new Uint8Array(16);this.rebuild()}rebuild(){for(var n=0;n<32;n++){var r=this.rom[24576+n],t=(r>>0&1)*33+(r>>1&1)*71+(r>>2&1)*151,e=(r>>3&1)*33+(r>>4&1)*71+(r>>5&1)*151,i=(r>>6&1)*81+(r>>7&1)*174;this.colors[n]=4278190080|i<<16|e<<8|t}this.paletteRom.set(this.rom.subarray(24832,25088));for(var a=this.rom.subarray(16384,20480),s=0;s<256;s++){var c=this.tiles.subarray(s*64,s*64+64),h=a.subarray(s*16,s*16+16);this.decodeStrip(h,0,c,0,4,8),this.decodeStrip(h,8,c,0,0,8)}for(var o=this.rom.subarray(20480,24576),f=0;f<64;f++){var u=this.sprites.subarray(f*256,f*256+256),m=o.subarray(f*64,f*64+64);this.decodeStrip(m,0,u,8,12,16),this.decodeStrip(m,8,u,8,0,16),this.decodeStrip(m,16,u,8,4,16),this.decodeStrip(m,24,u,8,8,16),this.decodeStrip(m,32,u,0,12,16),this.decodeStrip(m,40,u,0,0,16),this.decodeStrip(m,48,u,0,4,16),this.decodeStrip(m,56,u,0,8,16)}}decodeStrip(n,r,t,e,i,a){for(var s=i*a+e,c=0;c<8;c++)for(var h=n[r+c],o=0;o<4;o++){var f=(3-o)*a+(7-c),u=h>>o&1|(h>>o+4&1)<<1;t[s+f]=u}}getPalette(n,r){n&=63;var t=n*4;r[0]=this.paletteRom[t],r[1]=this.paletteRom[t+1],r[2]=this.paletteRom[t+2],r[3]=this.paletteRom[t+3]}drawTile(n,r,t,e,i){if(!(e<0||e>=l))for(var a=this.tiles.subarray(r*64,r*64+64),s=0;s<64;s++){var c=s&7,h=s>>3,o=e+c;if(!(o<0||o>=l)){var f=t[a[s]&3];n[(i+h)*l+o]=this.colors[f&31]}}}drawSprite(n,r,t,e,i,a,s){if(!(e<=-16||e>l))for(var c=this.sprites.subarray(r*256,r*256+256),h=0;h<256;h++){var o=h&15,f=h>>4,u=c[h]&3;if(t[u]!==0){var m=a?15-o:o,T=s?15-f:f,y=e+m,g=i+T;y<0||y>=l||g<0||g>=p||(n[g*l+y]=this.colors[t[u]&31])}}}drawFrame(n){n.fill(4278190080);for(var r=new Uint8Array(4),t=0,e=34;e<36;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=64;for(var i=29;i>=2;i--)for(var e=2;e<=33;e++)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=960;for(var e=0;e<2;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;for(var a=7;a>=0;a--){var s=this.ram[1008+a*2],c=this.ram[1008+a*2+1],h=l-this.spritePos[a*2]+15,o=p-this.spritePos[a*2+1]-16;this.getPalette(c,r),this.drawSprite(n,s>>2,r,h,o,!!(s&2),!!(s&1))}}},O=18432e3,C=O/6,k=O/3/192/2,F=C/k,A=256,d=class d extends V{constructor(){super();this.cpuFrequency=C;this.canvasWidth=l;this.numTotalScanlines=p;this.numVisibleScanlines=p;this.defaultROMSize=32768;this.cpuCyclesPerLine=F|0;this.sampleRate=60*264;this.rotate=0;this.cpu=new w;this.ram=new Uint8Array(1024);this.vram=new Uint8Array(1024);this.cram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.interruptEnabled=0;this.interruptVector=255;this.pendingVBlankIsr=!1;this.watchdog_counter=A;this.flipScreen=0;this.soundEnabled=0;this.soundRegs=new Uint8Array(32);this.soundAcc=new Uint32Array(3);this.waveforms=d.WAVEFORMS;this.keyMap=D;this.frameDrawn=!1;this.readByte=r=>{if(r&=65535,r<16384)return this.rom[r];if(r<17408)return this.vram[r-16384];if(r<18432)return this.cram[r-17408];if(r<19456)return 191;if(r<20480)return this.ram[r-19456];if(r<20736){var t=r&192;return t===0?~this.inputs[0]&255|16:t===64?~this.inputs[1]&111|144:t===128?201:255}return r>=32768?this.rom[r&16383]:255};this.writeByte=(r,t)=>{if(r&=65535,!(r<16384)){if(r<17408){this.vram[r-16384]=t;return}if(r<18432){this.cram[r-17408]=t;return}if(!(r<19456)){if(r<20480){this.ram[r-19456]=t;return}if((r&65528)===20480){var e=r&7;e===0&&(this.interruptEnabled=t&1),e===1&&(this.soundEnabled=t&1),e===3&&(this.flipScreen=t&1)}else r>=20544&&r<=20575?this.soundRegs[r-20544]=t&15:(r&65520)===20576?this.gfx.spritePos[r&15]=t:(r&65472)===20672&&(this.watchdog_counter=A)}}};this.connectCPUIOBus({read:r=>255,write:(r,t)=>{(r&255)===0&&(this.interruptVector=t&255)}}),this.connectCPUMemoryBus({read:this.readByte,write:this.writeByte}),this.cpu.retryInterrupts=!0,this.rom=new Uint8Array(this.defaultROMSize),this.gfx=new v(this.rom,this.vram,this.cram,this.ram),this.inputs.fill(0),this.handler=P(this.inputs,this.keyMap)}static buildWaveforms(){for(var r=new Uint8Array(256),t=0;t<32;t++){var e=t/32;r[0+t]=8+Math.sin(e*Math.PI*2)*7.5|0,r[32+t]=t<16?15:0,r[64+t]=t<16?t:31-t,r[96+t]=t>>1,r[128+t]=t<8?15:t<16?0:t<24?10:0,r[160+t]=8+Math.sin(e*Math.PI*4)*7.5|0,r[192+t]=t&1?12:2,r[224+t]=t*3&15}return r}reset(){super.reset(),this.cpu.reset(),this.watchdog_counter=A,this.interruptEnabled=0,this.interruptVector=255,this.pendingVBlankIsr=!1,this.soundEnabled=0,this.soundRegs.fill(0),this.soundAcc.fill(0),this.extractROMData()}loadROM(r){this.rom.set(E(r,this.defaultROMSize)),this.extractROMData()}extractROMData(){this.gfx=new v(this.rom,this.vram,this.cram,this.ram);for(var r=this.rom.subarray(25088,25344),t=!1,e=0;e>15&31,o=this.waveforms[this.voiceWave(a)*32+h]&15;i+=(o-8)*s}}}t+=i}this.audio.feedSample(t/(r*3*15*8),1)}}drawScanline(){this.scanline===0&&this.gfx.drawFrame(this.pixels)}drainVBlankIsr(){if(this.pendingVBlankIsr){this.pendingVBlankIsr=!1;for(var r=this.cpu.getSP()+2,t=1e5;this.cpu.getSP()!==r&&--t>0;)this.advanceCPU()}}advanceFrame(r){this.drainVBlankIsr();var t=super.advanceFrame(r);if(--this.watchdog_counter<=0)throw new M("WATCHDOG FIRED");if(this.interruptEnabled){var e=this.cpu.getSP();this.cpu.interrupt(this.interruptVector),this.cpu.getSP()!==e&&(this.pendingVBlankIsr=!0)}return t}loadState(r){this.cpu.loadState(r.c),this.ram.set(r.ram),this.vram.set(r.vr),this.cram.set(r.cr),this.gfx.spritePos.set(r.sp||[]),this.watchdog_counter=r.wdc,this.interruptEnabled=r.ie,this.pendingVBlankIsr=!!r.pvi,this.loadControlsState(r)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),vr:this.vram.slice(0),cr:this.cram.slice(0),or:this.oram.slice(0),sp:this.gfx.spritePos.slice(0),wdc:this.watchdog_counter,ie:this.interruptEnabled,pvi:this.pendingVBlankIsr,inputs:this.inputs.slice(0)}}read(r){return this.readByte(r)}write(r,t){this.writeByte(r,t)}readConst(r){return this.readByte(r)}};d.WAVEFORMS=d.buildWaveforms();var b=d;var W=[{id:"hello.c",name:"Hello World"},{id:"sprites.c",name:"Sprite Test"},{id:"music.c",name:"Music Demo"},{id:"solarian.c",name:"Solarian"},{id:"siege.c",name:"Siege Game"},{id:"climber.c",name:"Climber Game"},{id:"chase.c",name:"Chase"}],S=class extends B{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Program ROM",start:0,size:16384,type:"rom"},{name:"Video RAM",start:16384,size:1024,type:"ram"},{name:"Color RAM",start:17408,size:1024,type:"ram"},{name:"Open Bus",start:18432,size:1024,type:"ram"},{name:"Work RAM",start:19456,size:1008,type:"ram"},{name:"Sprite RAM",start:20464,size:16,type:"ram"},{name:"I/O Regs",start:20480,size:256,type:"io"},{name:"Color PROM",start:24576,size:32,type:"rom"},{name:"Palette PROM",start:24832,size:256,type:"rom"},{name:"Wave ROM",start:25088,size:256,type:"rom"}]}}}newMachine(){return new b}getPresets(){return W}getDefaultExtension(){return".c"}readAddress(r){return this.machine.readConst(r)}readVRAMAddress(r){return r<1024?this.machine.vram[r]:r<2048?this.machine.cram[r-1024]:this.machine.ram[1008+(r-2048&15)]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#pac-man-hardware"}getDebugTree(){let r=super.getDebugTree();return r.palette={$$:()=>{let t={};for(let e=0;e{let t={};for(let e=0;e<8;e++){let i=1008+e*2;t[`sprite_${e}`]={shape:"$"+this.machine.ram[i].toString(16).padStart(2,"0"),color:"$"+this.machine.ram[i+1].toString(16).padStart(2,"0"),x:this.machine.gfx.spritePos[e*2],y:this.machine.gfx.spritePos[e*2+1]}}return t}},r}};R.pacman=S; -//# sourceMappingURL=pacman-5A7HXGRT.js.map +import{L as B,c as w,v as V}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P as R,Y as M,ba as x,ca as P,ea as U,ga as E}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var D=U([[x.UP,0,1],[x.LEFT,0,2],[x.RIGHT,0,4],[x.DOWN,0,8],[x.VK_5,0,32],[x.VK_6,0,64],[x.A,0,128],[x.START,1,32],[x.VK_2,1,64]]),l=224,p=288,v=class{constructor(n,r,t,e){this.rom=n;this.vram=r;this.cram=t;this.ram=e;this.tiles=new Uint8Array(256*64);this.sprites=new Uint8Array(64*256);this.colors=new Uint32Array(32);this.paletteRom=new Uint8Array(256);this.spritePos=new Uint8Array(16);this.rebuild()}rebuild(){for(var n=0;n<32;n++){var r=this.rom[24576+n],t=(r>>0&1)*33+(r>>1&1)*71+(r>>2&1)*151,e=(r>>3&1)*33+(r>>4&1)*71+(r>>5&1)*151,i=(r>>6&1)*81+(r>>7&1)*174;this.colors[n]=4278190080|i<<16|e<<8|t}this.paletteRom.set(this.rom.subarray(24832,25088));for(var a=this.rom.subarray(16384,20480),s=0;s<256;s++){var c=this.tiles.subarray(s*64,s*64+64),h=a.subarray(s*16,s*16+16);this.decodeStrip(h,0,c,0,4,8),this.decodeStrip(h,8,c,0,0,8)}for(var o=this.rom.subarray(20480,24576),f=0;f<64;f++){var u=this.sprites.subarray(f*256,f*256+256),m=o.subarray(f*64,f*64+64);this.decodeStrip(m,0,u,8,12,16),this.decodeStrip(m,8,u,8,0,16),this.decodeStrip(m,16,u,8,4,16),this.decodeStrip(m,24,u,8,8,16),this.decodeStrip(m,32,u,0,12,16),this.decodeStrip(m,40,u,0,0,16),this.decodeStrip(m,48,u,0,4,16),this.decodeStrip(m,56,u,0,8,16)}}decodeStrip(n,r,t,e,i,a){for(var s=i*a+e,c=0;c<8;c++)for(var h=n[r+c],o=0;o<4;o++){var f=(3-o)*a+(7-c),u=h>>o&1|(h>>o+4&1)<<1;t[s+f]=u}}getPalette(n,r){n&=63;var t=n*4;r[0]=this.paletteRom[t],r[1]=this.paletteRom[t+1],r[2]=this.paletteRom[t+2],r[3]=this.paletteRom[t+3]}drawTile(n,r,t,e,i){if(!(e<0||e>=l))for(var a=this.tiles.subarray(r*64,r*64+64),s=0;s<64;s++){var c=s&7,h=s>>3,o=e+c;if(!(o<0||o>=l)){var f=t[a[s]&3];n[(i+h)*l+o]=this.colors[f&31]}}}drawSprite(n,r,t,e,i,a,s){if(!(e<=-16||e>l))for(var c=this.sprites.subarray(r*256,r*256+256),h=0;h<256;h++){var o=h&15,f=h>>4,u=c[h]&3;if(t[u]!==0){var m=a?15-o:o,T=s?15-f:f,y=e+m,g=i+T;y<0||y>=l||g<0||g>=p||(n[g*l+y]=this.colors[t[u]&31])}}}drawFrame(n){n.fill(4278190080);for(var r=new Uint8Array(4),t=0,e=34;e<36;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=64;for(var i=29;i>=2;i--)for(var e=2;e<=33;e++)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=960;for(var e=0;e<2;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;for(var a=7;a>=0;a--){var s=this.ram[1008+a*2],c=this.ram[1008+a*2+1],h=l-this.spritePos[a*2]+15,o=p-this.spritePos[a*2+1]-16;this.getPalette(c,r),this.drawSprite(n,s>>2,r,h,o,!!(s&2),!!(s&1))}}},O=18432e3,C=O/6,k=O/3/192/2,F=C/k,A=256,d=class d extends V{constructor(){super();this.cpuFrequency=C;this.canvasWidth=l;this.numTotalScanlines=p;this.numVisibleScanlines=p;this.defaultROMSize=32768;this.cpuCyclesPerLine=F|0;this.sampleRate=60*264;this.rotate=0;this.cpu=new w;this.ram=new Uint8Array(1024);this.vram=new Uint8Array(1024);this.cram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.interruptEnabled=0;this.interruptVector=255;this.pendingVBlankIsr=!1;this.watchdog_counter=A;this.flipScreen=0;this.soundEnabled=0;this.soundRegs=new Uint8Array(32);this.soundAcc=new Uint32Array(3);this.waveforms=d.WAVEFORMS;this.keyMap=D;this.frameDrawn=!1;this.readByte=r=>{if(r&=65535,r<16384)return this.rom[r];if(r<17408)return this.vram[r-16384];if(r<18432)return this.cram[r-17408];if(r<19456)return 191;if(r<20480)return this.ram[r-19456];if(r<20736){var t=r&192;return t===0?~this.inputs[0]&255|16:t===64?~this.inputs[1]&111|144:t===128?201:255}return r>=32768?this.rom[r&16383]:255};this.writeByte=(r,t)=>{if(r&=65535,!(r<16384)){if(r<17408){this.vram[r-16384]=t;return}if(r<18432){this.cram[r-17408]=t;return}if(!(r<19456)){if(r<20480){this.ram[r-19456]=t;return}if((r&65528)===20480){var e=r&7;e===0&&(this.interruptEnabled=t&1),e===1&&(this.soundEnabled=t&1),e===3&&(this.flipScreen=t&1)}else r>=20544&&r<=20575?this.soundRegs[r-20544]=t&15:(r&65520)===20576?this.gfx.spritePos[r&15]=t:(r&65472)===20672&&(this.watchdog_counter=A)}}};this.connectCPUIOBus({read:r=>255,write:(r,t)=>{(r&255)===0&&(this.interruptVector=t&255)}}),this.connectCPUMemoryBus({read:this.readByte,write:this.writeByte}),this.cpu.retryInterrupts=!0,this.rom=new Uint8Array(this.defaultROMSize),this.gfx=new v(this.rom,this.vram,this.cram,this.ram),this.inputs.fill(0),this.handler=P(this.inputs,this.keyMap)}static buildWaveforms(){for(var r=new Uint8Array(256),t=0;t<32;t++){var e=t/32;r[0+t]=8+Math.sin(e*Math.PI*2)*7.5|0,r[32+t]=t<16?15:0,r[64+t]=t<16?t:31-t,r[96+t]=t>>1,r[128+t]=t<8?15:t<16?0:t<24?10:0,r[160+t]=8+Math.sin(e*Math.PI*4)*7.5|0,r[192+t]=t&1?12:2,r[224+t]=t*3&15}return r}reset(){super.reset(),this.cpu.reset(),this.watchdog_counter=A,this.interruptEnabled=0,this.interruptVector=255,this.pendingVBlankIsr=!1,this.soundEnabled=0,this.soundRegs.fill(0),this.soundAcc.fill(0),this.extractROMData()}loadROM(r){this.rom.set(E(r,this.defaultROMSize)),this.extractROMData()}extractROMData(){this.gfx=new v(this.rom,this.vram,this.cram,this.ram);for(var r=this.rom.subarray(25088,25344),t=!1,e=0;e>15&31,o=this.waveforms[this.voiceWave(a)*32+h]&15;i+=(o-8)*s}}}t+=i}this.audio.feedSample(t/(r*3*15*8),1)}}drawScanline(){this.scanline===0&&this.gfx.drawFrame(this.pixels)}drainVBlankIsr(){if(this.pendingVBlankIsr){this.pendingVBlankIsr=!1;for(var r=this.cpu.getSP()+2,t=1e5;this.cpu.getSP()!==r&&--t>0;)this.advanceCPU()}}advanceFrame(r){this.drainVBlankIsr();var t=super.advanceFrame(r);if(--this.watchdog_counter<=0)throw new M("WATCHDOG FIRED");if(this.interruptEnabled){var e=this.cpu.getSP();this.cpu.interrupt(this.interruptVector),this.cpu.getSP()!==e&&(this.pendingVBlankIsr=!0)}return t}loadState(r){this.cpu.loadState(r.c),this.ram.set(r.ram),this.vram.set(r.vr),this.cram.set(r.cr),this.gfx.spritePos.set(r.sp||[]),this.watchdog_counter=r.wdc,this.interruptEnabled=r.ie,this.pendingVBlankIsr=!!r.pvi,this.loadControlsState(r)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),vr:this.vram.slice(0),cr:this.cram.slice(0),or:this.oram.slice(0),sp:this.gfx.spritePos.slice(0),wdc:this.watchdog_counter,ie:this.interruptEnabled,pvi:this.pendingVBlankIsr,inputs:this.inputs.slice(0)}}read(r){return this.readByte(r)}write(r,t){this.writeByte(r,t)}readConst(r){return this.readByte(r)}};d.WAVEFORMS=d.buildWaveforms();var b=d;var W=[{id:"hello.c",name:"Hello World"},{id:"sprites.c",name:"Sprite Test"},{id:"music.c",name:"Music Demo"},{id:"solarian.c",name:"Solarian"},{id:"siege.c",name:"Siege Game"},{id:"climber.c",name:"Climber Game"},{id:"chase.c",name:"Chase"}],S=class extends B{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Program ROM",start:0,size:16384,type:"rom"},{name:"Video RAM",start:16384,size:1024,type:"ram"},{name:"Color RAM",start:17408,size:1024,type:"ram"},{name:"Open Bus",start:18432,size:1024,type:"ram"},{name:"Work RAM",start:19456,size:1008,type:"ram"},{name:"Sprite RAM",start:20464,size:16,type:"ram"},{name:"I/O Regs",start:20480,size:256,type:"io"},{name:"Color PROM",start:24576,size:32,type:"rom"},{name:"Palette PROM",start:24832,size:256,type:"rom"},{name:"Wave ROM",start:25088,size:256,type:"rom"}]}}}newMachine(){return new b}getPresets(){return W}getDefaultExtension(){return".c"}readAddress(r){return this.machine.readConst(r)}readVRAMAddress(r){return r<1024?this.machine.vram[r]:r<2048?this.machine.cram[r-1024]:this.machine.ram[1008+(r-2048&15)]}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#pac-man-hardware"}getDebugTree(){let r=super.getDebugTree();return r.palette={$$:()=>{let t={};for(let e=0;e{let t={};for(let e=0;e<8;e++){let i=1008+e*2;t[`sprite_${e}`]={shape:"$"+this.machine.ram[i].toString(16).padStart(2,"0"),color:"$"+this.machine.ram[i+1].toString(16).padStart(2,"0"),x:this.machine.gfx.spritePos[e*2],y:this.machine.gfx.spritePos[e*2+1]}}return t}},r}};R.pacman=S; +//# sourceMappingURL=pacman-I4CSCLAQ.js.map diff --git a/gen/pacman-5A7HXGRT.js.map b/gen/pacman-I4CSCLAQ.js.map similarity index 100% rename from gen/pacman-5A7HXGRT.js.map rename to gen/pacman-I4CSCLAQ.js.map diff --git a/gen/pce-7DNGDGLS.js b/gen/pce-JCSZGFZE.js similarity index 99% rename from gen/pce-7DNGDGLS.js rename to gen/pce-JCSZGFZE.js index f70733a7..017f064e 100644 --- a/gen/pce-7DNGDGLS.js +++ b/gen/pce-JCSZGFZE.js @@ -1,2 +1,2 @@ -import{j as p}from"./chunk-FFJHITEL.js";import{a as y}from"./chunk-UXRCACYH.js";import{P as m,V as G,ba as u}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var I=[{id:"gfxtest.c",name:"Graphics Test (tiles/sprites)"},{id:"perftest.c",name:"Graphics Pipeline Benchmark"},{id:"solarian.c",name:"Solarian"},{id:"chase.c",name:"Chase"},{id:"test_conio.c",name:"Hello World (conio)"},{id:"siegegame.c",name:"Siege Game (conio)"},{id:"hello.wiz",name:"Hello World (Wiz)"}],V=class{constructor(t){this.mainElement=t}start(){this.pce=new R,this.video=new G(this.mainElement,684,262,{overscan:!0,aspect:4/3}),this.video.create(),this.pce.SetCanvas(this.video.canvas)}reset(){this.pce.Reset()}isRunning(){return this.pce.TimerID!=null}pause(){this.pce.Pause()}resume(){this.pce.CreateAudioContext(),this.pce.Start()}getPresets(){return I}loadROM(t,e){this.pce.Pause(),this.pce.Init(),this.pce.SetROM(e)}advance(t){return this.pce.Run(),1}getPlatformName(){return"PC Engine"}getToolForFilename(t){return y(t)}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}showHelp(){return"https://8bitworkshop.com/docs/platforms/pce/"}readAddress(t){return this.pce.Get(t)}writeAddress(t,e){this.pce.Set(t,e)}readVRAMAddress(t){return this.pce.VDC[0].VRAM[t]}};m.pce=V;var R=class{constructor(){this.MainCanvas=null;this.Ctx=null;this.ImageData=null;this.MapperBase=class{constructor(t,e){this.ROM=t,this.Core=e}Init(){}Read(t){return 255}Write(t,e){}};this.VDCSelect=0;this.ScreenWidthMAX=0;this.ScreenHeightMAX=0;this.SuperGrafx=!1,this.CountryTypePCE=64,this.CountryTypeTG16=0,this.CountryType=this.CountryTypePCE,this.GamePadButton6=!1,this.MultiTap=!1,this.EtcConstruct(),this.CPUConstruct(),this.StorageConstruct(),this.VCEConstruct(),this.VPCConstruct(),this.VDCConstruct(),this.SoundConstruct(),this.PSGConstruct(),this.TimerConstruct(),this.JoystickConstruct()}EtcConstruct(){this.TimerID=null,this.MainCanvas=null,this.Ctx=null,this.ImageData=null}UpdateAnimationFrame(){this.TimerID=window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this)),this.Run()}CancelAnimationFrame(){window.cancelAnimationFrame(this.TimerID),this.TimerID=null}Pause(){this.TimerID!=null&&(this.JoystickEventRelease(),this.CancelAnimationFrame())}Start(){this.TimerID==null&&(this.JoystickEventInit(),this.UpdateAnimationFrame())}Run(){for(this.CheckGamePad(),this.DrawFlag=!1;!this.DrawFlag;)this.CPURun(),this.VDCRun(),this.TimerRun(),this.PSGRun()}Reset(){this.StorageReset(),this.Mapper.Init(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit(),this.CPUReset()}Init(){this.StorageInit(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit()}SetCanvas(t){if(this.MainCanvas=t,!this.MainCanvas.getContext)return!1;this.Ctx=this.MainCanvas.getContext("2d"),this.ImageData=this.Ctx.createImageData(this.MainCanvas.width,this.MainCanvas.height);for(let e=0;ee&128),this.NZCacheTable[0]=2,this.NFlag=128,this.VFlag=64,this.TFlag=32,this.BFlag=16,this.DFlag=8,this.IFlag=4,this.ZFlag=2,this.CFlag=1,this.TIQFlag=4,this.IRQ1Flag=2,this.IRQ2Flag=1,this.ProgressClock=0,this.CPUBaseClock=0,this.BaseClock1=12,this.BaseClock3=6,this.BaseClock5=4,this.BaseClock7=3,this.BaseClock10=2,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0}CPUReset(){this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.CPUBaseClock=this.BaseClock1,this.SetIFlag(),this.PC=this.Get16(65534)}CPUInit(){this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.ProgressClock=0,this.CPUBaseClock=this.BaseClock1,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.LastInt=0}CPURun(){this.ProgressClock=0;let t=this.LastInt;this.LastInt=(this.P&this.IFlag)==0?this.GetIntStatus():0,t!=0&&this.TransferLen==0?(this.LastInt=0,(t&this.TIQFlag)==this.TIQFlag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65530)):(t&this.IRQ1Flag)==this.IRQ1Flag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65528)):(t&this.IRQ2Flag)==this.IRQ2Flag&&(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.SetIFlag(),this.PC=this.Get16(65526)),this.ProgressClock=8*this.CPUBaseClock):this.OpExec()}OpExec(){let t,e,s,i,a,h=this.Get(this.PC);switch(h){case 105:this.ADC(this.PC+1);break;case 101:this.ADC(this.ZP());break;case 117:this.ADC(this.ZP_X());break;case 114:this.ADC(this.IND());break;case 97:this.ADC(this.IND_X());break;case 113:this.ADC(this.IND_Y());break;case 109:this.ADC(this.ABS());break;case 125:this.ADC(this.ABS_X());break;case 121:this.ADC(this.ABS_Y());break;case 233:this.SBC(this.PC+1);break;case 229:this.SBC(this.ZP());break;case 245:this.SBC(this.ZP_X());break;case 242:this.SBC(this.IND());break;case 225:this.SBC(this.IND_X());break;case 241:this.SBC(this.IND_Y());break;case 237:this.SBC(this.ABS());break;case 253:this.SBC(this.ABS_X());break;case 249:this.SBC(this.ABS_Y());break;case 41:this.AND(this.PC+1);break;case 37:this.AND(this.ZP());break;case 53:this.AND(this.ZP_X());break;case 50:this.AND(this.IND());break;case 33:this.AND(this.IND_X());break;case 49:this.AND(this.IND_Y());break;case 45:this.AND(this.ABS());break;case 61:this.AND(this.ABS_X());break;case 57:this.AND(this.ABS_Y());break;case 73:this.EOR(this.PC+1);break;case 69:this.EOR(this.ZP());break;case 85:this.EOR(this.ZP_X());break;case 82:this.EOR(this.IND());break;case 65:this.EOR(this.IND_X());break;case 81:this.EOR(this.IND_Y());break;case 77:this.EOR(this.ABS());break;case 93:this.EOR(this.ABS_X());break;case 89:this.EOR(this.ABS_Y());break;case 9:this.ORA(this.PC+1);break;case 5:this.ORA(this.ZP());break;case 21:this.ORA(this.ZP_X());break;case 18:this.ORA(this.IND());break;case 1:this.ORA(this.IND_X());break;case 17:this.ORA(this.IND_Y());break;case 13:this.ORA(this.ABS());break;case 29:this.ORA(this.ABS_X());break;case 25:this.ORA(this.ABS_Y());break;case 6:t=this.ZP(),this.Set(t,this.ASL(this.Get(t)));break;case 22:t=this.ZP_X(),this.Set(t,this.ASL(this.Get(t)));break;case 14:t=this.ABS(),this.Set(t,this.ASL(this.Get(t)));break;case 30:t=this.ABS_X(),this.Set(t,this.ASL(this.Get(t)));break;case 10:this.A=this.ASL(this.A);break;case 70:t=this.ZP(),this.Set(t,this.LSR(this.Get(t)));break;case 86:t=this.ZP_X(),this.Set(t,this.LSR(this.Get(t)));break;case 78:t=this.ABS(),this.Set(t,this.LSR(this.Get(t)));break;case 94:t=this.ABS_X(),this.Set(t,this.LSR(this.Get(t)));break;case 74:this.A=this.LSR(this.A);break;case 38:t=this.ZP(),this.Set(t,this.ROL(this.Get(t)));break;case 54:t=this.ZP_X(),this.Set(t,this.ROL(this.Get(t)));break;case 46:t=this.ABS(),this.Set(t,this.ROL(this.Get(t)));break;case 62:t=this.ABS_X(),this.Set(t,this.ROL(this.Get(t)));break;case 42:this.A=this.ROL(this.A);break;case 102:t=this.ZP(),this.Set(t,this.ROR(this.Get(t)));break;case 118:t=this.ZP_X(),this.Set(t,this.ROR(this.Get(t)));break;case 110:t=this.ABS(),this.Set(t,this.ROR(this.Get(t)));break;case 126:t=this.ABS_X(),this.Set(t,this.ROR(this.Get(t)));break;case 106:this.A=this.ROR(this.A);break;case 15:this.BBRi(0);break;case 31:this.BBRi(1);break;case 47:this.BBRi(2);break;case 63:this.BBRi(3);break;case 79:this.BBRi(4);break;case 95:this.BBRi(5);break;case 111:this.BBRi(6);break;case 127:this.BBRi(7);break;case 143:this.BBSi(0);break;case 159:this.BBSi(1);break;case 175:this.BBSi(2);break;case 191:this.BBSi(3);break;case 207:this.BBSi(4);break;case 223:this.BBSi(5);break;case 239:this.BBSi(6);break;case 255:this.BBSi(7);break;case 144:this.Branch((this.P&this.CFlag)==0,1);break;case 176:this.Branch((this.P&this.CFlag)==this.CFlag,1);break;case 208:this.Branch((this.P&this.ZFlag)==0,1);break;case 240:this.Branch((this.P&this.ZFlag)==this.ZFlag,1);break;case 16:this.Branch((this.P&this.NFlag)==0,1);break;case 48:this.Branch((this.P&this.NFlag)==this.NFlag,1);break;case 80:this.Branch((this.P&this.VFlag)==0,1);break;case 112:this.Branch((this.P&this.VFlag)==this.VFlag,1);break;case 128:this.Branch(!0,1);break;case 68:this.PC++,this.Push(this.PCH()),this.Push(this.PCL()),this.Branch(!0,0);break;case 32:e=this.ABS(),this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.PC=e,this.ClearTFlag();break;case 64:this.P=this.Pull(),this.toPCL(this.Pull()),this.toPCH(this.Pull());break;case 96:this.ClearTFlag(),this.toPCL(this.Pull()),this.toPCH(this.Pull()),this.PC++;break;case 76:this.PC=this.ABS(),this.ClearTFlag();break;case 108:this.PC=this.ABS_IND(),this.ClearTFlag();break;case 124:this.PC=this.ABS_X_IND(),this.ClearTFlag();break;case 0:this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.SetBFlag(),this.Push(this.P),this.ClearDFlag(),this.ClearTFlag(),this.SetIFlag(),this.PC=this.Get16(65526);break;case 98:this.A=0,this.ClearTFlag();break;case 130:this.X=0,this.ClearTFlag();break;case 194:this.Y=0,this.ClearTFlag();break;case 24:this.ClearCFlag(),this.ClearTFlag();break;case 216:this.ClearDFlag(),this.ClearTFlag();break;case 88:this.ClearIFlag(),this.ClearTFlag();break;case 184:this.ClearVFlag(),this.ClearTFlag();break;case 56:this.SetCFlag(),this.ClearTFlag();break;case 248:this.SetDFlag(),this.ClearTFlag();break;case 120:this.SetIFlag(),this.ClearTFlag();break;case 244:this.SetTFlag();break;case 201:this.Compare(this.A,this.PC+1);break;case 197:this.Compare(this.A,this.ZP());break;case 213:this.Compare(this.A,this.ZP_X());break;case 210:this.Compare(this.A,this.IND());break;case 193:this.Compare(this.A,this.IND_X());break;case 209:this.Compare(this.A,this.IND_Y());break;case 205:this.Compare(this.A,this.ABS());break;case 221:this.Compare(this.A,this.ABS_X());break;case 217:this.Compare(this.A,this.ABS_Y());break;case 224:this.Compare(this.X,this.PC+1);break;case 228:this.Compare(this.X,this.ZP());break;case 236:this.Compare(this.X,this.ABS());break;case 192:this.Compare(this.Y,this.PC+1);break;case 196:this.Compare(this.Y,this.ZP());break;case 204:this.Compare(this.Y,this.ABS());break;case 198:t=this.ZP(),this.Set(t,this.Decrement(this.Get(t)));break;case 214:t=this.ZP_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 206:t=this.ABS(),this.Set(t,this.Decrement(this.Get(t)));break;case 222:t=this.ABS_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 58:this.A=this.Decrement(this.A);break;case 202:this.X=this.Decrement(this.X);break;case 136:this.Y=this.Decrement(this.Y);break;case 230:t=this.ZP(),this.Set(t,this.Increment(this.Get(t)));break;case 246:t=this.ZP_X(),this.Set(t,this.Increment(this.Get(t)));break;case 238:t=this.ABS(),this.Set(t,this.Increment(this.Get(t)));break;case 254:t=this.ABS_X(),this.Set(t,this.Increment(this.Get(t)));break;case 26:this.A=this.Increment(this.A);break;case 232:this.X=this.Increment(this.X);break;case 200:this.Y=this.Increment(this.Y);break;case 72:this.Push(this.A),this.ClearTFlag();break;case 8:this.Push(this.P),this.ClearTFlag();break;case 218:this.Push(this.X),this.ClearTFlag();break;case 90:this.Push(this.Y),this.ClearTFlag();break;case 104:this.A=this.Pull(),this.SetNZFlag(this.A),this.ClearTFlag();break;case 40:this.P=this.Pull();break;case 250:this.X=this.Pull(),this.SetNZFlag(this.X),this.ClearTFlag();break;case 122:this.Y=this.Pull(),this.SetNZFlag(this.Y),this.ClearTFlag();break;case 7:this.RMBi(0);break;case 23:this.RMBi(1);break;case 39:this.RMBi(2);break;case 55:this.RMBi(3);break;case 71:this.RMBi(4);break;case 87:this.RMBi(5);break;case 103:this.RMBi(6);break;case 119:this.RMBi(7);break;case 135:this.SMBi(0);break;case 151:this.SMBi(1);break;case 167:this.SMBi(2);break;case 183:this.SMBi(3);break;case 199:this.SMBi(4);break;case 215:this.SMBi(5);break;case 231:this.SMBi(6);break;case 247:this.SMBi(7);break;case 34:e=this.A,this.A=this.X,this.X=e,this.ClearTFlag();break;case 66:e=this.A,this.A=this.Y,this.Y=e,this.ClearTFlag();break;case 2:e=this.X,this.X=this.Y,this.Y=e,this.ClearTFlag();break;case 170:this.X=this.A,this.SetNZFlag(this.X),this.ClearTFlag();break;case 168:this.Y=this.A,this.SetNZFlag(this.Y),this.ClearTFlag();break;case 186:this.X=this.S,this.SetNZFlag(this.X),this.ClearTFlag();break;case 138:this.A=this.X,this.SetNZFlag(this.A),this.ClearTFlag();break;case 154:this.S=this.X,this.ClearTFlag();break;case 152:this.A=this.Y,this.SetNZFlag(this.A),this.ClearTFlag();break;case 137:this.BIT(this.PC+1);break;case 36:this.BIT(this.ZP());break;case 52:this.BIT(this.ZP_X());break;case 44:this.BIT(this.ABS());break;case 60:this.BIT(this.ABS_X());break;case 131:this.TST(this.PC+1,8192|this.Get(this.PC+2));break;case 163:this.TST(this.PC+1,8192|this.Get(this.PC+2)+this.X&255);break;case 147:this.TST(this.PC+1,this.Get16(this.PC+2));break;case 179:this.TST(this.PC+1,this.Get16(this.PC+2)+this.X&65535);break;case 20:this.TRB(this.ZP());break;case 28:this.TRB(this.ABS());break;case 4:this.TSB(this.ZP());break;case 12:this.TSB(this.ABS());break;case 169:this.A=this.Load(this.PC+1);break;case 165:this.A=this.Load(this.ZP());break;case 181:this.A=this.Load(this.ZP_X());break;case 178:this.A=this.Load(this.IND());break;case 161:this.A=this.Load(this.IND_X());break;case 177:this.A=this.Load(this.IND_Y());break;case 173:this.A=this.Load(this.ABS());break;case 189:this.A=this.Load(this.ABS_X());break;case 185:this.A=this.Load(this.ABS_Y());break;case 162:this.X=this.Load(this.PC+1);break;case 166:this.X=this.Load(this.ZP());break;case 182:this.X=this.Load(this.ZP_Y());break;case 174:this.X=this.Load(this.ABS());break;case 190:this.X=this.Load(this.ABS_Y());break;case 160:this.Y=this.Load(this.PC+1);break;case 164:this.Y=this.Load(this.ZP());break;case 180:this.Y=this.Load(this.ZP_X());break;case 172:this.Y=this.Load(this.ABS());break;case 188:this.Y=this.Load(this.ABS_X());break;case 133:this.Store(this.ZP(),this.A);break;case 149:this.Store(this.ZP_X(),this.A);break;case 146:this.Store(this.IND(),this.A);break;case 129:this.Store(this.IND_X(),this.A);break;case 145:this.Store(this.IND_Y(),this.A);break;case 141:this.Store(this.ABS(),this.A);break;case 157:this.Store(this.ABS_X(),this.A);break;case 153:this.Store(this.ABS_Y(),this.A);break;case 134:this.Store(this.ZP(),this.X);break;case 150:this.Store(this.ZP_Y(),this.X);break;case 142:this.Store(this.ABS(),this.X);break;case 132:this.Store(this.ZP(),this.Y);break;case 148:this.Store(this.ZP_X(),this.Y);break;case 140:this.Store(this.ABS(),this.Y);break;case 100:this.Store(this.ZP(),0);break;case 116:this.Store(this.ZP_X(),0);break;case 156:this.Store(this.ABS(),0);break;case 158:this.Store(this.ABS_X(),0);break;case 234:this.ClearTFlag();break;case 3:this.SetVDCRegister(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 19:this.SetVDCLow(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 35:this.SetVDCHigh(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 83:for(s=this.Get(this.PC+1),i=1,s==0?s=this.MPRSelect:this.MPRSelect=s,a=0;a<8;a++)(s&i<>>13);break;case 243:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+this.TransferAlt&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 195:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc-1&65535,this.TransferDist=this.TransferDist-1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 227:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+this.TransferAlt&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 115:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 211:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 212:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock7;break;case 84:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock1;break;default:this.ClearTFlag();break}this.PC+=this.OpBytes[h],this.ProgressClock=(this.ProgressClock+this.OpCycles[h])*this.CPUBaseClock}Adder(t,e){let s,i=this.Get(t);!e&&(this.P&this.TFlag)==this.TFlag?(this.ProgressClock=3,s=this.Get(8192|this.X)):s=this.A,e&&(i=~i&255);let a=this.P&1,h=s+i+a;(this.P&this.DFlag)==0?((~s&~i&h|s&i&~h)&128)==128?this.SetVFlag():this.ClearVFlag():(this.ProgressClock+=1,e?((h&15)>9&&(h-=6),(h&240)>144&&(h-=96)):((s&15)+(i&15)+a>9&&(h+=6),(h&496)>144&&(h+=96))),h>255?this.SetCFlag():this.ClearCFlag(),h&=255,this.SetNZFlag(h),!e&&(this.P&this.TFlag)==this.TFlag?this.Set(8192|this.X,h):this.A=h,this.ClearTFlag()}ADC(t){this.Adder(t,!1)}SBC(t){this.Adder(t,!0)}AND(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e&s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}EOR(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e^s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ORA(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e|s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ASL(t){return t<<=1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}LSR(t){return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t>>=1,this.SetNZFlag(t),this.ClearTFlag(),t}ROL(t){return t=t<<1|this.P&1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}ROR(t){let e=this.P&this.CFlag;return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t=t>>1|e<<7,this.SetNZFlag(t),this.ClearTFlag(),t}BBRi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==0,2)}BBSi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==1,2)}Branch(t,e){if(this.ClearTFlag(),t){let s=this.Get(this.PC+e);s>=128&&(s|=65280),this.PC=this.PC+e+1+s&65535,this.ProgressClock=2}else this.PC+=e+1}Compare(t,e){t-=this.Get(e),t<0?this.ClearCFlag():this.SetCFlag(),this.ClearTFlag(),this.SetNZFlag(t&255)}Decrement(t){return t=t-1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Increment(t){return t=t+1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Push(t){this.Set(8448|this.S,t),this.S=this.S-1&255}Pull(){return this.S=this.S+1&255,this.Get(8448|this.S)}RMBi(t){let e=this.ZP();this.Set(e,this.Get(e)&~(1<>8}PCL(){return this.PC&255}toPCH(t){this.PC=this.PC&255|t<<8}toPCL(t){this.PC=this.PC&65280|t}StorageConstruct(){this.MPR=new Array(8),this.MPRSelect=0,this.RAM=new Uint8Array(32768),this.RAMMask=8191,this.BRAM=new Uint8Array(8192).fill(0),this.BRAMUse=!1,this.INTIRQ2=0,this.IntDisableRegister=0,this.Mapper=null,this.Mapper0=class extends this.MapperBase{constructor(t,e){super(t,e);let s=this.ROM.length-1;for(this.Address=524288;this.Address>0&&(this.Address&s)==0;)this.Address>>>=1}Read(t){return t>=this.ROM.length?this.ROM[t&this.Address-1|this.Address]:this.ROM[t]}},this.Mapper1=class extends this.MapperBase{constructor(t,e){super(t,e),this.Address=0}Init(){this.Address=0}Read(t){return t<524288?this.ROM[t]:this.ROM[this.Address|t&524287]}Write(t,e){this.Address=(t&15)+1<<19}},this.Mapper2=class extends this.MapperBase{constructor(t,e){super(t,e),this.ROM=t}Read(t){return this.ROM[t]||0}Write(t,e){t>=524288&&(this.ROM[t]=e)}}}GetIntStatus(){return~this.IntDisableRegister&this.GetIntReqest()}GetIntDisable(){return this.IntDisableRegister}SetIntDisable(t){this.IntDisableRegister=t,this.TimerAcknowledge()}GetIntReqest(){return(((this.VDC[0].VDCStatus|this.VDC[1].VDCStatus)&63)!=0?this.IRQ1Flag:0)|this.INTIRQ2|this.INTTIQ}SetIntReqest(t){this.TimerAcknowledge()}SetROM(t){this.Init();let e=t.slice(t.length%8192);this.Mapper=new this.Mapper0(e,this),this.CPUReset()}StorageInit(){this.RAM.fill(0),this.RAMMask=this.SuperGrafx?32767:8191,this.StorageReset()}StorageReset(){this.IntDisableRegister=0;for(let t=0;t<7;t++)this.MPR[t]=2088960;this.MPR[7]=0,this.MPRSelect=1}Get16(t){return this.Get(t+1)<<8|this.Get(t)}Get(t){if(t=this.MPR[t>>13]|t&8191,t<1048576)return this.Mapper.Read(t);if(t<2023424)return 255;if(t<2031616)return this.BRAMUse?this.BRAM[t&8191]:255;if(t<2064384)return this.RAM[t&this.RAMMask];if(t<2088960)return 255;if(t<2089984)if(this.SuperGrafx){let e=t&31;if(e<8)switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}else{if(e<16)return this.GetVPC(e&7);if(e<24)switch(t&3){case 0:return this.GetVDCStatus(1);case 1:return 0;case 2:return this.GetVDCLow(1);case 3:return this.GetVDCHigh(1)}else return 255}}else switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}if(t<2091008)switch(t&7){case 4:return this.GetVCEDataLow();case 5:return this.GetVCEDataHigh();default:return 0}if(t<2092032)return this.GetPSG(t&15);if(t<2093056)return this.ReadTimerCounter();if(t<2094080)return this.GetJoystick();if(t<2095104)switch(t&3){case 2:return this.GetIntDisable();case 3:return this.GetIntReqest();default:return 0}return 255}Set(t,e){if(t=this.MPR[t>>13]|t&8191,t<1048576){this.Mapper.Write(t,e);return}if(!(t<2023424)){if(t<2031616){this.BRAMUse&&(this.BRAM[t&8191]=e);return}if(t<2064384){this.RAM[t&this.RAMMask]=e;return}if(!(t<2088960)){if(t<2089984){if(this.SuperGrafx){let s=t&31;if(s<8)switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}else if(s<16)this.SetVPC(s&7,e);else if(s<24)switch(t&3){case 0:this.SetVDCRegister(e,1);break;case 2:this.SetVDCLow(e,1);break;case 3:this.SetVDCHigh(e,1);break}}else switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 1:break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}return}if(t<2091008){switch(t&7){case 0:this.SetVCEControl(e);break;case 2:this.SetVCEAddressLow(e);break;case 3:this.SetVCEAddressHigh(e);break;case 4:this.SetVCEDataLow(e);break;case 5:this.SetVCEDataHigh(e);break}return}if(t<2092032){this.SetPSG(t&15,e);return}if(t<2093056){switch(t&1){case 0:this.WirteTimerReload(e);break;case 1:this.WirteTimerControl(e);break}return}if(t<2094080){this.SetJoystick(e);return}if(t<2095104){switch(t&3){case 2:this.SetIntDisable(e);break;case 3:this.SetIntReqest(e);break}return}}}}VCEConstruct(){this.Palette=new Array(512),this.PaletteData=new Array(512),this.MonoPaletteData=new Array(512),this.VCEBaseClock=0,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}VCEInit(){this.Palette.fill(0);for(let t=0;t<512;t++)this.PaletteData[t]={r:0,g:0,b:0},this.MonoPaletteData[t]={r:0,g:0,b:0};this.VCEBaseClock=this.BaseClock5,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}SetVCEControl(t){switch(this.VCEControl=t,t&3){case 0:this.VCEBaseClock=this.BaseClock5;break;case 1:this.VCEBaseClock=this.BaseClock7;break;case 2:case 3:this.VCEBaseClock=this.BaseClock10;break}}SetVCEAddressLow(t){this.VCEAddress=this.VCEAddress&65280|t}SetVCEAddressHigh(t){this.VCEAddress=(this.VCEAddress&255|t<<8)&511}GetVCEDataLow(){return this.Palette[this.VCEAddress]&255}GetVCEDataHigh(){let t=(this.Palette[this.VCEAddress]&65280)>>8;return this.VCEAddress=this.VCEAddress+1&511,t}SetVCEDataLow(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&65280|t,this.ToPalettes()}SetVCEDataHigh(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&255|t<<8,this.ToPalettes(),this.VCEAddress=this.VCEAddress+1&511}ToPalettes(){let t=this.Palette[this.VCEAddress],e=this.PaletteData[this.VCEAddress];e.r=(t>>3&7)*36,e.g=(t>>6&7)*36,e.b=(t&7)*36;let s=e.r*.299+e.g*.587+e.b*.114;this.MonoPaletteData[this.VCEAddress].r=s,this.MonoPaletteData[this.VCEAddress].g=s,this.MonoPaletteData[this.VCEAddress].b=s}VPCConstruct(){this.VPCRegister=new Uint8Array(8),this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority=new Uint8Array(4)}VPCInit(){this.VPCRegister.fill(0),this.VPCRegister[0]=17,this.VPCRegister[1]=17,this.VPCRegister[7]=255,this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority.fill(1)}SetVPC(t,e){t!=7&&(this.VPCRegister[t]=e,t==6&&(this.VDCSelect=e&1),(t==2||t==3)&&(this.VPCWindow1=(this.VPCRegister[2]|(this.VPCRegister[3]&3)<<8)-64,this.VPCWindow1<0&&(this.VPCWindow1=1024)),(t==4||t==5)&&(this.VPCWindow2=(this.VPCRegister[4]|(this.VPCRegister[5]&3)<<8)-64,this.VPCWindow2<0&&(this.VPCWindow2=-1)),t==0&&(this.VPCPriority[2]=this.VPCRegister[0]>>4,this.VPCPriority[3]=this.VPCRegister[0]&15),t==1&&(this.VPCPriority[0]=this.VPCRegister[1]>>4,this.VPCPriority[1]=this.VPCRegister[1]&15))}GetVPC(t){return this.VPCRegister[t]}VDCConstruct(){this.DrawFlag=!1,this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.VDC=new Array(2),this.VDCLineClock=1368,this.ScreenSize=[],this.ScreenSize[this.BaseClock5]=342,this.ScreenSize[this.BaseClock7]=456,this.ScreenSize[this.BaseClock10]=684,this.PutScreenSize=[],this.PutScreenSize[this.BaseClock5]=320,this.PutScreenSize[this.BaseClock7]=428,this.PutScreenSize[this.BaseClock10]=640,this.ScreenHeightMAX=262,this.ScreenWidthMAX=684,this.VScreenWidthArray=[],this.VScreenWidthArray[0]=32,this.VScreenWidthArray[16]=64,this.VScreenWidthArray[32]=128,this.VScreenWidthArray[48]=128,this.ReverseBit=new Uint8Array(256),this.ReverseBit=this.ReverseBit.map((t,e)=>(e&128)>>7|(e&64)>>5|(e&32)>>3|(e&16)>>1|(e&8)<<1|(e&4)<<3|(e&2)<<5|(e&1)<<7),this.ReverseBit16=new Uint16Array(65536).fill(0),this.ReverseBit16=this.ReverseBit16.map((t,e)=>this.ReverseBit[e&255]<<8|this.ReverseBit[(e&65280)>>8]),this.ReverseBit256=new Uint32Array(256).fill(0),this.ReverseBit256=this.ReverseBit256.map((t,e)=>{let s=this.ReverseBit[e];return(s&128)<<21|(s&64)<<18|(s&32)<<15|(s&16)<<12|(s&8)<<9|(s&4)<<6|(s&2)<<3|(s&1)<<0}),this.SPAddressMask=[],this.SPAddressMask[16]=[],this.SPAddressMask[32]=[],this.SPAddressMask[16][16]=2046,this.SPAddressMask[16][32]=2042,this.SPAddressMask[16][64]=2034,this.SPAddressMask[32][16]=2044,this.SPAddressMask[32][32]=2040,this.SPAddressMask[32][64]=2032}MakeSpriteLine(t){let e=this.VDC[t],s=e.SPLine;for(let c=0;c>8)+16;if(l=l>32?64:l,aP+l-1)continue;let x=(r[S+1]&1023)-32,C=((F&256)>>4)+16;if(x+C<=0)continue;let A=a-P;(F&32768)==32768&&(A=l-1-A);let o=(r[S+2]&this.SPAddressMask[C][l])<<5|((A&48)<<3|A&15),k,b,g,D;(F&2048)==0?(k=n[h[o]],b=n[h[o+16]],g=n[h[o+32]],D=n[h[o+48]],C==32&&(k|=n[h[o|64]]<<16,b|=n[h[(o|64)+16]]<<16,g|=n[h[(o|64)+32]]<<16,D|=n[h[(o|64)+48]]<<16)):(k=h[o],b=h[o+16],g=h[o+32],D=h[o+48],C==32&&(k=k<<16|h[o|64],b=b<<16|h[(o|64)+16],g=g<<16|h[(o|64)+32],D=D<<16|h[(o|64)+48]));let d=(F&15)<<4|256,M=F&128,B=0;for(x<0&&(B-=x,x=0);B>>B&1|b>>>B<<1&2|g>>>B<<2&4|D>>>B<<3&8;T!=0&&(f.data=T,f.palette=d,f.priority=M)}if(f.no==255&&(f.no=c),c!=0&&f.no==0&&(e.VDCStatus|=e.VDCRegister[5]&1),++i==256&&(e.VDCStatus|=e.VDCRegister[5]&2,e.SpriteLimit))return}}}MakeBGLine(t){let e=this.VDC[t],s=e.SPLine,i=e.BGLine,a=e.ScreenWidth,h=(e.HDS+e.HSW<<3)+e.DrawBGIndex;if((e.VDCRegister[5]&128)==128){let r=e.VScreenWidth-1,n=e.VDCRegister[7],c=n>>3&r;n=(n&7)<<2;let S=e.DrawBGLine,P=(S>>3&e.VScreenHeight-1)*e.VScreenWidth;S=S&7;let F=e.VRAM,l=0,x=this.ReverseBit256;for(;l>8,k=F[A],b=F[A+8],g=x[k&255]|x[(k&65280)>>8]<<1|x[b&255]<<2|x[(b&65280)>>8]<<3;for(;n<32&&l>>n&15,d=s[l];i[l+h]=d.data!=0&&(D==0||d.priority==128)?d.data|d.palette:D|(D==0?0:o)}n=0,c=c+1&r}}else for(let r=0;r0&&(e.VRAMtoSATBCount-=this.ProgressClock,e.VRAMtoSATBCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&1)<<3)),e.VRAMtoVRAMCount>0&&(e.VRAMtoVRAMCount-=this.ProgressClock,e.VRAMtoVRAMCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&2)<<3))}VDCProcess(t){let e=this.VDC[t];e.VDCProgressClock-=this.VDCLineClock,e.DrawBGIndex=0,e.BGLine.fill(256);for(let s=0;s261&&(i-=261),e.DrawBGYLine==i&&(e.VDCStatus|=(e.VDCRegister[5]&8)<<2,e.VRAMtoSATBStartFlag)){for(let a=0,h=e.VDCRegister[19];a<256;a++,h++)e.SATB[a]=e.VRAM[h];e.VRAMtoSATBCount=256*this.VCEBaseClock,e.VDCStatus|=64,e.VRAMtoSATBStartFlag=(e.VDCRegister[15]&16)==16}e.RasterCount++,e.DrawBGYLine==e.VDS+e.VSW-1&&(e.RasterCount=64),e.RasterCount==e.VDCRegister[6]&&(e.VDCStatus&32)==0&&(e.VDCStatus|=e.VDCRegister[5]&4),e.DrawBGIndex+=e.DrawLineWidth}}VDCRun(){for(this.VDCProcessDMA(0),this.VDC[0].VDCProgressClock+=this.ProgressClock,this.SuperGrafx&&(this.VDCProcessDMA(1),this.VDC[1].VDCProgressClock+=this.ProgressClock);this.VDC[0].VDCProgressClock>=this.VDCLineClock;)this.VDCProcess(0),this.SuperGrafx&&this.VDCProcess(1);if(this.VDCPutLineProgressClock+=this.ProgressClock,this.VDCPutLineProgressClock>=this.VDCLineClock){this.VDCPutLineProgressClock-=this.VDCLineClock,this.VDCPutLine++,this.VDCPutLine==this.ScreenHeightMAX&&(this.VDCPutLine=0,this.GetScreenSize(0),this.VDC[0].DrawBGYLine=0,this.SuperGrafx&&(this.GetScreenSize(1),this.VDC[1].DrawBGYLine=0),this.DrawFlag=!0,this.Ctx.putImageData(this.ImageData,0,0));let t=(this.VCEControl&128)==0?this.PaletteData:this.MonoPaletteData,e=this.ImageData.data,s=this.VDCPutLine*this.ScreenWidthMAX*4,i=t[256],a=this.ScreenSize[this.VCEBaseClock],h=this.VDC[0].BGLine;if(this.SuperGrafx){let r=this.VPCWindow1,n=this.VPCWindow2,c=this.VPCPriority,S=this.VDC[1].BGLine;for(let P=0;P=r&&(F|=1),P<=n&&(F|=2);let l=h[P],x=S[P],C;switch(c[F]){case 7:l>256||x>256?C=t[l>256?l:x]:C=t[(l&255)!=0?l:x];break;case 11:l<256&&l!=0?C=t[l]:C=t[(x&255)!=0?x:l];break;case 3:case 15:C=t[(l&255)!=0?l:x];break;case 1:case 5:case 9:case 13:C=t[l];break;case 2:case 6:case 10:case 14:C=t[x];break;default:C=i;break}e[s]=C.r,e[s+1]=C.g,e[s+2]=C.b}}else for(let r=0;rthis.ScreenWidthMAX&&(e.ScreenWidth=this.ScreenWidthMAX),e.HDS=(s[10]&32512)>>8,e.HSW=s[10]&31,e.HDE=(s[11]&32512)>>8,e.HDW=s[11]&127,e.VDS=(s[12]&65280)>>8,e.VSW=s[12]&31,e.VDW=s[13]&511,e.VCR=s[14]&255,e.ScreenSize=this.ScreenSize[this.VCEBaseClock],this.MainCanvas.width!=e.ScreenSize&&(this.MainCanvas.width=this.PutScreenSize[this.VCEBaseClock]),e.DrawLineWidth=e.HDS+e.HSW+e.HDE+e.HDW+1<<3,e.DrawLineWidth<=this.ScreenSize[this.BaseClock5]?e.DrawLineWidth=this.ScreenSize[this.BaseClock5]:e.DrawLineWidth<=this.ScreenSize[this.BaseClock7]?e.DrawLineWidth=this.ScreenSize[this.BaseClock7]:e.DrawLineWidth=this.ScreenSize[this.BaseClock10],e.VDCBurst=(s[5]&192)==0}VDCInit(){this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.DrawFlag=!1;for(let t=0;t<2;t++){this.VDC[t]={VDCRegister:new Uint16Array(20).fill(0),VRAM:new Uint16Array(65536).fill(0),SATB:new Uint16Array(256).fill(0),VDCBurst:!1,SpriteLimit:!1,SPLine:new Array(this.ScreenWidthMAX),BGLine:new Array(this.ScreenWidthMAX).fill(0),VDCStatus:0,VDCRegisterSelect:0,WriteVRAMData:0,VRAMtoSATBStartFlag:!1,VRAMtoSATBCount:0,VRAMtoVRAMCount:0,RasterCount:64,VDCProgressClock:0,DrawBGYLine:0,DrawBGLine:0,VScreenWidth:0,VScreenHeight:0,VScreenHeightMask:0,ScreenWidth:0,ScreenSize:0,DrawLineWidth:0,DrawBGIndex:0,HDS:0,HSW:0,HDE:0,HDW:0,VDS:0,VSW:0,VDW:0,VCR:0};for(let e=0;e0;n--)c[r]=c[h],h=h+i&65535,r=r+a&65535;return}s.VDCRegisterSelect==19&&(s.VRAMtoSATBStartFlag=!0)}GetVRAMIncrement(t){switch(this.VDC[t].VDCRegister[5]&6144){case 0:return 1;case 2048:return 32;case 4096:return 64;case 6144:return 128}}GetVDCStatus(t){let e=this.VDC[t].VDCStatus;return this.VDC[t].VDCStatus&=64,e}GetVDCLow(t){return this.VDC[t].VDCRegister[this.VDC[t].VDCRegisterSelect]&255}GetVDCHigh(t){let e=this.VDC[t];if(e.VDCRegisterSelect==2||e.VDCRegisterSelect==3){let s=(e.VDCRegister[2]&65280)>>8;return e.VDCRegister[2]=e.VRAM[e.VDCRegister[1]],e.VDCRegister[3]=e.VDCRegister[2],e.VDCRegister[1]=e.VDCRegister[1]+this.GetVRAMIncrement(t)&65535,s}return(e.VDCRegister[e.VDCRegisterSelect]&65280)>>8}SoundConstruct(){this.WaveDataArray=[],this.WaveClockCounter=0,this.WaveVolume=1,this.WebAudioCtx=null,this.WebAudioJsNode=null,this.WebAudioGainNode=null,this.WebAudioBufferSize=2048,this.PSGClock=3579545}WebAudioFunction(t){let e=[],s=[];for(let i=0;i<2;i++){if(e[i]=t.outputBuffer.getChannelData(i),s[i]=new Float32Array(this.WebAudioBufferSize),this.WaveDataArray[i].lengththis.WebAudioBufferSize*2&&(this.WaveDataArray[i]=this.WaveDataArray[i].slice(this.WebAudioBufferSize))}e[i].set(s[i])}}SoundInit(){this.WaveClockCounter=0,this.WaveDataArray=[],this.WaveDataArray[0]=[],this.WaveDataArray[1]=[],typeof AudioContext!="undefined"&&this.WebAudioCtx==null&&this.CreateAudioContext()}CreateAudioContext(){this.WebAudioCtx==null&&(this.WebAudioCtx=new window.AudioContext,this.WebAudioJsNode=this.WebAudioCtx.createScriptProcessor(this.WebAudioBufferSize,0,2),this.WebAudioJsNode.onaudioprocess=this.WebAudioFunction.bind(this),this.WebAudioGainNode=this.WebAudioCtx.createGain(),this.WebAudioJsNode.connect(this.WebAudioGainNode),this.WebAudioGainNode.connect(this.WebAudioCtx.destination)),p(this.WebAudioCtx)}SoundSet(){let t,e,s,i,a,h;if(this.WaveClockCounter+=this.WebAudioCtx.sampleRate,this.WaveClockCounter>=this.PSGClock){for(this.WaveClockCounter-=this.PSGClock,t=0,e=0,a=0;a<6;a++)(a!=1||!this.WaveLfoOn)&&(s=this.PSGChannel[a],a<4||!s.noiseon?h=s.keyon?s.dda?s.R[6]&31:s.wave[s.index]:0:h=(s.noise&1)==1?15:0,t+=h*s.leftvol,e+=h*s.rightvol);this.WaveDataArray[0].push(t*this.WaveVolumeLeft),this.WaveDataArray[1].push(e*this.WaveVolumeRight),this.WebAudioGainNode.gain.value=this.WaveVolume}}PSGConstruct(){this.PSGChannel=new Array(6),this.PSGBaseClock=this.BaseClock3,this.PSGProgressClock=0,this.WaveVolumeLeft=0,this.WaveVolumeRight=0,this.WaveLfoOn=!1,this.WaveLfoControl=0,this.WaveLfoFreqency=0}PSGInit(){this.SoundInit();for(let t=0;t0;){for(e--,s=0,this.WaveLfoOn&&(i=this.PSGChannel[0],a=this.PSGChannel[1],i.keyon&&(i.count==0?(i.index=i.index+1&31,h=0,this.WaveLfoControl!=0&&(h=a.wave[a.index],h=h>15?h-32:h&15,h<<=4*(this.WaveLfoControl-1)),h=i.freq+h,h<0&&(h=0),i.count=h):i.count--,a.count==0?(a.index=a.index+1&31,a.count=a.freq*this.WaveLfoFreqency):a.count--),s=2);s<6;s++)t=this.PSGChannel[s],s<4||!t.noiseon?t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.count=t.freq):t.count--):t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.index==0&&(t.noise=t.noise>>1|(t.noise<<12^t.noise<<15)&32768),t.count=t.noisefreq):t.count--);this.SoundSet()}}SetPSG(t,e){if(t==0){this.PSGChannel[0].R[0]=e&7;return}if(this.PSGChannel[0].R[0]>5)return;let s=this.PSGChannel[this.PSGChannel[0].R[0]];switch(s.R[t]=e,t){case 1:this.PSGChannel[0].R[1]=e,this.WaveVolumeLeft=(e&240)>>4,this.WaveVolumeRight=e&15;return;case 2:case 3:s.freq=(s.R[3]<<8|s.R[2])&4095;return;case 4:s.keyon=(e&128)==128,s.dda=(e&64)==64,(e&64)==64&&(s.index=0),s.vol=e&31;case 5:let i=s.R[4]&31;s.leftvol=((s.R[5]&240)>>4)*i,s.rightvol=(s.R[5]&15)*i;return;case 6:s.dda||(s.wave[s.index]=e&31,s.index=s.index+1&31);return;case 7:s.noiseon=(e&128)==128,s.noisefreq=e&31^31;return;case 8:this.PSGChannel[0].R[8]=e,this.WaveLfoFreqency=e;return;case 9:this.PSGChannel[0].R[9]=e,this.WaveLfoOn=(e&128)==128,this.WaveLfoControl=e&3;return}}GetPSG(t){return t>9?255:t==0||t==1||t==8||t==9?this.PSGChannel[0].R[t]:this.PSGChannel[0].R[0]>5?255:this.PSGChannel[this.PSGChannel[0].R[0]].R[t]}TimerConstruct(){this.TimerBaseClock=this.BaseClock7,this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}TimerInit(){this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}ReadTimerCounter(){return this.TimerCounter}TimerAcknowledge(){this.INTTIQ=0}WirteTimerReload(t){this.TimerReload=t&127}WirteTimerControl(t){!this.TimerFlag&&(t&1)==1&&(this.TimerCounter=this.TimerReload,this.TimerPrescaler=0),this.TimerFlag=(t&1)==1}TimerRun(){if(this.TimerFlag)for(this.TimerPrescaler+=this.ProgressClock;this.TimerPrescaler>=1024*this.TimerBaseClock;)this.TimerPrescaler-=1024*this.TimerBaseClock,this.TimerCounter--,this.TimerCounter<0&&(this.TimerCounter=this.TimerReload,this.INTTIQ=this.TIQFlag)}JoystickConstruct(){this.JoystickSEL=0,this.JoystickCLR=0,this.KeyUpFunction=null,this.KeyDownFunction=null,this.Keybord=new Array(5).fill([]),this.Keybord=this.Keybord.map(t=>new Array(4)),this.GamePad=new Array(5).fill([]),this.GamePad=this.Keybord.map(t=>new Array(4)),this.GamePadSelect=0,this.GamePadButtonSelect=0,this.GamePadBuffer=0,this.GamePadData=[],this.GamePadData["STANDARD PAD"]=[[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:2}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}]],[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:2}],[{type:"B",index:3}]]],this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"]=[[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:0}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}]],[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:0}],[{type:"B",index:3}]]],this.GamePadData["0f0d-0009-HORI PAD 3 TURBO"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadData["UNKNOWN PAD"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadKeyData=[{index:0,data:1},{index:0,data:2},{index:0,data:4},{index:0,data:8},{index:1,data:1},{index:1,data:4},{index:1,data:8},{index:1,data:2},{index:2,data:1},{index:2,data:2},{index:2,data:4},{index:2,data:8}],this.GamePadPovData=[1,3,2,6,4,12,8,9]}JoystickInit(){this.JoystickSEL=0,this.JoystickCLR=0;for(let t=0;t>1;if(this.JoystickSEL==1&&this.JoystickCLR==0&&e==1&&s==1){this.JoystickSEL=0,this.JoystickCLR=0,this.GamePadSelect=0,this.GamePadButton6&&(this.GamePadButtonSelect=this.GamePadButtonSelect^2),this.GamePadBuffer=176|this.CountryType;return}this.JoystickSEL==0&&this.JoystickCLR==0&&e==1&&s==0&&this.GamePadSelect++,this.JoystickSEL=e,this.JoystickCLR=s;let i=this.MultiTap?this.GamePadSelect-1:0;if(i<5){let a=this.GamePadButtonSelect|this.JoystickSEL;this.GamePadBuffer=this.Keybord[i][a]&this.GamePad[i][a]|this.CountryType}else this.GamePadBuffer=176|this.CountryType}GetJoystick(){return this.GamePadBuffer}UnsetButtonRUN(t){this.Keybord[t][0]|=8}UnsetButtonSELECT(t){this.Keybord[t][0]|=4}UnsetButtonSHOT2(t){this.Keybord[t][0]|=2}UnsetButtonSHOT1(t){this.Keybord[t][0]|=1}UnsetButtonLEFT(t){this.Keybord[t][1]|=8}UnsetButtonDOWN(t){this.Keybord[t][1]|=4}UnsetButtonRIGHT(t){this.Keybord[t][1]|=2}UnsetButtonUP(t){this.Keybord[t][1]|=1}UnsetButtonSHOT6(t){this.Keybord[t][2]|=8}UnsetButtonSHOT5(t){this.Keybord[t][2]|=4}UnsetButtonSHOT4(t){this.Keybord[t][2]|=2}UnsetButtonSHOT3(t){this.Keybord[t][2]|=1}SetButtonRUN(t){this.Keybord[t][0]&=-9}SetButtonSELECT(t){this.Keybord[t][0]&=-5}SetButtonSHOT2(t){this.Keybord[t][0]&=-3}SetButtonSHOT1(t){this.Keybord[t][0]&=-2}SetButtonLEFT(t){this.Keybord[t][1]&=-9}SetButtonDOWN(t){this.Keybord[t][1]&=-5}SetButtonRIGHT(t){this.Keybord[t][1]&=-3}SetButtonUP(t){this.Keybord[t][1]&=-2}SetButtonSHOT6(t){this.Keybord[t][2]&=-9}SetButtonSHOT5(t){this.Keybord[t][2]&=-5}SetButtonSHOT4(t){this.Keybord[t][2]&=-3}SetButtonSHOT3(t){this.Keybord[t][2]&=-2}CheckKeyUpFunction(t){switch(t.keyCode){case u.START.c:this.UnsetButtonRUN(0);break;case u.SELECT.c:this.UnsetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.UnsetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.UnsetButtonSHOT1(0);break;case 86:this.UnsetButtonSHOT2(0);break;case 66:this.UnsetButtonSHOT1(0);break;case 37:this.UnsetButtonLEFT(0);break;case 39:this.UnsetButtonRIGHT(0);break;case 40:this.UnsetButtonDOWN(0);break;case 38:this.UnsetButtonUP(0);break;case 71:this.UnsetButtonSHOT6(0);break;case 70:this.UnsetButtonSHOT5(0);break;case 68:this.UnsetButtonSHOT4(0);break;case 67:this.UnsetButtonSHOT3(0);break}}CheckKeyDownFunction(t){switch(t.keyCode){case u.START.c:this.SetButtonRUN(0);break;case u.SELECT.c:this.SetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.SetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.SetButtonSHOT1(0);break;case 86:this.SetButtonSHOT2(0);break;case 66:this.SetButtonSHOT1(0);break;case 37:this.SetButtonLEFT(0);break;case 39:this.SetButtonRIGHT(0);break;case 40:this.SetButtonDOWN(0);break;case 38:this.SetButtonUP(0);break;case 71:this.SetButtonSHOT6(0);break;case 70:this.SetButtonSHOT5(0);break;case 68:this.SetButtonSHOT4(0);break;case 67:this.SetButtonSHOT3(0);break}}JoystickEventInit(){this.KeyUpFunction=this.CheckKeyUpFunction.bind(this),this.KeyDownFunction=this.CheckKeyDownFunction.bind(this),this.MainCanvas.addEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.addEventListener("keydown",this.KeyDownFunction,!0)}JoystickEventRelease(){this.MainCanvas.removeEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.removeEventListener("keydown",this.KeyDownFunction,!0)}CheckGamePad(){for(let e=0;e.5&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"AB":s.axes[r.index]>-.75&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"P":let n=(s.axes[r.index]+1)*7/2+.5|0;this.GamePad[e][1]&=~(n<=7?this.GamePadPovData[n]:0);break}a++}}}}}; -//# sourceMappingURL=pce-7DNGDGLS.js.map +import{l as p}from"./chunk-4YTESWOC.js";import{a as y}from"./chunk-UXRCACYH.js";import{P as m,V as G,ba as u}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var I=[{id:"gfxtest.c",name:"Graphics Test (tiles/sprites)"},{id:"perftest.c",name:"Graphics Pipeline Benchmark"},{id:"solarian.c",name:"Solarian"},{id:"chase.c",name:"Chase"},{id:"test_conio.c",name:"Hello World (conio)"},{id:"siegegame.c",name:"Siege Game (conio)"},{id:"hello.wiz",name:"Hello World (Wiz)"}],V=class{constructor(t){this.mainElement=t}start(){this.pce=new R,this.video=new G(this.mainElement,684,262,{overscan:!0,aspect:4/3}),this.video.create(),this.pce.SetCanvas(this.video.canvas)}reset(){this.pce.Reset()}isRunning(){return this.pce.TimerID!=null}pause(){this.pce.Pause()}resume(){this.pce.CreateAudioContext(),this.pce.Start()}getPresets(){return I}loadROM(t,e){this.pce.Pause(),this.pce.Init(),this.pce.SetROM(e)}advance(t){return this.pce.Run(),1}getPlatformName(){return"PC Engine"}getToolForFilename(t){return y(t)}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}showHelp(){return"https://8bitworkshop.com/docs/platforms/pce/"}readAddress(t){return this.pce.Get(t)}writeAddress(t,e){this.pce.Set(t,e)}readVRAMAddress(t){return this.pce.VDC[0].VRAM[t]}};m.pce=V;var R=class{constructor(){this.MainCanvas=null;this.Ctx=null;this.ImageData=null;this.MapperBase=class{constructor(t,e){this.ROM=t,this.Core=e}Init(){}Read(t){return 255}Write(t,e){}};this.VDCSelect=0;this.ScreenWidthMAX=0;this.ScreenHeightMAX=0;this.SuperGrafx=!1,this.CountryTypePCE=64,this.CountryTypeTG16=0,this.CountryType=this.CountryTypePCE,this.GamePadButton6=!1,this.MultiTap=!1,this.EtcConstruct(),this.CPUConstruct(),this.StorageConstruct(),this.VCEConstruct(),this.VPCConstruct(),this.VDCConstruct(),this.SoundConstruct(),this.PSGConstruct(),this.TimerConstruct(),this.JoystickConstruct()}EtcConstruct(){this.TimerID=null,this.MainCanvas=null,this.Ctx=null,this.ImageData=null}UpdateAnimationFrame(){this.TimerID=window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this)),this.Run()}CancelAnimationFrame(){window.cancelAnimationFrame(this.TimerID),this.TimerID=null}Pause(){this.TimerID!=null&&(this.JoystickEventRelease(),this.CancelAnimationFrame())}Start(){this.TimerID==null&&(this.JoystickEventInit(),this.UpdateAnimationFrame())}Run(){for(this.CheckGamePad(),this.DrawFlag=!1;!this.DrawFlag;)this.CPURun(),this.VDCRun(),this.TimerRun(),this.PSGRun()}Reset(){this.StorageReset(),this.Mapper.Init(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit(),this.CPUReset()}Init(){this.StorageInit(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit()}SetCanvas(t){if(this.MainCanvas=t,!this.MainCanvas.getContext)return!1;this.Ctx=this.MainCanvas.getContext("2d"),this.ImageData=this.Ctx.createImageData(this.MainCanvas.width,this.MainCanvas.height);for(let e=0;ee&128),this.NZCacheTable[0]=2,this.NFlag=128,this.VFlag=64,this.TFlag=32,this.BFlag=16,this.DFlag=8,this.IFlag=4,this.ZFlag=2,this.CFlag=1,this.TIQFlag=4,this.IRQ1Flag=2,this.IRQ2Flag=1,this.ProgressClock=0,this.CPUBaseClock=0,this.BaseClock1=12,this.BaseClock3=6,this.BaseClock5=4,this.BaseClock7=3,this.BaseClock10=2,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0}CPUReset(){this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.CPUBaseClock=this.BaseClock1,this.SetIFlag(),this.PC=this.Get16(65534)}CPUInit(){this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.ProgressClock=0,this.CPUBaseClock=this.BaseClock1,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.LastInt=0}CPURun(){this.ProgressClock=0;let t=this.LastInt;this.LastInt=(this.P&this.IFlag)==0?this.GetIntStatus():0,t!=0&&this.TransferLen==0?(this.LastInt=0,(t&this.TIQFlag)==this.TIQFlag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65530)):(t&this.IRQ1Flag)==this.IRQ1Flag?(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.P=4,this.PC=this.Get16(65528)):(t&this.IRQ2Flag)==this.IRQ2Flag&&(this.Push(this.PCH()),this.Push(this.PCL()),this.Push(this.P),this.SetIFlag(),this.PC=this.Get16(65526)),this.ProgressClock=8*this.CPUBaseClock):this.OpExec()}OpExec(){let t,e,s,i,a,h=this.Get(this.PC);switch(h){case 105:this.ADC(this.PC+1);break;case 101:this.ADC(this.ZP());break;case 117:this.ADC(this.ZP_X());break;case 114:this.ADC(this.IND());break;case 97:this.ADC(this.IND_X());break;case 113:this.ADC(this.IND_Y());break;case 109:this.ADC(this.ABS());break;case 125:this.ADC(this.ABS_X());break;case 121:this.ADC(this.ABS_Y());break;case 233:this.SBC(this.PC+1);break;case 229:this.SBC(this.ZP());break;case 245:this.SBC(this.ZP_X());break;case 242:this.SBC(this.IND());break;case 225:this.SBC(this.IND_X());break;case 241:this.SBC(this.IND_Y());break;case 237:this.SBC(this.ABS());break;case 253:this.SBC(this.ABS_X());break;case 249:this.SBC(this.ABS_Y());break;case 41:this.AND(this.PC+1);break;case 37:this.AND(this.ZP());break;case 53:this.AND(this.ZP_X());break;case 50:this.AND(this.IND());break;case 33:this.AND(this.IND_X());break;case 49:this.AND(this.IND_Y());break;case 45:this.AND(this.ABS());break;case 61:this.AND(this.ABS_X());break;case 57:this.AND(this.ABS_Y());break;case 73:this.EOR(this.PC+1);break;case 69:this.EOR(this.ZP());break;case 85:this.EOR(this.ZP_X());break;case 82:this.EOR(this.IND());break;case 65:this.EOR(this.IND_X());break;case 81:this.EOR(this.IND_Y());break;case 77:this.EOR(this.ABS());break;case 93:this.EOR(this.ABS_X());break;case 89:this.EOR(this.ABS_Y());break;case 9:this.ORA(this.PC+1);break;case 5:this.ORA(this.ZP());break;case 21:this.ORA(this.ZP_X());break;case 18:this.ORA(this.IND());break;case 1:this.ORA(this.IND_X());break;case 17:this.ORA(this.IND_Y());break;case 13:this.ORA(this.ABS());break;case 29:this.ORA(this.ABS_X());break;case 25:this.ORA(this.ABS_Y());break;case 6:t=this.ZP(),this.Set(t,this.ASL(this.Get(t)));break;case 22:t=this.ZP_X(),this.Set(t,this.ASL(this.Get(t)));break;case 14:t=this.ABS(),this.Set(t,this.ASL(this.Get(t)));break;case 30:t=this.ABS_X(),this.Set(t,this.ASL(this.Get(t)));break;case 10:this.A=this.ASL(this.A);break;case 70:t=this.ZP(),this.Set(t,this.LSR(this.Get(t)));break;case 86:t=this.ZP_X(),this.Set(t,this.LSR(this.Get(t)));break;case 78:t=this.ABS(),this.Set(t,this.LSR(this.Get(t)));break;case 94:t=this.ABS_X(),this.Set(t,this.LSR(this.Get(t)));break;case 74:this.A=this.LSR(this.A);break;case 38:t=this.ZP(),this.Set(t,this.ROL(this.Get(t)));break;case 54:t=this.ZP_X(),this.Set(t,this.ROL(this.Get(t)));break;case 46:t=this.ABS(),this.Set(t,this.ROL(this.Get(t)));break;case 62:t=this.ABS_X(),this.Set(t,this.ROL(this.Get(t)));break;case 42:this.A=this.ROL(this.A);break;case 102:t=this.ZP(),this.Set(t,this.ROR(this.Get(t)));break;case 118:t=this.ZP_X(),this.Set(t,this.ROR(this.Get(t)));break;case 110:t=this.ABS(),this.Set(t,this.ROR(this.Get(t)));break;case 126:t=this.ABS_X(),this.Set(t,this.ROR(this.Get(t)));break;case 106:this.A=this.ROR(this.A);break;case 15:this.BBRi(0);break;case 31:this.BBRi(1);break;case 47:this.BBRi(2);break;case 63:this.BBRi(3);break;case 79:this.BBRi(4);break;case 95:this.BBRi(5);break;case 111:this.BBRi(6);break;case 127:this.BBRi(7);break;case 143:this.BBSi(0);break;case 159:this.BBSi(1);break;case 175:this.BBSi(2);break;case 191:this.BBSi(3);break;case 207:this.BBSi(4);break;case 223:this.BBSi(5);break;case 239:this.BBSi(6);break;case 255:this.BBSi(7);break;case 144:this.Branch((this.P&this.CFlag)==0,1);break;case 176:this.Branch((this.P&this.CFlag)==this.CFlag,1);break;case 208:this.Branch((this.P&this.ZFlag)==0,1);break;case 240:this.Branch((this.P&this.ZFlag)==this.ZFlag,1);break;case 16:this.Branch((this.P&this.NFlag)==0,1);break;case 48:this.Branch((this.P&this.NFlag)==this.NFlag,1);break;case 80:this.Branch((this.P&this.VFlag)==0,1);break;case 112:this.Branch((this.P&this.VFlag)==this.VFlag,1);break;case 128:this.Branch(!0,1);break;case 68:this.PC++,this.Push(this.PCH()),this.Push(this.PCL()),this.Branch(!0,0);break;case 32:e=this.ABS(),this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.PC=e,this.ClearTFlag();break;case 64:this.P=this.Pull(),this.toPCL(this.Pull()),this.toPCH(this.Pull());break;case 96:this.ClearTFlag(),this.toPCL(this.Pull()),this.toPCH(this.Pull()),this.PC++;break;case 76:this.PC=this.ABS(),this.ClearTFlag();break;case 108:this.PC=this.ABS_IND(),this.ClearTFlag();break;case 124:this.PC=this.ABS_X_IND(),this.ClearTFlag();break;case 0:this.PC+=2,this.Push(this.PCH()),this.Push(this.PCL()),this.SetBFlag(),this.Push(this.P),this.ClearDFlag(),this.ClearTFlag(),this.SetIFlag(),this.PC=this.Get16(65526);break;case 98:this.A=0,this.ClearTFlag();break;case 130:this.X=0,this.ClearTFlag();break;case 194:this.Y=0,this.ClearTFlag();break;case 24:this.ClearCFlag(),this.ClearTFlag();break;case 216:this.ClearDFlag(),this.ClearTFlag();break;case 88:this.ClearIFlag(),this.ClearTFlag();break;case 184:this.ClearVFlag(),this.ClearTFlag();break;case 56:this.SetCFlag(),this.ClearTFlag();break;case 248:this.SetDFlag(),this.ClearTFlag();break;case 120:this.SetIFlag(),this.ClearTFlag();break;case 244:this.SetTFlag();break;case 201:this.Compare(this.A,this.PC+1);break;case 197:this.Compare(this.A,this.ZP());break;case 213:this.Compare(this.A,this.ZP_X());break;case 210:this.Compare(this.A,this.IND());break;case 193:this.Compare(this.A,this.IND_X());break;case 209:this.Compare(this.A,this.IND_Y());break;case 205:this.Compare(this.A,this.ABS());break;case 221:this.Compare(this.A,this.ABS_X());break;case 217:this.Compare(this.A,this.ABS_Y());break;case 224:this.Compare(this.X,this.PC+1);break;case 228:this.Compare(this.X,this.ZP());break;case 236:this.Compare(this.X,this.ABS());break;case 192:this.Compare(this.Y,this.PC+1);break;case 196:this.Compare(this.Y,this.ZP());break;case 204:this.Compare(this.Y,this.ABS());break;case 198:t=this.ZP(),this.Set(t,this.Decrement(this.Get(t)));break;case 214:t=this.ZP_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 206:t=this.ABS(),this.Set(t,this.Decrement(this.Get(t)));break;case 222:t=this.ABS_X(),this.Set(t,this.Decrement(this.Get(t)));break;case 58:this.A=this.Decrement(this.A);break;case 202:this.X=this.Decrement(this.X);break;case 136:this.Y=this.Decrement(this.Y);break;case 230:t=this.ZP(),this.Set(t,this.Increment(this.Get(t)));break;case 246:t=this.ZP_X(),this.Set(t,this.Increment(this.Get(t)));break;case 238:t=this.ABS(),this.Set(t,this.Increment(this.Get(t)));break;case 254:t=this.ABS_X(),this.Set(t,this.Increment(this.Get(t)));break;case 26:this.A=this.Increment(this.A);break;case 232:this.X=this.Increment(this.X);break;case 200:this.Y=this.Increment(this.Y);break;case 72:this.Push(this.A),this.ClearTFlag();break;case 8:this.Push(this.P),this.ClearTFlag();break;case 218:this.Push(this.X),this.ClearTFlag();break;case 90:this.Push(this.Y),this.ClearTFlag();break;case 104:this.A=this.Pull(),this.SetNZFlag(this.A),this.ClearTFlag();break;case 40:this.P=this.Pull();break;case 250:this.X=this.Pull(),this.SetNZFlag(this.X),this.ClearTFlag();break;case 122:this.Y=this.Pull(),this.SetNZFlag(this.Y),this.ClearTFlag();break;case 7:this.RMBi(0);break;case 23:this.RMBi(1);break;case 39:this.RMBi(2);break;case 55:this.RMBi(3);break;case 71:this.RMBi(4);break;case 87:this.RMBi(5);break;case 103:this.RMBi(6);break;case 119:this.RMBi(7);break;case 135:this.SMBi(0);break;case 151:this.SMBi(1);break;case 167:this.SMBi(2);break;case 183:this.SMBi(3);break;case 199:this.SMBi(4);break;case 215:this.SMBi(5);break;case 231:this.SMBi(6);break;case 247:this.SMBi(7);break;case 34:e=this.A,this.A=this.X,this.X=e,this.ClearTFlag();break;case 66:e=this.A,this.A=this.Y,this.Y=e,this.ClearTFlag();break;case 2:e=this.X,this.X=this.Y,this.Y=e,this.ClearTFlag();break;case 170:this.X=this.A,this.SetNZFlag(this.X),this.ClearTFlag();break;case 168:this.Y=this.A,this.SetNZFlag(this.Y),this.ClearTFlag();break;case 186:this.X=this.S,this.SetNZFlag(this.X),this.ClearTFlag();break;case 138:this.A=this.X,this.SetNZFlag(this.A),this.ClearTFlag();break;case 154:this.S=this.X,this.ClearTFlag();break;case 152:this.A=this.Y,this.SetNZFlag(this.A),this.ClearTFlag();break;case 137:this.BIT(this.PC+1);break;case 36:this.BIT(this.ZP());break;case 52:this.BIT(this.ZP_X());break;case 44:this.BIT(this.ABS());break;case 60:this.BIT(this.ABS_X());break;case 131:this.TST(this.PC+1,8192|this.Get(this.PC+2));break;case 163:this.TST(this.PC+1,8192|this.Get(this.PC+2)+this.X&255);break;case 147:this.TST(this.PC+1,this.Get16(this.PC+2));break;case 179:this.TST(this.PC+1,this.Get16(this.PC+2)+this.X&65535);break;case 20:this.TRB(this.ZP());break;case 28:this.TRB(this.ABS());break;case 4:this.TSB(this.ZP());break;case 12:this.TSB(this.ABS());break;case 169:this.A=this.Load(this.PC+1);break;case 165:this.A=this.Load(this.ZP());break;case 181:this.A=this.Load(this.ZP_X());break;case 178:this.A=this.Load(this.IND());break;case 161:this.A=this.Load(this.IND_X());break;case 177:this.A=this.Load(this.IND_Y());break;case 173:this.A=this.Load(this.ABS());break;case 189:this.A=this.Load(this.ABS_X());break;case 185:this.A=this.Load(this.ABS_Y());break;case 162:this.X=this.Load(this.PC+1);break;case 166:this.X=this.Load(this.ZP());break;case 182:this.X=this.Load(this.ZP_Y());break;case 174:this.X=this.Load(this.ABS());break;case 190:this.X=this.Load(this.ABS_Y());break;case 160:this.Y=this.Load(this.PC+1);break;case 164:this.Y=this.Load(this.ZP());break;case 180:this.Y=this.Load(this.ZP_X());break;case 172:this.Y=this.Load(this.ABS());break;case 188:this.Y=this.Load(this.ABS_X());break;case 133:this.Store(this.ZP(),this.A);break;case 149:this.Store(this.ZP_X(),this.A);break;case 146:this.Store(this.IND(),this.A);break;case 129:this.Store(this.IND_X(),this.A);break;case 145:this.Store(this.IND_Y(),this.A);break;case 141:this.Store(this.ABS(),this.A);break;case 157:this.Store(this.ABS_X(),this.A);break;case 153:this.Store(this.ABS_Y(),this.A);break;case 134:this.Store(this.ZP(),this.X);break;case 150:this.Store(this.ZP_Y(),this.X);break;case 142:this.Store(this.ABS(),this.X);break;case 132:this.Store(this.ZP(),this.Y);break;case 148:this.Store(this.ZP_X(),this.Y);break;case 140:this.Store(this.ABS(),this.Y);break;case 100:this.Store(this.ZP(),0);break;case 116:this.Store(this.ZP_X(),0);break;case 156:this.Store(this.ABS(),0);break;case 158:this.Store(this.ABS_X(),0);break;case 234:this.ClearTFlag();break;case 3:this.SetVDCRegister(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 19:this.SetVDCLow(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 35:this.SetVDCHigh(this.Get(this.PC+1),this.VDCSelect),this.ClearTFlag();break;case 83:for(s=this.Get(this.PC+1),i=1,s==0?s=this.MPRSelect:this.MPRSelect=s,a=0;a<8;a++)(s&i<>>13);break;case 243:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+this.TransferAlt&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 195:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc-1&65535,this.TransferDist=this.TransferDist-1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 227:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.TransferAlt=1,this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+this.TransferAlt&65535,this.TransferLen=this.TransferLen-1&65535,this.TransferAlt=this.TransferAlt==1?-1:1,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 115:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferDist=this.TransferDist+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 211:this.TransferLen==0&&(this.TransferSrc=this.Get16(this.PC+1),this.TransferDist=this.Get16(this.PC+3),this.TransferLen=this.Get16(this.PC+5),this.ProgressClock=17),this.Set(this.TransferDist,this.Get(this.TransferSrc)),this.TransferSrc=this.TransferSrc+1&65535,this.TransferLen=this.TransferLen-1&65535,this.ProgressClock+=6,this.TransferLen==0&&(this.ClearTFlag(),this.PC+=7);break;case 212:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock7;break;case 84:this.ClearTFlag(),this.CPUBaseClock=this.BaseClock1;break;default:this.ClearTFlag();break}this.PC+=this.OpBytes[h],this.ProgressClock=(this.ProgressClock+this.OpCycles[h])*this.CPUBaseClock}Adder(t,e){let s,i=this.Get(t);!e&&(this.P&this.TFlag)==this.TFlag?(this.ProgressClock=3,s=this.Get(8192|this.X)):s=this.A,e&&(i=~i&255);let a=this.P&1,h=s+i+a;(this.P&this.DFlag)==0?((~s&~i&h|s&i&~h)&128)==128?this.SetVFlag():this.ClearVFlag():(this.ProgressClock+=1,e?((h&15)>9&&(h-=6),(h&240)>144&&(h-=96)):((s&15)+(i&15)+a>9&&(h+=6),(h&496)>144&&(h+=96))),h>255?this.SetCFlag():this.ClearCFlag(),h&=255,this.SetNZFlag(h),!e&&(this.P&this.TFlag)==this.TFlag?this.Set(8192|this.X,h):this.A=h,this.ClearTFlag()}ADC(t){this.Adder(t,!1)}SBC(t){this.Adder(t,!0)}AND(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e&s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}EOR(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e^s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ORA(t){let e,s=this.Get(t);(this.P&this.TFlag)==0?e=this.A:(this.ProgressClock=3,e=this.Get(8192|this.X));let i=e|s;this.SetNZFlag(i),(this.P&this.TFlag)==0?this.A=i:this.Set(8192|this.X,i),this.ClearTFlag()}ASL(t){return t<<=1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}LSR(t){return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t>>=1,this.SetNZFlag(t),this.ClearTFlag(),t}ROL(t){return t=t<<1|this.P&1,t>255?this.SetCFlag():this.ClearCFlag(),t&=255,this.SetNZFlag(t),this.ClearTFlag(),t}ROR(t){let e=this.P&this.CFlag;return(t&1)==1?this.SetCFlag():this.ClearCFlag(),t=t>>1|e<<7,this.SetNZFlag(t),this.ClearTFlag(),t}BBRi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==0,2)}BBSi(t){let e=this.Get(this.ZP());e=e>>t&1,this.Branch(e==1,2)}Branch(t,e){if(this.ClearTFlag(),t){let s=this.Get(this.PC+e);s>=128&&(s|=65280),this.PC=this.PC+e+1+s&65535,this.ProgressClock=2}else this.PC+=e+1}Compare(t,e){t-=this.Get(e),t<0?this.ClearCFlag():this.SetCFlag(),this.ClearTFlag(),this.SetNZFlag(t&255)}Decrement(t){return t=t-1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Increment(t){return t=t+1&255,this.SetNZFlag(t),this.ClearTFlag(),t}Push(t){this.Set(8448|this.S,t),this.S=this.S-1&255}Pull(){return this.S=this.S+1&255,this.Get(8448|this.S)}RMBi(t){let e=this.ZP();this.Set(e,this.Get(e)&~(1<>8}PCL(){return this.PC&255}toPCH(t){this.PC=this.PC&255|t<<8}toPCL(t){this.PC=this.PC&65280|t}StorageConstruct(){this.MPR=new Array(8),this.MPRSelect=0,this.RAM=new Uint8Array(32768),this.RAMMask=8191,this.BRAM=new Uint8Array(8192).fill(0),this.BRAMUse=!1,this.INTIRQ2=0,this.IntDisableRegister=0,this.Mapper=null,this.Mapper0=class extends this.MapperBase{constructor(t,e){super(t,e);let s=this.ROM.length-1;for(this.Address=524288;this.Address>0&&(this.Address&s)==0;)this.Address>>>=1}Read(t){return t>=this.ROM.length?this.ROM[t&this.Address-1|this.Address]:this.ROM[t]}},this.Mapper1=class extends this.MapperBase{constructor(t,e){super(t,e),this.Address=0}Init(){this.Address=0}Read(t){return t<524288?this.ROM[t]:this.ROM[this.Address|t&524287]}Write(t,e){this.Address=(t&15)+1<<19}},this.Mapper2=class extends this.MapperBase{constructor(t,e){super(t,e),this.ROM=t}Read(t){return this.ROM[t]||0}Write(t,e){t>=524288&&(this.ROM[t]=e)}}}GetIntStatus(){return~this.IntDisableRegister&this.GetIntReqest()}GetIntDisable(){return this.IntDisableRegister}SetIntDisable(t){this.IntDisableRegister=t,this.TimerAcknowledge()}GetIntReqest(){return(((this.VDC[0].VDCStatus|this.VDC[1].VDCStatus)&63)!=0?this.IRQ1Flag:0)|this.INTIRQ2|this.INTTIQ}SetIntReqest(t){this.TimerAcknowledge()}SetROM(t){this.Init();let e=t.slice(t.length%8192);this.Mapper=new this.Mapper0(e,this),this.CPUReset()}StorageInit(){this.RAM.fill(0),this.RAMMask=this.SuperGrafx?32767:8191,this.StorageReset()}StorageReset(){this.IntDisableRegister=0;for(let t=0;t<7;t++)this.MPR[t]=2088960;this.MPR[7]=0,this.MPRSelect=1}Get16(t){return this.Get(t+1)<<8|this.Get(t)}Get(t){if(t=this.MPR[t>>13]|t&8191,t<1048576)return this.Mapper.Read(t);if(t<2023424)return 255;if(t<2031616)return this.BRAMUse?this.BRAM[t&8191]:255;if(t<2064384)return this.RAM[t&this.RAMMask];if(t<2088960)return 255;if(t<2089984)if(this.SuperGrafx){let e=t&31;if(e<8)switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}else{if(e<16)return this.GetVPC(e&7);if(e<24)switch(t&3){case 0:return this.GetVDCStatus(1);case 1:return 0;case 2:return this.GetVDCLow(1);case 3:return this.GetVDCHigh(1)}else return 255}}else switch(t&3){case 0:return this.GetVDCStatus(0);case 1:return 0;case 2:return this.GetVDCLow(0);case 3:return this.GetVDCHigh(0)}if(t<2091008)switch(t&7){case 4:return this.GetVCEDataLow();case 5:return this.GetVCEDataHigh();default:return 0}if(t<2092032)return this.GetPSG(t&15);if(t<2093056)return this.ReadTimerCounter();if(t<2094080)return this.GetJoystick();if(t<2095104)switch(t&3){case 2:return this.GetIntDisable();case 3:return this.GetIntReqest();default:return 0}return 255}Set(t,e){if(t=this.MPR[t>>13]|t&8191,t<1048576){this.Mapper.Write(t,e);return}if(!(t<2023424)){if(t<2031616){this.BRAMUse&&(this.BRAM[t&8191]=e);return}if(t<2064384){this.RAM[t&this.RAMMask]=e;return}if(!(t<2088960)){if(t<2089984){if(this.SuperGrafx){let s=t&31;if(s<8)switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}else if(s<16)this.SetVPC(s&7,e);else if(s<24)switch(t&3){case 0:this.SetVDCRegister(e,1);break;case 2:this.SetVDCLow(e,1);break;case 3:this.SetVDCHigh(e,1);break}}else switch(t&3){case 0:this.SetVDCRegister(e,0);break;case 1:break;case 2:this.SetVDCLow(e,0);break;case 3:this.SetVDCHigh(e,0);break}return}if(t<2091008){switch(t&7){case 0:this.SetVCEControl(e);break;case 2:this.SetVCEAddressLow(e);break;case 3:this.SetVCEAddressHigh(e);break;case 4:this.SetVCEDataLow(e);break;case 5:this.SetVCEDataHigh(e);break}return}if(t<2092032){this.SetPSG(t&15,e);return}if(t<2093056){switch(t&1){case 0:this.WirteTimerReload(e);break;case 1:this.WirteTimerControl(e);break}return}if(t<2094080){this.SetJoystick(e);return}if(t<2095104){switch(t&3){case 2:this.SetIntDisable(e);break;case 3:this.SetIntReqest(e);break}return}}}}VCEConstruct(){this.Palette=new Array(512),this.PaletteData=new Array(512),this.MonoPaletteData=new Array(512),this.VCEBaseClock=0,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}VCEInit(){this.Palette.fill(0);for(let t=0;t<512;t++)this.PaletteData[t]={r:0,g:0,b:0},this.MonoPaletteData[t]={r:0,g:0,b:0};this.VCEBaseClock=this.BaseClock5,this.VCEControl=0,this.VCEAddress=0,this.VCEData=0}SetVCEControl(t){switch(this.VCEControl=t,t&3){case 0:this.VCEBaseClock=this.BaseClock5;break;case 1:this.VCEBaseClock=this.BaseClock7;break;case 2:case 3:this.VCEBaseClock=this.BaseClock10;break}}SetVCEAddressLow(t){this.VCEAddress=this.VCEAddress&65280|t}SetVCEAddressHigh(t){this.VCEAddress=(this.VCEAddress&255|t<<8)&511}GetVCEDataLow(){return this.Palette[this.VCEAddress]&255}GetVCEDataHigh(){let t=(this.Palette[this.VCEAddress]&65280)>>8;return this.VCEAddress=this.VCEAddress+1&511,t}SetVCEDataLow(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&65280|t,this.ToPalettes()}SetVCEDataHigh(t){this.Palette[this.VCEAddress]=this.Palette[this.VCEAddress]&255|t<<8,this.ToPalettes(),this.VCEAddress=this.VCEAddress+1&511}ToPalettes(){let t=this.Palette[this.VCEAddress],e=this.PaletteData[this.VCEAddress];e.r=(t>>3&7)*36,e.g=(t>>6&7)*36,e.b=(t&7)*36;let s=e.r*.299+e.g*.587+e.b*.114;this.MonoPaletteData[this.VCEAddress].r=s,this.MonoPaletteData[this.VCEAddress].g=s,this.MonoPaletteData[this.VCEAddress].b=s}VPCConstruct(){this.VPCRegister=new Uint8Array(8),this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority=new Uint8Array(4)}VPCInit(){this.VPCRegister.fill(0),this.VPCRegister[0]=17,this.VPCRegister[1]=17,this.VPCRegister[7]=255,this.VDCSelect=0,this.VPCWindow1=0,this.VPCWindow2=0,this.VPCPriority.fill(1)}SetVPC(t,e){t!=7&&(this.VPCRegister[t]=e,t==6&&(this.VDCSelect=e&1),(t==2||t==3)&&(this.VPCWindow1=(this.VPCRegister[2]|(this.VPCRegister[3]&3)<<8)-64,this.VPCWindow1<0&&(this.VPCWindow1=1024)),(t==4||t==5)&&(this.VPCWindow2=(this.VPCRegister[4]|(this.VPCRegister[5]&3)<<8)-64,this.VPCWindow2<0&&(this.VPCWindow2=-1)),t==0&&(this.VPCPriority[2]=this.VPCRegister[0]>>4,this.VPCPriority[3]=this.VPCRegister[0]&15),t==1&&(this.VPCPriority[0]=this.VPCRegister[1]>>4,this.VPCPriority[1]=this.VPCRegister[1]&15))}GetVPC(t){return this.VPCRegister[t]}VDCConstruct(){this.DrawFlag=!1,this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.VDC=new Array(2),this.VDCLineClock=1368,this.ScreenSize=[],this.ScreenSize[this.BaseClock5]=342,this.ScreenSize[this.BaseClock7]=456,this.ScreenSize[this.BaseClock10]=684,this.PutScreenSize=[],this.PutScreenSize[this.BaseClock5]=320,this.PutScreenSize[this.BaseClock7]=428,this.PutScreenSize[this.BaseClock10]=640,this.ScreenHeightMAX=262,this.ScreenWidthMAX=684,this.VScreenWidthArray=[],this.VScreenWidthArray[0]=32,this.VScreenWidthArray[16]=64,this.VScreenWidthArray[32]=128,this.VScreenWidthArray[48]=128,this.ReverseBit=new Uint8Array(256),this.ReverseBit=this.ReverseBit.map((t,e)=>(e&128)>>7|(e&64)>>5|(e&32)>>3|(e&16)>>1|(e&8)<<1|(e&4)<<3|(e&2)<<5|(e&1)<<7),this.ReverseBit16=new Uint16Array(65536).fill(0),this.ReverseBit16=this.ReverseBit16.map((t,e)=>this.ReverseBit[e&255]<<8|this.ReverseBit[(e&65280)>>8]),this.ReverseBit256=new Uint32Array(256).fill(0),this.ReverseBit256=this.ReverseBit256.map((t,e)=>{let s=this.ReverseBit[e];return(s&128)<<21|(s&64)<<18|(s&32)<<15|(s&16)<<12|(s&8)<<9|(s&4)<<6|(s&2)<<3|(s&1)<<0}),this.SPAddressMask=[],this.SPAddressMask[16]=[],this.SPAddressMask[32]=[],this.SPAddressMask[16][16]=2046,this.SPAddressMask[16][32]=2042,this.SPAddressMask[16][64]=2034,this.SPAddressMask[32][16]=2044,this.SPAddressMask[32][32]=2040,this.SPAddressMask[32][64]=2032}MakeSpriteLine(t){let e=this.VDC[t],s=e.SPLine;for(let c=0;c>8)+16;if(l=l>32?64:l,aP+l-1)continue;let x=(r[S+1]&1023)-32,C=((F&256)>>4)+16;if(x+C<=0)continue;let A=a-P;(F&32768)==32768&&(A=l-1-A);let o=(r[S+2]&this.SPAddressMask[C][l])<<5|((A&48)<<3|A&15),k,b,g,D;(F&2048)==0?(k=n[h[o]],b=n[h[o+16]],g=n[h[o+32]],D=n[h[o+48]],C==32&&(k|=n[h[o|64]]<<16,b|=n[h[(o|64)+16]]<<16,g|=n[h[(o|64)+32]]<<16,D|=n[h[(o|64)+48]]<<16)):(k=h[o],b=h[o+16],g=h[o+32],D=h[o+48],C==32&&(k=k<<16|h[o|64],b=b<<16|h[(o|64)+16],g=g<<16|h[(o|64)+32],D=D<<16|h[(o|64)+48]));let d=(F&15)<<4|256,M=F&128,B=0;for(x<0&&(B-=x,x=0);B>>B&1|b>>>B<<1&2|g>>>B<<2&4|D>>>B<<3&8;T!=0&&(f.data=T,f.palette=d,f.priority=M)}if(f.no==255&&(f.no=c),c!=0&&f.no==0&&(e.VDCStatus|=e.VDCRegister[5]&1),++i==256&&(e.VDCStatus|=e.VDCRegister[5]&2,e.SpriteLimit))return}}}MakeBGLine(t){let e=this.VDC[t],s=e.SPLine,i=e.BGLine,a=e.ScreenWidth,h=(e.HDS+e.HSW<<3)+e.DrawBGIndex;if((e.VDCRegister[5]&128)==128){let r=e.VScreenWidth-1,n=e.VDCRegister[7],c=n>>3&r;n=(n&7)<<2;let S=e.DrawBGLine,P=(S>>3&e.VScreenHeight-1)*e.VScreenWidth;S=S&7;let F=e.VRAM,l=0,x=this.ReverseBit256;for(;l>8,k=F[A],b=F[A+8],g=x[k&255]|x[(k&65280)>>8]<<1|x[b&255]<<2|x[(b&65280)>>8]<<3;for(;n<32&&l>>n&15,d=s[l];i[l+h]=d.data!=0&&(D==0||d.priority==128)?d.data|d.palette:D|(D==0?0:o)}n=0,c=c+1&r}}else for(let r=0;r0&&(e.VRAMtoSATBCount-=this.ProgressClock,e.VRAMtoSATBCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&1)<<3)),e.VRAMtoVRAMCount>0&&(e.VRAMtoVRAMCount-=this.ProgressClock,e.VRAMtoVRAMCount<=0&&(e.VDCStatus=e.VDCStatus&191|(e.VDCRegister[15]&2)<<3))}VDCProcess(t){let e=this.VDC[t];e.VDCProgressClock-=this.VDCLineClock,e.DrawBGIndex=0,e.BGLine.fill(256);for(let s=0;s261&&(i-=261),e.DrawBGYLine==i&&(e.VDCStatus|=(e.VDCRegister[5]&8)<<2,e.VRAMtoSATBStartFlag)){for(let a=0,h=e.VDCRegister[19];a<256;a++,h++)e.SATB[a]=e.VRAM[h];e.VRAMtoSATBCount=256*this.VCEBaseClock,e.VDCStatus|=64,e.VRAMtoSATBStartFlag=(e.VDCRegister[15]&16)==16}e.RasterCount++,e.DrawBGYLine==e.VDS+e.VSW-1&&(e.RasterCount=64),e.RasterCount==e.VDCRegister[6]&&(e.VDCStatus&32)==0&&(e.VDCStatus|=e.VDCRegister[5]&4),e.DrawBGIndex+=e.DrawLineWidth}}VDCRun(){for(this.VDCProcessDMA(0),this.VDC[0].VDCProgressClock+=this.ProgressClock,this.SuperGrafx&&(this.VDCProcessDMA(1),this.VDC[1].VDCProgressClock+=this.ProgressClock);this.VDC[0].VDCProgressClock>=this.VDCLineClock;)this.VDCProcess(0),this.SuperGrafx&&this.VDCProcess(1);if(this.VDCPutLineProgressClock+=this.ProgressClock,this.VDCPutLineProgressClock>=this.VDCLineClock){this.VDCPutLineProgressClock-=this.VDCLineClock,this.VDCPutLine++,this.VDCPutLine==this.ScreenHeightMAX&&(this.VDCPutLine=0,this.GetScreenSize(0),this.VDC[0].DrawBGYLine=0,this.SuperGrafx&&(this.GetScreenSize(1),this.VDC[1].DrawBGYLine=0),this.DrawFlag=!0,this.Ctx.putImageData(this.ImageData,0,0));let t=(this.VCEControl&128)==0?this.PaletteData:this.MonoPaletteData,e=this.ImageData.data,s=this.VDCPutLine*this.ScreenWidthMAX*4,i=t[256],a=this.ScreenSize[this.VCEBaseClock],h=this.VDC[0].BGLine;if(this.SuperGrafx){let r=this.VPCWindow1,n=this.VPCWindow2,c=this.VPCPriority,S=this.VDC[1].BGLine;for(let P=0;P=r&&(F|=1),P<=n&&(F|=2);let l=h[P],x=S[P],C;switch(c[F]){case 7:l>256||x>256?C=t[l>256?l:x]:C=t[(l&255)!=0?l:x];break;case 11:l<256&&l!=0?C=t[l]:C=t[(x&255)!=0?x:l];break;case 3:case 15:C=t[(l&255)!=0?l:x];break;case 1:case 5:case 9:case 13:C=t[l];break;case 2:case 6:case 10:case 14:C=t[x];break;default:C=i;break}e[s]=C.r,e[s+1]=C.g,e[s+2]=C.b}}else for(let r=0;rthis.ScreenWidthMAX&&(e.ScreenWidth=this.ScreenWidthMAX),e.HDS=(s[10]&32512)>>8,e.HSW=s[10]&31,e.HDE=(s[11]&32512)>>8,e.HDW=s[11]&127,e.VDS=(s[12]&65280)>>8,e.VSW=s[12]&31,e.VDW=s[13]&511,e.VCR=s[14]&255,e.ScreenSize=this.ScreenSize[this.VCEBaseClock],this.MainCanvas.width!=e.ScreenSize&&(this.MainCanvas.width=this.PutScreenSize[this.VCEBaseClock]),e.DrawLineWidth=e.HDS+e.HSW+e.HDE+e.HDW+1<<3,e.DrawLineWidth<=this.ScreenSize[this.BaseClock5]?e.DrawLineWidth=this.ScreenSize[this.BaseClock5]:e.DrawLineWidth<=this.ScreenSize[this.BaseClock7]?e.DrawLineWidth=this.ScreenSize[this.BaseClock7]:e.DrawLineWidth=this.ScreenSize[this.BaseClock10],e.VDCBurst=(s[5]&192)==0}VDCInit(){this.VDCPutLineProgressClock=0,this.VDCPutLine=0,this.DrawFlag=!1;for(let t=0;t<2;t++){this.VDC[t]={VDCRegister:new Uint16Array(20).fill(0),VRAM:new Uint16Array(65536).fill(0),SATB:new Uint16Array(256).fill(0),VDCBurst:!1,SpriteLimit:!1,SPLine:new Array(this.ScreenWidthMAX),BGLine:new Array(this.ScreenWidthMAX).fill(0),VDCStatus:0,VDCRegisterSelect:0,WriteVRAMData:0,VRAMtoSATBStartFlag:!1,VRAMtoSATBCount:0,VRAMtoVRAMCount:0,RasterCount:64,VDCProgressClock:0,DrawBGYLine:0,DrawBGLine:0,VScreenWidth:0,VScreenHeight:0,VScreenHeightMask:0,ScreenWidth:0,ScreenSize:0,DrawLineWidth:0,DrawBGIndex:0,HDS:0,HSW:0,HDE:0,HDW:0,VDS:0,VSW:0,VDW:0,VCR:0};for(let e=0;e0;n--)c[r]=c[h],h=h+i&65535,r=r+a&65535;return}s.VDCRegisterSelect==19&&(s.VRAMtoSATBStartFlag=!0)}GetVRAMIncrement(t){switch(this.VDC[t].VDCRegister[5]&6144){case 0:return 1;case 2048:return 32;case 4096:return 64;case 6144:return 128}}GetVDCStatus(t){let e=this.VDC[t].VDCStatus;return this.VDC[t].VDCStatus&=64,e}GetVDCLow(t){return this.VDC[t].VDCRegister[this.VDC[t].VDCRegisterSelect]&255}GetVDCHigh(t){let e=this.VDC[t];if(e.VDCRegisterSelect==2||e.VDCRegisterSelect==3){let s=(e.VDCRegister[2]&65280)>>8;return e.VDCRegister[2]=e.VRAM[e.VDCRegister[1]],e.VDCRegister[3]=e.VDCRegister[2],e.VDCRegister[1]=e.VDCRegister[1]+this.GetVRAMIncrement(t)&65535,s}return(e.VDCRegister[e.VDCRegisterSelect]&65280)>>8}SoundConstruct(){this.WaveDataArray=[],this.WaveClockCounter=0,this.WaveVolume=1,this.WebAudioCtx=null,this.WebAudioJsNode=null,this.WebAudioGainNode=null,this.WebAudioBufferSize=2048,this.PSGClock=3579545}WebAudioFunction(t){let e=[],s=[];for(let i=0;i<2;i++){if(e[i]=t.outputBuffer.getChannelData(i),s[i]=new Float32Array(this.WebAudioBufferSize),this.WaveDataArray[i].lengththis.WebAudioBufferSize*2&&(this.WaveDataArray[i]=this.WaveDataArray[i].slice(this.WebAudioBufferSize))}e[i].set(s[i])}}SoundInit(){this.WaveClockCounter=0,this.WaveDataArray=[],this.WaveDataArray[0]=[],this.WaveDataArray[1]=[],typeof AudioContext!="undefined"&&this.WebAudioCtx==null&&this.CreateAudioContext()}CreateAudioContext(){this.WebAudioCtx==null&&(this.WebAudioCtx=new window.AudioContext,this.WebAudioJsNode=this.WebAudioCtx.createScriptProcessor(this.WebAudioBufferSize,0,2),this.WebAudioJsNode.onaudioprocess=this.WebAudioFunction.bind(this),this.WebAudioGainNode=this.WebAudioCtx.createGain(),this.WebAudioJsNode.connect(this.WebAudioGainNode),this.WebAudioGainNode.connect(this.WebAudioCtx.destination)),p(this.WebAudioCtx)}SoundSet(){let t,e,s,i,a,h;if(this.WaveClockCounter+=this.WebAudioCtx.sampleRate,this.WaveClockCounter>=this.PSGClock){for(this.WaveClockCounter-=this.PSGClock,t=0,e=0,a=0;a<6;a++)(a!=1||!this.WaveLfoOn)&&(s=this.PSGChannel[a],a<4||!s.noiseon?h=s.keyon?s.dda?s.R[6]&31:s.wave[s.index]:0:h=(s.noise&1)==1?15:0,t+=h*s.leftvol,e+=h*s.rightvol);this.WaveDataArray[0].push(t*this.WaveVolumeLeft),this.WaveDataArray[1].push(e*this.WaveVolumeRight),this.WebAudioGainNode.gain.value=this.WaveVolume}}PSGConstruct(){this.PSGChannel=new Array(6),this.PSGBaseClock=this.BaseClock3,this.PSGProgressClock=0,this.WaveVolumeLeft=0,this.WaveVolumeRight=0,this.WaveLfoOn=!1,this.WaveLfoControl=0,this.WaveLfoFreqency=0}PSGInit(){this.SoundInit();for(let t=0;t0;){for(e--,s=0,this.WaveLfoOn&&(i=this.PSGChannel[0],a=this.PSGChannel[1],i.keyon&&(i.count==0?(i.index=i.index+1&31,h=0,this.WaveLfoControl!=0&&(h=a.wave[a.index],h=h>15?h-32:h&15,h<<=4*(this.WaveLfoControl-1)),h=i.freq+h,h<0&&(h=0),i.count=h):i.count--,a.count==0?(a.index=a.index+1&31,a.count=a.freq*this.WaveLfoFreqency):a.count--),s=2);s<6;s++)t=this.PSGChannel[s],s<4||!t.noiseon?t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.count=t.freq):t.count--):t.keyon&&!t.dda&&(t.count==0?(t.index=t.index+1&31,t.index==0&&(t.noise=t.noise>>1|(t.noise<<12^t.noise<<15)&32768),t.count=t.noisefreq):t.count--);this.SoundSet()}}SetPSG(t,e){if(t==0){this.PSGChannel[0].R[0]=e&7;return}if(this.PSGChannel[0].R[0]>5)return;let s=this.PSGChannel[this.PSGChannel[0].R[0]];switch(s.R[t]=e,t){case 1:this.PSGChannel[0].R[1]=e,this.WaveVolumeLeft=(e&240)>>4,this.WaveVolumeRight=e&15;return;case 2:case 3:s.freq=(s.R[3]<<8|s.R[2])&4095;return;case 4:s.keyon=(e&128)==128,s.dda=(e&64)==64,(e&64)==64&&(s.index=0),s.vol=e&31;case 5:let i=s.R[4]&31;s.leftvol=((s.R[5]&240)>>4)*i,s.rightvol=(s.R[5]&15)*i;return;case 6:s.dda||(s.wave[s.index]=e&31,s.index=s.index+1&31);return;case 7:s.noiseon=(e&128)==128,s.noisefreq=e&31^31;return;case 8:this.PSGChannel[0].R[8]=e,this.WaveLfoFreqency=e;return;case 9:this.PSGChannel[0].R[9]=e,this.WaveLfoOn=(e&128)==128,this.WaveLfoControl=e&3;return}}GetPSG(t){return t>9?255:t==0||t==1||t==8||t==9?this.PSGChannel[0].R[t]:this.PSGChannel[0].R[0]>5?255:this.PSGChannel[this.PSGChannel[0].R[0]].R[t]}TimerConstruct(){this.TimerBaseClock=this.BaseClock7,this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}TimerInit(){this.TimerReload=0,this.TimerFlag=!1,this.TimerCounter=0,this.TimerPrescaler=0,this.INTTIQ=0}ReadTimerCounter(){return this.TimerCounter}TimerAcknowledge(){this.INTTIQ=0}WirteTimerReload(t){this.TimerReload=t&127}WirteTimerControl(t){!this.TimerFlag&&(t&1)==1&&(this.TimerCounter=this.TimerReload,this.TimerPrescaler=0),this.TimerFlag=(t&1)==1}TimerRun(){if(this.TimerFlag)for(this.TimerPrescaler+=this.ProgressClock;this.TimerPrescaler>=1024*this.TimerBaseClock;)this.TimerPrescaler-=1024*this.TimerBaseClock,this.TimerCounter--,this.TimerCounter<0&&(this.TimerCounter=this.TimerReload,this.INTTIQ=this.TIQFlag)}JoystickConstruct(){this.JoystickSEL=0,this.JoystickCLR=0,this.KeyUpFunction=null,this.KeyDownFunction=null,this.Keybord=new Array(5).fill([]),this.Keybord=this.Keybord.map(t=>new Array(4)),this.GamePad=new Array(5).fill([]),this.GamePad=this.Keybord.map(t=>new Array(4)),this.GamePadSelect=0,this.GamePadButtonSelect=0,this.GamePadBuffer=0,this.GamePadData=[],this.GamePadData["STANDARD PAD"]=[[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:2}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}]],[[{type:"B",index:1}],[{type:"B",index:0}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"B",index:12}],[{type:"B",index:13}],[{type:"B",index:14}],[{type:"B",index:15}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:2}],[{type:"B",index:3}]]],this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"]=[[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9},{type:"B",index:0}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}]],[[{type:"B",index:2}],[{type:"B",index:1}],[{type:"B",index:8}],[{type:"B",index:9}],[{type:"P",index:9}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"N",index:0}],[{type:"B",index:7}],[{type:"B",index:5}],[{type:"B",index:0}],[{type:"B",index:3}]]],this.GamePadData["0f0d-0009-HORI PAD 3 TURBO"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadData["UNKNOWN PAD"]=this.GamePadData["HORI PAD 3 TURBO (Vendor: 0f0d Product: 0009)"],this.GamePadKeyData=[{index:0,data:1},{index:0,data:2},{index:0,data:4},{index:0,data:8},{index:1,data:1},{index:1,data:4},{index:1,data:8},{index:1,data:2},{index:2,data:1},{index:2,data:2},{index:2,data:4},{index:2,data:8}],this.GamePadPovData=[1,3,2,6,4,12,8,9]}JoystickInit(){this.JoystickSEL=0,this.JoystickCLR=0;for(let t=0;t>1;if(this.JoystickSEL==1&&this.JoystickCLR==0&&e==1&&s==1){this.JoystickSEL=0,this.JoystickCLR=0,this.GamePadSelect=0,this.GamePadButton6&&(this.GamePadButtonSelect=this.GamePadButtonSelect^2),this.GamePadBuffer=176|this.CountryType;return}this.JoystickSEL==0&&this.JoystickCLR==0&&e==1&&s==0&&this.GamePadSelect++,this.JoystickSEL=e,this.JoystickCLR=s;let i=this.MultiTap?this.GamePadSelect-1:0;if(i<5){let a=this.GamePadButtonSelect|this.JoystickSEL;this.GamePadBuffer=this.Keybord[i][a]&this.GamePad[i][a]|this.CountryType}else this.GamePadBuffer=176|this.CountryType}GetJoystick(){return this.GamePadBuffer}UnsetButtonRUN(t){this.Keybord[t][0]|=8}UnsetButtonSELECT(t){this.Keybord[t][0]|=4}UnsetButtonSHOT2(t){this.Keybord[t][0]|=2}UnsetButtonSHOT1(t){this.Keybord[t][0]|=1}UnsetButtonLEFT(t){this.Keybord[t][1]|=8}UnsetButtonDOWN(t){this.Keybord[t][1]|=4}UnsetButtonRIGHT(t){this.Keybord[t][1]|=2}UnsetButtonUP(t){this.Keybord[t][1]|=1}UnsetButtonSHOT6(t){this.Keybord[t][2]|=8}UnsetButtonSHOT5(t){this.Keybord[t][2]|=4}UnsetButtonSHOT4(t){this.Keybord[t][2]|=2}UnsetButtonSHOT3(t){this.Keybord[t][2]|=1}SetButtonRUN(t){this.Keybord[t][0]&=-9}SetButtonSELECT(t){this.Keybord[t][0]&=-5}SetButtonSHOT2(t){this.Keybord[t][0]&=-3}SetButtonSHOT1(t){this.Keybord[t][0]&=-2}SetButtonLEFT(t){this.Keybord[t][1]&=-9}SetButtonDOWN(t){this.Keybord[t][1]&=-5}SetButtonRIGHT(t){this.Keybord[t][1]&=-3}SetButtonUP(t){this.Keybord[t][1]&=-2}SetButtonSHOT6(t){this.Keybord[t][2]&=-9}SetButtonSHOT5(t){this.Keybord[t][2]&=-5}SetButtonSHOT4(t){this.Keybord[t][2]&=-3}SetButtonSHOT3(t){this.Keybord[t][2]&=-2}CheckKeyUpFunction(t){switch(t.keyCode){case u.START.c:this.UnsetButtonRUN(0);break;case u.SELECT.c:this.UnsetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.UnsetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.UnsetButtonSHOT1(0);break;case 86:this.UnsetButtonSHOT2(0);break;case 66:this.UnsetButtonSHOT1(0);break;case 37:this.UnsetButtonLEFT(0);break;case 39:this.UnsetButtonRIGHT(0);break;case 40:this.UnsetButtonDOWN(0);break;case 38:this.UnsetButtonUP(0);break;case 71:this.UnsetButtonSHOT6(0);break;case 70:this.UnsetButtonSHOT5(0);break;case 68:this.UnsetButtonSHOT4(0);break;case 67:this.UnsetButtonSHOT3(0);break}}CheckKeyDownFunction(t){switch(t.keyCode){case u.START.c:this.SetButtonRUN(0);break;case u.SELECT.c:this.SetButtonSELECT(0);break;case u.A.c:case u.GP_A.c:this.SetButtonSHOT2(0);break;case u.B.c:case u.GP_B.c:this.SetButtonSHOT1(0);break;case 86:this.SetButtonSHOT2(0);break;case 66:this.SetButtonSHOT1(0);break;case 37:this.SetButtonLEFT(0);break;case 39:this.SetButtonRIGHT(0);break;case 40:this.SetButtonDOWN(0);break;case 38:this.SetButtonUP(0);break;case 71:this.SetButtonSHOT6(0);break;case 70:this.SetButtonSHOT5(0);break;case 68:this.SetButtonSHOT4(0);break;case 67:this.SetButtonSHOT3(0);break}}JoystickEventInit(){this.KeyUpFunction=this.CheckKeyUpFunction.bind(this),this.KeyDownFunction=this.CheckKeyDownFunction.bind(this),this.MainCanvas.addEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.addEventListener("keydown",this.KeyDownFunction,!0)}JoystickEventRelease(){this.MainCanvas.removeEventListener("keyup",this.KeyUpFunction,!0),this.MainCanvas.removeEventListener("keydown",this.KeyDownFunction,!0)}CheckGamePad(){for(let e=0;e.5&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"AB":s.axes[r.index]>-.75&&(this.GamePad[e][this.GamePadKeyData[a].index]&=~this.GamePadKeyData[a].data);break;case"P":let n=(s.axes[r.index]+1)*7/2+.5|0;this.GamePad[e][1]&=~(n<=7?this.GamePadPovData[n]:0);break}a++}}}}}; +//# sourceMappingURL=pce-JCSZGFZE.js.map diff --git a/gen/pce-7DNGDGLS.js.map b/gen/pce-JCSZGFZE.js.map similarity index 100% rename from gen/pce-7DNGDGLS.js.map rename to gen/pce-JCSZGFZE.js.map diff --git a/gen/sms-53SPECTY.js b/gen/sms-VRS2E636.js similarity index 96% rename from gen/sms-53SPECTY.js rename to gen/sms-VRS2E636.js index 93fec34e..3fa4e259 100644 --- a/gen/sms-53SPECTY.js +++ b/gen/sms-VRS2E636.js @@ -1,4 +1,4 @@ -import{a as P,b,c as w}from"./chunk-Q6XQLGXR.js";import{J as u,d as M,f as S}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{P as c,ba as s,ea as g,g as l,ga as p,ha as n}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var A=g([[s.UP,0,1],[s.DOWN,0,2],[s.LEFT,0,4],[s.RIGHT,0,8],[s.A,0,16],[s.B,0,32],[s.GP_A,0,16],[s.GP_B,0,32],[s.P2_UP,0,64],[s.P2_DOWN,0,128],[s.P2_LEFT,1,1],[s.P2_RIGHT,1,2],[s.P2_A,1,4],[s.P2_B,1,8],[s.VK_BACK_SLASH,1,16],[s.VK_ENTER,1,128]]),a=class extends w{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=49152;this.ram=new Uint8Array(1024);this.read=n([[49152,65535,1023,e=>this.ram[e]],[0,49151,65535,e=>this.rom&&this.rom[e]]]);this.write=n([[49152,65535,1023,(e,r)=>{this.ram[e]=r}]]);this.init(this,this.newIOBus(),new S(new M))}getKeyboardMap(){return A}vdpInterrupt(){return this.probe.logInterrupt(255),this.cpu.interrupt(255)}getVCounter(){return 0}getHCounter(){return 0}setMemoryControl(e){}setIOPortControl(e){}readIO(e){switch(e&193){case 64:return this.getVCounter();case 65:return this.getHCounter();case 128:return this.vdp.readData();case 129:return this.vdp.readStatus();case 192:return this.inputs[0]^255;case 193:return this.inputs[1]^255}return 0}writeIO(e,r){switch(e&193){case 0:return this.setMemoryControl(r);case 1:return this.setIOPortControl(r);case 64:case 65:return this.psg.setData(r);case 128:return this.vdp.writeData(r);case 129:return this.vdp.writeAddress(r)}}newIOBus(){return{read:e=>(e&=255,this.readIO(e)),write:(e,r)=>{e&=255,r&=255,this.writeIO(e,r)}}}},o=class extends a{constructor(){super(...arguments);this.cartram=new Uint8Array(0);this.pagingRegisters=new Uint8Array(4);this.latchedHCounter=0;this.ioControlFlags=0;this.ram=new Uint8Array(8192);this.read=n([[49152,65535,8191,e=>this.ram[e]],[0,1023,1023,e=>this.rom&&this.rom[e]],[1024,16383,16383,e=>this.getPagedROM(e,1)],[16384,32767,16383,e=>this.getPagedROM(e,2)],[32768,49151,16383,e=>{var r=this.pagingRegisters[0];return r&8?this.cartram[r&4?e+16384:e]:this.getPagedROM(e,3)}]]);this.write=n([[49152,65531,8191,(e,r)=>{this.ram[e]=r}],[65532,65535,3,(e,r)=>{this.pagingRegisters[e]=r,this.ram[e+8188]=r}],[32768,49151,16383,(e,r)=>{var m=this.pagingRegisters[0];m&8&&(this.cartram.length==0&&(this.cartram=new Uint8Array(32768)),this.cartram[m&4?e+16384:e]=r)}]])}newVDP(e,r,m){return new P(e,r,m)}reset(){super.reset(),this.pagingRegisters.set([0,0,1,2])}getVCounter(){var e=this.scanline;return e<=218?e:e-6}getHCounter(){return this.latchedHCounter}computeHCounter(){return 0}setIOPortControl(e){(e^this.ioControlFlags)&160&&(this.latchedHCounter=this.computeHCounter()),this.ioControlFlags=e}getPagedROM(e,r){return this.rom&&this.rom[e+((this.pagingRegisters[r]&this.romPageMask)<<14)]}loadROM(e){if(e.length<=49152)this.rom=p(e,49152),this.romPageMask=3;else switch(e.length){case 65536:case 131072:case 262144:case 524288:this.rom=e,this.romPageMask=(e.length>>14)-1;break;default:throw Error("Unknown rom size: $"+l(e.length))}this.reset()}loadState(e){super.loadState(e),this.pagingRegisters.set(e.pr),this.cartram.set(e.cr),this.latchedHCounter=e.lhc,this.ioControlFlags=e.iocf}saveState(){var e=super.saveState();return e.pr=this.pagingRegisters.slice(0),e.cr=this.cartram.slice(0),e.lhc=this.latchedHCounter,e.iocf=this.ioControlFlags,e}getDebugInfo(e,r){return e==="SMS"?super.getDebugInfo(e,r)+` +import{a as P,b,c as w}from"./chunk-PKBI5W34.js";import{L as u,d as M,f as S}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P as c,ba as s,ea as g,g as l,ga as p,ha as n}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var A=g([[s.UP,0,1],[s.DOWN,0,2],[s.LEFT,0,4],[s.RIGHT,0,8],[s.A,0,16],[s.B,0,32],[s.GP_A,0,16],[s.GP_B,0,32],[s.P2_UP,0,64],[s.P2_DOWN,0,128],[s.P2_LEFT,1,1],[s.P2_RIGHT,1,2],[s.P2_A,1,4],[s.P2_B,1,8],[s.VK_BACK_SLASH,1,16],[s.VK_ENTER,1,128]]),a=class extends w{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=49152;this.ram=new Uint8Array(1024);this.read=n([[49152,65535,1023,e=>this.ram[e]],[0,49151,65535,e=>this.rom&&this.rom[e]]]);this.write=n([[49152,65535,1023,(e,r)=>{this.ram[e]=r}]]);this.init(this,this.newIOBus(),new S(new M))}getKeyboardMap(){return A}vdpInterrupt(){return this.probe.logInterrupt(255),this.cpu.interrupt(255)}getVCounter(){return 0}getHCounter(){return 0}setMemoryControl(e){}setIOPortControl(e){}readIO(e){switch(e&193){case 64:return this.getVCounter();case 65:return this.getHCounter();case 128:return this.vdp.readData();case 129:return this.vdp.readStatus();case 192:return this.inputs[0]^255;case 193:return this.inputs[1]^255}return 0}writeIO(e,r){switch(e&193){case 0:return this.setMemoryControl(r);case 1:return this.setIOPortControl(r);case 64:case 65:return this.psg.setData(r);case 128:return this.vdp.writeData(r);case 129:return this.vdp.writeAddress(r)}}newIOBus(){return{read:e=>(e&=255,this.readIO(e)),write:(e,r)=>{e&=255,r&=255,this.writeIO(e,r)}}}},o=class extends a{constructor(){super(...arguments);this.cartram=new Uint8Array(0);this.pagingRegisters=new Uint8Array(4);this.latchedHCounter=0;this.ioControlFlags=0;this.ram=new Uint8Array(8192);this.read=n([[49152,65535,8191,e=>this.ram[e]],[0,1023,1023,e=>this.rom&&this.rom[e]],[1024,16383,16383,e=>this.getPagedROM(e,1)],[16384,32767,16383,e=>this.getPagedROM(e,2)],[32768,49151,16383,e=>{var r=this.pagingRegisters[0];return r&8?this.cartram[r&4?e+16384:e]:this.getPagedROM(e,3)}]]);this.write=n([[49152,65531,8191,(e,r)=>{this.ram[e]=r}],[65532,65535,3,(e,r)=>{this.pagingRegisters[e]=r,this.ram[e+8188]=r}],[32768,49151,16383,(e,r)=>{var m=this.pagingRegisters[0];m&8&&(this.cartram.length==0&&(this.cartram=new Uint8Array(32768)),this.cartram[m&4?e+16384:e]=r)}]])}newVDP(e,r,m){return new P(e,r,m)}reset(){super.reset(),this.pagingRegisters.set([0,0,1,2])}getVCounter(){var e=this.scanline;return e<=218?e:e-6}getHCounter(){return this.latchedHCounter}computeHCounter(){return 0}setIOPortControl(e){(e^this.ioControlFlags)&160&&(this.latchedHCounter=this.computeHCounter()),this.ioControlFlags=e}getPagedROM(e,r){return this.rom&&this.rom[e+((this.pagingRegisters[r]&this.romPageMask)<<14)]}loadROM(e){if(e.length<=49152)this.rom=p(e,49152),this.romPageMask=3;else switch(e.length){case 65536:case 131072:case 262144:case 524288:this.rom=e,this.romPageMask=(e.length>>14)-1;break;default:throw Error("Unknown rom size: $"+l(e.length))}this.reset()}loadState(e){super.loadState(e),this.pagingRegisters.set(e.pr),this.cartram.set(e.cr),this.latchedHCounter=e.lhc,this.ioControlFlags=e.iocf}saveState(){var e=super.saveState();return e.pr=this.pagingRegisters.slice(0),e.cr=this.cartram.slice(0),e.lhc=this.latchedHCounter,e.iocf=this.ioControlFlags,e}getDebugInfo(e,r){return e==="SMS"?super.getDebugInfo(e,r)+` Bank Regs: `+this.pagingRegisters+` `:super.getDebugInfo(e,r)}},x=class extends o{newVDP(t,e,r){return new b(t,e,r)}readIO(t){switch(t&193){case 0:return~this.inputs[1]&128|64;case 220:return this.inputs[0]^255;case 221:return this.inputs[1]^255}return super.readIO(t)}};var R=[{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"mode2bitmap.c",name:"Mode 2 Bitmap"},{id:"mode2compressed.c",name:"Mode 2 Bitmap (LZG)"},{id:"lines.c",name:"Mode 2 Lines"},{id:"multicolor.c",name:"Multicolor Mode"},{id:"siegegame.c",name:"Siege Game"},{id:"shoot.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"}],C=[{id:"mode4test.c",name:"Mode 4 Test"},{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"siegegame.c",name:"Siege Game"},{id:"climber.c",name:"Climber Game"},{id:"solarian.c",name:"Solarian Game"}],O=[...C],_=[...C],f=class extends u{newMachine(){return new a}getPresets(){return R}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}},d=class extends u{newMachine(){return new o}getPresets(){return O}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}},h=class extends u{newMachine(){return new x}getPresets(){return _}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}};c["sms-sg1000-libcv"]=f;c["sms-sms-libcv"]=d;c["sms-gg-libcv"]=h;export{_ as GG_PRESETS,R as SG1000_PRESETS,O as SMS_PRESETS}; -//# sourceMappingURL=sms-53SPECTY.js.map +//# sourceMappingURL=sms-VRS2E636.js.map diff --git a/gen/sms-53SPECTY.js.map b/gen/sms-VRS2E636.js.map similarity index 100% rename from gen/sms-53SPECTY.js.map rename to gen/sms-VRS2E636.js.map diff --git a/gen/sound_konami-VGRKDSAC.js b/gen/sound_konami-7HJCEIDB.js similarity index 93% rename from gen/sound_konami-VGRKDSAC.js rename to gen/sound_konami-7HJCEIDB.js index bf24c0cf..c7dd5c9f 100644 --- a/gen/sound_konami-VGRKDSAC.js +++ b/gen/sound_konami-7HJCEIDB.js @@ -1,2 +1,2 @@ -import{E as R,j as w}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{$ as C,P as v,V as x,X as p,ga as P,ha as d}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var T=[],M=function(D){this.__proto__=new R;var t,i,u,f,l,a,c,m,s,_=0,o=0,n,g=14318e3/8,S=1789750/1280,b=g/60,y=g/S;this.getPresets=function(){return T},this.start=function(){i=new p(1024),f={read:d([[0,16383,16383,function(e){return u?u[e]:null}],[16384,24575,1023,function(e){return i.mem[e]}]]),write:d([[16384,24575,1023,function(e,r){i.mem[e]=r}]]),isContended:function(){return!1}},l={read:function(e){if(e&64){if(o==15){var r=t.getTstates()/y&1;return r?255:0}return n.readRegister(o)&255}return 0},write:function(e,r){e&128&&(o=r&15),e&64&&n.writeRegisterAY(o,r&255)}},this.readAddress=f.read,t=this.newCPU(f,l),n=new PsgDeviceChannel,c=new MasterChannel,n.setMode(PsgDeviceChannel.MODE_SIGNED),n.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),c.addChannel(n),a=new AudioLooper(512),a.setChannel(c),m=new x(D,256,256),m.create(),m.setKeyboardEvents(function(e,r,A){var h=e-49;h>=0&&A&1&&(n.writeRegister(14,h),n.writeRegister(15,128),t.setIFF1(1),t.requestInterrupt(56))}),s=new C(60,()=>{if(this.isRunning()){var e=this.getDebugCallback(),r=t.getTstates()+b;if(e)for(;t.getTstates()=0&&A&1&&(n.writeRegister(14,h),n.writeRegister(15,128),t.setIFF1(1),t.requestInterrupt(56))}),s=new C(60,()=>{if(this.isRunning()){var e=this.getDebugCallback(),r=t.getTstates()+b;if(e)for(;t.getTstates()this.rom&&this.rom[e]],[16384,32767,1023,e=>this.ram[e]]]);this.write=t([[16384,32767,1023,(e,s)=>{this.ram[e]=s}]]);this.cpu=new f,this.connectCPUMemoryBus(this),this.connectCPUIOBus({read:e=>this.command&255,write:(e,s)=>{let r=this.dac=s&255;this.dac_float=(r&128?-256+r:r)/128}})}advanceFrame(e){this.pixels&&this.pixels.fill(0);let s=this.cpuCyclesPerFrame;for(var r=0;r>8&255)+(255-this.dac<<8)]=4281597747,this.xpos=this.xpos+e&16777215),e}setKeyInput(e,s,r){var c=e-49;c>=0&&r&1&&(this.command=c&255,this.cpu.reset())}},i=class extends u{newMachine(){return new a}getPresets(){return h}readAddress(n){return this.machine.read(n)}};m["sound_williams-z80"]=i;export{i as WilliamsSoundPlatform}; -//# sourceMappingURL=sound_williams-RA4OKZ2H.js.map +import{L as u,c as f,u as o}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{P as m,ha as t}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var h=[{id:"swave.c",name:"Wavetable Synth"}],a=class extends o{constructor(){super();this.cpuFrequency=18432e3/6;this.cpuCyclesPerFrame=this.cpuFrequency/60;this.cpuAudioFactor=32;this.canvasWidth=256;this.numVisibleScanlines=256;this.defaultROMSize=16384;this.sampleRate=this.cpuFrequency;this.overscan=!0;this.ram=new Uint8Array(1024);this.command=0;this.dac=0;this.dac_float=0;this.xpos=0;this.read=t([[0,16383,16383,e=>this.rom&&this.rom[e]],[16384,32767,1023,e=>this.ram[e]]]);this.write=t([[16384,32767,1023,(e,s)=>{this.ram[e]=s}]]);this.cpu=new f,this.connectCPUMemoryBus(this),this.connectCPUIOBus({read:e=>this.command&255,write:(e,s)=>{let r=this.dac=s&255;this.dac_float=(r&128?-256+r:r)/128}})}advanceFrame(e){this.pixels&&this.pixels.fill(0);let s=this.cpuCyclesPerFrame;for(var r=0;r>8&255)+(255-this.dac<<8)]=4281597747,this.xpos=this.xpos+e&16777215),e}setKeyInput(e,s,r){var c=e-49;c>=0&&r&1&&(this.command=c&255,this.cpu.reset())}},i=class extends u{newMachine(){return new a}getPresets(){return h}readAddress(n){return this.machine.read(n)}};m["sound_williams-z80"]=i;export{i as WilliamsSoundPlatform}; +//# sourceMappingURL=sound_williams-BAYSXQOA.js.map diff --git a/gen/sound_williams-RA4OKZ2H.js.map b/gen/sound_williams-BAYSXQOA.js.map similarity index 100% rename from gen/sound_williams-RA4OKZ2H.js.map rename to gen/sound_williams-BAYSXQOA.js.map diff --git a/gen/src/common/audio.js b/gen/src/common/audio.js index 84d98e00..f493d534 100644 --- a/gen/src/common/audio.js +++ b/gen/src/common/audio.js @@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.TssChannelAdapter = exports.SampledAudio = exports.SampleAudio = exports.AUDIO_CHUNK_SAMPLES = exports.WorkerSoundChannel = exports.POKEYDeviceChannel = exports.SN76489_Audio = exports.AY38910_Audio = exports.MasterAudio = void 0; exports.newPOKEYAudio = newPOKEYAudio; exports.setAudioStreamFactory = setAudioStreamFactory; +exports.isAudioBlocked = isAudioBlocked; +exports.onAudioStateChange = onAudioStateChange; exports.resumeAudioContext = resumeAudioContext; class MasterAudio { constructor() { @@ -350,20 +352,89 @@ exports.AUDIO_CHUNK_SAMPLES = 2048; // must be called synchronously inside the handler for Safari/iOS to allow it. // Called on every start(), since stop() suspends the context. const audioUnlockEvents = ['pointerdown', 'touchend', 'mousedown', 'keydown', 'click']; -const pendingUnlocks = new WeakSet(); +const pendingUnlocks = new WeakSet(); // waiting for the first user gesture +const unlockListeners = new WeakSet(); // document gesture handlers installed +// Every AudioContext the IDE starts is registered here so the UI can tell +// whether Web Audio is still waiting for the user gesture that owns the page. +// Browsers keep one suspended until then, and resume() resolves asynchronously, +// so notify listeners on registration, state changes and resume completion. +const audioContexts = new Set(); +const audioStateListeners = new Set(); +function notifyAudioState() { + for (const listener of Array.from(audioStateListeners)) + listener(); +} +function markAudioUnlocked(ctx) { + pendingUnlocks.delete(ctx); + notifyAudioState(); +} +function trackAudioContext(ctx) { + if (audioContexts.has(ctx)) + return; + audioContexts.add(ctx); + if (typeof ctx.addEventListener === 'function') { + ctx.addEventListener('statechange', () => { + if (ctx.state === 'running') { + pendingUnlocks.delete(ctx); + } + else if (ctx.state === 'closed') { + // a closed context can never be resumed, so stop counting it as blocked + audioContexts.delete(ctx); + pendingUnlocks.delete(ctx); + } + notifyAudioState(); + }); + } + notifyAudioState(); +} +/** + * True while an AudioContext is waiting for the user gesture that unlocks + * Web Audio. A context the IDE suspends itself (pause, tab blur) is not blocked; + * it comes back without a gesture. + */ +function isAudioBlocked() { + for (const ctx of audioContexts) { + if (ctx.state !== 'running' && pendingUnlocks.has(ctx)) + return true; + } + return false; +} +/** Subscribe to AudioContext creation and state changes. Returns an unsubscribe fn. */ +function onAudioStateChange(listener) { + audioStateListeners.add(listener); + return () => { audioStateListeners.delete(listener); }; +} +function resumeTrackedContext(ctx) { + const resumed = ctx.resume(); + if (resumed && typeof resumed.then === 'function') { + resumed.then(() => { + if (ctx.state === 'running') + markAudioUnlocked(ctx); + else + notifyAudioState(); + }, () => { }); + } +} function resumeAudioContext(ctx) { - if (!ctx || ctx.state === 'running') + if (!ctx || ctx.state === 'closed') return; - ctx.resume().catch(() => { }); - if (typeof document === 'undefined' || pendingUnlocks.has(ctx)) + trackAudioContext(ctx); + if (ctx.state === 'running') { + pendingUnlocks.delete(ctx); return; + } pendingUnlocks.add(ctx); + notifyAudioState(); // show the click hint even if resume() stays suspended + resumeTrackedContext(ctx); + if (typeof document === 'undefined' || unlockListeners.has(ctx)) + return; + unlockListeners.add(ctx); const onGesture = () => { - ctx.resume().catch(() => { }); + resumeTrackedContext(ctx); if (ctx.state === 'running') { for (const ev of audioUnlockEvents) document.removeEventListener(ev, onGesture, true); - pendingUnlocks.delete(ctx); + unlockListeners.delete(ctx); } }; for (const ev of audioUnlockEvents) diff --git a/gen/src/common/audio.js.map b/gen/src/common/audio.js.map index 6e8da8dc..ff932506 100644 --- a/gen/src/common/audio.js.map +++ b/gen/src/common/audio.js.map @@ -1 +1 @@ -{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../src/common/audio.ts"],"names":[],"mappings":"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,CAAE,CAAE,CAAC;IAC/F,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAA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"} \ No newline at end of file +{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../src/common/audio.ts"],"names":[],"mappings":"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CAAC,EAAC,CAAC,EAAC,CAAC,CAAE,CAAE,CAAC;IAC/F,IAAI,IAAI,GAAG,IAAI,UAAU,CAAE,CAAE,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC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"} \ No newline at end of file diff --git a/gen/src/ide/ui.js b/gen/src/ide/ui.js index aafb4160..fbf1c6f2 100644 --- a/gen/src/ide/ui.js +++ b/gen/src/ide/ui.js @@ -63,6 +63,7 @@ const baseplatform_1 = require("../common/baseplatform"); const emu_1 = require("../common/emu"); const books_1 = require("../common/books"); const controls_1 = require("../common/controls"); +const audio_1 = require("../common/audio"); const hdlhost_1 = require("./hdlhost"); const recorder_1 = require("../common/recorder"); const util_1 = require("../common/util"); @@ -2322,7 +2323,29 @@ function renderControls(div) { } return div.children().length > 0; } +function showAudioHint() { + const hint = $("#emuaudiohint"); + if (!hint.length) + return; + let wasBlocked = false; + const update = () => { + if ((0, audio_1.isAudioBlocked)()) { + wasBlocked = true; + hint.show(); + } + else { + hint.hide(); + if (wasBlocked) + unsubscribe(); + } + }; + // AudioContext.resume() is async, so wait for the context to actually start + // instead of hiding on the click that asked it to. + const unsubscribe = (0, audio_1.onAudioStateChange)(update); + update(); +} function showInstructions() { + showAudioHint(); var div = $("#emucontrols"); if (!renderControls(div)) return; diff --git a/gen/src/ide/ui.js.map b/gen/src/ide/ui.js.map index 5335df80..a78f4de6 100644 --- a/gen/src/ide/ui.js.map +++ b/gen/src/ide/ui.js.map @@ -1 +1 @@ -{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/test/unit/testaudio.js b/gen/test/unit/testaudio.js index d2c73c75..c48f63c5 100644 --- a/gen/test/unit/testaudio.js +++ b/gen/test/unit/testaudio.js @@ -104,6 +104,33 @@ class SuspendedAudioContext extends FakeAudioContext { suspend() { this.state = 'suspended'; return Promise.resolve(); } resume() { this.resumes++; this.state = 'running'; return Promise.resolve(); } } +// Like a real context: resume() takes a moment, then fires statechange. Used to +// check that the UI hint waits for Web Audio to actually start. +class GestureAudioContext extends FakeAudioContext { + constructor() { + super(...arguments); + this.state = 'suspended'; + this.stateListeners = []; + } + addEventListener(type, listener) { + if (type === 'statechange') + this.stateListeners.push(listener); + } + resume() { + return Promise.resolve().then(() => { + this.state = 'running'; + for (const listener of this.stateListeners) + listener(); + }); + } + suspend() { + return Promise.resolve().then(() => { + this.state = 'suspended'; + for (const listener of this.stateListeners) + listener(); + }); + } +} const RING_BUFFER_SAMPLES = 2048; function withFakeAudio(fn) { const prev = global.window; @@ -148,6 +175,26 @@ function pullBlock(length = RING_BUFFER_SAMPLES) { global.window = prev; } }); + (0, mocha_1.it)('reports a context as blocked until its resume() resolves', async function () { + const ctx = new GestureAudioContext(); + let changes = 0; + const unsubscribe = (0, audio_1.onAudioStateChange)(() => changes++); + (0, audio_1.resumeAudioContext)(ctx); + assert_1.default.equal((0, audio_1.isAudioBlocked)(), true); + await new Promise((r) => setTimeout(r, 0)); + assert_1.default.equal(ctx.state, 'running'); + assert_1.default.equal((0, audio_1.isAudioBlocked)(), false); + assert_1.default.ok(changes >= 2, 'expected registration and unlock notifications'); + unsubscribe(); + }); + (0, mocha_1.it)('does not treat a context the IDE suspends as blocked', async function () { + const ctx = new GestureAudioContext(); + (0, audio_1.resumeAudioContext)(ctx); + await new Promise((r) => setTimeout(r, 0)); + assert_1.default.equal((0, audio_1.isAudioBlocked)(), false); + await ctx.suspend(); + assert_1.default.equal((0, audio_1.isAudioBlocked)(), false); + }); }); (0, mocha_1.describe)('SampleAudio ring depth', function () { (0, mocha_1.afterEach)(function () { diff --git a/gen/test/unit/testaudio.js.map b/gen/test/unit/testaudio.js.map index bc34d000..8070c19c 100644 --- a/gen/test/unit/testaudio.js.map +++ b/gen/test/unit/testaudio.js.map @@ -1 +1 @@ -{"version":3,"file":"testaudio.js","sourceRoot":"","sources":["../../../test/unit/testaudio.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,iCAAgD;AAChD,kDAA+G;AAE/G,kFAAkF;AAClF,MAAM,UAAU;IAId,YAAqB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QAHvC,WAAM,GAAmB,EAAE,CAAC;QAC5B,YAAO,GAAG,KAAK,CAAC;QAChB,YAAO,GAAG,KAAK,CAAC;IAC2B,CAAC;IAC5C,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3D;AAED,IAAA,gBAAQ,EAAC,uBAAuB,EAAE;IAChC,IAAA,iBAAS,EAAC;QACR,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,2DAA2D,EAAE;QAC9D,IAAI,MAAkB,CAAC;QACvB,IAAA,6BAAqB,EAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C;QAClF,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAAmB,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvE,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,2BAAmB,CAAC,CAAC;QAC3D,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,qDAAqD,EAAE;QACxD,IAAI,MAAkB,CAAC;QACvB,IAAA,6BAAqB,EAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B;QAClE,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,qEAAqE;QACrE,2DAA2D;QAC3D,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,2BAAmB,CAAC,GAAG,2BAAmB,CAAC;QACzE,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5D,gBAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,sCAAsC,EAAE;QACzC,IAAA,6BAAqB,EAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,6DAA6D,EAAE;QAChE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAkB,CAAC;QACvB,IAAA,6BAAqB,EAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,gBAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,gBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,yCAAyC;AACzC,MAAM,QAAQ;IAAd;QACE,SAAI,GAAG,EAAE,CAAC;QACV,cAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACzB,SAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAEtB,CAAC;IADC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;CAC3B;AACD,MAAM,uBAAwB,SAAQ,QAAQ;CAG7C;AACD,MAAM,gBAAgB;IAMpB;QAJA,eAAU,GAAG,KAAK,CAAC;QACnB,UAAK,GAAG,SAAS,CAAC;QAClB,gBAAW,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC7B,oBAAe,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAChC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC;IAC/C,kBAAkB,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/C,wBAAwB,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,qBAAqB,CAAC,IAAY,EAAE,GAAW,EAAE,IAAY,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/F,MAAM,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,KAAK,KAAK,CAAC;CACZ;AAED,iFAAiF;AACjF,yCAAyC;AACzC,MAAM,qBAAsB,SAAQ,gBAAgB;IAApD;;QACE,UAAK,GAAG,WAAW,CAAC;QACpB,YAAO,GAAG,CAAC,CAAC;IAGd,CAAC;IAFC,OAAO,KAAK,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CAC/E;AAED,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,SAAS,aAAa,CAAC,EAA8B;IACnD,MAAM,IAAI,GAAI,MAAc,CAAC,MAAM,CAAC;IACnC,MAAc,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACR,MAAc,CAAC,MAAM,GAAG,IAAI,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB,EAAE,OAAe,EAAE,KAAK,GAAG,IAAI;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,mBAAmB,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,SAAS,CAAC,MAAM,GAAG,mBAAmB;IAC7C,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;IACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAClG,OAAO,GAAG,CAAC;AACb,CAAC;AAED,IAAA,gBAAQ,EAAC,6BAA6B,EAAE;IACtC,IAAA,iBAAS,EAAC;QACR,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,8CAA8C,EAAE,KAAK;QACtD,MAAM,IAAI,GAAI,MAAc,CAAC,MAAM,CAAC;QACnC,MAAc,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAA6B,CAAC;YAC3D,yDAAyD;YACzD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7B,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACnC,qEAAqE;YACrE,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACR,MAAc,CAAC,MAAM,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAQ,EAAC,wBAAwB,EAAE;IACjC,IAAA,iBAAS,EAAC;QACR,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,wDAAwD,EAAE;QAC3D,aAAa,CAAC,GAAG,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAClC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACnC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,6DAA6D,EAAE;QAChE,aAAa,CAAC,GAAG,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,mDAAmD;YAC1E,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,wDAAwD,EAAE;QAC3D,aAAa,CAAC,GAAG,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC5B,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;YACtB,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3B,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/B,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACjC,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sCAAsC;YAC/E,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAChC,6DAA6D;YAC7D,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,oDAAoD,EAAE,KAAK;QAC5D,MAAM,aAAa,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;gBAAE,SAAS,EAAE,CAAC,CAAC,0CAA0C;YACpF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,yDAAyD;YAChF,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,mCAAmC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YACpF,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,UAAE,EAAC,yDAAyD,EAAE,KAAK;QACjE,MAAM,aAAa,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtB,SAAS,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAC,SAAS,EAAE,CAAC;YAAC,CAAC,CAAC,kBAAkB;YACvF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,oCAAoC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YACrF,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"testaudio.js","sourceRoot":"","sources":["../../../test/unit/testaudio.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/gen/ui.js b/gen/ui.js index 2fb97121..d1832a64 100644 --- a/gen/ui.js +++ b/gen/ui.js @@ -1,30 +1,30 @@ -import{a as Z0}from"./chunk-NTFEI2OH.js";import{a as I0}from"./chunk-SRBQMLE7.js";import"./chunk-JRMUDXWR.js";import{a as kc}from"./chunk-G3VBABUZ.js";import{a as X0,b as z0,c as DA}from"./chunk-MQGCXKDS.js";import{E as Pc,J as kf,o as L0,v as D0,w as Pf}from"./chunk-FFJHITEL.js";import"./chunk-UXRCACYH.js";import{A as Nt,B as Mr,E as wc,G as hr,H as _0,J as vf,K as vo,M as wo,N as wf,O as E0,P as xf,Y as xo,Z as R0,a as Hr,aa as M0,b as La,d as yt,e as Da,f as Zt,g as _e,h as bf,i as k0,ia as xc,k as $0,m as yc,n as Q0,o as Sc,p as vc,q as T0,t as So,w as A0,x as yf,y as C0,z as Sf}from"./chunk-VZWSP3EG.js";import{a as Ue,b as zi,c as Ma,e as gf,g as Of}from"./chunk-N7W4C4V2.js";var Qf=gf((W0,$f)=>{(function(n){if(typeof W0=="object"&&typeof $f!="undefined")$f.exports=n();else if(typeof define=="function"&&define.amd)define([],n);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=n()}})(function(){var n,e,t;return(function r(i,s,o){function a(d,h){if(!s[d]){if(!i[d]){var u=typeof Ma=="function"&&Ma;if(!h&&u)return u(d,!0);if(l)return l(d,!0);var f=new Error("Cannot find module '"+d+"'");throw f.code="MODULE_NOT_FOUND",f}var m=s[d]={exports:{}};i[d][0].call(m.exports,function(O){var S=i[d][1][O];return a(S||O)},m,m.exports,r,i,s,o)}return s[d].exports}for(var l=typeof Ma=="function"&&Ma,c=0;c=43)}}).catch(function(){return!1})}function W(y){return typeof D=="boolean"?u.resolve(D):X(y).then(function(Q){return D=Q,D})}function ne(y){var Q=M[y.name],v={};v.promise=new u(function(C,E){v.resolve=C,v.reject=E}),Q.deferredOperations.push(v),Q.dbReady?Q.dbReady=Q.dbReady.then(function(){return v.promise}):Q.dbReady=v.promise}function de(y){var Q=M[y.name],v=Q.deferredOperations.pop();if(v)return v.resolve(),v.promise}function q(y,Q){var v=M[y.name],C=v.deferredOperations.pop();if(C)return C.reject(Q),C.promise}function pe(y,Q){return new u(function(v,C){if(M[y.name]=M[y.name]||Ot(),y.db)if(Q)ne(y),y.db.close();else return v(y.db);var E=[y.name];Q&&E.push(y.version);var A=c.open.apply(c,E);Q&&(A.onupgradeneeded=function(I){var j=A.result;try{j.createObjectStore(y.storeName),I.oldVersion<=1&&j.createObjectStore(x)}catch(U){if(U.name==="ConstraintError")console.warn('The database "'+y.name+'" has been upgraded from version '+I.oldVersion+" to version "+I.newVersion+', but the storage "'+y.storeName+'" already exists.');else throw U}}),A.onerror=function(I){I.preventDefault(),C(A.error)},A.onsuccess=function(){var I=A.result;I.onversionchange=function(j){j.target.close()},v(I),de(y)}})}function ve(y){return pe(y,!1)}function we(y){return pe(y,!0)}function B(y,Q){if(!y.db)return!0;var v=!y.db.objectStoreNames.contains(y.storeName),C=y.versiony.db.version;if(C&&(y.version!==Q&&console.warn('The database "'+y.name+`" can't be downgraded from version `+y.db.version+" to version "+y.version+"."),y.version=y.db.version),E||v){if(v){var A=y.db.version+1;A>y.version&&(y.version=A)}return!0}return!1}function ue(y){return new u(function(Q,v){var C=new FileReader;C.onerror=v,C.onloadend=function(E){var A=btoa(E.target.result||"");Q({__local_forage_encoded_blob:!0,data:A,type:y.type})},C.readAsBinaryString(y)})}function G(y){var Q=R(atob(y.data));return h([Q],{type:y.type})}function Pe(y){return y&&y.__local_forage_encoded_blob}function Qe(y){var Q=this,v=Q._initReady().then(function(){var C=M[Q._dbInfo.name];if(C&&C.dbReady)return C.dbReady});return m(v,y,y),v}function Ge(y){ne(y);for(var Q=M[y.name],v=Q.forages,C=0;C0&&(!y.db||A.name==="InvalidStateError"||A.name==="NotFoundError"))return u.resolve().then(function(){if(!y.db||A.name==="NotFoundError"&&!y.db.objectStoreNames.contains(y.storeName)&&y.version<=y.db.version)return y.db&&(y.version=y.db.version+1),we(y)}).then(function(){return Ge(y).then(function(){He(y,Q,v,C-1)})}).catch(v);v(A)}}function Ot(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function me(y){var Q=this,v={db:null};if(y)for(var C in y)v[C]=y[C];var E=M[v.name];E||(E=Ot(),M[v.name]=E),E.forages.push(Q),Q._initReady||(Q._initReady=Q.ready,Q.ready=Qe);var A=[];function I(){return u.resolve()}for(var j=0;j>4,K[E++]=(I&15)<<4|j>>2,K[E++]=(j&3)<<6|U&63;return H}function xt(y){var Q=new Uint8Array(y),v="",C;for(C=0;C>2],v+=be[(Q[C]&3)<<4|Q[C+1]>>4],v+=be[(Q[C+1]&15)<<2|Q[C+2]>>6],v+=be[Q[C+2]&63];return Q.length%3===2?v=v.substring(0,v.length-1)+"=":Q.length%3===1&&(v=v.substring(0,v.length-2)+"=="),v}function cr(y,Q){var v="";if(y&&(v=Le.call(y)),y&&(v==="[object ArrayBuffer]"||y.buffer&&Le.call(y.buffer)==="[object ArrayBuffer]")){var C,E=Lt;y instanceof ArrayBuffer?(C=y,E+=ft):(C=y.buffer,v==="[object Int8Array]"?E+=lr:v==="[object Uint8Array]"?E+=rn:v==="[object Uint8ClampedArray]"?E+=Ar:v==="[object Int16Array]"?E+=vt:v==="[object Uint16Array]"?E+=ie:v==="[object Int32Array]"?E+=Qt:v==="[object Uint32Array]"?E+=Y:v==="[object Float32Array]"?E+=te:v==="[object Float64Array]"?E+=ge:Q(new Error("Failed to get type for BinaryArray"))),Q(E+xt(C))}else if(v==="[object Blob]"){var A=new FileReader;A.onload=function(){var I=ar+y.type+"~"+xt(this.result);Q(Lt+Tr+I)},A.readAsArrayBuffer(y)}else try{Q(JSON.stringify(y))}catch(I){console.error("Couldn't convert value into a JSON string: ",y),Q(null,I)}}function dr(y){if(y.substring(0,Qr)!==Lt)return JSON.parse(y);var Q=y.substring(Ke),v=y.substring(Qr,Ke),C;if(v===Tr&&st.test(Q)){var E=Q.match(st);C=E[1],Q=Q.substring(E[0].length)}var A=ot(Q);switch(v){case ft:return A;case Tr:return h([A],{type:C});case lr:return new Int8Array(A);case rn:return new Uint8Array(A);case Ar:return new Uint8ClampedArray(A);case vt:return new Int16Array(A);case ie:return new Uint16Array(A);case Qt:return new Int32Array(A);case Y:return new Uint32Array(A);case te:return new Float32Array(A);case ge:return new Float64Array(A);default:throw new Error("Unkown type: "+v)}}var hi={serialize:cr,deserialize:dr,stringToBuffer:ot,bufferToString:xt};function Gr(y,Q,v,C){y.executeSql("CREATE TABLE IF NOT EXISTS "+Q.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],v,C)}function ui(y){var Q=this,v={db:null};if(y)for(var C in y)v[C]=typeof y[C]!="string"?y[C].toString():y[C];var E=new u(function(A,I){try{v.db=openDatabase(v.name,String(v.version),v.description,v.size)}catch(j){return I(j)}v.db.transaction(function(j){Gr(j,v,function(){Q._dbInfo=v,A()},function(U,H){I(H)})},I)});return v.serializer=hi,E}function wt(y,Q,v,C,E,A){y.executeSql(v,C,E,function(I,j){j.code===j.SYNTAX_ERR?I.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[Q.storeName],function(U,H){H.rows.length?A(U,j):Gr(U,Q,function(){U.executeSql(v,C,E,A)},A)},A):A(I,j)},A)}function pn(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT * FROM "+I.storeName+" WHERE key = ? LIMIT 1",[y],function(U,H){var K=H.rows.length?H.rows.item(0).value:null;K&&(K=I.serializer.deserialize(K)),E(K)},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function Ss(y,Q){var v=this,C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT * FROM "+I.storeName,[],function(U,H){for(var K=H.rows,ce=K.length,Ce=0;Ce0){I(Ii.apply(E,[y,U,v,C-1]));return}j(Ce)}})})}).catch(j)});return f(A,v),A}function vs(y,Q,v){return Ii.apply(this,[y,Q,v,1])}function ws(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"DELETE FROM "+I.storeName+" WHERE key = ?",[y],function(){E()},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function xs(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"DELETE FROM "+A.storeName,[],function(){C()},function(j,U){E(U)})})}).catch(E)});return f(v,y),v}function Cr(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"SELECT COUNT(key) as c FROM "+A.storeName,[],function(j,U){var H=U.rows.item(0).c;C(H)},function(j,U){E(U)})})}).catch(E)});return f(v,y),v}function _r(y,Q){var v=this,C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT key FROM "+I.storeName+" WHERE id = ? LIMIT 1",[y+1],function(U,H){var K=H.rows.length?H.rows.item(0).key:null;E(K)},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function bt(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"SELECT key FROM "+A.storeName,[],function(j,U){for(var H=[],K=0;K '__WebKitDatabaseInfoTable__'",[],function(E,A){for(var I=[],j=0;j0}function gi(y){var Q=this,v={};if(y)for(var C in y)v[C]=y[C];return v.keyPrefix=Xi(y,Q._defaultConfig),Ps()?(Q._dbInfo=v,v.serializer=hi,u.resolve()):u.reject()}function $a(y){var Q=this,v=Q.ready().then(function(){for(var C=Q._dbInfo.keyPrefix,E=localStorage.length-1;E>=0;E--){var A=localStorage.key(E);A.indexOf(C)===0&&localStorage.removeItem(A)}});return f(v,y),v}function Zn(y,Q){var v=this;y=O(y);var C=v.ready().then(function(){var E=v._dbInfo,A=localStorage.getItem(E.keyPrefix+y);return A&&(A=E.serializer.deserialize(A)),A});return f(C,Q),C}function Qa(y,Q){var v=this,C=v.ready().then(function(){for(var E=v._dbInfo,A=E.keyPrefix,I=A.length,j=localStorage.length,U=1,H=0;H=0;I--){var j=localStorage.key(I);j.indexOf(A)===0&&localStorage.removeItem(j)}}):E=u.reject("Invalid arguments"),f(E,Q),E}var $s={_driver:"localStorageWrapper",_initStorage:gi,_support:ka(),iterate:Qa,getItem:Zn,setItem:ks,removeItem:Aa,clear:$a,length:gn,key:Ta,keys:Te,dropInstance:Oi},Qs=function(Q,v){return Q===v||typeof Q=="number"&&typeof v=="number"&&isNaN(Q)&&isNaN(v)},Ca=function(Q,v){for(var C=Q.length,E=0;E{(function(n,e){typeof Vf=="object"&&typeof Ff!="undefined"?Ff.exports=e():typeof define=="function"&&define.amd?define(e):(n=typeof globalThis!="undefined"?globalThis:n||self,n.Split=e())})(Vf,(function(){"use strict";var n=typeof window!="undefined"?window:null,e=n===null,t=e?void 0:n.document,r="addEventListener",i="removeEventListener",s="getBoundingClientRect",o="_a",a="_b",l="_c",c="horizontal",d=function(){return!1},h=e?"calc":["","-webkit-","-moz-","-o-"].filter(function(Z){var k=t.createElement("div");return k.style.cssText="width:"+Z+"calc(9px)",!!k.style.length}).shift()+"calc",u=function(Z){return typeof Z=="string"||Z instanceof String},f=function(Z){if(u(Z)){var k=t.querySelector(Z);if(!k)throw new Error("Selector "+Z+" did not match a DOM element");return k}return Z},m=function(Z,k,w){var R=Z[k];return R!==void 0?R:w},O=function(Z,k,w,R){if(k){if(R==="end")return 0;if(R==="center")return Z/2}else if(w){if(R==="start")return 0;if(R==="center")return Z/2}return Z},S=function(Z,k){var w=t.createElement("div");return w.className="gutter gutter-"+k,w},x=function(Z,k,w){var R={};return u(k)?R[Z]=k:R[Z]=h+"("+k+"% - "+w+"px)",R},D=function(Z,k){var w;return w={},w[Z]=k+"px",w},M=function(Z,k){if(k===void 0&&(k={}),e)return{};var w=Z,R,X,W,ne,de,q;Array.from&&(w=Array.from(w));var pe=f(w[0]),ve=pe.parentNode,we=getComputedStyle?getComputedStyle(ve):null,B=we?we.flexDirection:null,ue=m(k,"sizes")||w.map(function(){return 100/w.length}),G=m(k,"minSize",100),Pe=Array.isArray(G)?G:w.map(function(){return G}),Qe=m(k,"maxSize",1/0),Ge=Array.isArray(Qe)?Qe:w.map(function(){return Qe}),He=m(k,"expandToMin",!1),Ot=m(k,"gutterSize",10),me=m(k,"gutterAlign","center"),nn=m(k,"snapOffset",30),ir=Array.isArray(nn)?nn:w.map(function(){return nn}),sr=m(k,"dragInterval",1),or=m(k,"direction",c),di=m(k,"cursor",or===c?"col-resize":"row-resize"),bs=m(k,"gutter",S),qr=m(k,"elementStyle",x),ys=m(k,"gutterStyle",D);or===c?(R="width",X="clientX",W="left",ne="right",de="clientWidth"):or==="vertical"&&(R="height",X="clientY",W="top",ne="bottom",de="clientHeight");function Dn(ie,Y,te,ge){var Ke=qr(R,Y,te,ge);Object.keys(Ke).forEach(function(Le){ie.style[Le]=Ke[Le]})}function ke(ie,Y,te){var ge=ys(R,Y,te);Object.keys(ge).forEach(function(Ke){ie.style[Ke]=ge[Ke]})}function kn(){return q.map(function(ie){return ie.size})}function be(ie){return"touches"in ie?ie.touches[0][X]:ie[X]}function ar(ie){var Y=q[this.a],te=q[this.b],ge=Y.size+te.size;Y.size=ie/this.size*ge,te.size=ge-ie/this.size*ge,Dn(Y.element,Y.size,this[a],Y.i),Dn(te.element,te.size,this[l],te.i)}function st(ie){var Y,te=q[this.a],ge=q[this.b];this.dragging&&(Y=be(ie)-this.start+(this[a]-this.dragOffset),sr>1&&(Y=Math.round(Y/sr)*sr),Y<=te.minSize+te.snapOffset+this[a]?Y=te.minSize+this[a]:Y>=this.size-(ge.minSize+ge.snapOffset+this[l])&&(Y=this.size-(ge.minSize+this[l])),Y>=te.maxSize-te.snapOffset+this[a]?Y=te.maxSize+this[a]:Y<=this.size-(ge.maxSize-ge.snapOffset+this[l])&&(Y=this.size-(ge.maxSize+this[l])),ar.call(this,Y),m(k,"onDrag",d)(kn()))}function Lt(){var ie=q[this.a].element,Y=q[this.b].element,te=ie[s](),ge=Y[s]();this.size=te[R]+ge[R]+this[a]+this[l],this.start=te[W],this.end=te[ne]}function Qr(ie){if(!getComputedStyle)return null;var Y=getComputedStyle(ie);if(!Y)return null;var te=ie[de];return te===0?null:(or===c?te-=parseFloat(Y.paddingLeft)+parseFloat(Y.paddingRight):te-=parseFloat(Y.paddingTop)+parseFloat(Y.paddingBottom),te)}function ft(ie){var Y=Qr(ve);if(Y===null||Pe.reduce(function(Le,ot){return Le+ot},0)>Y)return ie;var te=0,ge=[],Ke=ie.map(function(Le,ot){var xt=Y*Le/100,cr=O(Ot,ot===0,ot===ie.length-1,me),dr=Pe[ot]+cr;return xt0&&ge[ot]-te>0){var cr=Math.min(te,ge[ot]-te);te-=cr,xt=Le-cr}return xt/Y*100})}function Tr(){var ie=this,Y=q[ie.a].element,te=q[ie.b].element;ie.dragging&&m(k,"onDragEnd",d)(kn()),ie.dragging=!1,n[i]("mouseup",ie.stop),n[i]("touchend",ie.stop),n[i]("touchcancel",ie.stop),n[i]("mousemove",ie.move),n[i]("touchmove",ie.move),ie.stop=null,ie.move=null,Y[i]("selectstart",d),Y[i]("dragstart",d),te[i]("selectstart",d),te[i]("dragstart",d),Y.style.userSelect="",Y.style.webkitUserSelect="",Y.style.MozUserSelect="",Y.style.pointerEvents="",te.style.userSelect="",te.style.webkitUserSelect="",te.style.MozUserSelect="",te.style.pointerEvents="",ie.gutter.style.cursor="",ie.parent.style.cursor="",t.body.style.cursor=""}function lr(ie){if(!("button"in ie&&ie.button!==0)){var Y=this,te=q[Y.a].element,ge=q[Y.b].element;Y.dragging||m(k,"onDragStart",d)(kn()),ie.preventDefault(),Y.dragging=!0,Y.move=st.bind(Y),Y.stop=Tr.bind(Y),n[r]("mouseup",Y.stop),n[r]("touchend",Y.stop),n[r]("touchcancel",Y.stop),n[r]("mousemove",Y.move),n[r]("touchmove",Y.move),te[r]("selectstart",d),te[r]("dragstart",d),ge[r]("selectstart",d),ge[r]("dragstart",d),te.style.userSelect="none",te.style.webkitUserSelect="none",te.style.MozUserSelect="none",te.style.pointerEvents="none",ge.style.userSelect="none",ge.style.webkitUserSelect="none",ge.style.MozUserSelect="none",ge.style.pointerEvents="none",Y.gutter.style.cursor=di,Y.parent.style.cursor=di,t.body.style.cursor=di,Lt.call(Y),Y.dragOffset=be(ie)-Y.end}}ue=ft(ue);var rn=[];q=w.map(function(ie,Y){var te={element:f(ie),size:ue[Y],minSize:Pe[Y],maxSize:Ge[Y],snapOffset:ir[Y],i:Y},ge;if(Y>0&&(ge={a:Y-1,b:Y,dragging:!1,direction:or,parent:ve},ge[a]=O(Ot,Y-1===0,!1,me),ge[l]=O(Ot,!1,Y===w.length-1,me),B==="row-reverse"||B==="column-reverse")){var Ke=ge.a;ge.a=ge.b,ge.b=Ke}if(Y>0){var Le=bs(Y,or,te.element);ke(Le,Ot,Y),ge[o]=lr.bind(ge),Le[r]("mousedown",ge[o]),Le[r]("touchstart",ge[o]),ve.insertBefore(Le,te.element),ge.gutter=Le}return Dn(te.element,te.size,O(Ot,Y===0,Y===w.length-1,me),Y),Y>0&&rn.push(ge),te});function Ar(ie){var Y=ie.i===rn.length,te=Y?rn[ie.i-1]:rn[ie.i];Lt.call(te);var ge=Y?te.size-ie.minSize-te[l]:ie.minSize+te[a];ar.call(te,ge)}q.forEach(function(ie){var Y=ie.element[s]()[R];Y0){var Ke=rn[ge-1],Le=q[Ke.a],ot=q[Ke.b];Le.size=Y[ge-1],ot.size=te,Dn(Le.element,Le.size,Ke[a],Le.i),Dn(ot.element,ot.size,Ke[l],ot.i)}})}function Qt(ie,Y){rn.forEach(function(te){if(Y!==!0?te.parent.removeChild(te.gutter):(te.gutter[i]("mousedown",te[o]),te.gutter[i]("touchstart",te[o])),ie!==!0){var ge=qr(R,te.a.size,te[a]);Object.keys(ge).forEach(function(Ke){q[te.a].element.style[Ke]="",q[te.b].element.style[Ke]=""})}})}return{setSizes:vt,getSizes:kn,collapse:function(Y){Ar(q[Y])},destroy:Qt,parent:ve,pairs:rn}};return M}))});var o0=gf((IY,BT)=>{"use strict";function az(n,e){this.v=n,this.k=e}function PT(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t2?r-2:0),s=2;s1?t-1:0),i=1;i1?t-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:ac;if(kT&&kT(n,null),!Sa(e))return n;let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){let s=t(i);s!==i&&(fz(e)||(e[r]=s),i=s)}n[i]=!0}return n}function wz(n){for(let e=0;e/g),Az=jt(/\${[\w\W]*/g),Cz=jt(/^data-[\-\w.\u00B7-\uFFFF]+$/),_z=jt(/^aria-[\-\w]+$/),LT=jt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ez=jt(/^(?:\w+script|data):/i),Rz=jt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Mz=jt(/^html$/i),Lz=jt(/^[a-z][.\w]*(-[.\w]+)+$/i),DT=jt(/<[/\w!]/g),ZT=jt(/<[/\w]/g),Dz=jt(/<\/no(script|embed|frames)/i),Zz=jt(/\/>/i),er={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},WT=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],Iz=Wt(Fe({},WT)),Xz=(function(){let n={};return fo(WT,e=>{n[e]=jt(new RegExp("])","i"))}),Wt(n)})(),zz=function(){return typeof window=="undefined"?null:window},Wz=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(r=t.getAttribute(i));let s="dompurify"+(r?"#"+r:"");try{return e.createPolicy(s,{createHTML(o){return o},createScriptURL(o){return o}})}catch(o){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},IT=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},ms=function(e,t,r,i){return Ln(e,t)&&Sa(e[t])?Fe(i.base?tr(i.base):{},e[t],i.transform):r},r0=function(e,t,r){let i=Ln(e,t)?e[t]:void 0;return i&&typeof i=="object"?tr(i):r()};function NT(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:zz(),e=_=>NT(_);if(e.version="3.4.16",e.removed=[],!n||!n.document||n.document.nodeType!==er.document||!n.Element)return e.isSupported=!1,e;let t=n.document,r=t,i=r.currentScript;n.DocumentFragment;let s=n.HTMLTemplateElement,o=n.Node,a=n.Element,l=n.NodeFilter;n.NamedNodeMap===void 0&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;let c=n.DOMParser,d=n.trustedTypes,h=a.prototype,u=kr(h,"cloneNode"),f=kr(h,"remove"),m=kr(h,"removeAttributeNode"),O=kr(h,"nextSibling"),S=kr(h,"childNodes"),x=kr(h,"parentNode"),D=kr(h,"shadowRoot"),M=kr(h,"attributes"),Z=o&&o.prototype?kr(o.prototype,"nodeType"):null,k=o&&o.prototype?kr(o.prototype,"nodeName"):null,w=o&&o.prototype?kr(o.prototype,"ownerDocument"):null,R=function(p){return Z?Z(p):p.nodeType},X=function(p){return k?k(p):p.nodeName};if(typeof s=="function"){let _=t.createElement("template");_.content&&_.content.ownerDocument&&(t=_.content.ownerDocument)}let W,ne="",de,q=!1,pe=0,ve=function(){if(pe>0)throw ps('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},we=function(p){ve(),pe++;try{return W.createHTML(p)}finally{pe--}},B=function(p){ve(),pe++;try{return W.createScriptURL(p)}finally{pe--}},ue=function(){return q||(de=Wz(d,i),q=!0),de},G=t,Pe=G.implementation,Qe=G.createNodeIterator,Ge=G.createDocumentFragment,He=G.getElementsByTagName,Ot=r.importNode,me=IT();e.isSupported=typeof XT=="function"&&typeof x=="function"&&Pe&&Pe.createHTMLDocument!==void 0;let nn=Qz,ir=Tz,sr=Az,or=Cz,di=_z,bs=Ez,qr=Rz,ys=Lz,Dn=LT,ke=null,kn=Fe({},[..._T,...Jb,...e0,...t0,...ET]),be=null,ar=Fe({},[...RT,...n0,...MT,...Fu]),st=Object.seal(ya(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Lt=null,Qr=null,ft=Object.seal(ya(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Tr=!0,lr=!0,rn=!1,Ar=!0,vt=!1,Qt=!0,ie=!1,Y=!1,te=null,ge=null,Ke=!1,Le=!1,ot=!1,xt=!1,cr=!0,dr=!1,hi="user-content-",Gr=!0,ui=!1,wt={},pn=null,Ss=Fe({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ii=null,vs=Fe({},["audio","video","img","source","image","track"]),ws=null,xs=Fe({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",_r="http://www.w3.org/2000/svg",bt="http://www.w3.org/1999/xhtml",mn=bt,fi=!1,pi=null,ka=Fe({},[Cr,_r,bt],Kb),Xi=Wt(["mi","mo","mn","ms","mtext"]),mi=Fe({},Xi),Ps=Wt(["annotation-xml"]),gi=Fe({},Ps),$a=Fe({},["title","style","font","a","script"]),Zn=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",Te=null,gn=null,Aa=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},Oi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(gn&&gn===p)return;(!p||typeof p!="object")&&(p={}),p=tr(p),Zn=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,Te=Zn==="application/xhtml+xml"?Kb:ac,ke=ms(p,"ALLOWED_TAGS",kn,{transform:Te}),be=ms(p,"ALLOWED_ATTR",ar,{transform:Te}),pi=ms(p,"ALLOWED_NAMESPACES",ka,{transform:Kb}),ws=ms(p,"ADD_URI_SAFE_ATTR",xs,{transform:Te,base:xs}),Ii=ms(p,"ADD_DATA_URI_TAGS",vs,{transform:Te,base:vs}),pn=ms(p,"FORBID_CONTENTS",Ss,{transform:Te}),Lt=ms(p,"FORBID_TAGS",tr({}),{transform:Te}),Qr=ms(p,"FORBID_ATTR",tr({}),{transform:Te}),wt=Ln(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?tr(p.USE_PROFILES):p.USE_PROFILES:!1,Tr=p.ALLOW_ARIA_ATTR!==!1,lr=p.ALLOW_DATA_ATTR!==!1,rn=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Ar=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,vt=p.SAFE_FOR_TEMPLATES||!1,Qt=p.SAFE_FOR_XML!==!1,ie=p.WHOLE_DOCUMENT||!1,Le=p.RETURN_DOM||!1,ot=p.RETURN_DOM_FRAGMENT||!1,xt=p.RETURN_TRUSTED_TYPE||!1,Ke=p.FORCE_BODY||!1,cr=p.SANITIZE_DOM!==!1,dr=p.SANITIZE_NAMED_PROPS||!1,Gr=p.KEEP_CONTENT!==!1,ui=p.IN_PLACE||!1,Dn=Pz(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:LT,mn=typeof p.NAMESPACE=="string"?p.NAMESPACE:bt,mi=r0(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Fe({},Xi)),gi=r0(p,"HTML_INTEGRATION_POINTS",()=>Fe({},Ps));let b=r0(p,"CUSTOM_ELEMENT_HANDLING",()=>ya(null));if(st=ya(null),Ln(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(st.tagNameCheck=b.tagNameCheck),Ln(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(st.attributeNameCheck=b.attributeNameCheck),Ln(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),jt(st),vt&&(lr=!1),ot&&(Le=!0),wt&&(ke=Fe({},ET),be=ya(null),wt.html===!0&&(Fe(ke,_T),Fe(be,RT)),wt.svg===!0&&(Fe(ke,Jb),Fe(be,n0),Fe(be,Fu)),wt.svgFilters===!0&&(Fe(ke,e0),Fe(be,n0),Fe(be,Fu)),wt.mathMl===!0&&(Fe(ke,t0),Fe(be,MT),Fe(be,Fu))),ft.tagCheck=null,ft.attributeCheck=null,Ln(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?ft.tagCheck=p.ADD_TAGS:Sa(p.ADD_TAGS)&&(ke===kn&&(ke=tr(ke)),Fe(ke,p.ADD_TAGS,Te))),Ln(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?ft.attributeCheck=p.ADD_ATTR:Sa(p.ADD_ATTR)&&(be===ar&&(be=tr(be)),Fe(be,p.ADD_ATTR,Te))),Ln(p,"ADD_FORBID_CONTENTS")&&Sa(p.ADD_FORBID_CONTENTS)&&(pn===Ss&&(pn=tr(pn)),Fe(pn,p.ADD_FORBID_CONTENTS,Te)),Gr&&(ke["#text"]=!0),ie&&Fe(ke,["html","head","body"]),ke.table&&(Fe(ke,["tbody"]),delete Lt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw ps('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ps('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=W;W=p.TRUSTED_TYPES_POLICY;try{ne=we("")}catch(L){throw W=T,L}}else p.TRUSTED_TYPES_POLICY===null?(W=void 0,ne=""):(W===void 0&&(W=ue()),W&&typeof ne=="string"&&(ne=we("")));Wt&&Wt(p),gn=p},$s=Fe({},[...Jb,...e0,...kz]),Qs=Fe({},[...t0,...$z]),Ca=function(p,b,T){return b.namespaceURI===bt?p==="svg":b.namespaceURI===Cr?p==="svg"&&(T==="annotation-xml"||mi[T]):!!$s[p]},bo=function(p,b,T){return b.namespaceURI===bt?p==="math":b.namespaceURI===_r?p==="math"&&gi[T]:!!Qs[p]},bi=function(p,b,T){return b.namespaceURI===_r&&!gi[T]||b.namespaceURI===Cr&&!mi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},yo=function(p){let b=x(p);(!b||!b.tagName)&&(b={namespaceURI:mn,tagName:"template"});let T=ac(p.tagName),L=ac(b.tagName);return pi[p.namespaceURI]?p.namespaceURI===_r?Ca(T,b,L):p.namespaceURI===Cr?bo(T,b,L):p.namespaceURI===bt?bi(T,b,L):!!(Zn==="application/xhtml+xml"&&pi[p.namespaceURI]):!1},pt=function(p){ic(e.removed,{element:p});try{x(p).removeChild(p)}catch(b){if(f(p),!x(p))throw ps("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ts=function(p,b,T){try{m(p,b)}catch(L){try{p.removeAttribute(T)}catch(V){}}},$n=function(p){Er(p);let b=S(p);if(b){let L=[];fo(b,V=>{ic(L,V)}),fo(L,V=>{try{f(V)}catch(le){}})}let T=M(p);if(T)for(let L=T.length-1;L>=0;--L){let V=T[L],le=V&&V.name;typeof le=="string"&&Ts(p,V,le)}},Dt=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(L){T=null}ic(e.removed,{attribute:T||null,from:b});try{T?m(b,T):b.removeAttribute(p)}catch(L){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Le||ot)try{pt(b)}catch(L){}else try{b.setAttribute(p,"")}catch(L){}},_a=function(p){let b=M(p);if(b)for(let T=b.length-1;T>=0;--T){let L=b[T],V=L&&L.name;typeof V!="string"||be[Te(V)]||Ts(p,L,V)}},Er=function(p){let b=[p];for(;b.length>0;){let T=b.pop();R(T)===er.element&&_a(T);let L=S(T);if(L)for(let V=L.length-1;V>=0;--V)b.push(L[V])}},yi=function(p,b){return Qt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ea=function(p){if(!Qt)return;let b=[p];for(;b.length>0;){let T=b.pop(),L=R(T);if(L===er.processingInstruction||L===er.comment&&fn(ZT,T.data)){try{f(T)}catch(le){}continue}if(L===er.element){let le=T,fe=Te(X(T));try{le.hasAttribute&&le.hasAttribute("patchsrc")&&le.removeAttribute("patchsrc"),le.hasAttribute&&le.hasAttribute("for")&&yi("for",fe)&&le.removeAttribute("for")}catch(Ae){}}let V=S(T);if(V)for(let le=V.length-1;le>=0;--le)b.push(V[le])}},As=function(p){let b=null,T=null;if(Ke)p=""+p;else{let le=QT(p,/^[\r\n\t ]+/);T=le&&le[0]}Zn==="application/xhtml+xml"&&mn===bt&&(p=''+p+"");let L=W?we(p):p;if(mn===bt)try{b=new c().parseFromString(L,Zn)}catch(le){}if(!b||!b.documentElement){b=Pe.createDocument(mn,"template",null);try{b.documentElement.innerHTML=fi?ne:L}catch(le){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mn===bt?He.call(b,ie?"html":"body")[0]:ie?b.documentElement:V},y=function(p){let b=w?w(p):p.ownerDocument;return Qe.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Q=function(p){return p=sc(p,nn," "),p=sc(p,ir," "),p=sc(p,sr," "),p},v=function(p){var b;p.normalize();let T=w?w(p):p.ownerDocument,L=Qe.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=L.nextNode();for(;V;)V.data=Q(V.data),V=L.nextNode();let le=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");le&&fo(le,fe=>{E(fe.content)&&v(fe.content)})},C=function(p){let b=k?k(p):null;return typeof b!="string"||Te(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==M(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==Z(p)||p.childNodes!==S(p)},E=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return Z(p)===er.documentFragment}catch(b){return!1}},A=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return typeof Z(p)=="number"}catch(b){return!1}};function I(_,p,b){_.length!==0&&fo(_,T=>{T.call(e,p,b,gn)})}let j=function(p,b){return!!(Qt&&p.hasChildNodes()&&!A(p.firstElementChild)&&fn(DT,p.textContent)&&fn(DT,p.innerHTML)||Qt&&p.namespaceURI===bt&&Iz[b]&&(A(p.firstElementChild)||typeof p.textContent=="string"&&fn(Xz[b],p.textContent))||p.nodeType===er.processingInstruction||Qt&&p.nodeType===er.comment&&fn(ZT,p.data))},U=function(p,b){if(p instanceof RegExp)return fn(p,b);if(p instanceof Function){for(var T=arguments.length,L=new Array(T>2?T-2:0),V=2;V=0;--fe){let Ae=p===T?u(V[fe],!0):V[fe];L.insertBefore(Ae,O(p))}}}return pt(p),!0},K=function(p,b,T,L){return p.length===0?b:b===T||b===L?tr(b):b},ce=function(p,b){return p===b||x(p)!==null?!1:(ui&&Er(p),!0)},Ce=function(p,b){if(I(me.beforeSanitizeElements,p,null),ce(p,b))return!0;if(C(p))return pt(p),!0;let T=Te(X(p));if(ke=K(me.uponSanitizeElement,ke,kn,te),I(me.uponSanitizeElement,p,{tagName:T,allowedTags:ke}),ce(p,b))return!0;if(j(p,T))return pt(p),!0;if(Lt[T]||!(ft.tagCheck instanceof Function&&ft.tagCheck(T))&&!ke[T]){let L=H(p,T,b);return L===!1&&(I(me.afterSanitizeElements,p,null),ce(p,b))?!0:L}if(R(p)===er.element&&!yo(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&fn(Dz,p.innerHTML))return pt(p),!0;if(vt&&p.nodeType===er.text){let L=Q(p.textContent);p.textContent!==L&&(ic(e.removed,{element:p.cloneNode()}),p.textContent=L)}return I(me.afterSanitizeElements,p,null),ce(p,b)},Ie=function(p,b,T){if(Qr[b]||yi(b,p)||cr&&(b==="id"||b==="name")&&(T in t||T in Aa))return!1;let L=be[b]||ft.attributeCheck instanceof Function&&ft.attributeCheck(b,p);return lr&&fn(or,b)||Tr&&fn(di,b)?!0:L?ws[b]||fn(Dn,sc(T,qr,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&TT(T,"data:")===0&&Ii[p]||rn&&!fn(bs,sc(T,qr,""))?!0:!T:at(p)&&U(st.tagNameCheck,p)&&U(st.attributeNameCheck,b,p)||b==="is"&&st.allowCustomizedBuiltInElements&&U(st.tagNameCheck,T)},Be=Fe({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),at=function(p){return!Be[ac(p)]&&fn(ys,p)},dt=function(p,b,T,L){if(W&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!T)switch(d.getAttributeType(p,b)){case"TrustedHTML":return we(L);case"TrustedScriptURL":return B(L)}return L},sn=function(p,b,T,L){try{return T?p.setAttributeNS(T,b,L):p.setAttribute(b,L),C(p)?(pt(p),!1):!0}catch(V){return Dt(b,p),!1}},Rr=function(p,b){if(I(me.beforeSanitizeAttributes,p,null),ce(p,b))return;let T=p.attributes;if(!T||C(p))return;be=K(me.uponSanitizeAttribute,be,ar,ge);let L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be,forceKeepAttr:void 0},V=T.length,le=Te(p.nodeName);for(;V--;){let fe=T[V],Ae=fe.name,ht=fe.namespaceURI,tt=fe.value,Xn=Te(Ae),Cs=tt,je=Ae==="value"?Cs:bz(Cs),Ra=!1;if(L.attrName=Xn,L.attrValue=je,L.keepAttr=!0,L.forceKeepAttr=void 0,I(me.uponSanitizeAttribute,p,L),je=L.attrValue,dr&&(Xn==="id"||Xn==="name")&&TT(je,hi)!==0&&(Dt(Ae,p,fe),je=hi+je,Ra=!0),Qt&&fn(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Dt(Ae,p,fe);continue}if(Xn==="attributename"&&QT(je,"href")){Dt(Ae,p,fe);continue}if(!L.forceKeepAttr){if(!L.keepAttr){Dt(Ae,p,fe);continue}if(!Ar&&fn(Zz,je)){Dt(Ae,p,fe);continue}if(vt&&(je=Q(je)),!Ie(le,Xn,je)){Dt(Ae,p,fe);continue}je=dt(le,Xn,ht,je),je!==Cs&&sn(p,Ae,ht,je)&&Ra&&$T(e.removed)}}I(me.afterSanitizeAttributes,p,null),ce(p,b)},In=function(p){let b=null,T=y(p);for(I(me.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(I(me.uponSanitizeShadowNode,b,null),Ce(b,p),Rr(b,p),E(b.content)&&In(b.content),R(b)===er.element){let L=D(b);E(L)&&(Si(L),In(L))}I(me.afterSanitizeShadowDOM,p,null)},Si=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){In(T.shadow);continue}let L=T.node,V=R(L)===er.element,le=S(L);if(le)for(let fe=le.length-1;fe>=0;--fe)b.push({node:le[fe],shadow:null});if(V){let fe=k?k(L):null;if(typeof fe=="string"&&Te(fe)==="template"){let Ae=L.content;E(Ae)&&b.push({node:Ae,shadow:null})}}if(V){let fe=D(L);E(fe)&&b.push({node:null,shadow:fe},{node:fe,shadow:null})}}};return e.sanitize=function(_){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,L=null,V=null;if(fi=!_,fi&&(_=""),typeof _!="string"&&!A(_)&&(_=xz(_),typeof _!="string"))throw ps("dirty is not a string, aborting");if(!e.isSupported)return _;Y?(ke=te,be=ge):Oi(p),(me.uponSanitizeElement.length>0||me.uponSanitizeAttribute.length>0)&&(ke=tr(ke)),me.uponSanitizeAttribute.length>0&&(be=tr(be)),e.removed=[];let le=ui&&typeof _!="string"&&A(_);if(le){Ea(_);let ht=X(_);if(typeof ht=="string"){let tt=Te(ht);if(!ke[tt]||Lt[tt])throw $n(_),ps("root node is forbidden and cannot be sanitized in-place")}if(C(_))throw $n(_),ps("root node is clobbered and cannot be sanitized in-place");try{Si(_)}catch(tt){throw $n(_),tt}}else if(A(_))b=As(""),T=b.ownerDocument.importNode(_,!0),T.nodeType===er.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),Si(b);else{if(!Le&&!vt&&!ie&&_.indexOf("<")===-1)return W&&xt?we(_):_;if(b=As(_),!b)return Le?null:xt?ne:""}b&&Ke&&pt(b.firstChild);let fe=le?_:b;try{let ht=y(fe);for(;L=ht.nextNode();)Ce(L,fe),Rr(L,fe),E(L.content)&&In(L.content)}catch(ht){throw le&&($n(_),fo(e.removed,tt=>{tt.element&&Er(tt.element)})),ht}if(le){let ht=!1;if(fo(e.removed,tt=>{tt.element&&(tt.element===_&&(ht=!0),Er(tt.element))}),ht)throw ps("a node selected for removal could not be safely returned; refusing to sanitize in place");return vt&&v(_),_}if(Le){if(vt&&v(b),ot)for(V=Ge.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(be.shadowroot||be.shadowrootmode)&&(V=Ot.call(r,V,!0)),V}let Ae=ie?b.outerHTML:b.innerHTML;return ie&&ke["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&fn(Mz,b.ownerDocument.doctype.name)&&(Ae=" -`+Ae),vt&&(Ae=Q(Ae)),W&&xt?we(Ae):Ae},e.setConfig=function(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Oi(_),Y=!0,te=ke,ge=be},e.clearConfig=function(){gn=null,Y=!1,te=null,ge=null,W=de,ne=""},e.isValidAttribute=function(_,p,b){gn||Oi({});let T=Te(_),L=Te(p);return Ie(T,L,b)},e.addHook=function(_,p){typeof p=="function"&&Ln(me,_)&&ic(me[_],p)},e.removeHook=function(_,p){if(Ln(me,_)){if(p!==void 0){let b=gz(me[_],p);return b===-1?void 0:Oz(me[_],b,1)[0]}return $T(me[_])}},e.removeHooks=function(_){Ln(me,_)&&(me[_]=[])},e.removeAllHooks=function(){me=IT()},e}var Nz=NT();BT.exports=Nz});var y0=Of(Qf());var $c=[{id:"vcs",title:"Making Games For The Atari 2600",url:"https://www.amazon.com/dp/1541021304",image:"book_a2600.png",platforms:["vcs"]},{id:"arcade",title:"Making 8-bit Arcade Games in C",url:"https://www.amazon.com/dp/1545484759",image:"book_arcade.png",platforms:["mw8080bw","vicdual","galaxian","galaxian-scramble","vector-z80color","williams-z80"]},{id:"verilog",title:"Designing Video Game Hardware in Verilog",url:"https://www.amazon.com/dp/1728619440",image:"book_verilog.png",platforms:["verilog"]},{id:"nes",title:"Making Games for the NES",url:"https://www.amazon.com/dp/1075952727",image:"book_nes.png",platforms:["nes"]},{id:"c64",title:"Making Games for the C-64",url:"https://www.amazon.com/dp/B0DMKH8NGL",image:"book_c64.png",platforms:["c64"]}];function N0(n){var e=Nt(n),t=Mr(n);return $c.find(r=>r.platforms.includes(e))||$c.find(r=>r.platforms.includes(t))}var _s="\u2190\u2191\u2193\u2192";var Tc=[{keys:[_s],action:"Joypad"},{keys:["Space"],action:"Button A"},{keys:["Shift"],action:"Button B"}],Tf=[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Button 1"},{keys:["Shift"],action:"Button 2"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"}],Qc=[...Tc,{keys:["\\"],action:"Select"},{keys:["Enter"],action:"Start"}],B0=[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Button"}],V0={vcs:B0,c64:B0,apple2:[{keys:["Mouse"],action:"Paddles/Joystick"},{keys:["Click"],action:"Button 1"},{keys:["SHIFT-Click"],action:"Button 2"},{keys:["ALT-Click"],action:"Button 3"}],nes:Qc,atari7800:Qc,pce:Qc,gb:Qc,msx:Tc,coleco:Tc,sms:[...Tc,{keys:["Enter"],action:"Start"}],vicdual:Tf,galaxian:Tf,vector:Tf,mw8080bw:[{keys:["\u2190\xA0\u2192"],action:"Joystick"},{keys:["Space"],action:"Fire"}],williams:[{keys:["A W S D"],action:"Move"},{keys:[_s],action:"Fire"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"},{keys:["6 7 8 9"],action:"Extra"}],astrocade:[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Trigger"},{keys:["Mouse X"],action:"Knob"},{keys:[`U I O P +import{a as X0}from"./chunk-NTFEI2OH.js";import{a as z0}from"./chunk-SRBQMLE7.js";import"./chunk-JRMUDXWR.js";import{a as kc}from"./chunk-G3VBABUZ.js";import{a as W0,b as N0,c as IA}from"./chunk-3H6WIH6E.js";import{G as Pc,L as kf,j as L0,k as D0,q as Z0,x as I0,y as Pf}from"./chunk-4YTESWOC.js";import"./chunk-UXRCACYH.js";import{A as Nt,B as Mr,E as wc,G as hr,H as _0,J as vf,K as vo,M as wo,N as wf,O as E0,P as xf,Y as xo,Z as R0,a as Hr,aa as M0,b as La,d as yt,e as Da,f as Zt,g as _e,h as bf,i as k0,ia as xc,k as $0,m as yc,n as Q0,o as Sc,p as vc,q as T0,t as So,w as A0,x as yf,y as C0,z as Sf}from"./chunk-VZWSP3EG.js";import{a as Ue,b as zi,c as Ma,e as gf,g as Of}from"./chunk-N7W4C4V2.js";var Qf=gf((B0,$f)=>{(function(n){if(typeof B0=="object"&&typeof $f!="undefined")$f.exports=n();else if(typeof define=="function"&&define.amd)define([],n);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=n()}})(function(){var n,e,t;return(function r(i,s,o){function a(d,h){if(!s[d]){if(!i[d]){var u=typeof Ma=="function"&&Ma;if(!h&&u)return u(d,!0);if(l)return l(d,!0);var f=new Error("Cannot find module '"+d+"'");throw f.code="MODULE_NOT_FOUND",f}var m=s[d]={exports:{}};i[d][0].call(m.exports,function(O){var S=i[d][1][O];return a(S||O)},m,m.exports,r,i,s,o)}return s[d].exports}for(var l=typeof Ma=="function"&&Ma,c=0;c=43)}}).catch(function(){return!1})}function W(y){return typeof D=="boolean"?u.resolve(D):X(y).then(function(Q){return D=Q,D})}function ne(y){var Q=M[y.name],v={};v.promise=new u(function(C,E){v.resolve=C,v.reject=E}),Q.deferredOperations.push(v),Q.dbReady?Q.dbReady=Q.dbReady.then(function(){return v.promise}):Q.dbReady=v.promise}function de(y){var Q=M[y.name],v=Q.deferredOperations.pop();if(v)return v.resolve(),v.promise}function q(y,Q){var v=M[y.name],C=v.deferredOperations.pop();if(C)return C.reject(Q),C.promise}function pe(y,Q){return new u(function(v,C){if(M[y.name]=M[y.name]||Ot(),y.db)if(Q)ne(y),y.db.close();else return v(y.db);var E=[y.name];Q&&E.push(y.version);var A=c.open.apply(c,E);Q&&(A.onupgradeneeded=function(I){var j=A.result;try{j.createObjectStore(y.storeName),I.oldVersion<=1&&j.createObjectStore(x)}catch(U){if(U.name==="ConstraintError")console.warn('The database "'+y.name+'" has been upgraded from version '+I.oldVersion+" to version "+I.newVersion+', but the storage "'+y.storeName+'" already exists.');else throw U}}),A.onerror=function(I){I.preventDefault(),C(A.error)},A.onsuccess=function(){var I=A.result;I.onversionchange=function(j){j.target.close()},v(I),de(y)}})}function ve(y){return pe(y,!1)}function we(y){return pe(y,!0)}function B(y,Q){if(!y.db)return!0;var v=!y.db.objectStoreNames.contains(y.storeName),C=y.versiony.db.version;if(C&&(y.version!==Q&&console.warn('The database "'+y.name+`" can't be downgraded from version `+y.db.version+" to version "+y.version+"."),y.version=y.db.version),E||v){if(v){var A=y.db.version+1;A>y.version&&(y.version=A)}return!0}return!1}function ue(y){return new u(function(Q,v){var C=new FileReader;C.onerror=v,C.onloadend=function(E){var A=btoa(E.target.result||"");Q({__local_forage_encoded_blob:!0,data:A,type:y.type})},C.readAsBinaryString(y)})}function G(y){var Q=R(atob(y.data));return h([Q],{type:y.type})}function Pe(y){return y&&y.__local_forage_encoded_blob}function Qe(y){var Q=this,v=Q._initReady().then(function(){var C=M[Q._dbInfo.name];if(C&&C.dbReady)return C.dbReady});return m(v,y,y),v}function Ge(y){ne(y);for(var Q=M[y.name],v=Q.forages,C=0;C0&&(!y.db||A.name==="InvalidStateError"||A.name==="NotFoundError"))return u.resolve().then(function(){if(!y.db||A.name==="NotFoundError"&&!y.db.objectStoreNames.contains(y.storeName)&&y.version<=y.db.version)return y.db&&(y.version=y.db.version+1),we(y)}).then(function(){return Ge(y).then(function(){He(y,Q,v,C-1)})}).catch(v);v(A)}}function Ot(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function me(y){var Q=this,v={db:null};if(y)for(var C in y)v[C]=y[C];var E=M[v.name];E||(E=Ot(),M[v.name]=E),E.forages.push(Q),Q._initReady||(Q._initReady=Q.ready,Q.ready=Qe);var A=[];function I(){return u.resolve()}for(var j=0;j>4,K[E++]=(I&15)<<4|j>>2,K[E++]=(j&3)<<6|U&63;return H}function xt(y){var Q=new Uint8Array(y),v="",C;for(C=0;C>2],v+=be[(Q[C]&3)<<4|Q[C+1]>>4],v+=be[(Q[C+1]&15)<<2|Q[C+2]>>6],v+=be[Q[C+2]&63];return Q.length%3===2?v=v.substring(0,v.length-1)+"=":Q.length%3===1&&(v=v.substring(0,v.length-2)+"=="),v}function cr(y,Q){var v="";if(y&&(v=Le.call(y)),y&&(v==="[object ArrayBuffer]"||y.buffer&&Le.call(y.buffer)==="[object ArrayBuffer]")){var C,E=Lt;y instanceof ArrayBuffer?(C=y,E+=ft):(C=y.buffer,v==="[object Int8Array]"?E+=lr:v==="[object Uint8Array]"?E+=rn:v==="[object Uint8ClampedArray]"?E+=Ar:v==="[object Int16Array]"?E+=vt:v==="[object Uint16Array]"?E+=ie:v==="[object Int32Array]"?E+=Qt:v==="[object Uint32Array]"?E+=Y:v==="[object Float32Array]"?E+=te:v==="[object Float64Array]"?E+=ge:Q(new Error("Failed to get type for BinaryArray"))),Q(E+xt(C))}else if(v==="[object Blob]"){var A=new FileReader;A.onload=function(){var I=ar+y.type+"~"+xt(this.result);Q(Lt+Tr+I)},A.readAsArrayBuffer(y)}else try{Q(JSON.stringify(y))}catch(I){console.error("Couldn't convert value into a JSON string: ",y),Q(null,I)}}function dr(y){if(y.substring(0,Qr)!==Lt)return JSON.parse(y);var Q=y.substring(Ke),v=y.substring(Qr,Ke),C;if(v===Tr&&st.test(Q)){var E=Q.match(st);C=E[1],Q=Q.substring(E[0].length)}var A=ot(Q);switch(v){case ft:return A;case Tr:return h([A],{type:C});case lr:return new Int8Array(A);case rn:return new Uint8Array(A);case Ar:return new Uint8ClampedArray(A);case vt:return new Int16Array(A);case ie:return new Uint16Array(A);case Qt:return new Int32Array(A);case Y:return new Uint32Array(A);case te:return new Float32Array(A);case ge:return new Float64Array(A);default:throw new Error("Unkown type: "+v)}}var hi={serialize:cr,deserialize:dr,stringToBuffer:ot,bufferToString:xt};function Gr(y,Q,v,C){y.executeSql("CREATE TABLE IF NOT EXISTS "+Q.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],v,C)}function ui(y){var Q=this,v={db:null};if(y)for(var C in y)v[C]=typeof y[C]!="string"?y[C].toString():y[C];var E=new u(function(A,I){try{v.db=openDatabase(v.name,String(v.version),v.description,v.size)}catch(j){return I(j)}v.db.transaction(function(j){Gr(j,v,function(){Q._dbInfo=v,A()},function(U,H){I(H)})},I)});return v.serializer=hi,E}function wt(y,Q,v,C,E,A){y.executeSql(v,C,E,function(I,j){j.code===j.SYNTAX_ERR?I.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[Q.storeName],function(U,H){H.rows.length?A(U,j):Gr(U,Q,function(){U.executeSql(v,C,E,A)},A)},A):A(I,j)},A)}function pn(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT * FROM "+I.storeName+" WHERE key = ? LIMIT 1",[y],function(U,H){var K=H.rows.length?H.rows.item(0).value:null;K&&(K=I.serializer.deserialize(K)),E(K)},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function Ss(y,Q){var v=this,C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT * FROM "+I.storeName,[],function(U,H){for(var K=H.rows,ce=K.length,Ce=0;Ce0){I(Ii.apply(E,[y,U,v,C-1]));return}j(Ce)}})})}).catch(j)});return f(A,v),A}function vs(y,Q,v){return Ii.apply(this,[y,Q,v,1])}function ws(y,Q){var v=this;y=O(y);var C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"DELETE FROM "+I.storeName+" WHERE key = ?",[y],function(){E()},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function xs(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"DELETE FROM "+A.storeName,[],function(){C()},function(j,U){E(U)})})}).catch(E)});return f(v,y),v}function Cr(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"SELECT COUNT(key) as c FROM "+A.storeName,[],function(j,U){var H=U.rows.item(0).c;C(H)},function(j,U){E(U)})})}).catch(E)});return f(v,y),v}function _r(y,Q){var v=this,C=new u(function(E,A){v.ready().then(function(){var I=v._dbInfo;I.db.transaction(function(j){wt(j,I,"SELECT key FROM "+I.storeName+" WHERE id = ? LIMIT 1",[y+1],function(U,H){var K=H.rows.length?H.rows.item(0).key:null;E(K)},function(U,H){A(H)})})}).catch(A)});return f(C,Q),C}function bt(y){var Q=this,v=new u(function(C,E){Q.ready().then(function(){var A=Q._dbInfo;A.db.transaction(function(I){wt(I,A,"SELECT key FROM "+A.storeName,[],function(j,U){for(var H=[],K=0;K '__WebKitDatabaseInfoTable__'",[],function(E,A){for(var I=[],j=0;j0}function gi(y){var Q=this,v={};if(y)for(var C in y)v[C]=y[C];return v.keyPrefix=Xi(y,Q._defaultConfig),Ps()?(Q._dbInfo=v,v.serializer=hi,u.resolve()):u.reject()}function $a(y){var Q=this,v=Q.ready().then(function(){for(var C=Q._dbInfo.keyPrefix,E=localStorage.length-1;E>=0;E--){var A=localStorage.key(E);A.indexOf(C)===0&&localStorage.removeItem(A)}});return f(v,y),v}function Zn(y,Q){var v=this;y=O(y);var C=v.ready().then(function(){var E=v._dbInfo,A=localStorage.getItem(E.keyPrefix+y);return A&&(A=E.serializer.deserialize(A)),A});return f(C,Q),C}function Qa(y,Q){var v=this,C=v.ready().then(function(){for(var E=v._dbInfo,A=E.keyPrefix,I=A.length,j=localStorage.length,U=1,H=0;H=0;I--){var j=localStorage.key(I);j.indexOf(A)===0&&localStorage.removeItem(j)}}):E=u.reject("Invalid arguments"),f(E,Q),E}var $s={_driver:"localStorageWrapper",_initStorage:gi,_support:ka(),iterate:Qa,getItem:Zn,setItem:ks,removeItem:Aa,clear:$a,length:gn,key:Ta,keys:Te,dropInstance:Oi},Qs=function(Q,v){return Q===v||typeof Q=="number"&&typeof v=="number"&&isNaN(Q)&&isNaN(v)},Ca=function(Q,v){for(var C=Q.length,E=0;E{(function(n,e){typeof Vf=="object"&&typeof Ff!="undefined"?Ff.exports=e():typeof define=="function"&&define.amd?define(e):(n=typeof globalThis!="undefined"?globalThis:n||self,n.Split=e())})(Vf,(function(){"use strict";var n=typeof window!="undefined"?window:null,e=n===null,t=e?void 0:n.document,r="addEventListener",i="removeEventListener",s="getBoundingClientRect",o="_a",a="_b",l="_c",c="horizontal",d=function(){return!1},h=e?"calc":["","-webkit-","-moz-","-o-"].filter(function(Z){var k=t.createElement("div");return k.style.cssText="width:"+Z+"calc(9px)",!!k.style.length}).shift()+"calc",u=function(Z){return typeof Z=="string"||Z instanceof String},f=function(Z){if(u(Z)){var k=t.querySelector(Z);if(!k)throw new Error("Selector "+Z+" did not match a DOM element");return k}return Z},m=function(Z,k,w){var R=Z[k];return R!==void 0?R:w},O=function(Z,k,w,R){if(k){if(R==="end")return 0;if(R==="center")return Z/2}else if(w){if(R==="start")return 0;if(R==="center")return Z/2}return Z},S=function(Z,k){var w=t.createElement("div");return w.className="gutter gutter-"+k,w},x=function(Z,k,w){var R={};return u(k)?R[Z]=k:R[Z]=h+"("+k+"% - "+w+"px)",R},D=function(Z,k){var w;return w={},w[Z]=k+"px",w},M=function(Z,k){if(k===void 0&&(k={}),e)return{};var w=Z,R,X,W,ne,de,q;Array.from&&(w=Array.from(w));var pe=f(w[0]),ve=pe.parentNode,we=getComputedStyle?getComputedStyle(ve):null,B=we?we.flexDirection:null,ue=m(k,"sizes")||w.map(function(){return 100/w.length}),G=m(k,"minSize",100),Pe=Array.isArray(G)?G:w.map(function(){return G}),Qe=m(k,"maxSize",1/0),Ge=Array.isArray(Qe)?Qe:w.map(function(){return Qe}),He=m(k,"expandToMin",!1),Ot=m(k,"gutterSize",10),me=m(k,"gutterAlign","center"),nn=m(k,"snapOffset",30),ir=Array.isArray(nn)?nn:w.map(function(){return nn}),sr=m(k,"dragInterval",1),or=m(k,"direction",c),di=m(k,"cursor",or===c?"col-resize":"row-resize"),bs=m(k,"gutter",S),qr=m(k,"elementStyle",x),ys=m(k,"gutterStyle",D);or===c?(R="width",X="clientX",W="left",ne="right",de="clientWidth"):or==="vertical"&&(R="height",X="clientY",W="top",ne="bottom",de="clientHeight");function Dn(ie,Y,te,ge){var Ke=qr(R,Y,te,ge);Object.keys(Ke).forEach(function(Le){ie.style[Le]=Ke[Le]})}function ke(ie,Y,te){var ge=ys(R,Y,te);Object.keys(ge).forEach(function(Ke){ie.style[Ke]=ge[Ke]})}function kn(){return q.map(function(ie){return ie.size})}function be(ie){return"touches"in ie?ie.touches[0][X]:ie[X]}function ar(ie){var Y=q[this.a],te=q[this.b],ge=Y.size+te.size;Y.size=ie/this.size*ge,te.size=ge-ie/this.size*ge,Dn(Y.element,Y.size,this[a],Y.i),Dn(te.element,te.size,this[l],te.i)}function st(ie){var Y,te=q[this.a],ge=q[this.b];this.dragging&&(Y=be(ie)-this.start+(this[a]-this.dragOffset),sr>1&&(Y=Math.round(Y/sr)*sr),Y<=te.minSize+te.snapOffset+this[a]?Y=te.minSize+this[a]:Y>=this.size-(ge.minSize+ge.snapOffset+this[l])&&(Y=this.size-(ge.minSize+this[l])),Y>=te.maxSize-te.snapOffset+this[a]?Y=te.maxSize+this[a]:Y<=this.size-(ge.maxSize-ge.snapOffset+this[l])&&(Y=this.size-(ge.maxSize+this[l])),ar.call(this,Y),m(k,"onDrag",d)(kn()))}function Lt(){var ie=q[this.a].element,Y=q[this.b].element,te=ie[s](),ge=Y[s]();this.size=te[R]+ge[R]+this[a]+this[l],this.start=te[W],this.end=te[ne]}function Qr(ie){if(!getComputedStyle)return null;var Y=getComputedStyle(ie);if(!Y)return null;var te=ie[de];return te===0?null:(or===c?te-=parseFloat(Y.paddingLeft)+parseFloat(Y.paddingRight):te-=parseFloat(Y.paddingTop)+parseFloat(Y.paddingBottom),te)}function ft(ie){var Y=Qr(ve);if(Y===null||Pe.reduce(function(Le,ot){return Le+ot},0)>Y)return ie;var te=0,ge=[],Ke=ie.map(function(Le,ot){var xt=Y*Le/100,cr=O(Ot,ot===0,ot===ie.length-1,me),dr=Pe[ot]+cr;return xt0&&ge[ot]-te>0){var cr=Math.min(te,ge[ot]-te);te-=cr,xt=Le-cr}return xt/Y*100})}function Tr(){var ie=this,Y=q[ie.a].element,te=q[ie.b].element;ie.dragging&&m(k,"onDragEnd",d)(kn()),ie.dragging=!1,n[i]("mouseup",ie.stop),n[i]("touchend",ie.stop),n[i]("touchcancel",ie.stop),n[i]("mousemove",ie.move),n[i]("touchmove",ie.move),ie.stop=null,ie.move=null,Y[i]("selectstart",d),Y[i]("dragstart",d),te[i]("selectstart",d),te[i]("dragstart",d),Y.style.userSelect="",Y.style.webkitUserSelect="",Y.style.MozUserSelect="",Y.style.pointerEvents="",te.style.userSelect="",te.style.webkitUserSelect="",te.style.MozUserSelect="",te.style.pointerEvents="",ie.gutter.style.cursor="",ie.parent.style.cursor="",t.body.style.cursor=""}function lr(ie){if(!("button"in ie&&ie.button!==0)){var Y=this,te=q[Y.a].element,ge=q[Y.b].element;Y.dragging||m(k,"onDragStart",d)(kn()),ie.preventDefault(),Y.dragging=!0,Y.move=st.bind(Y),Y.stop=Tr.bind(Y),n[r]("mouseup",Y.stop),n[r]("touchend",Y.stop),n[r]("touchcancel",Y.stop),n[r]("mousemove",Y.move),n[r]("touchmove",Y.move),te[r]("selectstart",d),te[r]("dragstart",d),ge[r]("selectstart",d),ge[r]("dragstart",d),te.style.userSelect="none",te.style.webkitUserSelect="none",te.style.MozUserSelect="none",te.style.pointerEvents="none",ge.style.userSelect="none",ge.style.webkitUserSelect="none",ge.style.MozUserSelect="none",ge.style.pointerEvents="none",Y.gutter.style.cursor=di,Y.parent.style.cursor=di,t.body.style.cursor=di,Lt.call(Y),Y.dragOffset=be(ie)-Y.end}}ue=ft(ue);var rn=[];q=w.map(function(ie,Y){var te={element:f(ie),size:ue[Y],minSize:Pe[Y],maxSize:Ge[Y],snapOffset:ir[Y],i:Y},ge;if(Y>0&&(ge={a:Y-1,b:Y,dragging:!1,direction:or,parent:ve},ge[a]=O(Ot,Y-1===0,!1,me),ge[l]=O(Ot,!1,Y===w.length-1,me),B==="row-reverse"||B==="column-reverse")){var Ke=ge.a;ge.a=ge.b,ge.b=Ke}if(Y>0){var Le=bs(Y,or,te.element);ke(Le,Ot,Y),ge[o]=lr.bind(ge),Le[r]("mousedown",ge[o]),Le[r]("touchstart",ge[o]),ve.insertBefore(Le,te.element),ge.gutter=Le}return Dn(te.element,te.size,O(Ot,Y===0,Y===w.length-1,me),Y),Y>0&&rn.push(ge),te});function Ar(ie){var Y=ie.i===rn.length,te=Y?rn[ie.i-1]:rn[ie.i];Lt.call(te);var ge=Y?te.size-ie.minSize-te[l]:ie.minSize+te[a];ar.call(te,ge)}q.forEach(function(ie){var Y=ie.element[s]()[R];Y0){var Ke=rn[ge-1],Le=q[Ke.a],ot=q[Ke.b];Le.size=Y[ge-1],ot.size=te,Dn(Le.element,Le.size,Ke[a],Le.i),Dn(ot.element,ot.size,Ke[l],ot.i)}})}function Qt(ie,Y){rn.forEach(function(te){if(Y!==!0?te.parent.removeChild(te.gutter):(te.gutter[i]("mousedown",te[o]),te.gutter[i]("touchstart",te[o])),ie!==!0){var ge=qr(R,te.a.size,te[a]);Object.keys(ge).forEach(function(Ke){q[te.a].element.style[Ke]="",q[te.b].element.style[Ke]=""})}})}return{setSizes:vt,getSizes:kn,collapse:function(Y){Ar(q[Y])},destroy:Qt,parent:ve,pairs:rn}};return M}))});var o0=gf((WY,FT)=>{"use strict";function cz(n,e){this.v=n,this.k=e}function $T(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t2?r-2:0),s=2;s1?t-1:0),i=1;i1?t-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:ac;if(QT&&QT(n,null),!Sa(e))return n;let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){let s=t(i);s!==i&&(mz(e)||(e[r]=s),i=s)}n[i]=!0}return n}function Pz(n){for(let e=0;e/g),_z=jt(/\${[\w\W]*/g),Ez=jt(/^data-[\-\w.\u00B7-\uFFFF]+$/),Rz=jt(/^aria-[\-\w]+$/),ZT=jt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Mz=jt(/^(?:\w+script|data):/i),Lz=jt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Dz=jt(/^html$/i),Zz=jt(/^[a-z][.\w]*(-[.\w]+)+$/i),IT=jt(/<[/\w!]/g),XT=jt(/<[/\w]/g),Iz=jt(/<\/no(script|embed|frames)/i),Xz=jt(/\/>/i),er={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},BT=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],zz=Wt(Fe({},BT)),Wz=(function(){let n={};return fo(BT,e=>{n[e]=jt(new RegExp("])","i"))}),Wt(n)})(),Nz=function(){return typeof window=="undefined"?null:window},Bz=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(r=t.getAttribute(i));let s="dompurify"+(r?"#"+r:"");try{return e.createPolicy(s,{createHTML(o){return o},createScriptURL(o){return o}})}catch(o){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},zT=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},ms=function(e,t,r,i){return Ln(e,t)&&Sa(e[t])?Fe(i.base?tr(i.base):{},e[t],i.transform):r},r0=function(e,t,r){let i=Ln(e,t)?e[t]:void 0;return i&&typeof i=="object"?tr(i):r()};function VT(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Nz(),e=_=>VT(_);if(e.version="3.4.16",e.removed=[],!n||!n.document||n.document.nodeType!==er.document||!n.Element)return e.isSupported=!1,e;let t=n.document,r=t,i=r.currentScript;n.DocumentFragment;let s=n.HTMLTemplateElement,o=n.Node,a=n.Element,l=n.NodeFilter;n.NamedNodeMap===void 0&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;let c=n.DOMParser,d=n.trustedTypes,h=a.prototype,u=kr(h,"cloneNode"),f=kr(h,"remove"),m=kr(h,"removeAttributeNode"),O=kr(h,"nextSibling"),S=kr(h,"childNodes"),x=kr(h,"parentNode"),D=kr(h,"shadowRoot"),M=kr(h,"attributes"),Z=o&&o.prototype?kr(o.prototype,"nodeType"):null,k=o&&o.prototype?kr(o.prototype,"nodeName"):null,w=o&&o.prototype?kr(o.prototype,"ownerDocument"):null,R=function(p){return Z?Z(p):p.nodeType},X=function(p){return k?k(p):p.nodeName};if(typeof s=="function"){let _=t.createElement("template");_.content&&_.content.ownerDocument&&(t=_.content.ownerDocument)}let W,ne="",de,q=!1,pe=0,ve=function(){if(pe>0)throw ps('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},we=function(p){ve(),pe++;try{return W.createHTML(p)}finally{pe--}},B=function(p){ve(),pe++;try{return W.createScriptURL(p)}finally{pe--}},ue=function(){return q||(de=Bz(d,i),q=!0),de},G=t,Pe=G.implementation,Qe=G.createNodeIterator,Ge=G.createDocumentFragment,He=G.getElementsByTagName,Ot=r.importNode,me=zT();e.isSupported=typeof WT=="function"&&typeof x=="function"&&Pe&&Pe.createHTMLDocument!==void 0;let nn=Az,ir=Cz,sr=_z,or=Ez,di=Rz,bs=Mz,qr=Lz,ys=Zz,Dn=ZT,ke=null,kn=Fe({},[...RT,...Jb,...e0,...t0,...MT]),be=null,ar=Fe({},[...LT,...n0,...DT,...Fu]),st=Object.seal(ya(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Lt=null,Qr=null,ft=Object.seal(ya(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Tr=!0,lr=!0,rn=!1,Ar=!0,vt=!1,Qt=!0,ie=!1,Y=!1,te=null,ge=null,Ke=!1,Le=!1,ot=!1,xt=!1,cr=!0,dr=!1,hi="user-content-",Gr=!0,ui=!1,wt={},pn=null,Ss=Fe({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ii=null,vs=Fe({},["audio","video","img","source","image","track"]),ws=null,xs=Fe({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",_r="http://www.w3.org/2000/svg",bt="http://www.w3.org/1999/xhtml",mn=bt,fi=!1,pi=null,ka=Fe({},[Cr,_r,bt],Kb),Xi=Wt(["mi","mo","mn","ms","mtext"]),mi=Fe({},Xi),Ps=Wt(["annotation-xml"]),gi=Fe({},Ps),$a=Fe({},["title","style","font","a","script"]),Zn=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",Te=null,gn=null,Aa=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},Oi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(gn&&gn===p)return;(!p||typeof p!="object")&&(p={}),p=tr(p),Zn=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,Te=Zn==="application/xhtml+xml"?Kb:ac,ke=ms(p,"ALLOWED_TAGS",kn,{transform:Te}),be=ms(p,"ALLOWED_ATTR",ar,{transform:Te}),pi=ms(p,"ALLOWED_NAMESPACES",ka,{transform:Kb}),ws=ms(p,"ADD_URI_SAFE_ATTR",xs,{transform:Te,base:xs}),Ii=ms(p,"ADD_DATA_URI_TAGS",vs,{transform:Te,base:vs}),pn=ms(p,"FORBID_CONTENTS",Ss,{transform:Te}),Lt=ms(p,"FORBID_TAGS",tr({}),{transform:Te}),Qr=ms(p,"FORBID_ATTR",tr({}),{transform:Te}),wt=Ln(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?tr(p.USE_PROFILES):p.USE_PROFILES:!1,Tr=p.ALLOW_ARIA_ATTR!==!1,lr=p.ALLOW_DATA_ATTR!==!1,rn=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Ar=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,vt=p.SAFE_FOR_TEMPLATES||!1,Qt=p.SAFE_FOR_XML!==!1,ie=p.WHOLE_DOCUMENT||!1,Le=p.RETURN_DOM||!1,ot=p.RETURN_DOM_FRAGMENT||!1,xt=p.RETURN_TRUSTED_TYPE||!1,Ke=p.FORCE_BODY||!1,cr=p.SANITIZE_DOM!==!1,dr=p.SANITIZE_NAMED_PROPS||!1,Gr=p.KEEP_CONTENT!==!1,ui=p.IN_PLACE||!1,Dn=$z(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:ZT,mn=typeof p.NAMESPACE=="string"?p.NAMESPACE:bt,mi=r0(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Fe({},Xi)),gi=r0(p,"HTML_INTEGRATION_POINTS",()=>Fe({},Ps));let b=r0(p,"CUSTOM_ELEMENT_HANDLING",()=>ya(null));if(st=ya(null),Ln(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(st.tagNameCheck=b.tagNameCheck),Ln(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(st.attributeNameCheck=b.attributeNameCheck),Ln(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),jt(st),vt&&(lr=!1),ot&&(Le=!0),wt&&(ke=Fe({},MT),be=ya(null),wt.html===!0&&(Fe(ke,RT),Fe(be,LT)),wt.svg===!0&&(Fe(ke,Jb),Fe(be,n0),Fe(be,Fu)),wt.svgFilters===!0&&(Fe(ke,e0),Fe(be,n0),Fe(be,Fu)),wt.mathMl===!0&&(Fe(ke,t0),Fe(be,DT),Fe(be,Fu))),ft.tagCheck=null,ft.attributeCheck=null,Ln(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?ft.tagCheck=p.ADD_TAGS:Sa(p.ADD_TAGS)&&(ke===kn&&(ke=tr(ke)),Fe(ke,p.ADD_TAGS,Te))),Ln(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?ft.attributeCheck=p.ADD_ATTR:Sa(p.ADD_ATTR)&&(be===ar&&(be=tr(be)),Fe(be,p.ADD_ATTR,Te))),Ln(p,"ADD_FORBID_CONTENTS")&&Sa(p.ADD_FORBID_CONTENTS)&&(pn===Ss&&(pn=tr(pn)),Fe(pn,p.ADD_FORBID_CONTENTS,Te)),Gr&&(ke["#text"]=!0),ie&&Fe(ke,["html","head","body"]),ke.table&&(Fe(ke,["tbody"]),delete Lt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw ps('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ps('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=W;W=p.TRUSTED_TYPES_POLICY;try{ne=we("")}catch(L){throw W=T,L}}else p.TRUSTED_TYPES_POLICY===null?(W=void 0,ne=""):(W===void 0&&(W=ue()),W&&typeof ne=="string"&&(ne=we("")));Wt&&Wt(p),gn=p},$s=Fe({},[...Jb,...e0,...Qz]),Qs=Fe({},[...t0,...Tz]),Ca=function(p,b,T){return b.namespaceURI===bt?p==="svg":b.namespaceURI===Cr?p==="svg"&&(T==="annotation-xml"||mi[T]):!!$s[p]},bo=function(p,b,T){return b.namespaceURI===bt?p==="math":b.namespaceURI===_r?p==="math"&&gi[T]:!!Qs[p]},bi=function(p,b,T){return b.namespaceURI===_r&&!gi[T]||b.namespaceURI===Cr&&!mi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},yo=function(p){let b=x(p);(!b||!b.tagName)&&(b={namespaceURI:mn,tagName:"template"});let T=ac(p.tagName),L=ac(b.tagName);return pi[p.namespaceURI]?p.namespaceURI===_r?Ca(T,b,L):p.namespaceURI===Cr?bo(T,b,L):p.namespaceURI===bt?bi(T,b,L):!!(Zn==="application/xhtml+xml"&&pi[p.namespaceURI]):!1},pt=function(p){ic(e.removed,{element:p});try{x(p).removeChild(p)}catch(b){if(f(p),!x(p))throw ps("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ts=function(p,b,T){try{m(p,b)}catch(L){try{p.removeAttribute(T)}catch(V){}}},$n=function(p){Er(p);let b=S(p);if(b){let L=[];fo(b,V=>{ic(L,V)}),fo(L,V=>{try{f(V)}catch(le){}})}let T=M(p);if(T)for(let L=T.length-1;L>=0;--L){let V=T[L],le=V&&V.name;typeof le=="string"&&Ts(p,V,le)}},Dt=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(L){T=null}ic(e.removed,{attribute:T||null,from:b});try{T?m(b,T):b.removeAttribute(p)}catch(L){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Le||ot)try{pt(b)}catch(L){}else try{b.setAttribute(p,"")}catch(L){}},_a=function(p){let b=M(p);if(b)for(let T=b.length-1;T>=0;--T){let L=b[T],V=L&&L.name;typeof V!="string"||be[Te(V)]||Ts(p,L,V)}},Er=function(p){let b=[p];for(;b.length>0;){let T=b.pop();R(T)===er.element&&_a(T);let L=S(T);if(L)for(let V=L.length-1;V>=0;--V)b.push(L[V])}},yi=function(p,b){return Qt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ea=function(p){if(!Qt)return;let b=[p];for(;b.length>0;){let T=b.pop(),L=R(T);if(L===er.processingInstruction||L===er.comment&&fn(XT,T.data)){try{f(T)}catch(le){}continue}if(L===er.element){let le=T,fe=Te(X(T));try{le.hasAttribute&&le.hasAttribute("patchsrc")&&le.removeAttribute("patchsrc"),le.hasAttribute&&le.hasAttribute("for")&&yi("for",fe)&&le.removeAttribute("for")}catch(Ae){}}let V=S(T);if(V)for(let le=V.length-1;le>=0;--le)b.push(V[le])}},As=function(p){let b=null,T=null;if(Ke)p=""+p;else{let le=AT(p,/^[\r\n\t ]+/);T=le&&le[0]}Zn==="application/xhtml+xml"&&mn===bt&&(p=''+p+"");let L=W?we(p):p;if(mn===bt)try{b=new c().parseFromString(L,Zn)}catch(le){}if(!b||!b.documentElement){b=Pe.createDocument(mn,"template",null);try{b.documentElement.innerHTML=fi?ne:L}catch(le){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mn===bt?He.call(b,ie?"html":"body")[0]:ie?b.documentElement:V},y=function(p){let b=w?w(p):p.ownerDocument;return Qe.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Q=function(p){return p=sc(p,nn," "),p=sc(p,ir," "),p=sc(p,sr," "),p},v=function(p){var b;p.normalize();let T=w?w(p):p.ownerDocument,L=Qe.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=L.nextNode();for(;V;)V.data=Q(V.data),V=L.nextNode();let le=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");le&&fo(le,fe=>{E(fe.content)&&v(fe.content)})},C=function(p){let b=k?k(p):null;return typeof b!="string"||Te(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==M(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==Z(p)||p.childNodes!==S(p)},E=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return Z(p)===er.documentFragment}catch(b){return!1}},A=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return typeof Z(p)=="number"}catch(b){return!1}};function I(_,p,b){_.length!==0&&fo(_,T=>{T.call(e,p,b,gn)})}let j=function(p,b){return!!(Qt&&p.hasChildNodes()&&!A(p.firstElementChild)&&fn(IT,p.textContent)&&fn(IT,p.innerHTML)||Qt&&p.namespaceURI===bt&&zz[b]&&(A(p.firstElementChild)||typeof p.textContent=="string"&&fn(Wz[b],p.textContent))||p.nodeType===er.processingInstruction||Qt&&p.nodeType===er.comment&&fn(XT,p.data))},U=function(p,b){if(p instanceof RegExp)return fn(p,b);if(p instanceof Function){for(var T=arguments.length,L=new Array(T>2?T-2:0),V=2;V=0;--fe){let Ae=p===T?u(V[fe],!0):V[fe];L.insertBefore(Ae,O(p))}}}return pt(p),!0},K=function(p,b,T,L){return p.length===0?b:b===T||b===L?tr(b):b},ce=function(p,b){return p===b||x(p)!==null?!1:(ui&&Er(p),!0)},Ce=function(p,b){if(I(me.beforeSanitizeElements,p,null),ce(p,b))return!0;if(C(p))return pt(p),!0;let T=Te(X(p));if(ke=K(me.uponSanitizeElement,ke,kn,te),I(me.uponSanitizeElement,p,{tagName:T,allowedTags:ke}),ce(p,b))return!0;if(j(p,T))return pt(p),!0;if(Lt[T]||!(ft.tagCheck instanceof Function&&ft.tagCheck(T))&&!ke[T]){let L=H(p,T,b);return L===!1&&(I(me.afterSanitizeElements,p,null),ce(p,b))?!0:L}if(R(p)===er.element&&!yo(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&fn(Iz,p.innerHTML))return pt(p),!0;if(vt&&p.nodeType===er.text){let L=Q(p.textContent);p.textContent!==L&&(ic(e.removed,{element:p.cloneNode()}),p.textContent=L)}return I(me.afterSanitizeElements,p,null),ce(p,b)},Ie=function(p,b,T){if(Qr[b]||yi(b,p)||cr&&(b==="id"||b==="name")&&(T in t||T in Aa))return!1;let L=be[b]||ft.attributeCheck instanceof Function&&ft.attributeCheck(b,p);return lr&&fn(or,b)||Tr&&fn(di,b)?!0:L?ws[b]||fn(Dn,sc(T,qr,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&CT(T,"data:")===0&&Ii[p]||rn&&!fn(bs,sc(T,qr,""))?!0:!T:at(p)&&U(st.tagNameCheck,p)&&U(st.attributeNameCheck,b,p)||b==="is"&&st.allowCustomizedBuiltInElements&&U(st.tagNameCheck,T)},Be=Fe({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),at=function(p){return!Be[ac(p)]&&fn(ys,p)},dt=function(p,b,T,L){if(W&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!T)switch(d.getAttributeType(p,b)){case"TrustedHTML":return we(L);case"TrustedScriptURL":return B(L)}return L},sn=function(p,b,T,L){try{return T?p.setAttributeNS(T,b,L):p.setAttribute(b,L),C(p)?(pt(p),!1):!0}catch(V){return Dt(b,p),!1}},Rr=function(p,b){if(I(me.beforeSanitizeAttributes,p,null),ce(p,b))return;let T=p.attributes;if(!T||C(p))return;be=K(me.uponSanitizeAttribute,be,ar,ge);let L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be,forceKeepAttr:void 0},V=T.length,le=Te(p.nodeName);for(;V--;){let fe=T[V],Ae=fe.name,ht=fe.namespaceURI,tt=fe.value,Xn=Te(Ae),Cs=tt,je=Ae==="value"?Cs:Sz(Cs),Ra=!1;if(L.attrName=Xn,L.attrValue=je,L.keepAttr=!0,L.forceKeepAttr=void 0,I(me.uponSanitizeAttribute,p,L),je=L.attrValue,dr&&(Xn==="id"||Xn==="name")&&CT(je,hi)!==0&&(Dt(Ae,p,fe),je=hi+je,Ra=!0),Qt&&fn(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Dt(Ae,p,fe);continue}if(Xn==="attributename"&&AT(je,"href")){Dt(Ae,p,fe);continue}if(!L.forceKeepAttr){if(!L.keepAttr){Dt(Ae,p,fe);continue}if(!Ar&&fn(Xz,je)){Dt(Ae,p,fe);continue}if(vt&&(je=Q(je)),!Ie(le,Xn,je)){Dt(Ae,p,fe);continue}je=dt(le,Xn,ht,je),je!==Cs&&sn(p,Ae,ht,je)&&Ra&&TT(e.removed)}}I(me.afterSanitizeAttributes,p,null),ce(p,b)},In=function(p){let b=null,T=y(p);for(I(me.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(I(me.uponSanitizeShadowNode,b,null),Ce(b,p),Rr(b,p),E(b.content)&&In(b.content),R(b)===er.element){let L=D(b);E(L)&&(Si(L),In(L))}I(me.afterSanitizeShadowDOM,p,null)},Si=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){In(T.shadow);continue}let L=T.node,V=R(L)===er.element,le=S(L);if(le)for(let fe=le.length-1;fe>=0;--fe)b.push({node:le[fe],shadow:null});if(V){let fe=k?k(L):null;if(typeof fe=="string"&&Te(fe)==="template"){let Ae=L.content;E(Ae)&&b.push({node:Ae,shadow:null})}}if(V){let fe=D(L);E(fe)&&b.push({node:null,shadow:fe},{node:fe,shadow:null})}}};return e.sanitize=function(_){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,L=null,V=null;if(fi=!_,fi&&(_=""),typeof _!="string"&&!A(_)&&(_=kz(_),typeof _!="string"))throw ps("dirty is not a string, aborting");if(!e.isSupported)return _;Y?(ke=te,be=ge):Oi(p),(me.uponSanitizeElement.length>0||me.uponSanitizeAttribute.length>0)&&(ke=tr(ke)),me.uponSanitizeAttribute.length>0&&(be=tr(be)),e.removed=[];let le=ui&&typeof _!="string"&&A(_);if(le){Ea(_);let ht=X(_);if(typeof ht=="string"){let tt=Te(ht);if(!ke[tt]||Lt[tt])throw $n(_),ps("root node is forbidden and cannot be sanitized in-place")}if(C(_))throw $n(_),ps("root node is clobbered and cannot be sanitized in-place");try{Si(_)}catch(tt){throw $n(_),tt}}else if(A(_))b=As(""),T=b.ownerDocument.importNode(_,!0),T.nodeType===er.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),Si(b);else{if(!Le&&!vt&&!ie&&_.indexOf("<")===-1)return W&&xt?we(_):_;if(b=As(_),!b)return Le?null:xt?ne:""}b&&Ke&&pt(b.firstChild);let fe=le?_:b;try{let ht=y(fe);for(;L=ht.nextNode();)Ce(L,fe),Rr(L,fe),E(L.content)&&In(L.content)}catch(ht){throw le&&($n(_),fo(e.removed,tt=>{tt.element&&Er(tt.element)})),ht}if(le){let ht=!1;if(fo(e.removed,tt=>{tt.element&&(tt.element===_&&(ht=!0),Er(tt.element))}),ht)throw ps("a node selected for removal could not be safely returned; refusing to sanitize in place");return vt&&v(_),_}if(Le){if(vt&&v(b),ot)for(V=Ge.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(be.shadowroot||be.shadowrootmode)&&(V=Ot.call(r,V,!0)),V}let Ae=ie?b.outerHTML:b.innerHTML;return ie&&ke["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&fn(Dz,b.ownerDocument.doctype.name)&&(Ae=" +`+Ae),vt&&(Ae=Q(Ae)),W&&xt?we(Ae):Ae},e.setConfig=function(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Oi(_),Y=!0,te=ke,ge=be},e.clearConfig=function(){gn=null,Y=!1,te=null,ge=null,W=de,ne=""},e.isValidAttribute=function(_,p,b){gn||Oi({});let T=Te(_),L=Te(p);return Ie(T,L,b)},e.addHook=function(_,p){typeof p=="function"&&Ln(me,_)&&ic(me[_],p)},e.removeHook=function(_,p){if(Ln(me,_)){if(p!==void 0){let b=bz(me[_],p);return b===-1?void 0:yz(me[_],b,1)[0]}return TT(me[_])}},e.removeHooks=function(_){Ln(me,_)&&(me[_]=[])},e.removeAllHooks=function(){me=zT()},e}var Vz=VT();FT.exports=Vz});var y0=Of(Qf());var $c=[{id:"vcs",title:"Making Games For The Atari 2600",url:"https://www.amazon.com/dp/1541021304",image:"book_a2600.png",platforms:["vcs"]},{id:"arcade",title:"Making 8-bit Arcade Games in C",url:"https://www.amazon.com/dp/1545484759",image:"book_arcade.png",platforms:["mw8080bw","vicdual","galaxian","galaxian-scramble","vector-z80color","williams-z80"]},{id:"verilog",title:"Designing Video Game Hardware in Verilog",url:"https://www.amazon.com/dp/1728619440",image:"book_verilog.png",platforms:["verilog"]},{id:"nes",title:"Making Games for the NES",url:"https://www.amazon.com/dp/1075952727",image:"book_nes.png",platforms:["nes"]},{id:"c64",title:"Making Games for the C-64",url:"https://www.amazon.com/dp/B0DMKH8NGL",image:"book_c64.png",platforms:["c64"]}];function V0(n){var e=Nt(n),t=Mr(n);return $c.find(r=>r.platforms.includes(e))||$c.find(r=>r.platforms.includes(t))}var _s="\u2190\u2191\u2193\u2192";var Tc=[{keys:[_s],action:"Joypad"},{keys:["Space"],action:"Button A"},{keys:["Shift"],action:"Button B"}],Tf=[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Button 1"},{keys:["Shift"],action:"Button 2"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"}],Qc=[...Tc,{keys:["\\"],action:"Select"},{keys:["Enter"],action:"Start"}],F0=[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Button"}],Y0={vcs:F0,c64:F0,apple2:[{keys:["Mouse"],action:"Paddles/Joystick"},{keys:["Click"],action:"Button 1"},{keys:["SHIFT-Click"],action:"Button 2"},{keys:["ALT-Click"],action:"Button 3"}],nes:Qc,atari7800:Qc,pce:Qc,gb:Qc,msx:Tc,coleco:Tc,sms:[...Tc,{keys:["Enter"],action:"Start"}],vicdual:Tf,galaxian:Tf,vector:Tf,mw8080bw:[{keys:["\u2190\xA0\u2192"],action:"Joystick"},{keys:["Space"],action:"Fire"}],williams:[{keys:["A W S D"],action:"Move"},{keys:[_s],action:"Fire"},{keys:["\\"],action:"Coin"},{keys:["Enter"],action:"Start"},{keys:["6 7 8 9"],action:"Extra"}],astrocade:[{keys:[_s],action:"Joystick"},{keys:["Space"],action:"Trigger"},{keys:["Mouse X"],action:"Knob"},{keys:[`U I O P J K L / 7 8 9 X 4 5 6 - 1 2 3 , -\\ 0 . =`],action:"Keypad"}],vectrex:[{keys:[_s],action:"Joystick"},{keys:["Z X C V"],action:"Buttons"}],atari8:[{keys:[_s],action:"Joystick"},{keys:["Shift"],action:"Button"},{keys:["F1"],action:"Start"},{keys:["F2"],action:"Select"},{keys:["F3"],action:"Option"}],pacman:[{keys:["\u2190\xA0\u2192"],action:"Joystick"},{keys:["Space"],action:"Fire"},{keys:["5","6"],action:"Coin"},{keys:["Enter","2"],action:"Start"}]};var ZA={left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown"},Af=null;function Po(){if(Af===null){var n=typeof navigator!="undefined"?navigator:null;Af=!!n&&/mac|iphone|ipad|ipod/i.test(n.platform||n.userAgent||"")}return Af}function _f(n){var e=n.toLowerCase().split("+"),t=e.pop(),r={mod:!1,shift:!1,key:""};for(var i of e)if(i=="mod"||i=="ctrl"||i=="meta"||i=="cmd")r.mod=!0;else if(i=="shift")r.shift=!0;else return console.warn('Keyboard shortcut "'+n+'": unsupported modifier "'+i+'" (alt is layout-dependent), skipping'),null;t=ZA[t]||t;var s=/^[a-z]$/.test(t),o=/^f([1-9]|1[0-2])$/.test(t);return!s&&!o&&!/^[0-9]$/.test(t)&&!/^arrow/.test(t)?(console.warn('Keyboard shortcut "'+n+'": key "'+t+'" is layout-dependent (use a-z, 0-9, f1-f12), skipping'),null):r.shift&&!s&&!/^arrow/.test(t)?(console.warn('Keyboard shortcut "'+n+'": shift is only allowed with letters and arrows, skipping'),null):(r.key=t,r)}function IA(n,e){if(e.altKey)return!1;var t=Po(),r=t?e.metaKey:e.ctrlKey,i=t?e.ctrlKey:e.metaKey;return n.mod!==r||i||n.shift!==e.shiftKey?!1:(e.key||"").toLowerCase()===n.key}var Ac=class{constructor(){this.bindings=[];this.handler=e=>{if(!e.defaultPrevented)for(var t=0;te.indexOf(c)>=0);for(var o of e)s.indexOf(o)<0&&s.push(o);var a=s.map(c=>r?NA[c]||c:BA[c]||c).join(r?"":"+"),l=/^[a-z][0-9]?$/.test(t)?t.toUpperCase():VA[t]||(r?t:t.charAt(0).toUpperCase()+t.slice(1));return(a?a+(r?"":"+"):"")+l}var Mf=class{constructor(e){this.shortcutsSig="";this.status={};this.visible=!0;this.pendingShortcuts=!1;this.pendingStatus=!1;this.div=e,this.shortcutsZone=$(document.createElement("span")).addClass("shortcuts_zone"),this.statusZone=$(document.createElement("span")).addClass("status_zone"),$(e).append(this.shortcutsZone).append(this.statusZone)}setShortcuts(e){if(this.visible){var t=e.map(s=>s.key+""+s.label).join("");if(t!==this.shortcutsSig){if(Za){this.pendingShortcuts=!0;return}this.shortcutsSig=t,this.shortcutsZone.empty();for(var r of e){var i=$(document.createElement("span")).addClass("shortcut");i.append($(document.createElement("kbd")).text(Lf(r.key))),i.append(document.createTextNode(" "+r.label)),r.fn&&Y0(i,r.fn),this.shortcutsZone.append(i)}}}}setStatus(e,t){t?this.status[e]=t:delete this.status[e],this.renderStatus()}renderStatus(){if(this.visible){if(Za){this.pendingStatus=!0;return}this.statusZone.empty();for(var e of Object.keys(this.status)){var t=this.status[e],r=$(document.createElement("span")).addClass("status_item");t.cls&&r.addClass(t.cls),t.title&&r.prop("title",t.title),r.text(t.text),t.fn&&Y0(r,t.fn),this.statusZone.append(r)}}}};function Y0(n,e){n.addClass("clickable"),n.mousedown(t=>t.preventDefault()),n.click(e)}var Za=!1;function j0(){zn&&(zn.pendingShortcuts&&(zn.pendingShortcuts=!1,Wn()),zn.pendingStatus&&(zn.pendingStatus=!1,zn.renderStatus()))}function FA(){$(document).on("mousedown.shortcutbar",()=>{Za=!0}),$(document).on("mouseup.shortcutbar",()=>{Za=!1,j0()}),$(window).on("blur.shortcutbar",()=>{Za=!1,j0()})}var zn=null;function U0(n){zn=new Mf(n),FA()}var q0=()=>[],G0=()=>[];function H0(n){q0=n}function K0(n){G0=n}function Cc(n){$(document.body).toggleClass("statusbar-hidden",!n),zn&&(zn.visible=n,n&&(zn.shortcutsSig="",zn.renderStatus(),Wn()))}function Wn(){if(zn){var n=[...q0(),...G0()],e=document.activeElement;for(var t of J0)e&&t.div.contains(e)&&(n=n.concat(t.fn()));zn.setShortcuts(n.filter(r=>!YA(r.key)))}}var J0=[];function ey(n,e){J0.push({div:n,fn:e})}function YA(n){var e=n.toLowerCase();return!Po()&&(e=="mod+shift+i"||e=="mod+shift+j"||e=="mod+shift+k"||e=="ctrl+alt+t"||e=="ctrl+alt+l")}function jA(){return I0()}function UA(n){if(n._8bwPatched)return n;var e=n.stopCallback;return n.stopCallback=function(t,r,i,s){return t&&(t.ctrlKey||t.altKey||t.metaKey)?t.getModifierState&&t.getModifierState("AltGraph")?e.call(this,t,r,i,s):!1:e.call(this,t,r,i,s)},n._8bwPatched=!0,n}var Wi=class{constructor(e,t){this.boundkeys=[];let r=UA(jA());this.focusDiv=t,this.keybinder=new Ac,this.keybinder.attach(),this.mousetrap=t?new r(t):r,this.span=$(document.createElement("span")).addClass("btn_toolbar"),e.appendChild(this.span[0]),this.newGroup()}destroy(){if(this.span&&(this.span.remove(),this.span=null),this.keybinder&&(this.keybinder.detach(),this.keybinder.unbindAll(),this.keybinder=null),this.mousetrap){for(var e of this.boundkeys)this.mousetrap.unbind(e);this.mousetrap=null}}newGroup(){return this.grp=$(document.createElement("span")).addClass("btn_group").appendTo(this.span).hide()}add(e,t,r,i){var s=null;return r&&(s=$(document.createElement("button")).addClass("btn"),r.startsWith("glyphicon")&&(r=''),s.html(r),s.prop("title",e?t+" ("+Lf(e)+")":t),s.click(i),this.grp.append(s).show()),e&&(!this.focusDiv&&_f(e)?this.keybinder.bind(e,i):(this.mousetrap.bind(e,(o,a)=>(i(o,a),!1)),this.boundkeys.push(e))),s}};var ty=[];function ny(n,e){ty.push({div:n,id:e})}function ry(){let n=document.activeElement;if(!n)return null;for(let e of ty)if(e.div.contains(n))return e.id;return null}function Nn(n){var e=n&&n.w+"px"||"100%",t=n&&n.h+"px"||"100%",r=this.itemHeight=n.itemHeight;this.items=n.items,this.generatorFn=n.generatorFn,this.totalRows=n.totalRows||n.items&&n.items.length;var i=Nn.createScroller(r*this.totalRows);this.container=Nn.createContainer(e,t),this.container.appendChild(i);var s=Math.ceil(n.h/r);this.cachedItemsLen=s*3,this._renderChunk(this.container,0);var o=this,a,l=s*r,c=0;this.rmNodeInterval=setInterval(function(){if(Date.now()-c>100)for(var h=document.querySelectorAll('[data-rm="1"]'),u=0,f=h.length;ul){var f=Math.floor(u/r)-s;o._renderChunk(o.container,f<0?0:f),a=u}c=Date.now(),h.preventDefault&&h.preventDefault()}this.container.addEventListener("scroll",d)}Nn.prototype.createRow=function(n){var e;if(this.generatorFn)e=this.generatorFn(n);else if(this.items)if(typeof this.items[n]=="string"){var t=document.createTextNode(this.items[n]);e=document.createElement("div"),e.style.height=this.itemHeight+"px",e.appendChild(t)}else e=this.items[n];return e.classList.add("vrow"),e.setAttribute("data-index",""+n),e.style.position="absolute",e.style.top=n*this.itemHeight+"px",e};Nn.prototype._renderChunk=function(n,e){var t=e+this.cachedItemsLen;t>this.totalRows&&(t=this.totalRows);for(var r=document.createDocumentFragment(),i=e;ithis.setZoom(this.zoom*2)},{key:"-",label:"Zoom Out",icon:"glyphicon-zoom-out",fn:()=>this.setZoom(this.zoom/2)},{key:"ctrl+shift+left",label:"To Start",icon:"glyphicon-backward",fn:()=>{this.setSelTime(0),this.setOrgTime(0)}},{key:"shift+left",label:"Page Left",icon:"glyphicon-fast-backward",fn:()=>this.setSelTime(this.tsel-this.clocksPerPage/4)},{key:"left",label:"Left",icon:"glyphicon-step-backward",fn:()=>this.setSelTime(this.tsel-1)},{key:"right",label:"Right",icon:"glyphicon-step-forward",fn:()=>this.setSelTime(this.tsel+1)},{key:"shift+right",label:"Page Right",icon:"glyphicon-fast-forward",fn:()=>this.setSelTime(this.tsel+this.clocksPerPage/4)},{key:"space",label:"Go To Current",icon:"glyphicon-flash",fn:()=>{this.setOrgTime(this.tnow),this.setSelTime(this.tnow)}},{key:"h",label:"Hex/Dec",icon:"glyphicon-barcode",fn:()=>{this.hexformat=!this.hexformat,this.refresh()}}]}roundT(e){return e=Math.round(e),e=Math.max(0,e),e=Math.min(this.clockMax+this.clocksPerPage/2,e),e}setOrgTime(e){this.t0=this.roundT(e),this.refresh()}setCurrentTime(e){this.tnow=this.roundT(e),this.refresh()}setSelTime(e){e=this.roundT(e),e>=this.t0+this.clocksPerPage-1&&(this.t0+=this.clocksPerPage/4),e<=this.t0+2&&(this.t0-=this.clocksPerPage/4),this.tsel=e,this.setOrgTime(this.t0),this.selectionChanged()}setClocksPerPage(){this.clocksPerPage=Math.floor(this.pageWidth/this.zoom)-1}setZoom(e){this.zoom=Math.max(1/16,Math.min(64,e)),this.setClocksPerPage(),this.t0=Math.max(0,Math.round(this.tsel-this.clocksPerPage/2)),this.refresh()}refresh(){if(this.meta||this.recreate(),!!this.meta)for(var e=0;e3&&(i=`${t.len}'h${i}`),i}isEditable(e){return e&&e.input&&qA.indexOf(e.label)<0}refreshRow(e){var t=this.lines[e],r=this.meta[e];if(!t||!r)return;var i=r.label=="clk",s=t.width,o=t.height,a=t.getContext("2d"),l="14px Andale Mono, Lucida Console, monospace",c="10px Andale Mono, Lucida Console, monospace";a.font=l,a.clearRect(0,0,t.width,t.height);var d=[];this.isEditable(r)&&d.push("input");var h=12,u=h+4,f=4,m=o-u-f,O=r.len==32?4294967296:(1<1&&this.zoom>=32,D=u+m-4;a.fillStyle="#336633",a.fillRect(0,h/2,3,u+m-h/2);let M=a.strokeStyle="#33dd33",Z=a.fillStyle="#66ffff",k="#dddddd";a.beginPath();for(var w=0,R=0,X=-1,W=0;W4&&(a.font=c),a.fillText(q,w+this.zoom/4,de)}W>0&&a.lineTo(w,R),R=u+(1-ne/O)*m,i||(w+=this.zoom*(1/8)),W==0?a.moveTo(w,R):a.lineTo(w,R),this.zoom>.75&&X!=ne&&Math.abs(X-ne)=this.t0){a.strokeStyle=a.fillStyle="#ff66ff",a.beginPath(),w=(this.tsel-this.t0)*this.zoom+this.zoom/2,a.moveTo(w,0),a.lineTo(w,o),a.stroke();var ne=S[this.tsel-this.t0];if(a.textAlign="right",ne!==void 0){var pe=this.value2str(ne,r),w=s-h,ve=a.measureText(pe);a.fillStyle="black",a.fillRect(w-ve.width-2,D-13,ve.width+4,17),a.fillStyle="#ff66ff",a.fillText(pe,w,D)}}this.tnow>=this.t0&&(a.strokeStyle=a.fillStyle="#6666cc",a.beginPath(),w=(this.tnow-this.t0)*this.zoom+this.zoom/2,a.moveTo(w,0),a.lineTo(w,o),a.stroke()),a.fillStyle=k,a.textAlign="left";var we=r.label;d.length>0&&(we+=" ("+d.join(", ")+")"),a.fillText(we,5,h)}changeInputValue(e){var t=this.meta[e];if(t){var r=this.wfp.getSignalData(e,this.t0,1),i=r[0]||0,s=0,o=(1<0?0:1):this.promptValue(t,i,s,o).then(a=>{a!=null&&a>=s&&a<=o&&this.wfp.setSignalValue(e,a)})}}};function GA(n,e){this.v=n,this.k=e}function iy(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t2?r-2:0),s=2;s1?t-1:0),i=1;i1?t-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:Wa;if(sy&&sy(n,null),!$o(e))return n;let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){let s=t(i);s!==i&&(nC(e)||(e[r]=s),i=s)}n[i]=!0}return n}function hC(n){for(let e=0;e/g),bC=Bt(/\${[\w\W]*/g),yC=Bt(/^data-[\-\w.\u00B7-\uFFFF]+$/),SC=Bt(/^aria-[\-\w]+$/),my=Bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),vC=Bt(/^(?:\w+script|data):/i),wC=Bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),xC=Bt(/^html$/i),PC=Bt(/^[a-z][.\w]*(-[.\w]+)+$/i),gy=Bt(/<[/\w!]/g),Oy=Bt(/<[/\w]/g),kC=Bt(/<\/no(script|embed|frames)/i),$C=Bt(/\/>/i),Bn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},vy=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],QC=It(Ve({},vy)),TC=(function(){let n={};return Es(vy,e=>{n[e]=Bt(new RegExp("])","i"))}),It(n)})(),AC=function(){return typeof window=="undefined"?null:window},CC=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(r=t.getAttribute(i));let s="dompurify"+(r?"#"+r:"");try{return e.createPolicy(s,{createHTML(o){return o},createScriptURL(o){return o}})}catch(o){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},by=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Bi=function(e,t,r,i){return Qn(e,t)&&$o(e[t])?Ve(i.base?Vn(i.base):{},e[t],i.transform):r},Wf=function(e,t,r){let i=Qn(e,t)?e[t]:void 0;return i&&typeof i=="object"?Vn(i):r()};function wy(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:AC(),e=_=>wy(_);if(e.version="3.4.16",e.removed=[],!n||!n.document||n.document.nodeType!==Bn.document||!n.Element)return e.isSupported=!1,e;let t=n.document,r=t,i=r.currentScript;n.DocumentFragment;let s=n.HTMLTemplateElement,o=n.Node,a=n.Element,l=n.NodeFilter;n.NamedNodeMap===void 0&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;let c=n.DOMParser,d=n.trustedTypes,h=a.prototype,u=ur(h,"cloneNode"),f=ur(h,"remove"),m=ur(h,"removeAttributeNode"),O=ur(h,"nextSibling"),S=ur(h,"childNodes"),x=ur(h,"parentNode"),D=ur(h,"shadowRoot"),M=ur(h,"attributes"),Z=o&&o.prototype?ur(o.prototype,"nodeType"):null,k=o&&o.prototype?ur(o.prototype,"nodeName"):null,w=o&&o.prototype?ur(o.prototype,"ownerDocument"):null,R=function(p){return Z?Z(p):p.nodeType},X=function(p){return k?k(p):p.nodeName};if(typeof s=="function"){let _=t.createElement("template");_.content&&_.content.ownerDocument&&(t=_.content.ownerDocument)}let W,ne="",de,q=!1,pe=0,ve=function(){if(pe>0)throw Ni('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},we=function(p){ve(),pe++;try{return W.createHTML(p)}finally{pe--}},B=function(p){ve(),pe++;try{return W.createScriptURL(p)}finally{pe--}},ue=function(){return q||(de=CC(d,i),q=!0),de},G=t,Pe=G.implementation,Qe=G.createNodeIterator,Ge=G.createDocumentFragment,He=G.getElementsByTagName,Ot=r.importNode,me=by();e.isSupported=typeof yy=="function"&&typeof x=="function"&&Pe&&Pe.createHTMLDocument!==void 0;let nn=gC,ir=OC,sr=bC,or=yC,di=SC,bs=vC,qr=wC,ys=PC,Dn=my,ke=null,kn=Ve({},[...hy,...Zf,...If,...Xf,...uy]),be=null,ar=Ve({},[...fy,...zf,...py,...Rc]),st=Object.seal(ko(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Lt=null,Qr=null,ft=Object.seal(ko(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Tr=!0,lr=!0,rn=!1,Ar=!0,vt=!1,Qt=!0,ie=!1,Y=!1,te=null,ge=null,Ke=!1,Le=!1,ot=!1,xt=!1,cr=!0,dr=!1,hi="user-content-",Gr=!0,ui=!1,wt={},pn=null,Ss=Ve({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ii=null,vs=Ve({},["audio","video","img","source","image","track"]),ws=null,xs=Ve({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",_r="http://www.w3.org/2000/svg",bt="http://www.w3.org/1999/xhtml",mn=bt,fi=!1,pi=null,ka=Ve({},[Cr,_r,bt],Df),Xi=It(["mi","mo","mn","ms","mtext"]),mi=Ve({},Xi),Ps=It(["annotation-xml"]),gi=Ve({},Ps),$a=Ve({},["title","style","font","a","script"]),Zn=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",Te=null,gn=null,Aa=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},Oi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(gn&&gn===p)return;(!p||typeof p!="object")&&(p={}),p=Vn(p),Zn=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,Te=Zn==="application/xhtml+xml"?Df:Wa,ke=Bi(p,"ALLOWED_TAGS",kn,{transform:Te}),be=Bi(p,"ALLOWED_ATTR",ar,{transform:Te}),pi=Bi(p,"ALLOWED_NAMESPACES",ka,{transform:Df}),ws=Bi(p,"ADD_URI_SAFE_ATTR",xs,{transform:Te,base:xs}),Ii=Bi(p,"ADD_DATA_URI_TAGS",vs,{transform:Te,base:vs}),pn=Bi(p,"FORBID_CONTENTS",Ss,{transform:Te}),Lt=Bi(p,"FORBID_TAGS",Vn({}),{transform:Te}),Qr=Bi(p,"FORBID_ATTR",Vn({}),{transform:Te}),wt=Qn(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?Vn(p.USE_PROFILES):p.USE_PROFILES:!1,Tr=p.ALLOW_ARIA_ATTR!==!1,lr=p.ALLOW_DATA_ATTR!==!1,rn=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Ar=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,vt=p.SAFE_FOR_TEMPLATES||!1,Qt=p.SAFE_FOR_XML!==!1,ie=p.WHOLE_DOCUMENT||!1,Le=p.RETURN_DOM||!1,ot=p.RETURN_DOM_FRAGMENT||!1,xt=p.RETURN_TRUSTED_TYPE||!1,Ke=p.FORCE_BODY||!1,cr=p.SANITIZE_DOM!==!1,dr=p.SANITIZE_NAMED_PROPS||!1,Gr=p.KEEP_CONTENT!==!1,ui=p.IN_PLACE||!1,Dn=fC(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:my,mn=typeof p.NAMESPACE=="string"?p.NAMESPACE:bt,mi=Wf(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Ve({},Xi)),gi=Wf(p,"HTML_INTEGRATION_POINTS",()=>Ve({},Ps));let b=Wf(p,"CUSTOM_ELEMENT_HANDLING",()=>ko(null));if(st=ko(null),Qn(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(st.tagNameCheck=b.tagNameCheck),Qn(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(st.attributeNameCheck=b.attributeNameCheck),Qn(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),Bt(st),vt&&(lr=!1),ot&&(Le=!0),wt&&(ke=Ve({},uy),be=ko(null),wt.html===!0&&(Ve(ke,hy),Ve(be,fy)),wt.svg===!0&&(Ve(ke,Zf),Ve(be,zf),Ve(be,Rc)),wt.svgFilters===!0&&(Ve(ke,If),Ve(be,zf),Ve(be,Rc)),wt.mathMl===!0&&(Ve(ke,Xf),Ve(be,py),Ve(be,Rc))),ft.tagCheck=null,ft.attributeCheck=null,Qn(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?ft.tagCheck=p.ADD_TAGS:$o(p.ADD_TAGS)&&(ke===kn&&(ke=Vn(ke)),Ve(ke,p.ADD_TAGS,Te))),Qn(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?ft.attributeCheck=p.ADD_ATTR:$o(p.ADD_ATTR)&&(be===ar&&(be=Vn(be)),Ve(be,p.ADD_ATTR,Te))),Qn(p,"ADD_FORBID_CONTENTS")&&$o(p.ADD_FORBID_CONTENTS)&&(pn===Ss&&(pn=Vn(pn)),Ve(pn,p.ADD_FORBID_CONTENTS,Te)),Gr&&(ke["#text"]=!0),ie&&Ve(ke,["html","head","body"]),ke.table&&(Ve(ke,["tbody"]),delete Lt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=W;W=p.TRUSTED_TYPES_POLICY;try{ne=we("")}catch(L){throw W=T,L}}else p.TRUSTED_TYPES_POLICY===null?(W=void 0,ne=""):(W===void 0&&(W=ue()),W&&typeof ne=="string"&&(ne=we("")));It&&It(p),gn=p},$s=Ve({},[...Zf,...If,...pC]),Qs=Ve({},[...Xf,...mC]),Ca=function(p,b,T){return b.namespaceURI===bt?p==="svg":b.namespaceURI===Cr?p==="svg"&&(T==="annotation-xml"||mi[T]):!!$s[p]},bo=function(p,b,T){return b.namespaceURI===bt?p==="math":b.namespaceURI===_r?p==="math"&&gi[T]:!!Qs[p]},bi=function(p,b,T){return b.namespaceURI===_r&&!gi[T]||b.namespaceURI===Cr&&!mi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},yo=function(p){let b=x(p);(!b||!b.tagName)&&(b={namespaceURI:mn,tagName:"template"});let T=Wa(p.tagName),L=Wa(b.tagName);return pi[p.namespaceURI]?p.namespaceURI===_r?Ca(T,b,L):p.namespaceURI===Cr?bo(T,b,L):p.namespaceURI===bt?bi(T,b,L):!!(Zn==="application/xhtml+xml"&&pi[p.namespaceURI]):!1},pt=function(p){Ia(e.removed,{element:p});try{x(p).removeChild(p)}catch(b){if(f(p),!x(p))throw Ni("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ts=function(p,b,T){try{m(p,b)}catch(L){try{p.removeAttribute(T)}catch(V){}}},$n=function(p){Er(p);let b=S(p);if(b){let L=[];Es(b,V=>{Ia(L,V)}),Es(L,V=>{try{f(V)}catch(le){}})}let T=M(p);if(T)for(let L=T.length-1;L>=0;--L){let V=T[L],le=V&&V.name;typeof le=="string"&&Ts(p,V,le)}},Dt=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(L){T=null}Ia(e.removed,{attribute:T||null,from:b});try{T?m(b,T):b.removeAttribute(p)}catch(L){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Le||ot)try{pt(b)}catch(L){}else try{b.setAttribute(p,"")}catch(L){}},_a=function(p){let b=M(p);if(b)for(let T=b.length-1;T>=0;--T){let L=b[T],V=L&&L.name;typeof V!="string"||be[Te(V)]||Ts(p,L,V)}},Er=function(p){let b=[p];for(;b.length>0;){let T=b.pop();R(T)===Bn.element&&_a(T);let L=S(T);if(L)for(let V=L.length-1;V>=0;--V)b.push(L[V])}},yi=function(p,b){return Qt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ea=function(p){if(!Qt)return;let b=[p];for(;b.length>0;){let T=b.pop(),L=R(T);if(L===Bn.processingInstruction||L===Bn.comment&&on(Oy,T.data)){try{f(T)}catch(le){}continue}if(L===Bn.element){let le=T,fe=Te(X(T));try{le.hasAttribute&&le.hasAttribute("patchsrc")&&le.removeAttribute("patchsrc"),le.hasAttribute&&le.hasAttribute("for")&&yi("for",fe)&&le.removeAttribute("for")}catch(Ae){}}let V=S(T);if(V)for(let le=V.length-1;le>=0;--le)b.push(V[le])}},As=function(p){let b=null,T=null;if(Ke)p=""+p;else{let le=ay(p,/^[\r\n\t ]+/);T=le&&le[0]}Zn==="application/xhtml+xml"&&mn===bt&&(p=''+p+"");let L=W?we(p):p;if(mn===bt)try{b=new c().parseFromString(L,Zn)}catch(le){}if(!b||!b.documentElement){b=Pe.createDocument(mn,"template",null);try{b.documentElement.innerHTML=fi?ne:L}catch(le){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mn===bt?He.call(b,ie?"html":"body")[0]:ie?b.documentElement:V},y=function(p){let b=w?w(p):p.ownerDocument;return Qe.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Q=function(p){return p=Xa(p,nn," "),p=Xa(p,ir," "),p=Xa(p,sr," "),p},v=function(p){var b;p.normalize();let T=w?w(p):p.ownerDocument,L=Qe.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=L.nextNode();for(;V;)V.data=Q(V.data),V=L.nextNode();let le=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");le&&Es(le,fe=>{E(fe.content)&&v(fe.content)})},C=function(p){let b=k?k(p):null;return typeof b!="string"||Te(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==M(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==Z(p)||p.childNodes!==S(p)},E=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return Z(p)===Bn.documentFragment}catch(b){return!1}},A=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return typeof Z(p)=="number"}catch(b){return!1}};function I(_,p,b){_.length!==0&&Es(_,T=>{T.call(e,p,b,gn)})}let j=function(p,b){return!!(Qt&&p.hasChildNodes()&&!A(p.firstElementChild)&&on(gy,p.textContent)&&on(gy,p.innerHTML)||Qt&&p.namespaceURI===bt&&QC[b]&&(A(p.firstElementChild)||typeof p.textContent=="string"&&on(TC[b],p.textContent))||p.nodeType===Bn.processingInstruction||Qt&&p.nodeType===Bn.comment&&on(Oy,p.data))},U=function(p,b){if(p instanceof RegExp)return on(p,b);if(p instanceof Function){for(var T=arguments.length,L=new Array(T>2?T-2:0),V=2;V=0;--fe){let Ae=p===T?u(V[fe],!0):V[fe];L.insertBefore(Ae,O(p))}}}return pt(p),!0},K=function(p,b,T,L){return p.length===0?b:b===T||b===L?Vn(b):b},ce=function(p,b){return p===b||x(p)!==null?!1:(ui&&Er(p),!0)},Ce=function(p,b){if(I(me.beforeSanitizeElements,p,null),ce(p,b))return!0;if(C(p))return pt(p),!0;let T=Te(X(p));if(ke=K(me.uponSanitizeElement,ke,kn,te),I(me.uponSanitizeElement,p,{tagName:T,allowedTags:ke}),ce(p,b))return!0;if(j(p,T))return pt(p),!0;if(Lt[T]||!(ft.tagCheck instanceof Function&&ft.tagCheck(T))&&!ke[T]){let L=H(p,T,b);return L===!1&&(I(me.afterSanitizeElements,p,null),ce(p,b))?!0:L}if(R(p)===Bn.element&&!yo(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&on(kC,p.innerHTML))return pt(p),!0;if(vt&&p.nodeType===Bn.text){let L=Q(p.textContent);p.textContent!==L&&(Ia(e.removed,{element:p.cloneNode()}),p.textContent=L)}return I(me.afterSanitizeElements,p,null),ce(p,b)},Ie=function(p,b,T){if(Qr[b]||yi(b,p)||cr&&(b==="id"||b==="name")&&(T in t||T in Aa))return!1;let L=be[b]||ft.attributeCheck instanceof Function&&ft.attributeCheck(b,p);return lr&&on(or,b)||Tr&&on(di,b)?!0:L?ws[b]||on(Dn,Xa(T,qr,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&ly(T,"data:")===0&&Ii[p]||rn&&!on(bs,Xa(T,qr,""))?!0:!T:at(p)&&U(st.tagNameCheck,p)&&U(st.attributeNameCheck,b,p)||b==="is"&&st.allowCustomizedBuiltInElements&&U(st.tagNameCheck,T)},Be=Ve({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),at=function(p){return!Be[Wa(p)]&&on(ys,p)},dt=function(p,b,T,L){if(W&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!T)switch(d.getAttributeType(p,b)){case"TrustedHTML":return we(L);case"TrustedScriptURL":return B(L)}return L},sn=function(p,b,T,L){try{return T?p.setAttributeNS(T,b,L):p.setAttribute(b,L),C(p)?(pt(p),!1):!0}catch(V){return Dt(b,p),!1}},Rr=function(p,b){if(I(me.beforeSanitizeAttributes,p,null),ce(p,b))return;let T=p.attributes;if(!T||C(p))return;be=K(me.uponSanitizeAttribute,be,ar,ge);let L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be,forceKeepAttr:void 0},V=T.length,le=Te(p.nodeName);for(;V--;){let fe=T[V],Ae=fe.name,ht=fe.namespaceURI,tt=fe.value,Xn=Te(Ae),Cs=tt,je=Ae==="value"?Cs:aC(Cs),Ra=!1;if(L.attrName=Xn,L.attrValue=je,L.keepAttr=!0,L.forceKeepAttr=void 0,I(me.uponSanitizeAttribute,p,L),je=L.attrValue,dr&&(Xn==="id"||Xn==="name")&&ly(je,hi)!==0&&(Dt(Ae,p,fe),je=hi+je,Ra=!0),Qt&&on(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Dt(Ae,p,fe);continue}if(Xn==="attributename"&&ay(je,"href")){Dt(Ae,p,fe);continue}if(!L.forceKeepAttr){if(!L.keepAttr){Dt(Ae,p,fe);continue}if(!Ar&&on($C,je)){Dt(Ae,p,fe);continue}if(vt&&(je=Q(je)),!Ie(le,Xn,je)){Dt(Ae,p,fe);continue}je=dt(le,Xn,ht,je),je!==Cs&&sn(p,Ae,ht,je)&&Ra&&oy(e.removed)}}I(me.afterSanitizeAttributes,p,null),ce(p,b)},In=function(p){let b=null,T=y(p);for(I(me.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(I(me.uponSanitizeShadowNode,b,null),Ce(b,p),Rr(b,p),E(b.content)&&In(b.content),R(b)===Bn.element){let L=D(b);E(L)&&(Si(L),In(L))}I(me.afterSanitizeShadowDOM,p,null)},Si=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){In(T.shadow);continue}let L=T.node,V=R(L)===Bn.element,le=S(L);if(le)for(let fe=le.length-1;fe>=0;--fe)b.push({node:le[fe],shadow:null});if(V){let fe=k?k(L):null;if(typeof fe=="string"&&Te(fe)==="template"){let Ae=L.content;E(Ae)&&b.push({node:Ae,shadow:null})}}if(V){let fe=D(L);E(fe)&&b.push({node:null,shadow:fe},{node:fe,shadow:null})}}};return e.sanitize=function(_){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,L=null,V=null;if(fi=!_,fi&&(_=""),typeof _!="string"&&!A(_)&&(_=uC(_),typeof _!="string"))throw Ni("dirty is not a string, aborting");if(!e.isSupported)return _;Y?(ke=te,be=ge):Oi(p),(me.uponSanitizeElement.length>0||me.uponSanitizeAttribute.length>0)&&(ke=Vn(ke)),me.uponSanitizeAttribute.length>0&&(be=Vn(be)),e.removed=[];let le=ui&&typeof _!="string"&&A(_);if(le){Ea(_);let ht=X(_);if(typeof ht=="string"){let tt=Te(ht);if(!ke[tt]||Lt[tt])throw $n(_),Ni("root node is forbidden and cannot be sanitized in-place")}if(C(_))throw $n(_),Ni("root node is clobbered and cannot be sanitized in-place");try{Si(_)}catch(tt){throw $n(_),tt}}else if(A(_))b=As(""),T=b.ownerDocument.importNode(_,!0),T.nodeType===Bn.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),Si(b);else{if(!Le&&!vt&&!ie&&_.indexOf("<")===-1)return W&&xt?we(_):_;if(b=As(_),!b)return Le?null:xt?ne:""}b&&Ke&&pt(b.firstChild);let fe=le?_:b;try{let ht=y(fe);for(;L=ht.nextNode();)Ce(L,fe),Rr(L,fe),E(L.content)&&In(L.content)}catch(ht){throw le&&($n(_),Es(e.removed,tt=>{tt.element&&Er(tt.element)})),ht}if(le){let ht=!1;if(Es(e.removed,tt=>{tt.element&&(tt.element===_&&(ht=!0),Er(tt.element))}),ht)throw Ni("a node selected for removal could not be safely returned; refusing to sanitize in place");return vt&&v(_),_}if(Le){if(vt&&v(b),ot)for(V=Ge.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(be.shadowroot||be.shadowrootmode)&&(V=Ot.call(r,V,!0)),V}let Ae=ie?b.outerHTML:b.innerHTML;return ie&&ke["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&on(xC,b.ownerDocument.doctype.name)&&(Ae=" -`+Ae),vt&&(Ae=Q(Ae)),W&&xt?we(Ae):Ae},e.setConfig=function(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Oi(_),Y=!0,te=ke,ge=be},e.clearConfig=function(){gn=null,Y=!1,te=null,ge=null,W=de,ne=""},e.isValidAttribute=function(_,p,b){gn||Oi({});let T=Te(_),L=Te(p);return Ie(T,L,b)},e.addHook=function(_,p){typeof p=="function"&&Qn(me,_)&&Ia(me[_],p)},e.removeHook=function(_,p){if(Qn(me,_)){if(p!==void 0){let b=sC(me[_],p);return b===-1?void 0:oC(me[_],b,1)[0]}return oy(me[_])}},e.removeHooks=function(_){Qn(me,_)&&(me[_]=[])},e.removeAllHooks=function(){me=by()},e}var Vi=wy();var _C=Yf(),jf=class extends _c{constructor(t,r){super(r);this.scrollbarWidth=12;this.parent=t,this.parent.setAttribute("tabindex","-1"),this.parent.addEventListener("mousedown",i=>{i.preventDefault(),this.parent.focus()}),ey(this.parent,()=>this.getShortcuts()),ny(this.parent,"verilog-waveform"),this.recreate()}getShortcuts(){return this.getActions()}recreate(){clearTimeout(this.wtimer),this.wtimer=setTimeout(()=>{this.destroy(),this._recreate()},0)}destroy(){this.wavelist&&($(this.wavelist.container).remove(),this.wavelist=null),this.toolbar&&(this.toolbar.destroy(),this.toolbar=null),this.clklabel&&(this.clklabel.remove(),this.clklabel=null)}_recreate(){if(this.meta=this.wfp.getSignalMetadata(),!!this.meta){var t=$(this.parent).width();this.pageWidth=t-this.scrollbarWidth;var r=40;this.setClocksPerPage(),this.clockMax=0,this.wavelist=new Nn({w:t,h:$(this.parent).height(),itemHeight:r,totalRows:this.meta.length+1,generatorFn:a=>{var l=this.meta[a];let c=document.createElement("div"),d=document.createElement("canvas");return d.width=t-12,d.height=r,c.appendChild(d),c.classList.add("waverow"),this.lines[a]=d,this.refreshRow(a),this.isEditable(l)&&(c.onmousedown=h=>{var u=this.meta[a];u&&u.input&&this.changeInputValue(a)},c.classList.add("editable"),c.style.cursor="grab"),c}});var i=this.wavelist.container;i.tabIndex=-1,this.toolbar=new Wi(this.parent,this.parent),this.toolbar.span.css("display","inline-block"),this.clklabel=document.createElement("span"),this.clklabel.innerText="-",$(this.parent).append(this.clklabel),$(this.parent).append(i);var s=!1,o=a=>{this.setSelTime(a.offsetX/this.zoom+this.t0-.5)};$(i).mousedown(a=>{s=!0,o(a)}),$(i).mousemove(a=>{s&&o(a)}),$(i).mouseup(a=>{s=!1}),$(i).on("wheel",a=>{if(Math.abs(a.originalEvent.deltaX)>Math.abs(a.originalEvent.deltaY)){var l=Math.max(-1e3,Math.min(1e3,a.originalEvent.deltaX));l&&this.setOrgTime(this.t0+l)}});for(let a of this.getActions())this.toolbar.add(a.key,a.label,a.icon,a.fn);this.toolbar.add("+","Zoom In",null,()=>this.setZoom(this.zoom*2)),$(window).resize(()=>{this.recreate()})}}selectionChanged(){this.clklabel.innerText=" clk "+this.tsel}promptValue(t,r,i,s){return new Promise(o=>{bootbox.prompt({value:r+"",inputType:"number",title:`Enter new value for "${Vi.sanitize(t.label)}" (${i} to ${s}):`,callback:a=>o(a!=null?parseInt(a):null)})})}},Mc=class{constructor(e,t){this.provider=t;var r=$("#emuoverlay").show();this.topdiv=$('
').appendTo(r)[0],this.topdiv.appendChild(e),this.wavediv=$('
').appendTo(r)[0],this.split=_C([this.topdiv,this.wavediv],{minSize:[0,0],sizes:[99,1],direction:"vertical",gutterSize:16,onDrag:()=>this.resize()})}isVisible(){return this.split.getSizes()[1]>2}show(){this.split.setSizes([0,100])}setCurrentTime(e){this.waveview&&this.waveview.setCurrentTime(e)}update(){this.isVisible()&&(this.waveview?this.waveview.refresh():this.waveview=new jf(this.wavediv,this.provider))}resize(){this.waveview&&this.waveview.recreate()}};function xy(){Z0({createScope:(n,e)=>new Mc(n,e),showVideoControls(n){$("#speed_bar, #run_bar, #dbg_record").toggle(n)},showSettleCount(n){n==null?$("#verilog_bar").hide():($("#verilog_bar").show(),$("#settle_label").text(n+""))}})}var nt=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],EC=[...nt,/^\s*[.]?(include|incbin)\s+([^\s;"]+)/gmi],RC=[...nt,/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi],lt=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],Na=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],MC=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function $y(n){let e=n&&qt(n);return e&&e.includeDirs&&e.includeDirs.length?MC:[]}var Py=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],LC=[/^[!]src\s+"(.+?)"/gmi],DC=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],ZC=[/^\s*(import)\s*"(.+?)"/gmi],IC=[/^\s*%%\s*#include\s+"(.+?)"/gm],XC={cc65:{apple2:"https://cc65.github.io/doc/apple2.html",atari8:"https://cc65.github.io/doc/atari.html",c64:"https://cc65.github.io/doc/c64.html",nes:"https://cc65.github.io/doc/nes.html",pce:"https://cc65.github.io/doc/pce.html",vic20:"https://cc65.github.io/doc/vic20.html",lynx:"https://cc65.github.io/doc/lynx.html"}},qf=3,Uf={default:qf===3?{preloadFS:"sdcc",wasiFSZip:"sdcc-fs.zip"}:{wasiFSZip:"sdcc-fs.zip"},coleco:{preloadFS:"sdcc"},"msx-libcv":{preloadFS:"sdcc"},sms:{preloadFS:"sdcc"},gb:{preloadFS:"sdcc"},cpc:{preloadFS:"sdcc"}},ky={apple2:{wasiFSZip:"cc65-fs-apple2.zip"},c64:{wasiFSZip:"cc65-fs-c64.zip"},vic20:{wasiFSZip:"cc65-fs-vic20.zip"},nes:{wasiFSZip:"cc65-fs-nes.zip"},atari8:{wasiFSZip:"cc65-fs-atari8.zip"},vector:{wasiFSZip:"cc65-fs-none.zip"},atari7800:{wasiFSZip:"cc65-fs-none.zip"},devel:{wasiFSZip:"cc65-fs-none.zip"},vcs:{wasiFSZip:"cc65-fs-atari2600.zip"},pce:{wasiFSZip:"cc65-fs-pce.zip"},exidy:{wasiFSZip:"cc65-fs-none.zip"}},Qo={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt",wasmModule:"dasm-wasisdk",version:"2.20.17",includePatterns:EC,linkPatterns:lt},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/8bitworkshop/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...nt,...LC],linkPatterns:lt},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",version:"2.4.1",includePatterns:nt,linkPatterns:lt},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",helpURL:"https://github.com/camsaul/nesasm",wasmModule:"nesasm",version:"3.1",includePatterns:nt,linkPatterns:lt},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",helpURL:"https://github.com/apple2accumulator/merlin32",wasmModule:"merlin32",version:"1.1.1",includePatterns:[...nt,...Py],linkPatterns:lt},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],includeDirs:["/share/cc65/include","/share/cc65/asminc"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",version:"2.19",defineFlag:"-D",defineInline:!0,platforms:ky,includePatterns:nt,linkPatterns:lt},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65",".inc"],includeDirs:["/share/cc65/include","/share/cc65/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",version:"2.19",defineFlag:"-D",defineInline:!1,platforms:ky,includePatterns:nt,linkPatterns:lt},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65",version:"2.19",linkSymbolFlag:"-D",linkSymbolInline:!1},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h",".sdcc"],includeDirs:["/share/sdcc/include","/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc4",version:qf===3?"3.6.5":"4.6.0",versionAlt:qf===3?"4.6.0":"3.6.5",defineFlag:"-D",defineInline:!0,platforms:Uf,includePatterns:nt,linkPatterns:lt},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/share/sdcc/include","/include"],editorStyle:"z80",wasmModule:"sdasz80-4",version:"05.50.4+",platforms:Uf,includePatterns:nt,linkPatterns:lt},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:nt,linkPatterns:lt},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdld4",version:"05.50.4-",linkSymbolFlag:"-g",linkSymbolInline:!1},sdas6500:{id:"sdas6500",name:"sdas6500",kind:"assembler",arch:"6502",extensions:[],wasmModule:"sdas6500",version:"05.50.4+",platforms:Uf},sdld6808:{id:"sdld6808",name:"sdld6808",kind:"linker",arch:"6502",extensions:[],wasmModule:"sdld4",version:"05.50.4-",linkSymbolFlag:"-g",linkSymbolInline:!1},sccz80:{id:"sccz80",name:"sccz80",kind:"compiler",arch:"z80",extensions:[".scc"],platforms:{default:{preloadFS:"sccz80"}},noWorkerBuild:!0},naken:{id:"naken",name:"Naken",kind:"assembler",extensions:[".ns"],helpURL:"https://github.com/mikeakohn/naken_asm",noWorkerBuild:!0},zmac:{id:"zmac",name:"zmac",kind:"assembler",arch:"z80",extensions:[".z"],editorStyle:"z80",helpURL:"https://raw.githubusercontent.com/8bitworkshop/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:nt,linkPatterns:lt},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:Na,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...nt,...Py],linkPatterns:lt},cmoc:{id:"cmoc",name:"CMOC",kind:"compiler",arch:"6809",extensions:[".c",".h"],editorStyle:"text/x-csrc",helpURL:"https://github.com/stahta01/cmoc/",wasmModule:"cmoc",version:"0.1.67",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},lwasm:{id:"lwasm",name:"LWASM",kind:"assembler",arch:"6809",extensions:[".lwasm"],editorStyle:"6809",wasmModule:"lwasm",version:"4.17",includePatterns:nt,linkPatterns:lt},lwlink:{id:"lwlink",name:"LWLINK",kind:"linker",arch:"6809",extensions:[],wasmModule:"lwlink",version:"4.17"},vasmarm:{id:"vasmarm",name:"vasm (ARM)",kind:"assembler",arch:"arm32",extensions:[".vasm"],editorStyle:"vasm",wasmModule:"vasmarm_std",version:"1.8k",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},armips:{id:"armips",name:"armips",kind:"assembler",arch:"arm32",extensions:[".armips"],editorStyle:"vasm",wasmModule:"armips",version:"0.11.0",includePatterns:nt,linkPatterns:lt},armtcc:{id:"armtcc",name:"TCC (ARM)",kind:"compiler",arch:"arm32",extensions:[".c",".s"],includeDirs:["/include"],wasiFSZip:"arm32-fs.zip",editorStyle:"text/x-csrc",wasmModule:"arm-tcc",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},armtcclink:{id:"armtcclink",name:"TCC (ARM) link",kind:"linker",arch:"arm32",extensions:[],wasmModule:"arm-tcc"},smlrc:{id:"smlrc",name:"SmallerC",kind:"compiler",arch:"x86",extensions:[".c"],helpURL:"https://github.com/alexfru/SmallerC/blob/master/v0100/doc/smlrc.md",editorStyle:"text/x-csrc",wasmModule:"smlrc",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},yasm:{id:"yasm",name:"YASM",kind:"assembler",arch:"x86",extensions:[".asm"],editorStyle:"gas",helpURL:"https://www.tortall.net/projects/yasm/manual/html/manual.html",wasmModule:"yasm",version:"1.3.0",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},oscar64:{id:"oscar64",name:"Oscar64",kind:"compiler",arch:"6502",extensions:[".c",".cpp",".cc",".o64"],includeDirs:["/include"],wasiFSZip:"oscar64-fs.zip",editorStyle:"text/x-csrc",helpURL:"https://github.com/drmortalwombat/oscar64/blob/v1.32.266/oscar64.md",defineFlag:"-d",defineInline:!0,wasmModule:"oscar64",version:"1.32.266",includePatterns:RC,linkPatterns:lt,compileLinkedSources:!0,platforms:{c64:{},atari8:{buildArgs:{compiler:["-tm=atari"]}},nes:{buildArgs:{compiler:["-tm=nes"]}}}},bataribasic:{id:"bataribasic",name:"batari Basic",kind:"compiler",arch:"6502",extensions:[".bb",".bas"],includeDirs:["/includes"],editorStyle:"bataribasic",helpURL:"help/bataribasic/manual.html",wasiFSZip:"bb-fs.zip",platforms:{default:{}},includePatterns:nt,linkPatterns:lt},fastbasic:{id:"fastbasic",name:"FastBasic",kind:"compiler",arch:"6502",extensions:[".bas",".fb",".fbi"],editorStyle:"fastbasic",helpURL:"https://github.com/dmsc/fastbasic/blob/v4.4/manual.md",wasmModule:"fastbasic-int",version:"4.4",platforms:{default:{wasiFSZip:"cc65-fs-atari8.zip"}},includePatterns:nt,linkPatterns:lt},cc2600:{id:"cc2600",name:"CC2600",kind:"compiler",arch:"6502",extensions:[".cc2600"],editorStyle:"text/x-csrc",helpURL:"https://github.com/steux/cc2600",wasmModule:"cc2600",version:"0.4.5",wasiFSZip:"cc2600-fs.zip",includeDirs:["/headers"],includePatterns:nt,linkPatterns:lt},cc7800:{id:"cc7800",name:"CC7800",kind:"compiler",arch:"6502",extensions:[".cc7800",".c78"],editorStyle:"text/x-csrc",helpURL:"https://github.com/steux/cc7800",wasmModule:"cc7800",version:"0.2.28",wasiFSZip:"cc7800-fs.zip",includeDirs:["/headers"],includePatterns:nt,linkPatterns:lt},basic:{id:"basic",name:"BASIC",kind:"interpreter",extensions:[".bas"],editorStyle:"basic"},wiz:{id:"wiz",name:"wiz",kind:"compiler",extensions:[".wiz"],includeDirs:["/common/$platform"],editorStyle:"text/x-wiz",helpURL:"https://github.com/wiz-lang/wiz/blob/master/readme.md#wiz",wasmModule:"wiz",version:"0.1.2",platforms:{default:{preloadFS:"wiz"}},includePatterns:DC},ecs:{id:"ecs",name:"ECS",kind:"assembler",arch:"6502",extensions:[".ecs"],editorStyle:"ecs",platforms:{vcs:{wasiFSZip:"cc65-fs-atari2600.zip"},nes:{wasiFSZip:"cc65-fs-nes.zip"},c64:{wasiFSZip:"cc65-fs-c64.zip"}},includePatterns:[...nt,...ZC]},inform6:{id:"inform6",name:"Inform 6",kind:"compiler",arch:"zmachine",extensions:[".inf"],editorStyle:"inform6",wasmModule:"inform",version:"6.34",platforms:{default:{preloadFS:"inform"}}},dialog:{id:"dialog",name:"Dialog",kind:"compiler",arch:"zmachine",extensions:[".dg"],editorStyle:"dialog",helpURL:"https://linusakesson.net/dialog/docs/",wasmModule:"dialogc",version:"1c/03-dev",wasiFSZip:"dialog-fs.zip",includeDirs:["/"],includePatterns:IC},verilator:{id:"verilator",name:"Verilator",kind:"hdl",arch:"verilog",extensions:[".v"],editorStyle:"verilog",helpURL:"https://verilator.org/guide/4.205/",wasmModule:"verilator_bin",version:"4.205",includePatterns:Na,linkPatterns:[]},yosys:{id:"yosys",name:"Yosys",kind:"hdl",arch:"verilog",extensions:[],wasmModule:"yosys",includePatterns:Na,linkPatterns:[]},silice:{id:"silice",name:"Silice",kind:"hdl",arch:"verilog",extensions:[".ice"],editorStyle:"verilog",helpURL:"https://github.com/sylefeb/Silice",wasmModule:"silice",version:"0.1",platforms:{default:{preloadFS:"Silice"}},includePatterns:Na,linkPatterns:[]},"llvm-mos":{id:"llvm-mos",name:"LLVM-MOS",kind:"compiler",arch:"6502",extensions:[".c",".cpp",".s",".S",".C"],editorStyle:"text/x-csrc",helpURL:"https://llvm-mos.org/wiki/Welcome",remote:!0,includePatterns:nt,linkPatterns:lt,server:{version:"latest",platforms:["atari8","c64","nes","pce","vcs"],binpath:"llvm-mos/bin",command:"mos-clang",args:["-Os","-g","-D","__8BITWORKSHOP__","-o","$OUTFILE","$INFILES"]}},remote:{id:"remote",name:"Remote build",kind:"remote",extensions:[],remote:!0}};function qt(n){return Qo[n.replace(/^remote:/,"")]}function Qy(n,e){let t=qt(n);if(!t||!e)return;let r=XC[t.id];if(!r)return;let i=r[e];if(!i){let s=Mr(e);s&&s!==e&&(i=r[s])}return i}function Ty(n){let e=[];for(let t in Qo){let r=Qo[t];for(let i of r.extensions)if(i&&n.endsWith(i)){e.push({meta:r,len:i.length});break}}return e.sort((t,r)=>r.len-t.len).map(t=>t.meta)}function zC(n,e){let t=n&&qt(n);if(!(!t||!t.platforms)){if(e){let r=t.platforms[e];if(r)return r;let i=Mr(e);if(i&&i!==e&&t.platforms[i])return t.platforms[i]}return t.platforms.default}}function WC(n,e){let t=qt(n);if(t&&t.platforms){if(e){let i=t.platforms[e];if(i&&i.preloadFS)return i.preloadFS;let s=Mr(e);if(s&&s!==e){let o=t.platforms[s];if(o&&o.preloadFS)return o.preloadFS}}let r=t.platforms.default;if(r&&r.preloadFS)return r.preloadFS}}function Gf(n){let e=qt(n);return e&&e.skeleton?e.skeleton:n.replace(/^remote:/,"")}function Ay(n){return!n||!n.version?"\u2014":n.versionAlt?n.version+" (default) / "+n.versionAlt:n.version}function Lc(n,e){let t=n&&qt(n);return t&&t.includePatterns?t.includePatterns:e&&e.startsWith("verilog")?Na:nt}function Dc(n,e){let t=n&&qt(n);return t&&t.linkPatterns?t.linkPatterns:e&&e.startsWith("verilog")?[]:lt}function Cy(n){let e=n&&qt(n);return!!(e&&e.compileLinkedSources)}function Zc(n,e){e=e&&Mr(e);let t=n&&qt(n),r=t&&t.includeDirs||[];return r=r.map(i=>i.replace("$platform",e)),r}function Ic(n,e){var t=WC(n,e);if(t)return t;let r=zC(n,e);if(r&&r.wasiFSZip)return"wasi:"+r.wasiFSZip;let i=n&&qt(n);return i&&i.wasiFSZip?"wasi:"+i.wasiFSZip:void 0}function _y(n,e){let t=[],r=n.split(` -`);for(let i of e||[]){let s=i instanceof RegExp?{re:i}:i;for(let o of r){let a;for(s.re.lastIndex=0;a=s.re.exec(o);){let l=a[s.group!=null?s.group:a.length-1];l&&t.push(s.suffix?l+s.suffix:l)}}}return t}var Lr={vcs:{arch:"6502",code_start:4096,code_size:61440,data_start:128,data_size:128,wiz_rom_ext:".a26",wiz_inc_dir:"2600",cfgfile:"atari2600.cfg",libargs:["crt0.o","atari2600.lib"],extra_link_files:["crt0.o","atari2600.cfg"],asm_cfgfile:"atari2600-asm.cfg",asm_libargs:[],asm_extra_link_files:["atari2600-asm.cfg"],extra_compile_files:["vcs.h","macro.h"],define:["__ATARI2600__"]},mw8080bw:{arch:"z80",code_start:0,rom_size:8192,data_start:8192,data_size:1024,stack_end:9216},vicdual:{arch:"z80",code_start:0,rom_size:16416,data_start:58368,data_size:1024,stack_end:59392},galaxian:{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:18432},"galaxian-scramble":{arch:"z80",code_start:0,rom_size:20512,data_start:16384,data_size:1024,stack_end:18432},pacman:{arch:"z80",code_start:0,codeseg_start:202,rom_size:32768,data_start:19456,data_size:652,stack_end:20416},williams:{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152,set_stack_end:49152,extra_link_files:["williams.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_link_args:["-swilliams.scr","-lcmoc-crt-vec","-lcmoc-std-vec"],extra_compile_files:["assert.h","cmoc.h","stdarg.h","stdlib.h"]},"williams-defender":{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152},"williams-z80":{arch:"z80",code_start:0,rom_size:38912,data_start:38912,data_size:10240,stack_end:49152},"vector-z80color":{arch:"z80",code_start:0,rom_size:32768,data_start:57344,data_size:8192,stack_end:0},"vector-ataricolor":{arch:"6502",define:["__VECTOR__"],cfgfile:"vector-color.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","vector-color.cfg"]},"sound_williams-z80":{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:32768},base_z80:{arch:"z80",code_start:0,rom_size:32768,data_start:32768,data_size:32768,stack_end:0},coleco:{arch:"z80",rom_start:32768,code_start:33024,rom_size:32768,data_start:28672,data_size:1024,stack_end:32768,extra_preproc_args:["-I","/share/include/coleco","-D","CV_CV"],extra_link_args:["-k","/share/lib/coleco","-l","libcv","-l","libcvu","crt0.rel"]},msx:{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_link_args:["crt0-msx.rel"],extra_link_files:["crt0-msx.rel","crt0-msx.lst"],wiz_sys_type:"z80",wiz_inc_dir:"msx"},"msx-libcv":{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_preproc_args:["-I",".","-D","CV_MSX"],extra_link_args:["-k",".","-l","libcv-msx","-l","libcvu-msx","crt0-msx.rel"],extra_link_files:["libcv-msx.lib","libcvu-msx.lib","crt0-msx.rel","crt0-msx.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},"sms-sg1000-libcv":{arch:"z80",rom_start:0,code_start:256,rom_size:49152,data_start:49152,data_size:1024,stack_end:57344,extra_preproc_args:["-I",".","-D","CV_SMS"],extra_link_args:["-k",".","-l","libcv-sms","-l","libcvu-sms","crt0-sms.rel"],extra_link_files:["libcv-sms.lib","libcvu-sms.lib","crt0-sms.rel","crt0-sms.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},nes:{arch:"6502",define:["__NES__"],cfgfile:"neslib2.cfg",libargs:["crt0.o","nes.lib","neslib2.lib","-D","NES_MAPPER=0","-D","NES_PRG_BANKS=2","-D","NES_CHR_BANKS=1","-D","NES_MIRRORING=0"],extra_link_files:["crt0.o","neslib2.lib","neslib2.cfg","nesbanked.cfg"],extra_compile_files:["neslib.h"],symbolConfigs:{NES_MAPPER:{4:"nesbanked.cfg"}},ignore_segments:["HEADER","CHARS"],wiz_rom_ext:".nes"},apple2:{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["--lib-path","/share/target/apple2/drv","apple2.lib"],__CODE_RUN__:16384,code_start:2051,rom_size:35837,data_start:37888,zp_start:96,load_header:"dos33",acmeargs:["-f","apple"]},"apple2-e":{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["apple2.lib"],acmeargs:["-f","apple"]},"atari8-800xl.disk":{arch:"6502",define:["__ATARI__"],cfgfile:"atari.cfg",libargs:["atari.lib"],fastbasic_cfgfile:"fastbasic-cart.cfg",ignore_segments:["EXEHDR","SYSCHKHDR","SYSCHKTRL","MAINHDR","AUTOSTRT"]},"atari8-800xl":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-800":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-5200":{arch:"6502",define:["__ATARI5200__"],cfgfile:"atari5200.cfg",libargs:["atari5200.lib","-D","__CARTFLAGS__=255"],fastbasic_cfgfile:"fastbasic-cart.cfg"},verilog:{arch:"verilog",extra_compile_files:["8bitworkshop.v"]},astrocade:{arch:"z80",code_start:8192,rom_size:8192,data_start:19984,data_size:496,stack_end:20480},"astrocade-arcade":{arch:"z80",code_start:0,rom_size:16384,data_start:32224,data_size:544,stack_end:32768},"astrocade-bios":{arch:"z80",code_start:0,rom_size:8192,data_start:20430,data_size:50,stack_end:20430},atari7800:{arch:"6502",define:["__ATARI7800__"],cfgfile:"atari7800.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","atari7800.cfg"]},c64:{arch:"6502",define:["__CBM__","__C64__"],cfgfile:"c64.cfg",libargs:["openroms-compat.o","c64.lib"],extra_link_files:["openroms-compat.o"],code_start:2061,rom_size:38899,data_start:49152,zp_start:2,load_header:"prg",acmeargs:["-f","cbm"]},vic20:{arch:"6502",define:["__CBM__","__VIC20__"],cfgfile:"vic20.cfg",libargs:["vic20.lib"],acmeargs:["-f","cbm"]},kim1:{arch:"6502"},vectrex:{arch:"6809",code_start:0,rom_size:32768,data_start:51328,data_size:896,stack_end:52224,extra_compile_files:["assert.h","cmoc.h","stdarg.h","vectrex.h","stdlib.h","bios.h"],extra_link_files:["vectrex.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_compile_args:["--vectrex"],extra_link_args:["-svectrex.scr","-lcmoc-crt-vec","-lcmoc-std-vec"]},x86:{arch:"x86"},zx:{arch:"z80",code_start:23755,rom_size:41613,data_start:61440,data_size:3584,stack_end:65368,extra_link_args:["crt0-zx.rel"],extra_link_files:["crt0-zx.rel","crt0-zx.lst"]},"devel-6502":{arch:"6502",cfgfile:"devel-6502.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","devel-6502.cfg"],code_start:32768,rom_size:32768,data_start:512},"cpc.rslib":{arch:"z80",code_start:16384,rom_size:28928,data_start:45312,data_size:-3840,stack_end:49152,extra_compile_files:["cpcrslib.h"],extra_link_args:["crt0-cpc.rel","cpcrslib.lib"],extra_link_files:["crt0-cpc.rel","crt0-cpc.lst","cpcrslib.lib","cpcrslib.lst"]},cpc:{arch:"z80",code_start:16384,rom_size:28928,data_start:45312,data_size:-3840,stack_end:49152,extra_compile_files:["cpctelera.h"],extra_link_args:["crt0-cpc.rel","cpctelera.lib"],extra_link_files:["crt0-cpc.rel","crt0-cpc.lst","cpctelera.lib","cpctelera.lst"]},pce:{arch:"huc6280",define:["__PCE__"],cfgfile:"pce.cfg",libargs:["pce.lib","-D","__CARTSIZE__=0x8000"]},exidy:{define:["__EXIDY__"],cfgfile:"exidy.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","exidy.cfg"]},arm32:{arch:"arm32",define:["__ARM__","DISABLE_UNIMPLEMENTED_LIBC_APIS","PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_SOFT"],extra_compile_args:["-I./arch/arm/include","-I./openlibm/include","-I./openlibm/src","-I./printf/src"],extra_link_files:["crt0.c","libc.a"],extra_link_args:["crt0.c","-lc"]},gb:{arch:"gbz80",code_start:0,codeseg_start:512,rom_size:32768,rom_banking:{size:16384,window:16384},data_start:49312,data_size:8032,stack_end:57344,extra_link_files:["gbz80.lib","gb.lib","sfr.rel","sfr.lst","crt0.rel","crt0.lst"],startup_objs:["sfr.rel","crt0.rel"],asm_startup_objs:[],extra_compile_files:["gb/bgb_emu.h","gb/cgb.h","gb/crash_handler.h","gb/drawing.h","gb/emu_debug.h","gb/gb.h","gb/gbdecompress.h","gb/hardware.h","gb/isr.h","gb/metasprites.h","gb/sgb.h","gb/types.h"],extra_link_args:["-l","gb","-g","_shadow_OAM=0xC000","-g",".STACK=0xE000","-g",".refresh_OAM=0xFF80","-g","GB_MAPPER=0x0","-g","GB_ROM_SIZE=0x0","-g","GB_RAM_SIZE=0x0","-g","GB_CGB_FLAGS=0x0"],wiz_sys_type:"gb",wiz_inc_dir:"gb"},mcr:{arch:"z80",code_start:0,rom_size:106496,data_start:57344,data_size:2048,stack_end:59392}};Lr["sms-sms-libcv"]=zi(Ue({},Lr["sms-sg1000-libcv"]),{extra_preproc_args:["-I",".","-D","CV_SMS","-D","CV_MODE4"]});Lr["sms-gg-libcv"]=Lr["sms-sms-libcv"];Lr["gb.color"]=zi(Ue({},Lr.gb),{extra_link_args:Lr.gb.extra_link_args.map(n=>n==="GB_CGB_FLAGS=0x0"?"GB_CGB_FLAGS=0x80":n)});function NC(n){return n.severity==="warning"}function Ey(n){return n.some(e=>!NC(e))}var Rs=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var r of e)r.offset>=0&&(this.offset2loc.has(r.offset)||this.offset2loc.set(r.offset,r),this.line2offset.has(r.line)||this.line2offset.set(r.line,r.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((i,s)=>i-s)}findLineForOffset(e,t,r){let i=this.sortedOffsets;for(var s=0,o=i.length-1,a=-1;s<=o;){var l=s+o>>1;i[l]<=e?(a=l,s=l+1):o=l-1}if(a<0)return null;var c=i[a];if(r!=null&&ct?null:this.offset2loc.get(c)}firstOffsetAtOrAfter(e,t){for(var r=0,i=t.length-1,s=-1;r<=i;){var o=r+i>>1;t[o]>=e?(s=o,i=o-1):r=o+1}return s<0?null:t[s]}lineCount(){return this.lines.length}};function Xc(n){return"errors"in n}function Ry(n){return"output"in n}function Hf(n,e){if(n==null)return"";try{var t=typeof n=="string"?n:typeof n=="object"?JSON.stringify(n):n+"";return t.substring(0,e)}catch(r){return""}}var BC=/bot\b|bot\/|crawl|spider|slurp|headless|lighthouse|facebookexternalhit|preview|inspectiontool|pingdom|python-requests|\bcurl\/|\bwget\//i;function My(n){return!!n&&BC.test(n)}function VC(n){return{msg:String(n&&n.message||n),stack:n&&n.stack}}var zc=class{constructor(e,t,r={}){this.source=e;this.send=t;this.common=r;this.sent=0;this.seen=new Set}report(e,t,r,i){i=i||this.source;var s=[i,r&&r.tool,e].join("|");if(this.sent>=10||this.seen.has(s))return!1;this.seen.add(s),this.sent++;var o={source:i,msg:Hf(e,500),stack:Hf(t,2e3),clientTime:new Date().toISOString()},a=Ue(Ue({},this.common),r);for(var l in a)!(l in o)&&a[l]!=null&&(o[l]=Hf(a[l],2e3));return this.send(o),!0}reportError(e,t,r){var i=VC(e);return this.report(i.msg,i.stack,t,r)}};var Ly="/error.php",FC=typeof navigator!="undefined"&&(navigator.webdriver||My(navigator.userAgent));function YC(n){if(!FC){n.url=window.location.href.substring(0,500),n.userAgent=navigator.userAgent.substring(0,500),n.language=navigator.language;var e=JSON.stringify(n);navigator.sendBeacon?navigator.sendBeacon(Ly,new Blob([e],{type:"application/json"})):fetch(Ly,{method:"POST",headers:{"Content-Type":"application/json"},body:e,keepalive:!0}).catch(t=>console.log("error report failed",t))}}var Dy=new zc("ide",YC);function Zy(n,e,t,r){try{Dy.report(n,e&&e.stack,t,r)}catch(i){console.log("error report failed",i)}}function Iy(n,e,t){try{Dy.report(e.msg,e.stack,t,n)}catch(r){console.log("error report failed",r)}}function Je(n){n?(Dr(0),$("#pleaseWaitModal").modal("show")):(Dr(1),$("#pleaseWaitModal").modal("hide"))}function Dr(n){$("#pleaseWaitProgressBar").css("width",n*100+"%").show()}function Re(n){Je(!1),bootbox.alert({title:' Alert',message:Vi.sanitize(n)})}function an(n){Je(!1),bootbox.alert(Vi.sanitize(n))}function Xy(n){throw Re(n),new Error(n)}var Jf=[],By=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=By[r])e=r+1;else return!0;if(e==t)return!1}}function zy(n){return n>=127462&&n<=127487}var Wy=8205;function Vy(n,e,t=!0,r=!0){return(t?Fy:UC)(n,e,r)}function Fy(n,e,t){if(e==n.length)return e;e&&Yy(n.charCodeAt(e))&&jy(n.charCodeAt(e-1))&&e--;let r=Kf(n,e);for(e+=Ny(r);e=0&&zy(Kf(n,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function UC(n,e,t){for(;e>1;){let r=Fy(n,e-2,t);if(r=56320&&n<57344}function jy(n){return n>=55296&&n<56320}function Ny(n){return n<65536?1:2}var De=class n{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,r){[e,t]=_o(this,e,t);let i=[];return this.decompose(0,e,i,2),r.length&&r.decompose(0,r.length,i,3),this.decompose(t,this.length,i,1),To.from(i,this.length-(t-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=_o(this,e,t);let r=[];return this.decompose(e,t,r,0),To.from(r,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),i=new Zs(this),s=new Zs(e);for(let o=t,a=t;;){if(i.next(o),s.next(o),o=0,i.lineBreak!=s.lineBreak||i.done!=s.done||i.value!=s.value)return!1;if(a+=i.value.length,i.done||a>=r)return!0}}iter(e=1){return new Zs(this,e)}iterRange(e,t=this.length){return new Fc(this,e,t)}iterLines(e,t){let r;if(e==null)r=this.iter();else{t==null&&(t=this.lines+1);let i=this.line(e).from;r=this.iterRange(i,Math.max(i,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Yc(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new Fn(e):To.from(Fn.split(e,[]))}},Fn=class n extends De{constructor(e,t=qC(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,r,i){for(let s=0;;s++){let o=this.text[s],a=i+o.length;if((t?r:a)>=e)return new tp(i,a,r,o);i=a+1,r++}}decompose(e,t,r,i){let s=e<=0&&t>=this.length?this:new n(Uy(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(i&1){let o=r.pop(),a=Vc(s.text,o.text.slice(),0,s.length);if(a.length<=32)r.push(new n(a,o.length+s.length));else{let l=a.length>>1;r.push(new n(a.slice(0,l)),new n(a.slice(l)))}}else r.push(s)}replace(e,t,r){if(!(r instanceof n))return super.replace(e,t,r);[e,t]=_o(this,e,t);let i=Vc(this.text,Vc(r.text,Uy(this.text,0,e)),t),s=this.length+r.length-(t-e);return i.length<=32?new n(i,s):To.from(n.split(i,[]),s)}sliceString(e,t=this.length,r=` +\\ 0 . =`],action:"Keypad"}],vectrex:[{keys:[_s],action:"Joystick"},{keys:["Z X C V"],action:"Buttons"}],atari8:[{keys:[_s],action:"Joystick"},{keys:["Shift"],action:"Button"},{keys:["F1"],action:"Start"},{keys:["F2"],action:"Select"},{keys:["F3"],action:"Option"}],pacman:[{keys:["\u2190\xA0\u2192"],action:"Joystick"},{keys:["Space"],action:"Fire"},{keys:["5","6"],action:"Coin"},{keys:["Enter","2"],action:"Start"}]};var XA={left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown"},Af=null;function Po(){if(Af===null){var n=typeof navigator!="undefined"?navigator:null;Af=!!n&&/mac|iphone|ipad|ipod/i.test(n.platform||n.userAgent||"")}return Af}function _f(n){var e=n.toLowerCase().split("+"),t=e.pop(),r={mod:!1,shift:!1,key:""};for(var i of e)if(i=="mod"||i=="ctrl"||i=="meta"||i=="cmd")r.mod=!0;else if(i=="shift")r.shift=!0;else return console.warn('Keyboard shortcut "'+n+'": unsupported modifier "'+i+'" (alt is layout-dependent), skipping'),null;t=XA[t]||t;var s=/^[a-z]$/.test(t),o=/^f([1-9]|1[0-2])$/.test(t);return!s&&!o&&!/^[0-9]$/.test(t)&&!/^arrow/.test(t)?(console.warn('Keyboard shortcut "'+n+'": key "'+t+'" is layout-dependent (use a-z, 0-9, f1-f12), skipping'),null):r.shift&&!s&&!/^arrow/.test(t)?(console.warn('Keyboard shortcut "'+n+'": shift is only allowed with letters and arrows, skipping'),null):(r.key=t,r)}function zA(n,e){if(e.altKey)return!1;var t=Po(),r=t?e.metaKey:e.ctrlKey,i=t?e.ctrlKey:e.metaKey;return n.mod!==r||i||n.shift!==e.shiftKey?!1:(e.key||"").toLowerCase()===n.key}var Ac=class{constructor(){this.bindings=[];this.handler=e=>{if(!e.defaultPrevented)for(var t=0;te.indexOf(c)>=0);for(var o of e)s.indexOf(o)<0&&s.push(o);var a=s.map(c=>r?VA[c]||c:FA[c]||c).join(r?"":"+"),l=/^[a-z][0-9]?$/.test(t)?t.toUpperCase():YA[t]||(r?t:t.charAt(0).toUpperCase()+t.slice(1));return(a?a+(r?"":"+"):"")+l}var Mf=class{constructor(e){this.shortcutsSig="";this.status={};this.visible=!0;this.pendingShortcuts=!1;this.pendingStatus=!1;this.div=e,this.shortcutsZone=$(document.createElement("span")).addClass("shortcuts_zone"),this.statusZone=$(document.createElement("span")).addClass("status_zone"),$(e).append(this.shortcutsZone).append(this.statusZone)}setShortcuts(e){if(this.visible){var t=e.map(s=>s.key+""+s.label).join("");if(t!==this.shortcutsSig){if(Za){this.pendingShortcuts=!0;return}this.shortcutsSig=t,this.shortcutsZone.empty();for(var r of e){var i=$(document.createElement("span")).addClass("shortcut");i.append($(document.createElement("kbd")).text(Lf(r.key))),i.append(document.createTextNode(" "+r.label)),r.fn&&U0(i,r.fn),this.shortcutsZone.append(i)}}}}setStatus(e,t){t?this.status[e]=t:delete this.status[e],this.renderStatus()}renderStatus(){if(this.visible){if(Za){this.pendingStatus=!0;return}this.statusZone.empty();for(var e of Object.keys(this.status)){var t=this.status[e],r=$(document.createElement("span")).addClass("status_item");t.cls&&r.addClass(t.cls),t.title&&r.prop("title",t.title),r.text(t.text),t.fn&&U0(r,t.fn),this.statusZone.append(r)}}}};function U0(n,e){n.addClass("clickable"),n.mousedown(t=>t.preventDefault()),n.click(e)}var Za=!1;function q0(){zn&&(zn.pendingShortcuts&&(zn.pendingShortcuts=!1,Wn()),zn.pendingStatus&&(zn.pendingStatus=!1,zn.renderStatus()))}function jA(){$(document).on("mousedown.shortcutbar",()=>{Za=!0}),$(document).on("mouseup.shortcutbar",()=>{Za=!1,q0()}),$(window).on("blur.shortcutbar",()=>{Za=!1,q0()})}var zn=null;function G0(n){zn=new Mf(n),jA()}var H0=()=>[],K0=()=>[];function J0(n){H0=n}function ey(n){K0=n}function Cc(n){$(document.body).toggleClass("statusbar-hidden",!n),zn&&(zn.visible=n,n&&(zn.shortcutsSig="",zn.renderStatus(),Wn()))}function Wn(){if(zn){var n=[...H0(),...K0()],e=document.activeElement;for(var t of ty)e&&t.div.contains(e)&&(n=n.concat(t.fn()));zn.setShortcuts(n.filter(r=>!UA(r.key)))}}var ty=[];function ny(n,e){ty.push({div:n,fn:e})}function UA(n){var e=n.toLowerCase();return!Po()&&(e=="mod+shift+i"||e=="mod+shift+j"||e=="mod+shift+k"||e=="ctrl+alt+t"||e=="ctrl+alt+l")}function qA(){return z0()}function GA(n){if(n._8bwPatched)return n;var e=n.stopCallback;return n.stopCallback=function(t,r,i,s){return t&&(t.ctrlKey||t.altKey||t.metaKey)?t.getModifierState&&t.getModifierState("AltGraph")?e.call(this,t,r,i,s):!1:e.call(this,t,r,i,s)},n._8bwPatched=!0,n}var Wi=class{constructor(e,t){this.boundkeys=[];let r=GA(qA());this.focusDiv=t,this.keybinder=new Ac,this.keybinder.attach(),this.mousetrap=t?new r(t):r,this.span=$(document.createElement("span")).addClass("btn_toolbar"),e.appendChild(this.span[0]),this.newGroup()}destroy(){if(this.span&&(this.span.remove(),this.span=null),this.keybinder&&(this.keybinder.detach(),this.keybinder.unbindAll(),this.keybinder=null),this.mousetrap){for(var e of this.boundkeys)this.mousetrap.unbind(e);this.mousetrap=null}}newGroup(){return this.grp=$(document.createElement("span")).addClass("btn_group").appendTo(this.span).hide()}add(e,t,r,i){var s=null;return r&&(s=$(document.createElement("button")).addClass("btn"),r.startsWith("glyphicon")&&(r=''),s.html(r),s.prop("title",e?t+" ("+Lf(e)+")":t),s.click(i),this.grp.append(s).show()),e&&(!this.focusDiv&&_f(e)?this.keybinder.bind(e,i):(this.mousetrap.bind(e,(o,a)=>(i(o,a),!1)),this.boundkeys.push(e))),s}};var ry=[];function iy(n,e){ry.push({div:n,id:e})}function sy(){let n=document.activeElement;if(!n)return null;for(let e of ry)if(e.div.contains(n))return e.id;return null}function Nn(n){var e=n&&n.w+"px"||"100%",t=n&&n.h+"px"||"100%",r=this.itemHeight=n.itemHeight;this.items=n.items,this.generatorFn=n.generatorFn,this.totalRows=n.totalRows||n.items&&n.items.length;var i=Nn.createScroller(r*this.totalRows);this.container=Nn.createContainer(e,t),this.container.appendChild(i);var s=Math.ceil(n.h/r);this.cachedItemsLen=s*3,this._renderChunk(this.container,0);var o=this,a,l=s*r,c=0;this.rmNodeInterval=setInterval(function(){if(Date.now()-c>100)for(var h=document.querySelectorAll('[data-rm="1"]'),u=0,f=h.length;ul){var f=Math.floor(u/r)-s;o._renderChunk(o.container,f<0?0:f),a=u}c=Date.now(),h.preventDefault&&h.preventDefault()}this.container.addEventListener("scroll",d)}Nn.prototype.createRow=function(n){var e;if(this.generatorFn)e=this.generatorFn(n);else if(this.items)if(typeof this.items[n]=="string"){var t=document.createTextNode(this.items[n]);e=document.createElement("div"),e.style.height=this.itemHeight+"px",e.appendChild(t)}else e=this.items[n];return e.classList.add("vrow"),e.setAttribute("data-index",""+n),e.style.position="absolute",e.style.top=n*this.itemHeight+"px",e};Nn.prototype._renderChunk=function(n,e){var t=e+this.cachedItemsLen;t>this.totalRows&&(t=this.totalRows);for(var r=document.createDocumentFragment(),i=e;ithis.setZoom(this.zoom*2)},{key:"-",label:"Zoom Out",icon:"glyphicon-zoom-out",fn:()=>this.setZoom(this.zoom/2)},{key:"ctrl+shift+left",label:"To Start",icon:"glyphicon-backward",fn:()=>{this.setSelTime(0),this.setOrgTime(0)}},{key:"shift+left",label:"Page Left",icon:"glyphicon-fast-backward",fn:()=>this.setSelTime(this.tsel-this.clocksPerPage/4)},{key:"left",label:"Left",icon:"glyphicon-step-backward",fn:()=>this.setSelTime(this.tsel-1)},{key:"right",label:"Right",icon:"glyphicon-step-forward",fn:()=>this.setSelTime(this.tsel+1)},{key:"shift+right",label:"Page Right",icon:"glyphicon-fast-forward",fn:()=>this.setSelTime(this.tsel+this.clocksPerPage/4)},{key:"space",label:"Go To Current",icon:"glyphicon-flash",fn:()=>{this.setOrgTime(this.tnow),this.setSelTime(this.tnow)}},{key:"h",label:"Hex/Dec",icon:"glyphicon-barcode",fn:()=>{this.hexformat=!this.hexformat,this.refresh()}}]}roundT(e){return e=Math.round(e),e=Math.max(0,e),e=Math.min(this.clockMax+this.clocksPerPage/2,e),e}setOrgTime(e){this.t0=this.roundT(e),this.refresh()}setCurrentTime(e){this.tnow=this.roundT(e),this.refresh()}setSelTime(e){e=this.roundT(e),e>=this.t0+this.clocksPerPage-1&&(this.t0+=this.clocksPerPage/4),e<=this.t0+2&&(this.t0-=this.clocksPerPage/4),this.tsel=e,this.setOrgTime(this.t0),this.selectionChanged()}setClocksPerPage(){this.clocksPerPage=Math.floor(this.pageWidth/this.zoom)-1}setZoom(e){this.zoom=Math.max(1/16,Math.min(64,e)),this.setClocksPerPage(),this.t0=Math.max(0,Math.round(this.tsel-this.clocksPerPage/2)),this.refresh()}refresh(){if(this.meta||this.recreate(),!!this.meta)for(var e=0;e3&&(i=`${t.len}'h${i}`),i}isEditable(e){return e&&e.input&&HA.indexOf(e.label)<0}refreshRow(e){var t=this.lines[e],r=this.meta[e];if(!t||!r)return;var i=r.label=="clk",s=t.width,o=t.height,a=t.getContext("2d"),l="14px Andale Mono, Lucida Console, monospace",c="10px Andale Mono, Lucida Console, monospace";a.font=l,a.clearRect(0,0,t.width,t.height);var d=[];this.isEditable(r)&&d.push("input");var h=12,u=h+4,f=4,m=o-u-f,O=r.len==32?4294967296:(1<1&&this.zoom>=32,D=u+m-4;a.fillStyle="#336633",a.fillRect(0,h/2,3,u+m-h/2);let M=a.strokeStyle="#33dd33",Z=a.fillStyle="#66ffff",k="#dddddd";a.beginPath();for(var w=0,R=0,X=-1,W=0;W4&&(a.font=c),a.fillText(q,w+this.zoom/4,de)}W>0&&a.lineTo(w,R),R=u+(1-ne/O)*m,i||(w+=this.zoom*(1/8)),W==0?a.moveTo(w,R):a.lineTo(w,R),this.zoom>.75&&X!=ne&&Math.abs(X-ne)=this.t0){a.strokeStyle=a.fillStyle="#ff66ff",a.beginPath(),w=(this.tsel-this.t0)*this.zoom+this.zoom/2,a.moveTo(w,0),a.lineTo(w,o),a.stroke();var ne=S[this.tsel-this.t0];if(a.textAlign="right",ne!==void 0){var pe=this.value2str(ne,r),w=s-h,ve=a.measureText(pe);a.fillStyle="black",a.fillRect(w-ve.width-2,D-13,ve.width+4,17),a.fillStyle="#ff66ff",a.fillText(pe,w,D)}}this.tnow>=this.t0&&(a.strokeStyle=a.fillStyle="#6666cc",a.beginPath(),w=(this.tnow-this.t0)*this.zoom+this.zoom/2,a.moveTo(w,0),a.lineTo(w,o),a.stroke()),a.fillStyle=k,a.textAlign="left";var we=r.label;d.length>0&&(we+=" ("+d.join(", ")+")"),a.fillText(we,5,h)}changeInputValue(e){var t=this.meta[e];if(t){var r=this.wfp.getSignalData(e,this.t0,1),i=r[0]||0,s=0,o=(1<0?0:1):this.promptValue(t,i,s,o).then(a=>{a!=null&&a>=s&&a<=o&&this.wfp.setSignalValue(e,a)})}}};function KA(n,e){this.v=n,this.k=e}function oy(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t2?r-2:0),s=2;s1?t-1:0),i=1;i1?t-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:Wa;if(ay&&ay(n,null),!$o(e))return n;let r=e.length;for(;r--;){let i=e[r];if(typeof i=="string"){let s=t(i);s!==i&&(iC(e)||(e[r]=s),i=s)}n[i]=!0}return n}function fC(n){for(let e=0;e/g),SC=Bt(/\${[\w\W]*/g),vC=Bt(/^data-[\-\w.\u00B7-\uFFFF]+$/),wC=Bt(/^aria-[\-\w]+$/),Oy=Bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),xC=Bt(/^(?:\w+script|data):/i),PC=Bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),kC=Bt(/^html$/i),$C=Bt(/^[a-z][.\w]*(-[.\w]+)+$/i),by=Bt(/<[/\w!]/g),yy=Bt(/<[/\w]/g),QC=Bt(/<\/no(script|embed|frames)/i),TC=Bt(/\/>/i),Bn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},xy=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],AC=It(Ve({},xy)),CC=(function(){let n={};return Es(xy,e=>{n[e]=Bt(new RegExp("])","i"))}),It(n)})(),_C=function(){return typeof window=="undefined"?null:window},EC=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null,i="data-tt-policy-suffix";t&&t.hasAttribute(i)&&(r=t.getAttribute(i));let s="dompurify"+(r?"#"+r:"");try{return e.createPolicy(s,{createHTML(o){return o},createScriptURL(o){return o}})}catch(o){return console.warn("TrustedTypes policy "+s+" could not be created."),null}},Sy=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Bi=function(e,t,r,i){return Qn(e,t)&&$o(e[t])?Ve(i.base?Vn(i.base):{},e[t],i.transform):r},Wf=function(e,t,r){let i=Qn(e,t)?e[t]:void 0;return i&&typeof i=="object"?Vn(i):r()};function Py(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_C(),e=_=>Py(_);if(e.version="3.4.16",e.removed=[],!n||!n.document||n.document.nodeType!==Bn.document||!n.Element)return e.isSupported=!1,e;let t=n.document,r=t,i=r.currentScript;n.DocumentFragment;let s=n.HTMLTemplateElement,o=n.Node,a=n.Element,l=n.NodeFilter;n.NamedNodeMap===void 0&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;let c=n.DOMParser,d=n.trustedTypes,h=a.prototype,u=ur(h,"cloneNode"),f=ur(h,"remove"),m=ur(h,"removeAttributeNode"),O=ur(h,"nextSibling"),S=ur(h,"childNodes"),x=ur(h,"parentNode"),D=ur(h,"shadowRoot"),M=ur(h,"attributes"),Z=o&&o.prototype?ur(o.prototype,"nodeType"):null,k=o&&o.prototype?ur(o.prototype,"nodeName"):null,w=o&&o.prototype?ur(o.prototype,"ownerDocument"):null,R=function(p){return Z?Z(p):p.nodeType},X=function(p){return k?k(p):p.nodeName};if(typeof s=="function"){let _=t.createElement("template");_.content&&_.content.ownerDocument&&(t=_.content.ownerDocument)}let W,ne="",de,q=!1,pe=0,ve=function(){if(pe>0)throw Ni('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},we=function(p){ve(),pe++;try{return W.createHTML(p)}finally{pe--}},B=function(p){ve(),pe++;try{return W.createScriptURL(p)}finally{pe--}},ue=function(){return q||(de=EC(d,i),q=!0),de},G=t,Pe=G.implementation,Qe=G.createNodeIterator,Ge=G.createDocumentFragment,He=G.getElementsByTagName,Ot=r.importNode,me=Sy();e.isSupported=typeof vy=="function"&&typeof x=="function"&&Pe&&Pe.createHTMLDocument!==void 0;let nn=bC,ir=yC,sr=SC,or=vC,di=wC,bs=xC,qr=PC,ys=$C,Dn=Oy,ke=null,kn=Ve({},[...fy,...Zf,...If,...Xf,...py]),be=null,ar=Ve({},[...my,...zf,...gy,...Rc]),st=Object.seal(ko(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Lt=null,Qr=null,ft=Object.seal(ko(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Tr=!0,lr=!0,rn=!1,Ar=!0,vt=!1,Qt=!0,ie=!1,Y=!1,te=null,ge=null,Ke=!1,Le=!1,ot=!1,xt=!1,cr=!0,dr=!1,hi="user-content-",Gr=!0,ui=!1,wt={},pn=null,Ss=Ve({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ii=null,vs=Ve({},["audio","video","img","source","image","track"]),ws=null,xs=Ve({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",_r="http://www.w3.org/2000/svg",bt="http://www.w3.org/1999/xhtml",mn=bt,fi=!1,pi=null,ka=Ve({},[Cr,_r,bt],Df),Xi=It(["mi","mo","mn","ms","mtext"]),mi=Ve({},Xi),Ps=It(["annotation-xml"]),gi=Ve({},Ps),$a=Ve({},["title","style","font","a","script"]),Zn=null,Qa=["application/xhtml+xml","text/html"],Ta="text/html",Te=null,gn=null,Aa=t.createElement("form"),ks=function(p){return p instanceof RegExp||p instanceof Function},Oi=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(gn&&gn===p)return;(!p||typeof p!="object")&&(p={}),p=Vn(p),Zn=Qa.indexOf(p.PARSER_MEDIA_TYPE)===-1?Ta:p.PARSER_MEDIA_TYPE,Te=Zn==="application/xhtml+xml"?Df:Wa,ke=Bi(p,"ALLOWED_TAGS",kn,{transform:Te}),be=Bi(p,"ALLOWED_ATTR",ar,{transform:Te}),pi=Bi(p,"ALLOWED_NAMESPACES",ka,{transform:Df}),ws=Bi(p,"ADD_URI_SAFE_ATTR",xs,{transform:Te,base:xs}),Ii=Bi(p,"ADD_DATA_URI_TAGS",vs,{transform:Te,base:vs}),pn=Bi(p,"FORBID_CONTENTS",Ss,{transform:Te}),Lt=Bi(p,"FORBID_TAGS",Vn({}),{transform:Te}),Qr=Bi(p,"FORBID_ATTR",Vn({}),{transform:Te}),wt=Qn(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?Vn(p.USE_PROFILES):p.USE_PROFILES:!1,Tr=p.ALLOW_ARIA_ATTR!==!1,lr=p.ALLOW_DATA_ATTR!==!1,rn=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Ar=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,vt=p.SAFE_FOR_TEMPLATES||!1,Qt=p.SAFE_FOR_XML!==!1,ie=p.WHOLE_DOCUMENT||!1,Le=p.RETURN_DOM||!1,ot=p.RETURN_DOM_FRAGMENT||!1,xt=p.RETURN_TRUSTED_TYPE||!1,Ke=p.FORCE_BODY||!1,cr=p.SANITIZE_DOM!==!1,dr=p.SANITIZE_NAMED_PROPS||!1,Gr=p.KEEP_CONTENT!==!1,ui=p.IN_PLACE||!1,Dn=mC(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:Oy,mn=typeof p.NAMESPACE=="string"?p.NAMESPACE:bt,mi=Wf(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Ve({},Xi)),gi=Wf(p,"HTML_INTEGRATION_POINTS",()=>Ve({},Ps));let b=Wf(p,"CUSTOM_ELEMENT_HANDLING",()=>ko(null));if(st=ko(null),Qn(b,"tagNameCheck")&&ks(b.tagNameCheck)&&(st.tagNameCheck=b.tagNameCheck),Qn(b,"attributeNameCheck")&&ks(b.attributeNameCheck)&&(st.attributeNameCheck=b.attributeNameCheck),Qn(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),Bt(st),vt&&(lr=!1),ot&&(Le=!0),wt&&(ke=Ve({},py),be=ko(null),wt.html===!0&&(Ve(ke,fy),Ve(be,my)),wt.svg===!0&&(Ve(ke,Zf),Ve(be,zf),Ve(be,Rc)),wt.svgFilters===!0&&(Ve(ke,If),Ve(be,zf),Ve(be,Rc)),wt.mathMl===!0&&(Ve(ke,Xf),Ve(be,gy),Ve(be,Rc))),ft.tagCheck=null,ft.attributeCheck=null,Qn(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?ft.tagCheck=p.ADD_TAGS:$o(p.ADD_TAGS)&&(ke===kn&&(ke=Vn(ke)),Ve(ke,p.ADD_TAGS,Te))),Qn(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?ft.attributeCheck=p.ADD_ATTR:$o(p.ADD_ATTR)&&(be===ar&&(be=Vn(be)),Ve(be,p.ADD_ATTR,Te))),Qn(p,"ADD_FORBID_CONTENTS")&&$o(p.ADD_FORBID_CONTENTS)&&(pn===Ss&&(pn=Vn(pn)),Ve(pn,p.ADD_FORBID_CONTENTS,Te)),Gr&&(ke["#text"]=!0),ie&&Ve(ke,["html","head","body"]),ke.table&&(Ve(ke,["tbody"]),delete Lt.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let T=W;W=p.TRUSTED_TYPES_POLICY;try{ne=we("")}catch(L){throw W=T,L}}else p.TRUSTED_TYPES_POLICY===null?(W=void 0,ne=""):(W===void 0&&(W=ue()),W&&typeof ne=="string"&&(ne=we("")));It&&It(p),gn=p},$s=Ve({},[...Zf,...If,...gC]),Qs=Ve({},[...Xf,...OC]),Ca=function(p,b,T){return b.namespaceURI===bt?p==="svg":b.namespaceURI===Cr?p==="svg"&&(T==="annotation-xml"||mi[T]):!!$s[p]},bo=function(p,b,T){return b.namespaceURI===bt?p==="math":b.namespaceURI===_r?p==="math"&&gi[T]:!!Qs[p]},bi=function(p,b,T){return b.namespaceURI===_r&&!gi[T]||b.namespaceURI===Cr&&!mi[T]?!1:!Qs[p]&&($a[p]||!$s[p])},yo=function(p){let b=x(p);(!b||!b.tagName)&&(b={namespaceURI:mn,tagName:"template"});let T=Wa(p.tagName),L=Wa(b.tagName);return pi[p.namespaceURI]?p.namespaceURI===_r?Ca(T,b,L):p.namespaceURI===Cr?bo(T,b,L):p.namespaceURI===bt?bi(T,b,L):!!(Zn==="application/xhtml+xml"&&pi[p.namespaceURI]):!1},pt=function(p){Ia(e.removed,{element:p});try{x(p).removeChild(p)}catch(b){if(f(p),!x(p))throw Ni("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ts=function(p,b,T){try{m(p,b)}catch(L){try{p.removeAttribute(T)}catch(V){}}},$n=function(p){Er(p);let b=S(p);if(b){let L=[];Es(b,V=>{Ia(L,V)}),Es(L,V=>{try{f(V)}catch(le){}})}let T=M(p);if(T)for(let L=T.length-1;L>=0;--L){let V=T[L],le=V&&V.name;typeof le=="string"&&Ts(p,V,le)}},Dt=function(p,b,T){if(!T)try{T=b.getAttributeNode(p)}catch(L){T=null}Ia(e.removed,{attribute:T||null,from:b});try{T?m(b,T):b.removeAttribute(p)}catch(L){try{b.removeAttribute(p)}catch(V){}}if(p==="is")if(Le||ot)try{pt(b)}catch(L){}else try{b.setAttribute(p,"")}catch(L){}},_a=function(p){let b=M(p);if(b)for(let T=b.length-1;T>=0;--T){let L=b[T],V=L&&L.name;typeof V!="string"||be[Te(V)]||Ts(p,L,V)}},Er=function(p){let b=[p];for(;b.length>0;){let T=b.pop();R(T)===Bn.element&&_a(T);let L=S(T);if(L)for(let V=L.length-1;V>=0;--V)b.push(L[V])}},yi=function(p,b){return Qt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},Ea=function(p){if(!Qt)return;let b=[p];for(;b.length>0;){let T=b.pop(),L=R(T);if(L===Bn.processingInstruction||L===Bn.comment&&on(yy,T.data)){try{f(T)}catch(le){}continue}if(L===Bn.element){let le=T,fe=Te(X(T));try{le.hasAttribute&&le.hasAttribute("patchsrc")&&le.removeAttribute("patchsrc"),le.hasAttribute&&le.hasAttribute("for")&&yi("for",fe)&&le.removeAttribute("for")}catch(Ae){}}let V=S(T);if(V)for(let le=V.length-1;le>=0;--le)b.push(V[le])}},As=function(p){let b=null,T=null;if(Ke)p=""+p;else{let le=cy(p,/^[\r\n\t ]+/);T=le&&le[0]}Zn==="application/xhtml+xml"&&mn===bt&&(p=''+p+"");let L=W?we(p):p;if(mn===bt)try{b=new c().parseFromString(L,Zn)}catch(le){}if(!b||!b.documentElement){b=Pe.createDocument(mn,"template",null);try{b.documentElement.innerHTML=fi?ne:L}catch(le){}}let V=b.body||b.documentElement;return p&&T&&V.insertBefore(t.createTextNode(T),V.childNodes[0]||null),mn===bt?He.call(b,ie?"html":"body")[0]:ie?b.documentElement:V},y=function(p){let b=w?w(p):p.ownerDocument;return Qe.call(b||p,p,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Q=function(p){return p=Xa(p,nn," "),p=Xa(p,ir," "),p=Xa(p,sr," "),p},v=function(p){var b;p.normalize();let T=w?w(p):p.ownerDocument,L=Qe.call(T||p,p,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),V=L.nextNode();for(;V;)V.data=Q(V.data),V=L.nextNode();let le=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");le&&Es(le,fe=>{E(fe.content)&&v(fe.content)})},C=function(p){let b=k?k(p):null;return typeof b!="string"||Te(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==M(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==Z(p)||p.childNodes!==S(p)},E=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return Z(p)===Bn.documentFragment}catch(b){return!1}},A=function(p){if(!Z||typeof p!="object"||p===null)return!1;try{return typeof Z(p)=="number"}catch(b){return!1}};function I(_,p,b){_.length!==0&&Es(_,T=>{T.call(e,p,b,gn)})}let j=function(p,b){return!!(Qt&&p.hasChildNodes()&&!A(p.firstElementChild)&&on(by,p.textContent)&&on(by,p.innerHTML)||Qt&&p.namespaceURI===bt&&AC[b]&&(A(p.firstElementChild)||typeof p.textContent=="string"&&on(CC[b],p.textContent))||p.nodeType===Bn.processingInstruction||Qt&&p.nodeType===Bn.comment&&on(yy,p.data))},U=function(p,b){if(p instanceof RegExp)return on(p,b);if(p instanceof Function){for(var T=arguments.length,L=new Array(T>2?T-2:0),V=2;V=0;--fe){let Ae=p===T?u(V[fe],!0):V[fe];L.insertBefore(Ae,O(p))}}}return pt(p),!0},K=function(p,b,T,L){return p.length===0?b:b===T||b===L?Vn(b):b},ce=function(p,b){return p===b||x(p)!==null?!1:(ui&&Er(p),!0)},Ce=function(p,b){if(I(me.beforeSanitizeElements,p,null),ce(p,b))return!0;if(C(p))return pt(p),!0;let T=Te(X(p));if(ke=K(me.uponSanitizeElement,ke,kn,te),I(me.uponSanitizeElement,p,{tagName:T,allowedTags:ke}),ce(p,b))return!0;if(j(p,T))return pt(p),!0;if(Lt[T]||!(ft.tagCheck instanceof Function&&ft.tagCheck(T))&&!ke[T]){let L=H(p,T,b);return L===!1&&(I(me.afterSanitizeElements,p,null),ce(p,b))?!0:L}if(R(p)===Bn.element&&!yo(p)||(T==="noscript"||T==="noembed"||T==="noframes")&&on(QC,p.innerHTML))return pt(p),!0;if(vt&&p.nodeType===Bn.text){let L=Q(p.textContent);p.textContent!==L&&(Ia(e.removed,{element:p.cloneNode()}),p.textContent=L)}return I(me.afterSanitizeElements,p,null),ce(p,b)},Ie=function(p,b,T){if(Qr[b]||yi(b,p)||cr&&(b==="id"||b==="name")&&(T in t||T in Aa))return!1;let L=be[b]||ft.attributeCheck instanceof Function&&ft.attributeCheck(b,p);return lr&&on(or,b)||Tr&&on(di,b)?!0:L?ws[b]||on(Dn,Xa(T,qr,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&dy(T,"data:")===0&&Ii[p]||rn&&!on(bs,Xa(T,qr,""))?!0:!T:at(p)&&U(st.tagNameCheck,p)&&U(st.attributeNameCheck,b,p)||b==="is"&&st.allowCustomizedBuiltInElements&&U(st.tagNameCheck,T)},Be=Ve({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),at=function(p){return!Be[Wa(p)]&&on(ys,p)},dt=function(p,b,T,L){if(W&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!T)switch(d.getAttributeType(p,b)){case"TrustedHTML":return we(L);case"TrustedScriptURL":return B(L)}return L},sn=function(p,b,T,L){try{return T?p.setAttributeNS(T,b,L):p.setAttribute(b,L),C(p)?(pt(p),!1):!0}catch(V){return Dt(b,p),!1}},Rr=function(p,b){if(I(me.beforeSanitizeAttributes,p,null),ce(p,b))return;let T=p.attributes;if(!T||C(p))return;be=K(me.uponSanitizeAttribute,be,ar,ge);let L={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be,forceKeepAttr:void 0},V=T.length,le=Te(p.nodeName);for(;V--;){let fe=T[V],Ae=fe.name,ht=fe.namespaceURI,tt=fe.value,Xn=Te(Ae),Cs=tt,je=Ae==="value"?Cs:cC(Cs),Ra=!1;if(L.attrName=Xn,L.attrValue=je,L.keepAttr=!0,L.forceKeepAttr=void 0,I(me.uponSanitizeAttribute,p,L),je=L.attrValue,dr&&(Xn==="id"||Xn==="name")&&dy(je,hi)!==0&&(Dt(Ae,p,fe),je=hi+je,Ra=!0),Qt&&on(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,je)){Dt(Ae,p,fe);continue}if(Xn==="attributename"&&cy(je,"href")){Dt(Ae,p,fe);continue}if(!L.forceKeepAttr){if(!L.keepAttr){Dt(Ae,p,fe);continue}if(!Ar&&on(TC,je)){Dt(Ae,p,fe);continue}if(vt&&(je=Q(je)),!Ie(le,Xn,je)){Dt(Ae,p,fe);continue}je=dt(le,Xn,ht,je),je!==Cs&&sn(p,Ae,ht,je)&&Ra&&ly(e.removed)}}I(me.afterSanitizeAttributes,p,null),ce(p,b)},In=function(p){let b=null,T=y(p);for(I(me.beforeSanitizeShadowDOM,p,null);b=T.nextNode();)if(I(me.uponSanitizeShadowNode,b,null),Ce(b,p),Rr(b,p),E(b.content)&&In(b.content),R(b)===Bn.element){let L=D(b);E(L)&&(Si(L),In(L))}I(me.afterSanitizeShadowDOM,p,null)},Si=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let T=b.pop();if(T.shadow){In(T.shadow);continue}let L=T.node,V=R(L)===Bn.element,le=S(L);if(le)for(let fe=le.length-1;fe>=0;--fe)b.push({node:le[fe],shadow:null});if(V){let fe=k?k(L):null;if(typeof fe=="string"&&Te(fe)==="template"){let Ae=L.content;E(Ae)&&b.push({node:Ae,shadow:null})}}if(V){let fe=D(L);E(fe)&&b.push({node:null,shadow:fe},{node:fe,shadow:null})}}};return e.sanitize=function(_){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,T=null,L=null,V=null;if(fi=!_,fi&&(_=""),typeof _!="string"&&!A(_)&&(_=pC(_),typeof _!="string"))throw Ni("dirty is not a string, aborting");if(!e.isSupported)return _;Y?(ke=te,be=ge):Oi(p),(me.uponSanitizeElement.length>0||me.uponSanitizeAttribute.length>0)&&(ke=Vn(ke)),me.uponSanitizeAttribute.length>0&&(be=Vn(be)),e.removed=[];let le=ui&&typeof _!="string"&&A(_);if(le){Ea(_);let ht=X(_);if(typeof ht=="string"){let tt=Te(ht);if(!ke[tt]||Lt[tt])throw $n(_),Ni("root node is forbidden and cannot be sanitized in-place")}if(C(_))throw $n(_),Ni("root node is clobbered and cannot be sanitized in-place");try{Si(_)}catch(tt){throw $n(_),tt}}else if(A(_))b=As(""),T=b.ownerDocument.importNode(_,!0),T.nodeType===Bn.element&&T.nodeName==="BODY"||T.nodeName==="HTML"?b=T:b.appendChild(T),Si(b);else{if(!Le&&!vt&&!ie&&_.indexOf("<")===-1)return W&&xt?we(_):_;if(b=As(_),!b)return Le?null:xt?ne:""}b&&Ke&&pt(b.firstChild);let fe=le?_:b;try{let ht=y(fe);for(;L=ht.nextNode();)Ce(L,fe),Rr(L,fe),E(L.content)&&In(L.content)}catch(ht){throw le&&($n(_),Es(e.removed,tt=>{tt.element&&Er(tt.element)})),ht}if(le){let ht=!1;if(Es(e.removed,tt=>{tt.element&&(tt.element===_&&(ht=!0),Er(tt.element))}),ht)throw Ni("a node selected for removal could not be safely returned; refusing to sanitize in place");return vt&&v(_),_}if(Le){if(vt&&v(b),ot)for(V=Ge.call(b.ownerDocument);b.firstChild;)V.appendChild(b.firstChild);else V=b;return(be.shadowroot||be.shadowrootmode)&&(V=Ot.call(r,V,!0)),V}let Ae=ie?b.outerHTML:b.innerHTML;return ie&&ke["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&on(kC,b.ownerDocument.doctype.name)&&(Ae=" +`+Ae),vt&&(Ae=Q(Ae)),W&&xt?we(Ae):Ae},e.setConfig=function(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Oi(_),Y=!0,te=ke,ge=be},e.clearConfig=function(){gn=null,Y=!1,te=null,ge=null,W=de,ne=""},e.isValidAttribute=function(_,p,b){gn||Oi({});let T=Te(_),L=Te(p);return Ie(T,L,b)},e.addHook=function(_,p){typeof p=="function"&&Qn(me,_)&&Ia(me[_],p)},e.removeHook=function(_,p){if(Qn(me,_)){if(p!==void 0){let b=aC(me[_],p);return b===-1?void 0:lC(me[_],b,1)[0]}return ly(me[_])}},e.removeHooks=function(_){Qn(me,_)&&(me[_]=[])},e.removeAllHooks=function(){me=Sy()},e}var Vi=Py();var RC=Yf(),jf=class extends _c{constructor(t,r){super(r);this.scrollbarWidth=12;this.parent=t,this.parent.setAttribute("tabindex","-1"),this.parent.addEventListener("mousedown",i=>{i.preventDefault(),this.parent.focus()}),ny(this.parent,()=>this.getShortcuts()),iy(this.parent,"verilog-waveform"),this.recreate()}getShortcuts(){return this.getActions()}recreate(){clearTimeout(this.wtimer),this.wtimer=setTimeout(()=>{this.destroy(),this._recreate()},0)}destroy(){this.wavelist&&($(this.wavelist.container).remove(),this.wavelist=null),this.toolbar&&(this.toolbar.destroy(),this.toolbar=null),this.clklabel&&(this.clklabel.remove(),this.clklabel=null)}_recreate(){if(this.meta=this.wfp.getSignalMetadata(),!!this.meta){var t=$(this.parent).width();this.pageWidth=t-this.scrollbarWidth;var r=40;this.setClocksPerPage(),this.clockMax=0,this.wavelist=new Nn({w:t,h:$(this.parent).height(),itemHeight:r,totalRows:this.meta.length+1,generatorFn:a=>{var l=this.meta[a];let c=document.createElement("div"),d=document.createElement("canvas");return d.width=t-12,d.height=r,c.appendChild(d),c.classList.add("waverow"),this.lines[a]=d,this.refreshRow(a),this.isEditable(l)&&(c.onmousedown=h=>{var u=this.meta[a];u&&u.input&&this.changeInputValue(a)},c.classList.add("editable"),c.style.cursor="grab"),c}});var i=this.wavelist.container;i.tabIndex=-1,this.toolbar=new Wi(this.parent,this.parent),this.toolbar.span.css("display","inline-block"),this.clklabel=document.createElement("span"),this.clklabel.innerText="-",$(this.parent).append(this.clklabel),$(this.parent).append(i);var s=!1,o=a=>{this.setSelTime(a.offsetX/this.zoom+this.t0-.5)};$(i).mousedown(a=>{s=!0,o(a)}),$(i).mousemove(a=>{s&&o(a)}),$(i).mouseup(a=>{s=!1}),$(i).on("wheel",a=>{if(Math.abs(a.originalEvent.deltaX)>Math.abs(a.originalEvent.deltaY)){var l=Math.max(-1e3,Math.min(1e3,a.originalEvent.deltaX));l&&this.setOrgTime(this.t0+l)}});for(let a of this.getActions())this.toolbar.add(a.key,a.label,a.icon,a.fn);this.toolbar.add("+","Zoom In",null,()=>this.setZoom(this.zoom*2)),$(window).resize(()=>{this.recreate()})}}selectionChanged(){this.clklabel.innerText=" clk "+this.tsel}promptValue(t,r,i,s){return new Promise(o=>{bootbox.prompt({value:r+"",inputType:"number",title:`Enter new value for "${Vi.sanitize(t.label)}" (${i} to ${s}):`,callback:a=>o(a!=null?parseInt(a):null)})})}},Mc=class{constructor(e,t){this.provider=t;var r=$("#emuoverlay").show();this.topdiv=$('
').appendTo(r)[0],this.topdiv.appendChild(e),this.wavediv=$('
').appendTo(r)[0],this.split=RC([this.topdiv,this.wavediv],{minSize:[0,0],sizes:[99,1],direction:"vertical",gutterSize:16,onDrag:()=>this.resize()})}isVisible(){return this.split.getSizes()[1]>2}show(){this.split.setSizes([0,100])}setCurrentTime(e){this.waveview&&this.waveview.setCurrentTime(e)}update(){this.isVisible()&&(this.waveview?this.waveview.refresh():this.waveview=new jf(this.wavediv,this.provider))}resize(){this.waveview&&this.waveview.recreate()}};function ky(){X0({createScope:(n,e)=>new Mc(n,e),showVideoControls(n){$("#speed_bar, #run_bar, #dbg_record").toggle(n)},showSettleCount(n){n==null?$("#verilog_bar").hide():($("#verilog_bar").show(),$("#settle_label").text(n+""))}})}var nt=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],MC=[...nt,/^\s*[.]?(include|incbin)\s+([^\s;"]+)/gmi],LC=[...nt,/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi],lt=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],Na=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],DC=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function Ty(n){let e=n&&qt(n);return e&&e.includeDirs&&e.includeDirs.length?DC:[]}var $y=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],ZC=[/^[!]src\s+"(.+?)"/gmi],IC=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],XC=[/^\s*(import)\s*"(.+?)"/gmi],zC=[/^\s*%%\s*#include\s+"(.+?)"/gm],WC={cc65:{apple2:"https://cc65.github.io/doc/apple2.html",atari8:"https://cc65.github.io/doc/atari.html",c64:"https://cc65.github.io/doc/c64.html",nes:"https://cc65.github.io/doc/nes.html",pce:"https://cc65.github.io/doc/pce.html",vic20:"https://cc65.github.io/doc/vic20.html",lynx:"https://cc65.github.io/doc/lynx.html"}},qf=3,Uf={default:qf===3?{preloadFS:"sdcc",wasiFSZip:"sdcc-fs.zip"}:{wasiFSZip:"sdcc-fs.zip"},coleco:{preloadFS:"sdcc"},"msx-libcv":{preloadFS:"sdcc"},sms:{preloadFS:"sdcc"},gb:{preloadFS:"sdcc"},cpc:{preloadFS:"sdcc"}},Qy={apple2:{wasiFSZip:"cc65-fs-apple2.zip"},c64:{wasiFSZip:"cc65-fs-c64.zip"},vic20:{wasiFSZip:"cc65-fs-vic20.zip"},nes:{wasiFSZip:"cc65-fs-nes.zip"},atari8:{wasiFSZip:"cc65-fs-atari8.zip"},vector:{wasiFSZip:"cc65-fs-none.zip"},atari7800:{wasiFSZip:"cc65-fs-none.zip"},devel:{wasiFSZip:"cc65-fs-none.zip"},vcs:{wasiFSZip:"cc65-fs-atari2600.zip"},pce:{wasiFSZip:"cc65-fs-pce.zip"},exidy:{wasiFSZip:"cc65-fs-none.zip"}},Qo={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt",wasmModule:"dasm-wasisdk",version:"2.20.17",includePatterns:MC,linkPatterns:lt},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/8bitworkshop/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...nt,...ZC],linkPatterns:lt},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",version:"2.4.1",includePatterns:nt,linkPatterns:lt},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",helpURL:"https://github.com/camsaul/nesasm",wasmModule:"nesasm",version:"3.1",includePatterns:nt,linkPatterns:lt},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",helpURL:"https://github.com/apple2accumulator/merlin32",wasmModule:"merlin32",version:"1.1.1",includePatterns:[...nt,...$y],linkPatterns:lt},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],includeDirs:["/share/cc65/include","/share/cc65/asminc"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",version:"2.19",defineFlag:"-D",defineInline:!0,platforms:Qy,includePatterns:nt,linkPatterns:lt},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65",".inc"],includeDirs:["/share/cc65/include","/share/cc65/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",version:"2.19",defineFlag:"-D",defineInline:!1,platforms:Qy,includePatterns:nt,linkPatterns:lt},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65",version:"2.19",linkSymbolFlag:"-D",linkSymbolInline:!1},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h",".sdcc"],includeDirs:["/share/sdcc/include","/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc4",version:qf===3?"3.6.5":"4.6.0",versionAlt:qf===3?"4.6.0":"3.6.5",defineFlag:"-D",defineInline:!0,platforms:Uf,includePatterns:nt,linkPatterns:lt},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/share/sdcc/include","/include"],editorStyle:"z80",wasmModule:"sdasz80-4",version:"05.50.4+",platforms:Uf,includePatterns:nt,linkPatterns:lt},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:nt,linkPatterns:lt},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdld4",version:"05.50.4-",linkSymbolFlag:"-g",linkSymbolInline:!1},sdas6500:{id:"sdas6500",name:"sdas6500",kind:"assembler",arch:"6502",extensions:[],wasmModule:"sdas6500",version:"05.50.4+",platforms:Uf},sdld6808:{id:"sdld6808",name:"sdld6808",kind:"linker",arch:"6502",extensions:[],wasmModule:"sdld4",version:"05.50.4-",linkSymbolFlag:"-g",linkSymbolInline:!1},sccz80:{id:"sccz80",name:"sccz80",kind:"compiler",arch:"z80",extensions:[".scc"],platforms:{default:{preloadFS:"sccz80"}},noWorkerBuild:!0},naken:{id:"naken",name:"Naken",kind:"assembler",extensions:[".ns"],helpURL:"https://github.com/mikeakohn/naken_asm",noWorkerBuild:!0},zmac:{id:"zmac",name:"zmac",kind:"assembler",arch:"z80",extensions:[".z"],editorStyle:"z80",helpURL:"https://raw.githubusercontent.com/8bitworkshop/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:nt,linkPatterns:lt},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:Na,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...nt,...$y],linkPatterns:lt},cmoc:{id:"cmoc",name:"CMOC",kind:"compiler",arch:"6809",extensions:[".c",".h"],editorStyle:"text/x-csrc",helpURL:"https://github.com/stahta01/cmoc/",wasmModule:"cmoc",version:"0.1.67",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},lwasm:{id:"lwasm",name:"LWASM",kind:"assembler",arch:"6809",extensions:[".lwasm"],editorStyle:"6809",wasmModule:"lwasm",version:"4.17",includePatterns:nt,linkPatterns:lt},lwlink:{id:"lwlink",name:"LWLINK",kind:"linker",arch:"6809",extensions:[],wasmModule:"lwlink",version:"4.17"},vasmarm:{id:"vasmarm",name:"vasm (ARM)",kind:"assembler",arch:"arm32",extensions:[".vasm"],editorStyle:"vasm",wasmModule:"vasmarm_std",version:"1.8k",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},armips:{id:"armips",name:"armips",kind:"assembler",arch:"arm32",extensions:[".armips"],editorStyle:"vasm",wasmModule:"armips",version:"0.11.0",includePatterns:nt,linkPatterns:lt},armtcc:{id:"armtcc",name:"TCC (ARM)",kind:"compiler",arch:"arm32",extensions:[".c",".s"],includeDirs:["/include"],wasiFSZip:"arm32-fs.zip",editorStyle:"text/x-csrc",wasmModule:"arm-tcc",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},armtcclink:{id:"armtcclink",name:"TCC (ARM) link",kind:"linker",arch:"arm32",extensions:[],wasmModule:"arm-tcc"},smlrc:{id:"smlrc",name:"SmallerC",kind:"compiler",arch:"x86",extensions:[".c"],helpURL:"https://github.com/alexfru/SmallerC/blob/master/v0100/doc/smlrc.md",editorStyle:"text/x-csrc",wasmModule:"smlrc",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},yasm:{id:"yasm",name:"YASM",kind:"assembler",arch:"x86",extensions:[".asm"],editorStyle:"gas",helpURL:"https://www.tortall.net/projects/yasm/manual/html/manual.html",wasmModule:"yasm",version:"1.3.0",defineFlag:"-D",defineInline:!1,includePatterns:nt,linkPatterns:lt},oscar64:{id:"oscar64",name:"Oscar64",kind:"compiler",arch:"6502",extensions:[".c",".cpp",".cc",".o64"],includeDirs:["/include"],wasiFSZip:"oscar64-fs.zip",editorStyle:"text/x-csrc",helpURL:"https://github.com/drmortalwombat/oscar64/blob/v1.32.266/oscar64.md",defineFlag:"-d",defineInline:!0,wasmModule:"oscar64",version:"1.32.266",includePatterns:LC,linkPatterns:lt,compileLinkedSources:!0,platforms:{c64:{},atari8:{buildArgs:{compiler:["-tm=atari"]}},nes:{buildArgs:{compiler:["-tm=nes"]}}}},bataribasic:{id:"bataribasic",name:"batari Basic",kind:"compiler",arch:"6502",extensions:[".bb",".bas"],includeDirs:["/includes"],editorStyle:"bataribasic",helpURL:"help/bataribasic/manual.html",wasiFSZip:"bb-fs.zip",platforms:{default:{}},includePatterns:nt,linkPatterns:lt},fastbasic:{id:"fastbasic",name:"FastBasic",kind:"compiler",arch:"6502",extensions:[".bas",".fb",".fbi"],editorStyle:"fastbasic",helpURL:"https://github.com/dmsc/fastbasic/blob/v4.4/manual.md",wasmModule:"fastbasic-int",version:"4.4",platforms:{default:{wasiFSZip:"cc65-fs-atari8.zip"}},includePatterns:nt,linkPatterns:lt},cc2600:{id:"cc2600",name:"CC2600",kind:"compiler",arch:"6502",extensions:[".cc2600"],editorStyle:"text/x-csrc",helpURL:"https://github.com/steux/cc2600",wasmModule:"cc2600",version:"0.4.5",wasiFSZip:"cc2600-fs.zip",includeDirs:["/headers"],includePatterns:nt,linkPatterns:lt},cc7800:{id:"cc7800",name:"CC7800",kind:"compiler",arch:"6502",extensions:[".cc7800",".c78"],editorStyle:"text/x-csrc",helpURL:"https://github.com/steux/cc7800",wasmModule:"cc7800",version:"0.2.28",wasiFSZip:"cc7800-fs.zip",includeDirs:["/headers"],includePatterns:nt,linkPatterns:lt},basic:{id:"basic",name:"BASIC",kind:"interpreter",extensions:[".bas"],editorStyle:"basic"},wiz:{id:"wiz",name:"wiz",kind:"compiler",extensions:[".wiz"],includeDirs:["/common/$platform"],editorStyle:"text/x-wiz",helpURL:"https://github.com/wiz-lang/wiz/blob/master/readme.md#wiz",wasmModule:"wiz",version:"0.1.2",platforms:{default:{preloadFS:"wiz"}},includePatterns:IC},ecs:{id:"ecs",name:"ECS",kind:"assembler",arch:"6502",extensions:[".ecs"],editorStyle:"ecs",platforms:{vcs:{wasiFSZip:"cc65-fs-atari2600.zip"},nes:{wasiFSZip:"cc65-fs-nes.zip"},c64:{wasiFSZip:"cc65-fs-c64.zip"}},includePatterns:[...nt,...XC]},inform6:{id:"inform6",name:"Inform 6",kind:"compiler",arch:"zmachine",extensions:[".inf"],editorStyle:"inform6",wasmModule:"inform",version:"6.34",platforms:{default:{preloadFS:"inform"}}},dialog:{id:"dialog",name:"Dialog",kind:"compiler",arch:"zmachine",extensions:[".dg"],editorStyle:"dialog",helpURL:"https://linusakesson.net/dialog/docs/",wasmModule:"dialogc",version:"1c/03-dev",wasiFSZip:"dialog-fs.zip",includeDirs:["/"],includePatterns:zC},verilator:{id:"verilator",name:"Verilator",kind:"hdl",arch:"verilog",extensions:[".v"],editorStyle:"verilog",helpURL:"https://verilator.org/guide/4.205/",wasmModule:"verilator_bin",version:"4.205",includePatterns:Na,linkPatterns:[]},yosys:{id:"yosys",name:"Yosys",kind:"hdl",arch:"verilog",extensions:[],wasmModule:"yosys",includePatterns:Na,linkPatterns:[]},silice:{id:"silice",name:"Silice",kind:"hdl",arch:"verilog",extensions:[".ice"],editorStyle:"verilog",helpURL:"https://github.com/sylefeb/Silice",wasmModule:"silice",version:"0.1",platforms:{default:{preloadFS:"Silice"}},includePatterns:Na,linkPatterns:[]},"llvm-mos":{id:"llvm-mos",name:"LLVM-MOS",kind:"compiler",arch:"6502",extensions:[".c",".cpp",".s",".S",".C"],editorStyle:"text/x-csrc",helpURL:"https://llvm-mos.org/wiki/Welcome",remote:!0,includePatterns:nt,linkPatterns:lt,server:{version:"latest",platforms:["atari8","c64","nes","pce","vcs"],binpath:"llvm-mos/bin",command:"mos-clang",args:["-Os","-g","-D","__8BITWORKSHOP__","-o","$OUTFILE","$INFILES"]}},remote:{id:"remote",name:"Remote build",kind:"remote",extensions:[],remote:!0}};function qt(n){return Qo[n.replace(/^remote:/,"")]}function Ay(n,e){let t=qt(n);if(!t||!e)return;let r=WC[t.id];if(!r)return;let i=r[e];if(!i){let s=Mr(e);s&&s!==e&&(i=r[s])}return i}function Cy(n){let e=[];for(let t in Qo){let r=Qo[t];for(let i of r.extensions)if(i&&n.endsWith(i)){e.push({meta:r,len:i.length});break}}return e.sort((t,r)=>r.len-t.len).map(t=>t.meta)}function NC(n,e){let t=n&&qt(n);if(!(!t||!t.platforms)){if(e){let r=t.platforms[e];if(r)return r;let i=Mr(e);if(i&&i!==e&&t.platforms[i])return t.platforms[i]}return t.platforms.default}}function BC(n,e){let t=qt(n);if(t&&t.platforms){if(e){let i=t.platforms[e];if(i&&i.preloadFS)return i.preloadFS;let s=Mr(e);if(s&&s!==e){let o=t.platforms[s];if(o&&o.preloadFS)return o.preloadFS}}let r=t.platforms.default;if(r&&r.preloadFS)return r.preloadFS}}function Gf(n){let e=qt(n);return e&&e.skeleton?e.skeleton:n.replace(/^remote:/,"")}function _y(n){return!n||!n.version?"\u2014":n.versionAlt?n.version+" (default) / "+n.versionAlt:n.version}function Lc(n,e){let t=n&&qt(n);return t&&t.includePatterns?t.includePatterns:e&&e.startsWith("verilog")?Na:nt}function Dc(n,e){let t=n&&qt(n);return t&&t.linkPatterns?t.linkPatterns:e&&e.startsWith("verilog")?[]:lt}function Ey(n){let e=n&&qt(n);return!!(e&&e.compileLinkedSources)}function Zc(n,e){e=e&&Mr(e);let t=n&&qt(n),r=t&&t.includeDirs||[];return r=r.map(i=>i.replace("$platform",e)),r}function Ic(n,e){var t=BC(n,e);if(t)return t;let r=NC(n,e);if(r&&r.wasiFSZip)return"wasi:"+r.wasiFSZip;let i=n&&qt(n);return i&&i.wasiFSZip?"wasi:"+i.wasiFSZip:void 0}function Ry(n,e){let t=[],r=n.split(` +`);for(let i of e||[]){let s=i instanceof RegExp?{re:i}:i;for(let o of r){let a;for(s.re.lastIndex=0;a=s.re.exec(o);){let l=a[s.group!=null?s.group:a.length-1];l&&t.push(s.suffix?l+s.suffix:l)}}}return t}var Lr={vcs:{arch:"6502",code_start:4096,code_size:61440,data_start:128,data_size:128,wiz_rom_ext:".a26",wiz_inc_dir:"2600",cfgfile:"atari2600.cfg",libargs:["crt0.o","atari2600.lib"],extra_link_files:["crt0.o","atari2600.cfg"],asm_cfgfile:"atari2600-asm.cfg",asm_libargs:[],asm_extra_link_files:["atari2600-asm.cfg"],extra_compile_files:["vcs.h","macro.h"],define:["__ATARI2600__"]},mw8080bw:{arch:"z80",code_start:0,rom_size:8192,data_start:8192,data_size:1024,stack_end:9216},vicdual:{arch:"z80",code_start:0,rom_size:16416,data_start:58368,data_size:1024,stack_end:59392},galaxian:{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:18432},"galaxian-scramble":{arch:"z80",code_start:0,rom_size:20512,data_start:16384,data_size:1024,stack_end:18432},pacman:{arch:"z80",code_start:0,codeseg_start:202,rom_size:32768,data_start:19456,data_size:652,stack_end:20416},williams:{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152,set_stack_end:49152,extra_link_files:["williams.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_link_args:["-swilliams.scr","-lcmoc-crt-vec","-lcmoc-std-vec"],extra_compile_files:["assert.h","cmoc.h","stdarg.h","stdlib.h"]},"williams-defender":{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152},"williams-z80":{arch:"z80",code_start:0,rom_size:38912,data_start:38912,data_size:10240,stack_end:49152},"vector-z80color":{arch:"z80",code_start:0,rom_size:32768,data_start:57344,data_size:8192,stack_end:0},"vector-ataricolor":{arch:"6502",define:["__VECTOR__"],cfgfile:"vector-color.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","vector-color.cfg"]},"sound_williams-z80":{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:32768},base_z80:{arch:"z80",code_start:0,rom_size:32768,data_start:32768,data_size:32768,stack_end:0},coleco:{arch:"z80",rom_start:32768,code_start:33024,rom_size:32768,data_start:28672,data_size:1024,stack_end:32768,extra_preproc_args:["-I","/share/include/coleco","-D","CV_CV"],extra_link_args:["-k","/share/lib/coleco","-l","libcv","-l","libcvu","crt0.rel"]},msx:{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_link_args:["crt0-msx.rel"],extra_link_files:["crt0-msx.rel","crt0-msx.lst"],wiz_sys_type:"z80",wiz_inc_dir:"msx"},"msx-libcv":{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_preproc_args:["-I",".","-D","CV_MSX"],extra_link_args:["-k",".","-l","libcv-msx","-l","libcvu-msx","crt0-msx.rel"],extra_link_files:["libcv-msx.lib","libcvu-msx.lib","crt0-msx.rel","crt0-msx.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},"sms-sg1000-libcv":{arch:"z80",rom_start:0,code_start:256,rom_size:49152,data_start:49152,data_size:1024,stack_end:57344,extra_preproc_args:["-I",".","-D","CV_SMS"],extra_link_args:["-k",".","-l","libcv-sms","-l","libcvu-sms","crt0-sms.rel"],extra_link_files:["libcv-sms.lib","libcvu-sms.lib","crt0-sms.rel","crt0-sms.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},nes:{arch:"6502",define:["__NES__"],cfgfile:"neslib2.cfg",libargs:["crt0.o","nes.lib","neslib2.lib","-D","NES_MAPPER=0","-D","NES_PRG_BANKS=2","-D","NES_CHR_BANKS=1","-D","NES_MIRRORING=0"],extra_link_files:["crt0.o","neslib2.lib","neslib2.cfg","nesbanked.cfg"],extra_compile_files:["neslib.h"],symbolConfigs:{NES_MAPPER:{4:"nesbanked.cfg"}},ignore_segments:["HEADER","CHARS"],wiz_rom_ext:".nes"},apple2:{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["--lib-path","/share/target/apple2/drv","apple2.lib"],__CODE_RUN__:16384,code_start:2051,rom_size:35837,data_start:37888,zp_start:96,load_header:"dos33",acmeargs:["-f","apple"]},"apple2-e":{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["apple2.lib"],acmeargs:["-f","apple"]},"atari8-800xl.disk":{arch:"6502",define:["__ATARI__"],cfgfile:"atari.cfg",libargs:["atari.lib"],fastbasic_cfgfile:"fastbasic-cart.cfg",ignore_segments:["EXEHDR","SYSCHKHDR","SYSCHKTRL","MAINHDR","AUTOSTRT"]},"atari8-800xl":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-800":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-5200":{arch:"6502",define:["__ATARI5200__"],cfgfile:"atari5200.cfg",libargs:["atari5200.lib","-D","__CARTFLAGS__=255"],fastbasic_cfgfile:"fastbasic-cart.cfg"},verilog:{arch:"verilog",extra_compile_files:["8bitworkshop.v"]},astrocade:{arch:"z80",code_start:8192,rom_size:8192,data_start:19984,data_size:496,stack_end:20480},"astrocade-arcade":{arch:"z80",code_start:0,rom_size:16384,data_start:32224,data_size:544,stack_end:32768},"astrocade-bios":{arch:"z80",code_start:0,rom_size:8192,data_start:20430,data_size:50,stack_end:20430},atari7800:{arch:"6502",define:["__ATARI7800__"],cfgfile:"atari7800.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","atari7800.cfg"]},c64:{arch:"6502",define:["__CBM__","__C64__"],cfgfile:"c64.cfg",libargs:["openroms-compat.o","c64.lib"],extra_link_files:["openroms-compat.o"],code_start:2061,rom_size:38899,data_start:49152,zp_start:2,load_header:"prg",acmeargs:["-f","cbm"]},vic20:{arch:"6502",define:["__CBM__","__VIC20__"],cfgfile:"vic20.cfg",libargs:["vic20.lib"],acmeargs:["-f","cbm"]},kim1:{arch:"6502"},vectrex:{arch:"6809",code_start:0,rom_size:32768,data_start:51328,data_size:896,stack_end:52224,extra_compile_files:["assert.h","cmoc.h","stdarg.h","vectrex.h","stdlib.h","bios.h"],extra_link_files:["vectrex.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_compile_args:["--vectrex"],extra_link_args:["-svectrex.scr","-lcmoc-crt-vec","-lcmoc-std-vec"]},x86:{arch:"x86"},zx:{arch:"z80",code_start:23755,rom_size:41613,data_start:61440,data_size:3584,stack_end:65368,extra_link_args:["crt0-zx.rel"],extra_link_files:["crt0-zx.rel","crt0-zx.lst"]},"devel-6502":{arch:"6502",cfgfile:"devel-6502.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","devel-6502.cfg"],code_start:32768,rom_size:32768,data_start:512},"cpc.rslib":{arch:"z80",code_start:16384,rom_size:28928,data_start:45312,data_size:-3840,stack_end:49152,extra_compile_files:["cpcrslib.h"],extra_link_args:["crt0-cpc.rel","cpcrslib.lib"],extra_link_files:["crt0-cpc.rel","crt0-cpc.lst","cpcrslib.lib","cpcrslib.lst"]},cpc:{arch:"z80",code_start:16384,rom_size:28928,data_start:45312,data_size:-3840,stack_end:49152,extra_compile_files:["cpctelera.h"],extra_link_args:["crt0-cpc.rel","cpctelera.lib"],extra_link_files:["crt0-cpc.rel","crt0-cpc.lst","cpctelera.lib","cpctelera.lst"]},pce:{arch:"huc6280",define:["__PCE__"],cfgfile:"pce.cfg",libargs:["pce.lib","-D","__CARTSIZE__=0x8000"]},exidy:{define:["__EXIDY__"],cfgfile:"exidy.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","exidy.cfg"]},arm32:{arch:"arm32",define:["__ARM__","DISABLE_UNIMPLEMENTED_LIBC_APIS","PRINTF_ALIAS_STANDARD_FUNCTION_NAMES_SOFT"],extra_compile_args:["-I./arch/arm/include","-I./openlibm/include","-I./openlibm/src","-I./printf/src"],extra_link_files:["crt0.c","libc.a"],extra_link_args:["crt0.c","-lc"]},gb:{arch:"gbz80",code_start:0,codeseg_start:512,rom_size:32768,rom_banking:{size:16384,window:16384},data_start:49312,data_size:8032,stack_end:57344,extra_link_files:["gbz80.lib","gb.lib","sfr.rel","sfr.lst","crt0.rel","crt0.lst"],startup_objs:["sfr.rel","crt0.rel"],asm_startup_objs:[],extra_compile_files:["gb/bgb_emu.h","gb/cgb.h","gb/crash_handler.h","gb/drawing.h","gb/emu_debug.h","gb/gb.h","gb/gbdecompress.h","gb/hardware.h","gb/isr.h","gb/metasprites.h","gb/sgb.h","gb/types.h"],extra_link_args:["-l","gb","-g","_shadow_OAM=0xC000","-g",".STACK=0xE000","-g",".refresh_OAM=0xFF80","-g","GB_MAPPER=0x0","-g","GB_ROM_SIZE=0x0","-g","GB_RAM_SIZE=0x0","-g","GB_CGB_FLAGS=0x0"],wiz_sys_type:"gb",wiz_inc_dir:"gb"},mcr:{arch:"z80",code_start:0,rom_size:106496,data_start:57344,data_size:2048,stack_end:59392}};Lr["sms-sms-libcv"]=zi(Ue({},Lr["sms-sg1000-libcv"]),{extra_preproc_args:["-I",".","-D","CV_SMS","-D","CV_MODE4"]});Lr["sms-gg-libcv"]=Lr["sms-sms-libcv"];Lr["gb.color"]=zi(Ue({},Lr.gb),{extra_link_args:Lr.gb.extra_link_args.map(n=>n==="GB_CGB_FLAGS=0x0"?"GB_CGB_FLAGS=0x80":n)});function VC(n){return n.severity==="warning"}function My(n){return n.some(e=>!VC(e))}var Rs=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var r of e)r.offset>=0&&(this.offset2loc.has(r.offset)||this.offset2loc.set(r.offset,r),this.line2offset.has(r.line)||this.line2offset.set(r.line,r.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((i,s)=>i-s)}findLineForOffset(e,t,r){let i=this.sortedOffsets;for(var s=0,o=i.length-1,a=-1;s<=o;){var l=s+o>>1;i[l]<=e?(a=l,s=l+1):o=l-1}if(a<0)return null;var c=i[a];if(r!=null&&ct?null:this.offset2loc.get(c)}firstOffsetAtOrAfter(e,t){for(var r=0,i=t.length-1,s=-1;r<=i;){var o=r+i>>1;t[o]>=e?(s=o,i=o-1):r=o+1}return s<0?null:t[s]}lineCount(){return this.lines.length}};function Xc(n){return"errors"in n}function Ly(n){return"output"in n}function Hf(n,e){if(n==null)return"";try{var t=typeof n=="string"?n:typeof n=="object"?JSON.stringify(n):n+"";return t.substring(0,e)}catch(r){return""}}var FC=/bot\b|bot\/|crawl|spider|slurp|headless|lighthouse|facebookexternalhit|preview|inspectiontool|pingdom|python-requests|\bcurl\/|\bwget\//i;function Dy(n){return!!n&&FC.test(n)}function YC(n){return{msg:String(n&&n.message||n),stack:n&&n.stack}}var zc=class{constructor(e,t,r={}){this.source=e;this.send=t;this.common=r;this.sent=0;this.seen=new Set}report(e,t,r,i){i=i||this.source;var s=[i,r&&r.tool,e].join("|");if(this.sent>=10||this.seen.has(s))return!1;this.seen.add(s),this.sent++;var o={source:i,msg:Hf(e,500),stack:Hf(t,2e3),clientTime:new Date().toISOString()},a=Ue(Ue({},this.common),r);for(var l in a)!(l in o)&&a[l]!=null&&(o[l]=Hf(a[l],2e3));return this.send(o),!0}reportError(e,t,r){var i=YC(e);return this.report(i.msg,i.stack,t,r)}};var Zy="/error.php",jC=typeof navigator!="undefined"&&(navigator.webdriver||Dy(navigator.userAgent));function UC(n){if(!jC){n.url=window.location.href.substring(0,500),n.userAgent=navigator.userAgent.substring(0,500),n.language=navigator.language;var e=JSON.stringify(n);navigator.sendBeacon?navigator.sendBeacon(Zy,new Blob([e],{type:"application/json"})):fetch(Zy,{method:"POST",headers:{"Content-Type":"application/json"},body:e,keepalive:!0}).catch(t=>console.log("error report failed",t))}}var Iy=new zc("ide",UC);function Xy(n,e,t,r){try{Iy.report(n,e&&e.stack,t,r)}catch(i){console.log("error report failed",i)}}function zy(n,e,t){try{Iy.report(e.msg,e.stack,t,n)}catch(r){console.log("error report failed",r)}}function Je(n){n?(Dr(0),$("#pleaseWaitModal").modal("show")):(Dr(1),$("#pleaseWaitModal").modal("hide"))}function Dr(n){$("#pleaseWaitProgressBar").css("width",n*100+"%").show()}function Re(n){Je(!1),bootbox.alert({title:' Alert',message:Vi.sanitize(n)})}function an(n){Je(!1),bootbox.alert(Vi.sanitize(n))}function Wy(n){throw Re(n),new Error(n)}var Jf=[],Fy=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=Fy[r])e=r+1;else return!0;if(e==t)return!1}}function Ny(n){return n>=127462&&n<=127487}var By=8205;function Yy(n,e,t=!0,r=!0){return(t?jy:GC)(n,e,r)}function jy(n,e,t){if(e==n.length)return e;e&&Uy(n.charCodeAt(e))&&qy(n.charCodeAt(e-1))&&e--;let r=Kf(n,e);for(e+=Vy(r);e=0&&Ny(Kf(n,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function GC(n,e,t){for(;e>1;){let r=jy(n,e-2,t);if(r=56320&&n<57344}function qy(n){return n>=55296&&n<56320}function Vy(n){return n<65536?1:2}var De=class n{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,r){[e,t]=_o(this,e,t);let i=[];return this.decompose(0,e,i,2),r.length&&r.decompose(0,r.length,i,3),this.decompose(t,this.length,i,1),To.from(i,this.length-(t-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=_o(this,e,t);let r=[];return this.decompose(e,t,r,0),To.from(r,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),i=new Zs(this),s=new Zs(e);for(let o=t,a=t;;){if(i.next(o),s.next(o),o=0,i.lineBreak!=s.lineBreak||i.done!=s.done||i.value!=s.value)return!1;if(a+=i.value.length,i.done||a>=r)return!0}}iter(e=1){return new Zs(this,e)}iterRange(e,t=this.length){return new Fc(this,e,t)}iterLines(e,t){let r;if(e==null)r=this.iter();else{t==null&&(t=this.lines+1);let i=this.line(e).from;r=this.iterRange(i,Math.max(i,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Yc(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new Fn(e):To.from(Fn.split(e,[]))}},Fn=class n extends De{constructor(e,t=HC(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,r,i){for(let s=0;;s++){let o=this.text[s],a=i+o.length;if((t?r:a)>=e)return new tp(i,a,r,o);i=a+1,r++}}decompose(e,t,r,i){let s=e<=0&&t>=this.length?this:new n(Gy(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(i&1){let o=r.pop(),a=Vc(s.text,o.text.slice(),0,s.length);if(a.length<=32)r.push(new n(a,o.length+s.length));else{let l=a.length>>1;r.push(new n(a.slice(0,l)),new n(a.slice(l)))}}else r.push(s)}replace(e,t,r){if(!(r instanceof n))return super.replace(e,t,r);[e,t]=_o(this,e,t);let i=Vc(this.text,Vc(r.text,Gy(this.text,0,e)),t),s=this.length+r.length-(t-e);return i.length<=32?new n(i,s):To.from(n.split(i,[]),s)}sliceString(e,t=this.length,r=` `){[e,t]=_o(this,e,t);let i="";for(let s=0,o=0;s<=t&&oe&&o&&(i+=r),es&&(i+=a.slice(Math.max(0,e-s),t-s)),s=l+1}return i}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let r=[],i=-1;for(let s of e)r.push(s),i+=s.length+1,r.length==32&&(t.push(new n(r,i)),r=[],i=-1);return i>-1&&t.push(new n(r,i)),t}},To=class n extends De{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,t,r,i){for(let s=0;;s++){let o=this.children[s],a=i+o.length,l=r+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,r,i);i=a+1,r=l+1}}decompose(e,t,r,i){for(let s=0,o=0;o<=t&&s=o){let c=i&((o<=e?1:0)|(l>=t?2:0));o>=e&&l<=t&&!c?r.push(a):a.decompose(e-o,t-o,r,c)}o=l+1}}replace(e,t,r){if([e,t]=_o(this,e,t),r.lines=s&&t<=a){let l=o.replace(e-s,t-s,r),c=this.lines-o.lines+l.lines;if(l.lines>4&&l.lines>c>>6){let d=this.children.slice();return d[i]=l,new n(d,this.length-(t-e)+r.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,r)}sliceString(e,t=this.length,r=` -`){[e,t]=_o(this,e,t);let i="";for(let s=0,o=0;se&&s&&(i+=r),eo&&(i+=a.sliceString(e-o,t-o,r)),o=l+1}return i}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let r=0,[i,s,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;i+=t,s+=t){if(i==o||s==a)return r;let l=this.children[i],c=e.children[s];if(l!=c)return r+l.scanIdentical(c,t);r+=l.length+1}}static from(e,t=e.reduce((r,i)=>r+i.length+1,-1)){let r=0;for(let f of e)r+=f.lines;if(r<32){let f=[];for(let m of e)m.flatten(f);return new Fn(f,t)}let i=Math.max(32,r>>5),s=i<<1,o=i>>1,a=[],l=0,c=-1,d=[];function h(f){let m;if(f.lines>s&&f instanceof n)for(let O of f.children)h(O);else f.lines>o&&(l>o||!l)?(u(),a.push(f)):f instanceof Fn&&l&&(m=d[d.length-1])instanceof Fn&&f.lines+m.lines<=32?(l+=f.lines,c+=f.length+1,d[d.length-1]=new Fn(m.text.concat(f.text),m.length+1+f.length)):(l+f.lines>i&&u(),l+=f.lines,c+=f.length+1,d.push(f))}function u(){l!=0&&(a.push(d.length==1?d[0]:n.from(d,c)),c=-1,l=d.length=0)}for(let f of e)h(f);return u(),a.length==1?a[0]:new n(a,t)}};De.empty=new Fn([""],0);function qC(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Vc(n,e,t=0,r=1e9){for(let i=0,s=0,o=!0;s=t&&(l>r&&(a=a.slice(0,r-i)),i0?1:(e instanceof Fn?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,i=this.nodes[r],s=this.offsets[r],o=s>>1,a=i instanceof Fn?i.text.length:i.children.length;if(o==(t>0?a:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(i instanceof Fn){let l=i.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=i.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof Fn?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Fc=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new Zs(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:i}=this.cursor.next(e);return this.pos+=(i.length+e)*t,this.value=i.length<=r?i:t<0?i.slice(i.length-r):i.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Yc=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:i}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=i,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(De.prototype[Symbol.iterator]=function(){return this.iter()},Zs.prototype[Symbol.iterator]=Fc.prototype[Symbol.iterator]=Yc.prototype[Symbol.iterator]=function(){return this});var tp=class{constructor(e,t,r,i){this.from=e,this.to=t,this.number=r,this.text=i}get length(){return this.to-this.from}};function _o(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function Pt(n,e,t=!0,r=!0){return Vy(n,e,t,r)}function GC(n){return n>=56320&&n<57344}function HC(n){return n>=55296&&n<56320}function Ir(n,e){let t=n.charCodeAt(e);if(!HC(t)||e+1==n.length)return t;let r=n.charCodeAt(e+1);return GC(r)?(t-55296<<10)+(r-56320)+65536:t}function Hc(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function Yi(n){return n<65536?1:2}var np=/\r\n?|\n/,Xt=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(Xt||(Xt={})),vi=class n{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return s+(e-i);s+=a}else{if(r!=Xt.Simple&&c>=e&&(r==Xt.TrackDel&&ie||r==Xt.TrackBefore&&ie))return null;if(c>e||c==e&&t<0&&!a)return e==i||t<0?s:s+l;s+=l}i=c}if(e>i)throw new RangeError(`Position ${e} is out of range for changeset of length ${i}`);return s}touchesRange(e,t=e){for(let r=0,i=0;r=0&&i<=t&&a>=e)return it?"cover":!0;i=a}return!1}toString(){let e="";for(let t=0;t=0?":"+i:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},On=class n extends vi{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return rp(this,(t,r,i,s,o)=>e=e.replace(i,i+(r-t),o),!1),e}mapDesc(e,t=!1){return ip(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let i=0,s=0;i=0){t[i]=a,t[i+1]=o;let l=i>>1;for(;r.length0&&Fi(r,t,s.text),s.forward(d),a+=d}let c=e[o++];for(;a>1].toJSON()))}return e}static of(e,t,r){let i=[],s=[],o=0,a=null;function l(d=!1){if(!d&&!i.length)return;ou||h<0||u>t)throw new RangeError(`Invalid change range ${h} to ${u} (in doc of length ${t})`);let m=f?typeof f=="string"?De.of(f.split(r||np)):f:De.empty,O=m.length;if(h==u&&O==0)return;ho&&ln(i,h-o,-1),ln(i,u-h,O),Fi(s,i,m),o=u}}return c(e),l(!a),a}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],r=[];for(let i=0;ia&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;r.length=0&&t<=0&&t==n[i+1]?n[i]+=e:i>=0&&e==0&&n[i]==0?n[i+1]+=t:r?(n[i]+=e,n[i+1]+=t):n.push(e,t)}function Fi(n,e,t){if(t.length==0)return;let r=e.length-2>>1;if(r>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)a=n.sections[o++],l=n.sections[o++];e(i,c,s,d,h),i=c,s=d}}}function ip(n,e,t,r=!1){let i=[],s=r?[]:null,o=new Is(n),a=new Is(e);for(let l=-1;;){if(o.done&&a.len||a.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&a.ins==-1){let c=Math.min(o.len,a.len);ln(i,c,-1),o.forward(c),a.forward(c)}else if(a.ins>=0&&(o.ins<0||l==o.i||o.off==0&&(a.len=0&&l=0){let c=0,d=o.len;for(;d;)if(a.ins==-1){let h=Math.min(d,a.len);c+=h,d-=h,a.forward(h)}else if(a.ins==0&&a.lenl||o.ins>=0&&o.len>l)&&(a||r.length>c),s.forward2(l),o.forward(l)}}}}var Is=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?De.empty:e[t]}textBit(e){let{inserted:t}=this.set,r=this.i-2>>1;return r>=t.length&&!e?De.empty:t[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},Ms=class n{constructor(e,t,r,i){this.from=e,this.to=t,this.flags=r,this.goalColumn=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,t=-1){let r,i;return this.empty?r=i=e.mapPos(this.from,t):(r=e.mapPos(this.from,1),i=e.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new n(r,i,this.flags,this.goalColumn)}extend(e,t=e,r=0){if(e<=this.anchor&&t>=this.anchor)return z.range(e,t,void 0,void 0,r);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return z.range(this.anchor,i,void 0,void 0,r)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return z.range(e.anchor,e.head)}static create(e,t,r,i){return new n(e,t,r,i)}},z=class n{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(r=>r.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>Ms.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,i=0;ii.from-s.from),t=e.indexOf(r);for(let i=1;is.head?n.range(l,a):n.range(a,l))}}return new n(e,t)}};function eS(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var pp=0,oe=class n{constructor(e,t,r,i,s){this.combine=e,this.compareInput=t,this.compare=r,this.isStatic=i,this.id=pp++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,r)=>t===r),e.compare||(e.combine?(t,r)=>t===r:mp),!!e.static,e.enables)}of(e){return new Ao([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ao(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ao(e,this,2,t)}from(e,t){return t||(t=r=>r),this.compute([e],r=>t(r.field(e)))}};function mp(n,e){return n==e||n.length==e.length&&n.every((t,r)=>t===e[r])}var Ao=class{constructor(e,t,r,i){this.dependencies=e,this.facet=t,this.type=r,this.value=i,this.id=pp++}dynamicSlot(e){var t;let r=this.value,i=this.facet.compareInput,s=this.id,o=e[s]>>1,a=this.type==2,l=!1,c=!1,d=[];for(let h of this.dependencies)h=="doc"?l=!0:h=="selection"?c=!0:(((t=e[h.id])!==null&&t!==void 0?t:1)&1)==0&&d.push(e[h.id]);return{create(h){return h.values[o]=r(h),1},update(h,u){if(l&&u.docChanged||c&&(u.docChanged||u.selection)||sp(h,d)){let f=r(h);if(a?!qy(f,h.values[o],i):!i(f,h.values[o]))return h.values[o]=f,1}return 0},reconfigure:(h,u)=>{let f,m=u.config.address[s];if(m!=null){let O=qc(u,m);if(this.dependencies.every(S=>S instanceof oe?u.facet(S)===h.facet(S):S instanceof Xe?u.field(S,!1)==h.field(S,!1):!0)||(a?qy(f=r(h),O,i):i(f=r(h),O)))return h.values[o]=O,0}else f=r(h);return h.values[o]=f,1}}}get extension(){return this}};function qy(n,e,t){if(n.length!=e.length)return!1;for(let r=0;rn[l.id]),i=t.map(l=>l.type),s=r.filter(l=>!(l&1)),o=n[e.id]>>1;function a(l){let c=[];for(let d=0;dr===i),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Wc).find(r=>r.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:r=>(r.values[t]=this.create(r),1),update:(r,i)=>{let s=r.values[t],o=this.updateF(s,i);return this.compareF(s,o)?0:(r.values[t]=o,1)},reconfigure:(r,i)=>{let s=r.facet(Wc),o=i.facet(Wc),a;return(a=s.find(l=>l.field==this))&&a!=o.find(l=>l.field==this)?(r.values[t]=a.create(r),1):i.config.address[this.id]!=null?(r.values[t]=i.field(this),0):(r.values[t]=this.create(r),1)}}}init(e){return[this,Wc.of({field:this,create:e})]}get extension(){return this}},Ls={lowest:4,low:3,default:2,high:1,highest:0};function Ba(n){return e=>new jc(e,n)}var pr={highest:Ba(Ls.highest),high:Ba(Ls.high),default:Ba(Ls.default),low:Ba(Ls.low),lowest:Ba(Ls.lowest)},jc=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Vt=class n{of(e){return new Fa(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},Fa=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Uc=class n{constructor(e,t,r,i,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=r,this.address=i,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,r){let i=[],s=Object.create(null),o=new Map;for(let u of JC(e,t,o))u instanceof Xe?i.push(u):(s[u.facet.id]||(s[u.facet.id]=[])).push(u);let a=Object.create(null),l=[],c=[];for(let u of i)a[u.id]=c.length<<1,c.push(f=>u.slot(f));let d=r==null?void 0:r.config.facets;for(let u in s){let f=s[u],m=f[0].facet,O=d&&d[u]||[];if(f.every(S=>S.type==0))if(a[m.id]=l.length<<1|1,mp(O,f))l.push(r.facet(m));else{let S=m.combine(f.map(x=>x.value));l.push(r&&m.compare(S,r.facet(m))?r.facet(m):S)}else{for(let S of f)S.type==0?(a[S.id]=l.length<<1|1,l.push(S.value)):(a[S.id]=c.length<<1,c.push(x=>S.dynamicSlot(x)));a[m.id]=c.length<<1,c.push(S=>KC(S,m,f))}}let h=c.map(u=>u(a));return new n(e,o,h,a,l,s)}};function JC(n,e,t){let r=[[],[],[],[],[]],i=new Map;function s(o,a){let l=i.get(o);if(l!=null){if(l<=a)return;let c=r[l].indexOf(o);c>-1&&r[l].splice(c,1),o instanceof Fa&&t.delete(o.compartment)}if(i.set(o,a),Array.isArray(o))for(let c of o)s(c,a);else if(o instanceof Fa){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let c=e.get(o.compartment)||o.inner;t.set(o.compartment,c),s(c,a)}else if(o instanceof jc)s(o.inner,o.prec);else if(o instanceof Xe)r[a].push(o),o.provides&&s(o.provides,a);else if(o instanceof Ao)r[a].push(o),o.facet.extensions&&s(o.facet.extensions,Ls.default);else{let c=o.extension;if(!c)throw new Error(`Unrecognized extension value in extension set (${o}).`);if(c==o)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(c,a)}}return s(n,Ls.default),r.reduce((o,a)=>o.concat(a))}function Va(n,e){if(e&1)return 2;let t=e>>1,r=n.status[t];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;n.status[t]=4;let i=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|i}function qc(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}var tS=oe.define(),op=oe.define({combine:n=>n.some(e=>e),static:!0}),nS=oe.define({combine:n=>n.length?n[0]:void 0,static:!0}),rS=oe.define(),iS=oe.define(),sS=oe.define(),oS=oe.define({combine:n=>n.length?n[0]:!1}),Tn=class{constructor(e,t){this.type=e,this.value=t}static define(){return new ap}},ap=class{of(e){return new Tn(this,e)}},lp=class{constructor(e){this.map=e}of(e){return new ye(this,e)}},ye=class n{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new lp(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let r=[];for(let i of e){let s=i.map(t);s&&r.push(s)}return r}};ye.reconfigure=ye.define();ye.appendConfig=ye.define();var ut=class n{constructor(e,t,r,i,s,o){this.startState=e,this.changes=t,this.selection=r,this.effects=i,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,r&&eS(r,t.newLength),s.some(a=>a.type==n.time)||(this.annotations=s.concat(n.time.of(Date.now())))}static create(e,t,r,i,s,o){return new n(e,t,r,i,s,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};ut.time=Tn.define();ut.userEvent=Tn.define();ut.addToHistory=Tn.define();ut.remote=Tn.define();function e_(n,e){let t=[];for(let r=0,i=0;;){let s,o;if(r=n[r]))s=n[r++],o=n[r++];else if(i=0;i--){let s=r[i](n);s instanceof ut?n=s:Array.isArray(s)&&s.length==1&&s[0]instanceof ut?n=s[0]:n=lS(e,Co(s),!1)}return n}function n_(n){let e=n.startState,t=e.facet(sS),r=n;for(let i=t.length-1;i>=0;i--){let s=t[i](n);s&&Object.keys(s).length&&(r=aS(r,cp(e,s,n.changes.newLength),!0))}return r==n?n:ut.create(e,n.changes,n.selection,r.effects,r.annotations,r.scrollIntoView)}var r_=[];function Co(n){return n==null?r_:Array.isArray(n)?n:[n]}var et=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(et||(et={})),i_=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,dp;try{dp=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(n){}function s_(n){if(dp)return dp.test(n);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||i_.test(t)))return!0}return!1}function o_(n){return e=>{if(!/\S/.test(e))return et.Space;if(s_(e))return et.Word;for(let t=0;t-1)return et.Word;return et.Other}}var Me=class n{constructor(e,t,r,i,s,o){this.config=e,this.doc=t,this.selection=r,this.values=i,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let a=0;ai.set(c,l)),t=null),i.set(a.value.compartment,a.value.extension)):a.is(ye.reconfigure)?(t=null,r=a.value):a.is(ye.appendConfig)&&(t=null,r=Co(r).concat(a.value));let s;t?s=e.startState.values.slice():(t=Uc.resolve(r,i,this),s=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,c)=>c.reconfigure(l,this),null).values);let o=e.startState.facet(op)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,s,(a,l)=>l.update(a,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:z.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,r=e(t.ranges[0]),i=this.changes(r.changes),s=[r.range],o=Co(r.effects);for(let a=1;ao.spec.fromJSON(a,l)))}}return n.create({doc:e.doc,selection:z.fromJSON(e.selection),extensions:t.extensions?i.concat([t.extensions]):i})}static create(e={}){let t=Uc.resolve(e.extensions||[],new Map),r=e.doc instanceof De?e.doc:De.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||np)),i=e.selection?e.selection instanceof z?e.selection:z.single(e.selection.anchor,e.selection.head):z.single(0);return eS(i,r.length),t.staticFacet(op)||(i=i.asSingle()),new n(t,r,i,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` -`}get readOnly(){return this.facet(oS)}phrase(e,...t){for(let r of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(r,i)=>{if(i=="$")return"$";let s=+(i||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let i=[];for(let s of this.facet(tS))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&i.push(o[e]);return i}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return o_(t.length?t[0]:"")}wordAt(e){let{text:t,from:r,length:i}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,a=e-r;for(;o>0;){let l=Pt(t,o,!1);if(s(t.slice(l,o))!=et.Word)break;o=l}for(;an.length?n[0]:4});Me.lineSeparator=nS;Me.readOnly=oS;Me.phrases=oe.define({compare(n,e){let t=Object.keys(n),r=Object.keys(e);return t.length==r.length&&t.every(i=>n[i]==e[i])}});Me.languageData=tS;Me.changeFilter=rS;Me.transactionFilter=iS;Me.transactionExtender=sS;Vt.reconfigure=ye.define();function Yn(n,e,t={}){let r={};for(let i of n)for(let s of Object.keys(i)){let o=i[s],a=r[s];if(a===void 0)r[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))r[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let i in e)r[i]===void 0&&(r[i]=e[i]);return r}var fr=class{eq(e){return this==e}range(e,t=e){return Ya.create(e,t,this)}};fr.prototype.startSide=fr.prototype.endSide=0;fr.prototype.point=!1;fr.prototype.mapMode=Xt.TrackDel;function gp(n,e){return n==e||n.constructor==e.constructor&&n.eq(e)}var Ya=class n{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new n(e,t,r)}};function hp(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}var up=class n{constructor(e,t,r,i){this.from=e,this.to=t,this.value=r,this.maxPoint=i}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,i=0){let s=r?this.to:this.from;for(let o=i,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,i){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);sf||u==f&&c.startSide>0&&c.endSide<=0)continue;(f-u||c.endSide-c.startSide)<0||(o<0&&(o=u),c.point&&(a=Math.max(a,f-u)),r.push(c),i.push(u-o),s.push(f-o))}return{mapped:r.length?new n(i,s,r,a):null,pos:o}}},$e=class n{constructor(e,t,r,i){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=i}static create(e,t,r,i){return new n(e,t,r,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:i=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort(hp)),this.isEmpty)return t.length?n.of(t):this;let a=new Gc(this,null,-1).goto(0),l=0,c=[],d=new Zr;for(;a.value||l=0){let h=t[l++];d.addInner(h.from,h.to,h.value)||c.push(h)}else a.rangeIndex==1&&a.chunkIndexthis.chunkEnd(a.chunkIndex)||sa.to||s=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return ja.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return ja.from(e).goto(t)}static compare(e,t,r,i,s=-1){let o=e.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),a=t.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),l=Gy(o,a,r),c=new Ds(o,l,s),d=new Ds(a,l,s);r.iterGaps((h,u,f)=>Hy(c,h,d,u,f,i)),r.empty&&r.length==0&&Hy(c,0,d,0,0,i)}static eq(e,t,r=0,i){i==null&&(i=999999999);let s=e.filter(d=>!d.isEmpty&&t.indexOf(d)<0),o=t.filter(d=>!d.isEmpty&&e.indexOf(d)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let a=Gy(s,o),l=new Ds(s,a,0).goto(r),c=new Ds(o,a,0).goto(r);for(;;){if(l.to!=c.to||!fp(l.active,c.active)||l.point&&(!c.point||!gp(l.point,c.point)))return!1;if(l.to>i)return!0;l.next(),c.next()}}static spans(e,t,r,i,s=-1){let o=new Ds(e,null,s).goto(t),a=t,l=o.openStart;for(;;){let c=Math.min(o.to,r);if(o.point){let d=o.activeForPoint(o.to),h=o.pointFroma&&(i.span(a,c,o.active,l),l=o.openEnd(c));if(o.to>r)return l+(o.point&&o.to>r?1:0);a=o.to,o.next()}}static of(e,t=!1){let r=new Zr;for(let i of e instanceof Ya?[e]:t?a_(e):e)r.add(i.from,i.to,i.value);return r.finish()}static join(e){if(!e.length)return n.empty;let t=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let i=e[r];i!=n.empty;i=i.nextLayer)t=new n(i.chunkPos,i.chunk,t,Math.max(i.maxPoint,t.maxPoint));return t}};$e.empty=new $e([],[],null,-1);function a_(n){if(n.length>1)for(let e=n[0],t=1;t0)return n.slice().sort(hp);e=r}return n}$e.empty.nextLayer=$e.empty;var Zr=class n{finishChunk(e){this.chunks.push(new up(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,r){this.addInner(e,t,r)||(this.nextLayer||(this.nextLayer=new n)).add(e,t,r)}addInner(e,t,r){let i=e-this.lastTo||r.startSide-this.last.endSide;if(i<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return i<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=t,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let r=t.value.length-1;return this.last=t.value[r],this.lastFrom=t.from[r]+e,this.lastTo=t.to[r]+e,!0}finish(){return this.finishInner($e.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=$e.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Gy(n,e,t){let r=new Map;for(let s of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&i.push(new Gc(o,t,r,s));return i.length==1?i[0]:new n(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let r of this.heap)r.goto(e,t);for(let r=this.heap.length>>1;r>=0;r--)ep(this.heap,r);return this.next(),this}forward(e,t){for(let r of this.heap)r.forward(e,t);for(let r=this.heap.length>>1;r>=0;r--)ep(this.heap,r);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),ep(this.heap,0)}}};function ep(n,e){for(let t=n[e];;){let r=(e<<1)+1;if(r>=n.length)break;let i=n[r];if(r+1=0&&(i=n[r+1],r++),t.compare(i)<0)break;n[r]=t,n[e]=i,e=r}}var Ds=class{constructor(e,t,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=ja.from(e,t,r)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Nc(this.active,e),Nc(this.activeTo,e),Nc(this.activeRank,e),this.minActive=Ky(this.active,this.activeTo)}addActive(e){let t=0,{value:r,to:i,rank:s}=this.cursor;for(;t0;)t++;Bc(this.active,t,r),Bc(this.activeTo,t,i),Bc(this.activeRank,t,s),e&&Bc(e,t,this.cursor.from),this.minActive=Ky(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let i=this.minActive;if(i>-1&&(this.activeTo[i]-this.cursor.from||this.active[i].endSide-this.cursor.startSide)<0){if(this.activeTo[i]>e){this.to=this.activeTo[i],this.endSide=this.active[i].endSide;break}this.removeActive(i),r&&Nc(r,i)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(r),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&r[i]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&t.push(this.active[r]);return t.reverse()}openEnd(e){let t=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)t++;return t}};function Hy(n,e,t,r,i,s){n.goto(e),t.goto(r);let o=r+i,a=r,l=r-e,c=!!s.boundChange;for(let d=!1;;){let h=n.to+l-t.to,u=h||n.endSide-t.endSide,f=u<0?n.to+l:t.to,m=Math.min(f,o);if(n.point||t.point?(n.point&&t.point&&gp(n.point,t.point)&&fp(n.activeForPoint(n.to),t.activeForPoint(t.to))||s.comparePoint(a,m,n.point,t.point),d=!1):(d&&s.boundChange(a),m>a&&!fp(n.active,t.active)&&s.compareRange(a,m,n.active,t.active),c&&mo)break;a=f,u<=0&&n.next(),u>=0&&t.next()}}function fp(n,e){if(n.length!=e.length)return!1;for(let t=0;t=e;r--)n[r+1]=n[r];n[e]=t}function Ky(n,e){let t=-1,r=1e9;for(let i=0;i=e)return i;if(i==n.length)break;s+=n.charCodeAt(i)==9?t-s%t:1,i=Pt(n,i)}return r===!0?-1:n.length}var cS=typeof Symbol=="undefined"?"__\u037C":Symbol.for("\u037C"),Op=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),dS=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},mr=class{constructor(e,t){this.rules=[];let{finish:r}=t||{};function i(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function s(o,a,l,c){let d=[],h=/^@(\w+)\b/.exec(o[0]),u=h&&h[1]=="keyframes";if(h&&a==null)return l.push(o[0]+";");for(let f in a){let m=a[f];if(/&/.test(f))s(f.split(/,\s*/).map(O=>o.map(S=>O.replace(/&/,S))).reduce((O,S)=>O.concat(S)),m,l);else if(m&&typeof m=="object"){if(!h)throw new RangeError("The value of a property ("+f+") should be a primitive value.");s(i(f),m,d,u)}else m!=null&&d.push(f.replace(/_.*/,"").replace(/[A-Z]/g,O=>"-"+O.toLowerCase())+": "+m+";")}(d.length||u)&&l.push((r&&!h&&!c?o.map(r):o).join(", ")+" {"+d.join(" ")+"}")}for(let o in e)s(i(o),e[o],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=dS[cS]||1;return dS[cS]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let i=e[Op],s=r&&r.nonce;i?s&&i.setNonce(s):i=new bp(e,s),i.mount(Array.isArray(t)?t:[t],e)}},hS=new Map,bp=class{constructor(e,t){let r=e.ownerDocument||e,i=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&i.CSSStyleSheet){let s=hS.get(r);if(s)return e[Op]=s;this.sheet=new i.CSSStyleSheet,hS.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Op]=this}mount(e,t){let r=this.sheet,i=0,s=0;for(let o=0;o-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,a),r)for(let c=0;c",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},l_=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),c_=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(At=0;At<10;At++)wi[48+At]=wi[96+At]=String(At);var At;for(At=1;At<=24;At++)wi[At+111]="F"+At;var At;for(At=65;At<=90;At++)wi[At]=String.fromCharCode(At+32),Eo[At]=String.fromCharCode(At);var At;for(Jc in wi)Eo.hasOwnProperty(Jc)||(Eo[Jc]=wi[Jc]);var Jc;function uS(n){var e=l_&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||c_&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Eo:wi)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function kt(){var n=arguments[0];typeof n=="string"&&(n=document.createElement(n));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var i=t[r];typeof i=="string"?n.setAttribute(r,i):i!=null&&(n[r]=i)}e++}for(;e2),ae={mac:gS||/Mac/.test(bn.platform),windows:/Win/.test(bn.platform),linux:/Linux|X11/.test(bn.platform),ie:Ed,ie_version:KS?Tp.documentMode||6:Cp?+Cp[1]:Ap?+Ap[1]:0,gecko:pS,gecko_version:pS?+(/Firefox\/(\d+)/.exec(bn.userAgent)||[0,0])[1]:0,chrome:!!yp,chrome_version:yp?+yp[1]:0,ios:gS,android:/Android\b/.test(bn.userAgent),webkit:mS,webkit_version:mS?+(/\bAppleWebKit\/(\d+)/.exec(bn.userAgent)||[0,0])[1]:0,safari:_p,safari_version:_p?+(/\bVersion\/(\d+(\.\d+)?)/.exec(bn.userAgent)||[0,0])[1]:0,tabSize:Tp.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function wm(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}var pd=Object.create(null);function xm(n,e,t){if(n==e)return!0;n||(n=pd),e||(e=pd);let r=Object.keys(n),i=Object.keys(e);if(r.length-(t&&r.indexOf(t)>-1?1:0)!=i.length-(t&&i.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(i.indexOf(s)==-1||n[s]!==e[s]))return!1;return!0}function d_(n,e){for(let t=n.attributes.length-1;t>=0;t--){let r=n.attributes[t].name;e[r]==null&&n.removeAttribute(r)}for(let t in e){let r=e[t];t=="style"?n.style.cssText=r:n.getAttribute(t)!=r&&n.setAttribute(t,r)}}function OS(n,e,t){let r=!1;if(e)for(let i in e)t&&i in t||(r=!0,i=="style"?n.style.cssText="":n.removeAttribute(i));if(t)for(let i in t)e&&e[i]==t[i]||(r=!0,i=="style"?n.style.cssText=t[i]:n.setAttribute(i,t[i]));return r}function h_(n){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new Ns(e,t,t,r,e.widget||null,!1)}static replace(e){let t=!!e.block,r,i;if(e.isBlockGap)r=-5e8,i=4e8;else{let{start:s,end:o}=JS(e,t);r=(s?t?-3e8:-1:5e8)-1,i=(o?t?2e8:1:-6e8)+1}return new Ns(e,r,i,t,e.widget||null,!0)}static line(e){return new al(e)}static set(e,t=!1){return $e.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};J.none=$e.empty;var ol=class n extends J{constructor(e){let{start:t,end:r}=JS(e);super(t?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?wm(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||pd}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&xm(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};ol.prototype.point=!1;var al=class n extends J{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&xm(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};al.prototype.mapMode=Xt.TrackBefore;al.prototype.point=!0;var Ns=class n extends J{constructor(e,t,r,i,s,o){super(t,r,s,e),this.block=i,this.isReplace=o,this.mapMode=i?t<=0?Xt.TrackBefore:Xt.TrackAfter:Xt.TrackDel}get type(){return this.startSide!=this.endSide?Ht.WidgetRange:this.startSide<=0?Ht.WidgetBefore:Ht.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof n&&u_(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};Ns.prototype.point=!0;function JS(n,e=!1){let{inclusiveStart:t,inclusiveEnd:r}=n;return t==null&&(t=n.inclusive),r==null&&(r=n.inclusive),{start:t!=null?t:e,end:r!=null?r:e}}function u_(n,e){return n==e||!!(n&&e&&n.compare(e))}function Io(n,e,t,r=0){let i=t.length-1;i>=0&&t[i]+r>=n?t[i]=Math.max(t[i],e):t.push(n,e)}var md=class n extends fr{constructor(e,t,r){super(),this.tagName=e,this.attributes=t,this.rank=r}eq(e){return e==this||e instanceof n&&this.tagName==e.tagName&&xm(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||pd,e.rank==null?50:Math.max(0,Math.min(e.rank,100)))}static set(e,t=!1){return $e.of(e,t)}};md.prototype.startSide=md.prototype.endSide=-1;function ll(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Ep(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function Ha(n,e){if(!e.anchorNode)return!1;try{return Ep(n,e.anchorNode)}catch(t){return!1}}function cd(n){return n.nodeType==3?cl(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function Ka(n,e,t,r){return t?bS(n,e,t,r,-1)||bS(n,e,t,r,1):!1}function qi(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function gd(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function bS(n,e,t,r,i){for(;;){if(n==t&&e==r)return!0;if(e==(i<0?0:ki(n))){if(n.nodeName=="DIV")return!1;let s=n.parentNode;if(!s||s.nodeType!=1)return!1;e=qi(n)+(i<0?0:1),n=s}else if(n.nodeType==1){if(n=n.childNodes[e+(i<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=i<0?ki(n):0}else return!1}}function ki(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function Od(n,e){let{left:t,right:r}=n;if(t==r)return n;let i=e?t:r;return{left:i,right:i,top:n.top,bottom:n.bottom}}function f_(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function ev(n,e){let t=e.width/n.offsetWidth,r=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-n.offsetHeight)<1)&&(r=1),{scaleX:t,scaleY:r}}function p_(n,e,t,r,i,s,o,a){let l=n.ownerDocument,c=l.defaultView||window;for(let d=n,h=!1;d&&!h;)if(d.nodeType==1){let u,f=d==l.body,m=1,O=1;if(f)u=f_(c);else{if(/^(fixed|sticky)$/.test(getComputedStyle(d).position)&&(h=!0),d.scrollHeight<=d.clientHeight&&d.scrollWidth<=d.clientWidth){d=d.assignedSlot||d.parentNode;continue}let D=d.getBoundingClientRect();({scaleX:m,scaleY:O}=ev(d,D)),u={left:D.left,right:D.left+d.clientWidth*m,top:D.top,bottom:D.top+d.clientHeight*O}}let S=0,x=0;if(i=="nearest")e.top0&&e.bottom>u.bottom+x&&(x=e.bottom-u.bottom+o)):e.bottom>u.bottom-o&&(x=e.bottom-u.bottom+o,t<0&&e.top-x0&&e.right>u.right+S&&(S=e.right-u.right+s)):e.right>u.right-s&&(S=e.right-u.right+s,t<0&&e.leftu.bottom||e.leftu.right)&&(e={left:Math.max(e.left,u.left),right:Math.min(e.right,u.right),top:Math.max(e.top,u.top),bottom:Math.min(e.bottom,u.bottom)}),d=d.assignedSlot||d.parentNode}else if(d.nodeType==11)d=d.host;else break}function tv(n,e=!0){let t=n.ownerDocument,r=null,i=null;for(let s=n.parentNode;s&&!(s==t.body||(!e||r)&&i);)if(s.nodeType==1)!i&&s.scrollHeight>s.clientHeight&&(i=s),e&&!r&&s.scrollWidth>s.clientWidth&&(r=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:r,y:i}}var Rp=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:r}=e;this.set(t,Math.min(e.anchorOffset,t?ki(t):0),r,Math.min(e.focusOffset,r?ki(r):0))}set(e,t,r,i){this.anchorNode=e,this.anchorOffset=t,this.focusNode=r,this.focusOffset=i}};function nv(n){let e=[];for(let t=n;t;t=t.nodeType==11?t.host:t.parentNode)t.nodeType==1&&e.push({node:t,left:t.scrollLeft,top:t.scrollTop});return e}function rv(n,e=!0){for(let{node:t,left:r,top:i}of n)e&&t.scrollTop!=i&&(t.scrollTop=i),t.scrollLeft!=r&&(t.scrollLeft=r)}var Xs=null;ae.safari&&ae.safari_version>=26&&(Xs=!1);function iv(n){if(n.setActive)return n.setActive();if(Xs)return n.focus(Xs);let e=nv(n);n.focus(Xs==null?{get preventScroll(){return Xs={preventScroll:!0},!0}}:void 0),Xs||(Xs=!1,rv(e))}var yS;function cl(n,e,t=e){let r=yS||(yS=document.createRange());return r.setEnd(n,t),r.setStart(n,e),r}function Xo(n,e,t,r){let i={key:e,code:e,keyCode:t,which:t,cancelable:!0};r&&({altKey:i.altKey,ctrlKey:i.ctrlKey,shiftKey:i.shiftKey,metaKey:i.metaKey}=r);let s=new KeyboardEvent("keydown",i);s.synthetic=!0,n.dispatchEvent(s);let o=new KeyboardEvent("keyup",i);return o.synthetic=!0,n.dispatchEvent(o),s.defaultPrevented||o.defaultPrevented}function m_(n){for(;n;){if(n&&(n.nodeType==9||n.nodeType==11&&n.host))return n;n=n.assignedSlot||n.parentNode}return null}function g_(n,e){let t=e.focusNode,r=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=r)return!1;for(r=Math.min(r,ki(t));;)if(r){if(t.nodeType!=1)return!1;let i=t.childNodes[r-1];i.contentEditable=="false"?r--:(t=i,r=ki(t))}else{if(t==n)return!0;r=qi(t),t=t.parentNode}}function sv(n){return n instanceof Window?n.pageYOffset>Math.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function ov(n,e){for(let t=n,r=e;;){if(t.nodeType==3&&r>0)return{node:t,offset:r};if(t.nodeType==1&&r>0){if(t.contentEditable=="false")return null;t=t.childNodes[r-1],r=ki(t)}else if(t.parentNode&&!gd(t))r=qi(t),t=t.parentNode;else return null}}function av(n,e){for(let t=n,r=e;;){if(t.nodeType==3&&r=t){if(a.level==r)return o;(s<0||(i!=0?i<0?a.fromt:e[s].level>a.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}};function dv(n,e){if(n.length!=e.length)return!1;for(let t=0;t=0;O-=3)if(Kr[O+1]==-f){let S=Kr[O+2],x=S&2?i:S&4?S&1?s:i:0;x&&(rt[h]=rt[Kr[O]]=x),a=O;break}}else{if(Kr.length==189)break;Kr[a++]=h,Kr[a++]=u,Kr[a++]=l}else if((m=rt[h])==2||m==1){let O=m==i;l=O?0:1;for(let S=a-3;S>=0;S-=3){let x=Kr[S+2];if(x&2)break;if(O)Kr[S+2]|=2;else{if(x&4)break;Kr[S+2]|=4}}}}}function w_(n,e,t,r){for(let i=0,s=r;i<=t.length;i++){let o=i?t[i-1].to:n,a=il;)m==S&&(m=t[--O].from,S=O?t[O-1].to:n),rt[--m]=f;l=d}else s=c,l++}}}function Lp(n,e,t,r,i,s,o){let a=r%2?2:1;if(r%2==i%2)for(let l=e,c=0;ll&&o.push(new br(l,O.from,f));let S=O.direction==Bs!=!(f%2);Dp(n,S?r+1:r,i,O.inner,O.from,O.to,o),l=O.to}m=O.to}else{if(m==t||(d?rt[m]!=a:rt[m]==a))break;m++}u?Lp(n,l,m,r+1,i,u,o):le;){let d=!0,h=!1;if(!c||l>s[c-1].to){let O=rt[l-1];O!=a&&(d=!1,h=O==16)}let u=!d&&a==1?[]:null,f=d?r:r+1,m=l;e:for(;;)if(c&&m==s[c-1].to){if(h)break e;let O=s[--c];if(!d)for(let S=O.from,x=c;;){if(S==e)break e;if(x&&s[x-1].to==S)S=s[--x].from;else{if(rt[S-1]==a)break e;break}}if(u)u.push(O);else{O.tort.length;)rt[rt.length]=256;let r=[],i=e==Bs?0:1;return Dp(n,i,i,t,0,n.length,r),r}function hv(n){return[new br(0,n,0)]}var uv="";function P_(n,e,t,r,i){var s;let o=r.head-n.from,a=br.find(e,o,(s=r.bidiLevel)!==null&&s!==void 0?s:-1,r.assoc),l=e[a],c=l.side(i,t);if(o==c){let u=a+=i?1:-1;if(u<0||u>=e.length)return null;l=e[a=u],o=l.side(!i,t),c=l.side(i,t)}let d=Pt(n.text,o,l.forward(i,t));(dl.to)&&(d=c),uv=n.text.slice(Math.min(o,d),Math.max(o,d));let h=a==(i?e.length-1:0)?null:e[a+(i?1:-1)];return h&&d==c&&h.level+(i?0:1)n.some(e=>e)}),Sv=oe.define({combine:n=>n.some(e=>e)}),vv=oe.define(),Ja=class n{constructor(e,t,r,i,s,o=!1){this.range=e,this.y=t,this.x=r,this.yMargin=i,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new n(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new n(z.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},ed=ye.define({map:(n,e)=>n.map(e)}),wv=ye.define();function jn(n,e,t){let r=n.facet(gv);r.length?r[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var xi=oe.define({combine:n=>n.length?n[0]:!0}),$_=0,Mo=oe.define({combine(n){return n.filter((e,t)=>{for(let r=0;r{let l=[];return o&&l.push(Rd.of(c=>{let d=c.plugin(a);return d?o(d):J.none})),s&&l.push(s(a)),l})}static fromClass(e,t){return n.define((r,i)=>new e(r,i),t)}},el=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(r){if(jn(t.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(i){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){jn(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(r){jn(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},xv=oe.define(),Qm=oe.define(),Rd=oe.define(),Pv=oe.define(),Tm=oe.define(),ul=oe.define(),kv=oe.define();function SS(n,e){let t=n.state.facet(kv);if(!t.length)return t;let r=t.map(s=>s instanceof Function?s(n):s),i=[];return $e.spans(r,e.from,e.to,{point(){},span(s,o,a,l){let c=s-e.from,d=o-e.from,h=i;for(let u=a.length-1;u>=0;u--,l--){let f=a[u].spec.bidiIsolate,m;if(f==null&&(f=k_(e.text,c,d)),l>0&&h.length&&(m=h[h.length-1]).to==c&&m.direction==f)m.to=d,h=m.inner;else{let O={from:c,to:d,direction:f,inner:[]};h.push(O),h=O.inner}}}}),i}var $v=oe.define();function Am(n){let e=0,t=0,r=0,i=0;for(let s of n.state.facet($v)){let o=s(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(r=Math.max(r,o.top)),o.bottom!=null&&(i=Math.max(i,o.bottom)))}return{left:e,right:t,top:r,bottom:i}}var Ua=oe.define(),zr=class n{constructor(e,t,r,i){this.fromA=e,this.toA=t,this.fromB=r,this.toB=i}join(e){return new n(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,r=this;for(;t>0;t--){let i=e[t-1];if(!(i.fromA>r.toA)){if(i.toAi.push(new zr(s,o,a,l))),this.changedRanges=i}static create(e,t,r){return new n(e,t,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Q_=[],mt=class{constructor(e,t,r=0){this.dom=e,this.length=t,this.flags=r,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Q_}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&d_(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let r=t;for(let i of this.children){if(i==e)return r;r+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t,r){return null}domPosFor(e,t){let r=qi(this.dom),i=this.length?e>0:t>0;return new Jr(this.parent.dom,r+(i?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof Wo)return e;return null}static get(e){return e.cmTile}},zo=class extends mt{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,r=null,i,s=(e==null?void 0:e.node)==t?e:null,o=0;for(let a of this.children){if(a.sync(e),o+=a.length+a.breakAfter,i=r?r.nextSibling:t.firstChild,s&&i!=a.dom&&(s.written=!0),a.dom.parentNode==t)for(;i&&i!=a.dom;)i=vS(i);else t.insertBefore(a.dom,i);r=a.dom}for(i=r?r.nextSibling:t.firstChild,s&&i&&(s.written=!0);i;)i=vS(i);this.length=o}};function vS(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}var Wo=class extends zo{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=mt.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],r=this,i=0,s=0;;)if(i==r.children.length){if(!t.length)return;r=r.parent,r.breakAfter&&s++,i=t.pop()}else{let o=r.children[i++];if(o instanceof Pi)t.push(i),r=o,i=0;else{let a=s+o.length,l=e(o,s);if(l!==void 0)return l;s=a+o.breakAfter}}}resolveBlock(e,t){let r,i=-1,s,o=-1;if(this.blockTiles((a,l)=>{let c=l+a.length;if(e>=l&&e<=c){if(a.isWidget()&&t>=-1&&t<=1){if(a.flags&32)return!0;a.flags&16&&(r=void 0)}(le||e==l&&(t>1?a.length:a.covers(-1)))&&(!s||!a.isWidget()&&s.isWidget())&&(s=a,o=e-l)}}),!r&&!s)throw new Error("No tile at position "+e);return r&&t<0||!s?{tile:r,offset:i}:{tile:s,offset:o}}},Pi=class n extends zo{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let r=new n(t||document.createElement(e.tagName),e);return t||(r.flags|=4),r}},No=class n extends zo{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,r){let i=new n(t||document.createElement("div"),e);return(!t||!r)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,r){let i=null,s=-1,o=null,a=-1;function l(d,h){for(let u=0,f=0;u=h&&(m.isComposite()?l(m,h-f):(!o||o.isHidden&&(t>0&&!(o.flags&32)||r&&A_(o,m)))&&(O>h||m.flags&32&&t<=1)?(o=m,a=h-f):(f=-1)&&(i=m,s=h-f)),f=O}}l(this,e);let c=(t<0?i:o)||i||o;return c?{tile:c,offset:c==i?s:a}:null}coordsIn(e,t,r){let i=this.resolveInline(e,t,!0);return i?i.tile.coordsIn(Math.max(0,i.offset),t,r):T_(this)}domIn(e,t){let r=this.resolveInline(e,t);if(r){let{tile:i,offset:s}=r;if(this.dom.contains(i.dom))return i.isText()?new Jr(i.dom,Math.min(i.dom.nodeValue.length,s)):i.domPosFor(s,i.flags&16?1:i.flags&32?-1:t);let o=r.tile.parent,a=!1;for(let l of o.children){if(a)return new Jr(l.dom,0);l==r.tile&&(a=!0)}}return new Jr(this.dom,0)}};function T_(n){let e=n.dom.lastChild;if(!e)return n.dom.getBoundingClientRect();let t=cd(e);return t[t.length-1]||null}function A_(n,e){let t=n.coordsIn(0,1),r=e.coordsIn(0,1);return t&&r&&r.topi&&(e=i);let s=e,o=e,a=0;e==0&&t<0||e==i&&t>=0?ae.chrome||ae.gecko||(e?(s--,a=1):o=0)?0:l.length-1];return ae.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),r==null?c:Od(c,(a?a>0:t<0)==r)}static of(e,t){let r=new n(t||document.createTextNode(e),e);return t||(r.flags|=2),r}},Vs=class n extends mt{constructor(e,t,r,i){super(e,t,i),this.widget=r}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,r){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;if(r)return Od(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let s=this.dom.getClientRects(),o=null;if(!s.length)return null;let a=this.flags&16?!0:this.flags&32?!1:e>0;for(let l=a?s.length-1:0;o=s[l],!(e>0?l==0:l==s.length-1||o.top0==r)}},Ip=class{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,r){let{tile:i,index:s,beforeBreak:o,parents:a}=this;for(;e||t>0;)if(i.isComposite())if(o){if(!e)break;r&&r.break(),e--,o=!1}else if(s==i.children.length){if(!e&&!a.length)break;r&&r.leave(i),o=!!i.breakAfter,{tile:i,index:s}=a.pop(),s++}else{let l=i.children[s],c=l.breakAfter;(t>0?l.length<=e:l.length=0;a--){let l=t.marks[a],c=i.lastChild;if(c instanceof An&&c.mark.eq(l.mark))c.dom!=l.dom&&c.setDOM(Sp(l.dom)),i=c;else{if(this.cache.reused.get(l)){let h=mt.get(l.dom);h&&h.setDOM(Sp(l.dom))}let d=An.of(l.mark,l.dom);i.append(d),i=d}this.cache.reused.set(l,2)}let s=mt.get(e.text);s&&this.cache.reused.set(s,2);let o=new zs(e.text,e.text.nodeValue);o.flags|=8,this.pos=e.range.toB,i.append(o)}addInlineWidget(e,t,r){let i=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);i||this.flushBuffer();let s=this.ensureMarks(t,r);!i&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,r){this.flushBuffer(),this.ensureMarks(t,r).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var r;e||(e=Qv);let i=No.start(e,t||((r=this.cache.find(No))===null||r===void 0?void 0:r.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=i)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var r;let i=this.curLine;for(let s=e.length-1;s>=0;s--){let o=e[s],a;if(t>0&&(a=i.lastChild)&&a instanceof An&&a.mark.eq(o))i=a,t--;else{let l=An.of(o,(r=this.cache.find(An,c=>c.mark.eq(o)))===null||r===void 0?void 0:r.dom);i.append(l),i=l,t=0}}return i}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!wS(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(ae.ios&&wS(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(vp,0,32)||new Vs(vp.toDOM(),0,vp,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=e.rank*102+e.value.rank,r=new Xp(e.from,e.to,e.value,t),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-r.rank||this.wrappers[i-1].to-r.to)<0;)i--;this.wrappers.splice(i,0,r)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let r of this.wrappers){let i=t.lastChild;if(r.fromo.wrapper.eq(r.wrapper)))===null||e===void 0?void 0:e.dom);t.append(s),t=s}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),r=this.cache.find(Bo,void 0,1);return r&&(r.flags=t),r||new Bo(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Wp=class{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:i,lineBreak:s,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=i;let a=this.textOff=Math.min(e,i.length);return s?null:i.slice(0,a)}let t=Math.min(this.text.length,this.textOff+e),r=this.text.slice(this.textOff,t);return this.textOff=t,r}},yd=[Vs,No,zs,An,Bo,Pi,Wo];for(let n=0;n[]),this.index=yd.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,r=this.buckets[t];r.length<6?r.push(e):r[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,r=2){let i=e.bucket,s=this.buckets[i],o=this.index[i];for(let a=0;a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let r=t&&this.getCompositionContext(t.text);for(let i=0,s=0,o=0;;){let a=oi){let c=l-i;this.preserve(c,!o,!a),i=l,s+=c}if(!a)break;t&&a.fromA<=t.range.fromA&&a.toA>=t.range.toA?(this.forward(a.fromA,t.range.fromA,t.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(l-a);else{let c=l>0||a{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof An&&i.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?i.length&&(i.length=s=0):o instanceof An&&(i.shift(),s=Math.min(s,i.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let r=null,i=this.builder,s=-1,o=$e.spans(this.decorations,e,t,{point:(a,l,c,d,h,u)=>{if(c instanceof Ns){if(this.disallowBlockEffectsFor[u]){if(c.block)throw new RangeError("Block decorations may not be specified via plugins");if(l>this.view.state.doc.lineAt(a).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(s=d.length,h>d.length)i.continueWidget(l-a);else{let f=c.widget||(c.block?Gi.block:Gi.inline),m=C_(c),O=this.cache.findWidget(f,l-a,m)||Vs.of(f,this.view,l-a,m);c.block?(c.startSide>0&&i.addLineStartIfNotCovered(r),i.addBlockWidget(O)):(i.ensureLine(r),i.addInlineWidget(O,d,h))}r=null}else r=__(r,c);l>a&&this.text.skip(l-a)},span:(a,l,c,d)=>{for(let h=a;h-1&&(this.openWidget=o>s),this.openWidget||i.addLineStartIfNotCovered(r),this.openMarks=o}forward(e,t,r=1){t-e<=10?this.old.advance(t-e,r,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,r,this.reuseWalker))}getCompositionContext(e){let t=[],r=null;for(let i=e.parentNode;;i=i.parentNode){let s=mt.get(i);if(i==this.view.contentDOM)break;s instanceof An?t.push(s):s!=null&&s.isLine()?r=s:s instanceof Pi||(i.nodeName=="DIV"&&!r&&i!=this.view.contentDOM?r=new No(i,Qv):r||t.push(An.of(new ol({tagName:i.nodeName.toLowerCase(),attributes:h_(i)}),i)))}return{line:r,marks:t}}};function wS(n,e){let t=r=>{for(let i of r.children)if((e?i.isText():i.length)||t(i))return!0;return!1};return t(n)}function C_(n){let e=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(e|=256),e}var Qv={class:"cm-line"};function __(n,e){let t=e.spec.attributes,r=e.spec.class;return!t&&!r||(n||(n={class:"cm-line"}),t&&wm(t,n),r&&(n.class+=" "+r)),n}function E_(n){let e=[];for(let t=n.parents.length;t>1;t--){let r=t==n.parents.length?n.tile:n.parents[t].tile;r instanceof An&&e.push(r.mark)}return e}function Sp(n){let e=mt.get(n);return e&&e.setDOM(n.cloneNode()),n}var Gi=class extends Ct{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};Gi.inline=new Gi("span");Gi.block=new Gi("div");var vp=new class extends Ct{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},Sd=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=J.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Wo(e,e.contentDOM),this.updateInner([new zr(0,0,0,e.state.doc.length)],null)}update(e){var t;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let i=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?i=this.domChanged.newSel.head:!z_(e.changes,this.hasComposition)&&!e.selectionSet&&(i=e.state.selection.main.head));let s=i>-1?M_(this.view,e.changes,i):null;if(this.domChanged=null,this.hasComposition){let{from:d,to:h}=this.hasComposition;r=new zr(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(ae.ie||ae.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,a=this.blockWrappers;this.updateDeco();let l=Z_(o,this.decorations,e.changes);l.length&&(r=zr.extendWithRanges(r,l));let c=I_(a,this.blockWrappers,e.changes);return c.length&&(r=zr.extendWithRanges(r,c)),s&&!r.some(d=>d.fromA<=s.range.fromA&&d.toA>=s.range.toA)&&(r=s.range.addToSet(r.slice())),this.tile.flags&2&&r.length==0?!1:(this.updateInner(r,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:r}=this.view;r.ignore(()=>{if(t||e.length){let o=this.tile,a=new Bp(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&mt.get(t.text)&&a.cache.reused.set(mt.get(t.text),2),this.tile=a.run(e,t),Vp(o,a.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let s=ae.chrome||ae.ios?{node:r.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||r.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let i=[];if(this.view.viewport.from||this.view.viewport.to-1)&&Ha(r,this.view.observer.selectionRange)&&!(i&&r.contains(i));if(!(s||t||o))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c,d;if(l.empty?d=c=this.inlineDOMNearPos(l.anchor,l.assoc||1):(d=this.inlineDOMNearPos(l.head,l.head==l.from?1:-1),c=this.inlineDOMNearPos(l.anchor,l.anchor==l.from?1:-1)),ae.gecko&&l.empty&&!this.hasComposition&&R_(c)){let u=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(u,c.node.childNodes[c.offset]||null)),c=d=new Jr(u,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!Ka(c.node,c.offset,h.anchorNode,h.anchorOffset)||!Ka(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{ae.android&&ae.chrome&&r.contains(h.focusNode)&&X_(h.focusNode,r)&&(r.blur(),r.focus({preventScroll:!0}));let u=ll(this.view.root);if(u)if(l.empty){if(ae.gecko){let f=L_(c.node,c.offset);if(f&&f!=3){let m=(f==1?ov:av)(c.node,c.offset);m&&(c=new Jr(m.node,m.offset))}}u.collapse(c.node,c.offset),l.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=l.bidiLevel)}else if(u.extend){u.collapse(c.node,c.offset);try{u.extend(d.node,d.offset)}catch(f){}}else{let f=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),f.setEnd(d.node,d.offset),f.setStart(c.node,c.offset),u.removeAllRanges(),u.addRange(f)}o&&this.view.root.activeElement==r&&(r.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Jr(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Jr(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&Ka(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,r=ll(e.root),{anchorNode:i,anchorOffset:s}=e.observer.selectionRange;if(!r||!t.empty||!t.assoc||!r.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let a=o.posAtStart;if(t.head==a||t.head==a+o.length)return;let l=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!l||!c||l.bottom>c.top)return;let d=this.domAtPos(t.head+t.assoc,t.assoc);r.collapse(d.node,d.offset),r.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let h=e.observer.selectionRange;e.docView.posFromDOM(h.anchorNode,h.anchorOffset)!=t.from&&r.collapse(i,s)}posFromDOM(e,t){let r=this.tile.nearest(e);if(!r)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let i=r.posAtStart;if(r.isComposite()){let s;if(e==r.dom)s=r.dom.childNodes[t];else{let o=ki(e)==0?0:t==0?-1:1;for(;;){let a=e.parentNode;if(a==r.dom)break;o==0&&a.firstChild!=a.lastChild&&(e==a.firstChild?o=-1:o=1),e=a}o<0?s=e:s=e.nextSibling}if(s==r.dom.firstChild)return i;for(;s&&!mt.get(s);)s=s.nextSibling;if(!s)return i+r.length;for(let o=0,a=i;;o++){let l=r.children[o];if(l.dom==s)return a;a+=l.length+l.breakAfter}}else return r.isText()?e==r.dom?i+t:i+(t?r.length:0):i}domAtPos(e,t){let{tile:r,offset:i}=this.tile.resolveBlock(e,t);return r.isWidget()?r.domPosFor(i,t):r.domIn(i,t)}inlineDOMNearPos(e,t){let r,i=-1,s=!1,o,a=-1,l=!1;return this.tile.blockTiles((c,d)=>{if(c.isWidget()){if(c.flags&32&&d>=e)return!0;c.flags&16&&(s=!0)}else{let h=d+c.length;if(d<=e&&(r=c,i=e-d,s=h=e&&!o&&(o=c,a=e-d,l=d>e),d>e&&o)return!0}}),!r&&!o?this.domAtPos(e,t):(s&&o?r=null:l&&r&&(o=null),r&&t<0||!o?r.domIn(i,t):o.domIn(a,t))}coordsAt(e,t,r){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof tl?null:i.coordsInWidget(s,t,!0):i.coordsIn(s,t,r)}lineAt(e,t){let{tile:r}=this.tile.resolveBlock(e,t);return r.isLine()?r:null}coordsForChar(e){let{tile:t,offset:r}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function i(s,o){if(s.isComposite())for(let a of s.children){if(a.length>=o){let l=i(a,o);if(l)return l}if(o-=a.length,o<0)break}else if(s.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,a=-1,l=this.view.textDirection==qe.LTR,c=0,d=(h,u,f)=>{for(let m=0;mi);m++){let O=h.children[m],S=u+O.length,x=O.dom.getBoundingClientRect(),{height:D}=x;if(f&&!m&&(c+=x.top-f.top),O instanceof Pi)S>r&&d(O,u,x);else if(u>=r&&(c>0&&t.push(-c),t.push(D+c),c=0,o)){let M=O.dom.lastChild,Z=M?cd(M):[];if(Z.length){let k=Z[Z.length-1],w=l?k.right-x.left:x.right-k.left;w>a&&(a=w,this.minWidth=s,this.minWidthFrom=u,this.minWidthTo=S)}}f&&m==h.children.length-1&&(c+=f.bottom-x.bottom),u=S+O.breakAfter}};return d(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?qe.RTL:qe.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let a=0,l;for(let c of o.children){if(!c.isText()||/[^ -~]/.test(c.text))return;let d=cd(c.dom);if(d.length!=1)return;a+=d[0].width,l=d[0].height}if(a)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:a/o.length,textHeight:l}}});if(e)return e;let t=document.createElement("div"),r,i,s;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=cd(t.firstChild)[0];r=t.getBoundingClientRect().height,i=o&&o.width?o.width/27:7,s=o&&o.height?o.height:r,t.remove()}),{lineHeight:r,charWidth:i,textHeight:s}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let r=0,i=0;;i++){let s=i==t.viewports.length?null:t.viewports[i],o=s?s.from-1:this.view.state.doc.length;if(o>r){let a=(t.lineBlockAt(o).bottom-t.lineBlockAt(r).top)/this.view.scaleY;e.push(J.replace({widget:new tl(a),block:!0,inclusive:!0,isBlockGap:!0}).range(r,o))}if(!s)break;r=s.to+1}return J.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Rd).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),r=!1,i=this.view.state.facet(Tm).map((s,o)=>{let a=typeof s=="function";return a&&(r=!0),a?s(this.view):s});for(i.length&&(this.dynamicDecorationMap[e++]=r,t.push($e.join(i))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof s=="function"?s(this.view):s)}scrollIntoView(e){if(e.isSnapshot){let c=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=c.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let c of this.view.state.facet(vv))try{if(c(this.view,e.range,e))return!0}catch(d){jn(this.view.state,d,"scroll handler")}let{range:t}=e,r=this.coordsAt(t.head,t.assoc||(t.head>t.anchor?-1:1)),i;if(!r)return;!t.empty&&(i=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(r={left:Math.min(r.left,i.left),top:Math.min(r.top,i.top),right:Math.max(r.right,i.right),bottom:Math.max(r.bottom,i.bottom)});let s=Am(this.view),o={left:r.left-s.left,top:r.top-s.top,right:r.right+s.right,bottom:r.bottom+s.bottom},{offsetWidth:a,offsetHeight:l}=this.view.scrollDOM;if(p_(this.view.scrollDOM,o,t.head1&&(r.top>window.visualViewport.offsetTop+window.visualViewport.height||r.bottomr.isWidget()||r.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Vp(this.tile)}};function Vp(n,e){let t=e==null?void 0:e.get(n);if(t!=1){t==null&&n.destroy();for(let r of n.children)Vp(r,e)}}function R_(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Tv(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let r=ov(t.focusNode,t.focusOffset),i=av(t.focusNode,t.focusOffset),s=r||i;if(i&&r&&i.node!=r.node){let a=mt.get(i.node);if(!a||a.isText()&&a.text!=i.node.nodeValue)s=i;else if(n.docView.lastCompositionAfterCursor){let l=mt.get(r.node);!l||l.isText()&&l.text!=r.node.nodeValue||(s=i)}}if(n.docView.lastCompositionAfterCursor=s!=r,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}function M_(n,e,t){let r=Tv(n,t);if(!r)return null;let{node:i,from:s,to:o}=r,a=i.nodeValue;if(/[\n\r]/.test(a)||n.state.doc.sliceString(r.from,r.to)!=a)return null;let l=e.invertedDesc;return{range:new zr(l.mapPos(s),l.mapPos(o),s,o),text:i}}function L_(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(t=!0)}),t}var tl=class extends Ct{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function W_(n,e,t=1){let r=n.charCategorizer(e),i=n.doc.lineAt(e),s=e-i.from;if(i.length==0)return z.cursor(e);s==0?t=1:s==i.length&&(t=-1);let o=s,a=s;t<0?o=Pt(i.text,s,!1):a=Pt(i.text,s);let l=r(i.text.slice(o,a));for(;o>0;){let c=Pt(i.text,o,!1);if(r(i.text.slice(c,o))!=l)break;o=c}for(;an.defaultLineHeight*1.5){let a=n.viewState.heightOracle.textHeight,l=Math.floor((i-t.top-(n.defaultLineHeight-a)*.5)/a);s+=l*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+Kc(o,s,n.state.tabSize)}function Yp(n,e,t){let r=n.lineBlockAt(e);if(Array.isArray(r.type)){let i;for(let s of r.type){if(s.from>e)break;if(!(s.toe)return s;(!i||s.type==Ht.Text&&(i.type!=s.type||(t<0?s.frome)))&&(i=s)}}return i||r}return r}function B_(n,e,t,r){let i=Yp(n,e.head,e.assoc||-1),s=!r||i.type!=Ht.Text||!(n.lineWrapping||i.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>i.from?e.head-1:e.head);if(s){let o=n.dom.getBoundingClientRect(),a=n.textDirectionAt(i.from),l=n.posAtCoords({x:t==(a==qe.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(l!=null)return z.cursor(l,t?-1:1)}return z.cursor(t?i.to:i.from,t?-1:1)}function xS(n,e,t,r){let i=n.state.doc.lineAt(e.head),s=n.bidiSpans(i),o=n.textDirectionAt(i.from);for(let a=e,l=null;;){let c=P_(i,s,o,a,t),d=uv;if(!c){if(i.number==(t?n.state.doc.lines:1))return a;d=` -`,i=n.state.doc.line(i.number+(t?1:-1)),s=n.bidiSpans(i),c=n.visualLineSide(i,!t)}if(l){if(!l(d))return a}else{if(!r)return c;l=r(d)}a=c}}function V_(n,e,t){let r=n.state.charCategorizer(e),i=r(t);return s=>{let o=r(s);return i==et.Space&&(i=o),i==o}}function F_(n,e,t,r){let i=e.head,s=t?1:-1;if(i==(t?n.state.doc.length:0))return z.cursor(i,e.assoc);let o=e.goalColumn,a,l=n.contentDOM.getBoundingClientRect(),c=n.coordsAtPos(i,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),d=n.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let m=n.viewState.lineBlockAt(i);o==null&&(o=Math.min(l.right-l.left,n.defaultCharacterWidth*(i-m.from))),a=(s<0?m.top:m.bottom)+d}let h=l.left+o,u=n.viewState.heightOracle.textHeight>>1,f=r!=null?r:u;for(let m=0;;m+=u){let O=a+(f+m)*s,S=jp(n,{x:h,y:O},!1,s);if(t?O>l.bottom:Oa:D{if(e>s&&ei(n)),t.from,e.head>t.from?-1:1);return r==t.from?t:z.cursor(r,rn.viewState.docHeight)return new Or(n.state.doc.length,-1);if(c=n.elementAtHeight(l),r==null)break;if(c.type==Ht.Text){if(r<0?c.ton.viewport.to)break;let u=n.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(u&&(r<0?u.top<=l+s:u.bottom>=l+s))break}let h=n.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+h:c.top-h}if(n.viewport.from>=c.to||n.viewport.to<=c.from){if(t)return null;if(c.type==Ht.Text){let h=N_(n,i,c,o,a);return new Or(h,h==c.from?1:-1)}}if(c.type!=Ht.Text)return l<(c.top+c.bottom)/2?new Or(c.from,1):new Or(c.to,-1);let d=n.docView.lineAt(c.from,2);return(!d||d.length!=c.length)&&(d=n.docView.lineAt(c.from,-2)),new Up(n,o,a,n.textDirectionAt(c.from)).scanTile(d,c.from)}var Up=class{constructor(e,t,r,i){this.view=e,this.x=t,this.y=r,this.baseDir=i,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||r.length&&(r[0].level!=this.baseDir||r[0].to+i.from>1;t:if(o.has(O)){for(let D=1;D=s&&(M-=m),!o.has(M)){O=M;break t}}break e}o.add(O);let S=t(O),x=0;if(S)for(let D=0;D1))if(M.bottomthis.y)(!c||c.top>M.top)&&(c=M),x=-1;else{let Z=M.left>this.x?this.x-M.left:M.right(m+m+O)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(m+O+O)/3)return this.y=c.top+1,this.scan(e,t,!0)}let f=(a?this.dirAt(e[d],1):this.baseDir)==qe.LTR;return{i:d,after:this.x>(u.left+u.right)/2==f}}scanText(e,t){let r=[];for(let s=0;s{let o=r[s]-t,a=r[s+1]-t;return cl(e.dom,o,a).getClientRects()});return i.after?new Or(r[i.i+1],-1):new Or(r[i.i],1)}scanTile(e,t){if(!e.length)return new Or(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let r=[t];for(let a=0,l=t;a{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:cl(l.dom,0,l.length)).getClientRects()}),s=e.children[i.i],o=r[i.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):i.after?new Or(r[i.i+1],-1):new Or(o,1)}},Ro="\uFFFF",qp=class{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(Me.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Ro}readRange(e,t){if(!e)return this;let r=e.parentNode;for(let i=e;;){this.findPointBefore(r,i);let s=this.text.length;this.readNode(i);let o=mt.get(i),a=i.nextSibling;if(a==t){o!=null&&o.breakAfter&&!a&&r!=this.view.contentDOM&&this.lineBreak();break}let l=mt.get(a);(o&&l?o.breakAfter:(o?o.breakAfter:gd(i))||gd(a)&&(i.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>s)&&!j_(a,t)&&this.lineBreak(),i=a}return this.findPointBefore(r,t),this}readTextNode(e){let t=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,t.length));for(let r=0,i=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,a;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,r),o=this.lineSeparator.length):(a=i.exec(t))&&(s=a.index,o=a[0].length),this.append(t.slice(r,s<0?t.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let l of this.points)l.node==e&&l.pos>this.text.length&&(l.pos-=o-1);r=s+o}}readNode(e){let t=mt.get(e),r=t&&t.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let i=r.iter();!i.next().done;)i.lineBreak?this.lineBreak():this.append(i.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==t&&(r.pos=this.text.length)}findPointInside(e,t){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(Y_(e,r.node,r.offset)?t:0))}};function Y_(n,e,t){for(;;){if(!e||t-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView,a=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=Cv(e.docView.tile,t,r,0))){let l=s||o?[]:q_(e),c=new qp(l,e);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=G_(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!Ep(e.contentDOM,l.focusNode)?a.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Ep(e.contentDOM,l.anchorNode)?a.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((ae.ios||ae.chrome)&&c!=d&&Math.min(c,d)<=a.main.from&&Math.max(c,d)>=a.main.to&&(h.from>0||h.to-1&&a.ranges.length>1)this.newSel=a.replaceRange(z.range(d,c));else if(e.lineWrapping&&d==c&&!(a.main.empty&&a.main.head==c)&&e.inputState.lastTouchTime>Date.now()-100){let u=e.coordsAtPos(c,-1),f=0;u&&(f=e.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=z.create([z.cursor(c,f)])}else this.newSel=z.single(d,c)}}};function Cv(n,e,t,r){if(n.isComposite()){let i=-1,s=-1,o=-1,a=-1;for(let l=0,c=r,d=r;lt)return Cv(h,e,t,c);if(u>=e&&i==-1&&(i=l,s=c),c>t&&h.dom.parentNode==n.dom){o=l,a=d;break}d=u,c=u+h.breakAfter}return{from:s,to:a<0?r+n.length:a,startDOM:(i?n.children[i-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:r,to:r+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function _v(n,e){let t,{newSel:r}=e,{state:i}=n,s=i.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(o===8||ae.android&&e.text.length=a&&s.to<=l&&(e.typeOver||h!=e.text)&&h.slice(0,s.from-a)==e.text.slice(0,s.from-a)&&h.slice(s.to-a)==e.text.slice(u=e.text.length-(h.length-(s.to-a)))?t={from:s.from,to:s.to,insert:De.of(e.text.slice(s.from-a,u).split(Ro))}:(f=Ev(h,e.text,c-a,d))&&(ae.chrome&&o==13&&f.toB==f.from+2&&e.text.slice(f.from,f.toB)==Ro+Ro&&f.toB--,t={from:a+f.from,to:a+f.toA,insert:De.of(e.text.slice(f.from,f.toB).split(Ro))})}else r&&(!n.hasFocus&&i.facet(xi)||wd(r,s))&&(r=null);if(!t&&!r)return!1;if((ae.mac||ae.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(r&&t.insert.length==2&&(r=z.single(r.main.anchor-1,r.main.head-1)),t={from:t.from,to:t.to,insert:De.of([t.insert.toString().replace("."," ")])}):i.doc.lineAt(s.from).toDate.now()-50?t={from:s.from,to:s.to,insert:i.toText(n.inputState.insertingText)}:ae.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==` - `&&n.lineWrapping&&(r&&(r=z.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:De.of([" "])}),t)return Cm(n,t,r,o);if(r&&!wd(r,s)){let a=!1,l="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(a=!0),l=n.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=Av(i.facet(ul).map(c=>c(n)),r))),n.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Cm(n,e,t,r=-1){if(ae.ios&&n.inputState.flushIOSKey(e))return!0;let i=n.state.selection.main;if(ae.android&&(e.to==i.to&&(e.from==i.from||e.from==i.from-1&&n.state.sliceDoc(e.from,i.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Xo(n.contentDOM,"Enter",13)||(e.from==i.from-1&&e.to==i.to&&e.insert.length==0||r==8&&e.insert.lengthi.head)&&Xo(n.contentDOM,"Backspace",8)||e.from==i.from&&e.to==i.to+1&&e.insert.length==0&&Xo(n.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,a=()=>o||(o=U_(n,e,t));return n.state.facet(Ov).some(l=>l(n,e.from,e.to,s,a))||n.dispatch(a()),!0}function U_(n,e,t){let r,i=n.state,s=i.selection.main,o=-1;if(e.from==e.to&&e.froms.to){let l=e.fromh(n)),c,l);e.from==d&&(o=d)}if(o>-1)r={changes:e,selection:z.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let l=s.frome.to?i.sliceDoc(e.to,s.to):"";r=i.replaceSelection(n.state.toText(l+e.insert.sliceString(0,void 0,n.state.lineBreak)+c))}else{let l=i.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(i.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let d=n.state.sliceDoc(e.from,e.to),h,u=t&&Tv(n,t.main.head);if(u){let m=e.insert.length-(e.to-e.from);h={from:u.from,to:u.to-m}}else h=n.state.doc.lineAt(s.head);let f=s.to-e.to;r=i.changeByRange(m=>{if(m.from==s.from&&m.to==s.to)return{changes:l,range:c||m.map(l)};let O=m.to-f,S=O-d.length;if(n.state.sliceDoc(S,O)!=d||O>=h.from&&S<=h.to)return{range:m};let x=i.changes({from:S,to:O,insert:e.insert}),D=m.to-s.to;return{changes:x,range:c?z.range(Math.max(0,c.anchor+D),Math.max(0,c.head+D)):m.map(x)}})}else r={changes:l,selection:c&&i.selection.replaceRange(c)}}let a="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,a+=".compose",n.inputState.compositionFirstChange&&(a+=".start",n.inputState.compositionFirstChange=!1)),i.update(r,{userEvent:a,scrollIntoView:!0})}function Ev(n,e,t,r){let i=Math.min(n.length,e.length),s=0;for(;s0&&a>0&&n.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(r=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o=o?s-t:0;s-=l,a=s+(a-o),o=s}else if(a=a?s-t:0;s-=l,o=s+(o-a),a=s}return{from:s,toA:o,toB:a}}function q_(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:i,focusOffset:s}=n.observer.selectionRange;return t&&(e.push(new vd(t,r)),(i!=t||s!=r)&&e.push(new vd(i,s))),e}function G_(n,e){if(n.length==0)return null;let t=n[0].pos,r=n.length==2?n[1].pos:t;return t>-1&&r>-1?z.single(t+e,r+e):null}function wd(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}var Hp=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,ae.safari&&e.contentDOM.addEventListener("input",()=>null),ae.gecko&&h2(e.contentDOM.ownerDocument)}handleEvent(e){!i2(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let i of r.observers)i(this.view,t);for(let i of r.handlers){if(t.defaultPrevented)break;if(i(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=K_(e),r=this.handlers,i=this.view.contentDOM;for(let s in t)if(s!="scroll"){let o=!t[s].handlers.length,a=r[s];a&&o!=!a.handlers.length&&(i.removeEventListener(s,this.handleEvent),a=null),a||i.addEventListener(s,this.handleEvent,{passive:o})}for(let s in r)s!="scroll"&&!t[s]&&i.removeEventListener(s,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&Mv.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),ae.android&&ae.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(ae.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(Rv.some(t=>t.keyCode==e.keyCode)&&!e.ctrlKey||J_.indexOf(e.key)>-1&&e.ctrlKey)){let t={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};return t.shiftKey&&ae.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&H_(this.view.win)&&(t.shiftKey=!1),this.pendingIOSKey={key:e.key,keyCode:e.keyCode,mods:t},setTimeout(()=>this.flushIOSKey(),50),!0}return e.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(e){let t=this.pendingIOSKey;return!t||this.view.observer.pendingRecords().length||t.key=="Enter"&&e&&e.from0?!0:ae.safari&&!ae.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function H_(n){return n.visualViewport?n.visualViewport.height*n.visualViewport.scale/n.document.documentElement.clientHeight<.85:!1}function PS(n,e){return(t,r)=>{try{return e.call(n,r,t)}catch(i){jn(t.state,i)}}}function K_(n){let e=Object.create(null);function t(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of n){let i=r.spec,s=i&&i.plugin.domEventHandlers,o=i&&i.plugin.domEventObservers;if(s)for(let a in s){let l=s[a];l&&t(a).handlers.push(PS(r.value,l))}if(o)for(let a in o){let l=o[a];l&&t(a).observers.push(PS(r.value,l))}}for(let r in Wr)t(r).handlers.push(Wr[r]);for(let r in yn)t(r).observers.push(yn[r]);return e}var Rv=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],J_="dthko",Mv=[16,17,18,20,91,92,224,225],td=6;function nd(n){return Math.max(0,n)*.7+8}function e2(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}var Kp=class{constructor(e,t,r,i){this.view=e,this.startEvent=t,this.style=r,this.mustSelect=i,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=tv(e.contentDOM),this.atoms=e.state.facet(ul).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(Me.allowMultipleSelections)&&t2(e,t),this.dragging=r2(e,t)&&Zv(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&e2(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,r=0,i=0,s=0,o=this.view.win.innerWidth,a=this.view.win.innerHeight;this.scrollParents.x&&({left:i,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:a}=this.scrollParents.y.getBoundingClientRect());let l=Am(this.view);e.clientX-l.left<=i+td?t=-nd(i-e.clientX):e.clientX+l.right>=o-td&&(t=nd(e.clientX-o)),e.clientY-l.top<=s+td?r=-nd(s-e.clientY):e.clientY+l.bottom>=a-td&&(r=nd(e.clientY-a)),this.setScrollSpeed(t,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,r=Av(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function t2(n,e){let t=n.state.facet(fv);return t.length?t[0](e):ae.mac?e.metaKey:e.ctrlKey}function n2(n,e){let t=n.state.facet(pv);return t.length?t[0](e):ae.mac?!e.altKey:!e.ctrlKey}function r2(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let r=ll(n.root);if(!r||r.rangeCount==0)return!0;let i=r.getRangeAt(0).getClientRects();for(let s=0;s=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function i2(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,r;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(r=mt.get(t))&&r.isWidget()&&!r.isHidden&&r.widget.ignoreEvent(e))return!1;return!0}var Wr=Object.create(null),yn=Object.create(null),Lv=ae.ie&&ae.ie_version<15||ae.ios&&ae.webkit_version<604;function s2(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),Dv(n,t.value)},50)}function Md(n,e,t){for(let r of n.facet(e))t=r(t,n);return t}function Dv(n,e){e=Md(n.state,km,e);let{state:t}=n,r,i=1,s=t.toText(e),o=s.lines==t.selection.ranges.length;if(Jp!=null&&t.selection.ranges.every(l=>l.empty)&&Jp==s.toString()){let l=-1;r=t.changeByRange(c=>{let d=t.doc.lineAt(c.from);if(d.from==l)return{range:c};l=d.from;let h=t.toText((o?s.line(i++).text:e)+t.lineBreak);return{changes:{from:d.from,insert:h},range:z.cursor(c.from+h.length)}})}else o?r=t.changeByRange(l=>{let c=s.line(i++);return{changes:{from:l.from,to:l.to,insert:c.text},range:z.cursor(l.from+c.length)}}):r=t.replaceSelection(s);n.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}yn.scroll=n=>{let e=n.inputState;e.lastScrollTop=n.scrollDOM.scrollTop,e.lastScrollLeft=n.scrollDOM.scrollLeft,ae.ios&&!e.touchActive&&(e.lastIOSMomentumScroll=Date.now())};yn.wheel=yn.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Wr.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);yn.touchstart=(n,e)=>{let t=n.inputState,r=e.targetTouches[0];t.touchActive=!0,t.lastTouchTime=Date.now(),r&&(t.lastTouchX=r.clientX,t.lastTouchY=r.clientY),t.setSelectionOrigin("select.pointer")};yn.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};yn.touchend=(n,e)=>{n.inputState.touchActive=!1};Wr.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let r of n.state.facet(mv))if(t=r(n,e),t)break;if(!t&&e.button==0&&(t=a2(n,e)),t){let r=!n.hasFocus;n.inputState.startMouseSelection(new Kp(n,e,t,r)),r&&n.observer.ignore(()=>{iv(n.contentDOM);let s=n.root.activeElement;s&&!s.contains(n.contentDOM)&&s.blur()});let i=n.inputState.mouseSelection;if(i)return i.start(e),i.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function kS(n,e,t,r){if(r==1)return z.cursor(e,t);if(r==2)return W_(n.state,e,t);{let i=n.docView.lineAt(e,t),s=n.state.doc.lineAt(i?i.posAtEnd:e),o=i?i.posAtStart:s.from,a=i?i.posAtEnd:s.to;return aDate.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(QS+1)%3:1}function a2(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),r=Zv(e),i=n.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),i=i.map(s.changes))},get(s,o,a){let l=n.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),c,d=kS(n,l.pos,l.assoc,r);if(t.pos!=l.pos&&!o){let h=kS(n,t.pos,t.assoc,r),u=Math.min(h.from,d.from),f=Math.max(h.to,d.to);d=u1&&(c=l2(i,l.pos))?c:a?i.addRange(d):z.create([d])}}}function l2(n,e){for(let t=0;t=e)return z.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}Wr.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let i=n.docView.tile.nearest(e.target);if(i&&i.isWidget()){let s=i.posAtStart,o=s+i.length;(s>=t.to||o<=t.from)&&(t=z.undirectionalRange(s,o))}}let{inputState:r}=n;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Md(n.state,$m,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Wr.dragend=n=>(n.inputState.draggedContent=null,!1);function AS(n,e,t,r){if(t=Md(n.state,km,t),!t)return;let i=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=n.inputState,o=r&&s&&n2(n,e)?{from:s.from,to:s.to}:null,a={from:i,insert:t},l=n.state.changes(o?[o,a]:a);n.focus(),n.dispatch({changes:l,selection:{anchor:l.mapPos(i,-1),head:l.mapPos(i,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Wr.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let r=Array(t.length),i=0,s=()=>{++i==t.length&&AS(n,e,r.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(a.result)||(r[o]=a.result),s()},a.readAsText(t[o])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return AS(n,e,r,!0),!0}return!1};Wr.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=Lv?null:e.clipboardData;return t?(Dv(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(s2(n),!1)};function c2(n,e){let t=n.dom.parentNode;if(!t)return;let r=t.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),n.focus()},50)}function d2(n){let e=[],t=[],r=!1;for(let i of n.selection.ranges)i.empty||(e.push(n.sliceDoc(i.from,i.to)),t.push(i));if(!e.length){let i=-1;for(let{from:s}of n.selection.ranges){let o=n.doc.lineAt(s);o.number>i&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),i=o.number}r=!0}return{text:Md(n,$m,e.join(n.lineBreak)),ranges:t,linewise:r}}var Jp=null;Wr.copy=Wr.cut=(n,e)=>{if(!Ha(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:r,linewise:i}=d2(n.state);if(!t&&!i)return!1;Jp=i?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let s=Lv?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(c2(n,t),!1)};var Iv=Tn.define();function Xv(n,e){let t=[];for(let r of n.facet(bv)){let i=r(n,e);i&&t.push(i)}return t.length?n.update({effects:t,annotations:Iv.of(!0)}):null}function zv(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=Xv(n.state,e);t?n.dispatch(t):n.update([])}},10)}yn.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),zv(n)};yn.blur=n=>{n.observer.clearSelectionRange(),zv(n)};yn.compositionstart=yn.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};yn.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,ae.chrome&&ae.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};yn.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Wr.beforeinput=(n,e)=>{var t,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let s=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let a=o[0],l=n.posAtDOM(a.startContainer,a.startOffset),c=n.posAtDOM(a.endContainer,a.endOffset);return Cm(n,{from:l,to:c,insert:n.state.toText(s)},null),!0}}let i;if(ae.chrome&&ae.android&&(i=Rv.find(s=>s.inputType==e.inputType))&&(n.observer.delayAndroidKey(i.key,i.keyCode),i.key=="Backspace"||i.key=="Delete")){let s=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return ae.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),ae.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>yn.compositionend(n,e),20),!1};var CS=new Set;function h2(n){CS.has(n)||(CS.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var _S=["pre-wrap","normal","pre-line","break-spaces"],Vo=!1;function ES(){Vo=!1}var em=class{constructor(e){this.lineWrapping=e,this.doc=De.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let r=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((t-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return _S.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let r=0;r-1,l=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=a;if(this.lineWrapping=a,this.lineHeight=t,this.charWidth=r,this.textHeight=i,this.lineLength=s,l){this.heightSamples={};for(let c=0;c0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>dd&&(Vo=!0),this.height=e)}replace(e,t,r){return n.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,r,i){let s=this,o=r.doc;for(let a=i.length-1;a>=0;a--){let{fromA:l,toA:c,fromB:d,toB:h}=i[a],u=s.lineAt(l,ct.ByPosNoHeight,r.setDoc(t),0,0),f=u.to>=c?u:s.lineAt(c,ct.ByPosNoHeight,r,0,0);for(h+=f.to-c,c=f.to;a>0&&u.from<=i[a-1].toA;)l=i[a-1].fromA,d=i[a-1].fromB,a--,ls*2){let a=e[t-1];a.break?e.splice(--t,1,a.left,null,a.right):e.splice(--t,1,a.left,a.right),r+=1+a.break,i-=a.size}else if(s>i*2){let a=e[r];a.break?e.splice(r,1,a.left,null,a.right):e.splice(r,1,a.left,a.right),r+=2+a.break,s-=a.size}else break;else if(i=s&&o(this.lineAt(0,ct.ByPos,r,i,s))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,r=!1,i){return i&&i.from<=t&&i.more&&this.setMeasuredHeight(i),this.outdated=!1,this}toString(){return`block(${this.length})`}},gr=class n extends Pd{constructor(e,t,r){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=r}mainBlock(e,t){return new Xr(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,r){let i=r[0];return r.length==1&&(i instanceof n||i instanceof Ui&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof Ui?i=new n(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):Un.of(r)}updateHeight(e,t=0,r=!1,i){return i&&i.from<=t&&i.more?this.setMeasuredHeight(i):(r||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},Ui=class n extends Un{constructor(e){super(e,0)}heightMetrics(e,t){let r=e.doc.lineAt(t).number,i=e.doc.lineAt(t+this.length).number,s=i-r+1,o,a=0;if(e.lineWrapping){let l=Math.min(this.height,e.lineHeight*s);o=l/s,this.length>s+1&&(a=(this.height-l)/(this.length-s-1))}else o=this.height/s;return{firstLine:r,lastLine:i,perLine:o,perChar:a}}blockAt(e,t,r,i){let{firstLine:s,lastLine:o,perLine:a,perChar:l}=this.heightMetrics(t,i);if(t.lineWrapping){let c=i+(e0){let s=r[r.length-1];s instanceof n?r[r.length-1]=new n(s.length+i):r.push(null,new n(i-1))}if(e>0){let s=r[0];s instanceof n?r[0]=new n(e+s.length):r.unshift(new n(e-1),null)}return Un.of(r)}decomposeLeft(e,t){t.push(new n(e-1),null)}decomposeRight(e,t){t.push(null,new n(this.length-e-1))}updateHeight(e,t=0,r=!1,i){let s=t+this.length;if(i&&i.from<=t+this.length&&i.more){let o=[],a=Math.max(t,i.from),l=-1;for(i.from>t&&o.push(new n(i.from-t-1).updateHeight(e,t));a<=s&&i.more;){let d=e.doc.lineAt(a).length;o.length&&o.push(null);let h=i.heights[i.index++],u=0;h<0&&(u=-h,h=i.heights[i.index++]),l==-1?l=h:Math.abs(h-l)>=dd&&(l=-2);let f=new gr(d,h,u);f.outdated=!1,o.push(f),a+=d+1}a<=s&&o.push(null,new n(s-a).updateHeight(e,a));let c=Un.of(o);return(l<0||Math.abs(c.height-this.height)>=dd||Math.abs(l-this.heightMetrics(e,t).perLine)>=dd)&&(Vo=!0),xd(this,c)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},nm=class extends Un{constructor(e,t,r){super(e.length+t+r.length,e.height+r.height,t|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,t,r,i){let s=r+this.left.height;return ea))return c;let d=t==ct.ByPosNoHeight?ct.ByPosNoHeight:ct.ByPos;return l?c.join(this.right.lineAt(a,d,r,o,a)):this.left.lineAt(a,d,r,i,s).join(c)}forEachLine(e,t,r,i,s,o){let a=i+this.left.height,l=s+this.left.length+this.break;if(this.break)e=l&&this.right.forEachLine(e,t,r,a,l,o);else{let c=this.lineAt(l,ct.ByPos,r,i,s);e=e&&c.from<=t&&o(c),t>c.to&&this.right.forEachLine(c.to+1,t,r,a,l,o)}}replace(e,t,r){let i=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-i,t-i,r));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let a of r)s.push(a);if(e>0&&RS(s,o-1),t=r&&t.push(null)),e>r&&this.right.decomposeLeft(e-r,t)}decomposeRight(e,t){let r=this.left.length,i=r+this.break;if(e>=i)return this.right.decomposeRight(e-i,t);e2*t.size||t.size>2*e.size?Un.of(this.break?[e,null,t]:[e,t]):(this.left=xd(this.left,e),this.right=xd(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,r=!1,i){let{left:s,right:o}=this,a=t+s.length+this.break,l=null;return i&&i.from<=t+s.length&&i.more?l=s=s.updateHeight(e,t,r,i):s.updateHeight(e,t,r),i&&i.from<=a+o.length&&i.more?l=o=o.updateHeight(e,a,r,i):o.updateHeight(e,a,r),l?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function RS(n,e){let t,r;n[e]==null&&(t=n[e-1])instanceof Ui&&(r=n[e+1])instanceof Ui&&n.splice(e-1,3,new Ui(t.length+1+r.length))}var f2=5,rm=class n{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let r=Math.min(t,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof gr?i.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new gr(r-this.pos,-1,0)),this.writtenTo=r,t>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,r){if(e=f2)&&this.addLineDeco(i,s,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new gr(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let r=new Ui(t-e);return this.oracle.doc.lineAt(e).to==t&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof gr)return e;let t=new gr(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,r){let i=this.ensureLine();i.length+=r,i.collapsed+=r,i.widgetHeight=Math.max(i.widgetHeight,e),i.breaks+=t,this.writtenTo=this.pos=this.pos+r}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof gr)&&!this.isCovered?this.nodes.push(new gr(0,-1,0)):(this.writtenTod.clientHeight||d.scrollWidth>d.clientWidth)&&h.overflow!="visible"){let u=d.getBoundingClientRect();s=Math.max(s,u.left),o=Math.min(o,u.right),a=Math.max(a,u.top),l=Math.min(c==n.parentNode?i.innerHeight:l,u.bottom)}c=h.position=="absolute"||h.position=="fixed"?d.offsetParent:d.parentNode}else if(c.nodeType==11)c=c.host;else break;return{left:s-t.left,right:Math.max(s,o)-t.left,top:a-(t.top+e),bottom:Math.max(a,l)-(t.top+e)}}function g2(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left0&&e.top0}function O2(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var rl=class{constructor(e,t,r,i){this.from=e,this.to=t,this.size=r,this.displaySize=i}static same(e,t){if(e.length!=t.length)return!1;for(let r=0;rtypeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new em(r),this.stateDeco=LS(t),this.heightMap=Un.empty().applyChanges(this.stateDeco,De.empty,this.heightOracle.setDoc(t.doc),[new zr(0,0,0,t.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=J.set(this.lineGaps.map(i=>i.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let r=0;r<=1;r++){let i=r?t.head:t.anchor;if(!e.some(({from:s,to:o})=>i>=s&&i<=o)){let{from:s,to:o}=this.lineBlockAt(i);e.push(new Lo(s,o))}}return this.viewports=e.sort((r,i)=>r.from-i.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?MS:new om(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(qa(e,this.scaler))})}update(e,t=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=LS(this.state);let i=e.changedRanges,s=zr.extendWithRanges(i,p2(r,this.stateDeco,e?e.changes:On.empty(this.state.doc.length))),o=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);ES(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||Vo)&&(e.flags|=2),a?(this.scrollAnchorPos=e.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let l=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,t));let c=l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Sv)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,r=window.getComputedStyle(t),i=this.heightOracle,s=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?qe.RTL:qe.LTR;let o=this.heightOracle.mustRefreshForWrapping(s)||this.mustMeasureContent==="refresh",a=t.getBoundingClientRect(),l=o||this.mustMeasureContent||this.contentDOMHeight!=a.height;this.contentDOMHeight=a.height,this.mustMeasureContent=!1;let c=0,d=0;if(a.width&&a.height){let{scaleX:k,scaleY:w}=ev(t,a);(k>.005&&Math.abs(this.scaleX-k)>.005||w>.005&&Math.abs(this.scaleY-w)>.005)&&(this.scaleX=k,this.scaleY=w,c|=16,o=l=!0)}let h=(parseInt(r.paddingTop)||0)*this.scaleY,u=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=h||this.paddingBottom!=u)&&(this.paddingTop=h,this.paddingBottom=u,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(i.lineWrapping&&(l=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let f=tv(this.view.contentDOM,!1).y;f!=this.scrollParent&&(this.scrollParent=f,this.scrollAnchorHeight=-1,this.scrollOffset=0);let m=this.getScrollOffset();this.scrollOffset!=m&&(this.scrollAnchorHeight=-1,this.scrollOffset=m),this.scrolledToBottom=sv(this.scrollParent||e.win);let O=(this.printing?O2:m2)(t,this.paddingTop),S=O.top-this.pixelViewport.top,x=O.bottom-this.pixelViewport.bottom;this.pixelViewport=O;let D=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(D!=this.inView&&(this.inView=D,D&&(l=!0)),!this.inView&&!this.scrollTarget&&!g2(e.dom))return 0;let M=a.width;if((this.contentDOMWidth!=M||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=a.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),l){let k=e.docView.measureVisibleLineHeights(this.viewport);if(i.mustRefreshForHeights(k)&&(o=!0),o||i.lineWrapping&&Math.abs(M-this.contentDOMWidth)>i.charWidth){let{lineHeight:w,charWidth:R,textHeight:X}=e.docView.measureTextSize();o=w>0&&i.refresh(s,w,R,X,Math.max(5,M/R),k),o&&(e.docView.minWidth=0,c|=16)}S>0&&x>0?d=Math.max(S,x):S<0&&x<0&&(d=Math.min(S,x)),ES();for(let w of this.viewports){let R=w.from==this.viewport.from?k:e.docView.measureVisibleLineHeights(w);this.heightMap=(o?Un.empty().applyChanges(this.stateDeco,De.empty,this.heightOracle,[new zr(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(i,0,o,new tm(w.from,R))}Vo&&(c|=2)}let Z=!this.viewportIsAppropriate(this.viewport,d)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return Z&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(d,this.scrollTarget),c|=this.updateForViewport()),(c&2||Z)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),i=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:a}=this,l=new Lo(i.lineAt(o-r*1e3,ct.ByHeight,s,0,0).from,i.lineAt(a+(1-r)*1e3,ct.ByHeight,s,0,0).to);if(t){let{head:c}=t.range;if(cl.to){let d=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),h=i.lineAt(c,ct.ByPos,s,0,0),u;t.y=="center"?u=(h.top+h.bottom)/2-d/2:t.y=="start"||t.y=="nearest"&&c=a+Math.max(10,Math.min(r,250)))&&i>o-2*1e3&&s>1,o=i<<1;if(this.defaultTextDirection!=qe.LTR&&!r)return[];let a=[],l=(d,h,u,f)=>{if(h-dd&&xx.from>=u.from&&x.to<=u.to&&Math.abs(x.from-d)x.fromD));if(!S){if(hM.from<=h&&M.to>=h)){let M=t.moveToLineBoundary(z.cursor(h),!1,!0).head;M>d&&(h=M)}let x=this.gapSize(u,d,h,f),D=r||x<2e6?x:2e6;S=new rl(d,h,x,D)}a.push(S)},c=d=>{if(d.length2e6)for(let w of e)w.from>=d.from&&w.fromd.from&&l(d.from,f,d,h),mt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let r=[];$e.spans(t,this.viewport.from,this.viewport.to,{span(s,o){r.push({from:s,to:o})},point(){}},20);let i=0;if(r.length!=this.visibleRanges.length)i=12;else for(let s=0;s=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||qa(this.heightMap.lineAt(e,ct.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||qa(this.heightMap.lineAt(this.scaler.fromDOM(e),ct.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop*this.scaleY:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return qa(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},Lo=class{constructor(e,t){this.from=e,this.to=t}};function b2(n,e,t){let r=[],i=n,s=0;return $e.spans(t,n,e,{span(){},point(o,a){o>i&&(r.push({from:i,to:o}),s+=o-i),i=a}},20),i=1)return e[e.length-1].to;let r=Math.floor(n*t);for(let i=0;;i++){let{from:s,to:o}=e[i],a=o-s;if(r<=a)return s+r;r-=a}}function id(n,e){let t=0;for(let{from:r,to:i}of n.ranges){if(e<=i){t+=e-r;break}t+=i-r}return t/n.total}function y2(n,e){for(let t of n)if(e(t))return t}var MS={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function LS(n){let e=n.facet(Rd).filter(r=>typeof r!="function"),t=n.facet(Tm).filter(r=>typeof r!="function");return t.length&&e.push($e.join(t)),e}var om=class n{constructor(e,t,r){let i=0,s=0,o=0;this.viewports=r.map(({from:a,to:l})=>{let c=t.lineAt(a,ct.ByPos,e,0,0).top,d=t.lineAt(l,ct.ByPos,e,0,0).bottom;return i+=d-c,{from:a,to:l,top:c,bottom:d,domTop:0,domBottom:0}}),this.scale=(7e6-i)/(t.height-i);for(let a of this.viewports)a.domTop=o+(a.top-s)*this.scale,o=a.domBottom=a.domTop+(a.bottom-a.top),s=a.bottom}toDOM(e){for(let t=0,r=0,i=0;;t++){let s=tt.from==e.viewports[r].from&&t.to==e.viewports[r].to):!1}};function qa(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),r=e.toDOM(n.bottom);return new Xr(n.from,n.length,t,r-t,Array.isArray(n._content)?n._content.map(i=>qa(i,e)):n._content)}var sd=oe.define({combine:n=>n.join(" ")}),am=oe.define({combine:n=>n.indexOf(!0)>-1}),lm=mr.newName(),Wv=mr.newName(),Nv=mr.newName(),Bv={"&light":"."+Wv,"&dark":"."+Nv};function cm(n,e,t){return new mr(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,i=>{if(i=="&")return n;if(!t||!t[i])throw new RangeError(`Unsupported selector: ${i}`);return t[i]}):n+" "+r}})}var S2=cm("."+lm,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{userSelect:"none",position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},".cm-panels-top":{top:"0"},".cm-panels-bottom":{bottom:"0"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{background:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 0) no-repeat",backgroundSize:".4em",backgroundPosition:"calc(min(50%, 0px)) center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Bv),v2={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},xp=ae.ie&&ae.ie_version<=11,dm=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Rp,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let r of t)this.queue.push(r);(ae.ie&&ae.ie_version<=11||ae.ios&&e.composing)&&t.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&ae.android&&e.constructor.EDIT_CONTEXT!==!1&&!(ae.chrome&&ae.chrome_version<126)&&(this.editContext=new hm(e),e.state.facet(xi)&&(e.contentDOM.editContext=this.editContext.editContext)),xp&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,r)=>t!=e[r]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,i=this.selectionRange;if(r.state.facet(xi)?r.root.activeElement!=this.dom:!Ha(this.dom,i))return;let s=i.anchorNode&&r.docView.tile.nearest(i.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(ae.ie&&ae.ie_version<=11||ae.android&&ae.chrome)&&!r.state.selection.main.empty&&i.focusNode&&Ka(i.focusNode,i.focusOffset,i.anchorNode,i.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=ll(e.root);if(!t)return!1;let r=ae.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&w2(this.view,t)||t;if(!r||this.selectionRange.eq(r))return!1;let i=Ha(this.dom,r);return i&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&Xo(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(i)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,r=-1,i=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(i=!0),t==-1?{from:t,to:r}=o:(t=Math.min(o.from,t),r=Math.max(o.to,r)))}return{from:t,to:r,typeOver:i}}readChange(){let{from:e,to:t,typeOver:r}=this.processRecords(),i=this.selectionChanged&&Ha(this.dom,this.selectionRange);if(e<0&&!i)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new Gp(this.view,e,t,r);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let r=this.view.state,i=_v(this.view,t);return this.view.state==r&&(t.domChanged||t.newSel&&!wd(this.view.state.selection,t.newSel.main))&&this.view.update([]),i}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let r=DS(t,e.previousSibling||e.target.previousSibling,-1),i=DS(t,e.nextSibling||e.target.nextSibling,1);return{from:r?t.posAfter(r):t.posAtStart,to:i?t.posBefore(i):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(xi)!=e.state.facet(xi)&&(e.view.contentDOM.editContext=e.state.facet(xi)?this.editContext.editContext:null))}destroy(){var e,t,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let i of this.scrollTargets)i.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function DS(n,e,t){for(;e;){let r=mt.get(e);if(r&&r.parent==n)return r;let i=e.parentNode;e=i!=n.dom?i:t>0?e.nextSibling:e.previousSibling}return null}function ZS(n,e){let t=e.startContainer,r=e.startOffset,i=e.endContainer,s=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return Ka(o.node,o.offset,i,s)&&([t,r,i,s]=[i,s,t,r]),{anchorNode:t,anchorOffset:r,focusNode:i,focusOffset:s}}function w2(n,e){if(e.getComposedRanges){let i=e.getComposedRanges(n.root)[0];if(i)return ZS(n,i)}let t=null;function r(i){i.preventDefault(),i.stopImmediatePropagation(),t=i.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",r,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",r,!0),t?ZS(n,t):null}var hm=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let i=e.state.selection.main,{anchor:s,head:o}=i,a=this.toEditorPos(r.updateRangeStart),l=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:a,drifted:!1});let c=l-a>r.text.length;a==this.from&&sthis.to&&(l=s);let d=Ev(e.state.sliceDoc(a,l),r.text,(c?i.from:i.to)-a,c?"end":null);if(!d){let u=z.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));wd(u,i)||e.dispatch({selection:u,userEvent:"select"});return}let h={from:d.from+a,to:d.toA+a,insert:De.of(r.text.slice(d.from,d.toB).split(` -`))};if((ae.mac||ae.android)&&h.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(h={from:a,to:l,insert:De.of([r.text.replace("."," ")])}),this.pendingContextChange=h,!e.state.readOnly){let u=this.to-this.from+(h.to-h.from+h.insert.length);Cm(e,h,z.single(this.toEditorPos(r.selectionStart,u),this.toEditorPos(r.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),h.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let i=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o{let i=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{let i=ll(r.root);i&&i.rangeCount&&this.editContext.updateSelectionBounds(i.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,i=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let d=c.length-(o-s);if(i&&o>=i.to)if(i.from==s&&i.to==o&&i.insert.eq(c)){i=this.pendingContextChange=null,t+=d,this.to+=d;return}else i=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=d,this.to+=d;else if(sthis.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=d}t+=d}),i&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(i=>!i.isUserEvent("input.type")&&i.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),i=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=i)&&this.editContext.updateSelection(r,i)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},F=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(i=>i.forEach(s=>r(s,this)))||(i=>this.update(i)),this.dispatch=this.dispatch.bind(this),this._root=e.root||m_(e.parent)||document,this.viewState=new kd(this,e.state||Me.create(e)),e.scrollTo&&e.scrollTo.is(ed)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Mo).map(i=>new el(i));for(let i of this.plugins)i.update(this);this.observer=new dm(this),this.inputState=new Hp(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Sd(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof ut?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,r=!1,i,s=this.state;for(let u of e){if(u.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=u.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,a=0,l=null;e.some(u=>u.annotation(Iv))?(this.inputState.notifiedFocused=o,a=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,l=Xv(s,o),l||(a=1));let c=this.observer.delayedAndroidKey,d=null;if(c?(this.observer.clearDelayedAndroidKey(),d=this.observer.readChange(),(d&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(d=null)):this.observer.clear(),s.facet(Me.phrases)!=this.state.facet(Me.phrases))return this.setState(s);i=bd.create(this,s,e),i.flags|=a;let h=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(h&&(h=h.map(u.changes)),u.scrollIntoView){let{main:f}=u.state.selection,{x:m,y:O}=this.state.facet(n.cursorScrollMargin);h=new Ja(f.empty?f:z.cursor(f.head,f.head>f.anchor?-1:1),"nearest","nearest",O,m)}for(let f of u.effects)f.is(ed)&&(h=f.value.clip(this.state))}this.viewState.update(i,h),this.bidiCache=$d.update(this.bidiCache,i.changes),i.empty||(this.updatePlugins(i),this.inputState.update(i)),t=this.docView.update(i),this.state.facet(Ua)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(i.startState.facet(sd)!=i.state.facet(sd)&&(this.viewState.mustMeasureContent=!0),(t||r||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!i.empty)for(let u of this.state.facet(Zp))try{u(i)}catch(f){jn(this.state,f,"update listener")}(l||d)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),d&&!_v(this,d)&&c.force&&Xo(this.contentDOM,c.key,c.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new kd(this,e),this.plugins=e.facet(Mo).map(r=>new el(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new Sd(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Mo),r=e.state.facet(Mo);if(t!=r){let i=[];for(let s of r){let o=t.indexOf(s);if(o<0)i.push(new el(s));else{let a=this.plugins[o];a.mustUpdate=e,i.push(a)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=i,this.pluginMap.clear()}else for(let i of this.plugins)i.mustUpdate=e;for(let i=0;i-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,r=this.viewState.scrollParent,i=this.viewState.getScrollOffset(),{scrollAnchorPos:s,scrollAnchorHeight:o,scaleY:a}=this.viewState;Math.abs(i-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0){if(sv(r||this.win))s=-1,o=this.viewState.heightMap.height/this.viewState.scaleY;else{let m=this.viewState.scrollAnchorAt(i);s=m.from,o=m.top}a=this.viewState.scaleY}this.updateState=1;let c=this.viewState.measure();if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(m=>{try{return m.read(this)}catch(O){return jn(this.state,O),IS}}),u=bd.create(this,this.state,[]),f=!1;u.flags|=c,t?t.flags|=c:t=u,this.updateState=2,u.empty||(this.updatePlugins(u),this.inputState.update(u),this.updateAttrs(),f=this.docView.update(u),f&&this.docViewUpdate());for(let m=0;m1||O<-1)&&!(ae.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(r==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){i=i+O,r?s<0?r.scrollTop=r.scrollHeight:r.scrollTop+=O:this.win.scrollBy(0,O),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Zp))l(t)}get themeClasses(){return lm+" "+(this.state.facet(am)?Nv:Wv)+" "+this.state.facet(sd)}updateAttrs(){let e=XS(this,xv,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(xi)?"true":"false",class:"cm-content",style:`${ae.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),XS(this,Qm,t);let r=this.observer.ignore(()=>{let i=OS(this.contentDOM,this.contentAttrs,t),s=OS(this.dom,this.editorAttrs,e);return i||s});return this.editorAttrs=e,this.contentAttrs=t,r}showAnnouncements(e){let t=!0;for(let r of e)for(let i of r.effects)if(i.is(n.announce)){t&&(this.announceDOM.textContent=""),t=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=i.value}}mountStyles(){this.styleModules=this.state.facet(Ua);let e=this.state.facet(n.cspNonce);mr.mount(this.root,this.styleModules.concat(S2).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;tr.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,r){return wp(this,e,xS(this,e,t,r))}moveByGroup(e,t){return wp(this,e,xS(this,e,t,r=>V_(this,e.head,r)))}visualLineSide(e,t){let r=this.bidiSpans(e),i=this.textDirectionAt(e.from),s=r[t?r.length-1:0];return z.cursor(s.side(t,i)+e.from,s.forward(!t,i)?1:-1)}moveToLineBoundary(e,t,r=!0){return B_(this,e,t,r)}moveVertically(e,t,r){return wp(this,e,F_(this,e,t,r))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let r=jp(this,e,t);return r&&r.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),jp(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let r=this.state.doc.lineAt(e),i=this.bidiSpans(r),s=i[br.find(i,e-r.from,-1,t)];return this.docView.coordsAt(e,t,s.dir==qe.RTL)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(yv)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>x2)return hv(e.length);let t=this.textDirectionAt(e.from),r;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||dv(s.isolates,r=SS(this,e))))return s.order;r||(r=SS(this,e));let i=x_(e.text,t,r);return this.bidiCache.push(new $d(e.from,e.to,t,r,!0,i)),i}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||ae.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{iv(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){var r,i,s,o;return ed.of(new Ja(typeof e=="number"?z.cursor(e):e,(r=t.y)!==null&&r!==void 0?r:"nearest",(i=t.x)!==null&&i!==void 0?i:"nearest",(s=t.yMargin)!==null&&s!==void 0?s:5,(o=t.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return ed.of(new Ja(z.cursor(r.from),"start","start",r.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return it.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return it.define(()=>({}),{eventObservers:e})}static theme(e,t){let r=mr.newName(),i=[sd.of(r),Ua.of(cm(`.${r}`,e))];return t&&t.dark&&i.push(am.of(!0)),i}static baseTheme(e){return pr.lowest(Ua.of(cm("."+lm,e,Bv)))}static findFromDOM(e){var t;let r=e.querySelector(".cm-content"),i=r&&mt.get(r)||mt.get(e);return((t=i==null?void 0:i.root)===null||t===void 0?void 0:t.view)||null}};F.styleModule=Ua;F.inputHandler=Ov;F.clipboardInputFilter=km;F.clipboardOutputFilter=$m;F.scrollHandler=vv;F.focusChangeEffect=bv;F.perLineTextDirection=yv;F.exceptionSink=gv;F.updateListener=Zp;F.editable=xi;F.mouseSelectionStyle=mv;F.dragMovesSelection=pv;F.clickAddsSelectionRange=fv;F.decorations=Rd;F.blockWrappers=Pv;F.outerDecorations=Tm;F.atomicRanges=ul;F.bidiIsolatedRanges=kv;F.cursorScrollMargin=oe.define({combine:n=>{let e=5,t=5;for(let r of n)typeof r=="number"?e=t=r:{x:e,y:t}=r;return{x:e,y:t}}});F.scrollMargins=$v;F.darkTheme=am;F.cspNonce=oe.define({combine:n=>n.length?n[0]:""});F.contentAttributes=Qm;F.editorAttributes=xv;F.lineWrapping=F.contentAttributes.of({class:"cm-lineWrapping"});F.announce=ye.define();var x2=4096,IS={},$d=class n{constructor(e,t,r,i,s,o){this.from=e,this.to=t,this.dir=r,this.isolates=i,this.fresh=s,this.order=o}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let r=[],i=e.length?e[e.length-1].dir:qe.LTR;for(let s=Math.max(0,e.length-10);s=0;i--){let s=r[i],o=typeof s=="function"?s(n):s;o&&wm(o,t)}return t}var P2=ae.mac?"mac":ae.windows?"win":ae.linux?"linux":"key";function k2(n,e){let t=n.split(/-(?!$)/),r=t[t.length-1];r=="Space"&&(r=" ");let i,s,o,a;for(let l=0;lr.concat(i),[]))),t}function Fv(n,e,t){return Yv(Vv(n.state),e,n,t)}var ji=null,Q2=4e3;function T2(n,e=P2){let t=Object.create(null),r=Object.create(null),i=(o,a)=>{let l=r[o];if(l==null)r[o]=a;else if(l!=a)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},s=(o,a,l,c,d)=>{var h,u;let f=t[o]||(t[o]=Object.create(null)),m=a.split(/ (?!$)/).map(x=>k2(x,e));for(let x=1;x{let Z=ji={view:M,prefix:D,scope:o};return setTimeout(()=>{ji==Z&&(ji=null)},Q2),!0}]})}let O=m.join(" ");i(O,!1);let S=f[O]||(f[O]={preventDefault:!1,stopPropagation:!1,run:((u=(h=f._any)===null||h===void 0?void 0:h.run)===null||u===void 0?void 0:u.slice())||[]});l&&S.run.push(l),c&&(S.preventDefault=!0),d&&(S.stopPropagation=!0)};for(let o of n){let a=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let c of a){let d=t[c]||(t[c]=Object.create(null));d._any||(d._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:h}=o;for(let u in d)d[u].run.push(f=>h(f,um))}let l=o[e]||o.key;if(l)for(let c of a)s(c,l,o.run,o.preventDefault,o.stopPropagation),o.shift&&s(c,"Shift-"+l,o.shift,o.preventDefault,o.stopPropagation)}return t}var um=null;function Yv(n,e,t,r){um=e;let i=uS(e),s=Ir(i,0),o=Yi(s)==i.length&&i!=" ",a="",l=!1,c=!1,d=!1;ji&&ji.view==t&&ji.scope==r&&(a=ji.prefix+" ",Mv.indexOf(e.keyCode)<0&&(c=!0,ji=null));let h=new Set,u=S=>{if(S){for(let x of S.run)if(!h.has(x)&&(h.add(x),x(t)))return S.stopPropagation&&(d=!0),!0;S.preventDefault&&(S.stopPropagation&&(d=!0),c=!0)}return!1},f=n[r],m,O;return f&&(u(f[a+od(i,e,!o)])?l=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(ae.windows&&e.ctrlKey&&e.altKey)&&!(ae.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(m=wi[e.keyCode])&&m!=i?(u(f[a+od(m,e,!0)])||e.shiftKey&&(O=Eo[e.keyCode])!=i&&O!=m&&u(f[a+od(O,e,!1)]))&&(l=!0):o&&e.shiftKey&&u(f[a+od(i,e,!0)])&&(l=!0),!l&&u(f._any)&&(l=!0)),c&&(l=!0),l&&d&&e.stopPropagation(),um=null,l}var Ws=class n{constructor(e,t,r,i,s){this.className=e,this.left=t,this.top=r,this.width=i,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,r){if(r.empty){let i=e.coordsAtPos(r.head,r.assoc||1);if(!i)return[];let s=jv(e);return[new n(t,i.left-s.left,i.top-s.top,null,i.bottom-i.top)]}else return A2(e,t,r)}};function jv(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==qe.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function WS(n,e,t,r){let i=n.coordsAtPos(e,t*2);if(!i)return r;let s=n.dom.getBoundingClientRect(),o=(i.top+i.bottom)/2,a=n.posAtCoords({x:s.left+1,y:o}),l=n.posAtCoords({x:s.right-1,y:o});return a==null||l==null?r:{from:Math.max(r.from,Math.min(a,l)),to:Math.min(r.to,Math.max(a,l))}}function A2(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let r=Math.max(t.from,n.viewport.from),i=Math.min(t.to,n.viewport.to),s=n.textDirection==qe.LTR,o=n.contentDOM,a=o.getBoundingClientRect(),l=jv(n),c=o.querySelector(".cm-line"),d=c&&window.getComputedStyle(c),h=a.left+(d?parseInt(d.paddingLeft)+Math.min(0,parseInt(d.textIndent)):0),u=a.right-(d?parseInt(d.paddingRight):0),f=Yp(n,r,1),m=Yp(n,i,-1),O=f.type==Ht.Text?f:null,S=m.type==Ht.Text?m:null;if(O&&(n.lineWrapping||f.widgetLineBreaks)&&(O=WS(n,r,1,O)),S&&(n.lineWrapping||m.widgetLineBreaks)&&(S=WS(n,i,-1,S)),O&&S&&O.from==S.from&&O.to==S.to)return D(M(t.from,t.to,O));{let k=O?M(t.from,null,O):Z(f,!1),w=S?M(null,t.to,S):Z(m,!0),R=[];return(O||f).to<(S||m).from-(O&&S?1:0)||f.widgetLineBreaks>1&&k.bottom+n.defaultLineHeight/2q&&ve.from=B)break;Qe>we&&de(Math.max(Pe,we),k==null&&Pe<=q,Math.min(Qe,B),w==null&&Qe>=pe,G.dir)}if(we=ue.to+1,we>=B)break}return ne.length==0&&de(q,k==null,pe,w==null,n.textDirection),{top:X,bottom:W,horizontal:ne}}function Z(k,w){let R=a.top+(w?k.top:k.bottom);return{top:R,bottom:R,horizontal:[]}}}function C2(n,e){return n.constructor==e.constructor&&n.eq(e)}var fm=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(hd)!=e.state.facet(hd)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,r=e.facet(hd);for(;t!C2(t,this.drawn[r]))){let t=this.dom.firstChild,r=0;for(let i of e)i.update&&t&&i.constructor&&this.drawn[r].constructor&&i.update(t,this.drawn[r])?(t=t.nextSibling,r++):this.dom.insertBefore(i.draw(),t);for(;t;){let i=t.nextSibling;t.remove(),t=i}this.drawn=e,ae.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},hd=oe.define();function Uv(n){return[it.define(e=>new fm(e,n)),hd.of(n)]}var Fo=oe.define({combine(n){return Yn(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function Ld(n={}){return[Fo.of(n),_2,E2,M2,Sv.of(!0)]}function qv(n){return n.startState.facet(Fo)!=n.state.facet(Fo)}var _2=Uv({above:!0,markers(n){let{state:e}=n,t=e.facet(Fo),r=[];for(let i of e.selection.ranges){let s=i==e.selection.main;if(i.empty||t.drawRangeCursor&&!(s&&ae.ios&&t.iosSelectionHandles)){let o=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",a=i.empty?i:z.cursor(i.head,i.assoc);for(let l of Ws.forRange(n,o,a))r.push(l)}}return r},update(n,e){n.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=qv(n);return t&&NS(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){NS(e.state,n)},class:"cm-cursorLayer"});function NS(n,e){e.style.animationDuration=n.facet(Fo).cursorBlinkRate+"ms"}var E2=Uv({above:!1,markers(n){let e=[],{main:t,ranges:r}=n.state.selection;for(let i of r)if(!i.empty)for(let s of Ws.forRange(n,"cm-selectionBackground",i))e.push(s);if(ae.ios&&!t.empty&&n.state.facet(Fo).iosSelectionHandles){for(let i of Ws.forRange(n,"cm-selectionHandle cm-selectionHandle-start",z.cursor(t.from,1)))e.push(i);for(let i of Ws.forRange(n,"cm-selectionHandle cm-selectionHandle-end",z.cursor(t.to,1)))e.push(i)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||qv(n)},class:"cm-selectionLayer"}),R2=ae.gecko&&ae.gecko_version==153?"#ffffff01":"transparent",M2=pr.highest(F.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`${R2} !important`},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Gv=ye.define({map(n,e){return n==null?null:e.mapPos(n)}}),Ga=Xe.define({create(){return null},update(n,e){return n!=null&&(n=e.changes.mapPos(n)),e.effects.reduce((t,r)=>r.is(Gv)?r.value:t,n)}}),L2=it.fromClass(class{constructor(n){this.view=n,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(n){var e;let t=n.state.field(Ga);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(n.startState.field(Ga)!=t||n.docChanged||n.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:n}=this,e=n.state.field(Ga),t=e!=null&&n.coordsAtPos(e);if(!t)return null;let r=n.scrollDOM.getBoundingClientRect();return{left:t.left-r.left+n.scrollDOM.scrollLeft*n.scaleX,top:t.top-r.top+n.scrollDOM.scrollTop*n.scaleY,height:t.bottom-t.top}}drawCursor(n){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;n?(this.cursor.style.left=n.left/e+"px",this.cursor.style.top=n.top/t+"px",this.cursor.style.height=n.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(n){this.view.state.field(Ga)!=n&&this.view.dispatch({effects:Gv.of(n)})}},{eventObservers:{dragover(n){this.setDropPos(this.view.posAtCoords({x:n.clientX,y:n.clientY}))},dragleave(n){(n.target==this.view.contentDOM||!this.view.contentDOM.contains(n.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Hv(){return[Ga,L2]}function BS(n,e,t,r,i){e.lastIndex=0;for(let s=n.iterRange(t,r),o=t,a;!s.next().done;o+=s.value.length)if(!s.lineBreak)for(;a=e.exec(s.value);)i(o+a.index,a)}function D2(n,e){let t=n.visibleRanges;if(t.length==1&&t[0].from==n.viewport.from&&t[0].to==n.viewport.to)return t;let r=[];for(let{from:i,to:s}of t)i=Math.max(n.state.doc.lineAt(i).from,i-e),s=Math.min(n.state.doc.lineAt(s).to,s+e),r.length&&r[r.length-1].to>=i?r[r.length-1].to=s:r.push({from:i,to:s});return r}var dl=class{constructor(e){let{regexp:t,decoration:r,decorate:i,boundary:s,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,i)this.addMatch=(a,l,c,d)=>i(d,c,c+a[0].length,a,l);else if(typeof r=="function")this.addMatch=(a,l,c,d)=>{let h=r(a,l,c);h&&d(c,c+a[0].length,h)};else if(r)this.addMatch=(a,l,c,d)=>d(c,c+a[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=o}createDeco(e){let t=new Zr,r=t.add.bind(t);for(let{from:i,to:s}of D2(e,this.maxLength))BS(e.state.doc,this.regexp,i,s,(o,a)=>this.addMatch(a,e,o,r));return t.finish()}updateDeco(e,t){let r=1e9,i=-1;return e.docChanged&&e.changes.iterChanges((s,o,a,l)=>{l>=e.view.viewport.from&&a<=e.view.viewport.to&&(r=Math.min(a,r),i=Math.max(l,i))}),e.viewportMoved||i-r>1e3?this.createDeco(e.view):i>-1?this.updateRange(e.view,t.map(e.changes),r,i):t}updateRange(e,t,r,i){for(let s of e.visibleRanges){let o=Math.max(s.from,r),a=Math.min(s.to,i);if(a>=o){let l=e.state.doc.lineAt(o),c=l.tol.from;o--)if(this.boundary.test(l.text[o-1-l.from])){d=o;break}for(;au.push(x.range(O,S));if(l==c)for(this.regexp.lastIndex=d-l.from;(f=this.regexp.exec(l.text))&&f.indexthis.addMatch(S,e,O,m));t=t.update({filterFrom:d,filterTo:h,filter:(O,S)=>Oh,add:u})}}return t}},pm=/x/.unicode!=null?"gu":"g",Z2=new RegExp(`[\0-\b --\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,pm),I2={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},Pp=null;function X2(){var n;if(Pp==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Pp=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return Pp||!1}var ud=oe.define({combine(n){let e=Yn(n,{render:null,specialChars:Z2,addSpecialChars:null});return(e.replaceTabs=!X2())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,pm)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,pm)),e}});function Kv(n={}){return[ud.of(n),z2()]}var VS=null;function z2(){return VS||(VS=it.fromClass(class{constructor(n){this.view=n,this.decorations=J.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(ud)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new dl({regexp:n.specialChars,decoration:(e,t,r)=>{let{doc:i}=t.state,s=Ir(e[0],0);if(s==9){let o=i.lineAt(r),a=t.state.tabSize,l=Gt(o.text,a,r-o.from);return J.replace({widget:new gm((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=J.replace({widget:new mm(n,s)}))},boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(ud);n.startState.facet(ud)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(n.view)):this.decorations=this.decorator.updateDeco(n,this.decorations)}},{decorations:n=>n.decorations}))}var W2="\u2022";function N2(n){return n>=32?W2:n==10?"\u2424":String.fromCharCode(9216+n)}var mm=class extends Ct{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=N2(this.code),r=e.state.phrase("Control character")+" "+(I2[this.code]||"0x"+this.code.toString(16)),i=this.options.render&&this.options.render(this.code,r,t);if(i)return i;let s=document.createElement("span");return s.textContent=t,s.title=r,s.setAttribute("aria-label",r),s.className="cm-specialChar",s}ignoreEvent(){return!1}},gm=class extends Ct{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function Dd(){return V2}var B2=J.line({class:"cm-activeLine"}),V2=it.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let r of n.state.selection.ranges){let i=n.lineBlockAt(r.head);i.from>e&&(t.push(B2.range(i.from)),e=i.from)}return J.set(t)}},{decorations:n=>n.decorations});var Om=2e3;function F2(n,e,t){let r=Math.min(e.line,t.line),i=Math.max(e.line,t.line),s=[];if(e.off>Om||t.off>Om||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=i;l++){let c=n.doc.line(l);c.length<=a&&s.push(z.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=i;l++){let c=n.doc.line(l),d=Kc(c.text,o,n.tabSize,!0);if(d<0)s.push(z.cursor(c.to));else{let h=Kc(c.text,a,n.tabSize);s.push(z.range(c.from+d,c.from+h))}}}return s}function Y2(n,e){let t=n.coordsAtPos(n.viewport.from);return t?Math.round(Math.abs((t.left-e)/n.defaultCharacterWidth)):-1}function FS(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),r=n.state.doc.lineAt(t),i=t-r.from,s=i>Om?-1:i==r.length?Y2(n,e.clientX):Gt(r.text,n.state.tabSize,t-r.from);return{line:r.number,col:s,off:i}}function j2(n,e){let t=FS(n,e),r=n.state.selection;return t?{update(i){if(i.docChanged){let s=i.changes.mapPos(i.startState.doc.line(t.line).from),o=i.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(i.changes)}},get(i,s,o){let a=FS(n,i);if(!a)return r;let l=F2(n.state,t,a);return l.length?o?z.create(l.concat(r.ranges)):z.create(l):r}}:null}function Zd(n){let e=(n==null?void 0:n.eventFilter)||(t=>t.altKey&&t.button==0);return F.mouseSelectionStyle.of((t,r)=>e(r)?j2(t,r):null)}var U2={Alt:[18,n=>!!n.altKey],Control:[17,n=>!!n.ctrlKey],Shift:[16,n=>!!n.shiftKey],Meta:[91,n=>!!n.metaKey]},q2={style:"cursor: crosshair"};function Id(n={}){let[e,t]=U2[n.key||"Alt"],r=it.fromClass(class{constructor(i){this.view=i,this.isDown=!1}set(i){this.isDown!=i&&(this.isDown=i,this.view.update([]))}},{eventObservers:{keydown(i){this.set(i.keyCode==e||t(i))},keyup(i){(i.keyCode==e||!t(i))&&this.set(!1)},mousemove(i){this.set(t(i))}}});return[r,F.contentAttributes.of(i=>{var s;return!((s=i.plugin(r))===null||s===void 0)&&s.isDown?q2:null})]}var ad="-10000px",Qd=class{constructor(e,t,r,i){this.facet=t,this.createTooltipView=r,this.removeTooltipView=i,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let s=null;this.tooltipViews=this.tooltips.map(o=>s=r(o,s))}update(e,t){var r;let i=e.state.facet(this.facet),s=i.filter(l=>l);if(i===this.input){for(let l of this.tooltipViews)l.update&&l.update(e);return!1}let o=[],a=t?[]:null;for(let l=0;lt[c]=l),t.length=a.length),this.input=i,this.tooltips=s,this.tooltipViews=o,!0}};function G2(n){let e=n.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}var kp=oe.define({combine:n=>{var e,t,r;return{position:ae.ios?"absolute":((e=n.find(i=>i.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(i=>i.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((r=n.find(i=>i.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||G2}}}),YS=new WeakMap,Jv=it.fromClass(class{constructor(n){this.view=n,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=n.state.facet(kp);this.position=e.position,this.parent=e.parent,this.classes=n.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Qd(n,_m,(t,r)=>this.createTooltip(t,r),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),n.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let n of this.manager.tooltipViews)this.intersectionObserver.observe(n.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(n){n.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(n,this.above);e&&this.observeIntersection();let t=e||n.geometryChanged,r=n.state.facet(kp);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let i of this.manager.tooltipViews)i.dom.style.position=this.position;t=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let i of this.manager.tooltipViews)this.container.appendChild(i.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(n,e){let t=n.create(this.view),r=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),n.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let i=document.createElement("div");i.className="cm-tooltip-arrow",t.dom.appendChild(i)}return t.dom.style.position=this.position,t.dom.style.top=ad,t.dom.style.left="0px",this.container.insertBefore(t.dom,r),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var n,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(n=r.destroy)===null||n===void 0||n.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let n=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(ae.safari){let o=s.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!s.offsetParent&&s.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(n=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:n,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),i=Am(this.view);return{visible:{left:r.left+i.left,top:r.top+i.top,right:r.right-i.right,bottom:r.bottom-i.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((s,o)=>{let a=this.manager.tooltipViews[o];return a.getCoords?a.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(kp).tooltipSpace(this.view),scaleX:n,scaleY:e,makeAbsolute:t}}writeMeasure(n){var e;if(n.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:t,space:r,scaleX:i,scaleY:s}=n,o=[];for(let a=0;a=Math.min(t.bottom,r.bottom)||h.rightMath.min(t.right,r.right)+.1)){d.style.top=ad;continue}let f=l.arrow?c.dom.querySelector(".cm-tooltip-arrow"):null,m=f?7:0,O=u.right-u.left,S=(e=YS.get(c))!==null&&e!==void 0?e:u.bottom-u.top,x=c.offset||K2,D=this.view.textDirection==qe.LTR,M=u.width>r.right-r.left?D?r.left:r.right-u.width:D?Math.max(r.left,Math.min(h.left-(f?14:0)+x.x,r.right-O)):Math.min(Math.max(r.left,h.left-O+(f?14:0)-x.x),r.right-O),Z=this.above[a];!l.strictSide&&(Z?h.top-S-m-x.yr.bottom)&&Z==r.bottom-h.bottom>h.top-r.top&&(Z=this.above[a]=!Z);let k=(Z?h.top-r.top:r.bottom-h.bottom)-m;if(kM&&X.topw&&(w=Z?X.top-S-2-m:X.bottom+m+2);if(this.position=="absolute"?(d.style.top=(w-n.parent.top)/s+"px",jS(d,(M-n.parent.left)/i)):(d.style.top=w/s+"px",jS(d,M/i)),f){let X=h.left+(D?x.x:-x.x)-(M+14-7);f.style.left=X/i+"px"}c.overlap!==!0&&o.push({left:M,top:w,right:R,bottom:w+S}),d.classList.toggle("cm-tooltip-above",Z),d.classList.toggle("cm-tooltip-below",!Z),c.positioned&&c.positioned(n.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let n of this.manager.tooltipViews)n.dom.style.top=ad}},{eventObservers:{scroll(){this.maybeMeasure()}}});function jS(n,e){let t=parseInt(n.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(n.style.left=e+"px")}var H2=F.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),K2={x:0,y:0},_m=oe.define({enables:[Jv,H2]}),Td=oe.define({combine:n=>n.reduce((e,t)=>e.concat(t),[])}),Ad=class n{static create(e){return new n(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Qd(e,Td,(t,r)=>this.createHostedView(t,r),t=>t.dom.remove())}createHostedView(e,t){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let r of this.manager.tooltipViews){let i=r[e];if(i!==void 0){if(t===void 0)t=i;else if(t!==i)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}},J2=_m.compute([Td],n=>{let e=n.facet(Td);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var r;return(r=t.end)!==null&&r!==void 0?r:t.pos})),create:Ad.create,above:e[0].above,arrow:e.some(t=>t.arrow)}}),eE=oe.define(),bm=class{constructor(e,t,r,i,s,o){this.view=e,this.source=t,this.field=r,this.locked=i,this.setHover=s,this.hoverTime=o,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(e){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;eo.bottom||t.xo.right+e.defaultCharacterWidth)return;let a=e.bidiSpans(e.state.doc.lineAt(i)).find(c=>c.from<=i&&c.to>=i),l=a&&a.dir==qe.RTL?-1:1;s=t.x{if(a&&!(Array.isArray(a)&&!a.length)){let l=Array.isArray(a)?a:[a];i&&this.locked.set(l,i),e.dispatch({effects:this.setHover.of(l)})}};if(s&&"then"in s){let a=this.pending={pos:t};s.then(l=>{this.pending==a&&(this.pending=null,o(l))},l=>jn(e.state,l,"hover tooltip"))}else o(s)}get tooltip(){let e=this.view.plugin(Jv),t=e?e.manager.tooltips.findIndex(r=>r.create==Ad.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:i,tooltip:s}=this;if(i.length&&!this.locked.has(i)&&s&&!tE(s.dom,e)||this.pending){let{pos:o}=i[0]||this.pending,a=(r=(t=i[0])===null||t===void 0?void 0:t.end)!==null&&r!==void 0?r:o;(o==a?this.view.posAtCoords(this.lastMove)!=o:!nE(this.view,o,a,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length&&!this.locked.has(t)){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=r=>{e.removeEventListener("mouseleave",t);let{active:i}=this;i.length&&!this.locked.has(i)&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}},ld=4;function tE(n,e){let{left:t,right:r,top:i,bottom:s}=n.getBoundingClientRect(),o;if(o=n.querySelector(".cm-tooltip-arrow")){let a=o.getBoundingClientRect();i=Math.min(a.top,i),s=Math.max(a.bottom,s)}return e.clientX>=t-ld&&e.clientX<=r+ld&&e.clientY>=i-ld&&e.clientY<=s+ld}function nE(n,e,t,r,i,s){let o=n.scrollDOM.getBoundingClientRect(),a=n.documentTop+n.documentPadding.top+n.contentHeight;if(o.left>r||o.righti||Math.min(o.bottom,a)=e&&l<=t}function ew(n,e={}){let t=ye.define(),r=new WeakMap,i=Xe.define({create(){return[]},update(o,a){let l=r.get(o);if(o.length&&(e.hideOnChange&&(a.docChanged||a.selection)?o=[]:l&&l(a)?o=[]:e.hideOn&&(o=o.filter(c=>!e.hideOn(a,c)))),a.docChanged&&o.length){let c=[];for(let d of o){let h=a.changes.mapPos(d.pos,-1,Xt.TrackDel);if(h!=null){let u=Object.assign(Object.create(null),d);u.pos=h,u.end!=null&&(u.end=a.changes.mapPos(u.end)),c.push(u)}}o=c}for(let c of a.effects)c.is(t)&&(o=c.value,l=void 0),(c.is(rE)&&!c.value||c.value==i)&&(o=[]);return o.length&&l&&r.set(o,l),o},provide:o=>Td.from(o)}),s=it.define(o=>new bm(o,n,i,r,t,e.hoverTime||300));return{active:i,extension:[i,s,eE.of(s),J2]}}var rE=ye.define();var US=oe.define({combine(n){let e,t;for(let r of n)e=e||r.topContainer,t=t||r.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Em(n,e){let t=n.plugin(tw),r=t?t.specs.indexOf(e):-1;return r>-1?t.panels[r]:null}var tw=it.fromClass(class{constructor(n){this.input=n.state.facet(hl),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(n));let e=n.state.facet(US);this.top=new Do(n,!0,e.topContainer),this.bottom=new Do(n,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(n){let e=n.state.facet(US);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Do(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Do(n.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=n.state.facet(hl);if(t!=this.input){let r=t.filter(l=>l),i=[],s=[],o=[],a=[];for(let l of r){let c=this.specs.indexOf(l),d;c<0?(d=l(n.view),a.push(d)):(d=this.panels[c],d.update&&d.update(n)),i.push(d),(d.top?s:o).push(d)}this.specs=r,this.panels=i,this.top.sync(s),this.bottom.sync(o);for(let l of a)l.dom.classList.add("cm-panel"),l.mount&&l.mount()}else for(let r of this.panels)r.update&&r.update(n)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:n=>F.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})}),Do=class{constructor(e,t,r){this.view=e,this.top=t,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=qS(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=qS(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}};function qS(n){let e=n.nextSibling;return n.remove(),e}var hl=oe.define({enables:tw});function nw(n,e){let t,r=new Promise(o=>t=o),i=o=>iE(o,e,t);n.state.field($p,!1)?n.dispatch({effects:rw.of(i)}):n.dispatch({effects:ye.appendConfig.of($p.init(()=>[i]))});let s=iw.of(i);return{close:s,result:r.then(o=>((n.win.queueMicrotask||(l=>n.win.setTimeout(l,10)))(()=>{n.state.field($p).indexOf(i)>-1&&n.dispatch({effects:s})}),o))}}var $p=Xe.define({create(){return[]},update(n,e){for(let t of e.effects)t.is(rw)?n=[t.value].concat(n):t.is(iw)&&(n=n.filter(r=>r!=t.value));return n},provide:n=>hl.computeN([n],e=>e.field(n))}),rw=ye.define(),iw=ye.define();function iE(n,e,t){let r=e.content?e.content(n,()=>o(null)):null;if(!r){if(r=kt("form"),e.input){let a=kt("input",e.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),r.appendChild(kt("label",(e.label||"")+": ",a))}else r.appendChild(document.createTextNode(e.label||""));r.appendChild(document.createTextNode(" ")),r.appendChild(kt("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let i=r.nodeName=="FORM"?[r]:r.querySelectorAll("form");for(let a=0;a{c.keyCode==27?(c.preventDefault(),o(null)):c.keyCode==13&&(c.preventDefault(),o(l))}),l.addEventListener("submit",c=>{c.preventDefault(),o(l)})}let s=kt("div",r,kt("button",{onclick:()=>o(null),"aria-label":n.state.phrase("close"),class:"cm-dialog-close",type:"button"},["\xD7"]));e.class&&(s.className=e.class),s.classList.add("cm-dialog");function o(a){s.contains(s.ownerDocument.activeElement)&&n.focus(),t(a)}return{dom:s,top:e.top,mount:()=>{if(e.focus){let a;typeof e.focus=="string"?a=r.querySelector(e.focus):a=r.querySelector("input")||r.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}var $t=class extends fr{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};$t.prototype.elementClass="";$t.prototype.toDOM=void 0;$t.prototype.mapMode=Xt.TrackBefore;$t.prototype.startSide=$t.prototype.endSide=-1;$t.prototype.point=!0;var fd=oe.define(),sE=oe.define(),oE={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>$e.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},il=oe.define();function Hi(n){return[sw(),il.of(Ue(Ue({},oE),n))]}var ym=oe.define({combine:n=>n.some(e=>e)});function sw(n){let e=[aE];return n&&n.fixed===!1&&e.push(ym.of(!0)),e}var aE=it.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(il).map(e=>new Cd(n,e)),this.fixed=!n.state.facet(ym);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,r=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(r<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(ym)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=$e.iter(this.view.state.facet(fd),this.view.viewport.from),r=[],i=this.gutters.map(s=>new vm(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(s.type)){let o=!0;for(let a of s.type)if(a.type==Ht.Text&&o){Sm(t,r,a.from);for(let l of i)l.line(this.view,a,r);o=!1}else if(a.widget)for(let l of i)l.widget(this.view,a)}else if(s.type==Ht.Text){Sm(t,r,s.from);for(let o of i)o.line(this.view,s,r)}else if(s.widget)for(let o of i)o.widget(this.view,s);for(let s of i)s.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(il),t=n.state.facet(il),r=n.docChanged||n.heightChanged||n.viewportChanged||!$e.eq(n.startState.facet(fd),n.state.facet(fd),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let i of this.gutters)i.update(n)&&(r=!0);else{r=!0;let i=[];for(let s of t){let o=e.indexOf(s);o<0?i.push(new Cd(this.view,s)):(this.gutters[o].update(n),i.push(this.gutters[o]))}for(let s of this.gutters)s.dom.remove(),i.indexOf(s)<0&&s.destroy();for(let s of i)s.config.side=="after"?this.getDOMAfter().appendChild(s.dom):this.dom.appendChild(s.dom);this.gutters=i}return r}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>F.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let r=t.dom.offsetWidth*e.scaleX,i=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==qe.LTR?{left:r,right:i}:{right:r,left:i}})});function GS(n){return Array.isArray(n)?n:[n]}function Sm(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}var vm=class{constructor(e,t,r){this.gutter=e,this.height=r,this.i=0,this.cursor=$e.iter(e.markers,t.from)}addElement(e,t,r){let{gutter:i}=this,s=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==i.elements.length){let a=new _d(e,o,s,r);i.elements.push(a),i.dom.appendChild(a.dom)}else i.elements[this.i].update(e,o,s,r);this.height=t.bottom,this.i++}line(e,t,r){let i=[];Sm(this.cursor,i,t.from),r.length&&(i=i.concat(r));let s=this.gutter.config.lineMarker(e,t,i);s&&i.unshift(s);let o=this.gutter;i.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,i)}widget(e,t){let r=this.gutter.config.widgetMarker(e,t.widget,t),i=r?[r]:null;for(let s of e.state.facet(sE)){let o=s(e,t.widget,t);o&&(i||(i=[])).push(o)}i&&this.addElement(e,t,i)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},Cd=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in t.domEventHandlers)this.dom.addEventListener(r,i=>{let s=i.target,o;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let l=s.getBoundingClientRect();o=(l.top+l.bottom)/2}else o=i.clientY;let a=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[r](e,a,i)&&i.preventDefault()});this.markers=GS(t.markers(e)),t.initialSpacer&&(this.spacer=new _d(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=GS(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let i=this.config.updateSpacer(this.spacer.markers[0],e);i!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[i])}let r=e.view.viewport;return!$e.eq(this.markers,t,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},_d=class{constructor(e,t,r,i){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,r,i)}update(e,t,r,i){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),lE(this.markers,i)||this.setMarkers(e,i)}setMarkers(e,t){let r="cm-gutterElement",i=this.dom.firstChild;for(let s=0,o=0;;){let a=o,l=ss(a,l,c)||o(a,l,c):o}return r}})}}),sl=class extends $t{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function Qp(n,e){return n.state.facet(Zo).formatNumber(e,n.state)}var hE=il.compute([Zo],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(cE)},lineMarker(e,t,r){return r.some(i=>i.toDOM)?null:new sl(Qp(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,r)=>{for(let i of e.state.facet(dE)){let s=i(e,t,r);if(s)return s}return null},lineMarkerChange:e=>e.startState.facet(Zo)!=e.state.facet(Zo),initialSpacer(e){return new sl(Qp(e,HS(e.state.doc.lines)))},updateSpacer(e,t){let r=Qp(t.view,HS(t.view.state.doc.lines));return r==e.number?e:new sl(r)},domEventHandlers:n.facet(Zo).domEventHandlers,side:"before"}));function Xd(n={}){return[Zo.of(n),sw(),hE]}function HS(n){let e=9;for(;e{let e=[],t=-1;for(let r of n.selection.ranges){let i=n.doc.lineAt(r.head).from;i>t&&(t=i,e.push(uE.range(i)))}return $e.of(e)});function ow(){return fE}function aw(n){return it.define(e=>({decorations:n.createDeco(e),update(t){this.decorations=n.updateDeco(t,this.decorations)}}),{decorations:e=>e.decorations})}var pE=J.mark({class:"cm-highlightTab"}),mE=J.mark({class:"cm-highlightSpace"}),gE=aw(new dl({regexp:/\t| /g,decoration:n=>n[0]==" "?pE:mE,boundary:/\S/}));function lw(){return gE}var OE=aw(new dl({regexp:/\s+$/g,decoration:J.mark({class:"cm-trailingSpace"})}));function cw(){return OE}var bE=0,Cn=class{constructor(e,t){this.from=e,this.to=t}},xe=class{constructor(e={}){this.id=bE++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=St.match(e)),t=>{let r=e(t);return r===void 0?null:[this,r]}}};xe.closedBy=new xe({deserialize:n=>n.split(" ")});xe.openedBy=new xe({deserialize:n=>n.split(" ")});xe.group=new xe({deserialize:n=>n.split(" ")});xe.isolate=new xe({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});xe.contextHash=new xe({perNode:!0});xe.lookAhead=new xe({perNode:!0});xe.mounted=new xe({perNode:!0});var Ki=class{constructor(e,t,r,i=!1){this.tree=e,this.overlay=t,this.parser=r,this.bracketed=i}static get(e){return e&&e.props&&e.props[xe.mounted.id]}},yE=Object.create(null),St=class n{constructor(e,t,r,i=0){this.name=e,this.props=t,this.id=r,this.flags=i}static define(e){let t=e.props&&e.props.length?Object.create(null):yE,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),i=new n(e.name||"",t,e.id,r);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(i)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[s[0].id]=s[1]}}return i}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(xe.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let r in e)for(let i of r.split(" "))t[i]=e[r];return r=>{for(let i=r.prop(xe.group),s=-1;s<(i?i.length:0);s++){let o=t[s<0?r.name:i[s]];if(o)return o}}}};St.none=new St("",Object.create(null),0,8);var $i=class n{constructor(e){this.types=e;for(let t=0;t0;for(let l=this.cursor(o|We.IncludeAnonymous);;){let c=!1;if(l.from<=s&&l.to>=i&&(!a&&l.type.isAnonymous||t(l)!==!1)){if(l.firstChild())continue;c=!0}for(;c&&r&&(a||!l.type.isAnonymous)&&r(l),!l.nextSibling();){if(!l.parent())return;c=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Bm(St.none,this.children,this.positions,0,this.children.length,0,this.length,(t,r,i)=>new n(this.type,t,r,i,this.propValues),e.makeTree||((t,r,i)=>new n(St.none,t,r,i)))}static build(e){return vE(e)}};Ee.empty=new Ee(St.none,[],[],0);var Rm=class n{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},Ji=class n{constructor(e,t,r){this.buffer=e,this.length=t,this.set=r}get type(){return St.none}toString(){let e=[];for(let t=0;t0));l=o[l+3]);return a}slice(e,t,r){let i=this.buffer,s=new Uint16Array(t-e),o=0;for(let a=e,l=0;a=e&&te;case 1:return t<=e&&r>e;case 2:return r>e;case 4:return!0}}function fl(n,e,t,r){for(var i;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to0?a.length:-1;e!=c;e+=t){let d=a[e],h=l[e]+o.from,u;if(!(!(s&We.EnterBracketed&&d instanceof Ee&&(u=Ki.get(d))&&!u.overlay&&u.bracketed&&r>=h&&r<=h+d.length)&&!Ow(i,r,h,h+d.length))){if(d instanceof Ji){if(s&We.ExcludeBuffers)continue;let f=d.findChild(0,d.buffer.length,t,r-h,i);if(f>-1)return new Fs(new Lm(o,d,e,h),null,f)}else if(s&We.IncludeAnonymous||!d.type.isAnonymous||Nm(d)){let f;if(!(s&We.IgnoreMounts)&&(f=Ki.get(d))&&!f.overlay)return new n(f.tree,h,e,o);let m=new n(d,h,e,o);return s&We.IncludeAnonymous||!m.type.isAnonymous?m:m.nextChild(t<0?d.children.length-1:0,t,r,i,s)}}}if(s&We.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,r=0){let i;if(!(r&We.IgnoreOverlays)&&(i=Ki.get(this._tree))&&i.overlay){let s=e-this.from,o=r&We.EnterBracketed&&i.bracketed;for(let{from:a,to:l}of i.overlay)if((t>0||o?a<=s:a=s:l>s))return new n(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function hw(n,e,t,r){let i=n.cursor(),s=[];if(!i.firstChild())return s;if(t!=null){for(let o=!1;!o;)if(o=i.type.is(t),!i.nextSibling())return s}for(;;){if(r!=null&&i.type.is(r))return s;if(i.type.is(e)&&s.push(i.node),!i.nextSibling())return r==null?s:[]}}function Mm(n,e,t=e.length-1){for(let r=n;t>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[t]&&e[t]!=r.name)return!1;t--}}return!0}var Lm=class{constructor(e,t,r,i){this.parent=e,this.buffer=t,this.index=r,this.start=i}},Fs=class n extends Nd{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,r){super(),this.context=e,this._parent=t,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.context.start,r);return s<0?null:new n(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,r=0){if(r&We.ExcludeBuffers)return null;let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new n(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new n(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new n(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:r}=this.context,i=this.index+4,s=r.buffer[this.index+3];if(s>i){let o=r.buffer[this.index+1];e.push(r.slice(i,s,o)),t.push(0)}return new Ee(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function bw(n){if(!n.length)return null;let e=0,t=n[0];for(let s=1;st.from||o.to=e){let a=new _n(o.tree,o.overlay[0].from+s.from,-1,s);(i||(i=[r])).push(fl(a,e,t,!1))}}return i?bw(i):r}var Yo=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~We.EnterBracketed,e instanceof _n)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:r,buffer:i}=this.buffer;return this.type=t||i.set.types[i.buffer[e]],this.from=r+i.buffer[e+1],this.to=r+i.buffer[e+2],!0}yield(e){return e?e instanceof _n?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode));let{buffer:i}=this.buffer,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.buffer.start,r);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){return this.buffer?r&We.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&We.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&We.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,r=this.stack.length-1;if(e<0){let i=r<0?0:this.stack[r]+4;if(this.index!=i)return this.yieldBuf(t.findChild(i,this.index,-1,0,4))}else{let i=t.buffer[this.index+3];if(i<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(i)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,r,{buffer:i}=this;if(i){if(e>0){if(this.index-1)for(let s=t+e,o=e<0?-1:r._tree.children.length;s!=o;s+=e){let a=r._tree.children[s];if(this.mode&We.IncludeAnonymous||a instanceof Ji||!a.type.isAnonymous||Nm(a))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==i){if(i==this.index)return o;t=o,r=s+1;break e}i=this.stack[--s]}for(let i=r;i=0;s--){if(s<0)return Mm(this._tree,e,i);let o=r[t.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[i]&&e[i]!=o.name)return!1;i--}}return!0}};function Nm(n){return n.children.some(e=>e instanceof Ji||!e.type.isAnonymous||Nm(e))}function vE(n){var e;let{buffer:t,nodeSet:r,maxBufferLength:i=1024,reused:s=[],minRepeatType:o=r.types.length}=n,a=Array.isArray(t)?new Rm(t,t.length):t,l=r.types,c=0,d=0;function h(k,w,R,X,W,ne){let{id:de,start:q,end:pe,size:ve}=a,we=d,B=c;if(ve<0)if(a.next(),ve==-1){let Ge=s[de];R.push(Ge),X.push(q-k);return}else if(ve==-3){c=de;return}else if(ve==-4){d=de;return}else throw new RangeError(`Unrecognized record size: ${ve}`);let ue=l[de],G,Pe,Qe=q-k;if(pe-q<=i&&(Pe=S(a.pos-w,W))){let Ge=new Uint16Array(Pe.size-Pe.skip),He=a.pos-Pe.size,Ot=Ge.length;for(;a.pos>He;)Ot=x(Pe.start,Ge,Ot);G=new Ji(Ge,pe-Pe.start,r),Qe=Pe.start-k}else{let Ge=a.pos-ve;a.next();let He=[],Ot=[],me=de>=o?de:-1,nn=0,ir=pe;for(;a.pos>Ge;)me>=0&&a.id==me&&a.size>=0?(a.end<=ir-i&&(m(He,Ot,q,nn,a.end,ir,me,we,B),nn=He.length,ir=a.end),a.next()):ne>2500?u(q,Ge,He,Ot):h(q,Ge,He,Ot,me,ne+1);if(me>=0&&nn>0&&nn-1&&nn>0){let sr=f(ue,B);G=Bm(ue,He,Ot,0,He.length,0,pe-q,sr,sr)}else G=O(ue,He,Ot,pe-q,we-pe,B)}R.push(G),X.push(Qe)}function u(k,w,R,X){let W=[],ne=0,de=-1;for(;a.pos>w;){let{id:q,start:pe,end:ve,size:we}=a;if(we>4)a.next();else{if(de>-1&&pe=0;ve-=3)q[we++]=W[ve],q[we++]=W[ve+1]-pe,q[we++]=W[ve+2]-pe,q[we++]=we;R.push(new Ji(q,W[2]-pe,r)),X.push(pe-k)}}function f(k,w){return(R,X,W)=>{let ne=0,de=R.length-1,q,pe;if(de>=0&&(q=R[de])instanceof Ee){if(!de&&q.type==k&&q.length==W)return q;(pe=q.prop(xe.lookAhead))&&(ne=X[de]+q.length+pe)}return O(k,R,X,W,ne,w)}}function m(k,w,R,X,W,ne,de,q,pe){let ve=[],we=[];for(;k.length>X;)ve.push(k.pop()),we.push(w.pop()+R-W);k.push(O(r.types[de],ve,we,ne-W,q-ne,pe)),w.push(W-R)}function O(k,w,R,X,W,ne,de){if(ne){let q=[xe.contextHash,ne];de=de?[q].concat(de):[q]}if(W>25){let q=[xe.lookAhead,W];de=de?[q].concat(de):[q]}return new Ee(k,w,R,X,de)}function S(k,w){let R=a.fork(),X=0,W=0,ne=0,de=R.end-i,q={size:0,start:0,skip:0};e:for(let pe=R.pos-k;R.pos>pe;){let ve=R.size;if(R.id==w&&ve>=0){q.size=X,q.start=W,q.skip=ne,ne+=4,X+=4,R.next();continue}let we=R.pos-ve;if(ve<0||we=o?4:0,ue=R.start;for(R.next();R.pos>we;){if(R.size<0)if(R.size==-3||R.size==-4)B+=4;else break e;else R.id>=o&&(B+=4);R.next()}W=ue,X+=ve,ne+=B}return(w<0||X==k)&&(q.size=X,q.start=W,q.skip=ne),q.size>4?q:void 0}function x(k,w,R){let{id:X,start:W,end:ne,size:de}=a;if(a.next(),de>=0&&X4){let pe=a.pos-(de-4);for(;a.pos>pe;)R=x(k,w,R)}w[--R]=q,w[--R]=ne-k,w[--R]=W-k,w[--R]=X}else de==-3?c=X:de==-4&&(d=X);return R}let D=[],M=[];for(;a.pos>0;)h(n.start||0,n.bufferStart||0,D,M,-1,0);let Z=(e=n.length)!==null&&e!==void 0?e:D.length?M[0]+D[0].length:0;return new Ee(l[n.topID],D.reverse(),M.reverse(),Z)}var uw=new WeakMap;function Wd(n,e){if(!n.isAnonymous||e instanceof Ji||e.type!=n)return 1;let t=uw.get(e);if(t==null){t=1;for(let r of e.children){if(r.type!=n||!(r instanceof Ee)){t=1;break}t+=Wd(n,r)}uw.set(e,t)}return t}function Bm(n,e,t,r,i,s,o,a,l){let c=0;for(let m=r;m=d)break;w+=R}if(M==Z+1){if(w>d){let R=m[Z];f(R.children,R.positions,0,R.children.length,O[Z]+D);continue}h.push(m[Z])}else{let R=O[M-1]+m[M-1].length-k;h.push(Bm(n,m,O,Z,M,k,R,null,l))}u.push(k+D-s)}}return f(e,t,r,i,0),(a||l)(h,u,o)}var jo=class{constructor(){this.map=new WeakMap}setBuffer(e,t,r){let i=this.map.get(e);i||this.map.set(e,i=new Map),i.set(t,r)}getBuffer(e,t){let r=this.map.get(e);return r&&r.get(t)}set(e,t){e instanceof Fs?this.setBuffer(e.context.buffer,e.index,t):e instanceof _n&&this.map.set(e.tree,t)}get(e){return e instanceof Fs?this.getBuffer(e.context.buffer,e.index):e instanceof _n?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},Qi=class n{constructor(e,t,r,i,s=!1,o=!1){this.from=e,this.to=t,this.tree=r,this.offset=i,this.open=(s?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],r=!1){let i=[new n(0,e.length,e,0,!1,r)];for(let s of t)s.to>e.length&&i.push(s);return i}static applyChanges(e,t,r=128){if(!t.length)return e;let i=[],s=1,o=e.length?e[0]:null;for(let a=0,l=0,c=0;;a++){let d=a=r)for(;o&&o.from=u.from||h<=u.to||c){let f=Math.max(u.from,l)-c,m=Math.min(u.to,h)-c;u=f>=m?null:new n(f,m,u.tree,u.offset+c,a>0,!!d)}if(u&&i.push(u),o.to>h)break;o=snew Cn(i.from,i.to)):[new Cn(0,0)]:[new Cn(0,e.length)],this.createParse(e,t||[],r)}parse(e,t,r){let i=this.startParse(e,t,r);for(;;){let s=i.advance();if(s)return s}}},Zm=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function Fd(n){return(e,t,r,i)=>new zm(e,n,t,r,i)}var Bd=class{constructor(e,t,r,i,s,o){this.parser=e,this.parse=t,this.overlay=r,this.bracketed=i,this.target=s,this.from=o}};function fw(n){if(!n.length||n.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(n))}var Im=class{constructor(e,t,r,i,s,o,a,l){this.parser=e,this.predicate=t,this.mounts=r,this.index=i,this.start=s,this.bracketed=o,this.target=a,this.prev=l,this.depth=0,this.ranges=[]}},Xm=new xe({perNode:!0}),zm=class{constructor(e,t,r,i,s){this.nest=t,this.input=r,this.fragments=i,this.ranges=s,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let r=this.baseParse.advance();if(!r)return null;if(this.baseParse=null,this.baseTree=r,this.startInner(),this.stoppedAt!=null)for(let i of this.inner)i.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let r=this.baseTree;return this.stoppedAt!=null&&(r=new Ee(r.type,r.children,r.positions,r.length,r.propValues.concat([[Xm,this.stoppedAt]]))),r}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let r=Object.assign(Object.create(null),e.target.props);r[xe.mounted.id]=new Ki(t,e.overlay,e.parser,e.bracketed),e.target.props=r}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t=this.stoppedAt)a=!1;else if(e.hasNode(i)){if(t){let c=t.mounts.find(d=>d.frag.from<=i.from&&d.frag.to>=i.to&&d.mount.overlay);if(c)for(let d of c.mount.overlay){let h=d.from+c.pos,u=d.to+c.pos;h>=i.from&&u<=i.to&&!t.ranges.some(f=>f.fromh)&&t.ranges.push({from:h,to:u})}}a=!1}else if(r&&(o=wE(r.ranges,i.from,i.to)))a=o!=2;else if(!i.type.isAnonymous&&(s=this.nest(i,this.input))&&(i.fromnew Cn(h.from-i.from,h.to-i.from)):null,!!s.bracketed,i.tree,d.length?d[0].from:i.from)),s.overlay?d.length&&(r={ranges:d,depth:0,prev:r}):a=!1}}else if(t&&(l=t.predicate(i))&&(l===!0&&(l=new Cn(i.from,i.to)),l.from=0&&t.ranges[c].to==l.from?t.ranges[c]={from:t.ranges[c].from,to:l.to}:t.ranges.push(l)}if(a&&i.firstChild())t&&t.depth++,r&&r.depth++;else for(;!i.nextSibling();){if(!i.parent())break e;if(t&&!--t.depth){let c=mw(this.ranges,t.ranges);c.length&&(fw(c),this.inner.splice(t.index,0,new Bd(t.parser,t.parser.startParse(this.input,gw(t.mounts,c),c),t.ranges.map(d=>new Cn(d.from-t.start,d.to-t.start)),t.bracketed,t.target,c[0].from))),t=t.prev}r&&!--r.depth&&(r=r.prev)}}}};function wE(n,e,t){for(let r of n){if(r.from>=t)break;if(r.to>e)return r.from<=e&&r.to>=t?2:1}return 0}function pw(n,e,t,r,i,s){if(e=e&&t.enter(r,1,We.IgnoreOverlays|We.ExcludeBuffers)))if(t.to<=e)t.next(!1)||(this.done=!0);else break}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof Ee)t=t.children[0];else break}return!1}},Wm=class{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let r=this.curFrag=e[0];this.curTo=(t=r.tree.prop(Xm))!==null&&t!==void 0?t:r.to,this.inner=new Vd(r.tree,-r.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(Xm))!==null&&e!==void 0?e:t.to,this.inner=new Vd(t.tree,-t.offset)}}findMounts(e,t){var r;let i=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(r=s.tree)===null||r===void 0?void 0:r.prop(xe.mounted);if(o&&o.parser==t)for(let a=this.fragI;a=s.to)break;l.tree==this.curFrag.tree&&i.push({frag:l,pos:s.from-l.offset,mount:o})}}}return i}};function mw(n,e){let t=null,r=e;for(let i=1,s=0;i=a)break;l.to<=o||(t||(r=t=e.slice()),l.froma&&t.splice(s+1,0,new Cn(a,l.to))):l.to>a?t[s--]=new Cn(a,l.to):t.splice(s--,1))}}return r}function PE(n,e,t,r){let i=0,s=0,o=!1,a=!1,l=-1e9,c=[];for(;;){let d=i==n.length?1e9:o?n[i].to:n[i].from,h=s==e.length?1e9:a?e[s].to:e[s].from;if(o!=a){let u=Math.max(l,t),f=Math.min(d,h,r);unew Cn(u.from+r,u.to+r)),h=PE(e,d,l,c);for(let u=0,f=l;;u++){let m=u==h.length,O=m?c:h[u].from;if(O>f&&t.push(new Qi(f,O,i.tree,-o,s.from>=f||s.openStart,s.to<=O||s.openEnd)),m)break;f=h[u].to}}else t.push(new Qi(l,c,i.tree,-o,s.from>=o||s.openStart,s.to<=a||s.openEnd))}return t}var kE=0,qn=class n{constructor(e,t,r,i){this.name=e,this.set=t,this.base=r,this.modified=i,this.id=kE++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let r=typeof e=="string"?e:"?";if(e instanceof n&&(t=e),t!=null&&t.base)throw new Error("Can not derive from a modified tag");let i=new n(r,[],null,[]);if(i.set.push(i),t)for(let s of t.set)i.set.push(s);return i}static defineModifier(e){let t=new qd(e);return r=>r.modified.indexOf(t)>-1?r:qd.get(r.base||r,r.modified.concat(t).sort((i,s)=>i.id-s.id))}},$E=0,qd=class n{constructor(e){this.name=e,this.instances=[],this.id=$E++}static get(e,t){if(!t.length)return e;let r=t[0].instances.find(a=>a.base==e&&QE(t,a.modified));if(r)return r;let i=[],s=new qn(e.name,i,e,t);for(let a of t)a.instances.push(s);let o=TE(t);for(let a of e.set)if(!a.modified.length)for(let l of o)i.push(n.get(a,l));return s}};function QE(n,e){return n.length==e.length&&n.every((t,r)=>t==e[r])}function TE(n){let e=[[]];for(let t=0;tr.length-t.length)}function Kt(n){let e=Object.create(null);for(let t in n){let r=n[t];Array.isArray(r)||(r=[r]);for(let i of t.split(" "))if(i){let s=[],o=2,a=i;for(let h=0;;){if(a=="..."&&h>0&&h+3==i.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!u)throw new RangeError("Invalid path: "+i);if(s.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),h+=u[0].length,h==i.length)break;let f=i[h++];if(h==i.length&&f=="!"){o=0;break}if(f!="/")throw new RangeError("Invalid path: "+i);a=i.slice(h)}let l=s.length-1,c=s[l];if(!c)throw new RangeError("Invalid path: "+i);let d=new js(r,o,l>0?s.slice(0,l):null);e[c]=d.sort(e[c])}}return vw.add(e)}var vw=new xe({combine(n,e){let t,r,i;for(;n||e;){if(!n||e&&n.depth>=e.depth?(i=e,e=e.next):(i=n,n=n.next),t&&t.mode==i.mode&&!i.context&&!t.context)continue;let s=new js(i.tags,i.mode,i.context);t?t.next=s:r=s,t=s}return r}}),js=class{constructor(e,t,r,i){this.tags=e,this.mode=t,this.context=r,this.next=i}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=i;for(let a of s)for(let l of a.set){let c=t[l.id];if(c){o=o?o+" "+c:c;break}}return o},scope:r}}function AE(n,e){let t=null;for(let r of n){let i=r.style(e);i&&(t=t?t+" "+i:i)}return t}function ww(n,e,t,r=0,i=n.length){let s=new Fm(r,Array.isArray(e)?e:[e],t);s.highlightRange(n.cursor(),r,i,"",s.highlighters),s.flush(i)}var Fm=class{constructor(e,t,r){this.at=e,this.highlighters=t,this.span=r,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,r,i,s){let{type:o,from:a,to:l}=e;if(a>=r||l<=t)return;o.isTop&&(s=this.highlighters.filter(f=>!f.scope||f.scope(o)));let c=i,d=Um(e)||js.empty,h=AE(s,d.tags);if(h&&(c&&(c+=" "),c+=h,d.mode==1&&(i+=(i?" ":"")+h)),this.startSpan(Math.max(t,a),c),d.opaque)return;let u=e.tree&&e.tree.prop(xe.mounted);if(u&&u.overlay){let f=e.node.enter(u.overlay[0].from+a,1),m=this.highlighters.filter(S=>!S.scope||S.scope(u.tree.type)),O=e.firstChild();for(let S=0,x=a;;S++){let D=S=M||!e.nextSibling())););if(!D||M>r)break;x=D.to+a,x>t&&(this.highlightRange(f.cursor(),Math.max(t,D.from+a),Math.min(r,x),"",m),this.startSpan(Math.min(r,x),c))}O&&e.parent()}else if(e.firstChild()){u&&(i="");do if(!(e.to<=t)){if(e.from>=r)break;this.highlightRange(e,t,r,i,s),this.startSpan(Math.min(r,e.to),c)}while(e.nextSibling());e.parent()}}};function Um(n){let e=n.type.prop(vw);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}var se=qn.define,Yd=se(),es=se(),yw=se(es),Sw=se(es),ts=se(),jd=se(ts),Vm=se(ts),ni=se(),Ys=se(ni),ei=se(),ti=se(),Ym=se(),pl=se(Ym),Ud=se(),g={comment:Yd,lineComment:se(Yd),blockComment:se(Yd),docComment:se(Yd),name:es,variableName:se(es),typeName:yw,tagName:se(yw),propertyName:Sw,attributeName:se(Sw),className:se(es),labelName:se(es),namespace:se(es),macroName:se(es),literal:ts,string:jd,docString:se(jd),character:se(jd),attributeValue:se(jd),number:Vm,integer:se(Vm),float:se(Vm),bool:se(ts),regexp:se(ts),escape:se(ts),color:se(ts),url:se(ts),keyword:ei,self:se(ei),null:se(ei),atom:se(ei),unit:se(ei),modifier:se(ei),operatorKeyword:se(ei),controlKeyword:se(ei),definitionKeyword:se(ei),moduleKeyword:se(ei),operator:ti,derefOperator:se(ti),arithmeticOperator:se(ti),logicOperator:se(ti),bitwiseOperator:se(ti),compareOperator:se(ti),updateOperator:se(ti),definitionOperator:se(ti),typeOperator:se(ti),controlOperator:se(ti),punctuation:Ym,separator:se(Ym),bracket:pl,angleBracket:se(pl),squareBracket:se(pl),paren:se(pl),brace:se(pl),content:ni,heading:Ys,heading1:se(Ys),heading2:se(Ys),heading3:se(Ys),heading4:se(Ys),heading5:se(Ys),heading6:se(Ys),contentSeparator:se(ni),list:se(ni),quote:se(ni),emphasis:se(ni),strong:se(ni),link:se(ni),monospace:se(ni),strikethrough:se(ni),inserted:se(),deleted:se(),changed:se(),invalid:se(),meta:Ud,documentMeta:se(Ud),annotation:se(Ud),processingInstruction:se(Ud),definition:qn.defineModifier("definition"),constant:qn.defineModifier("constant"),function:qn.defineModifier("function"),standard:qn.defineModifier("standard"),local:qn.defineModifier("local"),special:qn.defineModifier("special")};for(let n in g){let e=g[n];e instanceof qn&&(e.name=n)}var vN=jm([{tag:g.link,class:"tok-link"},{tag:g.heading,class:"tok-heading"},{tag:g.emphasis,class:"tok-emphasis"},{tag:g.strong,class:"tok-strong"},{tag:g.keyword,class:"tok-keyword"},{tag:g.atom,class:"tok-atom"},{tag:g.bool,class:"tok-bool"},{tag:g.url,class:"tok-url"},{tag:g.labelName,class:"tok-labelName"},{tag:g.inserted,class:"tok-inserted"},{tag:g.deleted,class:"tok-deleted"},{tag:g.literal,class:"tok-literal"},{tag:g.string,class:"tok-string"},{tag:g.number,class:"tok-number"},{tag:[g.regexp,g.escape,g.special(g.string)],class:"tok-string2"},{tag:g.variableName,class:"tok-variableName"},{tag:g.local(g.variableName),class:"tok-variableName tok-local"},{tag:g.definition(g.variableName),class:"tok-variableName tok-definition"},{tag:g.special(g.variableName),class:"tok-variableName2"},{tag:g.definition(g.propertyName),class:"tok-propertyName tok-definition"},{tag:g.typeName,class:"tok-typeName"},{tag:g.namespace,class:"tok-namespace"},{tag:g.className,class:"tok-className"},{tag:g.macroName,class:"tok-macroName"},{tag:g.propertyName,class:"tok-propertyName"},{tag:g.operator,class:"tok-operator"},{tag:g.comment,class:"tok-comment"},{tag:g.meta,class:"tok-meta"},{tag:g.invalid,class:"tok-invalid"},{tag:g.punctuation,class:"tok-punctuation"}]);var qm,Ai=new xe;function Uo(n){return oe.define({combine:n?e=>e.concat(n):void 0})}var Jd=new xe,cn=class{constructor(e,t,r=[],i=""){this.data=e,this.name=i,Me.prototype.hasOwnProperty("tree")||Object.defineProperty(Me.prototype,"tree",{get(){return ze(this)}}),this.parser=t,this.extension=[ri.of(this),Me.languageData.of((s,o,a)=>{let l=xw(s,o,a),c=l.type.prop(Ai);if(!c)return[];let d=s.facet(c),h=l.type.prop(Jd);if(h){let u=l.resolve(o-l.from,a);for(let f of h)if(f.test(u,s)){let m=s.facet(f.facet);return f.type=="replace"?m:m.concat(d)}}return d})].concat(r)}isActiveAt(e,t,r=-1){return xw(e,t,r).type.prop(Ai)==this.data}findRegions(e){let t=e.facet(ri);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let r=[],i=(s,o)=>{if(s.prop(Ai)==this.data){r.push({from:o,to:o+s.length});return}let a=s.prop(xe.mounted);if(a){if(a.tree.prop(Ai)==this.data){if(a.overlay)for(let l of a.overlay)r.push({from:l.from+o,to:l.to+o});else r.push({from:o,to:o+s.length});return}else if(a.overlay){let l=r.length;if(i(a.tree,a.overlay[0].from+o),r.length>l)return}}for(let l=0;lr.isTop?t:void 0)]}),e.name)}configure(e,t){return new n(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function ze(n){let e=n.field(cn.state,!1);return e?e.tree:Ee.empty}var Jm=class{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-r,t-r)}},ml=null,Us=class n{constructor(e,t,r=[],i,s,o,a,l){this.parser=e,this.state=t,this.fragments=r,this.tree=i,this.treeLen=s,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,r){return new n(e,t,[],Ee.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Jm(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=Ee.empty&&this.isDone(t!=null?t:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let i=Date.now()+e;e=()=>Date.now()>i}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Qi.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=ml;ml=this;try{return e()}finally{ml=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=Pw(e,t.from,t.to);return e}changes(e,t){let{fragments:r,tree:i,treeLen:s,viewport:o,skipped:a}=this;if(this.takeTree(),!e.empty){let l=[];if(e.iterChangedRanges((c,d,h,u)=>l.push({fromA:c,toA:d,fromB:h,toB:u})),r=Qi.applyChanges(r,l),i=Ee.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){a=[];for(let c of this.skipped){let d=e.mapPos(c.from,1),h=e.mapPos(c.to,-1);de.from&&(this.fragments=Pw(this.fragments,i,s),this.skipped.splice(r--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ti{createParse(t,r,i){let s=i[0].from,o=i[i.length-1].to;return{parsedPos:s,advance(){let l=ml;if(l){for(let c of i)l.tempSkipped.push(c);e&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,e]):e)}return this.parsedPos=o,new Ee(St.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return ml}};function Pw(n,e,t){return Qi.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}var Ol=class n{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,r)||t.takeTree(),new n(t)}static init(e){let t=Math.min(3e3,e.doc.length),r=Us.create(e.facet(ri).parser,e,{from:0,to:t});return r.work(20,t)||r.takeTree(),new n(r)}};cn.state=Xe.define({create:Ol.init,update(n,e){for(let t of e.effects)if(t.is(cn.setState))return t.value;return e.startState.facet(ri)!=e.state.facet(ri)?Ol.init(e.state):n.apply(e)}});var Rw=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(Rw=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Gm=typeof navigator!="undefined"&&(!((qm=navigator.scheduling)===null||qm===void 0)&&qm.isInputPending)?()=>navigator.scheduling.isInputPending():null,CE=it.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(cn.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(cn.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Rw(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndi+1e3,l=s.context.work(()=>Gm&&Gm()||Date.now()>o,i+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:cn.setState.of(new Ol(s.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>jn(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),ri=oe.define({combine(n){return n.length?n[0]:null},enables:n=>[cn.state,CE,F.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]}),Ye=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},bl=class n{constructor(e,t,r,i,s,o=void 0){this.name=e,this.alias=t,this.extensions=r,this.filename=i,this.loadFunc=s,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:r}=e;if(!t){if(!r)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(r)}return new n(e.name,(e.alias||[]).concat(e.name).map(i=>i.toLowerCase()),e.extensions||[],e.filename,t,r)}static matchFilename(e,t){for(let i of e)if(i.filename&&i.filename.test(t))return i;let r=/\.([^.]+)$/.exec(t);if(r){for(let i of e)if(i.extensions.indexOf(r[1])>-1)return i}return null}static matchLanguageName(e,t,r=!0){t=t.toLowerCase();for(let i of e)if(i.alias.some(s=>s==t))return i;if(r)for(let i of e)for(let s of i.alias){let o=t.indexOf(s);if(o>-1&&(s.length>2||!/\w/.test(t[o-1])&&!/\w/.test(t[o+s.length])))return i}return null}},lg=oe.define(),yr=oe.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function ii(n){let e=n.facet(yr);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function qo(n,e){let t="",r=n.tabSize,i=n.facet(yr)[0];if(i==" "){for(;e>=r;)t+=" ",e-=r;i=" "}for(let s=0;s=e?_E(n,t,e):null}var qs=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=ii(e)}lineAt(e,t=1){let r=this.state.doc.lineAt(e),{simulateBreak:i,simulateDoubleBreak:s}=this.options;return i!=null&&i>=r.from&&i<=r.to?s&&i==e?{text:"",from:e}:(t<0?i-1&&(s+=o-this.countColumn(r,r.search(/\S|$/))),s}countColumn(e,t=e.length){return Gt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:r,from:i}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let o=s(i);if(o>-1)return o}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},En=new xe;function _E(n,e,t){let r=e.resolveStack(t),i=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(i!=r.node){let s=[];for(let o=i;o&&!(o.fromr.node.to||o.from==r.node.from&&o.type==r.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)r={node:s[o],next:r}}return Mw(r,n,t)}function Mw(n,e,t){for(let r=n;r;r=r.next){let i=RE(r.node);if(i)return i(eg.create(e,t,r))}return 0}function EE(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function RE(n){let e=n.type.prop(En);if(e)return e;let t=n.firstChild,r;if(t&&(r=t.type.prop(xe.closedBy))){let i=n.lastChild,s=i&&r.indexOf(i.name)>-1;return o=>Lw(o,!0,1,void 0,s&&!EE(o)?i.from:void 0)}return n.parent==null?ME:null}function ME(){return 0}var eg=class n extends qs{constructor(e,t,r){super(e.state,e.options),this.base=e,this.pos=t,this.context=r}get node(){return this.context.node}static create(e,t,r){return new n(e,t,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(t.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(LE(r,e))break;t=this.state.doc.lineAt(r.from)}return this.lineIndent(t.from)}continue(){return Mw(this.context.next,this.base,this.pos)}};function LE(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function DE(n){let e=n.node,t=e.childAfter(e.from),r=e.lastChild;if(!t)return null;let i=n.options.simulateBreak,s=n.state.doc.lineAt(t.from),o=i==null||i<=s.from?s.to:Math.min(s.to,i);for(let a=t.to;;){let l=e.childAfter(a);if(!l||l==r)return null;if(!l.type.isSkipped){if(l.from>=o)return null;let c=/^ */.exec(s.text.slice(t.to-s.from))[0].length;return{from:t.from,to:t.to+c}}a=l.to}}function Go({closing:n,align:e=!0,units:t=1}){return r=>Lw(r,e,t,n)}function Lw(n,e,t,r,i){let s=n.textAfter,o=s.match(/^\s*/)[0].length,a=r&&s.slice(o,o+r.length)==r||i==n.pos+o,l=e?DE(n):null;return l?a?n.column(l.from):n.column(l.to):n.baseIndent+(a?0:n.unit*t)}var Dw=n=>n.baseIndent;function Gn({except:n,units:e=1}={}){return t=>{let r=n&&n.test(t.textAfter);return t.baseIndent+(r?0:e*t.unit)}}var ZE=200;function Zw(){return Me.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:r}=n.newSelection.main,i=t.lineAt(r);if(r>i.from+ZE)return n;let s=t.sliceString(i.from,r);if(!e.some(c=>c.test(s)))return n;let{state:o}=n,a=-1,l=[];for(let{head:c}of o.selection.ranges){let d=o.doc.lineAt(c);if(d.from==a)continue;a=d.from;let h=eh(o,d.from);if(h==null)continue;let u=/^\s*/.exec(d.text)[0],f=qo(o,h);u!=f&&l.push({from:d.from,to:d.from+u.length,insert:f})}return l.length?[n,{changes:l,sequential:!0}]:n})}var cg=oe.define(),dn=new xe;function Ft(n){let e=n.firstChild,t=n.lastChild;return e&&e.tot)continue;if(s&&a.from=e&&c.to>t&&(s=c)}}return s}function XE(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}function kw(n,e,t){for(let r of n.facet(cg)){let i=r(n,e,t);if(i)return i}return IE(n,e,t)}function Iw(n,e){let t=e.mapPos(n.from,1),r=e.mapPos(n.to,-1);return t>=r?void 0:{from:t,to:r}}var Xw=ye.define({map:Iw}),dg=ye.define({map:Iw});var Gd=Xe.define({create(){return J.none},update(n,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((r,i)=>n=$w(n,r,i)),n=n.map(e.changes);let t=[];for(let r of e.effects)r.is(Xw)&&!zE(n,r.value.from,r.value.to)?t.push(r.value):r.is(dg)&&(n=n.update({filter:(i,s)=>r.value.from!=i||r.value.to!=s,filterFrom:r.value.from,filterTo:r.value.to}));if(t.length){let{preparePlaceholder:r}=e.state.facet(hg),i=t.map(s=>(r?J.replace({widget:new ng(r(e.state,s))}):Qw).range(s.from,s.to));n=n.update({add:i})}return e.selection&&(n=$w(n,e.selection.main.head)),n},provide:n=>F.decorations.from(n),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(r,i)=>{t.push(r,i)}),t},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t{ie&&(r=!0)}),r?n.update({filterFrom:e,filterTo:t,filter:(i,s)=>i>=t||s<=e}):n}function tg(n,e,t){var r;let i=null;return(r=n.field(Gd,!1))===null||r===void 0||r.between(e,t,(s,o)=>{(!i||i.from>s)&&(i={from:s,to:o})}),i}function zE(n,e,t){let r=!1;return n.between(e,e,(i,s)=>{i==e&&s==t&&(r=!0)}),r}var WE={placeholderDOM:null,preparePlaceholder:null,placeholderText:"\u2026"},hg=oe.define({combine(n){return Yn(n,WE)}});function NE(n){let e=[Gd,VE];return n&&e.push(hg.of(n)),e}function zw(n,e){let{state:t}=n,r=t.facet(hg),i=o=>{let a=n.lineBlockAt(n.posAtDOM(o.target)),l=tg(n.state,a.from,a.to);l&&n.dispatch({effects:dg.of(l)}),o.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(n,i,e);let s=document.createElement("span");return s.textContent=r.placeholderText,s.setAttribute("aria-label",t.phrase("folded code")),s.title=t.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}var Qw=J.replace({widget:new class extends Ct{toDOM(n){return zw(n,null)}}}),ng=class extends Ct{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return zw(e,this.value)}},BE={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},gl=class extends $t{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}};function Ww(n={}){let e=Ue(Ue({},BE),n),t=new gl(e,!0),r=new gl(e,!1),i=it.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(ri)!=o.state.facet(ri)||o.startState.field(Gd,!1)!=o.state.field(Gd,!1)||ze(o.startState)!=ze(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new Zr;for(let l of o.viewportLineBlocks){let c=tg(o.state,l.from,l.to)?r:kw(o.state,l.from,l.to)?t:null;c&&a.add(l.from,l.from,c)}return a.finish()}}),{domEventHandlers:s}=e;return[i,Hi({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(i))===null||a===void 0?void 0:a.markers)||$e.empty},initialSpacer(){return new gl(e,!1)},domEventHandlers:zi(Ue({},s),{click:(o,a,l)=>{if(s.click&&s.click(o,a,l))return!0;let c=tg(o.state,a.from,a.to);if(c)return o.dispatch({effects:dg.of(c)}),!0;let d=kw(o.state,a.from,a.to);return d?(o.dispatch({effects:Xw.of(d)}),!0):!1}})}),NE()]}var VE=F.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),ns=class n{constructor(e,t){this.specs=e;let r;function i(a){let l=mr.newName();return(r||(r=Object.create(null)))["."+l]=a,l}let s=typeof t.all=="string"?t.all:t.all?i(t.all):void 0,o=t.scope;this.scope=o instanceof cn?a=>a.prop(Ai)==o.data:o?a=>a==o:void 0,this.style=jm(e.map(a=>({tag:a.tag,class:a.class||i(Object.assign({},a,{tag:null}))})),{all:s}).style,this.module=r?new mr(r):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},rg=oe.define(),Nw=oe.define({combine(n){return n.length?[n[0]]:null}});function Hm(n){let e=n.facet(rg);return e.length?e:n.facet(Nw)}function th(n,e){let t=[FE],r;return n instanceof ns&&(n.module&&t.push(F.styleModule.of(n.module)),r=n.themeType),e!=null&&e.fallback?t.push(Nw.of(n)):r?t.push(rg.computeN([F.darkTheme],i=>i.facet(F.darkTheme)==(r=="dark")?[n]:[])):t.push(rg.of(n)),t}var ig=class{constructor(e){this.markCache=Object.create(null),this.tree=ze(e.state),this.decorations=this.buildDeco(e,Hm(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=ze(e.state),r=Hm(e.state),i=r!=Hm(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||i)&&(this.tree=t,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return J.none;let r=new Zr;for(let{from:i,to:s}of e.visibleRanges)ww(this.tree,t,(o,a,l)=>{r.add(o,a,this.markCache[l]||(this.markCache[l]=J.mark({class:l})))},i,s);return r.finish()}},FE=pr.high(it.fromClass(ig,{decorations:n=>n.decorations})),AN=ns.define([{tag:g.meta,color:"#404740"},{tag:g.link,textDecoration:"underline"},{tag:g.heading,textDecoration:"underline",fontWeight:"bold"},{tag:g.emphasis,fontStyle:"italic"},{tag:g.strong,fontWeight:"bold"},{tag:g.strikethrough,textDecoration:"line-through"},{tag:g.keyword,color:"#708"},{tag:[g.atom,g.bool,g.url,g.contentSeparator,g.labelName],color:"#219"},{tag:[g.literal,g.inserted],color:"#164"},{tag:[g.string,g.deleted],color:"#a11"},{tag:[g.regexp,g.escape,g.special(g.string)],color:"#e40"},{tag:g.definition(g.variableName),color:"#00f"},{tag:g.local(g.variableName),color:"#30a"},{tag:[g.typeName,g.namespace],color:"#085"},{tag:g.className,color:"#167"},{tag:[g.special(g.variableName),g.macroName],color:"#256"},{tag:g.definition(g.propertyName),color:"#00c"},{tag:g.comment,color:"#940"},{tag:g.invalid,color:"#f00"}]),YE=F.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Bw=1e4,Vw="()[]{}",Fw=oe.define({combine(n){return Yn(n,{afterCursor:!0,brackets:Vw,maxScanDistance:Bw,renderMatch:qE})}}),jE=J.mark({class:"cm-matchingBracket"}),UE=J.mark({class:"cm-nonmatchingBracket"});function qE(n){let e=[],t=n.matched?jE:UE;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}function Tw(n){let e=[],t=n.facet(Fw);for(let r of n.selection.ranges){if(!r.empty)continue;let i=Nr(n,r.head,-1,t)||r.head>0&&Nr(n,r.head-1,1,t)||t.afterCursor&&(Nr(n,r.head,1,t)||r.headn.decorations}),HE=[GE,YE];function Yw(n={}){return[Fw.of(n),HE]}var ug=new xe;function sg(n,e,t){let r=n.prop(e<0?xe.openedBy:xe.closedBy);if(r)return r;if(n.name.length==1){let i=t.indexOf(n.name);if(i>-1&&i%2==(e<0?1:0))return[t[i+e]]}return null}function og(n){let e=n.type.prop(ug);return e?e(n.node):n}function Nr(n,e,t,r={}){let i=r.maxScanDistance||Bw,s=r.brackets||Vw,o=ze(n),a=o.resolveInner(e,t);for(let l=a;l;l=l.parent){let c=sg(l.type,t,s);if(c&&l.from0?e>=d.from&&ed.from&&e<=d.to))return KE(n,e,t,l,d,c,s)}}return JE(n,e,t,o,a.type,i,s)}function KE(n,e,t,r,i,s,o){let a=r.parent,l={from:i.from,to:i.to},c=0,d=a==null?void 0:a.cursor();if(d&&(t<0?d.childBefore(r.from):d.childAfter(r.to)))do if(t<0?d.to<=r.from:d.from>=r.to){if(c==0&&s.indexOf(d.type.name)>-1&&d.from0)return null;let c={from:t<0?e-1:e,to:t>0?e+1:e},d=n.doc.iterRange(e,t>0?n.doc.length:0),h=0;for(let u=0;!d.next().done&&u<=s;){let f=d.value;t<0&&(u+=f.length);let m=e+u*t;for(let O=t>0?0:f.length-1,S=t>0?f.length:-1;O!=S;O+=t){let x=o.indexOf(f[O]);if(!(x<0||r.resolveInner(m+O,1).type!=i))if(x%2==0==t>0)h++;else{if(h==1)return{start:c,end:{from:m+O,to:m+O+1},matched:x>>1==l>>1};h--}}t>0&&(u+=f.length)}return d.done?{start:c,matched:!1}:null}function Aw(n,e,t,r=0,i=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let s=i;for(let o=r;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?o.toLowerCase():o,s=this.string.substr(this.pos,e.length);return i(s)==i(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let i=this.string.slice(this.pos).match(e);return i&&i.index>0?null:(i&&t!==!1&&(this.pos+=i[0].length),i)}}current(){return this.string.slice(this.start,this.pos)}};function eR(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||tR,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||pg,mergeTokens:n.mergeTokens!==!1}}function tR(n){if(typeof n!="object")return n;let e={};for(let t in n){let r=n[t];e[t]=r instanceof Array?r.slice():r}return e}var Cw=new WeakMap,zt=class n extends cn{constructor(e){let t=Uo(e.languageData),r=eR(e),i,s=new class extends Ti{createParse(o,a,l){return new ag(i,o,a,l)}};super(t,s,[],e.name),this.topNode=sR(t,this),i=this,this.streamParser=r,this.stateAfter=new xe({perNode:!0}),this.tokenTable=e.tokenTable?new Kd(r.tokenTable):iR}static define(e){return new n(e)}getIndent(e){let t,{overrideIndentation:r}=e.options;r&&(t=Cw.get(e.state),t!=null&&t1e4)return null;for(;s=r&&t+e.length<=i&&e.prop(n.stateAfter);if(s)return{state:n.streamParser.copyState(s),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let a=e.children[o],l=t+e.positions[o],c=a instanceof Ee&&l=e.length)return e;!i&&t==0&&e.type==n.topNode&&(i=!0);for(let s=e.children.length-1;s>=0;s--){let o=e.positions[s],a=e.children[s],l;if(ot&&fg(n,s.tree,0-s.offset,t,a),c;if(l&&l.pos<=r&&(c=jw(n,s.tree,t+s.offset,l.pos+s.offset,!1)))return{state:l.state,tree:c}}return{state:n.streamParser.startState(i?ii(i):4),tree:Ee.empty}}var ag=class{constructor(e,t,r,i){this.lang=e,this.input=t,this.fragments=r,this.ranges=i,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=i[i.length-1].to;let s=Us.get(),o=i[0].from,{state:a,tree:l}=nR(e,r,o,this.to,s==null?void 0:s.state);this.state=a,this.parsedPos=this.chunkStart=o+l.length;for(let c=0;cc.from<=s.viewport.from&&c.to>=s.viewport.from)&&(this.state=this.lang.streamParser.startState(ii(s.state)),s.skipUntilInView(this.parsedPos,s.viewport.from),this.parsedPos=s.viewport.from),this.moveRangeIndex()}advance(){let e=Us.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(t,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` +`){[e,t]=_o(this,e,t);let i="";for(let s=0,o=0;se&&s&&(i+=r),eo&&(i+=a.sliceString(e-o,t-o,r)),o=l+1}return i}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let r=0,[i,s,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;i+=t,s+=t){if(i==o||s==a)return r;let l=this.children[i],c=e.children[s];if(l!=c)return r+l.scanIdentical(c,t);r+=l.length+1}}static from(e,t=e.reduce((r,i)=>r+i.length+1,-1)){let r=0;for(let f of e)r+=f.lines;if(r<32){let f=[];for(let m of e)m.flatten(f);return new Fn(f,t)}let i=Math.max(32,r>>5),s=i<<1,o=i>>1,a=[],l=0,c=-1,d=[];function h(f){let m;if(f.lines>s&&f instanceof n)for(let O of f.children)h(O);else f.lines>o&&(l>o||!l)?(u(),a.push(f)):f instanceof Fn&&l&&(m=d[d.length-1])instanceof Fn&&f.lines+m.lines<=32?(l+=f.lines,c+=f.length+1,d[d.length-1]=new Fn(m.text.concat(f.text),m.length+1+f.length)):(l+f.lines>i&&u(),l+=f.lines,c+=f.length+1,d.push(f))}function u(){l!=0&&(a.push(d.length==1?d[0]:n.from(d,c)),c=-1,l=d.length=0)}for(let f of e)h(f);return u(),a.length==1?a[0]:new n(a,t)}};De.empty=new Fn([""],0);function HC(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Vc(n,e,t=0,r=1e9){for(let i=0,s=0,o=!0;s=t&&(l>r&&(a=a.slice(0,r-i)),i0?1:(e instanceof Fn?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,i=this.nodes[r],s=this.offsets[r],o=s>>1,a=i instanceof Fn?i.text.length:i.children.length;if(o==(t>0?a:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(i instanceof Fn){let l=i.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=i.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof Fn?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Fc=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new Zs(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:i}=this.cursor.next(e);return this.pos+=(i.length+e)*t,this.value=i.length<=r?i:t<0?i.slice(i.length-r):i.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Yc=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:i}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=i,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(De.prototype[Symbol.iterator]=function(){return this.iter()},Zs.prototype[Symbol.iterator]=Fc.prototype[Symbol.iterator]=Yc.prototype[Symbol.iterator]=function(){return this});var tp=class{constructor(e,t,r,i){this.from=e,this.to=t,this.number=r,this.text=i}get length(){return this.to-this.from}};function _o(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function Pt(n,e,t=!0,r=!0){return Yy(n,e,t,r)}function KC(n){return n>=56320&&n<57344}function JC(n){return n>=55296&&n<56320}function Ir(n,e){let t=n.charCodeAt(e);if(!JC(t)||e+1==n.length)return t;let r=n.charCodeAt(e+1);return KC(r)?(t-55296<<10)+(r-56320)+65536:t}function Hc(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function Yi(n){return n<65536?1:2}var np=/\r\n?|\n/,Xt=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(Xt||(Xt={})),vi=class n{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return s+(e-i);s+=a}else{if(r!=Xt.Simple&&c>=e&&(r==Xt.TrackDel&&ie||r==Xt.TrackBefore&&ie))return null;if(c>e||c==e&&t<0&&!a)return e==i||t<0?s:s+l;s+=l}i=c}if(e>i)throw new RangeError(`Position ${e} is out of range for changeset of length ${i}`);return s}touchesRange(e,t=e){for(let r=0,i=0;r=0&&i<=t&&a>=e)return it?"cover":!0;i=a}return!1}toString(){let e="";for(let t=0;t=0?":"+i:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},On=class n extends vi{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return rp(this,(t,r,i,s,o)=>e=e.replace(i,i+(r-t),o),!1),e}mapDesc(e,t=!1){return ip(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let i=0,s=0;i=0){t[i]=a,t[i+1]=o;let l=i>>1;for(;r.length0&&Fi(r,t,s.text),s.forward(d),a+=d}let c=e[o++];for(;a>1].toJSON()))}return e}static of(e,t,r){let i=[],s=[],o=0,a=null;function l(d=!1){if(!d&&!i.length)return;ou||h<0||u>t)throw new RangeError(`Invalid change range ${h} to ${u} (in doc of length ${t})`);let m=f?typeof f=="string"?De.of(f.split(r||np)):f:De.empty,O=m.length;if(h==u&&O==0)return;ho&&ln(i,h-o,-1),ln(i,u-h,O),Fi(s,i,m),o=u}}return c(e),l(!a),a}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],r=[];for(let i=0;ia&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;r.length=0&&t<=0&&t==n[i+1]?n[i]+=e:i>=0&&e==0&&n[i]==0?n[i+1]+=t:r?(n[i]+=e,n[i+1]+=t):n.push(e,t)}function Fi(n,e,t){if(t.length==0)return;let r=e.length-2>>1;if(r>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)a=n.sections[o++],l=n.sections[o++];e(i,c,s,d,h),i=c,s=d}}}function ip(n,e,t,r=!1){let i=[],s=r?[]:null,o=new Is(n),a=new Is(e);for(let l=-1;;){if(o.done&&a.len||a.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&a.ins==-1){let c=Math.min(o.len,a.len);ln(i,c,-1),o.forward(c),a.forward(c)}else if(a.ins>=0&&(o.ins<0||l==o.i||o.off==0&&(a.len=0&&l=0){let c=0,d=o.len;for(;d;)if(a.ins==-1){let h=Math.min(d,a.len);c+=h,d-=h,a.forward(h)}else if(a.ins==0&&a.lenl||o.ins>=0&&o.len>l)&&(a||r.length>c),s.forward2(l),o.forward(l)}}}}var Is=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?De.empty:e[t]}textBit(e){let{inserted:t}=this.set,r=this.i-2>>1;return r>=t.length&&!e?De.empty:t[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},Ms=class n{constructor(e,t,r,i){this.from=e,this.to=t,this.flags=r,this.goalColumn=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,t=-1){let r,i;return this.empty?r=i=e.mapPos(this.from,t):(r=e.mapPos(this.from,1),i=e.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new n(r,i,this.flags,this.goalColumn)}extend(e,t=e,r=0){if(e<=this.anchor&&t>=this.anchor)return z.range(e,t,void 0,void 0,r);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return z.range(this.anchor,i,void 0,void 0,r)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return z.range(e.anchor,e.head)}static create(e,t,r,i){return new n(e,t,r,i)}},z=class n{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(r=>r.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>Ms.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,i=0;ii.from-s.from),t=e.indexOf(r);for(let i=1;is.head?n.range(l,a):n.range(a,l))}}return new n(e,t)}};function nS(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var pp=0,oe=class n{constructor(e,t,r,i,s){this.combine=e,this.compareInput=t,this.compare=r,this.isStatic=i,this.id=pp++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,r)=>t===r),e.compare||(e.combine?(t,r)=>t===r:mp),!!e.static,e.enables)}of(e){return new Ao([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ao(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ao(e,this,2,t)}from(e,t){return t||(t=r=>r),this.compute([e],r=>t(r.field(e)))}};function mp(n,e){return n==e||n.length==e.length&&n.every((t,r)=>t===e[r])}var Ao=class{constructor(e,t,r,i){this.dependencies=e,this.facet=t,this.type=r,this.value=i,this.id=pp++}dynamicSlot(e){var t;let r=this.value,i=this.facet.compareInput,s=this.id,o=e[s]>>1,a=this.type==2,l=!1,c=!1,d=[];for(let h of this.dependencies)h=="doc"?l=!0:h=="selection"?c=!0:(((t=e[h.id])!==null&&t!==void 0?t:1)&1)==0&&d.push(e[h.id]);return{create(h){return h.values[o]=r(h),1},update(h,u){if(l&&u.docChanged||c&&(u.docChanged||u.selection)||sp(h,d)){let f=r(h);if(a?!Hy(f,h.values[o],i):!i(f,h.values[o]))return h.values[o]=f,1}return 0},reconfigure:(h,u)=>{let f,m=u.config.address[s];if(m!=null){let O=qc(u,m);if(this.dependencies.every(S=>S instanceof oe?u.facet(S)===h.facet(S):S instanceof Xe?u.field(S,!1)==h.field(S,!1):!0)||(a?Hy(f=r(h),O,i):i(f=r(h),O)))return h.values[o]=O,0}else f=r(h);return h.values[o]=f,1}}}get extension(){return this}};function Hy(n,e,t){if(n.length!=e.length)return!1;for(let r=0;rn[l.id]),i=t.map(l=>l.type),s=r.filter(l=>!(l&1)),o=n[e.id]>>1;function a(l){let c=[];for(let d=0;dr===i),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Wc).find(r=>r.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:r=>(r.values[t]=this.create(r),1),update:(r,i)=>{let s=r.values[t],o=this.updateF(s,i);return this.compareF(s,o)?0:(r.values[t]=o,1)},reconfigure:(r,i)=>{let s=r.facet(Wc),o=i.facet(Wc),a;return(a=s.find(l=>l.field==this))&&a!=o.find(l=>l.field==this)?(r.values[t]=a.create(r),1):i.config.address[this.id]!=null?(r.values[t]=i.field(this),0):(r.values[t]=this.create(r),1)}}}init(e){return[this,Wc.of({field:this,create:e})]}get extension(){return this}},Ls={lowest:4,low:3,default:2,high:1,highest:0};function Ba(n){return e=>new jc(e,n)}var pr={highest:Ba(Ls.highest),high:Ba(Ls.high),default:Ba(Ls.default),low:Ba(Ls.low),lowest:Ba(Ls.lowest)},jc=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Vt=class n{of(e){return new Fa(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},Fa=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Uc=class n{constructor(e,t,r,i,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=r,this.address=i,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,r){let i=[],s=Object.create(null),o=new Map;for(let u of t_(e,t,o))u instanceof Xe?i.push(u):(s[u.facet.id]||(s[u.facet.id]=[])).push(u);let a=Object.create(null),l=[],c=[];for(let u of i)a[u.id]=c.length<<1,c.push(f=>u.slot(f));let d=r==null?void 0:r.config.facets;for(let u in s){let f=s[u],m=f[0].facet,O=d&&d[u]||[];if(f.every(S=>S.type==0))if(a[m.id]=l.length<<1|1,mp(O,f))l.push(r.facet(m));else{let S=m.combine(f.map(x=>x.value));l.push(r&&m.compare(S,r.facet(m))?r.facet(m):S)}else{for(let S of f)S.type==0?(a[S.id]=l.length<<1|1,l.push(S.value)):(a[S.id]=c.length<<1,c.push(x=>S.dynamicSlot(x)));a[m.id]=c.length<<1,c.push(S=>e_(S,m,f))}}let h=c.map(u=>u(a));return new n(e,o,h,a,l,s)}};function t_(n,e,t){let r=[[],[],[],[],[]],i=new Map;function s(o,a){let l=i.get(o);if(l!=null){if(l<=a)return;let c=r[l].indexOf(o);c>-1&&r[l].splice(c,1),o instanceof Fa&&t.delete(o.compartment)}if(i.set(o,a),Array.isArray(o))for(let c of o)s(c,a);else if(o instanceof Fa){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let c=e.get(o.compartment)||o.inner;t.set(o.compartment,c),s(c,a)}else if(o instanceof jc)s(o.inner,o.prec);else if(o instanceof Xe)r[a].push(o),o.provides&&s(o.provides,a);else if(o instanceof Ao)r[a].push(o),o.facet.extensions&&s(o.facet.extensions,Ls.default);else{let c=o.extension;if(!c)throw new Error(`Unrecognized extension value in extension set (${o}).`);if(c==o)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(c,a)}}return s(n,Ls.default),r.reduce((o,a)=>o.concat(a))}function Va(n,e){if(e&1)return 2;let t=e>>1,r=n.status[t];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;n.status[t]=4;let i=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|i}function qc(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}var rS=oe.define(),op=oe.define({combine:n=>n.some(e=>e),static:!0}),iS=oe.define({combine:n=>n.length?n[0]:void 0,static:!0}),sS=oe.define(),oS=oe.define(),aS=oe.define(),lS=oe.define({combine:n=>n.length?n[0]:!1}),Tn=class{constructor(e,t){this.type=e,this.value=t}static define(){return new ap}},ap=class{of(e){return new Tn(this,e)}},lp=class{constructor(e){this.map=e}of(e){return new ye(this,e)}},ye=class n{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new lp(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let r=[];for(let i of e){let s=i.map(t);s&&r.push(s)}return r}};ye.reconfigure=ye.define();ye.appendConfig=ye.define();var ut=class n{constructor(e,t,r,i,s,o){this.startState=e,this.changes=t,this.selection=r,this.effects=i,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,r&&nS(r,t.newLength),s.some(a=>a.type==n.time)||(this.annotations=s.concat(n.time.of(Date.now())))}static create(e,t,r,i,s,o){return new n(e,t,r,i,s,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};ut.time=Tn.define();ut.userEvent=Tn.define();ut.addToHistory=Tn.define();ut.remote=Tn.define();function n_(n,e){let t=[];for(let r=0,i=0;;){let s,o;if(r=n[r]))s=n[r++],o=n[r++];else if(i=0;i--){let s=r[i](n);s instanceof ut?n=s:Array.isArray(s)&&s.length==1&&s[0]instanceof ut?n=s[0]:n=dS(e,Co(s),!1)}return n}function i_(n){let e=n.startState,t=e.facet(aS),r=n;for(let i=t.length-1;i>=0;i--){let s=t[i](n);s&&Object.keys(s).length&&(r=cS(r,cp(e,s,n.changes.newLength),!0))}return r==n?n:ut.create(e,n.changes,n.selection,r.effects,r.annotations,r.scrollIntoView)}var s_=[];function Co(n){return n==null?s_:Array.isArray(n)?n:[n]}var et=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(et||(et={})),o_=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,dp;try{dp=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(n){}function a_(n){if(dp)return dp.test(n);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||o_.test(t)))return!0}return!1}function l_(n){return e=>{if(!/\S/.test(e))return et.Space;if(a_(e))return et.Word;for(let t=0;t-1)return et.Word;return et.Other}}var Me=class n{constructor(e,t,r,i,s,o){this.config=e,this.doc=t,this.selection=r,this.values=i,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let a=0;ai.set(c,l)),t=null),i.set(a.value.compartment,a.value.extension)):a.is(ye.reconfigure)?(t=null,r=a.value):a.is(ye.appendConfig)&&(t=null,r=Co(r).concat(a.value));let s;t?s=e.startState.values.slice():(t=Uc.resolve(r,i,this),s=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,c)=>c.reconfigure(l,this),null).values);let o=e.startState.facet(op)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,s,(a,l)=>l.update(a,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:z.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,r=e(t.ranges[0]),i=this.changes(r.changes),s=[r.range],o=Co(r.effects);for(let a=1;ao.spec.fromJSON(a,l)))}}return n.create({doc:e.doc,selection:z.fromJSON(e.selection),extensions:t.extensions?i.concat([t.extensions]):i})}static create(e={}){let t=Uc.resolve(e.extensions||[],new Map),r=e.doc instanceof De?e.doc:De.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||np)),i=e.selection?e.selection instanceof z?e.selection:z.single(e.selection.anchor,e.selection.head):z.single(0);return nS(i,r.length),t.staticFacet(op)||(i=i.asSingle()),new n(t,r,i,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(lS)}phrase(e,...t){for(let r of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(r,i)=>{if(i=="$")return"$";let s=+(i||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let i=[];for(let s of this.facet(rS))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&i.push(o[e]);return i}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return l_(t.length?t[0]:"")}wordAt(e){let{text:t,from:r,length:i}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,a=e-r;for(;o>0;){let l=Pt(t,o,!1);if(s(t.slice(l,o))!=et.Word)break;o=l}for(;an.length?n[0]:4});Me.lineSeparator=iS;Me.readOnly=lS;Me.phrases=oe.define({compare(n,e){let t=Object.keys(n),r=Object.keys(e);return t.length==r.length&&t.every(i=>n[i]==e[i])}});Me.languageData=rS;Me.changeFilter=sS;Me.transactionFilter=oS;Me.transactionExtender=aS;Vt.reconfigure=ye.define();function Yn(n,e,t={}){let r={};for(let i of n)for(let s of Object.keys(i)){let o=i[s],a=r[s];if(a===void 0)r[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))r[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let i in e)r[i]===void 0&&(r[i]=e[i]);return r}var fr=class{eq(e){return this==e}range(e,t=e){return Ya.create(e,t,this)}};fr.prototype.startSide=fr.prototype.endSide=0;fr.prototype.point=!1;fr.prototype.mapMode=Xt.TrackDel;function gp(n,e){return n==e||n.constructor==e.constructor&&n.eq(e)}var Ya=class n{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new n(e,t,r)}};function hp(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}var up=class n{constructor(e,t,r,i){this.from=e,this.to=t,this.value=r,this.maxPoint=i}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,i=0){let s=r?this.to:this.from;for(let o=i,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,i){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);sf||u==f&&c.startSide>0&&c.endSide<=0)continue;(f-u||c.endSide-c.startSide)<0||(o<0&&(o=u),c.point&&(a=Math.max(a,f-u)),r.push(c),i.push(u-o),s.push(f-o))}return{mapped:r.length?new n(i,s,r,a):null,pos:o}}},$e=class n{constructor(e,t,r,i){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=i}static create(e,t,r,i){return new n(e,t,r,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:i=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort(hp)),this.isEmpty)return t.length?n.of(t):this;let a=new Gc(this,null,-1).goto(0),l=0,c=[],d=new Zr;for(;a.value||l=0){let h=t[l++];d.addInner(h.from,h.to,h.value)||c.push(h)}else a.rangeIndex==1&&a.chunkIndexthis.chunkEnd(a.chunkIndex)||sa.to||s=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return ja.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return ja.from(e).goto(t)}static compare(e,t,r,i,s=-1){let o=e.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),a=t.filter(h=>h.maxPoint>0||!h.isEmpty&&h.maxPoint>=s),l=Ky(o,a,r),c=new Ds(o,l,s),d=new Ds(a,l,s);r.iterGaps((h,u,f)=>Jy(c,h,d,u,f,i)),r.empty&&r.length==0&&Jy(c,0,d,0,0,i)}static eq(e,t,r=0,i){i==null&&(i=999999999);let s=e.filter(d=>!d.isEmpty&&t.indexOf(d)<0),o=t.filter(d=>!d.isEmpty&&e.indexOf(d)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let a=Ky(s,o),l=new Ds(s,a,0).goto(r),c=new Ds(o,a,0).goto(r);for(;;){if(l.to!=c.to||!fp(l.active,c.active)||l.point&&(!c.point||!gp(l.point,c.point)))return!1;if(l.to>i)return!0;l.next(),c.next()}}static spans(e,t,r,i,s=-1){let o=new Ds(e,null,s).goto(t),a=t,l=o.openStart;for(;;){let c=Math.min(o.to,r);if(o.point){let d=o.activeForPoint(o.to),h=o.pointFroma&&(i.span(a,c,o.active,l),l=o.openEnd(c));if(o.to>r)return l+(o.point&&o.to>r?1:0);a=o.to,o.next()}}static of(e,t=!1){let r=new Zr;for(let i of e instanceof Ya?[e]:t?c_(e):e)r.add(i.from,i.to,i.value);return r.finish()}static join(e){if(!e.length)return n.empty;let t=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let i=e[r];i!=n.empty;i=i.nextLayer)t=new n(i.chunkPos,i.chunk,t,Math.max(i.maxPoint,t.maxPoint));return t}};$e.empty=new $e([],[],null,-1);function c_(n){if(n.length>1)for(let e=n[0],t=1;t0)return n.slice().sort(hp);e=r}return n}$e.empty.nextLayer=$e.empty;var Zr=class n{finishChunk(e){this.chunks.push(new up(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,r){this.addInner(e,t,r)||(this.nextLayer||(this.nextLayer=new n)).add(e,t,r)}addInner(e,t,r){let i=e-this.lastTo||r.startSide-this.last.endSide;if(i<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return i<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=t,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let r=t.value.length-1;return this.last=t.value[r],this.lastFrom=t.from[r]+e,this.lastTo=t.to[r]+e,!0}finish(){return this.finishInner($e.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=$e.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Ky(n,e,t){let r=new Map;for(let s of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&i.push(new Gc(o,t,r,s));return i.length==1?i[0]:new n(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let r of this.heap)r.goto(e,t);for(let r=this.heap.length>>1;r>=0;r--)ep(this.heap,r);return this.next(),this}forward(e,t){for(let r of this.heap)r.forward(e,t);for(let r=this.heap.length>>1;r>=0;r--)ep(this.heap,r);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),ep(this.heap,0)}}};function ep(n,e){for(let t=n[e];;){let r=(e<<1)+1;if(r>=n.length)break;let i=n[r];if(r+1=0&&(i=n[r+1],r++),t.compare(i)<0)break;n[r]=t,n[e]=i,e=r}}var Ds=class{constructor(e,t,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=ja.from(e,t,r)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Nc(this.active,e),Nc(this.activeTo,e),Nc(this.activeRank,e),this.minActive=eS(this.active,this.activeTo)}addActive(e){let t=0,{value:r,to:i,rank:s}=this.cursor;for(;t0;)t++;Bc(this.active,t,r),Bc(this.activeTo,t,i),Bc(this.activeRank,t,s),e&&Bc(e,t,this.cursor.from),this.minActive=eS(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let i=this.minActive;if(i>-1&&(this.activeTo[i]-this.cursor.from||this.active[i].endSide-this.cursor.startSide)<0){if(this.activeTo[i]>e){this.to=this.activeTo[i],this.endSide=this.active[i].endSide;break}this.removeActive(i),r&&Nc(r,i)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(r),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&r[i]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&t.push(this.active[r]);return t.reverse()}openEnd(e){let t=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)t++;return t}};function Jy(n,e,t,r,i,s){n.goto(e),t.goto(r);let o=r+i,a=r,l=r-e,c=!!s.boundChange;for(let d=!1;;){let h=n.to+l-t.to,u=h||n.endSide-t.endSide,f=u<0?n.to+l:t.to,m=Math.min(f,o);if(n.point||t.point?(n.point&&t.point&&gp(n.point,t.point)&&fp(n.activeForPoint(n.to),t.activeForPoint(t.to))||s.comparePoint(a,m,n.point,t.point),d=!1):(d&&s.boundChange(a),m>a&&!fp(n.active,t.active)&&s.compareRange(a,m,n.active,t.active),c&&mo)break;a=f,u<=0&&n.next(),u>=0&&t.next()}}function fp(n,e){if(n.length!=e.length)return!1;for(let t=0;t=e;r--)n[r+1]=n[r];n[e]=t}function eS(n,e){let t=-1,r=1e9;for(let i=0;i=e)return i;if(i==n.length)break;s+=n.charCodeAt(i)==9?t-s%t:1,i=Pt(n,i)}return r===!0?-1:n.length}var hS=typeof Symbol=="undefined"?"__\u037C":Symbol.for("\u037C"),Op=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),uS=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},mr=class{constructor(e,t){this.rules=[];let{finish:r}=t||{};function i(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function s(o,a,l,c){let d=[],h=/^@(\w+)\b/.exec(o[0]),u=h&&h[1]=="keyframes";if(h&&a==null)return l.push(o[0]+";");for(let f in a){let m=a[f];if(/&/.test(f))s(f.split(/,\s*/).map(O=>o.map(S=>O.replace(/&/,S))).reduce((O,S)=>O.concat(S)),m,l);else if(m&&typeof m=="object"){if(!h)throw new RangeError("The value of a property ("+f+") should be a primitive value.");s(i(f),m,d,u)}else m!=null&&d.push(f.replace(/_.*/,"").replace(/[A-Z]/g,O=>"-"+O.toLowerCase())+": "+m+";")}(d.length||u)&&l.push((r&&!h&&!c?o.map(r):o).join(", ")+" {"+d.join(" ")+"}")}for(let o in e)s(i(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=uS[hS]||1;return uS[hS]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let i=e[Op],s=r&&r.nonce;i?s&&i.setNonce(s):i=new bp(e,s),i.mount(Array.isArray(t)?t:[t],e)}},fS=new Map,bp=class{constructor(e,t){let r=e.ownerDocument||e,i=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&i.CSSStyleSheet){let s=fS.get(r);if(s)return e[Op]=s;this.sheet=new i.CSSStyleSheet,fS.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Op]=this}mount(e,t){let r=this.sheet,i=0,s=0;for(let o=0;o-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,a),r)for(let c=0;c",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},d_=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),h_=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(At=0;At<10;At++)wi[48+At]=wi[96+At]=String(At);var At;for(At=1;At<=24;At++)wi[At+111]="F"+At;var At;for(At=65;At<=90;At++)wi[At]=String.fromCharCode(At+32),Eo[At]=String.fromCharCode(At);var At;for(Jc in wi)Eo.hasOwnProperty(Jc)||(Eo[Jc]=wi[Jc]);var Jc;function pS(n){var e=d_&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||h_&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Eo:wi)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function kt(){var n=arguments[0];typeof n=="string"&&(n=document.createElement(n));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var i=t[r];typeof i=="string"?n.setAttribute(r,i):i!=null&&(n[r]=i)}e++}for(;e2),ae={mac:bS||/Mac/.test(bn.platform),windows:/Win/.test(bn.platform),linux:/Linux|X11/.test(bn.platform),ie:Ed,ie_version:ev?Tp.documentMode||6:Cp?+Cp[1]:Ap?+Ap[1]:0,gecko:gS,gecko_version:gS?+(/Firefox\/(\d+)/.exec(bn.userAgent)||[0,0])[1]:0,chrome:!!yp,chrome_version:yp?+yp[1]:0,ios:bS,android:/Android\b/.test(bn.userAgent),webkit:OS,webkit_version:OS?+(/\bAppleWebKit\/(\d+)/.exec(bn.userAgent)||[0,0])[1]:0,safari:_p,safari_version:_p?+(/\bVersion\/(\d+(\.\d+)?)/.exec(bn.userAgent)||[0,0])[1]:0,tabSize:Tp.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function wm(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}var pd=Object.create(null);function xm(n,e,t){if(n==e)return!0;n||(n=pd),e||(e=pd);let r=Object.keys(n),i=Object.keys(e);if(r.length-(t&&r.indexOf(t)>-1?1:0)!=i.length-(t&&i.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(i.indexOf(s)==-1||n[s]!==e[s]))return!1;return!0}function u_(n,e){for(let t=n.attributes.length-1;t>=0;t--){let r=n.attributes[t].name;e[r]==null&&n.removeAttribute(r)}for(let t in e){let r=e[t];t=="style"?n.style.cssText=r:n.getAttribute(t)!=r&&n.setAttribute(t,r)}}function yS(n,e,t){let r=!1;if(e)for(let i in e)t&&i in t||(r=!0,i=="style"?n.style.cssText="":n.removeAttribute(i));if(t)for(let i in t)e&&e[i]==t[i]||(r=!0,i=="style"?n.style.cssText=t[i]:n.setAttribute(i,t[i]));return r}function f_(n){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new Ns(e,t,t,r,e.widget||null,!1)}static replace(e){let t=!!e.block,r,i;if(e.isBlockGap)r=-5e8,i=4e8;else{let{start:s,end:o}=tv(e,t);r=(s?t?-3e8:-1:5e8)-1,i=(o?t?2e8:1:-6e8)+1}return new Ns(e,r,i,t,e.widget||null,!0)}static line(e){return new al(e)}static set(e,t=!1){return $e.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};J.none=$e.empty;var ol=class n extends J{constructor(e){let{start:t,end:r}=tv(e);super(t?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?wm(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||pd}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&xm(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};ol.prototype.point=!1;var al=class n extends J{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&xm(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};al.prototype.mapMode=Xt.TrackBefore;al.prototype.point=!0;var Ns=class n extends J{constructor(e,t,r,i,s,o){super(t,r,s,e),this.block=i,this.isReplace=o,this.mapMode=i?t<=0?Xt.TrackBefore:Xt.TrackAfter:Xt.TrackDel}get type(){return this.startSide!=this.endSide?Ht.WidgetRange:this.startSide<=0?Ht.WidgetBefore:Ht.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof n&&p_(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};Ns.prototype.point=!0;function tv(n,e=!1){let{inclusiveStart:t,inclusiveEnd:r}=n;return t==null&&(t=n.inclusive),r==null&&(r=n.inclusive),{start:t!=null?t:e,end:r!=null?r:e}}function p_(n,e){return n==e||!!(n&&e&&n.compare(e))}function Io(n,e,t,r=0){let i=t.length-1;i>=0&&t[i]+r>=n?t[i]=Math.max(t[i],e):t.push(n,e)}var md=class n extends fr{constructor(e,t,r){super(),this.tagName=e,this.attributes=t,this.rank=r}eq(e){return e==this||e instanceof n&&this.tagName==e.tagName&&xm(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||pd,e.rank==null?50:Math.max(0,Math.min(e.rank,100)))}static set(e,t=!1){return $e.of(e,t)}};md.prototype.startSide=md.prototype.endSide=-1;function ll(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Ep(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function Ha(n,e){if(!e.anchorNode)return!1;try{return Ep(n,e.anchorNode)}catch(t){return!1}}function cd(n){return n.nodeType==3?cl(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function Ka(n,e,t,r){return t?SS(n,e,t,r,-1)||SS(n,e,t,r,1):!1}function qi(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function gd(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function SS(n,e,t,r,i){for(;;){if(n==t&&e==r)return!0;if(e==(i<0?0:ki(n))){if(n.nodeName=="DIV")return!1;let s=n.parentNode;if(!s||s.nodeType!=1)return!1;e=qi(n)+(i<0?0:1),n=s}else if(n.nodeType==1){if(n=n.childNodes[e+(i<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=i<0?ki(n):0}else return!1}}function ki(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function Od(n,e){let{left:t,right:r}=n;if(t==r)return n;let i=e?t:r;return{left:i,right:i,top:n.top,bottom:n.bottom}}function m_(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function nv(n,e){let t=e.width/n.offsetWidth,r=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-n.offsetHeight)<1)&&(r=1),{scaleX:t,scaleY:r}}function g_(n,e,t,r,i,s,o,a){let l=n.ownerDocument,c=l.defaultView||window;for(let d=n,h=!1;d&&!h;)if(d.nodeType==1){let u,f=d==l.body,m=1,O=1;if(f)u=m_(c);else{if(/^(fixed|sticky)$/.test(getComputedStyle(d).position)&&(h=!0),d.scrollHeight<=d.clientHeight&&d.scrollWidth<=d.clientWidth){d=d.assignedSlot||d.parentNode;continue}let D=d.getBoundingClientRect();({scaleX:m,scaleY:O}=nv(d,D)),u={left:D.left,right:D.left+d.clientWidth*m,top:D.top,bottom:D.top+d.clientHeight*O}}let S=0,x=0;if(i=="nearest")e.top0&&e.bottom>u.bottom+x&&(x=e.bottom-u.bottom+o)):e.bottom>u.bottom-o&&(x=e.bottom-u.bottom+o,t<0&&e.top-x0&&e.right>u.right+S&&(S=e.right-u.right+s)):e.right>u.right-s&&(S=e.right-u.right+s,t<0&&e.leftu.bottom||e.leftu.right)&&(e={left:Math.max(e.left,u.left),right:Math.min(e.right,u.right),top:Math.max(e.top,u.top),bottom:Math.min(e.bottom,u.bottom)}),d=d.assignedSlot||d.parentNode}else if(d.nodeType==11)d=d.host;else break}function rv(n,e=!0){let t=n.ownerDocument,r=null,i=null;for(let s=n.parentNode;s&&!(s==t.body||(!e||r)&&i);)if(s.nodeType==1)!i&&s.scrollHeight>s.clientHeight&&(i=s),e&&!r&&s.scrollWidth>s.clientWidth&&(r=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:r,y:i}}var Rp=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:r}=e;this.set(t,Math.min(e.anchorOffset,t?ki(t):0),r,Math.min(e.focusOffset,r?ki(r):0))}set(e,t,r,i){this.anchorNode=e,this.anchorOffset=t,this.focusNode=r,this.focusOffset=i}};function iv(n){let e=[];for(let t=n;t;t=t.nodeType==11?t.host:t.parentNode)t.nodeType==1&&e.push({node:t,left:t.scrollLeft,top:t.scrollTop});return e}function sv(n,e=!0){for(let{node:t,left:r,top:i}of n)e&&t.scrollTop!=i&&(t.scrollTop=i),t.scrollLeft!=r&&(t.scrollLeft=r)}var Xs=null;ae.safari&&ae.safari_version>=26&&(Xs=!1);function ov(n){if(n.setActive)return n.setActive();if(Xs)return n.focus(Xs);let e=iv(n);n.focus(Xs==null?{get preventScroll(){return Xs={preventScroll:!0},!0}}:void 0),Xs||(Xs=!1,sv(e))}var vS;function cl(n,e,t=e){let r=vS||(vS=document.createRange());return r.setEnd(n,t),r.setStart(n,e),r}function Xo(n,e,t,r){let i={key:e,code:e,keyCode:t,which:t,cancelable:!0};r&&({altKey:i.altKey,ctrlKey:i.ctrlKey,shiftKey:i.shiftKey,metaKey:i.metaKey}=r);let s=new KeyboardEvent("keydown",i);s.synthetic=!0,n.dispatchEvent(s);let o=new KeyboardEvent("keyup",i);return o.synthetic=!0,n.dispatchEvent(o),s.defaultPrevented||o.defaultPrevented}function O_(n){for(;n;){if(n&&(n.nodeType==9||n.nodeType==11&&n.host))return n;n=n.assignedSlot||n.parentNode}return null}function b_(n,e){let t=e.focusNode,r=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=r)return!1;for(r=Math.min(r,ki(t));;)if(r){if(t.nodeType!=1)return!1;let i=t.childNodes[r-1];i.contentEditable=="false"?r--:(t=i,r=ki(t))}else{if(t==n)return!0;r=qi(t),t=t.parentNode}}function av(n){return n instanceof Window?n.pageYOffset>Math.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function lv(n,e){for(let t=n,r=e;;){if(t.nodeType==3&&r>0)return{node:t,offset:r};if(t.nodeType==1&&r>0){if(t.contentEditable=="false")return null;t=t.childNodes[r-1],r=ki(t)}else if(t.parentNode&&!gd(t))r=qi(t),t=t.parentNode;else return null}}function cv(n,e){for(let t=n,r=e;;){if(t.nodeType==3&&r=t){if(a.level==r)return o;(s<0||(i!=0?i<0?a.fromt:e[s].level>a.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}};function uv(n,e){if(n.length!=e.length)return!1;for(let t=0;t=0;O-=3)if(Kr[O+1]==-f){let S=Kr[O+2],x=S&2?i:S&4?S&1?s:i:0;x&&(rt[h]=rt[Kr[O]]=x),a=O;break}}else{if(Kr.length==189)break;Kr[a++]=h,Kr[a++]=u,Kr[a++]=l}else if((m=rt[h])==2||m==1){let O=m==i;l=O?0:1;for(let S=a-3;S>=0;S-=3){let x=Kr[S+2];if(x&2)break;if(O)Kr[S+2]|=2;else{if(x&4)break;Kr[S+2]|=4}}}}}function P_(n,e,t,r){for(let i=0,s=r;i<=t.length;i++){let o=i?t[i-1].to:n,a=il;)m==S&&(m=t[--O].from,S=O?t[O-1].to:n),rt[--m]=f;l=d}else s=c,l++}}}function Lp(n,e,t,r,i,s,o){let a=r%2?2:1;if(r%2==i%2)for(let l=e,c=0;ll&&o.push(new br(l,O.from,f));let S=O.direction==Bs!=!(f%2);Dp(n,S?r+1:r,i,O.inner,O.from,O.to,o),l=O.to}m=O.to}else{if(m==t||(d?rt[m]!=a:rt[m]==a))break;m++}u?Lp(n,l,m,r+1,i,u,o):le;){let d=!0,h=!1;if(!c||l>s[c-1].to){let O=rt[l-1];O!=a&&(d=!1,h=O==16)}let u=!d&&a==1?[]:null,f=d?r:r+1,m=l;e:for(;;)if(c&&m==s[c-1].to){if(h)break e;let O=s[--c];if(!d)for(let S=O.from,x=c;;){if(S==e)break e;if(x&&s[x-1].to==S)S=s[--x].from;else{if(rt[S-1]==a)break e;break}}if(u)u.push(O);else{O.tort.length;)rt[rt.length]=256;let r=[],i=e==Bs?0:1;return Dp(n,i,i,t,0,n.length,r),r}function fv(n){return[new br(0,n,0)]}var pv="";function $_(n,e,t,r,i){var s;let o=r.head-n.from,a=br.find(e,o,(s=r.bidiLevel)!==null&&s!==void 0?s:-1,r.assoc),l=e[a],c=l.side(i,t);if(o==c){let u=a+=i?1:-1;if(u<0||u>=e.length)return null;l=e[a=u],o=l.side(!i,t),c=l.side(i,t)}let d=Pt(n.text,o,l.forward(i,t));(dl.to)&&(d=c),pv=n.text.slice(Math.min(o,d),Math.max(o,d));let h=a==(i?e.length-1:0)?null:e[a+(i?1:-1)];return h&&d==c&&h.level+(i?0:1)n.some(e=>e)}),wv=oe.define({combine:n=>n.some(e=>e)}),xv=oe.define(),Ja=class n{constructor(e,t,r,i,s,o=!1){this.range=e,this.y=t,this.x=r,this.yMargin=i,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new n(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new n(z.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},ed=ye.define({map:(n,e)=>n.map(e)}),Pv=ye.define();function jn(n,e,t){let r=n.facet(bv);r.length?r[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var xi=oe.define({combine:n=>n.length?n[0]:!0}),T_=0,Mo=oe.define({combine(n){return n.filter((e,t)=>{for(let r=0;r{let l=[];return o&&l.push(Rd.of(c=>{let d=c.plugin(a);return d?o(d):J.none})),s&&l.push(s(a)),l})}static fromClass(e,t){return n.define((r,i)=>new e(r,i),t)}},el=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(r){if(jn(t.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(i){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){jn(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(r){jn(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},kv=oe.define(),Qm=oe.define(),Rd=oe.define(),$v=oe.define(),Tm=oe.define(),ul=oe.define(),Qv=oe.define();function wS(n,e){let t=n.state.facet(Qv);if(!t.length)return t;let r=t.map(s=>s instanceof Function?s(n):s),i=[];return $e.spans(r,e.from,e.to,{point(){},span(s,o,a,l){let c=s-e.from,d=o-e.from,h=i;for(let u=a.length-1;u>=0;u--,l--){let f=a[u].spec.bidiIsolate,m;if(f==null&&(f=Q_(e.text,c,d)),l>0&&h.length&&(m=h[h.length-1]).to==c&&m.direction==f)m.to=d,h=m.inner;else{let O={from:c,to:d,direction:f,inner:[]};h.push(O),h=O.inner}}}}),i}var Tv=oe.define();function Am(n){let e=0,t=0,r=0,i=0;for(let s of n.state.facet(Tv)){let o=s(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(r=Math.max(r,o.top)),o.bottom!=null&&(i=Math.max(i,o.bottom)))}return{left:e,right:t,top:r,bottom:i}}var Ua=oe.define(),zr=class n{constructor(e,t,r,i){this.fromA=e,this.toA=t,this.fromB=r,this.toB=i}join(e){return new n(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,r=this;for(;t>0;t--){let i=e[t-1];if(!(i.fromA>r.toA)){if(i.toAi.push(new zr(s,o,a,l))),this.changedRanges=i}static create(e,t,r){return new n(e,t,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},A_=[],mt=class{constructor(e,t,r=0){this.dom=e,this.length=t,this.flags=r,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return A_}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&u_(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let r=t;for(let i of this.children){if(i==e)return r;r+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t,r){return null}domPosFor(e,t){let r=qi(this.dom),i=this.length?e>0:t>0;return new Jr(this.parent.dom,r+(i?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof Wo)return e;return null}static get(e){return e.cmTile}},zo=class extends mt{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,r=null,i,s=(e==null?void 0:e.node)==t?e:null,o=0;for(let a of this.children){if(a.sync(e),o+=a.length+a.breakAfter,i=r?r.nextSibling:t.firstChild,s&&i!=a.dom&&(s.written=!0),a.dom.parentNode==t)for(;i&&i!=a.dom;)i=xS(i);else t.insertBefore(a.dom,i);r=a.dom}for(i=r?r.nextSibling:t.firstChild,s&&i&&(s.written=!0);i;)i=xS(i);this.length=o}};function xS(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}var Wo=class extends zo{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=mt.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],r=this,i=0,s=0;;)if(i==r.children.length){if(!t.length)return;r=r.parent,r.breakAfter&&s++,i=t.pop()}else{let o=r.children[i++];if(o instanceof Pi)t.push(i),r=o,i=0;else{let a=s+o.length,l=e(o,s);if(l!==void 0)return l;s=a+o.breakAfter}}}resolveBlock(e,t){let r,i=-1,s,o=-1;if(this.blockTiles((a,l)=>{let c=l+a.length;if(e>=l&&e<=c){if(a.isWidget()&&t>=-1&&t<=1){if(a.flags&32)return!0;a.flags&16&&(r=void 0)}(le||e==l&&(t>1?a.length:a.covers(-1)))&&(!s||!a.isWidget()&&s.isWidget())&&(s=a,o=e-l)}}),!r&&!s)throw new Error("No tile at position "+e);return r&&t<0||!s?{tile:r,offset:i}:{tile:s,offset:o}}},Pi=class n extends zo{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let r=new n(t||document.createElement(e.tagName),e);return t||(r.flags|=4),r}},No=class n extends zo{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,r){let i=new n(t||document.createElement("div"),e);return(!t||!r)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,r){let i=null,s=-1,o=null,a=-1;function l(d,h){for(let u=0,f=0;u=h&&(m.isComposite()?l(m,h-f):(!o||o.isHidden&&(t>0&&!(o.flags&32)||r&&__(o,m)))&&(O>h||m.flags&32&&t<=1)?(o=m,a=h-f):(f=-1)&&(i=m,s=h-f)),f=O}}l(this,e);let c=(t<0?i:o)||i||o;return c?{tile:c,offset:c==i?s:a}:null}coordsIn(e,t,r){let i=this.resolveInline(e,t,!0);return i?i.tile.coordsIn(Math.max(0,i.offset),t,r):C_(this)}domIn(e,t){let r=this.resolveInline(e,t);if(r){let{tile:i,offset:s}=r;if(this.dom.contains(i.dom))return i.isText()?new Jr(i.dom,Math.min(i.dom.nodeValue.length,s)):i.domPosFor(s,i.flags&16?1:i.flags&32?-1:t);let o=r.tile.parent,a=!1;for(let l of o.children){if(a)return new Jr(l.dom,0);l==r.tile&&(a=!0)}}return new Jr(this.dom,0)}};function C_(n){let e=n.dom.lastChild;if(!e)return n.dom.getBoundingClientRect();let t=cd(e);return t[t.length-1]||null}function __(n,e){let t=n.coordsIn(0,1),r=e.coordsIn(0,1);return t&&r&&r.topi&&(e=i);let s=e,o=e,a=0;e==0&&t<0||e==i&&t>=0?ae.chrome||ae.gecko||(e?(s--,a=1):o=0)?0:l.length-1];return ae.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),r==null?c:Od(c,(a?a>0:t<0)==r)}static of(e,t){let r=new n(t||document.createTextNode(e),e);return t||(r.flags|=2),r}},Vs=class n extends mt{constructor(e,t,r,i){super(e,t,i),this.widget=r}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,r){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;if(r)return Od(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let s=this.dom.getClientRects(),o=null;if(!s.length)return null;let a=this.flags&16?!0:this.flags&32?!1:e>0;for(let l=a?s.length-1:0;o=s[l],!(e>0?l==0:l==s.length-1||o.top0==r)}},Ip=class{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,r){let{tile:i,index:s,beforeBreak:o,parents:a}=this;for(;e||t>0;)if(i.isComposite())if(o){if(!e)break;r&&r.break(),e--,o=!1}else if(s==i.children.length){if(!e&&!a.length)break;r&&r.leave(i),o=!!i.breakAfter,{tile:i,index:s}=a.pop(),s++}else{let l=i.children[s],c=l.breakAfter;(t>0?l.length<=e:l.length=0;a--){let l=t.marks[a],c=i.lastChild;if(c instanceof An&&c.mark.eq(l.mark))c.dom!=l.dom&&c.setDOM(Sp(l.dom)),i=c;else{if(this.cache.reused.get(l)){let h=mt.get(l.dom);h&&h.setDOM(Sp(l.dom))}let d=An.of(l.mark,l.dom);i.append(d),i=d}this.cache.reused.set(l,2)}let s=mt.get(e.text);s&&this.cache.reused.set(s,2);let o=new zs(e.text,e.text.nodeValue);o.flags|=8,this.pos=e.range.toB,i.append(o)}addInlineWidget(e,t,r){let i=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);i||this.flushBuffer();let s=this.ensureMarks(t,r);!i&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,r){this.flushBuffer(),this.ensureMarks(t,r).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var r;e||(e=Av);let i=No.start(e,t||((r=this.cache.find(No))===null||r===void 0?void 0:r.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=i)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var r;let i=this.curLine;for(let s=e.length-1;s>=0;s--){let o=e[s],a;if(t>0&&(a=i.lastChild)&&a instanceof An&&a.mark.eq(o))i=a,t--;else{let l=An.of(o,(r=this.cache.find(An,c=>c.mark.eq(o)))===null||r===void 0?void 0:r.dom);i.append(l),i=l,t=0}}return i}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!PS(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(ae.ios&&PS(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(vp,0,32)||new Vs(vp.toDOM(),0,vp,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=e.rank*102+e.value.rank,r=new Xp(e.from,e.to,e.value,t),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-r.rank||this.wrappers[i-1].to-r.to)<0;)i--;this.wrappers.splice(i,0,r)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let r of this.wrappers){let i=t.lastChild;if(r.fromo.wrapper.eq(r.wrapper)))===null||e===void 0?void 0:e.dom);t.append(s),t=s}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),r=this.cache.find(Bo,void 0,1);return r&&(r.flags=t),r||new Bo(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Wp=class{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:i,lineBreak:s,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=i;let a=this.textOff=Math.min(e,i.length);return s?null:i.slice(0,a)}let t=Math.min(this.text.length,this.textOff+e),r=this.text.slice(this.textOff,t);return this.textOff=t,r}},yd=[Vs,No,zs,An,Bo,Pi,Wo];for(let n=0;n[]),this.index=yd.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,r=this.buckets[t];r.length<6?r.push(e):r[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,r=2){let i=e.bucket,s=this.buckets[i],o=this.index[i];for(let a=0;a{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let r=t&&this.getCompositionContext(t.text);for(let i=0,s=0,o=0;;){let a=oi){let c=l-i;this.preserve(c,!o,!a),i=l,s+=c}if(!a)break;t&&a.fromA<=t.range.fromA&&a.toA>=t.range.toA?(this.forward(a.fromA,t.range.fromA,t.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(l-a);else{let c=l>0||a{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof An&&i.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?i.length&&(i.length=s=0):o instanceof An&&(i.shift(),s=Math.min(s,i.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let r=null,i=this.builder,s=-1,o=$e.spans(this.decorations,e,t,{point:(a,l,c,d,h,u)=>{if(c instanceof Ns){if(this.disallowBlockEffectsFor[u]){if(c.block)throw new RangeError("Block decorations may not be specified via plugins");if(l>this.view.state.doc.lineAt(a).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(s=d.length,h>d.length)i.continueWidget(l-a);else{let f=c.widget||(c.block?Gi.block:Gi.inline),m=E_(c),O=this.cache.findWidget(f,l-a,m)||Vs.of(f,this.view,l-a,m);c.block?(c.startSide>0&&i.addLineStartIfNotCovered(r),i.addBlockWidget(O)):(i.ensureLine(r),i.addInlineWidget(O,d,h))}r=null}else r=R_(r,c);l>a&&this.text.skip(l-a)},span:(a,l,c,d)=>{for(let h=a;h-1&&(this.openWidget=o>s),this.openWidget||i.addLineStartIfNotCovered(r),this.openMarks=o}forward(e,t,r=1){t-e<=10?this.old.advance(t-e,r,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,r,this.reuseWalker))}getCompositionContext(e){let t=[],r=null;for(let i=e.parentNode;;i=i.parentNode){let s=mt.get(i);if(i==this.view.contentDOM)break;s instanceof An?t.push(s):s!=null&&s.isLine()?r=s:s instanceof Pi||(i.nodeName=="DIV"&&!r&&i!=this.view.contentDOM?r=new No(i,Av):r||t.push(An.of(new ol({tagName:i.nodeName.toLowerCase(),attributes:f_(i)}),i)))}return{line:r,marks:t}}};function PS(n,e){let t=r=>{for(let i of r.children)if((e?i.isText():i.length)||t(i))return!0;return!1};return t(n)}function E_(n){let e=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(e|=256),e}var Av={class:"cm-line"};function R_(n,e){let t=e.spec.attributes,r=e.spec.class;return!t&&!r||(n||(n={class:"cm-line"}),t&&wm(t,n),r&&(n.class+=" "+r)),n}function M_(n){let e=[];for(let t=n.parents.length;t>1;t--){let r=t==n.parents.length?n.tile:n.parents[t].tile;r instanceof An&&e.push(r.mark)}return e}function Sp(n){let e=mt.get(n);return e&&e.setDOM(n.cloneNode()),n}var Gi=class extends Ct{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};Gi.inline=new Gi("span");Gi.block=new Gi("div");var vp=new class extends Ct{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},Sd=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=J.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Wo(e,e.contentDOM),this.updateInner([new zr(0,0,0,e.state.doc.length)],null)}update(e){var t;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let i=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?i=this.domChanged.newSel.head:!N_(e.changes,this.hasComposition)&&!e.selectionSet&&(i=e.state.selection.main.head));let s=i>-1?D_(this.view,e.changes,i):null;if(this.domChanged=null,this.hasComposition){let{from:d,to:h}=this.hasComposition;r=new zr(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(ae.ie||ae.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,a=this.blockWrappers;this.updateDeco();let l=X_(o,this.decorations,e.changes);l.length&&(r=zr.extendWithRanges(r,l));let c=z_(a,this.blockWrappers,e.changes);return c.length&&(r=zr.extendWithRanges(r,c)),s&&!r.some(d=>d.fromA<=s.range.fromA&&d.toA>=s.range.toA)&&(r=s.range.addToSet(r.slice())),this.tile.flags&2&&r.length==0?!1:(this.updateInner(r,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:r}=this.view;r.ignore(()=>{if(t||e.length){let o=this.tile,a=new Bp(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&mt.get(t.text)&&a.cache.reused.set(mt.get(t.text),2),this.tile=a.run(e,t),Vp(o,a.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let s=ae.chrome||ae.ios?{node:r.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||r.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let i=[];if(this.view.viewport.from||this.view.viewport.to-1)&&Ha(r,this.view.observer.selectionRange)&&!(i&&r.contains(i));if(!(s||t||o))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c,d;if(l.empty?d=c=this.inlineDOMNearPos(l.anchor,l.assoc||1):(d=this.inlineDOMNearPos(l.head,l.head==l.from?1:-1),c=this.inlineDOMNearPos(l.anchor,l.anchor==l.from?1:-1)),ae.gecko&&l.empty&&!this.hasComposition&&L_(c)){let u=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(u,c.node.childNodes[c.offset]||null)),c=d=new Jr(u,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!Ka(c.node,c.offset,h.anchorNode,h.anchorOffset)||!Ka(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{ae.android&&ae.chrome&&r.contains(h.focusNode)&&W_(h.focusNode,r)&&(r.blur(),r.focus({preventScroll:!0}));let u=ll(this.view.root);if(u)if(l.empty){if(ae.gecko){let f=Z_(c.node,c.offset);if(f&&f!=3){let m=(f==1?lv:cv)(c.node,c.offset);m&&(c=new Jr(m.node,m.offset))}}u.collapse(c.node,c.offset),l.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=l.bidiLevel)}else if(u.extend){u.collapse(c.node,c.offset);try{u.extend(d.node,d.offset)}catch(f){}}else{let f=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),f.setEnd(d.node,d.offset),f.setStart(c.node,c.offset),u.removeAllRanges(),u.addRange(f)}o&&this.view.root.activeElement==r&&(r.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Jr(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Jr(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&Ka(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,r=ll(e.root),{anchorNode:i,anchorOffset:s}=e.observer.selectionRange;if(!r||!t.empty||!t.assoc||!r.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let a=o.posAtStart;if(t.head==a||t.head==a+o.length)return;let l=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!l||!c||l.bottom>c.top)return;let d=this.domAtPos(t.head+t.assoc,t.assoc);r.collapse(d.node,d.offset),r.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let h=e.observer.selectionRange;e.docView.posFromDOM(h.anchorNode,h.anchorOffset)!=t.from&&r.collapse(i,s)}posFromDOM(e,t){let r=this.tile.nearest(e);if(!r)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let i=r.posAtStart;if(r.isComposite()){let s;if(e==r.dom)s=r.dom.childNodes[t];else{let o=ki(e)==0?0:t==0?-1:1;for(;;){let a=e.parentNode;if(a==r.dom)break;o==0&&a.firstChild!=a.lastChild&&(e==a.firstChild?o=-1:o=1),e=a}o<0?s=e:s=e.nextSibling}if(s==r.dom.firstChild)return i;for(;s&&!mt.get(s);)s=s.nextSibling;if(!s)return i+r.length;for(let o=0,a=i;;o++){let l=r.children[o];if(l.dom==s)return a;a+=l.length+l.breakAfter}}else return r.isText()?e==r.dom?i+t:i+(t?r.length:0):i}domAtPos(e,t){let{tile:r,offset:i}=this.tile.resolveBlock(e,t);return r.isWidget()?r.domPosFor(i,t):r.domIn(i,t)}inlineDOMNearPos(e,t){let r,i=-1,s=!1,o,a=-1,l=!1;return this.tile.blockTiles((c,d)=>{if(c.isWidget()){if(c.flags&32&&d>=e)return!0;c.flags&16&&(s=!0)}else{let h=d+c.length;if(d<=e&&(r=c,i=e-d,s=h=e&&!o&&(o=c,a=e-d,l=d>e),d>e&&o)return!0}}),!r&&!o?this.domAtPos(e,t):(s&&o?r=null:l&&r&&(o=null),r&&t<0||!o?r.domIn(i,t):o.domIn(a,t))}coordsAt(e,t,r){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof tl?null:i.coordsInWidget(s,t,!0):i.coordsIn(s,t,r)}lineAt(e,t){let{tile:r}=this.tile.resolveBlock(e,t);return r.isLine()?r:null}coordsForChar(e){let{tile:t,offset:r}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function i(s,o){if(s.isComposite())for(let a of s.children){if(a.length>=o){let l=i(a,o);if(l)return l}if(o-=a.length,o<0)break}else if(s.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,a=-1,l=this.view.textDirection==qe.LTR,c=0,d=(h,u,f)=>{for(let m=0;mi);m++){let O=h.children[m],S=u+O.length,x=O.dom.getBoundingClientRect(),{height:D}=x;if(f&&!m&&(c+=x.top-f.top),O instanceof Pi)S>r&&d(O,u,x);else if(u>=r&&(c>0&&t.push(-c),t.push(D+c),c=0,o)){let M=O.dom.lastChild,Z=M?cd(M):[];if(Z.length){let k=Z[Z.length-1],w=l?k.right-x.left:x.right-k.left;w>a&&(a=w,this.minWidth=s,this.minWidthFrom=u,this.minWidthTo=S)}}f&&m==h.children.length-1&&(c+=f.bottom-x.bottom),u=S+O.breakAfter}};return d(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?qe.RTL:qe.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let a=0,l;for(let c of o.children){if(!c.isText()||/[^ -~]/.test(c.text))return;let d=cd(c.dom);if(d.length!=1)return;a+=d[0].width,l=d[0].height}if(a)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:a/o.length,textHeight:l}}});if(e)return e;let t=document.createElement("div"),r,i,s;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=cd(t.firstChild)[0];r=t.getBoundingClientRect().height,i=o&&o.width?o.width/27:7,s=o&&o.height?o.height:r,t.remove()}),{lineHeight:r,charWidth:i,textHeight:s}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let r=0,i=0;;i++){let s=i==t.viewports.length?null:t.viewports[i],o=s?s.from-1:this.view.state.doc.length;if(o>r){let a=(t.lineBlockAt(o).bottom-t.lineBlockAt(r).top)/this.view.scaleY;e.push(J.replace({widget:new tl(a),block:!0,inclusive:!0,isBlockGap:!0}).range(r,o))}if(!s)break;r=s.to+1}return J.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Rd).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),r=!1,i=this.view.state.facet(Tm).map((s,o)=>{let a=typeof s=="function";return a&&(r=!0),a?s(this.view):s});for(i.length&&(this.dynamicDecorationMap[e++]=r,t.push($e.join(i))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof s=="function"?s(this.view):s)}scrollIntoView(e){if(e.isSnapshot){let c=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=c.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let c of this.view.state.facet(xv))try{if(c(this.view,e.range,e))return!0}catch(d){jn(this.view.state,d,"scroll handler")}let{range:t}=e,r=this.coordsAt(t.head,t.assoc||(t.head>t.anchor?-1:1)),i;if(!r)return;!t.empty&&(i=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(r={left:Math.min(r.left,i.left),top:Math.min(r.top,i.top),right:Math.max(r.right,i.right),bottom:Math.max(r.bottom,i.bottom)});let s=Am(this.view),o={left:r.left-s.left,top:r.top-s.top,right:r.right+s.right,bottom:r.bottom+s.bottom},{offsetWidth:a,offsetHeight:l}=this.view.scrollDOM;if(g_(this.view.scrollDOM,o,t.head1&&(r.top>window.visualViewport.offsetTop+window.visualViewport.height||r.bottomr.isWidget()||r.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Vp(this.tile)}};function Vp(n,e){let t=e==null?void 0:e.get(n);if(t!=1){t==null&&n.destroy();for(let r of n.children)Vp(r,e)}}function L_(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Cv(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let r=lv(t.focusNode,t.focusOffset),i=cv(t.focusNode,t.focusOffset),s=r||i;if(i&&r&&i.node!=r.node){let a=mt.get(i.node);if(!a||a.isText()&&a.text!=i.node.nodeValue)s=i;else if(n.docView.lastCompositionAfterCursor){let l=mt.get(r.node);!l||l.isText()&&l.text!=r.node.nodeValue||(s=i)}}if(n.docView.lastCompositionAfterCursor=s!=r,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}function D_(n,e,t){let r=Cv(n,t);if(!r)return null;let{node:i,from:s,to:o}=r,a=i.nodeValue;if(/[\n\r]/.test(a)||n.state.doc.sliceString(r.from,r.to)!=a)return null;let l=e.invertedDesc;return{range:new zr(l.mapPos(s),l.mapPos(o),s,o),text:i}}function Z_(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(t=!0)}),t}var tl=class extends Ct{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function B_(n,e,t=1){let r=n.charCategorizer(e),i=n.doc.lineAt(e),s=e-i.from;if(i.length==0)return z.cursor(e);s==0?t=1:s==i.length&&(t=-1);let o=s,a=s;t<0?o=Pt(i.text,s,!1):a=Pt(i.text,s);let l=r(i.text.slice(o,a));for(;o>0;){let c=Pt(i.text,o,!1);if(r(i.text.slice(c,o))!=l)break;o=c}for(;an.defaultLineHeight*1.5){let a=n.viewState.heightOracle.textHeight,l=Math.floor((i-t.top-(n.defaultLineHeight-a)*.5)/a);s+=l*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+Kc(o,s,n.state.tabSize)}function Yp(n,e,t){let r=n.lineBlockAt(e);if(Array.isArray(r.type)){let i;for(let s of r.type){if(s.from>e)break;if(!(s.toe)return s;(!i||s.type==Ht.Text&&(i.type!=s.type||(t<0?s.frome)))&&(i=s)}}return i||r}return r}function F_(n,e,t,r){let i=Yp(n,e.head,e.assoc||-1),s=!r||i.type!=Ht.Text||!(n.lineWrapping||i.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>i.from?e.head-1:e.head);if(s){let o=n.dom.getBoundingClientRect(),a=n.textDirectionAt(i.from),l=n.posAtCoords({x:t==(a==qe.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(l!=null)return z.cursor(l,t?-1:1)}return z.cursor(t?i.to:i.from,t?-1:1)}function kS(n,e,t,r){let i=n.state.doc.lineAt(e.head),s=n.bidiSpans(i),o=n.textDirectionAt(i.from);for(let a=e,l=null;;){let c=$_(i,s,o,a,t),d=pv;if(!c){if(i.number==(t?n.state.doc.lines:1))return a;d=` +`,i=n.state.doc.line(i.number+(t?1:-1)),s=n.bidiSpans(i),c=n.visualLineSide(i,!t)}if(l){if(!l(d))return a}else{if(!r)return c;l=r(d)}a=c}}function Y_(n,e,t){let r=n.state.charCategorizer(e),i=r(t);return s=>{let o=r(s);return i==et.Space&&(i=o),i==o}}function j_(n,e,t,r){let i=e.head,s=t?1:-1;if(i==(t?n.state.doc.length:0))return z.cursor(i,e.assoc);let o=e.goalColumn,a,l=n.contentDOM.getBoundingClientRect(),c=n.coordsAtPos(i,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),d=n.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let m=n.viewState.lineBlockAt(i);o==null&&(o=Math.min(l.right-l.left,n.defaultCharacterWidth*(i-m.from))),a=(s<0?m.top:m.bottom)+d}let h=l.left+o,u=n.viewState.heightOracle.textHeight>>1,f=r!=null?r:u;for(let m=0;;m+=u){let O=a+(f+m)*s,S=jp(n,{x:h,y:O},!1,s);if(t?O>l.bottom:Oa:D{if(e>s&&ei(n)),t.from,e.head>t.from?-1:1);return r==t.from?t:z.cursor(r,rn.viewState.docHeight)return new Or(n.state.doc.length,-1);if(c=n.elementAtHeight(l),r==null)break;if(c.type==Ht.Text){if(r<0?c.ton.viewport.to)break;let u=n.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(u&&(r<0?u.top<=l+s:u.bottom>=l+s))break}let h=n.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+h:c.top-h}if(n.viewport.from>=c.to||n.viewport.to<=c.from){if(t)return null;if(c.type==Ht.Text){let h=V_(n,i,c,o,a);return new Or(h,h==c.from?1:-1)}}if(c.type!=Ht.Text)return l<(c.top+c.bottom)/2?new Or(c.from,1):new Or(c.to,-1);let d=n.docView.lineAt(c.from,2);return(!d||d.length!=c.length)&&(d=n.docView.lineAt(c.from,-2)),new Up(n,o,a,n.textDirectionAt(c.from)).scanTile(d,c.from)}var Up=class{constructor(e,t,r,i){this.view=e,this.x=t,this.y=r,this.baseDir=i,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||r.length&&(r[0].level!=this.baseDir||r[0].to+i.from>1;t:if(o.has(O)){for(let D=1;D=s&&(M-=m),!o.has(M)){O=M;break t}}break e}o.add(O);let S=t(O),x=0;if(S)for(let D=0;D1))if(M.bottomthis.y)(!c||c.top>M.top)&&(c=M),x=-1;else{let Z=M.left>this.x?this.x-M.left:M.right(m+m+O)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(m+O+O)/3)return this.y=c.top+1,this.scan(e,t,!0)}let f=(a?this.dirAt(e[d],1):this.baseDir)==qe.LTR;return{i:d,after:this.x>(u.left+u.right)/2==f}}scanText(e,t){let r=[];for(let s=0;s{let o=r[s]-t,a=r[s+1]-t;return cl(e.dom,o,a).getClientRects()});return i.after?new Or(r[i.i+1],-1):new Or(r[i.i],1)}scanTile(e,t){if(!e.length)return new Or(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let r=[t];for(let a=0,l=t;a{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:cl(l.dom,0,l.length)).getClientRects()}),s=e.children[i.i],o=r[i.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):i.after?new Or(r[i.i+1],-1):new Or(o,1)}},Ro="\uFFFF",qp=class{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(Me.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Ro}readRange(e,t){if(!e)return this;let r=e.parentNode;for(let i=e;;){this.findPointBefore(r,i);let s=this.text.length;this.readNode(i);let o=mt.get(i),a=i.nextSibling;if(a==t){o!=null&&o.breakAfter&&!a&&r!=this.view.contentDOM&&this.lineBreak();break}let l=mt.get(a);(o&&l?o.breakAfter:(o?o.breakAfter:gd(i))||gd(a)&&(i.nodeName!="BR"||o!=null&&o.isWidget())&&this.text.length>s)&&!q_(a,t)&&this.lineBreak(),i=a}return this.findPointBefore(r,t),this}readTextNode(e){let t=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,t.length));for(let r=0,i=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,a;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,r),o=this.lineSeparator.length):(a=i.exec(t))&&(s=a.index,o=a[0].length),this.append(t.slice(r,s<0?t.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let l of this.points)l.node==e&&l.pos>this.text.length&&(l.pos-=o-1);r=s+o}}readNode(e){let t=mt.get(e),r=t&&t.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let i=r.iter();!i.next().done;)i.lineBreak?this.lineBreak():this.append(i.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==t&&(r.pos=this.text.length)}findPointInside(e,t){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(U_(e,r.node,r.offset)?t:0))}};function U_(n,e,t){for(;;){if(!e||t-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView,a=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=Ev(e.docView.tile,t,r,0))){let l=s||o?[]:H_(e),c=new qp(l,e);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=K_(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!Ep(e.contentDOM,l.focusNode)?a.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Ep(e.contentDOM,l.anchorNode)?a.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((ae.ios||ae.chrome)&&c!=d&&Math.min(c,d)<=a.main.from&&Math.max(c,d)>=a.main.to&&(h.from>0||h.to-1&&a.ranges.length>1)this.newSel=a.replaceRange(z.range(d,c));else if(e.lineWrapping&&d==c&&!(a.main.empty&&a.main.head==c)&&e.inputState.lastTouchTime>Date.now()-100){let u=e.coordsAtPos(c,-1),f=0;u&&(f=e.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=z.create([z.cursor(c,f)])}else this.newSel=z.single(d,c)}}};function Ev(n,e,t,r){if(n.isComposite()){let i=-1,s=-1,o=-1,a=-1;for(let l=0,c=r,d=r;lt)return Ev(h,e,t,c);if(u>=e&&i==-1&&(i=l,s=c),c>t&&h.dom.parentNode==n.dom){o=l,a=d;break}d=u,c=u+h.breakAfter}return{from:s,to:a<0?r+n.length:a,startDOM:(i?n.children[i-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:r,to:r+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function Rv(n,e){let t,{newSel:r}=e,{state:i}=n,s=i.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(o===8||ae.android&&e.text.length=a&&s.to<=l&&(e.typeOver||h!=e.text)&&h.slice(0,s.from-a)==e.text.slice(0,s.from-a)&&h.slice(s.to-a)==e.text.slice(u=e.text.length-(h.length-(s.to-a)))?t={from:s.from,to:s.to,insert:De.of(e.text.slice(s.from-a,u).split(Ro))}:(f=Mv(h,e.text,c-a,d))&&(ae.chrome&&o==13&&f.toB==f.from+2&&e.text.slice(f.from,f.toB)==Ro+Ro&&f.toB--,t={from:a+f.from,to:a+f.toA,insert:De.of(e.text.slice(f.from,f.toB).split(Ro))})}else r&&(!n.hasFocus&&i.facet(xi)||wd(r,s))&&(r=null);if(!t&&!r)return!1;if((ae.mac||ae.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(r&&t.insert.length==2&&(r=z.single(r.main.anchor-1,r.main.head-1)),t={from:t.from,to:t.to,insert:De.of([t.insert.toString().replace("."," ")])}):i.doc.lineAt(s.from).toDate.now()-50?t={from:s.from,to:s.to,insert:i.toText(n.inputState.insertingText)}:ae.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==` + `&&n.lineWrapping&&(r&&(r=z.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:De.of([" "])}),t)return Cm(n,t,r,o);if(r&&!wd(r,s)){let a=!1,l="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(a=!0),l=n.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=_v(i.facet(ul).map(c=>c(n)),r))),n.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Cm(n,e,t,r=-1){if(ae.ios&&n.inputState.flushIOSKey(e))return!0;let i=n.state.selection.main;if(ae.android&&(e.to==i.to&&(e.from==i.from||e.from==i.from-1&&n.state.sliceDoc(e.from,i.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Xo(n.contentDOM,"Enter",13)||(e.from==i.from-1&&e.to==i.to&&e.insert.length==0||r==8&&e.insert.lengthi.head)&&Xo(n.contentDOM,"Backspace",8)||e.from==i.from&&e.to==i.to+1&&e.insert.length==0&&Xo(n.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,a=()=>o||(o=G_(n,e,t));return n.state.facet(yv).some(l=>l(n,e.from,e.to,s,a))||n.dispatch(a()),!0}function G_(n,e,t){let r,i=n.state,s=i.selection.main,o=-1;if(e.from==e.to&&e.froms.to){let l=e.fromh(n)),c,l);e.from==d&&(o=d)}if(o>-1)r={changes:e,selection:z.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let l=s.frome.to?i.sliceDoc(e.to,s.to):"";r=i.replaceSelection(n.state.toText(l+e.insert.sliceString(0,void 0,n.state.lineBreak)+c))}else{let l=i.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(i.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let d=n.state.sliceDoc(e.from,e.to),h,u=t&&Cv(n,t.main.head);if(u){let m=e.insert.length-(e.to-e.from);h={from:u.from,to:u.to-m}}else h=n.state.doc.lineAt(s.head);let f=s.to-e.to;r=i.changeByRange(m=>{if(m.from==s.from&&m.to==s.to)return{changes:l,range:c||m.map(l)};let O=m.to-f,S=O-d.length;if(n.state.sliceDoc(S,O)!=d||O>=h.from&&S<=h.to)return{range:m};let x=i.changes({from:S,to:O,insert:e.insert}),D=m.to-s.to;return{changes:x,range:c?z.range(Math.max(0,c.anchor+D),Math.max(0,c.head+D)):m.map(x)}})}else r={changes:l,selection:c&&i.selection.replaceRange(c)}}let a="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,a+=".compose",n.inputState.compositionFirstChange&&(a+=".start",n.inputState.compositionFirstChange=!1)),i.update(r,{userEvent:a,scrollIntoView:!0})}function Mv(n,e,t,r){let i=Math.min(n.length,e.length),s=0;for(;s0&&a>0&&n.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(r=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o=o?s-t:0;s-=l,a=s+(a-o),o=s}else if(a=a?s-t:0;s-=l,o=s+(o-a),a=s}return{from:s,toA:o,toB:a}}function H_(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:i,focusOffset:s}=n.observer.selectionRange;return t&&(e.push(new vd(t,r)),(i!=t||s!=r)&&e.push(new vd(i,s))),e}function K_(n,e){if(n.length==0)return null;let t=n[0].pos,r=n.length==2?n[1].pos:t;return t>-1&&r>-1?z.single(t+e,r+e):null}function wd(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}var Hp=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,ae.safari&&e.contentDOM.addEventListener("input",()=>null),ae.gecko&&f2(e.contentDOM.ownerDocument)}handleEvent(e){!o2(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let i of r.observers)i(this.view,t);for(let i of r.handlers){if(t.defaultPrevented)break;if(i(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=e2(e),r=this.handlers,i=this.view.contentDOM;for(let s in t)if(s!="scroll"){let o=!t[s].handlers.length,a=r[s];a&&o!=!a.handlers.length&&(i.removeEventListener(s,this.handleEvent),a=null),a||i.addEventListener(s,this.handleEvent,{passive:o})}for(let s in r)s!="scroll"&&!t[s]&&i.removeEventListener(s,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&Dv.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),ae.android&&ae.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(ae.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(Lv.some(t=>t.keyCode==e.keyCode)&&!e.ctrlKey||t2.indexOf(e.key)>-1&&e.ctrlKey)){let t={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};return t.shiftKey&&ae.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&J_(this.view.win)&&(t.shiftKey=!1),this.pendingIOSKey={key:e.key,keyCode:e.keyCode,mods:t},setTimeout(()=>this.flushIOSKey(),50),!0}return e.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(e){let t=this.pendingIOSKey;return!t||this.view.observer.pendingRecords().length||t.key=="Enter"&&e&&e.from0?!0:ae.safari&&!ae.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function J_(n){return n.visualViewport?n.visualViewport.height*n.visualViewport.scale/n.document.documentElement.clientHeight<.85:!1}function $S(n,e){return(t,r)=>{try{return e.call(n,r,t)}catch(i){jn(t.state,i)}}}function e2(n){let e=Object.create(null);function t(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of n){let i=r.spec,s=i&&i.plugin.domEventHandlers,o=i&&i.plugin.domEventObservers;if(s)for(let a in s){let l=s[a];l&&t(a).handlers.push($S(r.value,l))}if(o)for(let a in o){let l=o[a];l&&t(a).observers.push($S(r.value,l))}}for(let r in Wr)t(r).handlers.push(Wr[r]);for(let r in yn)t(r).observers.push(yn[r]);return e}var Lv=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],t2="dthko",Dv=[16,17,18,20,91,92,224,225],td=6;function nd(n){return Math.max(0,n)*.7+8}function n2(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}var Kp=class{constructor(e,t,r,i){this.view=e,this.startEvent=t,this.style=r,this.mustSelect=i,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=rv(e.contentDOM),this.atoms=e.state.facet(ul).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(Me.allowMultipleSelections)&&r2(e,t),this.dragging=s2(e,t)&&Xv(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&n2(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,r=0,i=0,s=0,o=this.view.win.innerWidth,a=this.view.win.innerHeight;this.scrollParents.x&&({left:i,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:a}=this.scrollParents.y.getBoundingClientRect());let l=Am(this.view);e.clientX-l.left<=i+td?t=-nd(i-e.clientX):e.clientX+l.right>=o-td&&(t=nd(e.clientX-o)),e.clientY-l.top<=s+td?r=-nd(s-e.clientY):e.clientY+l.bottom>=a-td&&(r=nd(e.clientY-a)),this.setScrollSpeed(t,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,r=_v(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function r2(n,e){let t=n.state.facet(mv);return t.length?t[0](e):ae.mac?e.metaKey:e.ctrlKey}function i2(n,e){let t=n.state.facet(gv);return t.length?t[0](e):ae.mac?!e.altKey:!e.ctrlKey}function s2(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let r=ll(n.root);if(!r||r.rangeCount==0)return!0;let i=r.getRangeAt(0).getClientRects();for(let s=0;s=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function o2(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,r;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(r=mt.get(t))&&r.isWidget()&&!r.isHidden&&r.widget.ignoreEvent(e))return!1;return!0}var Wr=Object.create(null),yn=Object.create(null),Zv=ae.ie&&ae.ie_version<15||ae.ios&&ae.webkit_version<604;function a2(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),Iv(n,t.value)},50)}function Md(n,e,t){for(let r of n.facet(e))t=r(t,n);return t}function Iv(n,e){e=Md(n.state,km,e);let{state:t}=n,r,i=1,s=t.toText(e),o=s.lines==t.selection.ranges.length;if(Jp!=null&&t.selection.ranges.every(l=>l.empty)&&Jp==s.toString()){let l=-1;r=t.changeByRange(c=>{let d=t.doc.lineAt(c.from);if(d.from==l)return{range:c};l=d.from;let h=t.toText((o?s.line(i++).text:e)+t.lineBreak);return{changes:{from:d.from,insert:h},range:z.cursor(c.from+h.length)}})}else o?r=t.changeByRange(l=>{let c=s.line(i++);return{changes:{from:l.from,to:l.to,insert:c.text},range:z.cursor(l.from+c.length)}}):r=t.replaceSelection(s);n.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}yn.scroll=n=>{let e=n.inputState;e.lastScrollTop=n.scrollDOM.scrollTop,e.lastScrollLeft=n.scrollDOM.scrollLeft,ae.ios&&!e.touchActive&&(e.lastIOSMomentumScroll=Date.now())};yn.wheel=yn.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};Wr.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);yn.touchstart=(n,e)=>{let t=n.inputState,r=e.targetTouches[0];t.touchActive=!0,t.lastTouchTime=Date.now(),r&&(t.lastTouchX=r.clientX,t.lastTouchY=r.clientY),t.setSelectionOrigin("select.pointer")};yn.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};yn.touchend=(n,e)=>{n.inputState.touchActive=!1};Wr.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let r of n.state.facet(Ov))if(t=r(n,e),t)break;if(!t&&e.button==0&&(t=c2(n,e)),t){let r=!n.hasFocus;n.inputState.startMouseSelection(new Kp(n,e,t,r)),r&&n.observer.ignore(()=>{ov(n.contentDOM);let s=n.root.activeElement;s&&!s.contains(n.contentDOM)&&s.blur()});let i=n.inputState.mouseSelection;if(i)return i.start(e),i.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function QS(n,e,t,r){if(r==1)return z.cursor(e,t);if(r==2)return B_(n.state,e,t);{let i=n.docView.lineAt(e,t),s=n.state.doc.lineAt(i?i.posAtEnd:e),o=i?i.posAtStart:s.from,a=i?i.posAtEnd:s.to;return aDate.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(AS+1)%3:1}function c2(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),r=Xv(e),i=n.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),i=i.map(s.changes))},get(s,o,a){let l=n.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),c,d=QS(n,l.pos,l.assoc,r);if(t.pos!=l.pos&&!o){let h=QS(n,t.pos,t.assoc,r),u=Math.min(h.from,d.from),f=Math.max(h.to,d.to);d=u1&&(c=d2(i,l.pos))?c:a?i.addRange(d):z.create([d])}}}function d2(n,e){for(let t=0;t=e)return z.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}Wr.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let i=n.docView.tile.nearest(e.target);if(i&&i.isWidget()){let s=i.posAtStart,o=s+i.length;(s>=t.to||o<=t.from)&&(t=z.undirectionalRange(s,o))}}let{inputState:r}=n;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Md(n.state,$m,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Wr.dragend=n=>(n.inputState.draggedContent=null,!1);function _S(n,e,t,r){if(t=Md(n.state,km,t),!t)return;let i=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=n.inputState,o=r&&s&&i2(n,e)?{from:s.from,to:s.to}:null,a={from:i,insert:t},l=n.state.changes(o?[o,a]:a);n.focus(),n.dispatch({changes:l,selection:{anchor:l.mapPos(i,-1),head:l.mapPos(i,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Wr.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let r=Array(t.length),i=0,s=()=>{++i==t.length&&_S(n,e,r.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(a.result)||(r[o]=a.result),s()},a.readAsText(t[o])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return _S(n,e,r,!0),!0}return!1};Wr.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=Zv?null:e.clipboardData;return t?(Iv(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(a2(n),!1)};function h2(n,e){let t=n.dom.parentNode;if(!t)return;let r=t.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),n.focus()},50)}function u2(n){let e=[],t=[],r=!1;for(let i of n.selection.ranges)i.empty||(e.push(n.sliceDoc(i.from,i.to)),t.push(i));if(!e.length){let i=-1;for(let{from:s}of n.selection.ranges){let o=n.doc.lineAt(s);o.number>i&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),i=o.number}r=!0}return{text:Md(n,$m,e.join(n.lineBreak)),ranges:t,linewise:r}}var Jp=null;Wr.copy=Wr.cut=(n,e)=>{if(!Ha(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:r,linewise:i}=u2(n.state);if(!t&&!i)return!1;Jp=i?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let s=Zv?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(h2(n,t),!1)};var zv=Tn.define();function Wv(n,e){let t=[];for(let r of n.facet(Sv)){let i=r(n,e);i&&t.push(i)}return t.length?n.update({effects:t,annotations:zv.of(!0)}):null}function Nv(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=Wv(n.state,e);t?n.dispatch(t):n.update([])}},10)}yn.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Nv(n)};yn.blur=n=>{n.observer.clearSelectionRange(),Nv(n)};yn.compositionstart=yn.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};yn.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,ae.chrome&&ae.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};yn.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Wr.beforeinput=(n,e)=>{var t,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let s=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let a=o[0],l=n.posAtDOM(a.startContainer,a.startOffset),c=n.posAtDOM(a.endContainer,a.endOffset);return Cm(n,{from:l,to:c,insert:n.state.toText(s)},null),!0}}let i;if(ae.chrome&&ae.android&&(i=Lv.find(s=>s.inputType==e.inputType))&&(n.observer.delayAndroidKey(i.key,i.keyCode),i.key=="Backspace"||i.key=="Delete")){let s=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return ae.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),ae.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>yn.compositionend(n,e),20),!1};var ES=new Set;function f2(n){ES.has(n)||(ES.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var RS=["pre-wrap","normal","pre-line","break-spaces"],Vo=!1;function MS(){Vo=!1}var em=class{constructor(e){this.lineWrapping=e,this.doc=De.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let r=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((t-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return RS.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let r=0;r-1,l=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=a;if(this.lineWrapping=a,this.lineHeight=t,this.charWidth=r,this.textHeight=i,this.lineLength=s,l){this.heightSamples={};for(let c=0;c0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>dd&&(Vo=!0),this.height=e)}replace(e,t,r){return n.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,r,i){let s=this,o=r.doc;for(let a=i.length-1;a>=0;a--){let{fromA:l,toA:c,fromB:d,toB:h}=i[a],u=s.lineAt(l,ct.ByPosNoHeight,r.setDoc(t),0,0),f=u.to>=c?u:s.lineAt(c,ct.ByPosNoHeight,r,0,0);for(h+=f.to-c,c=f.to;a>0&&u.from<=i[a-1].toA;)l=i[a-1].fromA,d=i[a-1].fromB,a--,ls*2){let a=e[t-1];a.break?e.splice(--t,1,a.left,null,a.right):e.splice(--t,1,a.left,a.right),r+=1+a.break,i-=a.size}else if(s>i*2){let a=e[r];a.break?e.splice(r,1,a.left,null,a.right):e.splice(r,1,a.left,a.right),r+=2+a.break,s-=a.size}else break;else if(i=s&&o(this.lineAt(0,ct.ByPos,r,i,s))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,r=!1,i){return i&&i.from<=t&&i.more&&this.setMeasuredHeight(i),this.outdated=!1,this}toString(){return`block(${this.length})`}},gr=class n extends Pd{constructor(e,t,r){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=r}mainBlock(e,t){return new Xr(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,r){let i=r[0];return r.length==1&&(i instanceof n||i instanceof Ui&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof Ui?i=new n(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):Un.of(r)}updateHeight(e,t=0,r=!1,i){return i&&i.from<=t&&i.more?this.setMeasuredHeight(i):(r||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},Ui=class n extends Un{constructor(e){super(e,0)}heightMetrics(e,t){let r=e.doc.lineAt(t).number,i=e.doc.lineAt(t+this.length).number,s=i-r+1,o,a=0;if(e.lineWrapping){let l=Math.min(this.height,e.lineHeight*s);o=l/s,this.length>s+1&&(a=(this.height-l)/(this.length-s-1))}else o=this.height/s;return{firstLine:r,lastLine:i,perLine:o,perChar:a}}blockAt(e,t,r,i){let{firstLine:s,lastLine:o,perLine:a,perChar:l}=this.heightMetrics(t,i);if(t.lineWrapping){let c=i+(e0){let s=r[r.length-1];s instanceof n?r[r.length-1]=new n(s.length+i):r.push(null,new n(i-1))}if(e>0){let s=r[0];s instanceof n?r[0]=new n(e+s.length):r.unshift(new n(e-1),null)}return Un.of(r)}decomposeLeft(e,t){t.push(new n(e-1),null)}decomposeRight(e,t){t.push(null,new n(this.length-e-1))}updateHeight(e,t=0,r=!1,i){let s=t+this.length;if(i&&i.from<=t+this.length&&i.more){let o=[],a=Math.max(t,i.from),l=-1;for(i.from>t&&o.push(new n(i.from-t-1).updateHeight(e,t));a<=s&&i.more;){let d=e.doc.lineAt(a).length;o.length&&o.push(null);let h=i.heights[i.index++],u=0;h<0&&(u=-h,h=i.heights[i.index++]),l==-1?l=h:Math.abs(h-l)>=dd&&(l=-2);let f=new gr(d,h,u);f.outdated=!1,o.push(f),a+=d+1}a<=s&&o.push(null,new n(s-a).updateHeight(e,a));let c=Un.of(o);return(l<0||Math.abs(c.height-this.height)>=dd||Math.abs(l-this.heightMetrics(e,t).perLine)>=dd)&&(Vo=!0),xd(this,c)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},nm=class extends Un{constructor(e,t,r){super(e.length+t+r.length,e.height+r.height,t|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,t,r,i){let s=r+this.left.height;return ea))return c;let d=t==ct.ByPosNoHeight?ct.ByPosNoHeight:ct.ByPos;return l?c.join(this.right.lineAt(a,d,r,o,a)):this.left.lineAt(a,d,r,i,s).join(c)}forEachLine(e,t,r,i,s,o){let a=i+this.left.height,l=s+this.left.length+this.break;if(this.break)e=l&&this.right.forEachLine(e,t,r,a,l,o);else{let c=this.lineAt(l,ct.ByPos,r,i,s);e=e&&c.from<=t&&o(c),t>c.to&&this.right.forEachLine(c.to+1,t,r,a,l,o)}}replace(e,t,r){let i=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-i,t-i,r));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let a of r)s.push(a);if(e>0&&LS(s,o-1),t=r&&t.push(null)),e>r&&this.right.decomposeLeft(e-r,t)}decomposeRight(e,t){let r=this.left.length,i=r+this.break;if(e>=i)return this.right.decomposeRight(e-i,t);e2*t.size||t.size>2*e.size?Un.of(this.break?[e,null,t]:[e,t]):(this.left=xd(this.left,e),this.right=xd(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,r=!1,i){let{left:s,right:o}=this,a=t+s.length+this.break,l=null;return i&&i.from<=t+s.length&&i.more?l=s=s.updateHeight(e,t,r,i):s.updateHeight(e,t,r),i&&i.from<=a+o.length&&i.more?l=o=o.updateHeight(e,a,r,i):o.updateHeight(e,a,r),l?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function LS(n,e){let t,r;n[e]==null&&(t=n[e-1])instanceof Ui&&(r=n[e+1])instanceof Ui&&n.splice(e-1,3,new Ui(t.length+1+r.length))}var m2=5,rm=class n{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let r=Math.min(t,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof gr?i.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new gr(r-this.pos,-1,0)),this.writtenTo=r,t>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,r){if(e=m2)&&this.addLineDeco(i,s,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new gr(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let r=new Ui(t-e);return this.oracle.doc.lineAt(e).to==t&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof gr)return e;let t=new gr(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,r){let i=this.ensureLine();i.length+=r,i.collapsed+=r,i.widgetHeight=Math.max(i.widgetHeight,e),i.breaks+=t,this.writtenTo=this.pos=this.pos+r}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof gr)&&!this.isCovered?this.nodes.push(new gr(0,-1,0)):(this.writtenTod.clientHeight||d.scrollWidth>d.clientWidth)&&h.overflow!="visible"){let u=d.getBoundingClientRect();s=Math.max(s,u.left),o=Math.min(o,u.right),a=Math.max(a,u.top),l=Math.min(c==n.parentNode?i.innerHeight:l,u.bottom)}c=h.position=="absolute"||h.position=="fixed"?d.offsetParent:d.parentNode}else if(c.nodeType==11)c=c.host;else break;return{left:s-t.left,right:Math.max(s,o)-t.left,top:a-(t.top+e),bottom:Math.max(a,l)-(t.top+e)}}function b2(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left0&&e.top0}function y2(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var rl=class{constructor(e,t,r,i){this.from=e,this.to=t,this.size=r,this.displaySize=i}static same(e,t){if(e.length!=t.length)return!1;for(let r=0;rtypeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new em(r),this.stateDeco=ZS(t),this.heightMap=Un.empty().applyChanges(this.stateDeco,De.empty,this.heightOracle.setDoc(t.doc),[new zr(0,0,0,t.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=J.set(this.lineGaps.map(i=>i.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let r=0;r<=1;r++){let i=r?t.head:t.anchor;if(!e.some(({from:s,to:o})=>i>=s&&i<=o)){let{from:s,to:o}=this.lineBlockAt(i);e.push(new Lo(s,o))}}return this.viewports=e.sort((r,i)=>r.from-i.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?DS:new om(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(qa(e,this.scaler))})}update(e,t=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=ZS(this.state);let i=e.changedRanges,s=zr.extendWithRanges(i,g2(r,this.stateDeco,e?e.changes:On.empty(this.state.doc.length))),o=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);MS(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||Vo)&&(e.flags|=2),a?(this.scrollAnchorPos=e.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let l=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,t));let c=l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,e.flags|=this.updateForViewport(),(c||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(wv)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,r=window.getComputedStyle(t),i=this.heightOracle,s=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?qe.RTL:qe.LTR;let o=this.heightOracle.mustRefreshForWrapping(s)||this.mustMeasureContent==="refresh",a=t.getBoundingClientRect(),l=o||this.mustMeasureContent||this.contentDOMHeight!=a.height;this.contentDOMHeight=a.height,this.mustMeasureContent=!1;let c=0,d=0;if(a.width&&a.height){let{scaleX:k,scaleY:w}=nv(t,a);(k>.005&&Math.abs(this.scaleX-k)>.005||w>.005&&Math.abs(this.scaleY-w)>.005)&&(this.scaleX=k,this.scaleY=w,c|=16,o=l=!0)}let h=(parseInt(r.paddingTop)||0)*this.scaleY,u=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=h||this.paddingBottom!=u)&&(this.paddingTop=h,this.paddingBottom=u,c|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(i.lineWrapping&&(l=!0),this.editorWidth=e.scrollDOM.clientWidth,c|=16);let f=rv(this.view.contentDOM,!1).y;f!=this.scrollParent&&(this.scrollParent=f,this.scrollAnchorHeight=-1,this.scrollOffset=0);let m=this.getScrollOffset();this.scrollOffset!=m&&(this.scrollAnchorHeight=-1,this.scrollOffset=m),this.scrolledToBottom=av(this.scrollParent||e.win);let O=(this.printing?y2:O2)(t,this.paddingTop),S=O.top-this.pixelViewport.top,x=O.bottom-this.pixelViewport.bottom;this.pixelViewport=O;let D=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(D!=this.inView&&(this.inView=D,D&&(l=!0)),!this.inView&&!this.scrollTarget&&!b2(e.dom))return 0;let M=a.width;if((this.contentDOMWidth!=M||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=a.width,this.editorHeight=e.scrollDOM.clientHeight,c|=16),l){let k=e.docView.measureVisibleLineHeights(this.viewport);if(i.mustRefreshForHeights(k)&&(o=!0),o||i.lineWrapping&&Math.abs(M-this.contentDOMWidth)>i.charWidth){let{lineHeight:w,charWidth:R,textHeight:X}=e.docView.measureTextSize();o=w>0&&i.refresh(s,w,R,X,Math.max(5,M/R),k),o&&(e.docView.minWidth=0,c|=16)}S>0&&x>0?d=Math.max(S,x):S<0&&x<0&&(d=Math.min(S,x)),MS();for(let w of this.viewports){let R=w.from==this.viewport.from?k:e.docView.measureVisibleLineHeights(w);this.heightMap=(o?Un.empty().applyChanges(this.stateDeco,De.empty,this.heightOracle,[new zr(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(i,0,o,new tm(w.from,R))}Vo&&(c|=2)}let Z=!this.viewportIsAppropriate(this.viewport,d)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return Z&&(c&2&&(c|=this.updateScaler()),this.viewport=this.getViewport(d,this.scrollTarget),c|=this.updateForViewport()),(c&2||Z)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),c|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),c}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),i=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:a}=this,l=new Lo(i.lineAt(o-r*1e3,ct.ByHeight,s,0,0).from,i.lineAt(a+(1-r)*1e3,ct.ByHeight,s,0,0).to);if(t){let{head:c}=t.range;if(cl.to){let d=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),h=i.lineAt(c,ct.ByPos,s,0,0),u;t.y=="center"?u=(h.top+h.bottom)/2-d/2:t.y=="start"||t.y=="nearest"&&c=a+Math.max(10,Math.min(r,250)))&&i>o-2*1e3&&s>1,o=i<<1;if(this.defaultTextDirection!=qe.LTR&&!r)return[];let a=[],l=(d,h,u,f)=>{if(h-dd&&xx.from>=u.from&&x.to<=u.to&&Math.abs(x.from-d)x.fromD));if(!S){if(hM.from<=h&&M.to>=h)){let M=t.moveToLineBoundary(z.cursor(h),!1,!0).head;M>d&&(h=M)}let x=this.gapSize(u,d,h,f),D=r||x<2e6?x:2e6;S=new rl(d,h,x,D)}a.push(S)},c=d=>{if(d.length2e6)for(let w of e)w.from>=d.from&&w.fromd.from&&l(d.from,f,d,h),mt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let r=[];$e.spans(t,this.viewport.from,this.viewport.to,{span(s,o){r.push({from:s,to:o})},point(){}},20);let i=0;if(r.length!=this.visibleRanges.length)i=12;else for(let s=0;s=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||qa(this.heightMap.lineAt(e,ct.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||qa(this.heightMap.lineAt(this.scaler.fromDOM(e),ct.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop*this.scaleY:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return qa(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},Lo=class{constructor(e,t){this.from=e,this.to=t}};function S2(n,e,t){let r=[],i=n,s=0;return $e.spans(t,n,e,{span(){},point(o,a){o>i&&(r.push({from:i,to:o}),s+=o-i),i=a}},20),i=1)return e[e.length-1].to;let r=Math.floor(n*t);for(let i=0;;i++){let{from:s,to:o}=e[i],a=o-s;if(r<=a)return s+r;r-=a}}function id(n,e){let t=0;for(let{from:r,to:i}of n.ranges){if(e<=i){t+=e-r;break}t+=i-r}return t/n.total}function v2(n,e){for(let t of n)if(e(t))return t}var DS={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function ZS(n){let e=n.facet(Rd).filter(r=>typeof r!="function"),t=n.facet(Tm).filter(r=>typeof r!="function");return t.length&&e.push($e.join(t)),e}var om=class n{constructor(e,t,r){let i=0,s=0,o=0;this.viewports=r.map(({from:a,to:l})=>{let c=t.lineAt(a,ct.ByPos,e,0,0).top,d=t.lineAt(l,ct.ByPos,e,0,0).bottom;return i+=d-c,{from:a,to:l,top:c,bottom:d,domTop:0,domBottom:0}}),this.scale=(7e6-i)/(t.height-i);for(let a of this.viewports)a.domTop=o+(a.top-s)*this.scale,o=a.domBottom=a.domTop+(a.bottom-a.top),s=a.bottom}toDOM(e){for(let t=0,r=0,i=0;;t++){let s=tt.from==e.viewports[r].from&&t.to==e.viewports[r].to):!1}};function qa(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),r=e.toDOM(n.bottom);return new Xr(n.from,n.length,t,r-t,Array.isArray(n._content)?n._content.map(i=>qa(i,e)):n._content)}var sd=oe.define({combine:n=>n.join(" ")}),am=oe.define({combine:n=>n.indexOf(!0)>-1}),lm=mr.newName(),Bv=mr.newName(),Vv=mr.newName(),Fv={"&light":"."+Bv,"&dark":"."+Vv};function cm(n,e,t){return new mr(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,i=>{if(i=="&")return n;if(!t||!t[i])throw new RangeError(`Unsupported selector: ${i}`);return t[i]}):n+" "+r}})}var w2=cm("."+lm,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{userSelect:"none",position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},".cm-panels-top":{top:"0"},".cm-panels-bottom":{bottom:"0"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{background:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 0) no-repeat",backgroundSize:".4em",backgroundPosition:"calc(min(50%, 0px)) center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Fv),x2={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},xp=ae.ie&&ae.ie_version<=11,dm=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Rp,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let r of t)this.queue.push(r);(ae.ie&&ae.ie_version<=11||ae.ios&&e.composing)&&t.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&ae.android&&e.constructor.EDIT_CONTEXT!==!1&&!(ae.chrome&&ae.chrome_version<126)&&(this.editContext=new hm(e),e.state.facet(xi)&&(e.contentDOM.editContext=this.editContext.editContext)),xp&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,r)=>t!=e[r]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,i=this.selectionRange;if(r.state.facet(xi)?r.root.activeElement!=this.dom:!Ha(this.dom,i))return;let s=i.anchorNode&&r.docView.tile.nearest(i.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(ae.ie&&ae.ie_version<=11||ae.android&&ae.chrome)&&!r.state.selection.main.empty&&i.focusNode&&Ka(i.focusNode,i.focusOffset,i.anchorNode,i.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=ll(e.root);if(!t)return!1;let r=ae.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&P2(this.view,t)||t;if(!r||this.selectionRange.eq(r))return!1;let i=Ha(this.dom,r);return i&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&Xo(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(i)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,r=-1,i=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(i=!0),t==-1?{from:t,to:r}=o:(t=Math.min(o.from,t),r=Math.max(o.to,r)))}return{from:t,to:r,typeOver:i}}readChange(){let{from:e,to:t,typeOver:r}=this.processRecords(),i=this.selectionChanged&&Ha(this.dom,this.selectionRange);if(e<0&&!i)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new Gp(this.view,e,t,r);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let r=this.view.state,i=Rv(this.view,t);return this.view.state==r&&(t.domChanged||t.newSel&&!wd(this.view.state.selection,t.newSel.main))&&this.view.update([]),i}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let r=IS(t,e.previousSibling||e.target.previousSibling,-1),i=IS(t,e.nextSibling||e.target.nextSibling,1);return{from:r?t.posAfter(r):t.posAtStart,to:i?t.posBefore(i):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(xi)!=e.state.facet(xi)&&(e.view.contentDOM.editContext=e.state.facet(xi)?this.editContext.editContext:null))}destroy(){var e,t,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let i of this.scrollTargets)i.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function IS(n,e,t){for(;e;){let r=mt.get(e);if(r&&r.parent==n)return r;let i=e.parentNode;e=i!=n.dom?i:t>0?e.nextSibling:e.previousSibling}return null}function XS(n,e){let t=e.startContainer,r=e.startOffset,i=e.endContainer,s=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return Ka(o.node,o.offset,i,s)&&([t,r,i,s]=[i,s,t,r]),{anchorNode:t,anchorOffset:r,focusNode:i,focusOffset:s}}function P2(n,e){if(e.getComposedRanges){let i=e.getComposedRanges(n.root)[0];if(i)return XS(n,i)}let t=null;function r(i){i.preventDefault(),i.stopImmediatePropagation(),t=i.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",r,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",r,!0),t?XS(n,t):null}var hm=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let i=e.state.selection.main,{anchor:s,head:o}=i,a=this.toEditorPos(r.updateRangeStart),l=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:a,drifted:!1});let c=l-a>r.text.length;a==this.from&&sthis.to&&(l=s);let d=Mv(e.state.sliceDoc(a,l),r.text,(c?i.from:i.to)-a,c?"end":null);if(!d){let u=z.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));wd(u,i)||e.dispatch({selection:u,userEvent:"select"});return}let h={from:d.from+a,to:d.toA+a,insert:De.of(r.text.slice(d.from,d.toB).split(` +`))};if((ae.mac||ae.android)&&h.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(h={from:a,to:l,insert:De.of([r.text.replace("."," ")])}),this.pendingContextChange=h,!e.state.readOnly){let u=this.to-this.from+(h.to-h.from+h.insert.length);Cm(e,h,z.single(this.toEditorPos(r.selectionStart,u),this.toEditorPos(r.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),h.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let i=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o{let i=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{let i=ll(r.root);i&&i.rangeCount&&this.editContext.updateSelectionBounds(i.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,i=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let d=c.length-(o-s);if(i&&o>=i.to)if(i.from==s&&i.to==o&&i.insert.eq(c)){i=this.pendingContextChange=null,t+=d,this.to+=d;return}else i=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=d,this.to+=d;else if(sthis.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=d}t+=d}),i&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(i=>!i.isUserEvent("input.type")&&i.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),i=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=i)&&this.editContext.updateSelection(r,i)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},F=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(i=>i.forEach(s=>r(s,this)))||(i=>this.update(i)),this.dispatch=this.dispatch.bind(this),this._root=e.root||O_(e.parent)||document,this.viewState=new kd(this,e.state||Me.create(e)),e.scrollTo&&e.scrollTo.is(ed)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Mo).map(i=>new el(i));for(let i of this.plugins)i.update(this);this.observer=new dm(this),this.inputState=new Hp(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Sd(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof ut?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,r=!1,i,s=this.state;for(let u of e){if(u.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=u.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,a=0,l=null;e.some(u=>u.annotation(zv))?(this.inputState.notifiedFocused=o,a=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,l=Wv(s,o),l||(a=1));let c=this.observer.delayedAndroidKey,d=null;if(c?(this.observer.clearDelayedAndroidKey(),d=this.observer.readChange(),(d&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(d=null)):this.observer.clear(),s.facet(Me.phrases)!=this.state.facet(Me.phrases))return this.setState(s);i=bd.create(this,s,e),i.flags|=a;let h=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(h&&(h=h.map(u.changes)),u.scrollIntoView){let{main:f}=u.state.selection,{x:m,y:O}=this.state.facet(n.cursorScrollMargin);h=new Ja(f.empty?f:z.cursor(f.head,f.head>f.anchor?-1:1),"nearest","nearest",O,m)}for(let f of u.effects)f.is(ed)&&(h=f.value.clip(this.state))}this.viewState.update(i,h),this.bidiCache=$d.update(this.bidiCache,i.changes),i.empty||(this.updatePlugins(i),this.inputState.update(i)),t=this.docView.update(i),this.state.facet(Ua)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(i.startState.facet(sd)!=i.state.facet(sd)&&(this.viewState.mustMeasureContent=!0),(t||r||h||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!i.empty)for(let u of this.state.facet(Zp))try{u(i)}catch(f){jn(this.state,f,"update listener")}(l||d)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),d&&!Rv(this,d)&&c.force&&Xo(this.contentDOM,c.key,c.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new kd(this,e),this.plugins=e.facet(Mo).map(r=>new el(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new Sd(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Mo),r=e.state.facet(Mo);if(t!=r){let i=[];for(let s of r){let o=t.indexOf(s);if(o<0)i.push(new el(s));else{let a=this.plugins[o];a.mustUpdate=e,i.push(a)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=i,this.pluginMap.clear()}else for(let i of this.plugins)i.mustUpdate=e;for(let i=0;i-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,r=this.viewState.scrollParent,i=this.viewState.getScrollOffset(),{scrollAnchorPos:s,scrollAnchorHeight:o,scaleY:a}=this.viewState;Math.abs(i-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0){if(av(r||this.win))s=-1,o=this.viewState.heightMap.height/this.viewState.scaleY;else{let m=this.viewState.scrollAnchorAt(i);s=m.from,o=m.top}a=this.viewState.scaleY}this.updateState=1;let c=this.viewState.measure();if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(m=>{try{return m.read(this)}catch(O){return jn(this.state,O),zS}}),u=bd.create(this,this.state,[]),f=!1;u.flags|=c,t?t.flags|=c:t=u,this.updateState=2,u.empty||(this.updatePlugins(u),this.inputState.update(u),this.updateAttrs(),f=this.docView.update(u),f&&this.docViewUpdate());for(let m=0;m1||O<-1)&&!(ae.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(r==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){i=i+O,r?s<0?r.scrollTop=r.scrollHeight:r.scrollTop+=O:this.win.scrollBy(0,O),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Zp))l(t)}get themeClasses(){return lm+" "+(this.state.facet(am)?Vv:Bv)+" "+this.state.facet(sd)}updateAttrs(){let e=WS(this,kv,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(xi)?"true":"false",class:"cm-content",style:`${ae.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),WS(this,Qm,t);let r=this.observer.ignore(()=>{let i=yS(this.contentDOM,this.contentAttrs,t),s=yS(this.dom,this.editorAttrs,e);return i||s});return this.editorAttrs=e,this.contentAttrs=t,r}showAnnouncements(e){let t=!0;for(let r of e)for(let i of r.effects)if(i.is(n.announce)){t&&(this.announceDOM.textContent=""),t=!1;let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=i.value}}mountStyles(){this.styleModules=this.state.facet(Ua);let e=this.state.facet(n.cspNonce);mr.mount(this.root,this.styleModules.concat(w2).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;tr.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,r){return wp(this,e,kS(this,e,t,r))}moveByGroup(e,t){return wp(this,e,kS(this,e,t,r=>Y_(this,e.head,r)))}visualLineSide(e,t){let r=this.bidiSpans(e),i=this.textDirectionAt(e.from),s=r[t?r.length-1:0];return z.cursor(s.side(t,i)+e.from,s.forward(!t,i)?1:-1)}moveToLineBoundary(e,t,r=!0){return F_(this,e,t,r)}moveVertically(e,t,r){return wp(this,e,j_(this,e,t,r))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let r=jp(this,e,t);return r&&r.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),jp(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let r=this.state.doc.lineAt(e),i=this.bidiSpans(r),s=i[br.find(i,e-r.from,-1,t)];return this.docView.coordsAt(e,t,s.dir==qe.RTL)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(vv)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>k2)return fv(e.length);let t=this.textDirectionAt(e.from),r;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||uv(s.isolates,r=wS(this,e))))return s.order;r||(r=wS(this,e));let i=k_(e.text,t,r);return this.bidiCache.push(new $d(e.from,e.to,t,r,!0,i)),i}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||ae.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{ov(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){var r,i,s,o;return ed.of(new Ja(typeof e=="number"?z.cursor(e):e,(r=t.y)!==null&&r!==void 0?r:"nearest",(i=t.x)!==null&&i!==void 0?i:"nearest",(s=t.yMargin)!==null&&s!==void 0?s:5,(o=t.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return ed.of(new Ja(z.cursor(r.from),"start","start",r.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return it.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return it.define(()=>({}),{eventObservers:e})}static theme(e,t){let r=mr.newName(),i=[sd.of(r),Ua.of(cm(`.${r}`,e))];return t&&t.dark&&i.push(am.of(!0)),i}static baseTheme(e){return pr.lowest(Ua.of(cm("."+lm,e,Fv)))}static findFromDOM(e){var t;let r=e.querySelector(".cm-content"),i=r&&mt.get(r)||mt.get(e);return((t=i==null?void 0:i.root)===null||t===void 0?void 0:t.view)||null}};F.styleModule=Ua;F.inputHandler=yv;F.clipboardInputFilter=km;F.clipboardOutputFilter=$m;F.scrollHandler=xv;F.focusChangeEffect=Sv;F.perLineTextDirection=vv;F.exceptionSink=bv;F.updateListener=Zp;F.editable=xi;F.mouseSelectionStyle=Ov;F.dragMovesSelection=gv;F.clickAddsSelectionRange=mv;F.decorations=Rd;F.blockWrappers=$v;F.outerDecorations=Tm;F.atomicRanges=ul;F.bidiIsolatedRanges=Qv;F.cursorScrollMargin=oe.define({combine:n=>{let e=5,t=5;for(let r of n)typeof r=="number"?e=t=r:{x:e,y:t}=r;return{x:e,y:t}}});F.scrollMargins=Tv;F.darkTheme=am;F.cspNonce=oe.define({combine:n=>n.length?n[0]:""});F.contentAttributes=Qm;F.editorAttributes=kv;F.lineWrapping=F.contentAttributes.of({class:"cm-lineWrapping"});F.announce=ye.define();var k2=4096,zS={},$d=class n{constructor(e,t,r,i,s,o){this.from=e,this.to=t,this.dir=r,this.isolates=i,this.fresh=s,this.order=o}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let r=[],i=e.length?e[e.length-1].dir:qe.LTR;for(let s=Math.max(0,e.length-10);s=0;i--){let s=r[i],o=typeof s=="function"?s(n):s;o&&wm(o,t)}return t}var $2=ae.mac?"mac":ae.windows?"win":ae.linux?"linux":"key";function Q2(n,e){let t=n.split(/-(?!$)/),r=t[t.length-1];r=="Space"&&(r=" ");let i,s,o,a;for(let l=0;lr.concat(i),[]))),t}function jv(n,e,t){return Uv(Yv(n.state),e,n,t)}var ji=null,A2=4e3;function C2(n,e=$2){let t=Object.create(null),r=Object.create(null),i=(o,a)=>{let l=r[o];if(l==null)r[o]=a;else if(l!=a)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},s=(o,a,l,c,d)=>{var h,u;let f=t[o]||(t[o]=Object.create(null)),m=a.split(/ (?!$)/).map(x=>Q2(x,e));for(let x=1;x{let Z=ji={view:M,prefix:D,scope:o};return setTimeout(()=>{ji==Z&&(ji=null)},A2),!0}]})}let O=m.join(" ");i(O,!1);let S=f[O]||(f[O]={preventDefault:!1,stopPropagation:!1,run:((u=(h=f._any)===null||h===void 0?void 0:h.run)===null||u===void 0?void 0:u.slice())||[]});l&&S.run.push(l),c&&(S.preventDefault=!0),d&&(S.stopPropagation=!0)};for(let o of n){let a=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let c of a){let d=t[c]||(t[c]=Object.create(null));d._any||(d._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:h}=o;for(let u in d)d[u].run.push(f=>h(f,um))}let l=o[e]||o.key;if(l)for(let c of a)s(c,l,o.run,o.preventDefault,o.stopPropagation),o.shift&&s(c,"Shift-"+l,o.shift,o.preventDefault,o.stopPropagation)}return t}var um=null;function Uv(n,e,t,r){um=e;let i=pS(e),s=Ir(i,0),o=Yi(s)==i.length&&i!=" ",a="",l=!1,c=!1,d=!1;ji&&ji.view==t&&ji.scope==r&&(a=ji.prefix+" ",Dv.indexOf(e.keyCode)<0&&(c=!0,ji=null));let h=new Set,u=S=>{if(S){for(let x of S.run)if(!h.has(x)&&(h.add(x),x(t)))return S.stopPropagation&&(d=!0),!0;S.preventDefault&&(S.stopPropagation&&(d=!0),c=!0)}return!1},f=n[r],m,O;return f&&(u(f[a+od(i,e,!o)])?l=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(ae.windows&&e.ctrlKey&&e.altKey)&&!(ae.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(m=wi[e.keyCode])&&m!=i?(u(f[a+od(m,e,!0)])||e.shiftKey&&(O=Eo[e.keyCode])!=i&&O!=m&&u(f[a+od(O,e,!1)]))&&(l=!0):o&&e.shiftKey&&u(f[a+od(i,e,!0)])&&(l=!0),!l&&u(f._any)&&(l=!0)),c&&(l=!0),l&&d&&e.stopPropagation(),um=null,l}var Ws=class n{constructor(e,t,r,i,s){this.className=e,this.left=t,this.top=r,this.width=i,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,r){if(r.empty){let i=e.coordsAtPos(r.head,r.assoc||1);if(!i)return[];let s=qv(e);return[new n(t,i.left-s.left,i.top-s.top,null,i.bottom-i.top)]}else return _2(e,t,r)}};function qv(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==qe.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function BS(n,e,t,r){let i=n.coordsAtPos(e,t*2);if(!i)return r;let s=n.dom.getBoundingClientRect(),o=(i.top+i.bottom)/2,a=n.posAtCoords({x:s.left+1,y:o}),l=n.posAtCoords({x:s.right-1,y:o});return a==null||l==null?r:{from:Math.max(r.from,Math.min(a,l)),to:Math.min(r.to,Math.max(a,l))}}function _2(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let r=Math.max(t.from,n.viewport.from),i=Math.min(t.to,n.viewport.to),s=n.textDirection==qe.LTR,o=n.contentDOM,a=o.getBoundingClientRect(),l=qv(n),c=o.querySelector(".cm-line"),d=c&&window.getComputedStyle(c),h=a.left+(d?parseInt(d.paddingLeft)+Math.min(0,parseInt(d.textIndent)):0),u=a.right-(d?parseInt(d.paddingRight):0),f=Yp(n,r,1),m=Yp(n,i,-1),O=f.type==Ht.Text?f:null,S=m.type==Ht.Text?m:null;if(O&&(n.lineWrapping||f.widgetLineBreaks)&&(O=BS(n,r,1,O)),S&&(n.lineWrapping||m.widgetLineBreaks)&&(S=BS(n,i,-1,S)),O&&S&&O.from==S.from&&O.to==S.to)return D(M(t.from,t.to,O));{let k=O?M(t.from,null,O):Z(f,!1),w=S?M(null,t.to,S):Z(m,!0),R=[];return(O||f).to<(S||m).from-(O&&S?1:0)||f.widgetLineBreaks>1&&k.bottom+n.defaultLineHeight/2q&&ve.from=B)break;Qe>we&&de(Math.max(Pe,we),k==null&&Pe<=q,Math.min(Qe,B),w==null&&Qe>=pe,G.dir)}if(we=ue.to+1,we>=B)break}return ne.length==0&&de(q,k==null,pe,w==null,n.textDirection),{top:X,bottom:W,horizontal:ne}}function Z(k,w){let R=a.top+(w?k.top:k.bottom);return{top:R,bottom:R,horizontal:[]}}}function E2(n,e){return n.constructor==e.constructor&&n.eq(e)}var fm=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(hd)!=e.state.facet(hd)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,r=e.facet(hd);for(;t!E2(t,this.drawn[r]))){let t=this.dom.firstChild,r=0;for(let i of e)i.update&&t&&i.constructor&&this.drawn[r].constructor&&i.update(t,this.drawn[r])?(t=t.nextSibling,r++):this.dom.insertBefore(i.draw(),t);for(;t;){let i=t.nextSibling;t.remove(),t=i}this.drawn=e,ae.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},hd=oe.define();function Gv(n){return[it.define(e=>new fm(e,n)),hd.of(n)]}var Fo=oe.define({combine(n){return Yn(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function Ld(n={}){return[Fo.of(n),R2,M2,D2,wv.of(!0)]}function Hv(n){return n.startState.facet(Fo)!=n.state.facet(Fo)}var R2=Gv({above:!0,markers(n){let{state:e}=n,t=e.facet(Fo),r=[];for(let i of e.selection.ranges){let s=i==e.selection.main;if(i.empty||t.drawRangeCursor&&!(s&&ae.ios&&t.iosSelectionHandles)){let o=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",a=i.empty?i:z.cursor(i.head,i.assoc);for(let l of Ws.forRange(n,o,a))r.push(l)}}return r},update(n,e){n.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=Hv(n);return t&&VS(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){VS(e.state,n)},class:"cm-cursorLayer"});function VS(n,e){e.style.animationDuration=n.facet(Fo).cursorBlinkRate+"ms"}var M2=Gv({above:!1,markers(n){let e=[],{main:t,ranges:r}=n.state.selection;for(let i of r)if(!i.empty)for(let s of Ws.forRange(n,"cm-selectionBackground",i))e.push(s);if(ae.ios&&!t.empty&&n.state.facet(Fo).iosSelectionHandles){for(let i of Ws.forRange(n,"cm-selectionHandle cm-selectionHandle-start",z.cursor(t.from,1)))e.push(i);for(let i of Ws.forRange(n,"cm-selectionHandle cm-selectionHandle-end",z.cursor(t.to,1)))e.push(i)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||Hv(n)},class:"cm-selectionLayer"}),L2=ae.gecko&&ae.gecko_version==153?"#ffffff01":"transparent",D2=pr.highest(F.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`${L2} !important`},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Kv=ye.define({map(n,e){return n==null?null:e.mapPos(n)}}),Ga=Xe.define({create(){return null},update(n,e){return n!=null&&(n=e.changes.mapPos(n)),e.effects.reduce((t,r)=>r.is(Kv)?r.value:t,n)}}),Z2=it.fromClass(class{constructor(n){this.view=n,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(n){var e;let t=n.state.field(Ga);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(n.startState.field(Ga)!=t||n.docChanged||n.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:n}=this,e=n.state.field(Ga),t=e!=null&&n.coordsAtPos(e);if(!t)return null;let r=n.scrollDOM.getBoundingClientRect();return{left:t.left-r.left+n.scrollDOM.scrollLeft*n.scaleX,top:t.top-r.top+n.scrollDOM.scrollTop*n.scaleY,height:t.bottom-t.top}}drawCursor(n){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;n?(this.cursor.style.left=n.left/e+"px",this.cursor.style.top=n.top/t+"px",this.cursor.style.height=n.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(n){this.view.state.field(Ga)!=n&&this.view.dispatch({effects:Kv.of(n)})}},{eventObservers:{dragover(n){this.setDropPos(this.view.posAtCoords({x:n.clientX,y:n.clientY}))},dragleave(n){(n.target==this.view.contentDOM||!this.view.contentDOM.contains(n.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Jv(){return[Ga,Z2]}function FS(n,e,t,r,i){e.lastIndex=0;for(let s=n.iterRange(t,r),o=t,a;!s.next().done;o+=s.value.length)if(!s.lineBreak)for(;a=e.exec(s.value);)i(o+a.index,a)}function I2(n,e){let t=n.visibleRanges;if(t.length==1&&t[0].from==n.viewport.from&&t[0].to==n.viewport.to)return t;let r=[];for(let{from:i,to:s}of t)i=Math.max(n.state.doc.lineAt(i).from,i-e),s=Math.min(n.state.doc.lineAt(s).to,s+e),r.length&&r[r.length-1].to>=i?r[r.length-1].to=s:r.push({from:i,to:s});return r}var dl=class{constructor(e){let{regexp:t,decoration:r,decorate:i,boundary:s,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,i)this.addMatch=(a,l,c,d)=>i(d,c,c+a[0].length,a,l);else if(typeof r=="function")this.addMatch=(a,l,c,d)=>{let h=r(a,l,c);h&&d(c,c+a[0].length,h)};else if(r)this.addMatch=(a,l,c,d)=>d(c,c+a[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=o}createDeco(e){let t=new Zr,r=t.add.bind(t);for(let{from:i,to:s}of I2(e,this.maxLength))FS(e.state.doc,this.regexp,i,s,(o,a)=>this.addMatch(a,e,o,r));return t.finish()}updateDeco(e,t){let r=1e9,i=-1;return e.docChanged&&e.changes.iterChanges((s,o,a,l)=>{l>=e.view.viewport.from&&a<=e.view.viewport.to&&(r=Math.min(a,r),i=Math.max(l,i))}),e.viewportMoved||i-r>1e3?this.createDeco(e.view):i>-1?this.updateRange(e.view,t.map(e.changes),r,i):t}updateRange(e,t,r,i){for(let s of e.visibleRanges){let o=Math.max(s.from,r),a=Math.min(s.to,i);if(a>=o){let l=e.state.doc.lineAt(o),c=l.tol.from;o--)if(this.boundary.test(l.text[o-1-l.from])){d=o;break}for(;au.push(x.range(O,S));if(l==c)for(this.regexp.lastIndex=d-l.from;(f=this.regexp.exec(l.text))&&f.indexthis.addMatch(S,e,O,m));t=t.update({filterFrom:d,filterTo:h,filter:(O,S)=>Oh,add:u})}}return t}},pm=/x/.unicode!=null?"gu":"g",X2=new RegExp(`[\0-\b +-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,pm),z2={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},Pp=null;function W2(){var n;if(Pp==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Pp=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return Pp||!1}var ud=oe.define({combine(n){let e=Yn(n,{render:null,specialChars:X2,addSpecialChars:null});return(e.replaceTabs=!W2())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,pm)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,pm)),e}});function ew(n={}){return[ud.of(n),N2()]}var YS=null;function N2(){return YS||(YS=it.fromClass(class{constructor(n){this.view=n,this.decorations=J.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(ud)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new dl({regexp:n.specialChars,decoration:(e,t,r)=>{let{doc:i}=t.state,s=Ir(e[0],0);if(s==9){let o=i.lineAt(r),a=t.state.tabSize,l=Gt(o.text,a,r-o.from);return J.replace({widget:new gm((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=J.replace({widget:new mm(n,s)}))},boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(ud);n.startState.facet(ud)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(n.view)):this.decorations=this.decorator.updateDeco(n,this.decorations)}},{decorations:n=>n.decorations}))}var B2="\u2022";function V2(n){return n>=32?B2:n==10?"\u2424":String.fromCharCode(9216+n)}var mm=class extends Ct{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=V2(this.code),r=e.state.phrase("Control character")+" "+(z2[this.code]||"0x"+this.code.toString(16)),i=this.options.render&&this.options.render(this.code,r,t);if(i)return i;let s=document.createElement("span");return s.textContent=t,s.title=r,s.setAttribute("aria-label",r),s.className="cm-specialChar",s}ignoreEvent(){return!1}},gm=class extends Ct{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function Dd(){return Y2}var F2=J.line({class:"cm-activeLine"}),Y2=it.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let r of n.state.selection.ranges){let i=n.lineBlockAt(r.head);i.from>e&&(t.push(F2.range(i.from)),e=i.from)}return J.set(t)}},{decorations:n=>n.decorations});var Om=2e3;function j2(n,e,t){let r=Math.min(e.line,t.line),i=Math.max(e.line,t.line),s=[];if(e.off>Om||t.off>Om||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=i;l++){let c=n.doc.line(l);c.length<=a&&s.push(z.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=i;l++){let c=n.doc.line(l),d=Kc(c.text,o,n.tabSize,!0);if(d<0)s.push(z.cursor(c.to));else{let h=Kc(c.text,a,n.tabSize);s.push(z.range(c.from+d,c.from+h))}}}return s}function U2(n,e){let t=n.coordsAtPos(n.viewport.from);return t?Math.round(Math.abs((t.left-e)/n.defaultCharacterWidth)):-1}function jS(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),r=n.state.doc.lineAt(t),i=t-r.from,s=i>Om?-1:i==r.length?U2(n,e.clientX):Gt(r.text,n.state.tabSize,t-r.from);return{line:r.number,col:s,off:i}}function q2(n,e){let t=jS(n,e),r=n.state.selection;return t?{update(i){if(i.docChanged){let s=i.changes.mapPos(i.startState.doc.line(t.line).from),o=i.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(i.changes)}},get(i,s,o){let a=jS(n,i);if(!a)return r;let l=j2(n.state,t,a);return l.length?o?z.create(l.concat(r.ranges)):z.create(l):r}}:null}function Zd(n){let e=(n==null?void 0:n.eventFilter)||(t=>t.altKey&&t.button==0);return F.mouseSelectionStyle.of((t,r)=>e(r)?q2(t,r):null)}var G2={Alt:[18,n=>!!n.altKey],Control:[17,n=>!!n.ctrlKey],Shift:[16,n=>!!n.shiftKey],Meta:[91,n=>!!n.metaKey]},H2={style:"cursor: crosshair"};function Id(n={}){let[e,t]=G2[n.key||"Alt"],r=it.fromClass(class{constructor(i){this.view=i,this.isDown=!1}set(i){this.isDown!=i&&(this.isDown=i,this.view.update([]))}},{eventObservers:{keydown(i){this.set(i.keyCode==e||t(i))},keyup(i){(i.keyCode==e||!t(i))&&this.set(!1)},mousemove(i){this.set(t(i))}}});return[r,F.contentAttributes.of(i=>{var s;return!((s=i.plugin(r))===null||s===void 0)&&s.isDown?H2:null})]}var ad="-10000px",Qd=class{constructor(e,t,r,i){this.facet=t,this.createTooltipView=r,this.removeTooltipView=i,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let s=null;this.tooltipViews=this.tooltips.map(o=>s=r(o,s))}update(e,t){var r;let i=e.state.facet(this.facet),s=i.filter(l=>l);if(i===this.input){for(let l of this.tooltipViews)l.update&&l.update(e);return!1}let o=[],a=t?[]:null;for(let l=0;lt[c]=l),t.length=a.length),this.input=i,this.tooltips=s,this.tooltipViews=o,!0}};function K2(n){let e=n.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}var kp=oe.define({combine:n=>{var e,t,r;return{position:ae.ios?"absolute":((e=n.find(i=>i.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(i=>i.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((r=n.find(i=>i.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||K2}}}),US=new WeakMap,tw=it.fromClass(class{constructor(n){this.view=n,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=n.state.facet(kp);this.position=e.position,this.parent=e.parent,this.classes=n.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Qd(n,_m,(t,r)=>this.createTooltip(t,r),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),n.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let n of this.manager.tooltipViews)this.intersectionObserver.observe(n.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(n){n.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(n,this.above);e&&this.observeIntersection();let t=e||n.geometryChanged,r=n.state.facet(kp);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let i of this.manager.tooltipViews)i.dom.style.position=this.position;t=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let i of this.manager.tooltipViews)this.container.appendChild(i.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(n,e){let t=n.create(this.view),r=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),n.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let i=document.createElement("div");i.className="cm-tooltip-arrow",t.dom.appendChild(i)}return t.dom.style.position=this.position,t.dom.style.top=ad,t.dom.style.left="0px",this.container.insertBefore(t.dom,r),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var n,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(n=r.destroy)===null||n===void 0||n.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let n=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(ae.safari){let o=s.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!s.offsetParent&&s.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(n=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:n,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),i=Am(this.view);return{visible:{left:r.left+i.left,top:r.top+i.top,right:r.right-i.right,bottom:r.bottom-i.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((s,o)=>{let a=this.manager.tooltipViews[o];return a.getCoords?a.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(kp).tooltipSpace(this.view),scaleX:n,scaleY:e,makeAbsolute:t}}writeMeasure(n){var e;if(n.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:t,space:r,scaleX:i,scaleY:s}=n,o=[];for(let a=0;a=Math.min(t.bottom,r.bottom)||h.rightMath.min(t.right,r.right)+.1)){d.style.top=ad;continue}let f=l.arrow?c.dom.querySelector(".cm-tooltip-arrow"):null,m=f?7:0,O=u.right-u.left,S=(e=US.get(c))!==null&&e!==void 0?e:u.bottom-u.top,x=c.offset||eE,D=this.view.textDirection==qe.LTR,M=u.width>r.right-r.left?D?r.left:r.right-u.width:D?Math.max(r.left,Math.min(h.left-(f?14:0)+x.x,r.right-O)):Math.min(Math.max(r.left,h.left-O+(f?14:0)-x.x),r.right-O),Z=this.above[a];!l.strictSide&&(Z?h.top-S-m-x.yr.bottom)&&Z==r.bottom-h.bottom>h.top-r.top&&(Z=this.above[a]=!Z);let k=(Z?h.top-r.top:r.bottom-h.bottom)-m;if(kM&&X.topw&&(w=Z?X.top-S-2-m:X.bottom+m+2);if(this.position=="absolute"?(d.style.top=(w-n.parent.top)/s+"px",qS(d,(M-n.parent.left)/i)):(d.style.top=w/s+"px",qS(d,M/i)),f){let X=h.left+(D?x.x:-x.x)-(M+14-7);f.style.left=X/i+"px"}c.overlap!==!0&&o.push({left:M,top:w,right:R,bottom:w+S}),d.classList.toggle("cm-tooltip-above",Z),d.classList.toggle("cm-tooltip-below",!Z),c.positioned&&c.positioned(n.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let n of this.manager.tooltipViews)n.dom.style.top=ad}},{eventObservers:{scroll(){this.maybeMeasure()}}});function qS(n,e){let t=parseInt(n.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(n.style.left=e+"px")}var J2=F.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),eE={x:0,y:0},_m=oe.define({enables:[tw,J2]}),Td=oe.define({combine:n=>n.reduce((e,t)=>e.concat(t),[])}),Ad=class n{static create(e){return new n(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Qd(e,Td,(t,r)=>this.createHostedView(t,r),t=>t.dom.remove())}createHostedView(e,t){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let r of this.manager.tooltipViews){let i=r[e];if(i!==void 0){if(t===void 0)t=i;else if(t!==i)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}},tE=_m.compute([Td],n=>{let e=n.facet(Td);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var r;return(r=t.end)!==null&&r!==void 0?r:t.pos})),create:Ad.create,above:e[0].above,arrow:e.some(t=>t.arrow)}}),nE=oe.define(),bm=class{constructor(e,t,r,i,s,o){this.view=e,this.source=t,this.field=r,this.locked=i,this.setHover=s,this.hoverTime=o,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(e){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;eo.bottom||t.xo.right+e.defaultCharacterWidth)return;let a=e.bidiSpans(e.state.doc.lineAt(i)).find(c=>c.from<=i&&c.to>=i),l=a&&a.dir==qe.RTL?-1:1;s=t.x{if(a&&!(Array.isArray(a)&&!a.length)){let l=Array.isArray(a)?a:[a];i&&this.locked.set(l,i),e.dispatch({effects:this.setHover.of(l)})}};if(s&&"then"in s){let a=this.pending={pos:t};s.then(l=>{this.pending==a&&(this.pending=null,o(l))},l=>jn(e.state,l,"hover tooltip"))}else o(s)}get tooltip(){let e=this.view.plugin(tw),t=e?e.manager.tooltips.findIndex(r=>r.create==Ad.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:i,tooltip:s}=this;if(i.length&&!this.locked.has(i)&&s&&!rE(s.dom,e)||this.pending){let{pos:o}=i[0]||this.pending,a=(r=(t=i[0])===null||t===void 0?void 0:t.end)!==null&&r!==void 0?r:o;(o==a?this.view.posAtCoords(this.lastMove)!=o:!iE(this.view,o,a,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length&&!this.locked.has(t)){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=r=>{e.removeEventListener("mouseleave",t);let{active:i}=this;i.length&&!this.locked.has(i)&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}},ld=4;function rE(n,e){let{left:t,right:r,top:i,bottom:s}=n.getBoundingClientRect(),o;if(o=n.querySelector(".cm-tooltip-arrow")){let a=o.getBoundingClientRect();i=Math.min(a.top,i),s=Math.max(a.bottom,s)}return e.clientX>=t-ld&&e.clientX<=r+ld&&e.clientY>=i-ld&&e.clientY<=s+ld}function iE(n,e,t,r,i,s){let o=n.scrollDOM.getBoundingClientRect(),a=n.documentTop+n.documentPadding.top+n.contentHeight;if(o.left>r||o.righti||Math.min(o.bottom,a)=e&&l<=t}function nw(n,e={}){let t=ye.define(),r=new WeakMap,i=Xe.define({create(){return[]},update(o,a){let l=r.get(o);if(o.length&&(e.hideOnChange&&(a.docChanged||a.selection)?o=[]:l&&l(a)?o=[]:e.hideOn&&(o=o.filter(c=>!e.hideOn(a,c)))),a.docChanged&&o.length){let c=[];for(let d of o){let h=a.changes.mapPos(d.pos,-1,Xt.TrackDel);if(h!=null){let u=Object.assign(Object.create(null),d);u.pos=h,u.end!=null&&(u.end=a.changes.mapPos(u.end)),c.push(u)}}o=c}for(let c of a.effects)c.is(t)&&(o=c.value,l=void 0),(c.is(sE)&&!c.value||c.value==i)&&(o=[]);return o.length&&l&&r.set(o,l),o},provide:o=>Td.from(o)}),s=it.define(o=>new bm(o,n,i,r,t,e.hoverTime||300));return{active:i,extension:[i,s,nE.of(s),tE]}}var sE=ye.define();var GS=oe.define({combine(n){let e,t;for(let r of n)e=e||r.topContainer,t=t||r.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Em(n,e){let t=n.plugin(rw),r=t?t.specs.indexOf(e):-1;return r>-1?t.panels[r]:null}var rw=it.fromClass(class{constructor(n){this.input=n.state.facet(hl),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(n));let e=n.state.facet(GS);this.top=new Do(n,!0,e.topContainer),this.bottom=new Do(n,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(n){let e=n.state.facet(GS);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Do(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Do(n.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=n.state.facet(hl);if(t!=this.input){let r=t.filter(l=>l),i=[],s=[],o=[],a=[];for(let l of r){let c=this.specs.indexOf(l),d;c<0?(d=l(n.view),a.push(d)):(d=this.panels[c],d.update&&d.update(n)),i.push(d),(d.top?s:o).push(d)}this.specs=r,this.panels=i,this.top.sync(s),this.bottom.sync(o);for(let l of a)l.dom.classList.add("cm-panel"),l.mount&&l.mount()}else for(let r of this.panels)r.update&&r.update(n)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:n=>F.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})}),Do=class{constructor(e,t,r){this.view=e,this.top=t,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=HS(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=HS(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}};function HS(n){let e=n.nextSibling;return n.remove(),e}var hl=oe.define({enables:rw});function iw(n,e){let t,r=new Promise(o=>t=o),i=o=>oE(o,e,t);n.state.field($p,!1)?n.dispatch({effects:sw.of(i)}):n.dispatch({effects:ye.appendConfig.of($p.init(()=>[i]))});let s=ow.of(i);return{close:s,result:r.then(o=>((n.win.queueMicrotask||(l=>n.win.setTimeout(l,10)))(()=>{n.state.field($p).indexOf(i)>-1&&n.dispatch({effects:s})}),o))}}var $p=Xe.define({create(){return[]},update(n,e){for(let t of e.effects)t.is(sw)?n=[t.value].concat(n):t.is(ow)&&(n=n.filter(r=>r!=t.value));return n},provide:n=>hl.computeN([n],e=>e.field(n))}),sw=ye.define(),ow=ye.define();function oE(n,e,t){let r=e.content?e.content(n,()=>o(null)):null;if(!r){if(r=kt("form"),e.input){let a=kt("input",e.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),r.appendChild(kt("label",(e.label||"")+": ",a))}else r.appendChild(document.createTextNode(e.label||""));r.appendChild(document.createTextNode(" ")),r.appendChild(kt("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let i=r.nodeName=="FORM"?[r]:r.querySelectorAll("form");for(let a=0;a{c.keyCode==27?(c.preventDefault(),o(null)):c.keyCode==13&&(c.preventDefault(),o(l))}),l.addEventListener("submit",c=>{c.preventDefault(),o(l)})}let s=kt("div",r,kt("button",{onclick:()=>o(null),"aria-label":n.state.phrase("close"),class:"cm-dialog-close",type:"button"},["\xD7"]));e.class&&(s.className=e.class),s.classList.add("cm-dialog");function o(a){s.contains(s.ownerDocument.activeElement)&&n.focus(),t(a)}return{dom:s,top:e.top,mount:()=>{if(e.focus){let a;typeof e.focus=="string"?a=r.querySelector(e.focus):a=r.querySelector("input")||r.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}var $t=class extends fr{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};$t.prototype.elementClass="";$t.prototype.toDOM=void 0;$t.prototype.mapMode=Xt.TrackBefore;$t.prototype.startSide=$t.prototype.endSide=-1;$t.prototype.point=!0;var fd=oe.define(),aE=oe.define(),lE={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>$e.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},il=oe.define();function Hi(n){return[aw(),il.of(Ue(Ue({},lE),n))]}var ym=oe.define({combine:n=>n.some(e=>e)});function aw(n){let e=[cE];return n&&n.fixed===!1&&e.push(ym.of(!0)),e}var cE=it.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(il).map(e=>new Cd(n,e)),this.fixed=!n.state.facet(ym);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,r=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(r<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(ym)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=$e.iter(this.view.state.facet(fd),this.view.viewport.from),r=[],i=this.gutters.map(s=>new vm(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(s.type)){let o=!0;for(let a of s.type)if(a.type==Ht.Text&&o){Sm(t,r,a.from);for(let l of i)l.line(this.view,a,r);o=!1}else if(a.widget)for(let l of i)l.widget(this.view,a)}else if(s.type==Ht.Text){Sm(t,r,s.from);for(let o of i)o.line(this.view,s,r)}else if(s.widget)for(let o of i)o.widget(this.view,s);for(let s of i)s.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(il),t=n.state.facet(il),r=n.docChanged||n.heightChanged||n.viewportChanged||!$e.eq(n.startState.facet(fd),n.state.facet(fd),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let i of this.gutters)i.update(n)&&(r=!0);else{r=!0;let i=[];for(let s of t){let o=e.indexOf(s);o<0?i.push(new Cd(this.view,s)):(this.gutters[o].update(n),i.push(this.gutters[o]))}for(let s of this.gutters)s.dom.remove(),i.indexOf(s)<0&&s.destroy();for(let s of i)s.config.side=="after"?this.getDOMAfter().appendChild(s.dom):this.dom.appendChild(s.dom);this.gutters=i}return r}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>F.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let r=t.dom.offsetWidth*e.scaleX,i=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==qe.LTR?{left:r,right:i}:{right:r,left:i}})});function KS(n){return Array.isArray(n)?n:[n]}function Sm(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}var vm=class{constructor(e,t,r){this.gutter=e,this.height=r,this.i=0,this.cursor=$e.iter(e.markers,t.from)}addElement(e,t,r){let{gutter:i}=this,s=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==i.elements.length){let a=new _d(e,o,s,r);i.elements.push(a),i.dom.appendChild(a.dom)}else i.elements[this.i].update(e,o,s,r);this.height=t.bottom,this.i++}line(e,t,r){let i=[];Sm(this.cursor,i,t.from),r.length&&(i=i.concat(r));let s=this.gutter.config.lineMarker(e,t,i);s&&i.unshift(s);let o=this.gutter;i.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,i)}widget(e,t){let r=this.gutter.config.widgetMarker(e,t.widget,t),i=r?[r]:null;for(let s of e.state.facet(aE)){let o=s(e,t.widget,t);o&&(i||(i=[])).push(o)}i&&this.addElement(e,t,i)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},Cd=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in t.domEventHandlers)this.dom.addEventListener(r,i=>{let s=i.target,o;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let l=s.getBoundingClientRect();o=(l.top+l.bottom)/2}else o=i.clientY;let a=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[r](e,a,i)&&i.preventDefault()});this.markers=KS(t.markers(e)),t.initialSpacer&&(this.spacer=new _d(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=KS(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let i=this.config.updateSpacer(this.spacer.markers[0],e);i!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[i])}let r=e.view.viewport;return!$e.eq(this.markers,t,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},_d=class{constructor(e,t,r,i){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,r,i)}update(e,t,r,i){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),dE(this.markers,i)||this.setMarkers(e,i)}setMarkers(e,t){let r="cm-gutterElement",i=this.dom.firstChild;for(let s=0,o=0;;){let a=o,l=ss(a,l,c)||o(a,l,c):o}return r}})}}),sl=class extends $t{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function Qp(n,e){return n.state.facet(Zo).formatNumber(e,n.state)}var fE=il.compute([Zo],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(hE)},lineMarker(e,t,r){return r.some(i=>i.toDOM)?null:new sl(Qp(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,r)=>{for(let i of e.state.facet(uE)){let s=i(e,t,r);if(s)return s}return null},lineMarkerChange:e=>e.startState.facet(Zo)!=e.state.facet(Zo),initialSpacer(e){return new sl(Qp(e,JS(e.state.doc.lines)))},updateSpacer(e,t){let r=Qp(t.view,JS(t.view.state.doc.lines));return r==e.number?e:new sl(r)},domEventHandlers:n.facet(Zo).domEventHandlers,side:"before"}));function Xd(n={}){return[Zo.of(n),aw(),fE]}function JS(n){let e=9;for(;e{let e=[],t=-1;for(let r of n.selection.ranges){let i=n.doc.lineAt(r.head).from;i>t&&(t=i,e.push(pE.range(i)))}return $e.of(e)});function lw(){return mE}function cw(n){return it.define(e=>({decorations:n.createDeco(e),update(t){this.decorations=n.updateDeco(t,this.decorations)}}),{decorations:e=>e.decorations})}var gE=J.mark({class:"cm-highlightTab"}),OE=J.mark({class:"cm-highlightSpace"}),bE=cw(new dl({regexp:/\t| /g,decoration:n=>n[0]==" "?gE:OE,boundary:/\S/}));function dw(){return bE}var yE=cw(new dl({regexp:/\s+$/g,decoration:J.mark({class:"cm-trailingSpace"})}));function hw(){return yE}var SE=0,Cn=class{constructor(e,t){this.from=e,this.to=t}},xe=class{constructor(e={}){this.id=SE++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=St.match(e)),t=>{let r=e(t);return r===void 0?null:[this,r]}}};xe.closedBy=new xe({deserialize:n=>n.split(" ")});xe.openedBy=new xe({deserialize:n=>n.split(" ")});xe.group=new xe({deserialize:n=>n.split(" ")});xe.isolate=new xe({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});xe.contextHash=new xe({perNode:!0});xe.lookAhead=new xe({perNode:!0});xe.mounted=new xe({perNode:!0});var Ki=class{constructor(e,t,r,i=!1){this.tree=e,this.overlay=t,this.parser=r,this.bracketed=i}static get(e){return e&&e.props&&e.props[xe.mounted.id]}},vE=Object.create(null),St=class n{constructor(e,t,r,i=0){this.name=e,this.props=t,this.id=r,this.flags=i}static define(e){let t=e.props&&e.props.length?Object.create(null):vE,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),i=new n(e.name||"",t,e.id,r);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(i)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[s[0].id]=s[1]}}return i}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(xe.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let r in e)for(let i of r.split(" "))t[i]=e[r];return r=>{for(let i=r.prop(xe.group),s=-1;s<(i?i.length:0);s++){let o=t[s<0?r.name:i[s]];if(o)return o}}}};St.none=new St("",Object.create(null),0,8);var $i=class n{constructor(e){this.types=e;for(let t=0;t0;for(let l=this.cursor(o|We.IncludeAnonymous);;){let c=!1;if(l.from<=s&&l.to>=i&&(!a&&l.type.isAnonymous||t(l)!==!1)){if(l.firstChild())continue;c=!0}for(;c&&r&&(a||!l.type.isAnonymous)&&r(l),!l.nextSibling();){if(!l.parent())return;c=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Bm(St.none,this.children,this.positions,0,this.children.length,0,this.length,(t,r,i)=>new n(this.type,t,r,i,this.propValues),e.makeTree||((t,r,i)=>new n(St.none,t,r,i)))}static build(e){return xE(e)}};Ee.empty=new Ee(St.none,[],[],0);var Rm=class n{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},Ji=class n{constructor(e,t,r){this.buffer=e,this.length=t,this.set=r}get type(){return St.none}toString(){let e=[];for(let t=0;t0));l=o[l+3]);return a}slice(e,t,r){let i=this.buffer,s=new Uint16Array(t-e),o=0;for(let a=e,l=0;a=e&&te;case 1:return t<=e&&r>e;case 2:return r>e;case 4:return!0}}function fl(n,e,t,r){for(var i;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to0?a.length:-1;e!=c;e+=t){let d=a[e],h=l[e]+o.from,u;if(!(!(s&We.EnterBracketed&&d instanceof Ee&&(u=Ki.get(d))&&!u.overlay&&u.bracketed&&r>=h&&r<=h+d.length)&&!yw(i,r,h,h+d.length))){if(d instanceof Ji){if(s&We.ExcludeBuffers)continue;let f=d.findChild(0,d.buffer.length,t,r-h,i);if(f>-1)return new Fs(new Lm(o,d,e,h),null,f)}else if(s&We.IncludeAnonymous||!d.type.isAnonymous||Nm(d)){let f;if(!(s&We.IgnoreMounts)&&(f=Ki.get(d))&&!f.overlay)return new n(f.tree,h,e,o);let m=new n(d,h,e,o);return s&We.IncludeAnonymous||!m.type.isAnonymous?m:m.nextChild(t<0?d.children.length-1:0,t,r,i,s)}}}if(s&We.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,r=0){let i;if(!(r&We.IgnoreOverlays)&&(i=Ki.get(this._tree))&&i.overlay){let s=e-this.from,o=r&We.EnterBracketed&&i.bracketed;for(let{from:a,to:l}of i.overlay)if((t>0||o?a<=s:a=s:l>s))return new n(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function fw(n,e,t,r){let i=n.cursor(),s=[];if(!i.firstChild())return s;if(t!=null){for(let o=!1;!o;)if(o=i.type.is(t),!i.nextSibling())return s}for(;;){if(r!=null&&i.type.is(r))return s;if(i.type.is(e)&&s.push(i.node),!i.nextSibling())return r==null?s:[]}}function Mm(n,e,t=e.length-1){for(let r=n;t>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[t]&&e[t]!=r.name)return!1;t--}}return!0}var Lm=class{constructor(e,t,r,i){this.parent=e,this.buffer=t,this.index=r,this.start=i}},Fs=class n extends Nd{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,r){super(),this.context=e,this._parent=t,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.context.start,r);return s<0?null:new n(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,r=0){if(r&We.ExcludeBuffers)return null;let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new n(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new n(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new n(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:r}=this.context,i=this.index+4,s=r.buffer[this.index+3];if(s>i){let o=r.buffer[this.index+1];e.push(r.slice(i,s,o)),t.push(0)}return new Ee(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function Sw(n){if(!n.length)return null;let e=0,t=n[0];for(let s=1;st.from||o.to=e){let a=new _n(o.tree,o.overlay[0].from+s.from,-1,s);(i||(i=[r])).push(fl(a,e,t,!1))}}return i?Sw(i):r}var Yo=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~We.EnterBracketed,e instanceof _n)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:r,buffer:i}=this.buffer;return this.type=t||i.set.types[i.buffer[e]],this.from=r+i.buffer[e+1],this.to=r+i.buffer[e+2],!0}yield(e){return e?e instanceof _n?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode));let{buffer:i}=this.buffer,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.buffer.start,r);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){return this.buffer?r&We.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&We.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&We.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,r=this.stack.length-1;if(e<0){let i=r<0?0:this.stack[r]+4;if(this.index!=i)return this.yieldBuf(t.findChild(i,this.index,-1,0,4))}else{let i=t.buffer[this.index+3];if(i<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(i)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,r,{buffer:i}=this;if(i){if(e>0){if(this.index-1)for(let s=t+e,o=e<0?-1:r._tree.children.length;s!=o;s+=e){let a=r._tree.children[s];if(this.mode&We.IncludeAnonymous||a instanceof Ji||!a.type.isAnonymous||Nm(a))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==i){if(i==this.index)return o;t=o,r=s+1;break e}i=this.stack[--s]}for(let i=r;i=0;s--){if(s<0)return Mm(this._tree,e,i);let o=r[t.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[i]&&e[i]!=o.name)return!1;i--}}return!0}};function Nm(n){return n.children.some(e=>e instanceof Ji||!e.type.isAnonymous||Nm(e))}function xE(n){var e;let{buffer:t,nodeSet:r,maxBufferLength:i=1024,reused:s=[],minRepeatType:o=r.types.length}=n,a=Array.isArray(t)?new Rm(t,t.length):t,l=r.types,c=0,d=0;function h(k,w,R,X,W,ne){let{id:de,start:q,end:pe,size:ve}=a,we=d,B=c;if(ve<0)if(a.next(),ve==-1){let Ge=s[de];R.push(Ge),X.push(q-k);return}else if(ve==-3){c=de;return}else if(ve==-4){d=de;return}else throw new RangeError(`Unrecognized record size: ${ve}`);let ue=l[de],G,Pe,Qe=q-k;if(pe-q<=i&&(Pe=S(a.pos-w,W))){let Ge=new Uint16Array(Pe.size-Pe.skip),He=a.pos-Pe.size,Ot=Ge.length;for(;a.pos>He;)Ot=x(Pe.start,Ge,Ot);G=new Ji(Ge,pe-Pe.start,r),Qe=Pe.start-k}else{let Ge=a.pos-ve;a.next();let He=[],Ot=[],me=de>=o?de:-1,nn=0,ir=pe;for(;a.pos>Ge;)me>=0&&a.id==me&&a.size>=0?(a.end<=ir-i&&(m(He,Ot,q,nn,a.end,ir,me,we,B),nn=He.length,ir=a.end),a.next()):ne>2500?u(q,Ge,He,Ot):h(q,Ge,He,Ot,me,ne+1);if(me>=0&&nn>0&&nn-1&&nn>0){let sr=f(ue,B);G=Bm(ue,He,Ot,0,He.length,0,pe-q,sr,sr)}else G=O(ue,He,Ot,pe-q,we-pe,B)}R.push(G),X.push(Qe)}function u(k,w,R,X){let W=[],ne=0,de=-1;for(;a.pos>w;){let{id:q,start:pe,end:ve,size:we}=a;if(we>4)a.next();else{if(de>-1&&pe=0;ve-=3)q[we++]=W[ve],q[we++]=W[ve+1]-pe,q[we++]=W[ve+2]-pe,q[we++]=we;R.push(new Ji(q,W[2]-pe,r)),X.push(pe-k)}}function f(k,w){return(R,X,W)=>{let ne=0,de=R.length-1,q,pe;if(de>=0&&(q=R[de])instanceof Ee){if(!de&&q.type==k&&q.length==W)return q;(pe=q.prop(xe.lookAhead))&&(ne=X[de]+q.length+pe)}return O(k,R,X,W,ne,w)}}function m(k,w,R,X,W,ne,de,q,pe){let ve=[],we=[];for(;k.length>X;)ve.push(k.pop()),we.push(w.pop()+R-W);k.push(O(r.types[de],ve,we,ne-W,q-ne,pe)),w.push(W-R)}function O(k,w,R,X,W,ne,de){if(ne){let q=[xe.contextHash,ne];de=de?[q].concat(de):[q]}if(W>25){let q=[xe.lookAhead,W];de=de?[q].concat(de):[q]}return new Ee(k,w,R,X,de)}function S(k,w){let R=a.fork(),X=0,W=0,ne=0,de=R.end-i,q={size:0,start:0,skip:0};e:for(let pe=R.pos-k;R.pos>pe;){let ve=R.size;if(R.id==w&&ve>=0){q.size=X,q.start=W,q.skip=ne,ne+=4,X+=4,R.next();continue}let we=R.pos-ve;if(ve<0||we=o?4:0,ue=R.start;for(R.next();R.pos>we;){if(R.size<0)if(R.size==-3||R.size==-4)B+=4;else break e;else R.id>=o&&(B+=4);R.next()}W=ue,X+=ve,ne+=B}return(w<0||X==k)&&(q.size=X,q.start=W,q.skip=ne),q.size>4?q:void 0}function x(k,w,R){let{id:X,start:W,end:ne,size:de}=a;if(a.next(),de>=0&&X4){let pe=a.pos-(de-4);for(;a.pos>pe;)R=x(k,w,R)}w[--R]=q,w[--R]=ne-k,w[--R]=W-k,w[--R]=X}else de==-3?c=X:de==-4&&(d=X);return R}let D=[],M=[];for(;a.pos>0;)h(n.start||0,n.bufferStart||0,D,M,-1,0);let Z=(e=n.length)!==null&&e!==void 0?e:D.length?M[0]+D[0].length:0;return new Ee(l[n.topID],D.reverse(),M.reverse(),Z)}var pw=new WeakMap;function Wd(n,e){if(!n.isAnonymous||e instanceof Ji||e.type!=n)return 1;let t=pw.get(e);if(t==null){t=1;for(let r of e.children){if(r.type!=n||!(r instanceof Ee)){t=1;break}t+=Wd(n,r)}pw.set(e,t)}return t}function Bm(n,e,t,r,i,s,o,a,l){let c=0;for(let m=r;m=d)break;w+=R}if(M==Z+1){if(w>d){let R=m[Z];f(R.children,R.positions,0,R.children.length,O[Z]+D);continue}h.push(m[Z])}else{let R=O[M-1]+m[M-1].length-k;h.push(Bm(n,m,O,Z,M,k,R,null,l))}u.push(k+D-s)}}return f(e,t,r,i,0),(a||l)(h,u,o)}var jo=class{constructor(){this.map=new WeakMap}setBuffer(e,t,r){let i=this.map.get(e);i||this.map.set(e,i=new Map),i.set(t,r)}getBuffer(e,t){let r=this.map.get(e);return r&&r.get(t)}set(e,t){e instanceof Fs?this.setBuffer(e.context.buffer,e.index,t):e instanceof _n&&this.map.set(e.tree,t)}get(e){return e instanceof Fs?this.getBuffer(e.context.buffer,e.index):e instanceof _n?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},Qi=class n{constructor(e,t,r,i,s=!1,o=!1){this.from=e,this.to=t,this.tree=r,this.offset=i,this.open=(s?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],r=!1){let i=[new n(0,e.length,e,0,!1,r)];for(let s of t)s.to>e.length&&i.push(s);return i}static applyChanges(e,t,r=128){if(!t.length)return e;let i=[],s=1,o=e.length?e[0]:null;for(let a=0,l=0,c=0;;a++){let d=a=r)for(;o&&o.from=u.from||h<=u.to||c){let f=Math.max(u.from,l)-c,m=Math.min(u.to,h)-c;u=f>=m?null:new n(f,m,u.tree,u.offset+c,a>0,!!d)}if(u&&i.push(u),o.to>h)break;o=snew Cn(i.from,i.to)):[new Cn(0,0)]:[new Cn(0,e.length)],this.createParse(e,t||[],r)}parse(e,t,r){let i=this.startParse(e,t,r);for(;;){let s=i.advance();if(s)return s}}},Zm=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function Fd(n){return(e,t,r,i)=>new zm(e,n,t,r,i)}var Bd=class{constructor(e,t,r,i,s,o){this.parser=e,this.parse=t,this.overlay=r,this.bracketed=i,this.target=s,this.from=o}};function mw(n){if(!n.length||n.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(n))}var Im=class{constructor(e,t,r,i,s,o,a,l){this.parser=e,this.predicate=t,this.mounts=r,this.index=i,this.start=s,this.bracketed=o,this.target=a,this.prev=l,this.depth=0,this.ranges=[]}},Xm=new xe({perNode:!0}),zm=class{constructor(e,t,r,i,s){this.nest=t,this.input=r,this.fragments=i,this.ranges=s,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let r=this.baseParse.advance();if(!r)return null;if(this.baseParse=null,this.baseTree=r,this.startInner(),this.stoppedAt!=null)for(let i of this.inner)i.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let r=this.baseTree;return this.stoppedAt!=null&&(r=new Ee(r.type,r.children,r.positions,r.length,r.propValues.concat([[Xm,this.stoppedAt]]))),r}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let r=Object.assign(Object.create(null),e.target.props);r[xe.mounted.id]=new Ki(t,e.overlay,e.parser,e.bracketed),e.target.props=r}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t=this.stoppedAt)a=!1;else if(e.hasNode(i)){if(t){let c=t.mounts.find(d=>d.frag.from<=i.from&&d.frag.to>=i.to&&d.mount.overlay);if(c)for(let d of c.mount.overlay){let h=d.from+c.pos,u=d.to+c.pos;h>=i.from&&u<=i.to&&!t.ranges.some(f=>f.fromh)&&t.ranges.push({from:h,to:u})}}a=!1}else if(r&&(o=PE(r.ranges,i.from,i.to)))a=o!=2;else if(!i.type.isAnonymous&&(s=this.nest(i,this.input))&&(i.fromnew Cn(h.from-i.from,h.to-i.from)):null,!!s.bracketed,i.tree,d.length?d[0].from:i.from)),s.overlay?d.length&&(r={ranges:d,depth:0,prev:r}):a=!1}}else if(t&&(l=t.predicate(i))&&(l===!0&&(l=new Cn(i.from,i.to)),l.from=0&&t.ranges[c].to==l.from?t.ranges[c]={from:t.ranges[c].from,to:l.to}:t.ranges.push(l)}if(a&&i.firstChild())t&&t.depth++,r&&r.depth++;else for(;!i.nextSibling();){if(!i.parent())break e;if(t&&!--t.depth){let c=Ow(this.ranges,t.ranges);c.length&&(mw(c),this.inner.splice(t.index,0,new Bd(t.parser,t.parser.startParse(this.input,bw(t.mounts,c),c),t.ranges.map(d=>new Cn(d.from-t.start,d.to-t.start)),t.bracketed,t.target,c[0].from))),t=t.prev}r&&!--r.depth&&(r=r.prev)}}}};function PE(n,e,t){for(let r of n){if(r.from>=t)break;if(r.to>e)return r.from<=e&&r.to>=t?2:1}return 0}function gw(n,e,t,r,i,s){if(e=e&&t.enter(r,1,We.IgnoreOverlays|We.ExcludeBuffers)))if(t.to<=e)t.next(!1)||(this.done=!0);else break}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof Ee)t=t.children[0];else break}return!1}},Wm=class{constructor(e){var t;if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let r=this.curFrag=e[0];this.curTo=(t=r.tree.prop(Xm))!==null&&t!==void 0?t:r.to,this.inner=new Vd(r.tree,-r.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(Xm))!==null&&e!==void 0?e:t.to,this.inner=new Vd(t.tree,-t.offset)}}findMounts(e,t){var r;let i=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(r=s.tree)===null||r===void 0?void 0:r.prop(xe.mounted);if(o&&o.parser==t)for(let a=this.fragI;a=s.to)break;l.tree==this.curFrag.tree&&i.push({frag:l,pos:s.from-l.offset,mount:o})}}}return i}};function Ow(n,e){let t=null,r=e;for(let i=1,s=0;i=a)break;l.to<=o||(t||(r=t=e.slice()),l.froma&&t.splice(s+1,0,new Cn(a,l.to))):l.to>a?t[s--]=new Cn(a,l.to):t.splice(s--,1))}}return r}function $E(n,e,t,r){let i=0,s=0,o=!1,a=!1,l=-1e9,c=[];for(;;){let d=i==n.length?1e9:o?n[i].to:n[i].from,h=s==e.length?1e9:a?e[s].to:e[s].from;if(o!=a){let u=Math.max(l,t),f=Math.min(d,h,r);unew Cn(u.from+r,u.to+r)),h=$E(e,d,l,c);for(let u=0,f=l;;u++){let m=u==h.length,O=m?c:h[u].from;if(O>f&&t.push(new Qi(f,O,i.tree,-o,s.from>=f||s.openStart,s.to<=O||s.openEnd)),m)break;f=h[u].to}}else t.push(new Qi(l,c,i.tree,-o,s.from>=o||s.openStart,s.to<=a||s.openEnd))}return t}var QE=0,qn=class n{constructor(e,t,r,i){this.name=e,this.set=t,this.base=r,this.modified=i,this.id=QE++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let r=typeof e=="string"?e:"?";if(e instanceof n&&(t=e),t!=null&&t.base)throw new Error("Can not derive from a modified tag");let i=new n(r,[],null,[]);if(i.set.push(i),t)for(let s of t.set)i.set.push(s);return i}static defineModifier(e){let t=new qd(e);return r=>r.modified.indexOf(t)>-1?r:qd.get(r.base||r,r.modified.concat(t).sort((i,s)=>i.id-s.id))}},TE=0,qd=class n{constructor(e){this.name=e,this.instances=[],this.id=TE++}static get(e,t){if(!t.length)return e;let r=t[0].instances.find(a=>a.base==e&&AE(t,a.modified));if(r)return r;let i=[],s=new qn(e.name,i,e,t);for(let a of t)a.instances.push(s);let o=CE(t);for(let a of e.set)if(!a.modified.length)for(let l of o)i.push(n.get(a,l));return s}};function AE(n,e){return n.length==e.length&&n.every((t,r)=>t==e[r])}function CE(n){let e=[[]];for(let t=0;tr.length-t.length)}function Kt(n){let e=Object.create(null);for(let t in n){let r=n[t];Array.isArray(r)||(r=[r]);for(let i of t.split(" "))if(i){let s=[],o=2,a=i;for(let h=0;;){if(a=="..."&&h>0&&h+3==i.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!u)throw new RangeError("Invalid path: "+i);if(s.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),h+=u[0].length,h==i.length)break;let f=i[h++];if(h==i.length&&f=="!"){o=0;break}if(f!="/")throw new RangeError("Invalid path: "+i);a=i.slice(h)}let l=s.length-1,c=s[l];if(!c)throw new RangeError("Invalid path: "+i);let d=new js(r,o,l>0?s.slice(0,l):null);e[c]=d.sort(e[c])}}return xw.add(e)}var xw=new xe({combine(n,e){let t,r,i;for(;n||e;){if(!n||e&&n.depth>=e.depth?(i=e,e=e.next):(i=n,n=n.next),t&&t.mode==i.mode&&!i.context&&!t.context)continue;let s=new js(i.tags,i.mode,i.context);t?t.next=s:r=s,t=s}return r}}),js=class{constructor(e,t,r,i){this.tags=e,this.mode=t,this.context=r,this.next=i}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=i;for(let a of s)for(let l of a.set){let c=t[l.id];if(c){o=o?o+" "+c:c;break}}return o},scope:r}}function _E(n,e){let t=null;for(let r of n){let i=r.style(e);i&&(t=t?t+" "+i:i)}return t}function Pw(n,e,t,r=0,i=n.length){let s=new Fm(r,Array.isArray(e)?e:[e],t);s.highlightRange(n.cursor(),r,i,"",s.highlighters),s.flush(i)}var Fm=class{constructor(e,t,r){this.at=e,this.highlighters=t,this.span=r,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,r,i,s){let{type:o,from:a,to:l}=e;if(a>=r||l<=t)return;o.isTop&&(s=this.highlighters.filter(f=>!f.scope||f.scope(o)));let c=i,d=Um(e)||js.empty,h=_E(s,d.tags);if(h&&(c&&(c+=" "),c+=h,d.mode==1&&(i+=(i?" ":"")+h)),this.startSpan(Math.max(t,a),c),d.opaque)return;let u=e.tree&&e.tree.prop(xe.mounted);if(u&&u.overlay){let f=e.node.enter(u.overlay[0].from+a,1),m=this.highlighters.filter(S=>!S.scope||S.scope(u.tree.type)),O=e.firstChild();for(let S=0,x=a;;S++){let D=S=M||!e.nextSibling())););if(!D||M>r)break;x=D.to+a,x>t&&(this.highlightRange(f.cursor(),Math.max(t,D.from+a),Math.min(r,x),"",m),this.startSpan(Math.min(r,x),c))}O&&e.parent()}else if(e.firstChild()){u&&(i="");do if(!(e.to<=t)){if(e.from>=r)break;this.highlightRange(e,t,r,i,s),this.startSpan(Math.min(r,e.to),c)}while(e.nextSibling());e.parent()}}};function Um(n){let e=n.type.prop(xw);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}var se=qn.define,Yd=se(),es=se(),vw=se(es),ww=se(es),ts=se(),jd=se(ts),Vm=se(ts),ni=se(),Ys=se(ni),ei=se(),ti=se(),Ym=se(),pl=se(Ym),Ud=se(),g={comment:Yd,lineComment:se(Yd),blockComment:se(Yd),docComment:se(Yd),name:es,variableName:se(es),typeName:vw,tagName:se(vw),propertyName:ww,attributeName:se(ww),className:se(es),labelName:se(es),namespace:se(es),macroName:se(es),literal:ts,string:jd,docString:se(jd),character:se(jd),attributeValue:se(jd),number:Vm,integer:se(Vm),float:se(Vm),bool:se(ts),regexp:se(ts),escape:se(ts),color:se(ts),url:se(ts),keyword:ei,self:se(ei),null:se(ei),atom:se(ei),unit:se(ei),modifier:se(ei),operatorKeyword:se(ei),controlKeyword:se(ei),definitionKeyword:se(ei),moduleKeyword:se(ei),operator:ti,derefOperator:se(ti),arithmeticOperator:se(ti),logicOperator:se(ti),bitwiseOperator:se(ti),compareOperator:se(ti),updateOperator:se(ti),definitionOperator:se(ti),typeOperator:se(ti),controlOperator:se(ti),punctuation:Ym,separator:se(Ym),bracket:pl,angleBracket:se(pl),squareBracket:se(pl),paren:se(pl),brace:se(pl),content:ni,heading:Ys,heading1:se(Ys),heading2:se(Ys),heading3:se(Ys),heading4:se(Ys),heading5:se(Ys),heading6:se(Ys),contentSeparator:se(ni),list:se(ni),quote:se(ni),emphasis:se(ni),strong:se(ni),link:se(ni),monospace:se(ni),strikethrough:se(ni),inserted:se(),deleted:se(),changed:se(),invalid:se(),meta:Ud,documentMeta:se(Ud),annotation:se(Ud),processingInstruction:se(Ud),definition:qn.defineModifier("definition"),constant:qn.defineModifier("constant"),function:qn.defineModifier("function"),standard:qn.defineModifier("standard"),local:qn.defineModifier("local"),special:qn.defineModifier("special")};for(let n in g){let e=g[n];e instanceof qn&&(e.name=n)}var PN=jm([{tag:g.link,class:"tok-link"},{tag:g.heading,class:"tok-heading"},{tag:g.emphasis,class:"tok-emphasis"},{tag:g.strong,class:"tok-strong"},{tag:g.keyword,class:"tok-keyword"},{tag:g.atom,class:"tok-atom"},{tag:g.bool,class:"tok-bool"},{tag:g.url,class:"tok-url"},{tag:g.labelName,class:"tok-labelName"},{tag:g.inserted,class:"tok-inserted"},{tag:g.deleted,class:"tok-deleted"},{tag:g.literal,class:"tok-literal"},{tag:g.string,class:"tok-string"},{tag:g.number,class:"tok-number"},{tag:[g.regexp,g.escape,g.special(g.string)],class:"tok-string2"},{tag:g.variableName,class:"tok-variableName"},{tag:g.local(g.variableName),class:"tok-variableName tok-local"},{tag:g.definition(g.variableName),class:"tok-variableName tok-definition"},{tag:g.special(g.variableName),class:"tok-variableName2"},{tag:g.definition(g.propertyName),class:"tok-propertyName tok-definition"},{tag:g.typeName,class:"tok-typeName"},{tag:g.namespace,class:"tok-namespace"},{tag:g.className,class:"tok-className"},{tag:g.macroName,class:"tok-macroName"},{tag:g.propertyName,class:"tok-propertyName"},{tag:g.operator,class:"tok-operator"},{tag:g.comment,class:"tok-comment"},{tag:g.meta,class:"tok-meta"},{tag:g.invalid,class:"tok-invalid"},{tag:g.punctuation,class:"tok-punctuation"}]);var qm,Ai=new xe;function Uo(n){return oe.define({combine:n?e=>e.concat(n):void 0})}var Jd=new xe,cn=class{constructor(e,t,r=[],i=""){this.data=e,this.name=i,Me.prototype.hasOwnProperty("tree")||Object.defineProperty(Me.prototype,"tree",{get(){return ze(this)}}),this.parser=t,this.extension=[ri.of(this),Me.languageData.of((s,o,a)=>{let l=kw(s,o,a),c=l.type.prop(Ai);if(!c)return[];let d=s.facet(c),h=l.type.prop(Jd);if(h){let u=l.resolve(o-l.from,a);for(let f of h)if(f.test(u,s)){let m=s.facet(f.facet);return f.type=="replace"?m:m.concat(d)}}return d})].concat(r)}isActiveAt(e,t,r=-1){return kw(e,t,r).type.prop(Ai)==this.data}findRegions(e){let t=e.facet(ri);if((t==null?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let r=[],i=(s,o)=>{if(s.prop(Ai)==this.data){r.push({from:o,to:o+s.length});return}let a=s.prop(xe.mounted);if(a){if(a.tree.prop(Ai)==this.data){if(a.overlay)for(let l of a.overlay)r.push({from:l.from+o,to:l.to+o});else r.push({from:o,to:o+s.length});return}else if(a.overlay){let l=r.length;if(i(a.tree,a.overlay[0].from+o),r.length>l)return}}for(let l=0;lr.isTop?t:void 0)]}),e.name)}configure(e,t){return new n(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function ze(n){let e=n.field(cn.state,!1);return e?e.tree:Ee.empty}var Jm=class{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-r,t-r)}},ml=null,Us=class n{constructor(e,t,r=[],i,s,o,a,l){this.parser=e,this.state=t,this.fragments=r,this.tree=i,this.treeLen=s,this.viewport=o,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,r){return new n(e,t,[],Ee.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Jm(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=Ee.empty&&this.isDone(t!=null?t:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let i=Date.now()+e;e=()=>Date.now()>i}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(Qi.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=ml;ml=this;try{return e()}finally{ml=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=$w(e,t.from,t.to);return e}changes(e,t){let{fragments:r,tree:i,treeLen:s,viewport:o,skipped:a}=this;if(this.takeTree(),!e.empty){let l=[];if(e.iterChangedRanges((c,d,h,u)=>l.push({fromA:c,toA:d,fromB:h,toB:u})),r=Qi.applyChanges(r,l),i=Ee.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){a=[];for(let c of this.skipped){let d=e.mapPos(c.from,1),h=e.mapPos(c.to,-1);de.from&&(this.fragments=$w(this.fragments,i,s),this.skipped.splice(r--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ti{createParse(t,r,i){let s=i[0].from,o=i[i.length-1].to;return{parsedPos:s,advance(){let l=ml;if(l){for(let c of i)l.tempSkipped.push(c);e&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,e]):e)}return this.parsedPos=o,new Ee(St.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return ml}};function $w(n,e,t){return Qi.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}var Ol=class n{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,r)||t.takeTree(),new n(t)}static init(e){let t=Math.min(3e3,e.doc.length),r=Us.create(e.facet(ri).parser,e,{from:0,to:t});return r.work(20,t)||r.takeTree(),new n(r)}};cn.state=Xe.define({create:Ol.init,update(n,e){for(let t of e.effects)if(t.is(cn.setState))return t.value;return e.startState.facet(ri)!=e.state.facet(ri)?Ol.init(e.state):n.apply(e)}});var Lw=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback!="undefined"&&(Lw=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Gm=typeof navigator!="undefined"&&(!((qm=navigator.scheduling)===null||qm===void 0)&&qm.isInputPending)?()=>navigator.scheduling.isInputPending():null,EE=it.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(cn.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(cn.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Lw(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndi+1e3,l=s.context.work(()=>Gm&&Gm()||Date.now()>o,i+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:cn.setState.of(new Ol(s.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>jn(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),ri=oe.define({combine(n){return n.length?n[0]:null},enables:n=>[cn.state,EE,F.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]}),Ye=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},bl=class n{constructor(e,t,r,i,s,o=void 0){this.name=e,this.alias=t,this.extensions=r,this.filename=i,this.loadFunc=s,this.support=o,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:r}=e;if(!t){if(!r)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(r)}return new n(e.name,(e.alias||[]).concat(e.name).map(i=>i.toLowerCase()),e.extensions||[],e.filename,t,r)}static matchFilename(e,t){for(let i of e)if(i.filename&&i.filename.test(t))return i;let r=/\.([^.]+)$/.exec(t);if(r){for(let i of e)if(i.extensions.indexOf(r[1])>-1)return i}return null}static matchLanguageName(e,t,r=!0){t=t.toLowerCase();for(let i of e)if(i.alias.some(s=>s==t))return i;if(r)for(let i of e)for(let s of i.alias){let o=t.indexOf(s);if(o>-1&&(s.length>2||!/\w/.test(t[o-1])&&!/\w/.test(t[o+s.length])))return i}return null}},lg=oe.define(),yr=oe.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function ii(n){let e=n.facet(yr);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function qo(n,e){let t="",r=n.tabSize,i=n.facet(yr)[0];if(i==" "){for(;e>=r;)t+=" ",e-=r;i=" "}for(let s=0;s=e?RE(n,t,e):null}var qs=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=ii(e)}lineAt(e,t=1){let r=this.state.doc.lineAt(e),{simulateBreak:i,simulateDoubleBreak:s}=this.options;return i!=null&&i>=r.from&&i<=r.to?s&&i==e?{text:"",from:e}:(t<0?i-1&&(s+=o-this.countColumn(r,r.search(/\S|$/))),s}countColumn(e,t=e.length){return Gt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:r,from:i}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let o=s(i);if(o>-1)return o}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},En=new xe;function RE(n,e,t){let r=e.resolveStack(t),i=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(i!=r.node){let s=[];for(let o=i;o&&!(o.fromr.node.to||o.from==r.node.from&&o.type==r.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)r={node:s[o],next:r}}return Dw(r,n,t)}function Dw(n,e,t){for(let r=n;r;r=r.next){let i=LE(r.node);if(i)return i(eg.create(e,t,r))}return 0}function ME(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function LE(n){let e=n.type.prop(En);if(e)return e;let t=n.firstChild,r;if(t&&(r=t.type.prop(xe.closedBy))){let i=n.lastChild,s=i&&r.indexOf(i.name)>-1;return o=>Zw(o,!0,1,void 0,s&&!ME(o)?i.from:void 0)}return n.parent==null?DE:null}function DE(){return 0}var eg=class n extends qs{constructor(e,t,r){super(e.state,e.options),this.base=e,this.pos=t,this.context=r}get node(){return this.context.node}static create(e,t,r){return new n(e,t,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(t.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(ZE(r,e))break;t=this.state.doc.lineAt(r.from)}return this.lineIndent(t.from)}continue(){return Dw(this.context.next,this.base,this.pos)}};function ZE(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function IE(n){let e=n.node,t=e.childAfter(e.from),r=e.lastChild;if(!t)return null;let i=n.options.simulateBreak,s=n.state.doc.lineAt(t.from),o=i==null||i<=s.from?s.to:Math.min(s.to,i);for(let a=t.to;;){let l=e.childAfter(a);if(!l||l==r)return null;if(!l.type.isSkipped){if(l.from>=o)return null;let c=/^ */.exec(s.text.slice(t.to-s.from))[0].length;return{from:t.from,to:t.to+c}}a=l.to}}function Go({closing:n,align:e=!0,units:t=1}){return r=>Zw(r,e,t,n)}function Zw(n,e,t,r,i){let s=n.textAfter,o=s.match(/^\s*/)[0].length,a=r&&s.slice(o,o+r.length)==r||i==n.pos+o,l=e?IE(n):null;return l?a?n.column(l.from):n.column(l.to):n.baseIndent+(a?0:n.unit*t)}var Iw=n=>n.baseIndent;function Gn({except:n,units:e=1}={}){return t=>{let r=n&&n.test(t.textAfter);return t.baseIndent+(r?0:e*t.unit)}}var XE=200;function Xw(){return Me.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:r}=n.newSelection.main,i=t.lineAt(r);if(r>i.from+XE)return n;let s=t.sliceString(i.from,r);if(!e.some(c=>c.test(s)))return n;let{state:o}=n,a=-1,l=[];for(let{head:c}of o.selection.ranges){let d=o.doc.lineAt(c);if(d.from==a)continue;a=d.from;let h=eh(o,d.from);if(h==null)continue;let u=/^\s*/.exec(d.text)[0],f=qo(o,h);u!=f&&l.push({from:d.from,to:d.from+u.length,insert:f})}return l.length?[n,{changes:l,sequential:!0}]:n})}var cg=oe.define(),dn=new xe;function Ft(n){let e=n.firstChild,t=n.lastChild;return e&&e.tot)continue;if(s&&a.from=e&&c.to>t&&(s=c)}}return s}function WE(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}function Qw(n,e,t){for(let r of n.facet(cg)){let i=r(n,e,t);if(i)return i}return zE(n,e,t)}function zw(n,e){let t=e.mapPos(n.from,1),r=e.mapPos(n.to,-1);return t>=r?void 0:{from:t,to:r}}var Ww=ye.define({map:zw}),dg=ye.define({map:zw});var Gd=Xe.define({create(){return J.none},update(n,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((r,i)=>n=Tw(n,r,i)),n=n.map(e.changes);let t=[];for(let r of e.effects)r.is(Ww)&&!NE(n,r.value.from,r.value.to)?t.push(r.value):r.is(dg)&&(n=n.update({filter:(i,s)=>r.value.from!=i||r.value.to!=s,filterFrom:r.value.from,filterTo:r.value.to}));if(t.length){let{preparePlaceholder:r}=e.state.facet(hg),i=t.map(s=>(r?J.replace({widget:new ng(r(e.state,s))}):Aw).range(s.from,s.to));n=n.update({add:i})}return e.selection&&(n=Tw(n,e.selection.main.head)),n},provide:n=>F.decorations.from(n),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(r,i)=>{t.push(r,i)}),t},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t{ie&&(r=!0)}),r?n.update({filterFrom:e,filterTo:t,filter:(i,s)=>i>=t||s<=e}):n}function tg(n,e,t){var r;let i=null;return(r=n.field(Gd,!1))===null||r===void 0||r.between(e,t,(s,o)=>{(!i||i.from>s)&&(i={from:s,to:o})}),i}function NE(n,e,t){let r=!1;return n.between(e,e,(i,s)=>{i==e&&s==t&&(r=!0)}),r}var BE={placeholderDOM:null,preparePlaceholder:null,placeholderText:"\u2026"},hg=oe.define({combine(n){return Yn(n,BE)}});function VE(n){let e=[Gd,YE];return n&&e.push(hg.of(n)),e}function Nw(n,e){let{state:t}=n,r=t.facet(hg),i=o=>{let a=n.lineBlockAt(n.posAtDOM(o.target)),l=tg(n.state,a.from,a.to);l&&n.dispatch({effects:dg.of(l)}),o.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(n,i,e);let s=document.createElement("span");return s.textContent=r.placeholderText,s.setAttribute("aria-label",t.phrase("folded code")),s.title=t.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}var Aw=J.replace({widget:new class extends Ct{toDOM(n){return Nw(n,null)}}}),ng=class extends Ct{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Nw(e,this.value)}},FE={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1},gl=class extends $t{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}};function Bw(n={}){let e=Ue(Ue({},FE),n),t=new gl(e,!0),r=new gl(e,!1),i=it.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(ri)!=o.state.facet(ri)||o.startState.field(Gd,!1)!=o.state.field(Gd,!1)||ze(o.startState)!=ze(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let a=new Zr;for(let l of o.viewportLineBlocks){let c=tg(o.state,l.from,l.to)?r:Qw(o.state,l.from,l.to)?t:null;c&&a.add(l.from,l.from,c)}return a.finish()}}),{domEventHandlers:s}=e;return[i,Hi({class:"cm-foldGutter",markers(o){var a;return((a=o.plugin(i))===null||a===void 0?void 0:a.markers)||$e.empty},initialSpacer(){return new gl(e,!1)},domEventHandlers:zi(Ue({},s),{click:(o,a,l)=>{if(s.click&&s.click(o,a,l))return!0;let c=tg(o.state,a.from,a.to);if(c)return o.dispatch({effects:dg.of(c)}),!0;let d=Qw(o.state,a.from,a.to);return d?(o.dispatch({effects:Ww.of(d)}),!0):!1}})}),VE()]}var YE=F.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}}),ns=class n{constructor(e,t){this.specs=e;let r;function i(a){let l=mr.newName();return(r||(r=Object.create(null)))["."+l]=a,l}let s=typeof t.all=="string"?t.all:t.all?i(t.all):void 0,o=t.scope;this.scope=o instanceof cn?a=>a.prop(Ai)==o.data:o?a=>a==o:void 0,this.style=jm(e.map(a=>({tag:a.tag,class:a.class||i(Object.assign({},a,{tag:null}))})),{all:s}).style,this.module=r?new mr(r):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},rg=oe.define(),Vw=oe.define({combine(n){return n.length?[n[0]]:null}});function Hm(n){let e=n.facet(rg);return e.length?e:n.facet(Vw)}function th(n,e){let t=[jE],r;return n instanceof ns&&(n.module&&t.push(F.styleModule.of(n.module)),r=n.themeType),e!=null&&e.fallback?t.push(Vw.of(n)):r?t.push(rg.computeN([F.darkTheme],i=>i.facet(F.darkTheme)==(r=="dark")?[n]:[])):t.push(rg.of(n)),t}var ig=class{constructor(e){this.markCache=Object.create(null),this.tree=ze(e.state),this.decorations=this.buildDeco(e,Hm(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=ze(e.state),r=Hm(e.state),i=r!=Hm(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||i)&&(this.tree=t,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return J.none;let r=new Zr;for(let{from:i,to:s}of e.visibleRanges)Pw(this.tree,t,(o,a,l)=>{r.add(o,a,this.markCache[l]||(this.markCache[l]=J.mark({class:l})))},i,s);return r.finish()}},jE=pr.high(it.fromClass(ig,{decorations:n=>n.decorations})),EN=ns.define([{tag:g.meta,color:"#404740"},{tag:g.link,textDecoration:"underline"},{tag:g.heading,textDecoration:"underline",fontWeight:"bold"},{tag:g.emphasis,fontStyle:"italic"},{tag:g.strong,fontWeight:"bold"},{tag:g.strikethrough,textDecoration:"line-through"},{tag:g.keyword,color:"#708"},{tag:[g.atom,g.bool,g.url,g.contentSeparator,g.labelName],color:"#219"},{tag:[g.literal,g.inserted],color:"#164"},{tag:[g.string,g.deleted],color:"#a11"},{tag:[g.regexp,g.escape,g.special(g.string)],color:"#e40"},{tag:g.definition(g.variableName),color:"#00f"},{tag:g.local(g.variableName),color:"#30a"},{tag:[g.typeName,g.namespace],color:"#085"},{tag:g.className,color:"#167"},{tag:[g.special(g.variableName),g.macroName],color:"#256"},{tag:g.definition(g.propertyName),color:"#00c"},{tag:g.comment,color:"#940"},{tag:g.invalid,color:"#f00"}]),UE=F.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Fw=1e4,Yw="()[]{}",jw=oe.define({combine(n){return Yn(n,{afterCursor:!0,brackets:Yw,maxScanDistance:Fw,renderMatch:HE})}}),qE=J.mark({class:"cm-matchingBracket"}),GE=J.mark({class:"cm-nonmatchingBracket"});function HE(n){let e=[],t=n.matched?qE:GE;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}function Cw(n){let e=[],t=n.facet(jw);for(let r of n.selection.ranges){if(!r.empty)continue;let i=Nr(n,r.head,-1,t)||r.head>0&&Nr(n,r.head-1,1,t)||t.afterCursor&&(Nr(n,r.head,1,t)||r.headn.decorations}),JE=[KE,UE];function Uw(n={}){return[jw.of(n),JE]}var ug=new xe;function sg(n,e,t){let r=n.prop(e<0?xe.openedBy:xe.closedBy);if(r)return r;if(n.name.length==1){let i=t.indexOf(n.name);if(i>-1&&i%2==(e<0?1:0))return[t[i+e]]}return null}function og(n){let e=n.type.prop(ug);return e?e(n.node):n}function Nr(n,e,t,r={}){let i=r.maxScanDistance||Fw,s=r.brackets||Yw,o=ze(n),a=o.resolveInner(e,t);for(let l=a;l;l=l.parent){let c=sg(l.type,t,s);if(c&&l.from0?e>=d.from&&ed.from&&e<=d.to))return eR(n,e,t,l,d,c,s)}}return tR(n,e,t,o,a.type,i,s)}function eR(n,e,t,r,i,s,o){let a=r.parent,l={from:i.from,to:i.to},c=0,d=a==null?void 0:a.cursor();if(d&&(t<0?d.childBefore(r.from):d.childAfter(r.to)))do if(t<0?d.to<=r.from:d.from>=r.to){if(c==0&&s.indexOf(d.type.name)>-1&&d.from0)return null;let c={from:t<0?e-1:e,to:t>0?e+1:e},d=n.doc.iterRange(e,t>0?n.doc.length:0),h=0;for(let u=0;!d.next().done&&u<=s;){let f=d.value;t<0&&(u+=f.length);let m=e+u*t;for(let O=t>0?0:f.length-1,S=t>0?f.length:-1;O!=S;O+=t){let x=o.indexOf(f[O]);if(!(x<0||r.resolveInner(m+O,1).type!=i))if(x%2==0==t>0)h++;else{if(h==1)return{start:c,end:{from:m+O,to:m+O+1},matched:x>>1==l>>1};h--}}t>0&&(u+=f.length)}return d.done?{start:c,matched:!1}:null}function _w(n,e,t,r=0,i=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let s=i;for(let o=r;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?o.toLowerCase():o,s=this.string.substr(this.pos,e.length);return i(s)==i(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let i=this.string.slice(this.pos).match(e);return i&&i.index>0?null:(i&&t!==!1&&(this.pos+=i[0].length),i)}}current(){return this.string.slice(this.start,this.pos)}};function nR(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||rR,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||pg,mergeTokens:n.mergeTokens!==!1}}function rR(n){if(typeof n!="object")return n;let e={};for(let t in n){let r=n[t];e[t]=r instanceof Array?r.slice():r}return e}var Ew=new WeakMap,zt=class n extends cn{constructor(e){let t=Uo(e.languageData),r=nR(e),i,s=new class extends Ti{createParse(o,a,l){return new ag(i,o,a,l)}};super(t,s,[],e.name),this.topNode=aR(t,this),i=this,this.streamParser=r,this.stateAfter=new xe({perNode:!0}),this.tokenTable=e.tokenTable?new Kd(r.tokenTable):oR}static define(e){return new n(e)}getIndent(e){let t,{overrideIndentation:r}=e.options;r&&(t=Ew.get(e.state),t!=null&&t1e4)return null;for(;s=r&&t+e.length<=i&&e.prop(n.stateAfter);if(s)return{state:n.streamParser.copyState(s),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let a=e.children[o],l=t+e.positions[o],c=a instanceof Ee&&l=e.length)return e;!i&&t==0&&e.type==n.topNode&&(i=!0);for(let s=e.children.length-1;s>=0;s--){let o=e.positions[s],a=e.children[s],l;if(ot&&fg(n,s.tree,0-s.offset,t,a),c;if(l&&l.pos<=r&&(c=qw(n,s.tree,t+s.offset,l.pos+s.offset,!1)))return{state:l.state,tree:c}}return{state:n.streamParser.startState(i?ii(i):4),tree:Ee.empty}}var ag=class{constructor(e,t,r,i){this.lang=e,this.input=t,this.fragments=r,this.ranges=i,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=i[i.length-1].to;let s=Us.get(),o=i[0].from,{state:a,tree:l}=iR(e,r,o,this.to,s==null?void 0:s.state);this.state=a,this.parsedPos=this.chunkStart=o+l.length;for(let c=0;cc.from<=s.viewport.from&&c.to>=s.viewport.from)&&(this.state=this.lang.streamParser.startState(ii(s.state)),s.skipUntilInView(this.parsedPos,s.viewport.from),this.parsedPos=s.viewport.from),this.moveRangeIndex()}advance(){let e=Us.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(t,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` `&&(t="");else{let r=t.indexOf(` -`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let i=this.rangeIndex;;){let s=this.ranges[i].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),i++,i==this.ranges.length))break;let o=this.ranges[i].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let i=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?i>s:i>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-i}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){i=this.skipGapsTo(t,i,1),t+=i;let a=this.chunk.length;i=this.skipGapsTo(r,i,-1),r+=i,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),i}parseLine(e){let{line:t,end:r}=this.nextLine(),i=0,{streamParser:s}=this.lang,o=new Hd(t,e?e.state.tabSize:4,e?ii(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=Uw(s.token,o,this.state);if(a&&(i=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,i)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return i}throw new Error("Stream parser failed to advance stream.")}var pg=Object.create(null),yl=[St.none],rR=new $i(yl),_w=[],Ew=Object.create(null),qw=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])qw[n]=Gw(pg,e);var Kd=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),qw)}resolve(e){return e?this.table[e]||(this.table[e]=Gw(this.extra,e)):0}},iR=new Kd(pg);function Km(n,e){_w.indexOf(n)>-1||(_w.push(n),console.warn(e))}function Gw(n,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let d=n[c]||g[c];d?typeof d=="function"?l.length?l=l.map(d):Km(c,`Modifier ${c} used at start of tag`):l.length?Km(c,`Tag ${c} used as modifier`):l=Array.isArray(d)?d:[d]:Km(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),i=r+" "+t.map(a=>a.id),s=Ew[i];if(s)return s.id;let o=Ew[i]=St.define({id:yl.length,name:r,props:[Kt({[r]:t})]});return yl.push(o),o.id}function sR(n,e){let t=St.define({id:yl.length,name:"Document",props:[Ai.add(()=>n),En.add(()=>r=>e.getIndent(r))],top:!0});return yl.push(t),t}var CN={rtl:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:qe.RTL}),ltr:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:qe.LTR}),auto:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var nh=class{constructor(e,t,r,i){this.state=e,this.pos=t,this.explicit=r,this.view=i,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=ze(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),i=t.text.slice(r-t.from,this.pos-t.from),s=i.search(aR(e,!1));return s<0?null:{from:r+s,to:this.pos,text:i.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function Hw(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function oR(n){let e=Object.create(null),t=Object.create(null);for(let{label:i}of n){e[i[0]]=!0;for(let s=1;stypeof i=="string"?{label:i}:i),[t,r]=e.every(i=>/^\w+$/.test(i.label))?[/\w*$/,/\w+$/]:oR(e);return i=>{let s=i.matchBefore(r);return s||i.explicit?{from:s?s.from:i.pos,options:e,validFor:t}:null}}function nx(n,e){return t=>{for(let r=ze(t.state).resolveInner(t.pos,-1);r;r=r.parent){if(n.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(t)}}function aR(n,e){var t;let{source:r}=n,i=e&&r[0]!="^",s=r[r.length-1]!="$";return!i&&!s?n:new RegExp(`${i?"^":""}(?:${r})${s?"$":""}`,(t=n.flags)!==null&&t!==void 0?t:n.ignoreCase?"i":"")}var lR=Tn.define();var NN=typeof navigator=="object"&&/Win/.test(navigator.platform);var cR=F.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center",cursor:"pointer"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}}),gg=class{constructor(e,t,r,i){this.field=e,this.line=t,this.from=r,this.to=i}},Og=class n{constructor(e,t,r){this.field=e,this.from=t,this.to=r}map(e){let t=e.mapPos(this.from,-1,Xt.TrackDel),r=e.mapPos(this.to,1,Xt.TrackDel);return t==null||r==null?null:new n(this.field,t,r)}},bg=class n{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let r=[],i=[t],s=e.doc.lineAt(t),o=/^\s*/.exec(s.text)[0];for(let l of this.lines){if(r.length){let c=o,d=/^\t*/.exec(l)[0].length;for(let h=0;hnew Og(l.field,i[l.line]+l.from,i[l.line]+l.to));return{text:r,ranges:a}}static parse(e){let t=[],r=[],i=[],s;for(let o of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let a=s[1]?+s[1]:null,l=s[2]||s[3]||"",c=-1;a===0&&(a=1e9);let d=l.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h=c&&u.field++}for(let h of i)if(h.line==r.length&&h.from>s.index){let u=s[2]?3+(s[1]||"").length:2;h.from-=u,h.to-=u}i.push(new gg(c,r.length,s.index,s.index+d.length)),o=o.slice(0,s.index)+l+o.slice(s.index+s[0].length)}o=o.replace(/\\([{}])/g,(a,l,c)=>{for(let d of i)d.line==r.length&&d.from>c&&(d.from--,d.to--);return l}),r.push(o)}return new n(r,i)}},dR=J.widget({widget:new class extends Ct{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),hR=J.mark({class:"cm-snippetField"}),Ho=class n{constructor(e,t){this.ranges=e,this.active=t,this.deco=J.set(e.map(r=>(r.from==r.to?dR:hR).range(r.from,r.to)),!0)}map(e){let t=[];for(let r of this.ranges){let i=r.map(e);if(!i)return null;t.push(i)}return new n(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(r=>r.field==this.active&&r.from<=t.from&&r.to>=t.to))}},wl=ye.define({map(n,e){return n&&n.map(e)}}),uR=ye.define(),Sl=Xe.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(wl))return t.value;if(t.is(uR)&&n)return new Ho(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:n=>F.decorations.from(n,e=>e?e.deco:J.none)});function yg(n,e){return z.create(n.filter(t=>t.field==e).map(t=>z.range(t.from,t.to)))}function fR(n){let e=bg.parse(n);return(t,r,i,s)=>{let{text:o,ranges:a}=e.instantiate(t.state,i),{main:l}=t.state.selection,c={changes:{from:i,to:s==l.from?l.to:s,insert:De.of(o)},scrollIntoView:!0,annotations:r?[lR.of(r),ut.userEvent.of("input.complete")]:void 0};if(a.length&&(c.selection=yg(a,0)),a.some(d=>d.field>0)){let d=new Ho(a,0),h=c.effects=[wl.of(d)];t.state.field(Sl,!1)===void 0&&h.push(ye.appendConfig.of([Sl,bR,yR,cR]))}t.dispatch(t.state.update(c))}}function rx(n){return({state:e,dispatch:t})=>{let r=e.field(Sl,!1);if(!r||n<0&&r.active==0)return!1;let i=r.active+n,s=n>0&&!r.ranges.some(o=>o.field==i+n);return t(e.update({selection:yg(r.ranges,i),effects:wl.of(s?null:new Ho(r.ranges,i)),scrollIntoView:!0})),!0}}var pR=({state:n,dispatch:e})=>n.field(Sl,!1)?(e(n.update({effects:wl.of(null)})),!0):!1,mR=rx(1),gR=rx(-1);var OR=[{key:"Tab",run:mR,shift:gR},{key:"Escape",run:pR}],Kw=oe.define({combine(n){return n.length?n[0]:OR}}),bR=pr.highest(Sn.compute([Kw],n=>n.facet(Kw)));function vn(n,e){return zi(Ue({},e),{apply:fR(n)})}var yR=F.domEventHandlers({mousedown(n,e){let t=e.state.field(Sl,!1),r;if(!t||(r=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let i=t.ranges.find(s=>s.from<=r&&s.to>=r);return!i||i.field==t.active?!1:(e.dispatch({selection:yg(t.ranges,i.field),effects:wl.of(t.ranges.some(s=>s.field>i.field)?new Ho(t.ranges,i.field):null),scrollIntoView:!0}),!0)}});var vl={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Gs=ye.define({map(n,e){let t=e.mapPos(n,-1,Xt.TrackAfter);return t==null?void 0:t}}),Sg=new class extends fr{};Sg.startSide=1;Sg.endSide=-1;var ix=Xe.define({create(){return $e.empty},update(n,e){if(n=n.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);n=n.update({filter:r=>r>=t.from&&r<=t.to})}for(let t of e.effects)t.is(Gs)&&(n=n.update({add:[Sg.range(t.value,t.value+1)]}));return n}});function sx(){return[vR,ix]}var mg="()[]{}<>\xAB\xBB\xBB\xAB\uFF3B\uFF3D\uFF5B\uFF5D";function ox(n){for(let e=0;e{if((SR?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let i=n.state.selection.main;if(r.length>2||r.length==2&&Yi(Ir(r,0))==1||e!=i.from||t!=i.to)return!1;let s=wR(n.state,r);return s?(n.dispatch(s),!0):!1}),lx=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let r=ax(n,n.selection.main.head).brackets||vl.brackets,i=null,s=n.changeByRange(o=>{if(o.empty){let a=xR(n.doc,o.head);for(let l of r)if(l==a&&rh(n.doc,o.head)==ox(Ir(l,0)))return{changes:{from:o.head-l.length,to:o.head+l.length},range:z.cursor(o.head-l.length)}}return{range:i=o}});return i||e(n.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!i};function wR(n,e){let t=ax(n,n.selection.main.head),r=t.brackets||vl.brackets;for(let i of r){let s=ox(Ir(i,0));if(e==i)return s==i?$R(n,i,r.indexOf(i+i+i)>-1,t):PR(n,i,s,t.before||vl.before);if(e==s&&cx(n,n.selection.main.from))return kR(n,i,s)}return null}function cx(n,e){let t=!1;return n.field(ix).between(0,n.doc.length,r=>{r==e&&(t=!0)}),t}function rh(n,e){let t=n.sliceString(e,e+2);return t.slice(0,Yi(Ir(t,0)))}function xR(n,e){let t=n.sliceString(e-2,e);return Yi(Ir(t,0))==t.length?t:t.slice(1)}function PR(n,e,t,r){let i=null,s=n.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:Gs.of(o.to+e.length),range:z.range(o.anchor+e.length,o.head+e.length)};let a=rh(n.doc,o.head);return!a||/\s/.test(a)||r.indexOf(a)>-1?{changes:{insert:e+t,from:o.head},effects:Gs.of(o.head+e.length),range:z.cursor(o.head+e.length)}:{range:i=o}});return i?null:n.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function kR(n,e,t){let r=null,i=n.changeByRange(s=>s.empty&&rh(n.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:z.cursor(s.head+t.length)}:r={range:s});return r?null:n.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function $R(n,e,t,r){let i=r.stringPrefixes||vl.stringPrefixes,s=null,o=n.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:e,from:a.to}],effects:Gs.of(a.to+e.length),range:z.range(a.anchor+e.length,a.head+e.length)};let l=a.head,c=rh(n.doc,l),d;if(c==e){if(Jw(n,l))return{changes:{insert:e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)};if(cx(n,l)){let u=t&&n.sliceDoc(l,l+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:l,to:l+u.length,insert:u},range:z.cursor(l+u.length)}}}else{if(t&&n.sliceDoc(l-2*e.length,l)==e+e&&(d=ex(n,l-2*e.length,i))>-1&&Jw(n,d))return{changes:{insert:e+e+e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)};if(n.charCategorizer(l)(c)!=et.Word&&ex(n,l,i)>-1&&!QR(n,l,e,i))return{changes:{insert:e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)}}return{range:s=a}});return s?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function Jw(n,e){let t=ze(n).resolveInner(e+1);return t.parent&&t.from==e}function QR(n,e,t,r){let i=ze(n).resolveInner(e,-1),s=r.reduce((o,a)=>Math.max(o,a.length),0);for(let o=0;o<5;o++){let a=n.sliceDoc(i.from,Math.min(i.to,i.from+t.length+s)),l=a.indexOf(t);if(!l||l>-1&&r.indexOf(a.slice(0,l))>-1){let d=i.firstChild;for(;d&&d.from==i.from&&d.to-d.from>t.length+l;){if(n.sliceDoc(d.to-t.length,d.to)==t)return!1;d=d.firstChild}return!0}let c=i.to==e&&i.parent;if(!c)break;i=c}return!1}function ex(n,e,t){let r=n.charCategorizer(e);if(r(n.sliceDoc(e-1,e))!=et.Word)return e;for(let i of t){let s=e-i.length;if(n.sliceDoc(s,e)==i&&r(n.sliceDoc(s-1,s))!=et.Word)return s}return-1}var dx=ew((n,e,t)=>{let r=ze(n.state).resolveInner(e,t),i=Um(r),s="";if(i)for(let c of i.tags)s+=c.set.join(" < ")+` +`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let i=this.rangeIndex;;){let s=this.ranges[i].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),i++,i==this.ranges.length))break;let o=this.ranges[i].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let i=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?i>s:i>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-i}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){i=this.skipGapsTo(t,i,1),t+=i;let a=this.chunk.length;i=this.skipGapsTo(r,i,-1),r+=i,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),i}parseLine(e){let{line:t,end:r}=this.nextLine(),i=0,{streamParser:s}=this.lang,o=new Hd(t,e?e.state.tabSize:4,e?ii(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=Gw(s.token,o,this.state);if(a&&(i=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,i)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return i}throw new Error("Stream parser failed to advance stream.")}var pg=Object.create(null),yl=[St.none],sR=new $i(yl),Rw=[],Mw=Object.create(null),Hw=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Hw[n]=Kw(pg,e);var Kd=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Hw)}resolve(e){return e?this.table[e]||(this.table[e]=Kw(this.extra,e)):0}},oR=new Kd(pg);function Km(n,e){Rw.indexOf(n)>-1||(Rw.push(n),console.warn(e))}function Kw(n,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let d=n[c]||g[c];d?typeof d=="function"?l.length?l=l.map(d):Km(c,`Modifier ${c} used at start of tag`):l.length?Km(c,`Tag ${c} used as modifier`):l=Array.isArray(d)?d:[d]:Km(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),i=r+" "+t.map(a=>a.id),s=Mw[i];if(s)return s.id;let o=Mw[i]=St.define({id:yl.length,name:r,props:[Kt({[r]:t})]});return yl.push(o),o.id}function aR(n,e){let t=St.define({id:yl.length,name:"Document",props:[Ai.add(()=>n),En.add(()=>r=>e.getIndent(r))],top:!0});return yl.push(t),t}var RN={rtl:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:qe.RTL}),ltr:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:qe.LTR}),auto:J.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var nh=class{constructor(e,t,r,i){this.state=e,this.pos=t,this.explicit=r,this.view=i,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=ze(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),i=t.text.slice(r-t.from,this.pos-t.from),s=i.search(cR(e,!1));return s<0?null:{from:r+s,to:this.pos,text:i.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function Jw(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function lR(n){let e=Object.create(null),t=Object.create(null);for(let{label:i}of n){e[i[0]]=!0;for(let s=1;stypeof i=="string"?{label:i}:i),[t,r]=e.every(i=>/^\w+$/.test(i.label))?[/\w*$/,/\w+$/]:lR(e);return i=>{let s=i.matchBefore(r);return s||i.explicit?{from:s?s.from:i.pos,options:e,validFor:t}:null}}function ix(n,e){return t=>{for(let r=ze(t.state).resolveInner(t.pos,-1);r;r=r.parent){if(n.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(t)}}function cR(n,e){var t;let{source:r}=n,i=e&&r[0]!="^",s=r[r.length-1]!="$";return!i&&!s?n:new RegExp(`${i?"^":""}(?:${r})${s?"$":""}`,(t=n.flags)!==null&&t!==void 0?t:n.ignoreCase?"i":"")}var dR=Tn.define();var FN=typeof navigator=="object"&&/Win/.test(navigator.platform);var hR=F.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center",cursor:"pointer"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}}),gg=class{constructor(e,t,r,i){this.field=e,this.line=t,this.from=r,this.to=i}},Og=class n{constructor(e,t,r){this.field=e,this.from=t,this.to=r}map(e){let t=e.mapPos(this.from,-1,Xt.TrackDel),r=e.mapPos(this.to,1,Xt.TrackDel);return t==null||r==null?null:new n(this.field,t,r)}},bg=class n{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let r=[],i=[t],s=e.doc.lineAt(t),o=/^\s*/.exec(s.text)[0];for(let l of this.lines){if(r.length){let c=o,d=/^\t*/.exec(l)[0].length;for(let h=0;hnew Og(l.field,i[l.line]+l.from,i[l.line]+l.to));return{text:r,ranges:a}}static parse(e){let t=[],r=[],i=[],s;for(let o of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let a=s[1]?+s[1]:null,l=s[2]||s[3]||"",c=-1;a===0&&(a=1e9);let d=l.replace(/\\[{}]/g,h=>h[1]);for(let h=0;h=c&&u.field++}for(let h of i)if(h.line==r.length&&h.from>s.index){let u=s[2]?3+(s[1]||"").length:2;h.from-=u,h.to-=u}i.push(new gg(c,r.length,s.index,s.index+d.length)),o=o.slice(0,s.index)+l+o.slice(s.index+s[0].length)}o=o.replace(/\\([{}])/g,(a,l,c)=>{for(let d of i)d.line==r.length&&d.from>c&&(d.from--,d.to--);return l}),r.push(o)}return new n(r,i)}},uR=J.widget({widget:new class extends Ct{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),fR=J.mark({class:"cm-snippetField"}),Ho=class n{constructor(e,t){this.ranges=e,this.active=t,this.deco=J.set(e.map(r=>(r.from==r.to?uR:fR).range(r.from,r.to)),!0)}map(e){let t=[];for(let r of this.ranges){let i=r.map(e);if(!i)return null;t.push(i)}return new n(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(r=>r.field==this.active&&r.from<=t.from&&r.to>=t.to))}},wl=ye.define({map(n,e){return n&&n.map(e)}}),pR=ye.define(),Sl=Xe.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(wl))return t.value;if(t.is(pR)&&n)return new Ho(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:n=>F.decorations.from(n,e=>e?e.deco:J.none)});function yg(n,e){return z.create(n.filter(t=>t.field==e).map(t=>z.range(t.from,t.to)))}function mR(n){let e=bg.parse(n);return(t,r,i,s)=>{let{text:o,ranges:a}=e.instantiate(t.state,i),{main:l}=t.state.selection,c={changes:{from:i,to:s==l.from?l.to:s,insert:De.of(o)},scrollIntoView:!0,annotations:r?[dR.of(r),ut.userEvent.of("input.complete")]:void 0};if(a.length&&(c.selection=yg(a,0)),a.some(d=>d.field>0)){let d=new Ho(a,0),h=c.effects=[wl.of(d)];t.state.field(Sl,!1)===void 0&&h.push(ye.appendConfig.of([Sl,SR,vR,hR]))}t.dispatch(t.state.update(c))}}function sx(n){return({state:e,dispatch:t})=>{let r=e.field(Sl,!1);if(!r||n<0&&r.active==0)return!1;let i=r.active+n,s=n>0&&!r.ranges.some(o=>o.field==i+n);return t(e.update({selection:yg(r.ranges,i),effects:wl.of(s?null:new Ho(r.ranges,i)),scrollIntoView:!0})),!0}}var gR=({state:n,dispatch:e})=>n.field(Sl,!1)?(e(n.update({effects:wl.of(null)})),!0):!1,OR=sx(1),bR=sx(-1);var yR=[{key:"Tab",run:OR,shift:bR},{key:"Escape",run:gR}],ex=oe.define({combine(n){return n.length?n[0]:yR}}),SR=pr.highest(Sn.compute([ex],n=>n.facet(ex)));function vn(n,e){return zi(Ue({},e),{apply:mR(n)})}var vR=F.domEventHandlers({mousedown(n,e){let t=e.state.field(Sl,!1),r;if(!t||(r=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let i=t.ranges.find(s=>s.from<=r&&s.to>=r);return!i||i.field==t.active?!1:(e.dispatch({selection:yg(t.ranges,i.field),effects:wl.of(t.ranges.some(s=>s.field>i.field)?new Ho(t.ranges,i.field):null),scrollIntoView:!0}),!0)}});var vl={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Gs=ye.define({map(n,e){let t=e.mapPos(n,-1,Xt.TrackAfter);return t==null?void 0:t}}),Sg=new class extends fr{};Sg.startSide=1;Sg.endSide=-1;var ox=Xe.define({create(){return $e.empty},update(n,e){if(n=n.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);n=n.update({filter:r=>r>=t.from&&r<=t.to})}for(let t of e.effects)t.is(Gs)&&(n=n.update({add:[Sg.range(t.value,t.value+1)]}));return n}});function ax(){return[xR,ox]}var mg="()[]{}<>\xAB\xBB\xBB\xAB\uFF3B\uFF3D\uFF5B\uFF5D";function lx(n){for(let e=0;e{if((wR?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let i=n.state.selection.main;if(r.length>2||r.length==2&&Yi(Ir(r,0))==1||e!=i.from||t!=i.to)return!1;let s=PR(n.state,r);return s?(n.dispatch(s),!0):!1}),dx=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let r=cx(n,n.selection.main.head).brackets||vl.brackets,i=null,s=n.changeByRange(o=>{if(o.empty){let a=kR(n.doc,o.head);for(let l of r)if(l==a&&rh(n.doc,o.head)==lx(Ir(l,0)))return{changes:{from:o.head-l.length,to:o.head+l.length},range:z.cursor(o.head-l.length)}}return{range:i=o}});return i||e(n.update(s,{scrollIntoView:!0,userEvent:"delete.backward"})),!i};function PR(n,e){let t=cx(n,n.selection.main.head),r=t.brackets||vl.brackets;for(let i of r){let s=lx(Ir(i,0));if(e==i)return s==i?TR(n,i,r.indexOf(i+i+i)>-1,t):$R(n,i,s,t.before||vl.before);if(e==s&&hx(n,n.selection.main.from))return QR(n,i,s)}return null}function hx(n,e){let t=!1;return n.field(ox).between(0,n.doc.length,r=>{r==e&&(t=!0)}),t}function rh(n,e){let t=n.sliceString(e,e+2);return t.slice(0,Yi(Ir(t,0)))}function kR(n,e){let t=n.sliceString(e-2,e);return Yi(Ir(t,0))==t.length?t:t.slice(1)}function $R(n,e,t,r){let i=null,s=n.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:Gs.of(o.to+e.length),range:z.range(o.anchor+e.length,o.head+e.length)};let a=rh(n.doc,o.head);return!a||/\s/.test(a)||r.indexOf(a)>-1?{changes:{insert:e+t,from:o.head},effects:Gs.of(o.head+e.length),range:z.cursor(o.head+e.length)}:{range:i=o}});return i?null:n.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function QR(n,e,t){let r=null,i=n.changeByRange(s=>s.empty&&rh(n.doc,s.head)==t?{changes:{from:s.head,to:s.head+t.length,insert:t},range:z.cursor(s.head+t.length)}:r={range:s});return r?null:n.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function TR(n,e,t,r){let i=r.stringPrefixes||vl.stringPrefixes,s=null,o=n.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:e,from:a.to}],effects:Gs.of(a.to+e.length),range:z.range(a.anchor+e.length,a.head+e.length)};let l=a.head,c=rh(n.doc,l),d;if(c==e){if(tx(n,l))return{changes:{insert:e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)};if(hx(n,l)){let u=t&&n.sliceDoc(l,l+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:l,to:l+u.length,insert:u},range:z.cursor(l+u.length)}}}else{if(t&&n.sliceDoc(l-2*e.length,l)==e+e&&(d=nx(n,l-2*e.length,i))>-1&&tx(n,d))return{changes:{insert:e+e+e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)};if(n.charCategorizer(l)(c)!=et.Word&&nx(n,l,i)>-1&&!AR(n,l,e,i))return{changes:{insert:e+e,from:l},effects:Gs.of(l+e.length),range:z.cursor(l+e.length)}}return{range:s=a}});return s?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function tx(n,e){let t=ze(n).resolveInner(e+1);return t.parent&&t.from==e}function AR(n,e,t,r){let i=ze(n).resolveInner(e,-1),s=r.reduce((o,a)=>Math.max(o,a.length),0);for(let o=0;o<5;o++){let a=n.sliceDoc(i.from,Math.min(i.to,i.from+t.length+s)),l=a.indexOf(t);if(!l||l>-1&&r.indexOf(a.slice(0,l))>-1){let d=i.firstChild;for(;d&&d.from==i.from&&d.to-d.from>t.length+l;){if(n.sliceDoc(d.to-t.length,d.to)==t)return!1;d=d.firstChild}return!0}let c=i.to==e&&i.parent;if(!c)break;i=c}return!1}function nx(n,e,t){let r=n.charCategorizer(e);if(r(n.sliceDoc(e-1,e))!=et.Word)return e;for(let i of t){let s=e-i.length;if(n.sliceDoc(s,e)==i&&r(n.sliceDoc(s-1,s))!=et.Word)return s}return-1}var ux=nw((n,e,t)=>{let r=ze(n.state).resolveInner(e,t),i=Um(r),s="";if(i)for(let c of i.tags)s+=c.set.join(" < ")+` `;let o=n.state.facet(ri),a=o instanceof Jt?"Lezer LRLanguage":o instanceof zt?"StreamLanguage":"Unknown",l=o instanceof Jt?"AST ":o instanceof zt?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let d=document.createElement("div");d.style.overflow="visible",d.style.height="0",d.style.width="0";let h=document.createElement("div");return h.className="cm-debug-tooltip",h.textContent=`Parser: ${a} ${l}: ${r.name} -Tags : ${s}`,h.style.whiteSpace="pre-wrap",h.style.fontFamily="monospace",h.style.background="#333",h.style.color="white",h.style.padding="2px 8px",h.style.borderRadius="4px",h.style.fontSize="12px",h.style.border="1px solid #555",h.style.pointerEvents="none",h.style.position="absolute",h.style.bottom="0",h.style.width="max-content",d.appendChild(h),{dom:d}}}},{hoverTime:10,hideOnChange:!0});var TR=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),r=$g(n.state,t.from);return r.line?AR(n):r.block?_R(n):!1};function kg(n,e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let i=n(e,t);return i?(r(t.update(i)),!0):!1}}var AR=kg(MR,0);var CR=kg(yx,0);var _R=kg((n,e)=>yx(n,e,RR(e)),0);function $g(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var xl=50;function ER(n,{open:e,close:t},r,i){let s=n.sliceDoc(r-xl,r),o=n.sliceDoc(i,i+xl),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:i+l,margin:l&&1}};let d,h;i-r<=2*xl?d=h=n.sliceDoc(r,i):(d=n.sliceDoc(r,r+xl),h=n.sliceDoc(i-xl,i));let u=/^\s*/.exec(d)[0].length,f=/\s*$/.exec(h)[0].length,m=h.length-f-t.length;return d.slice(u,u+e.length)==e&&h.slice(m,m+t.length)==t?{open:{pos:r+u+e.length,margin:/\s/.test(d.charAt(u+e.length))?1:0},close:{pos:i-f-t.length,margin:/\s/.test(h.charAt(m-1))?1:0}}:null}function RR(n){let e=[];for(let t of n.selection.ranges){let r=n.doc.lineAt(t.from),i=t.to<=r.to?r:n.doc.lineAt(t.to);i.from>r.from&&i.from==t.to&&(i=t.to==r.to+1?r:n.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>r.from?e[s].to=i.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return e}function yx(n,e,t=e.selection.ranges){let r=t.map(s=>$g(e,s.from).block);if(!r.every(s=>s))return null;let i=t.map((s,o)=>ER(e,r[o],s.from,s.to));if(n!=2&&!i.every(s=>s))return{changes:e.changes(t.map((s,o)=>i[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(n!=1&&i.some(s=>s)){let s=[];for(let o=0,a;oi&&(s==o||o>h.from)){i=h.from;let u=/^\s*/.exec(h.text)[0].length,f=u==h.length,m=h.text.slice(u,u+c.length)==c?u:-1;us.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:d,single:h}of r)(h||!d)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,d=c+l.length;o.text[d-o.from]==" "&&d++,s.push({from:c,to:d})}return{changes:s}}return null}var wg=Tn.define(),oh=Tn.define(),LR=oe.define(),Sx=oe.define({combine(n){return Yn(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(r,i)=>e(r,i)||t(r,i)})}}),vx=Xe.define({create(){return Hs.empty},update(n,e){let t=e.state.facet(Sx),r=e.annotation(wg);if(r){let l=Br.fromTransaction(e,r.selection),c=r.side,d=c==0?n.undone:n.done;return l?d=sh(d,d.length,t.minDepth,l):d=Px(d,e.startState.selection),new Hs(c==0?r.rest:d,c==0?d:r.rest)}let i=e.annotation(oh);if((i=="full"||i=="before")&&(n=n.isolate()),e.annotation(ut.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let s=Br.fromTransaction(e),o=e.annotation(ut.time),a=e.annotation(ut.userEvent);return s?n=n.addChanges(s,o,a,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(i=="full"||i=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new Hs(n.done.map(Br.fromJSON),n.undone.map(Br.fromJSON))}});function wx(n={}){return[vx,Sx.of(n),F.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?Pl:e.inputType=="historyRedo"?Ko:null;return r?(e.preventDefault(),r(t)):!1}})]}function ah(n,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let i=t.field(vx,!1);if(!i)return!1;let s=i.pop(n,t,e);return s?(r(s),!0):!1}}var Pl=ah(0,!1),Ko=ah(1,!1),DR=ah(0,!0),ZR=ah(1,!0);var Br=class n{constructor(e,t,r,i,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=i,this.selectionsAfter=s}setSelAfter(e){return new n(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(i=>i.toJSON())}}static fromJSON(e){return new n(e.changes&&On.fromJSON(e.changes),[],e.mapped&&vi.fromJSON(e.mapped),e.startSelection&&z.fromJSON(e.startSelection),e.selectionsAfter.map(z.fromJSON))}static fromTransaction(e,t){let r=Sr;for(let i of e.startState.facet(LR)){let s=i(e);s.length&&(r=r.concat(s))}return!r.length&&e.changes.empty?null:new n(e.changes.invert(e.startState.doc),r,void 0,t||e.startState.selection,Sr)}static selection(e){return new n(void 0,Sr,void 0,void 0,e)}};function sh(n,e,t,r){let i=e+1>t+20?e-t-1:0,s=n.slice(i,e);return s.push(r),s}function IR(n,e){let t=[],r=!1;return n.iterChangedRanges((i,s)=>t.push(i,s)),e.iterChangedRanges((i,s,o,a)=>{for(let l=0;l=c&&o<=d&&(r=!0)}}),r}function XR(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,r)=>t.empty!=e.ranges[r].empty).length===0}function xx(n,e){return n.length?e.length?n.concat(e):n:e}var Sr=[],zR=200;function Px(n,e){if(n.length){let t=n[n.length-1],r=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-zR));return r.length&&r[r.length-1].eq(e)?n:(r.push(e),sh(n,n.length-1,1e9,t.setSelAfter(r)))}else return[Br.selection([e])]}function WR(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function vg(n,e){if(!n.length)return n;let t=n.length,r=Sr;for(;t;){let i=NR(n[t-1],e,r);if(i.changes&&!i.changes.empty||i.effects.length){let s=n.slice(0,t);return s[t-1]=i,s}else e=i.mapped,t--,r=i.selectionsAfter}return r.length?[Br.selection(r)]:Sr}function NR(n,e,t){let r=xx(n.selectionsAfter.length?n.selectionsAfter.map(a=>a.map(e)):Sr,t);if(!n.changes)return Br.selection(r);let i=n.changes.map(e),s=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(s):s;return new Br(i,ye.mapEffects(n.effects,e),o,n.startSelection.map(s),r)}var BR=/^(input\.type|delete)($|\.)/,Hs=class n{constructor(e,t,r=0,i=void 0){this.done=e,this.undone=t,this.prevTime=r,this.prevUserEvent=i}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,r,i,s){let o=this.done,a=o[o.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!r||BR.test(r))&&(!a.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?n.moveByChar(t,e):lh(t,e))}function hn(n){return n.textDirectionAt(n.state.selection.main.head)==qe.LTR}var Qx=n=>$x(n,!hn(n)),Tx=n=>$x(n,hn(n));function Ax(n,e){return Fr(n,t=>t.empty?n.moveByGroup(t,e):lh(t,e))}var VR=n=>Ax(n,!hn(n)),FR=n=>Ax(n,hn(n));var tB=typeof Intl!="undefined"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function YR(n,e,t){if(e.type.prop(t))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function ch(n,e,t){let r=ze(n).resolveInner(e.head),i=t?xe.closedBy:xe.openedBy;for(let l=e.head;;){let c=t?r.childAfter(l):r.childBefore(l);if(!c)break;YR(n,c,i)?r=c:l=t?c.to:c.from}let s=r.type.prop(i),o,a;return s&&(o=t?Nr(n,r.from,1):Nr(n,r.to,-1))&&o.matched?a=t?o.end.to:o.end.from:a=t?r.to:r.from,z.cursor(a,t?-1:1)}var jR=n=>Fr(n,e=>ch(n.state,e,!hn(n))),UR=n=>Fr(n,e=>ch(n.state,e,hn(n)));function Cx(n,e){return Fr(n,t=>{if(!t.empty)return lh(t,e);let r=n.moveVertically(t,e);return r.head!=t.head?r:n.moveToLineBoundary(t,e)})}var _x=n=>Cx(n,!1),Ex=n=>Cx(n,!0);function Rx(n){let e=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,e,t.height):lh(o,e));if(i.eq(r.selection))return!1;let s;if(t.selfScroll){let o=n.coordsAtPos(r.selection.main.head),a=n.scrollDOM.getBoundingClientRect(),l=a.top+t.marginTop,c=a.bottom-t.marginBottom;o&&o.top>l&&o.bottomMx(n,!1),xg=n=>Mx(n,!0);function rs(n,e,t){let r=n.lineBlockAt(e.head),i=n.moveToLineBoundary(e,t);if(i.head==e.head&&i.head!=(t?r.to:r.from)&&(i=n.moveToLineBoundary(e,t,!1)),!t&&i.head==r.from&&r.length){let s=/^\s*/.exec(n.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;s&&e.head!=r.from+s&&(i=z.cursor(r.from+s))}return i}var qR=n=>Fr(n,e=>rs(n,e,!0)),GR=n=>Fr(n,e=>rs(n,e,!1)),HR=n=>Fr(n,e=>rs(n,e,!hn(n))),KR=n=>Fr(n,e=>rs(n,e,hn(n))),JR=n=>Fr(n,e=>z.cursor(n.lineBlockAt(e.head).from,1)),eM=n=>Fr(n,e=>z.cursor(n.lineBlockAt(e.head).to,-1));function tM(n,e,t){let r=!1,i=Jo(n.selection,s=>{let o=Nr(n,s.head,-1)||Nr(n,s.head,1)||s.head>0&&Nr(n,s.head-1,1)||s.headtM(n,e,!1);function vr(n,e,t){let r=Jo(n.state.selection,i=>{i.undirectional&&i.head>=i.anchor!=e&&(i=z.range(i.head,i.anchor));let s=t(i);return z.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return r.eq(n.state.selection)?!1:(n.dispatch(Vr(n.state,r)),!0)}function Lx(n,e){return vr(n,e,t=>n.moveByChar(t,e))}var Dx=n=>Lx(n,!hn(n)),Zx=n=>Lx(n,hn(n));function Ix(n,e){return vr(n,e,t=>n.moveByGroup(t,e))}var rM=n=>Ix(n,!hn(n)),iM=n=>Ix(n,hn(n));var sM=n=>{let e=!hn(n);return vr(n,e,t=>ch(n.state,t,e))},oM=n=>{let e=hn(n);return vr(n,e,t=>ch(n.state,t,e))};function Xx(n,e){return vr(n,e,t=>n.moveVertically(t,e))}var zx=n=>Xx(n,!1),Wx=n=>Xx(n,!0);function Nx(n,e){return vr(n,e,t=>n.moveVertically(t,e,Rx(n).height))}var ux=n=>Nx(n,!1),fx=n=>Nx(n,!0),aM=n=>vr(n,!0,e=>rs(n,e,!0)),lM=n=>vr(n,!1,e=>rs(n,e,!1)),cM=n=>{let e=!hn(n);return vr(n,e,t=>rs(n,t,e))},dM=n=>{let e=hn(n);return vr(n,e,t=>rs(n,t,e))},hM=n=>vr(n,!1,e=>z.cursor(n.lineBlockAt(e.head).from)),uM=n=>vr(n,!0,e=>z.cursor(n.lineBlockAt(e.head).to)),px=({state:n,dispatch:e})=>(e(Vr(n,{anchor:0})),!0),mx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.doc.length})),!0),gx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.selection.main.anchor,head:0})),!0),Ox=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),fM=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),pM=({state:n,dispatch:e})=>{let t=dh(n).map(({from:r,to:i})=>z.undirectionalRange(r,Math.min(i+1,n.doc.length)));return e(n.update({selection:z.create(t),userEvent:"select"})),!0},mM=({state:n,dispatch:e})=>{let t=Jo(n.selection,r=>{let i=ze(n),s=i.resolveStack(r.from,1);if(r.empty){let o=i.resolveStack(r.from,-1);o.node.from>=s.node.from&&o.node.to<=s.node.to&&(s=o)}for(let o=s;o;o=o.next){let{node:a}=o;if((a.from=r.to||a.to>r.to&&a.from<=r.from)&&o.next)return z.undirectionalRange(a.from,a.to)}return r});return t.eq(n.selection)?!1:(e(Vr(n,t)),!0)};function Bx(n,e){let{state:t}=n,r=t.selection,i=t.selection.ranges.slice();for(let s of t.selection.ranges){let o=t.doc.lineAt(s.head);if(e?o.to0)for(let a=s;;){let l=n.moveVertically(a,e);if(l.heado.to){i.some(c=>c.head==l.head)||i.push(l);break}else{if(l.head==a.head)break;a=l}}}return i.length==r.ranges.length?!1:(n.dispatch(Vr(t,z.create(i,i.length-1))),!0)}var gM=n=>Bx(n,!1),OM=n=>Bx(n,!0),bM=({state:n,dispatch:e})=>{let t=n.selection,r=null;return t.ranges.length>1?r=z.create([t.main]):t.main.empty||(r=z.create([z.cursor(t.main.head)])),r?(e(Vr(n,r)),!0):!1};function kl(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:r}=n,i=r.changeByRange(s=>{let{from:o,to:a}=s;if(o==a){let l=e(s);lo&&(t="delete.forward",l=ih(n,l,!0)),o=Math.min(o,l),a=Math.max(a,l)}else o=ih(n,o,!1),a=ih(n,a,!0);return o==a?{range:s}:{changes:{from:o,to:a},range:z.cursor(o,oi(n)))r.between(e,e,(i,s)=>{ie&&(e=t?s:i)});return e}var Vx=(n,e,t)=>kl(n,r=>{let i=r.from,{state:s}=n,o=s.doc.lineAt(i),a,l;if(t&&!e&&i>o.from&&iVx(n,!1,!0);var Fx=n=>Vx(n,!0,!1),Yx=(n,e)=>kl(n,t=>{let r=t.head,{state:i}=n,s=i.doc.lineAt(r),o=i.charCategorizer(r);for(let a=null;;){if(r==(e?s.to:s.from)){r==t.head&&s.number!=(e?i.doc.lines:1)&&(r+=e?1:-1);break}let l=Pt(s.text,r-s.from,e)+s.from,c=s.text.slice(Math.min(r,l)-s.from,Math.max(r,l)-s.from),d=o(c);if(a!=null&&d!=a)break;(c!=" "||r!=t.head)&&(a=d),r=l}return r}),jx=n=>Yx(n,!1),yM=n=>Yx(n,!0);var SM=n=>kl(n,e=>{let t=n.lineBlockAt(e.head).to;return e.headkl(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),wM=n=>kl(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head{if(n.readOnly)return!1;let t=n.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:De.of(["",""])},range:z.cursor(r.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},PM=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(r=>{if(!r.empty||r.from==0||r.from==n.doc.length)return{range:r};let i=r.from,s=n.doc.lineAt(i),o=i==s.from?i-1:Pt(s.text,i-s.from,!1)+s.from,a=i==s.to?i+1:Pt(s.text,i-s.from,!0)+s.from;return{changes:{from:o,to:a,insert:n.doc.slice(i,a).append(n.doc.slice(o,i))},range:z.cursor(a)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function dh(n){let e=[],t=-1;for(let r of n.selection.ranges){let i=n.doc.lineAt(r.from),s=n.doc.lineAt(r.to);if(!r.empty&&r.to==s.from&&(s=n.doc.lineAt(r.to-1)),t>=i.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(r)}else e.push({from:i.from,to:s.to,ranges:[r]});t=s.number+1}return e}function Ux(n,e,t){if(n.readOnly)return!1;let r=[],i=[];for(let s of dh(n)){if(t?s.to==n.doc.length:s.from==0)continue;let o=n.doc.lineAt(t?s.to+1:s.from-1),a=o.length+1;if(t){r.push({from:s.to,to:o.to},{from:s.from,insert:o.text+n.lineBreak});for(let l of s.ranges)i.push(z.range(Math.min(n.doc.length,l.anchor+a),Math.min(n.doc.length,l.head+a)))}else{r.push({from:o.from,to:s.from},{from:s.to,insert:n.lineBreak+o.text});for(let l of s.ranges)i.push(z.range(l.anchor-a,l.head-a))}}return r.length?(e(n.update({changes:r,scrollIntoView:!0,selection:z.create(i,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var kM=({state:n,dispatch:e})=>Ux(n,e,!1),$M=({state:n,dispatch:e})=>Ux(n,e,!0);function qx(n,e,t){if(n.readOnly)return!1;let r=[];for(let s of dh(n))t?r.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):r.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});let i=n.changes(r);return e(n.update({changes:i,selection:n.selection.map(i,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var QM=({state:n,dispatch:e})=>qx(n,e,!1),TM=({state:n,dispatch:e})=>qx(n,e,!0),Qg=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(dh(e).map(({from:i,to:s})=>(i>0?i--:s{let s;if(n.lineWrapping){let o=n.lineBlockAt(i.head),a=n.coordsAtPos(i.head,i.assoc||1);a&&(s=o.bottom+n.documentTop-a.bottom+n.defaultLineHeight/2)}return n.moveVertically(i,!0,s)}).map(t);return n.dispatch({changes:t,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0},Gx=({state:n,dispatch:e})=>(e(n.update(n.replaceSelection(n.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0);function AM(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=ze(n).resolveInner(e),r=t.childBefore(e),i=t.childAfter(e),s;return r&&i&&r.to<=e&&i.from>=e&&(s=r.type.prop(xe.closedBy))&&s.indexOf(i.name)>-1&&n.doc.lineAt(r.to).from==n.doc.lineAt(i.from).from&&!/\S/.test(n.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}var bx=Hx(!1),CM=Hx(!0);function Hx(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(i=>{let{from:s,to:o}=i,a=e.doc.lineAt(s),l=!n&&s==o&&AM(e,s);n&&(s=o=(o<=a.to?a:e.doc.lineAt(o)).to);let c=new qs(e,{simulateBreak:s,simulateDoubleBreak:!!l}),d=eh(c,s);for(d==null&&(d=Gt(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));oa.from&&s{let i=[];for(let o=r.from;o<=r.to;){let a=n.doc.lineAt(o);a.number>t&&(r.empty||r.to>a.from)&&(e(a,i,r),t=a.number),o=a.to+1}let s=n.changes(i);return{changes:i,range:z.range(s.mapPos(r.anchor,1),s.mapPos(r.head,1))}})}var _M=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),r=new qs(n,{overrideIndentation:s=>{let o=t[s];return o==null?-1:o}}),i=Tg(n,(s,o,a)=>{let l=eh(r,s.from);if(l==null)return;/\S/.test(s.text)||(l=0);let c=/^\s*/.exec(s.text)[0],d=qo(n,l);(c!=d||a.fromn.readOnly?!1:(e(n.update(Tg(n,(t,r)=>{r.push({from:t.from,insert:n.facet(yr)})}),{userEvent:"input.indent"})),!0),uh=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(Tg(n,(t,r)=>{let i=/^\s*/.exec(t.text)[0];if(!i)return;let s=Gt(i,n.tabSize),o=0,a=qo(n,Math.max(0,s-ii(n)));for(;o(n.setTabFocusMode(),!0);var Kx=({state:n,dispatch:e})=>n.selection.ranges.some(t=>!t.empty)?hh({state:n,dispatch:e}):(e(n.update(n.replaceSelection(" "),{scrollIntoView:!0,userEvent:"input"})),!0),RM=[{key:"Ctrl-b",run:Qx,shift:Dx,preventDefault:!0},{key:"Ctrl-f",run:Tx,shift:Zx},{key:"Ctrl-p",run:_x,shift:zx},{key:"Ctrl-n",run:Ex,shift:Wx},{key:"Ctrl-a",run:JR,shift:hM},{key:"Ctrl-e",run:eM,shift:uM},{key:"Ctrl-d",run:Fx},{key:"Ctrl-h",run:Pg},{key:"Ctrl-k",run:SM},{key:"Ctrl-Alt-h",run:jx},{key:"Ctrl-o",run:xM},{key:"Ctrl-t",run:PM},{key:"Ctrl-v",run:xg}],MM=[{key:"ArrowLeft",run:Qx,shift:Dx,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:VR,shift:rM,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:HR,shift:cM,preventDefault:!0},{key:"ArrowRight",run:Tx,shift:Zx,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:FR,shift:iM,preventDefault:!0},{mac:"Cmd-ArrowRight",run:KR,shift:dM,preventDefault:!0},{key:"ArrowUp",run:_x,shift:zx,preventDefault:!0},{mac:"Cmd-ArrowUp",run:px,shift:gx},{mac:"Ctrl-ArrowUp",run:hx,shift:ux},{key:"ArrowDown",run:Ex,shift:Wx,preventDefault:!0},{mac:"Cmd-ArrowDown",run:mx,shift:Ox},{mac:"Ctrl-ArrowDown",run:xg,shift:fx},{key:"PageUp",run:hx,shift:ux},{key:"PageDown",run:xg,shift:fx},{key:"Home",run:GR,shift:lM,preventDefault:!0},{key:"Mod-Home",run:px,shift:gx},{key:"End",run:qR,shift:aM,preventDefault:!0},{key:"Mod-End",run:mx,shift:Ox},{key:"Enter",run:bx,shift:bx},{key:"Mod-a",run:fM},{key:"Backspace",run:Pg,shift:Pg,preventDefault:!0},{key:"Delete",run:Fx,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:jx,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:yM,preventDefault:!0},{mac:"Mod-Backspace",run:vM,preventDefault:!0},{mac:"Mod-Delete",run:wM,preventDefault:!0}].concat(RM.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),Jx=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:jR,shift:sM},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:UR,shift:oM},{key:"Alt-ArrowUp",run:kM},{key:"Shift-Alt-ArrowUp",run:QM},{key:"Alt-ArrowDown",run:$M},{key:"Shift-Alt-ArrowDown",run:TM},{key:"Mod-Alt-ArrowUp",run:gM},{key:"Mod-Alt-ArrowDown",run:OM},{key:"Escape",run:bM},{key:"Mod-Enter",run:CM},{key:"Alt-l",mac:"Ctrl-l",run:pM},{key:"Mod-i",run:mM,preventDefault:!0},{key:"Mod-[",run:uh},{key:"Mod-]",run:hh},{key:"Mod-Alt-\\",run:_M},{key:"Shift-Mod-k",run:Qg},{key:"Shift-Mod-\\",run:nM},{key:"Mod-/",run:TR},{key:"Alt-A",mac:"Ctrl-A",run:CR},{key:"Ctrl-m",mac:"Shift-Alt-m",run:EM}].concat(MM);function LM(n,e){let t=n.doc.lineAt(e),r=t.text.slice(0,e-t.from),i=Gt(r,n.tabSize),s=/^\s*$/.test(r)?ii(n):n.tabSize;return" ".repeat(s-i%s)}function e1(n){let e=new Map,t=0,r=0,i=0;for(let a of n.split(` -`,2e3)){if(!a.trim())continue;if(a[0]==" "){t++;continue}let l=a.length-a.trimStart().length;l>0&&r++;let c=l-i;c>=2&&c<=8&&e.set(c,(e.get(c)||0)+1),i=l}if(t>r)return" ";let s=2,o=0;for(let[a,l]of e)(l>o||l==o&&a!t.empty)?hh(n):(n.dispatch(e.changeByRange(t=>{let r=LM(e,t.head);return{changes:{from:t.head,insert:r},range:z.cursor(t.head+r.length)}}),{scrollIntoView:!0,userEvent:"input"}),!0)}function ZM(n){for(let e=1;e<=n.doc.lines;e++)if(/^\d\d/.test(n.doc.line(e).text))return!0;return!1}var t1=[{key:"Enter",run:n=>ZM(n.state)&&Gx(n)}],n1=[{key:"Tab",run:DM},{key:"Shift-Tab",run:uh}],r1=[{key:"Tab",run:Kx},{key:"Shift-Tab",run:uh}],$l=50,fh=8,IM=!0;function ea(n){IM&&console.log("[asm-tab] "+n)}function ta(n,e){let t=0;for(let r=0;r0&&e.set(n,(e.get(n)||0)+1)}function XM(n,e){let t=[],r=/\S+/g,i;for(;(i=r.exec(n))!==null&&n[i.index]!=";";)t.push(ta(n,i.index));let s=/(^|\s);/.exec(n);s&&Ag(ta(n,s.index+s[1].length),e);let o=t.length&&t[0]==0?t.slice(1):t;o.length>=1&&Ag(o[0],e),o.length>=2&&Ag(o[1],e)}var zM=3;function i1(n,e){let t=n.doc.lineAt(e),r=n.doc.lines,i=(a,l,c,d)=>{let h=0;for(let u=a;u!=l&&h<$l;u+=c){let f=n.doc.line(u);f.text.trim()&&(XM(f.text,d),h++)}return h},s=new Map;return i(t.number+1,Math.min(r,t.number+$l)+1,1,s)e&&(o>i||o==i&&s=0?r:(Math.floor(e/t)+1)*t}function NM(n,e,t){let r=-1,i=0;for(let[s,o]of n)si||o==i&&s>r)&&(r=s,i=o);return r>=0?r:Math.max(0,Math.min(Math.floor((e-1)/t)*t,e-1))}function s1(n,e){let t=n.doc.lineAt(e),r=Math.max(1,t.number-$l),i=Math.min(n.doc.lines,t.number+$l);for(let s=r;s<=i;s++)if(n.doc.line(s).text.includes(" "))return!0;return!1}function o1(n){return"["+[...n.entries()].sort((e,t)=>e[0]-t[0]).map(([e,t])=>`${e}:${t}`).join(" ")+"]"}function BM(n,e){let t=n.doc.lineAt(e),r=ta(t.text,e-t.from),i=s1(n,e),s=i?fh:n.tabSize,o=i1(n,e),a=WM(o,r,s);return ea(`Tab @ line ${t.number} col ${r}: stops(col:freq)=${o1(o)} ${i?"grid=8 (file has tabs)":`grid=${n.tabSize}`} -> target=${a} | line=${JSON.stringify(t.text.slice(0,r))}+CURSOR`),a<=r?null:{from:e,insert:" ".repeat(a-r)}}function VM(n,e){let t=n.doc.lineAt(e),r=e-t.from;if(r==0)return ea(`Backspace @ line ${t.number} col 0: start of line, using default`),null;if(t.text[r-1]==" ")return ea(`Backspace @ line ${t.number} col ${ta(t.text,r)}: deleting one tab char`),{from:e-1,to:e};if(!/^[ \t]+$/.test(t.text.slice(0,r)))return ea(`Backspace @ line ${t.number} col ${ta(t.text,r)}: cursor not in leading whitespace, using default`),null;let i=s1(n,e),s=i?fh:n.tabSize,o=ta(t.text,r),a=i1(n,e),l=NM(a,o,s);if(l>=o)return ea(`Backspace @ line ${t.number} col ${o}: no stop before cursor, using default`),null;let c=e-(o-l);return ea(`Backspace @ line ${t.number} col ${o}: stops(col:freq)=${o1(a)} ${i?"grid=8 (file has tabs)":`grid=${n.tabSize}`} -> deleting cols ${l}..${o} | line=${JSON.stringify(t.text.slice(0,r))}+CURSOR`),{from:c,to:e}}function FM(n){let e=n.state;if(e.selection.ranges.some(r=>!r.empty))return!1;let t=e.changeByRange(r=>{let i=BM(e,r.head);return i?{changes:i,range:z.cursor(r.head+i.insert.length)}:{range:r}});return n.dispatch(t),!0}function YM(n){let e=n.state,t=e.selection.main;if(!t.empty)return!1;let r=VM(e,t.head);return r?(n.dispatch(e.update({changes:r,selection:z.cursor(r.from)})),!0):!1}function a1(n){return[{key:"Tab",run:e=>n()&&FM(e)},{key:"Backspace",run:e=>n()&&YM(e)}]}var jM=new Vt,UM=new Vt,qM=new Vt,GM=new Vt,HM=new Vt,KM=new Vt,JM=new Vt,eL=new Vt,c1="8bitworkshop/editorSettings",l1={tabSize:8,tabsToSpaces:!0,highlightSpecialChars:!1,highlightWhitespace:!1,highlightTrailingWhitespace:!1,closeBrackets:!1,debugHighlightTags:!1,showLineNumbers:!1,showStatusBar:!0};function na(){try{var n=localStorage.getItem(c1);if(n)return Ue(Ue({},l1),JSON.parse(n))}catch(e){}return Ue({},l1)}function tL(n){localStorage.setItem(c1,JSON.stringify(n))}var d1=[[GM,n=>[Me.tabSize.of(n.tabSize),yr.of(" ".repeat(n.tabSize))]],[KM,n=>Sn.of(n.tabsToSpaces?n1:r1)],[jM,n=>n.highlightSpecialChars?Kv():[]],[UM,n=>n.highlightWhitespace?lw():[]],[qM,n=>n.highlightTrailingWhitespace?cw():[]],[HM,n=>n.closeBrackets?[sx(),Sn.of([{key:"Backspace",run:lx}])]:[]],[JM,n=>n.debugHighlightTags?dx:[]],[eL,n=>n.showLineNumbers?Xd():[]]];function h1(n){return d1.map(([e,t])=>e.of(t(n)))}var u1=new Set;function f1(n){u1.add(n)}function nL(n){var e=d1.map(([r,i])=>r.reconfigure(i(n)));for(var t of u1)t.dispatch({effects:e})}function p1(){var n=na(),e=!wo();bootbox.dialog({onEscape:!0,title:"Settings",message:`
+Tags : ${s}`,h.style.whiteSpace="pre-wrap",h.style.fontFamily="monospace",h.style.background="#333",h.style.color="white",h.style.padding="2px 8px",h.style.borderRadius="4px",h.style.fontSize="12px",h.style.border="1px solid #555",h.style.pointerEvents="none",h.style.position="absolute",h.style.bottom="0",h.style.width="max-content",d.appendChild(h),{dom:d}}}},{hoverTime:10,hideOnChange:!0});var CR=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),r=$g(n.state,t.from);return r.line?_R(n):r.block?RR(n):!1};function kg(n,e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let i=n(e,t);return i?(r(t.update(i)),!0):!1}}var _R=kg(DR,0);var ER=kg(vx,0);var RR=kg((n,e)=>vx(n,e,LR(e)),0);function $g(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var xl=50;function MR(n,{open:e,close:t},r,i){let s=n.sliceDoc(r-xl,r),o=n.sliceDoc(i,i+xl),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:i+l,margin:l&&1}};let d,h;i-r<=2*xl?d=h=n.sliceDoc(r,i):(d=n.sliceDoc(r,r+xl),h=n.sliceDoc(i-xl,i));let u=/^\s*/.exec(d)[0].length,f=/\s*$/.exec(h)[0].length,m=h.length-f-t.length;return d.slice(u,u+e.length)==e&&h.slice(m,m+t.length)==t?{open:{pos:r+u+e.length,margin:/\s/.test(d.charAt(u+e.length))?1:0},close:{pos:i-f-t.length,margin:/\s/.test(h.charAt(m-1))?1:0}}:null}function LR(n){let e=[];for(let t of n.selection.ranges){let r=n.doc.lineAt(t.from),i=t.to<=r.to?r:n.doc.lineAt(t.to);i.from>r.from&&i.from==t.to&&(i=t.to==r.to+1?r:n.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>r.from?e[s].to=i.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return e}function vx(n,e,t=e.selection.ranges){let r=t.map(s=>$g(e,s.from).block);if(!r.every(s=>s))return null;let i=t.map((s,o)=>MR(e,r[o],s.from,s.to));if(n!=2&&!i.every(s=>s))return{changes:e.changes(t.map((s,o)=>i[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(n!=1&&i.some(s=>s)){let s=[];for(let o=0,a;oi&&(s==o||o>h.from)){i=h.from;let u=/^\s*/.exec(h.text)[0].length,f=u==h.length,m=h.text.slice(u,u+c.length)==c?u:-1;us.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:d,single:h}of r)(h||!d)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,d=c+l.length;o.text[d-o.from]==" "&&d++,s.push({from:c,to:d})}return{changes:s}}return null}var wg=Tn.define(),oh=Tn.define(),ZR=oe.define(),wx=oe.define({combine(n){return Yn(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(r,i)=>e(r,i)||t(r,i)})}}),xx=Xe.define({create(){return Hs.empty},update(n,e){let t=e.state.facet(wx),r=e.annotation(wg);if(r){let l=Br.fromTransaction(e,r.selection),c=r.side,d=c==0?n.undone:n.done;return l?d=sh(d,d.length,t.minDepth,l):d=$x(d,e.startState.selection),new Hs(c==0?r.rest:d,c==0?d:r.rest)}let i=e.annotation(oh);if((i=="full"||i=="before")&&(n=n.isolate()),e.annotation(ut.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let s=Br.fromTransaction(e),o=e.annotation(ut.time),a=e.annotation(ut.userEvent);return s?n=n.addChanges(s,o,a,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(i=="full"||i=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new Hs(n.done.map(Br.fromJSON),n.undone.map(Br.fromJSON))}});function Px(n={}){return[xx,wx.of(n),F.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?Pl:e.inputType=="historyRedo"?Ko:null;return r?(e.preventDefault(),r(t)):!1}})]}function ah(n,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let i=t.field(xx,!1);if(!i)return!1;let s=i.pop(n,t,e);return s?(r(s),!0):!1}}var Pl=ah(0,!1),Ko=ah(1,!1),IR=ah(0,!0),XR=ah(1,!0);var Br=class n{constructor(e,t,r,i,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=i,this.selectionsAfter=s}setSelAfter(e){return new n(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(i=>i.toJSON())}}static fromJSON(e){return new n(e.changes&&On.fromJSON(e.changes),[],e.mapped&&vi.fromJSON(e.mapped),e.startSelection&&z.fromJSON(e.startSelection),e.selectionsAfter.map(z.fromJSON))}static fromTransaction(e,t){let r=Sr;for(let i of e.startState.facet(ZR)){let s=i(e);s.length&&(r=r.concat(s))}return!r.length&&e.changes.empty?null:new n(e.changes.invert(e.startState.doc),r,void 0,t||e.startState.selection,Sr)}static selection(e){return new n(void 0,Sr,void 0,void 0,e)}};function sh(n,e,t,r){let i=e+1>t+20?e-t-1:0,s=n.slice(i,e);return s.push(r),s}function zR(n,e){let t=[],r=!1;return n.iterChangedRanges((i,s)=>t.push(i,s)),e.iterChangedRanges((i,s,o,a)=>{for(let l=0;l=c&&o<=d&&(r=!0)}}),r}function WR(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,r)=>t.empty!=e.ranges[r].empty).length===0}function kx(n,e){return n.length?e.length?n.concat(e):n:e}var Sr=[],NR=200;function $x(n,e){if(n.length){let t=n[n.length-1],r=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-NR));return r.length&&r[r.length-1].eq(e)?n:(r.push(e),sh(n,n.length-1,1e9,t.setSelAfter(r)))}else return[Br.selection([e])]}function BR(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function vg(n,e){if(!n.length)return n;let t=n.length,r=Sr;for(;t;){let i=VR(n[t-1],e,r);if(i.changes&&!i.changes.empty||i.effects.length){let s=n.slice(0,t);return s[t-1]=i,s}else e=i.mapped,t--,r=i.selectionsAfter}return r.length?[Br.selection(r)]:Sr}function VR(n,e,t){let r=kx(n.selectionsAfter.length?n.selectionsAfter.map(a=>a.map(e)):Sr,t);if(!n.changes)return Br.selection(r);let i=n.changes.map(e),s=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(s):s;return new Br(i,ye.mapEffects(n.effects,e),o,n.startSelection.map(s),r)}var FR=/^(input\.type|delete)($|\.)/,Hs=class n{constructor(e,t,r=0,i=void 0){this.done=e,this.undone=t,this.prevTime=r,this.prevUserEvent=i}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,r,i,s){let o=this.done,a=o[o.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!r||FR.test(r))&&(!a.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?n.moveByChar(t,e):lh(t,e))}function hn(n){return n.textDirectionAt(n.state.selection.main.head)==qe.LTR}var Ax=n=>Tx(n,!hn(n)),Cx=n=>Tx(n,hn(n));function _x(n,e){return Fr(n,t=>t.empty?n.moveByGroup(t,e):lh(t,e))}var YR=n=>_x(n,!hn(n)),jR=n=>_x(n,hn(n));var iB=typeof Intl!="undefined"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function UR(n,e,t){if(e.type.prop(t))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function ch(n,e,t){let r=ze(n).resolveInner(e.head),i=t?xe.closedBy:xe.openedBy;for(let l=e.head;;){let c=t?r.childAfter(l):r.childBefore(l);if(!c)break;UR(n,c,i)?r=c:l=t?c.to:c.from}let s=r.type.prop(i),o,a;return s&&(o=t?Nr(n,r.from,1):Nr(n,r.to,-1))&&o.matched?a=t?o.end.to:o.end.from:a=t?r.to:r.from,z.cursor(a,t?-1:1)}var qR=n=>Fr(n,e=>ch(n.state,e,!hn(n))),GR=n=>Fr(n,e=>ch(n.state,e,hn(n)));function Ex(n,e){return Fr(n,t=>{if(!t.empty)return lh(t,e);let r=n.moveVertically(t,e);return r.head!=t.head?r:n.moveToLineBoundary(t,e)})}var Rx=n=>Ex(n,!1),Mx=n=>Ex(n,!0);function Lx(n){let e=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,e,t.height):lh(o,e));if(i.eq(r.selection))return!1;let s;if(t.selfScroll){let o=n.coordsAtPos(r.selection.main.head),a=n.scrollDOM.getBoundingClientRect(),l=a.top+t.marginTop,c=a.bottom-t.marginBottom;o&&o.top>l&&o.bottomDx(n,!1),xg=n=>Dx(n,!0);function rs(n,e,t){let r=n.lineBlockAt(e.head),i=n.moveToLineBoundary(e,t);if(i.head==e.head&&i.head!=(t?r.to:r.from)&&(i=n.moveToLineBoundary(e,t,!1)),!t&&i.head==r.from&&r.length){let s=/^\s*/.exec(n.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;s&&e.head!=r.from+s&&(i=z.cursor(r.from+s))}return i}var HR=n=>Fr(n,e=>rs(n,e,!0)),KR=n=>Fr(n,e=>rs(n,e,!1)),JR=n=>Fr(n,e=>rs(n,e,!hn(n))),eM=n=>Fr(n,e=>rs(n,e,hn(n))),tM=n=>Fr(n,e=>z.cursor(n.lineBlockAt(e.head).from,1)),nM=n=>Fr(n,e=>z.cursor(n.lineBlockAt(e.head).to,-1));function rM(n,e,t){let r=!1,i=Jo(n.selection,s=>{let o=Nr(n,s.head,-1)||Nr(n,s.head,1)||s.head>0&&Nr(n,s.head-1,1)||s.headrM(n,e,!1);function vr(n,e,t){let r=Jo(n.state.selection,i=>{i.undirectional&&i.head>=i.anchor!=e&&(i=z.range(i.head,i.anchor));let s=t(i);return z.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return r.eq(n.state.selection)?!1:(n.dispatch(Vr(n.state,r)),!0)}function Zx(n,e){return vr(n,e,t=>n.moveByChar(t,e))}var Ix=n=>Zx(n,!hn(n)),Xx=n=>Zx(n,hn(n));function zx(n,e){return vr(n,e,t=>n.moveByGroup(t,e))}var sM=n=>zx(n,!hn(n)),oM=n=>zx(n,hn(n));var aM=n=>{let e=!hn(n);return vr(n,e,t=>ch(n.state,t,e))},lM=n=>{let e=hn(n);return vr(n,e,t=>ch(n.state,t,e))};function Wx(n,e){return vr(n,e,t=>n.moveVertically(t,e))}var Nx=n=>Wx(n,!1),Bx=n=>Wx(n,!0);function Vx(n,e){return vr(n,e,t=>n.moveVertically(t,e,Lx(n).height))}var px=n=>Vx(n,!1),mx=n=>Vx(n,!0),cM=n=>vr(n,!0,e=>rs(n,e,!0)),dM=n=>vr(n,!1,e=>rs(n,e,!1)),hM=n=>{let e=!hn(n);return vr(n,e,t=>rs(n,t,e))},uM=n=>{let e=hn(n);return vr(n,e,t=>rs(n,t,e))},fM=n=>vr(n,!1,e=>z.cursor(n.lineBlockAt(e.head).from)),pM=n=>vr(n,!0,e=>z.cursor(n.lineBlockAt(e.head).to)),gx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:0})),!0),Ox=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.doc.length})),!0),bx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.selection.main.anchor,head:0})),!0),yx=({state:n,dispatch:e})=>(e(Vr(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),mM=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),gM=({state:n,dispatch:e})=>{let t=dh(n).map(({from:r,to:i})=>z.undirectionalRange(r,Math.min(i+1,n.doc.length)));return e(n.update({selection:z.create(t),userEvent:"select"})),!0},OM=({state:n,dispatch:e})=>{let t=Jo(n.selection,r=>{let i=ze(n),s=i.resolveStack(r.from,1);if(r.empty){let o=i.resolveStack(r.from,-1);o.node.from>=s.node.from&&o.node.to<=s.node.to&&(s=o)}for(let o=s;o;o=o.next){let{node:a}=o;if((a.from=r.to||a.to>r.to&&a.from<=r.from)&&o.next)return z.undirectionalRange(a.from,a.to)}return r});return t.eq(n.selection)?!1:(e(Vr(n,t)),!0)};function Fx(n,e){let{state:t}=n,r=t.selection,i=t.selection.ranges.slice();for(let s of t.selection.ranges){let o=t.doc.lineAt(s.head);if(e?o.to0)for(let a=s;;){let l=n.moveVertically(a,e);if(l.heado.to){i.some(c=>c.head==l.head)||i.push(l);break}else{if(l.head==a.head)break;a=l}}}return i.length==r.ranges.length?!1:(n.dispatch(Vr(t,z.create(i,i.length-1))),!0)}var bM=n=>Fx(n,!1),yM=n=>Fx(n,!0),SM=({state:n,dispatch:e})=>{let t=n.selection,r=null;return t.ranges.length>1?r=z.create([t.main]):t.main.empty||(r=z.create([z.cursor(t.main.head)])),r?(e(Vr(n,r)),!0):!1};function kl(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:r}=n,i=r.changeByRange(s=>{let{from:o,to:a}=s;if(o==a){let l=e(s);lo&&(t="delete.forward",l=ih(n,l,!0)),o=Math.min(o,l),a=Math.max(a,l)}else o=ih(n,o,!1),a=ih(n,a,!0);return o==a?{range:s}:{changes:{from:o,to:a},range:z.cursor(o,oi(n)))r.between(e,e,(i,s)=>{ie&&(e=t?s:i)});return e}var Yx=(n,e,t)=>kl(n,r=>{let i=r.from,{state:s}=n,o=s.doc.lineAt(i),a,l;if(t&&!e&&i>o.from&&iYx(n,!1,!0);var jx=n=>Yx(n,!0,!1),Ux=(n,e)=>kl(n,t=>{let r=t.head,{state:i}=n,s=i.doc.lineAt(r),o=i.charCategorizer(r);for(let a=null;;){if(r==(e?s.to:s.from)){r==t.head&&s.number!=(e?i.doc.lines:1)&&(r+=e?1:-1);break}let l=Pt(s.text,r-s.from,e)+s.from,c=s.text.slice(Math.min(r,l)-s.from,Math.max(r,l)-s.from),d=o(c);if(a!=null&&d!=a)break;(c!=" "||r!=t.head)&&(a=d),r=l}return r}),qx=n=>Ux(n,!1),vM=n=>Ux(n,!0);var wM=n=>kl(n,e=>{let t=n.lineBlockAt(e.head).to;return e.headkl(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),PM=n=>kl(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head{if(n.readOnly)return!1;let t=n.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:De.of(["",""])},range:z.cursor(r.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},$M=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(r=>{if(!r.empty||r.from==0||r.from==n.doc.length)return{range:r};let i=r.from,s=n.doc.lineAt(i),o=i==s.from?i-1:Pt(s.text,i-s.from,!1)+s.from,a=i==s.to?i+1:Pt(s.text,i-s.from,!0)+s.from;return{changes:{from:o,to:a,insert:n.doc.slice(i,a).append(n.doc.slice(o,i))},range:z.cursor(a)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function dh(n){let e=[],t=-1;for(let r of n.selection.ranges){let i=n.doc.lineAt(r.from),s=n.doc.lineAt(r.to);if(!r.empty&&r.to==s.from&&(s=n.doc.lineAt(r.to-1)),t>=i.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(r)}else e.push({from:i.from,to:s.to,ranges:[r]});t=s.number+1}return e}function Gx(n,e,t){if(n.readOnly)return!1;let r=[],i=[];for(let s of dh(n)){if(t?s.to==n.doc.length:s.from==0)continue;let o=n.doc.lineAt(t?s.to+1:s.from-1),a=o.length+1;if(t){r.push({from:s.to,to:o.to},{from:s.from,insert:o.text+n.lineBreak});for(let l of s.ranges)i.push(z.range(Math.min(n.doc.length,l.anchor+a),Math.min(n.doc.length,l.head+a)))}else{r.push({from:o.from,to:s.from},{from:s.to,insert:n.lineBreak+o.text});for(let l of s.ranges)i.push(z.range(l.anchor-a,l.head-a))}}return r.length?(e(n.update({changes:r,scrollIntoView:!0,selection:z.create(i,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var QM=({state:n,dispatch:e})=>Gx(n,e,!1),TM=({state:n,dispatch:e})=>Gx(n,e,!0);function Hx(n,e,t){if(n.readOnly)return!1;let r=[];for(let s of dh(n))t?r.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):r.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});let i=n.changes(r);return e(n.update({changes:i,selection:n.selection.map(i,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var AM=({state:n,dispatch:e})=>Hx(n,e,!1),CM=({state:n,dispatch:e})=>Hx(n,e,!0),Qg=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(dh(e).map(({from:i,to:s})=>(i>0?i--:s{let s;if(n.lineWrapping){let o=n.lineBlockAt(i.head),a=n.coordsAtPos(i.head,i.assoc||1);a&&(s=o.bottom+n.documentTop-a.bottom+n.defaultLineHeight/2)}return n.moveVertically(i,!0,s)}).map(t);return n.dispatch({changes:t,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0},Kx=({state:n,dispatch:e})=>(e(n.update(n.replaceSelection(n.lineBreak),{scrollIntoView:!0,userEvent:"input"})),!0);function _M(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=ze(n).resolveInner(e),r=t.childBefore(e),i=t.childAfter(e),s;return r&&i&&r.to<=e&&i.from>=e&&(s=r.type.prop(xe.closedBy))&&s.indexOf(i.name)>-1&&n.doc.lineAt(r.to).from==n.doc.lineAt(i.from).from&&!/\S/.test(n.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}var Sx=Jx(!1),EM=Jx(!0);function Jx(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(i=>{let{from:s,to:o}=i,a=e.doc.lineAt(s),l=!n&&s==o&&_M(e,s);n&&(s=o=(o<=a.to?a:e.doc.lineAt(o)).to);let c=new qs(e,{simulateBreak:s,simulateDoubleBreak:!!l}),d=eh(c,s);for(d==null&&(d=Gt(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));oa.from&&s{let i=[];for(let o=r.from;o<=r.to;){let a=n.doc.lineAt(o);a.number>t&&(r.empty||r.to>a.from)&&(e(a,i,r),t=a.number),o=a.to+1}let s=n.changes(i);return{changes:i,range:z.range(s.mapPos(r.anchor,1),s.mapPos(r.head,1))}})}var RM=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),r=new qs(n,{overrideIndentation:s=>{let o=t[s];return o==null?-1:o}}),i=Tg(n,(s,o,a)=>{let l=eh(r,s.from);if(l==null)return;/\S/.test(s.text)||(l=0);let c=/^\s*/.exec(s.text)[0],d=qo(n,l);(c!=d||a.fromn.readOnly?!1:(e(n.update(Tg(n,(t,r)=>{r.push({from:t.from,insert:n.facet(yr)})}),{userEvent:"input.indent"})),!0),uh=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(Tg(n,(t,r)=>{let i=/^\s*/.exec(t.text)[0];if(!i)return;let s=Gt(i,n.tabSize),o=0,a=qo(n,Math.max(0,s-ii(n)));for(;o(n.setTabFocusMode(),!0);var e1=({state:n,dispatch:e})=>n.selection.ranges.some(t=>!t.empty)?hh({state:n,dispatch:e}):(e(n.update(n.replaceSelection(" "),{scrollIntoView:!0,userEvent:"input"})),!0),LM=[{key:"Ctrl-b",run:Ax,shift:Ix,preventDefault:!0},{key:"Ctrl-f",run:Cx,shift:Xx},{key:"Ctrl-p",run:Rx,shift:Nx},{key:"Ctrl-n",run:Mx,shift:Bx},{key:"Ctrl-a",run:tM,shift:fM},{key:"Ctrl-e",run:nM,shift:pM},{key:"Ctrl-d",run:jx},{key:"Ctrl-h",run:Pg},{key:"Ctrl-k",run:wM},{key:"Ctrl-Alt-h",run:qx},{key:"Ctrl-o",run:kM},{key:"Ctrl-t",run:$M},{key:"Ctrl-v",run:xg}],DM=[{key:"ArrowLeft",run:Ax,shift:Ix,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:YR,shift:sM,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:JR,shift:hM,preventDefault:!0},{key:"ArrowRight",run:Cx,shift:Xx,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:jR,shift:oM,preventDefault:!0},{mac:"Cmd-ArrowRight",run:eM,shift:uM,preventDefault:!0},{key:"ArrowUp",run:Rx,shift:Nx,preventDefault:!0},{mac:"Cmd-ArrowUp",run:gx,shift:bx},{mac:"Ctrl-ArrowUp",run:fx,shift:px},{key:"ArrowDown",run:Mx,shift:Bx,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Ox,shift:yx},{mac:"Ctrl-ArrowDown",run:xg,shift:mx},{key:"PageUp",run:fx,shift:px},{key:"PageDown",run:xg,shift:mx},{key:"Home",run:KR,shift:dM,preventDefault:!0},{key:"Mod-Home",run:gx,shift:bx},{key:"End",run:HR,shift:cM,preventDefault:!0},{key:"Mod-End",run:Ox,shift:yx},{key:"Enter",run:Sx,shift:Sx},{key:"Mod-a",run:mM},{key:"Backspace",run:Pg,shift:Pg,preventDefault:!0},{key:"Delete",run:jx,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:qx,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:vM,preventDefault:!0},{mac:"Mod-Backspace",run:xM,preventDefault:!0},{mac:"Mod-Delete",run:PM,preventDefault:!0}].concat(LM.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),t1=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:qR,shift:aM},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:GR,shift:lM},{key:"Alt-ArrowUp",run:QM},{key:"Shift-Alt-ArrowUp",run:AM},{key:"Alt-ArrowDown",run:TM},{key:"Shift-Alt-ArrowDown",run:CM},{key:"Mod-Alt-ArrowUp",run:bM},{key:"Mod-Alt-ArrowDown",run:yM},{key:"Escape",run:SM},{key:"Mod-Enter",run:EM},{key:"Alt-l",mac:"Ctrl-l",run:gM},{key:"Mod-i",run:OM,preventDefault:!0},{key:"Mod-[",run:uh},{key:"Mod-]",run:hh},{key:"Mod-Alt-\\",run:RM},{key:"Shift-Mod-k",run:Qg},{key:"Shift-Mod-\\",run:iM},{key:"Mod-/",run:CR},{key:"Alt-A",mac:"Ctrl-A",run:ER},{key:"Ctrl-m",mac:"Shift-Alt-m",run:MM}].concat(DM);function ZM(n,e){let t=n.doc.lineAt(e),r=t.text.slice(0,e-t.from),i=Gt(r,n.tabSize),s=/^\s*$/.test(r)?ii(n):n.tabSize;return" ".repeat(s-i%s)}function n1(n){let e=new Map,t=0,r=0,i=0;for(let a of n.split(` +`,2e3)){if(!a.trim())continue;if(a[0]==" "){t++;continue}let l=a.length-a.trimStart().length;l>0&&r++;let c=l-i;c>=2&&c<=8&&e.set(c,(e.get(c)||0)+1),i=l}if(t>r)return" ";let s=2,o=0;for(let[a,l]of e)(l>o||l==o&&a!t.empty)?hh(n):(n.dispatch(e.changeByRange(t=>{let r=ZM(e,t.head);return{changes:{from:t.head,insert:r},range:z.cursor(t.head+r.length)}}),{scrollIntoView:!0,userEvent:"input"}),!0)}function XM(n){for(let e=1;e<=n.doc.lines;e++)if(/^\d\d/.test(n.doc.line(e).text))return!0;return!1}var r1=[{key:"Enter",run:n=>XM(n.state)&&Kx(n)}],i1=[{key:"Tab",run:IM},{key:"Shift-Tab",run:uh}],s1=[{key:"Tab",run:e1},{key:"Shift-Tab",run:uh}],$l=50,fh=8,zM=!0;function ea(n){zM&&console.log("[asm-tab] "+n)}function ta(n,e){let t=0;for(let r=0;r0&&e.set(n,(e.get(n)||0)+1)}function WM(n,e){let t=[],r=/\S+/g,i;for(;(i=r.exec(n))!==null&&n[i.index]!=";";)t.push(ta(n,i.index));let s=/(^|\s);/.exec(n);s&&Ag(ta(n,s.index+s[1].length),e);let o=t.length&&t[0]==0?t.slice(1):t;o.length>=1&&Ag(o[0],e),o.length>=2&&Ag(o[1],e)}var NM=3;function o1(n,e){let t=n.doc.lineAt(e),r=n.doc.lines,i=(a,l,c,d)=>{let h=0;for(let u=a;u!=l&&h<$l;u+=c){let f=n.doc.line(u);f.text.trim()&&(WM(f.text,d),h++)}return h},s=new Map;return i(t.number+1,Math.min(r,t.number+$l)+1,1,s)e&&(o>i||o==i&&s=0?r:(Math.floor(e/t)+1)*t}function VM(n,e,t){let r=-1,i=0;for(let[s,o]of n)si||o==i&&s>r)&&(r=s,i=o);return r>=0?r:Math.max(0,Math.min(Math.floor((e-1)/t)*t,e-1))}function a1(n,e){let t=n.doc.lineAt(e),r=Math.max(1,t.number-$l),i=Math.min(n.doc.lines,t.number+$l);for(let s=r;s<=i;s++)if(n.doc.line(s).text.includes(" "))return!0;return!1}function l1(n){return"["+[...n.entries()].sort((e,t)=>e[0]-t[0]).map(([e,t])=>`${e}:${t}`).join(" ")+"]"}function FM(n,e){let t=n.doc.lineAt(e),r=ta(t.text,e-t.from),i=a1(n,e),s=i?fh:n.tabSize,o=o1(n,e),a=BM(o,r,s);return ea(`Tab @ line ${t.number} col ${r}: stops(col:freq)=${l1(o)} ${i?"grid=8 (file has tabs)":`grid=${n.tabSize}`} -> target=${a} | line=${JSON.stringify(t.text.slice(0,r))}+CURSOR`),a<=r?null:{from:e,insert:" ".repeat(a-r)}}function YM(n,e){let t=n.doc.lineAt(e),r=e-t.from;if(r==0)return ea(`Backspace @ line ${t.number} col 0: start of line, using default`),null;if(t.text[r-1]==" ")return ea(`Backspace @ line ${t.number} col ${ta(t.text,r)}: deleting one tab char`),{from:e-1,to:e};if(!/^[ \t]+$/.test(t.text.slice(0,r)))return ea(`Backspace @ line ${t.number} col ${ta(t.text,r)}: cursor not in leading whitespace, using default`),null;let i=a1(n,e),s=i?fh:n.tabSize,o=ta(t.text,r),a=o1(n,e),l=VM(a,o,s);if(l>=o)return ea(`Backspace @ line ${t.number} col ${o}: no stop before cursor, using default`),null;let c=e-(o-l);return ea(`Backspace @ line ${t.number} col ${o}: stops(col:freq)=${l1(a)} ${i?"grid=8 (file has tabs)":`grid=${n.tabSize}`} -> deleting cols ${l}..${o} | line=${JSON.stringify(t.text.slice(0,r))}+CURSOR`),{from:c,to:e}}function jM(n){let e=n.state;if(e.selection.ranges.some(r=>!r.empty))return!1;let t=e.changeByRange(r=>{let i=FM(e,r.head);return i?{changes:i,range:z.cursor(r.head+i.insert.length)}:{range:r}});return n.dispatch(t),!0}function UM(n){let e=n.state,t=e.selection.main;if(!t.empty)return!1;let r=YM(e,t.head);return r?(n.dispatch(e.update({changes:r,selection:z.cursor(r.from)})),!0):!1}function c1(n){return[{key:"Tab",run:e=>n()&&jM(e)},{key:"Backspace",run:e=>n()&&UM(e)}]}var qM=new Vt,GM=new Vt,HM=new Vt,KM=new Vt,JM=new Vt,eL=new Vt,tL=new Vt,nL=new Vt,h1="8bitworkshop/editorSettings",d1={tabSize:8,tabsToSpaces:!0,highlightSpecialChars:!1,highlightWhitespace:!1,highlightTrailingWhitespace:!1,closeBrackets:!1,debugHighlightTags:!1,showLineNumbers:!1,showStatusBar:!0};function na(){try{var n=localStorage.getItem(h1);if(n)return Ue(Ue({},d1),JSON.parse(n))}catch(e){}return Ue({},d1)}function rL(n){localStorage.setItem(h1,JSON.stringify(n))}var u1=[[KM,n=>[Me.tabSize.of(n.tabSize),yr.of(" ".repeat(n.tabSize))]],[eL,n=>Sn.of(n.tabsToSpaces?i1:s1)],[qM,n=>n.highlightSpecialChars?ew():[]],[GM,n=>n.highlightWhitespace?dw():[]],[HM,n=>n.highlightTrailingWhitespace?hw():[]],[JM,n=>n.closeBrackets?[ax(),Sn.of([{key:"Backspace",run:dx}])]:[]],[tL,n=>n.debugHighlightTags?ux:[]],[nL,n=>n.showLineNumbers?Xd():[]]];function f1(n){return u1.map(([e,t])=>e.of(t(n)))}var p1=new Set;function m1(n){p1.add(n)}function iL(n){var e=u1.map(([r,i])=>r.reconfigure(i(n)));for(var t of p1)t.dispatch({effects:e})}function g1(){var n=na(),e=!wo();bootbox.dialog({onEscape:!0,title:"Settings",message:`
@@ -38,23 +38,23 @@ Tags : ${s}`,h.style.whiteSpace="pre-wrap",h.style.fontFamily="monospace",h.sty
Internal
`:""} - `,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{n.tabSize=parseInt($("#setting_tabSize").val())||8,n.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),n.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),n.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),n.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),n.closeBrackets=$("#setting_closeBrackets").is(":checked"),n.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(n.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),n.showStatusBar=$("#setting_showStatusBar").is(":checked"),tL(n),nL(n),Cc(n.showStatusBar)}}}})}function ph(){return typeof navigator!="undefined"?navigator.storage:null}function rL(n){var e=n!==void 0?n:ph();return!!(e&&typeof e.persist=="function")}async function iL(n){var e=n!==void 0?n:ph();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(r){console.log("storage.estimate() failed",r)}return{}}async function sL(n){var e=n!==void 0?n:ph(),t={supported:rL(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(i){console.log("storage.persisted() failed",i)}var r=await iL(e);return t.usage=r.usage,t.quota=r.quota,t}async function _g(n){var e=n!==void 0?n:ph(),t=await sL(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(r){console.log("storage.persist() failed",r),t.granted=!1}return t}function oL(n){return n==null&&(n=typeof navigator!="undefined"?navigator.userAgent:""),n?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(n)?"chromium":/Firefox\/|FxiOS\//.test(n)?"firefox":/Safari\//.test(n)?"safari":"other":"other"}function m1(n){if(typeof n!="number"||!isFinite(n))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;n>=1024&&tRequest Local Storage Permissions again.";case"firefox":return"Firefox asks for permission the first time. If you dismissed or blocked that prompt, clear it from the padlock icon in the address bar and try Request Local Storage Permissions again.";case"safari":return"Safari decides on its own, and may delete site data after several days without a visit. Adding this page to your Favorites or Home Screen makes eviction less likely.";default:return"This browser decides on its own whether to keep site data."}}function aL(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+Cg}function b1(n,e){var t=g1(n),r;return n.supported?n.persisted?r=(n.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+Cg:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.

"+O1()+"

"+Cg:r=aL(),t?r+"

"+t:r}function y1(n){return"Your browser ran out of space for this site, so your last edit may not have been saved.

"+g1(n)+" Delete unused projects, or use File > Download All Changes as ZIP to back up your work before it is lost."+(n.supported&&!n.persisted?"

"+O1():"")}var k1=Of(Qf());function Ks(n,e){if(e){var t=Da(e);t!=""&&n.startsWith(t+"/")&&(n=n.substring(t.length+1))}return n}function lL(n,e){var t=Da(e);return t.length>0&&t!="local"?[t+"/"+n,n]:[n]}function cL(n,e,t,r){var i=s=>_y(n,s).map(o=>lL(o,e));return{includes:i(Lc(t,r)),links:i(Dc(t,r))}}async function v1(n,e,t,r,i){for(var s=[],o=new Set([Ks(e,e)]),a=[{path:e,text:t,tool:i(e)}];a.length;){var{path:l,text:c,tool:d}=a.shift(),h=cL(c,l,d,r),u=h.includes.map(D=>({candidates:D,link:!1})).concat(h.links.map(D=>({candidates:D,link:!0})));for(var{candidates:f,link:m}of u)for(var O of f){var S=Ks(O,e);if(o.has(S))break;var x=await n.readFile(O);if(x!=null){o.add(S),s.push({path:O,filename:S,link:m,data:x}),typeof x=="string"&&a.push({path:O,text:x,tool:m?i(O):d});break}}}return s}function w1(n,e){var t={updates:[],buildsteps:[]},r={},i=[],s=O=>{O&&i.indexOf(O)<0&&i.push(O)},o=Ks(n.mainPath,n.mainPath);t.updates.push({path:o,data:n.mainData}),r[o]=n.mainPath;var a=n.getToolForFilename(n.mainPath);s(a);var l=a.startsWith("remote:"),c=Cy(a),d=[],h=[];for(var u of e)(!u.link||l||c)&&(t.updates.push({path:u.filename,data:u.data}),d.push(u.filename),u.link&&c&&h.push(u.filename)),r[u.filename]=u.path;var f={path:o,files:[o].concat(d),platform:n.platformId,tool:a,mainfile:!0};if(h.length&&(f.linkfiles=h),n.symbols&&(f.symbols=n.symbols),n.buildArgs&&(f.buildArgs=n.buildArgs),t.buildsteps.push(f),!l&&!c){for(var u of e)if(u.data&&u.link){var m=n.getToolForFilename(u.filename);s(m),t.updates.push({path:u.filename,data:u.data}),t.buildsteps.push({path:u.filename,files:[u.filename].concat(d),platform:n.platformId,tool:m})}}return n.dataItems&&(t.setitems=n.dataItems),{msg:t,filename2path:r,preloads:i}}function Eg(n){if(n)for(var e in n){var t=n[e];if(t.lines){t.sourcefile=new Rs(t.lines,t.text);var r={};for(var i of t.lines){var s=i.path||"";(r[s]||(r[s]=[])).push(i)}var o=Object.keys(r);if(o.length>1||o.length==1&&o[0]!=""){t.sourcefiles={};for(var s of o)t.sourcefiles[s]=new Rs(r[s],t.text)}}t.asmlines&&(t.assemblyfile=new Rs(t.asmlines,t.text))}}function x1(n,e){if(!n||!n.sourcefiles)return null;var t=yt(Zt(e));for(var r in n.sourcefiles)if(yt(Zt(r))==t)return n.sourcefiles[r];return null}function S1(n,e){var t=x1(n,e);return t?Object.assign({},n,{sourcefile:t}):n}function Rg(n,e,t){if(n){var r=Ks(e,t),i=Zt(r);for(var s in n)if(s==e||s==r)return S1(n[s],r);for(var s in n)if(Zt(s)==i)return S1(n[s],r);for(var s in n){var o=x1(n[s],r);if(o)return Object.assign({},n[s],{sourcefile:o})}}}function P1(n,e){var t=n||[];return t.forEach(r=>r.source="native"),e&&(e.forEach(r=>r.source="linker"),t=t.concat(e)),t.sort((r,i)=>r.start-i.start),t}var mh=class{constructor(e){this.preset_id=Nt(e)}async getRemoteFile(e){let t=await C0(e,"arraybuffer");return t instanceof Uint8Array?wc(e,t):t}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,r=await this.getRemoteFile(t);return r&&console.log("read",t,r.length,"bytes"),r}async setFileData(e,t){}onFileSystemUpdate(e){}};var ra=class{constructor(e,t){this.basefs=e,this.overlayfs=t}async getFileData(e){var t=await this.overlayfs.getFileData(e);return t==null?this.basefs.getFileData(e):t}async setFileData(e,t){return await this.overlayfs.setFileData(e,t),this.basefs.setFileData(e,t)}onFileSystemUpdate(e){this.overlayfs.onFileSystemUpdate(e),this.basefs.onFileSystemUpdate(e)}},gh=class{constructor(e){this.store=e}async getFileData(e){return this.store.getItem(e)}async setFileData(e,t){return this.store.setItem(e,t)}onFileSystemUpdate(e){}};var Oh=class{constructor(e,t,r,i){this.filedata={};this.pendingWorkerMessages=0;this.tools_preloaded={};this.isCompiling=!1;this.filename2path={};this.pendingQueries={};this.queryCounter=0;this.fileProvider={readFile:async e=>{var t,r;return(r=(t=(await this.loadFiles([e]))[0])==null?void 0:t.data)!=null?r:null}};this.worker=e,this.platform_id=t,this.platform=r,this.filesystem=i,e.onmessage=s=>{this.receiveWorkerMessage(s.data)},i.onFileSystemUpdate(async s=>{if(s in this.filedata){var o=await this.filesystem.getFileData(s);o&&(this.updateFile(s,o),this.onFileChanged&&this.onFileChanged(s,o))}})}receiveWorkerMessage(e){if(e&&e.qid!=null){var t=this.pendingQueries[e.qid];t&&(delete this.pendingQueries[e.qid],t(e));return}var r=this.pendingWorkerMessages>1;r?(this.sendBuild(),this.pendingWorkerMessages=1):(this.callbackBuildStatus&&this.callbackBuildStatus(!1),this.isCompiling||(console.log(this.pendingWorkerMessages),console.trace()),this.isCompiling=!1,this.pendingWorkerMessages=0),e&&Ry(e)?this.processBuildResult(e):Xc(e)&&this.processBuildListings(e),this.callbackBuildResult(e)}queryWorker(e){return new Promise(t=>{var r=++this.queryCounter;this.pendingQueries[r]=s=>{clearTimeout(i),t(s)};var i=setTimeout(()=>{delete this.pendingQueries[r],t(null)},15e3);e.qid=r,this.worker.postMessage(e)})}getToolForFilename(e){return this.remoteTool?"remote:"+this.remoteTool:this.platform.getToolForFilename(e)}preloadTool(e){e&&!this.tools_preloaded[e]&&(this.worker.postMessage({preload:e,platform:this.platform_id}),this.tools_preloaded[e]=!0)}loadFileDependencies(e){return v1(this.fileProvider,this.mainPath,e,this.platform_id,t=>this.getToolForFilename(t))}okToSend(){return this.pendingWorkerMessages++==0&&this.mainPath!=null}updateFileInStore(e,t){this.filesystem.setFileData(e,t)}buildWorkerMessage(e){var{msg:t,filename2path:r,preloads:i}=w1({mainPath:this.mainPath,mainData:this.getFile(this.mainPath),platformId:this.platform_id,getToolForFilename:o=>this.getToolForFilename(o),symbols:this.buildSymbols,buildArgs:this.buildArgs,dataItems:this.dataItems},e);Object.assign(this.filename2path,r);for(var s of i)this.preloadTool(s);return t}async loadFiles(e){var t=[],r=(o,a)=>{t.push({path:o,filename:this.stripLocalPath(o),link:!0,data:a})};for(var i of e)if(i in this.filedata){var s=this.filedata[i];s&&r(i,s)}else{var s=await this.filesystem.getFileData(i);s?(this.filedata[i]=s,r(i,s)):this.filedata[i]=null}return t}getFile(e){return this.filedata[e]}iterateFiles(e){for(var t in this.filedata)e(t,this.getFile(t))}sendBuild(){if(!this.mainPath)throw Error("need to call setMainFile first");var e=this.getFile(this.mainPath);if(e instanceof Uint8Array){this.isCompiling=!0,this.receiveWorkerMessage({output:e,errors:[],listings:null,symbolmap:null,params:{}});return}var t=typeof e=="string"?e:"";return this.loadFileDependencies(t).then(r=>{r||(r=[]);var i=this.buildWorkerMessage(r);this.worker.postMessage(i),this.isCompiling=!0})}updateFile(e,t){this.filedata[e]!=t&&(this.updateFileInStore(e,t),this.filedata[e]=t,this.okToSend()&&(this.callbackBuildStatus&&this.callbackBuildStatus(!0),this.sendBuild()))}setMainFile(e){this.mainPath=e,this.callbackBuildStatus&&this.callbackBuildStatus(!0),this.sendBuild()}processBuildListings(e){e.listings&&(this.listings=e.listings,Eg(this.listings))}processBuildResult(e){this.processBuildListings(e),this.processBuildSegments(e)}processBuildSegments(e){var t=this.platform.getMemoryMap&&this.platform.getMemoryMap().main;this.segments=P1(t,e.segments)}getListings(){return this.listings}getListingForFile(e){return Rg(this.getListings(),e,this.mainPath)}stripLocalPath(e){return Ks(e,this.mainPath)}setBuildOverrides(e,t){this.buildSymbols=e,this.buildArgs=t,this.okToSend()&&this.sendBuild()}updateDataItems(e){this.dataItems=e,this.okToSend()&&this.sendBuild()}};function bh(n){var e=k1.default.createInstance({name:"__"+n,version:2});return e}var dL=`$NAME + `,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{n.tabSize=parseInt($("#setting_tabSize").val())||8,n.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),n.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),n.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),n.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),n.closeBrackets=$("#setting_closeBrackets").is(":checked"),n.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(n.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),n.showStatusBar=$("#setting_showStatusBar").is(":checked"),rL(n),iL(n),Cc(n.showStatusBar)}}}})}function ph(){return typeof navigator!="undefined"?navigator.storage:null}function sL(n){var e=n!==void 0?n:ph();return!!(e&&typeof e.persist=="function")}async function oL(n){var e=n!==void 0?n:ph();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(r){console.log("storage.estimate() failed",r)}return{}}async function aL(n){var e=n!==void 0?n:ph(),t={supported:sL(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(i){console.log("storage.persisted() failed",i)}var r=await oL(e);return t.usage=r.usage,t.quota=r.quota,t}async function _g(n){var e=n!==void 0?n:ph(),t=await aL(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(r){console.log("storage.persist() failed",r),t.granted=!1}return t}function lL(n){return n==null&&(n=typeof navigator!="undefined"?navigator.userAgent:""),n?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(n)?"chromium":/Firefox\/|FxiOS\//.test(n)?"firefox":/Safari\//.test(n)?"safari":"other":"other"}function O1(n){if(typeof n!="number"||!isFinite(n))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;n>=1024&&tRequest Local Storage Permissions again.";case"firefox":return"Firefox asks for permission the first time. If you dismissed or blocked that prompt, clear it from the padlock icon in the address bar and try Request Local Storage Permissions again.";case"safari":return"Safari decides on its own, and may delete site data after several days without a visit. Adding this page to your Favorites or Home Screen makes eviction less likely.";default:return"This browser decides on its own whether to keep site data."}}function cL(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+Cg}function S1(n,e){var t=b1(n),r;return n.supported?n.persisted?r=(n.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+Cg:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.

"+y1()+"

"+Cg:r=cL(),t?r+"

"+t:r}function v1(n){return"Your browser ran out of space for this site, so your last edit may not have been saved.

"+b1(n)+" Delete unused projects, or use File > Download All Changes as ZIP to back up your work before it is lost."+(n.supported&&!n.persisted?"

"+y1():"")}var Q1=Of(Qf());function Ks(n,e){if(e){var t=Da(e);t!=""&&n.startsWith(t+"/")&&(n=n.substring(t.length+1))}return n}function dL(n,e){var t=Da(e);return t.length>0&&t!="local"?[t+"/"+n,n]:[n]}function hL(n,e,t,r){var i=s=>Ry(n,s).map(o=>dL(o,e));return{includes:i(Lc(t,r)),links:i(Dc(t,r))}}async function x1(n,e,t,r,i){for(var s=[],o=new Set([Ks(e,e)]),a=[{path:e,text:t,tool:i(e)}];a.length;){var{path:l,text:c,tool:d}=a.shift(),h=hL(c,l,d,r),u=h.includes.map(D=>({candidates:D,link:!1})).concat(h.links.map(D=>({candidates:D,link:!0})));for(var{candidates:f,link:m}of u)for(var O of f){var S=Ks(O,e);if(o.has(S))break;var x=await n.readFile(O);if(x!=null){o.add(S),s.push({path:O,filename:S,link:m,data:x}),typeof x=="string"&&a.push({path:O,text:x,tool:m?i(O):d});break}}}return s}function P1(n,e){var t={updates:[],buildsteps:[]},r={},i=[],s=O=>{O&&i.indexOf(O)<0&&i.push(O)},o=Ks(n.mainPath,n.mainPath);t.updates.push({path:o,data:n.mainData}),r[o]=n.mainPath;var a=n.getToolForFilename(n.mainPath);s(a);var l=a.startsWith("remote:"),c=Ey(a),d=[],h=[];for(var u of e)(!u.link||l||c)&&(t.updates.push({path:u.filename,data:u.data}),d.push(u.filename),u.link&&c&&h.push(u.filename)),r[u.filename]=u.path;var f={path:o,files:[o].concat(d),platform:n.platformId,tool:a,mainfile:!0};if(h.length&&(f.linkfiles=h),n.symbols&&(f.symbols=n.symbols),n.buildArgs&&(f.buildArgs=n.buildArgs),t.buildsteps.push(f),!l&&!c){for(var u of e)if(u.data&&u.link){var m=n.getToolForFilename(u.filename);s(m),t.updates.push({path:u.filename,data:u.data}),t.buildsteps.push({path:u.filename,files:[u.filename].concat(d),platform:n.platformId,tool:m})}}return n.dataItems&&(t.setitems=n.dataItems),{msg:t,filename2path:r,preloads:i}}function Eg(n){if(n)for(var e in n){var t=n[e];if(t.lines){t.sourcefile=new Rs(t.lines,t.text);var r={};for(var i of t.lines){var s=i.path||"";(r[s]||(r[s]=[])).push(i)}var o=Object.keys(r);if(o.length>1||o.length==1&&o[0]!=""){t.sourcefiles={};for(var s of o)t.sourcefiles[s]=new Rs(r[s],t.text)}}t.asmlines&&(t.assemblyfile=new Rs(t.asmlines,t.text))}}function k1(n,e){if(!n||!n.sourcefiles)return null;var t=yt(Zt(e));for(var r in n.sourcefiles)if(yt(Zt(r))==t)return n.sourcefiles[r];return null}function w1(n,e){var t=k1(n,e);return t?Object.assign({},n,{sourcefile:t}):n}function Rg(n,e,t){if(n){var r=Ks(e,t),i=Zt(r);for(var s in n)if(s==e||s==r)return w1(n[s],r);for(var s in n)if(Zt(s)==i)return w1(n[s],r);for(var s in n){var o=k1(n[s],r);if(o)return Object.assign({},n[s],{sourcefile:o})}}}function $1(n,e){var t=n||[];return t.forEach(r=>r.source="native"),e&&(e.forEach(r=>r.source="linker"),t=t.concat(e)),t.sort((r,i)=>r.start-i.start),t}var mh=class{constructor(e){this.preset_id=Nt(e)}async getRemoteFile(e){let t=await C0(e,"arraybuffer");return t instanceof Uint8Array?wc(e,t):t}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,r=await this.getRemoteFile(t);return r&&console.log("read",t,r.length,"bytes"),r}async setFileData(e,t){}onFileSystemUpdate(e){}};var ra=class{constructor(e,t){this.basefs=e,this.overlayfs=t}async getFileData(e){var t=await this.overlayfs.getFileData(e);return t==null?this.basefs.getFileData(e):t}async setFileData(e,t){return await this.overlayfs.setFileData(e,t),this.basefs.setFileData(e,t)}onFileSystemUpdate(e){this.overlayfs.onFileSystemUpdate(e),this.basefs.onFileSystemUpdate(e)}},gh=class{constructor(e){this.store=e}async getFileData(e){return this.store.getItem(e)}async setFileData(e,t){return this.store.setItem(e,t)}onFileSystemUpdate(e){}};var Oh=class{constructor(e,t,r,i){this.filedata={};this.pendingWorkerMessages=0;this.tools_preloaded={};this.isCompiling=!1;this.filename2path={};this.pendingQueries={};this.queryCounter=0;this.fileProvider={readFile:async e=>{var t,r;return(r=(t=(await this.loadFiles([e]))[0])==null?void 0:t.data)!=null?r:null}};this.worker=e,this.platform_id=t,this.platform=r,this.filesystem=i,e.onmessage=s=>{this.receiveWorkerMessage(s.data)},i.onFileSystemUpdate(async s=>{if(s in this.filedata){var o=await this.filesystem.getFileData(s);o&&(this.updateFile(s,o),this.onFileChanged&&this.onFileChanged(s,o))}})}receiveWorkerMessage(e){if(e&&e.qid!=null){var t=this.pendingQueries[e.qid];t&&(delete this.pendingQueries[e.qid],t(e));return}var r=this.pendingWorkerMessages>1;r?(this.sendBuild(),this.pendingWorkerMessages=1):(this.callbackBuildStatus&&this.callbackBuildStatus(!1),this.isCompiling||(console.log(this.pendingWorkerMessages),console.trace()),this.isCompiling=!1,this.pendingWorkerMessages=0),e&&Ly(e)?this.processBuildResult(e):Xc(e)&&this.processBuildListings(e),this.callbackBuildResult(e)}queryWorker(e){return new Promise(t=>{var r=++this.queryCounter;this.pendingQueries[r]=s=>{clearTimeout(i),t(s)};var i=setTimeout(()=>{delete this.pendingQueries[r],t(null)},15e3);e.qid=r,this.worker.postMessage(e)})}getToolForFilename(e){return this.remoteTool?"remote:"+this.remoteTool:this.platform.getToolForFilename(e)}preloadTool(e){e&&!this.tools_preloaded[e]&&(this.worker.postMessage({preload:e,platform:this.platform_id}),this.tools_preloaded[e]=!0)}loadFileDependencies(e){return x1(this.fileProvider,this.mainPath,e,this.platform_id,t=>this.getToolForFilename(t))}okToSend(){return this.pendingWorkerMessages++==0&&this.mainPath!=null}updateFileInStore(e,t){this.filesystem.setFileData(e,t)}buildWorkerMessage(e){var{msg:t,filename2path:r,preloads:i}=P1({mainPath:this.mainPath,mainData:this.getFile(this.mainPath),platformId:this.platform_id,getToolForFilename:o=>this.getToolForFilename(o),symbols:this.buildSymbols,buildArgs:this.buildArgs,dataItems:this.dataItems},e);Object.assign(this.filename2path,r);for(var s of i)this.preloadTool(s);return t}async loadFiles(e){var t=[],r=(o,a)=>{t.push({path:o,filename:this.stripLocalPath(o),link:!0,data:a})};for(var i of e)if(i in this.filedata){var s=this.filedata[i];s&&r(i,s)}else{var s=await this.filesystem.getFileData(i);s?(this.filedata[i]=s,r(i,s)):this.filedata[i]=null}return t}getFile(e){return this.filedata[e]}iterateFiles(e){for(var t in this.filedata)e(t,this.getFile(t))}sendBuild(){if(!this.mainPath)throw Error("need to call setMainFile first");var e=this.getFile(this.mainPath);if(e instanceof Uint8Array){this.isCompiling=!0,this.receiveWorkerMessage({output:e,errors:[],listings:null,symbolmap:null,params:{}});return}var t=typeof e=="string"?e:"";return this.loadFileDependencies(t).then(r=>{r||(r=[]);var i=this.buildWorkerMessage(r);this.worker.postMessage(i),this.isCompiling=!0})}updateFile(e,t){this.filedata[e]!=t&&(this.updateFileInStore(e,t),this.filedata[e]=t,this.okToSend()&&(this.callbackBuildStatus&&this.callbackBuildStatus(!0),this.sendBuild()))}setMainFile(e){this.mainPath=e,this.callbackBuildStatus&&this.callbackBuildStatus(!0),this.sendBuild()}processBuildListings(e){e.listings&&(this.listings=e.listings,Eg(this.listings))}processBuildResult(e){this.processBuildListings(e),this.processBuildSegments(e)}processBuildSegments(e){var t=this.platform.getMemoryMap&&this.platform.getMemoryMap().main;this.segments=$1(t,e.segments)}getListings(){return this.listings}getListingForFile(e){return Rg(this.getListings(),e,this.mainPath)}stripLocalPath(e){return Ks(e,this.mainPath)}setBuildOverrides(e,t){this.buildSymbols=e,this.buildArgs=t,this.okToSend()&&this.sendBuild()}updateDataItems(e){this.dataItems=e,this.okToSend()&&this.sendBuild()}};function bh(n){var e=Q1.default.createInstance({name:"__"+n,version:2});return e}var uL=`$NAME ===== [Open this project in 8bitworkshop](https://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE). -`;function Js(){for(var n={},e=0;e{t()});var e=new firebase.auth.GithubAuthProvider;return e.addScope("repo"),firebase.auth().signInWithPopup(e).then(t=>{this.githubToken=t.credential.accessToken;var r=t.user;this.recreateGithub(),document.cookie="__github_key="+this.githubToken+";path=/;max-age=31536000",console.log("Stored GitHub OAUTH key")})}logout(){return this.githubToken&&this.githubToken.length?firebase.auth().signOut().then(()=>{document.cookie="__github_key=;path=/;max-age=0",this.githubToken=null,this.recreateGithub()}):new Promise((e,t)=>{e()})}isFileIgnored(e){return e=e.toUpperCase(),!!(e.startsWith("LICENSE")||e.startsWith("README")||e.startsWith("."))}async getGithubSession(e){var t=Ql(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=Js()[t.repopath],i=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{i=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),i="main"}console.log("branch =",i);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:i,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let i of r.tree)if(i.type=="tree"&&i.path==t.subtreepath&&i.sha)return t.repo.git.trees(i.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var i={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",i),localStorage.setItem(r,JSON.stringify(i))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(i=>""))).then(r=>{var i;if(i=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),i&&i[1]&&(console.log("main path: '"+i[1]+"'"),t.mainPath=i[1]),i=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),i){if(console.log("platform id: '"+i[1]+"'"),t.platform_id&&!t.platform_id.startsWith(i[1]))throw Error("Platform mismatch: Repository is '"+i[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=i[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(i=>{r=i;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,d=o.size,h=l.encoding,u=l.content;if(l.encoding=="base64"){var f=yc(atob(u)),m=vc(o.path,f);u=m?f:Sc(f)}return l.size!=u.length&&(u=u.slice(0,l.size)),(t||this.store).setItem(c,u)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(i=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,i){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:i,auto_init:!1,license_template:r}).then(l=>{s=l;var c=dL;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var d={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(d)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var i;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(i=s,i.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?i.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):i.repo.git.blobs.create({content:btoa(Q0(o.data)),encoding:"base64"})))}).then(s=>i.repo.git.trees.create({tree:r.map((o,a)=>({path:o.path,mode:"100644",type:"blob",sha:s[a].sha})),base_tree:i.tree.sha})).then(s=>i.repo.git.commits.create({message:t,tree:s.sha,parents:[i.head.object.sha]})).then(s=>i.repo.commits(s.sha).fetch()).then(s=>(i.commit=s,i))}push(e){return e.head.update({sha:e.commit.sha}).then(t=>e)}deleteRepository(e){return this.getGithubSession(e).then(t=>t.repo.remove())}};var Sh=class{constructor(e){this.options=e,this.sampleRate=44100,this.soundData=[],this.tapData=[67,54,52,45,84,65,80,69,45,82,65,87,1,0,0,0,0,0,0,0]}getWAVHeader(){let e=new Uint8Array(44),t=new DataView(e.buffer);return t.setUint32(0,1380533830,!1),t.setUint32(4,44+this.soundData.length,!0),t.setUint32(8,1463899717,!1),t.setUint32(12,1718449184,!1),t.setUint32(16,16,!0),t.setUint16(20,1,!0),t.setUint16(22,1,!0),t.setUint32(24,this.sampleRate,!0),t.setUint32(28,this.sampleRate*2,!0),t.setUint16(32,1,!0),t.setUint16(34,8,!0),t.setUint32(36,1684108385,!1),t.setUint32(40,this.soundData.length,!0),e}addSilence(e){let t=Math.floor(this.sampleRate*e);for(let i=0;i>8&255),this.tapData.push(r>>16&255)}addCycle(e){this.tapData.push(e);let t=Math.floor(this.sampleRate*eo.TAP_LENGTH_IN_SECONDS*e);for(let r=0;r>8&255,this.tapData[18]=e>>16&255,this.tapData[19]=e>>24&255}getTAPData(){return this.updateTAPHeader(),new Uint8Array(this.tapData)}getSoundData(){let e=this.getWAVHeader(),t=new Uint8Array(e.length+this.soundData.length);return t.set(e,0),t.set(new Uint8Array(this.soundData),e.length),t}},Ze=class Ze{constructor(e,t){this.options=t,this.checksum=0,this.data=new Uint8Array(0),this.filenameData=this.makeFilename(e),this.startAddress=0,this.endAddress=0,this.fileType=Ze.FILE_TYPE_NONE,this.waveFile=null}makeFilename(e){let t=[];e=e.toUpperCase();for(let i=0;i0;)this.addByteFrame(t,!0),t-=1,r-=1}addData(){for(let e=0;e>8,!0),this.addByteFrame(this.endAddress&255,!0),this.addByteFrame((this.endAddress&65280)>>8,!0),this.addFilename();for(let t=0;t{var e=T0(window.Module,Array.from(wn()));window.Module=null;var t=_0(e),r=$.param({p:Oe}),i=uL(r,"player.html","r="+t),s='