mirror of
https://github.com/whscullin/apple1js.git
synced 2024-12-27 04:29:29 +00:00
commit
6e49066162
@ -10,6 +10,10 @@ trim_trailing_whitespace = true
|
|||||||
[*.js]
|
[*.js]
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.ts]
|
||||||
|
indent_size = 2
|
||||||
|
quote_type = single
|
||||||
|
|
||||||
[*.html]
|
[*.html]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
208
.eslintrc.json
208
.eslintrc.json
@ -1,20 +1,53 @@
|
|||||||
{
|
{
|
||||||
|
// Global
|
||||||
|
"root": true,
|
||||||
|
"plugins": [
|
||||||
|
"prettier"
|
||||||
|
],
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:prettier/recommended",
|
||||||
|
"plugin:jest/recommended"
|
||||||
|
],
|
||||||
|
"globals": {
|
||||||
|
"tapes": "writable"
|
||||||
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"indent": [
|
|
||||||
2,
|
|
||||||
4
|
|
||||||
],
|
|
||||||
"quotes": [
|
|
||||||
2,
|
|
||||||
"single"
|
|
||||||
],
|
|
||||||
"linebreak-style": [
|
"linebreak-style": [
|
||||||
2,
|
"error",
|
||||||
"unix"
|
"unix"
|
||||||
],
|
],
|
||||||
"semi": [
|
"eqeqeq": [
|
||||||
2,
|
"error",
|
||||||
"always"
|
"smart"
|
||||||
|
],
|
||||||
|
"prefer-const": [
|
||||||
|
"error"
|
||||||
|
],
|
||||||
|
"no-var": "error",
|
||||||
|
"no-use-before-define": "off",
|
||||||
|
"no-console": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"allow": [
|
||||||
|
"info",
|
||||||
|
"warn",
|
||||||
|
"error"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prettier/prettier": "error",
|
||||||
|
// Jest configuration
|
||||||
|
"jest/expect-expect": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"assertFunctionNames": [
|
||||||
|
"expect*",
|
||||||
|
"checkImageData",
|
||||||
|
"testCode"
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"env": {
|
"env": {
|
||||||
@ -22,16 +55,109 @@
|
|||||||
"browser": true,
|
"browser": true,
|
||||||
"es6": true
|
"es6": true
|
||||||
},
|
},
|
||||||
"globals": {
|
"overrides": [
|
||||||
"tapes": true
|
// All overrides matching a file are applied in-order, with the last
|
||||||
|
// taking precedence.
|
||||||
|
//
|
||||||
|
// TypeScript/TSX-specific configuration
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"*.ts",
|
||||||
|
"*.tsx"
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
"@typescript-eslint/eslint-plugin"
|
||||||
|
],
|
||||||
|
"extends": [
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended-requiring-type-checking"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"indent": [
|
||||||
|
"error",
|
||||||
|
2,
|
||||||
|
{
|
||||||
|
"SwitchCase": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// recommended is just "warn"
|
||||||
|
"@typescript-eslint/no-explicit-any": "error",
|
||||||
|
// enforce semicolons at ends of statements
|
||||||
|
"semi": "off",
|
||||||
|
"@typescript-eslint/semi": [
|
||||||
|
"error",
|
||||||
|
"always"
|
||||||
|
],
|
||||||
|
// enforce semicolons to separate members
|
||||||
|
"@typescript-eslint/member-delimiter-style": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"multiline": {
|
||||||
|
"delimiter": "semi",
|
||||||
|
"requireLast": true
|
||||||
|
},
|
||||||
|
"singleline": {
|
||||||
|
"delimiter": "semi",
|
||||||
|
"requireLast": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// definitions must come before uses for variables
|
||||||
|
"@typescript-eslint/no-use-before-define": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"functions": false,
|
||||||
|
"classes": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// no used variables
|
||||||
|
"no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"argsIgnorePattern": "^_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// no redeclaration of classes, members or variables
|
||||||
|
"no-redeclare": "off",
|
||||||
|
"@typescript-eslint/no-redeclare": [
|
||||||
|
"error"
|
||||||
|
],
|
||||||
|
// allow empty interface definitions and empty extends
|
||||||
|
"@typescript-eslint/no-empty-interface": "off",
|
||||||
|
// allow explicit type declaration
|
||||||
|
"@typescript-eslint/no-inferrable-types": "off",
|
||||||
|
// allow some non-string types in templates
|
||||||
|
"@typescript-eslint/restrict-template-expressions": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"allowNumber": true,
|
||||||
|
"allowBoolean": true
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"sourceType": "module"
|
"sourceType": "module",
|
||||||
|
"project": "./tsconfig.json"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"extends": "eslint:recommended",
|
// UI elements
|
||||||
"overrides": [
|
|
||||||
{
|
{
|
||||||
"files": [ "bin/*", "babel.config.js", "webpack.config.js" ],
|
"files": [
|
||||||
|
"js/ui/**.ts"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
// allow non-null assertions since these classes reference the DOM
|
||||||
|
"@typescript-eslint/no-non-null-assertion": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// JS Node configuration
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"bin/*",
|
||||||
|
"babel.config.js",
|
||||||
|
"webpack.config.js"
|
||||||
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"no-console": 0
|
"no-console": 0
|
||||||
},
|
},
|
||||||
@ -40,17 +166,49 @@
|
|||||||
"jquery": false,
|
"jquery": false,
|
||||||
"browser": false
|
"browser": false
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
"files": [ "test/*"],
|
// Test configuration
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"test/**/*"
|
||||||
|
],
|
||||||
"env": {
|
"env": {
|
||||||
"node": true,
|
"jest": true,
|
||||||
"jest": true
|
"jasmine": true,
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"no-console": 0
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
"files": [ "js/entry1.js"],
|
// Entry point configuration
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"js/entry2.ts",
|
||||||
|
"js/entry2e.ts",
|
||||||
|
"jest.config.js"
|
||||||
|
],
|
||||||
"env": {
|
"env": {
|
||||||
"commonjs": true
|
"commonjs": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// Worker configuration
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"workers/*"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"project": "workers/tsconfig.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ignorePatterns": [
|
||||||
|
"coverage/**/*"
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"react": {
|
||||||
|
"pragma": "h",
|
||||||
|
"version": "16"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
3
.github/workflows/nodejs.yml
vendored
3
.github/workflows/nodejs.yml
vendored
@ -4,12 +4,11 @@ on: [push]
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [12.x]
|
node-version: [16.x, 18.x]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
|||||||
.*~
|
.*~
|
||||||
.vscode
|
.vscode
|
||||||
|
.DS_Store
|
||||||
/dist
|
/dist
|
||||||
/node_modules
|
/node_modules
|
||||||
|
@ -10,4 +10,15 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.ts?$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'ts-loader'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
exclude: /node_modules/,
|
||||||
|
}
|
||||||
|
]
|
||||||
};
|
};
|
||||||
|
29
jest.config.js
Normal file
29
jest.config.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
module.exports = {
|
||||||
|
'moduleNameMapper': {
|
||||||
|
'^js/(.*)': '<rootDir>/js/$1',
|
||||||
|
'^test/(.*)': '<rootDir>/test/$1',
|
||||||
|
'\\.css$': 'identity-obj-proxy',
|
||||||
|
'\\.scss$': 'identity-obj-proxy',
|
||||||
|
},
|
||||||
|
'roots': [
|
||||||
|
'js/',
|
||||||
|
'test/',
|
||||||
|
],
|
||||||
|
'testMatch': [
|
||||||
|
'**/?(*.)+(spec|test).+(ts|js|tsx)'
|
||||||
|
],
|
||||||
|
'transform': {
|
||||||
|
'^.+\\.js$': 'babel-jest',
|
||||||
|
'^.+\\.ts$': 'ts-jest',
|
||||||
|
'^.*\\.tsx$': 'ts-jest',
|
||||||
|
},
|
||||||
|
'transformIgnorePatterns': [
|
||||||
|
'/node_modules/(?!(@testing-library/preact/dist/esm)/)',
|
||||||
|
],
|
||||||
|
'coveragePathIgnorePatterns': [
|
||||||
|
'/node_modules/',
|
||||||
|
'/js/roms/',
|
||||||
|
'/test/',
|
||||||
|
],
|
||||||
|
'preset': 'ts-jest',
|
||||||
|
};
|
498
js/apple1.js
498
js/apple1.js
@ -1,498 +0,0 @@
|
|||||||
import MicroModal from 'micromodal';
|
|
||||||
|
|
||||||
import Apple1IO from './apple1io';
|
|
||||||
import CPU6502 from './cpu6502';
|
|
||||||
import Prefs from './prefs';
|
|
||||||
import RAM from './ram';
|
|
||||||
import { TextPage } from './canvas1';
|
|
||||||
import { debug, hup } from './util';
|
|
||||||
|
|
||||||
import Basic from './roms/basic';
|
|
||||||
import Bios from './roms/bios';
|
|
||||||
import Krusader from './roms/krusader';
|
|
||||||
|
|
||||||
import ACI from './cards/aci';
|
|
||||||
|
|
||||||
import { mapKeyEvent, KeyBoard } from './ui/keyboard';
|
|
||||||
|
|
||||||
var DEBUG=false;
|
|
||||||
var TRACE=true;
|
|
||||||
var skidmarks = [];
|
|
||||||
|
|
||||||
var focused = false;
|
|
||||||
var startTime = Date.now();
|
|
||||||
var lastCycles = 0;
|
|
||||||
var renderedFrames = 0, lastFrames = 0;
|
|
||||||
var paused = false;
|
|
||||||
|
|
||||||
var hashtag;
|
|
||||||
var prefs = new Prefs();
|
|
||||||
var runTimer = null;
|
|
||||||
var cpu = new CPU6502();
|
|
||||||
|
|
||||||
var krusader = window.location.hash == '#krusader';
|
|
||||||
|
|
||||||
var raml, ramh, rom, aci, io, text, keyboard;
|
|
||||||
|
|
||||||
// 32K base memory. Should be 0x0f for 4K, 0x1f for 8K, 0x3f for 16K
|
|
||||||
raml = new RAM(0x00, 0x7f);
|
|
||||||
text = new TextPage();
|
|
||||||
text.init();
|
|
||||||
|
|
||||||
aci = new ACI(cpu, { progress: function(val) {
|
|
||||||
document.querySelector('#tape').style.width = val * 100 + 'px';
|
|
||||||
}});
|
|
||||||
io = new Apple1IO(text);
|
|
||||||
|
|
||||||
if (krusader) {
|
|
||||||
ramh = null;
|
|
||||||
rom = new Krusader();
|
|
||||||
} else {
|
|
||||||
// ramh = new RAM(0xe0, 0xef); // 4K ACI memory.
|
|
||||||
ramh = new Basic();
|
|
||||||
rom = new Bios();
|
|
||||||
}
|
|
||||||
keyboard = new KeyBoard('#keyboard', cpu, io, text);
|
|
||||||
|
|
||||||
cpu.addPageHandler(raml);
|
|
||||||
if (ramh) {
|
|
||||||
cpu.addPageHandler(ramh);
|
|
||||||
}
|
|
||||||
cpu.addPageHandler(rom);
|
|
||||||
|
|
||||||
cpu.addPageHandler(aci);
|
|
||||||
cpu.addPageHandler(io);
|
|
||||||
|
|
||||||
var showFPS = false;
|
|
||||||
|
|
||||||
//aci.setData([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88])
|
|
||||||
//aci.setData([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07])
|
|
||||||
//aci.setData([0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef])
|
|
||||||
|
|
||||||
//aci.setData(tapes['BASIC']);
|
|
||||||
aci.setData(window.tapes['Microchess'].tracks);
|
|
||||||
|
|
||||||
// Audio Buffer Source
|
|
||||||
var context;
|
|
||||||
if (typeof window.webkitAudioContext !== 'undefined') {
|
|
||||||
context = new window.webkitAudioContext();
|
|
||||||
} else if (typeof window.AudioContext !== 'undefined') {
|
|
||||||
context = new window.AudioContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function doLoadLocal(files) {
|
|
||||||
context.resume();
|
|
||||||
files = files || document.querySelector('#local_file').files;
|
|
||||||
if (files.length == 1) {
|
|
||||||
var file = files[0];
|
|
||||||
var fileReader = new FileReader();
|
|
||||||
fileReader.onload = function(ev) {
|
|
||||||
context.decodeAudioData(
|
|
||||||
ev.target.result,
|
|
||||||
function(buffer) {
|
|
||||||
var buf = [];
|
|
||||||
var data = buffer.getChannelData(0);
|
|
||||||
var old = (data[0] > 0.25);
|
|
||||||
var last = 0;
|
|
||||||
for (var idx = 1; idx < data.length; idx++) {
|
|
||||||
var current = (data[idx] > 0.25);
|
|
||||||
if (current != old) {
|
|
||||||
var delta = idx - last;
|
|
||||||
buf.push(parseInt(delta / buffer.sampleRate * 1023000));
|
|
||||||
old = current;
|
|
||||||
last = idx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
aci.buffer = buf;
|
|
||||||
MicroModal.close('local-modal');
|
|
||||||
},
|
|
||||||
function() {
|
|
||||||
window.alert('Unable to read tape file: ' + file.name);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
fileReader.readAsArrayBuffer(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateKHz() {
|
|
||||||
var now = Date.now();
|
|
||||||
var ms = now - startTime;
|
|
||||||
var cycles = cpu.cycles();
|
|
||||||
var delta;
|
|
||||||
|
|
||||||
if (showFPS) {
|
|
||||||
delta = renderedFrames - lastFrames;
|
|
||||||
var fps = parseInt(delta/(ms/1000));
|
|
||||||
document.querySelector('#khz').innerHTML = fps + 'fps';
|
|
||||||
} else {
|
|
||||||
delta = cycles - lastCycles;
|
|
||||||
var khz = parseInt(delta/ms);
|
|
||||||
document.querySelector('#khz').innerHTML = khz + 'KHz';
|
|
||||||
}
|
|
||||||
|
|
||||||
startTime = now;
|
|
||||||
lastCycles = cycles;
|
|
||||||
lastFrames = renderedFrames;
|
|
||||||
}
|
|
||||||
|
|
||||||
var loading = false;
|
|
||||||
var throttling = true;
|
|
||||||
var turbotape = false;
|
|
||||||
|
|
||||||
export function toggleFPS() {
|
|
||||||
showFPS = !showFPS;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function toggleSpeed()
|
|
||||||
{
|
|
||||||
throttling = document.querySelector('#speed_toggle').checked;
|
|
||||||
if (runTimer) {
|
|
||||||
run();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setKeyBuffer(text) {
|
|
||||||
io.paste(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setTurboTape(val) {
|
|
||||||
turbotape = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
var _requestAnimationFrame =
|
|
||||||
window.requestAnimationFrame ||
|
|
||||||
window.mozRequestAnimationFrame ||
|
|
||||||
window.webkitRequestAnimationFrame ||
|
|
||||||
window.msRequestAnimationFrame;
|
|
||||||
|
|
||||||
function run(pc) {
|
|
||||||
if (runTimer) {
|
|
||||||
clearInterval(runTimer);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pc) {
|
|
||||||
cpu.setPC(pc);
|
|
||||||
}
|
|
||||||
|
|
||||||
var ival = 30, step = 1023 * ival, stepMax = step;
|
|
||||||
|
|
||||||
if (!throttling) {
|
|
||||||
ival = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var now, last = Date.now();
|
|
||||||
var runFn = function() {
|
|
||||||
now = Date.now();
|
|
||||||
renderedFrames++;
|
|
||||||
if (_requestAnimationFrame) {
|
|
||||||
step = (now - last) * 1023;
|
|
||||||
last = now;
|
|
||||||
if (step > stepMax) {
|
|
||||||
step = stepMax;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (document.location.hash != hashtag) {
|
|
||||||
hashtag = document.location.hash;
|
|
||||||
}
|
|
||||||
if (!loading) {
|
|
||||||
if (DEBUG) {
|
|
||||||
cpu.stepCyclesDebug(TRACE ? 1 : step, function() {
|
|
||||||
var line = cpu.dumpRegisters() + ' ' + cpu.dumpPC();
|
|
||||||
if (TRACE) {
|
|
||||||
debug(line);
|
|
||||||
} else {
|
|
||||||
skidmarks.push();
|
|
||||||
if (skidmarks.length > 256) {
|
|
||||||
skidmarks.shift();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
cpu.stepCycles(step);
|
|
||||||
}
|
|
||||||
text.blit();
|
|
||||||
}
|
|
||||||
if (!paused && _requestAnimationFrame) {
|
|
||||||
_requestAnimationFrame(runFn);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (_requestAnimationFrame) {
|
|
||||||
_requestAnimationFrame(runFn);
|
|
||||||
} else {
|
|
||||||
runTimer = setInterval(runFn, ival);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function stop() {
|
|
||||||
if (runTimer) {
|
|
||||||
clearInterval(runTimer);
|
|
||||||
}
|
|
||||||
runTimer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function reset()
|
|
||||||
{
|
|
||||||
cpu.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
export function loadBinary(bin) {
|
|
||||||
stop();
|
|
||||||
for (var idx = 0; idx < bin.length; idx++) {
|
|
||||||
var pos = bin.start + idx;
|
|
||||||
cpu.write(pos >> 8, pos & 0xff, bin.data[idx]);
|
|
||||||
}
|
|
||||||
run(bin.start);
|
|
||||||
}
|
|
||||||
|
|
||||||
var _key;
|
|
||||||
function _keydown(evt) {
|
|
||||||
if (evt.keyCode === 112) {
|
|
||||||
cpu.reset();
|
|
||||||
} else if (evt.keyCode === 113) {
|
|
||||||
if (document.webkitIsFullScreen) {
|
|
||||||
document.webkitCancelFullScreen();
|
|
||||||
} else {
|
|
||||||
var elem = document.getElementById('display');
|
|
||||||
elem.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
|
|
||||||
}
|
|
||||||
} else if (evt.key === 'Shift') {
|
|
||||||
keyboard.shiftKey(true);
|
|
||||||
} else if (evt.key == 'Control') {
|
|
||||||
keyboard.controlKey(true);
|
|
||||||
} else if (!focused && (!evt.metaKey || evt.ctrlKey)) {
|
|
||||||
evt.preventDefault();
|
|
||||||
|
|
||||||
var key = mapKeyEvent(evt);
|
|
||||||
if (key != 0xff) {
|
|
||||||
if (_key != 0xff) io.keyUp();
|
|
||||||
io.keyDown(key);
|
|
||||||
_key = key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _keyup(evt) {
|
|
||||||
_key = 0xff;
|
|
||||||
|
|
||||||
if (evt.key === 'Shift') {
|
|
||||||
keyboard.shiftKey(false);
|
|
||||||
} else if (evt.key === 'Control') {
|
|
||||||
keyboard.controlKey(false);
|
|
||||||
} else {
|
|
||||||
if (!focused) {
|
|
||||||
io.keyUp();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var _updateScreenTimer = null;
|
|
||||||
|
|
||||||
export function updateScreen() {
|
|
||||||
var green = document.querySelector('#green_screen').checked;
|
|
||||||
var scanlines = document.querySelector('#show_scanlines').checked;
|
|
||||||
|
|
||||||
text.green(green);
|
|
||||||
text.scanlines(scanlines);
|
|
||||||
|
|
||||||
if (!_updateScreenTimer)
|
|
||||||
_updateScreenTimer =
|
|
||||||
setInterval(function() {
|
|
||||||
text.refresh();
|
|
||||||
clearInterval(_updateScreenTimer);
|
|
||||||
_updateScreenTimer = null;
|
|
||||||
}, 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
paused = false;
|
|
||||||
export function pauseRun(b) {
|
|
||||||
if (paused) {
|
|
||||||
run();
|
|
||||||
b.value = 'Pause';
|
|
||||||
} else {
|
|
||||||
stop();
|
|
||||||
b.value = 'Run';
|
|
||||||
}
|
|
||||||
paused = !paused;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function openOptions() {
|
|
||||||
MicroModal.show('options-modal');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function openLoadText(event) {
|
|
||||||
if (event && event.altKey) {
|
|
||||||
MicroModal.show('local-modal');
|
|
||||||
} else {
|
|
||||||
MicroModal.show('input-modal');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function doLoadText() {
|
|
||||||
var text = document.querySelector('#text_input').value;
|
|
||||||
if (!text.indexOf('//Binary')) {
|
|
||||||
var lines = text.split('\n');
|
|
||||||
lines.forEach(function(line) {
|
|
||||||
var parts = line.split(': ');
|
|
||||||
if (parts.length == 2) {
|
|
||||||
var addr;
|
|
||||||
if (parts[0].length > 0) {
|
|
||||||
addr = parseInt(parts[0], 16);
|
|
||||||
}
|
|
||||||
var data = parts[1].split(' ');
|
|
||||||
for (var idx = 0; idx < data.length; idx++) {
|
|
||||||
cpu.write(addr >> 8, addr & 0xff, parseInt(data[idx], 16));
|
|
||||||
addr++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
io.paste(text);
|
|
||||||
}
|
|
||||||
MicroModal.close('input-modal');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleDragOver(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.dataTransfer.dropEffect = 'copy';
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleDrop(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
var dt = event.dataTransfer;
|
|
||||||
if (dt.files.length > 0) {
|
|
||||||
doLoadLocal(dt.files);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleDragEnd(event) {
|
|
||||||
var dt = event.dataTransfer;
|
|
||||||
if (dt.items) {
|
|
||||||
for (var i = 0; i < dt.items.length; i++) {
|
|
||||||
dt.items.remove(i);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
event.dataTransfer.clearData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MicroModal.init();
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
hashtag = document.location.hash;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Input Handling
|
|
||||||
*/
|
|
||||||
|
|
||||||
var canvas = document.getElementById('text');
|
|
||||||
var context = canvas.getContext('2d');
|
|
||||||
|
|
||||||
text.setContext(context);
|
|
||||||
|
|
||||||
window.addEventListener('keydown', _keydown);
|
|
||||||
window.addEventListener('keyup', _keyup);
|
|
||||||
|
|
||||||
window.addEventListener('paste', (event) => {
|
|
||||||
var paste = (event.clipboardData || window.clipboardData).getData('text');
|
|
||||||
setKeyBuffer(paste);
|
|
||||||
event.preventDefault();
|
|
||||||
});
|
|
||||||
|
|
||||||
window.addEventListener('copy', (event) => {
|
|
||||||
event.clipboardData.setData('text/plain', text.getText());
|
|
||||||
event.preventDefault();
|
|
||||||
});
|
|
||||||
|
|
||||||
document.querySelector('.overscan').addEventListener('paste', function(event) {
|
|
||||||
io.paste(event.originalEvent.clipboardData().getData('text/plain'));
|
|
||||||
event.preventDefault();
|
|
||||||
});
|
|
||||||
|
|
||||||
document.querySelectorAll('input,textarea').forEach(function(el) {
|
|
||||||
el.addEventListener('focus', function() { focused = true; });
|
|
||||||
});
|
|
||||||
document.querySelectorAll('input,textarea').forEach(function(el) {
|
|
||||||
el.addEventListener('blur', function() { focused = false; });
|
|
||||||
});
|
|
||||||
keyboard.create();
|
|
||||||
|
|
||||||
if (prefs.havePrefs()) {
|
|
||||||
document.querySelectorAll('input[type=checkbox]').forEach(function(el) {
|
|
||||||
var val = prefs.readPref(el.id);
|
|
||||||
if (val != null)
|
|
||||||
el.checked = JSON.parse(val);
|
|
||||||
});
|
|
||||||
document.querySelectorAll('input[type=checkbox]').forEach(function(el) {
|
|
||||||
el.addEventListener('change', function() {
|
|
||||||
prefs.writePref(el.id, JSON.stringify(el.checked));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
turbotape = document.querySelector('#turbo_tape').checked;
|
|
||||||
|
|
||||||
Object.keys(window.tapes).sort().forEach(function(key) {
|
|
||||||
var option = document.createElement('option');
|
|
||||||
option.value = key;
|
|
||||||
option.text = key;
|
|
||||||
document.querySelector('#tape_select').append(option);
|
|
||||||
});
|
|
||||||
|
|
||||||
function doTapeSelect() {
|
|
||||||
var tapeId = document.querySelector('#tape_select').value;
|
|
||||||
var tape = window.tapes[tapeId];
|
|
||||||
if (!tape) {
|
|
||||||
document.querySelector('#text_input').value = '';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
debug('Loading', tapeId);
|
|
||||||
|
|
||||||
window.location.hash = tapeId;
|
|
||||||
reset();
|
|
||||||
if (turbotape) {
|
|
||||||
var trackIdx = 0, script = '';
|
|
||||||
var parts = tape.script.split('\n');
|
|
||||||
// Ignore part 0 (C100R)
|
|
||||||
// Split part 1 into ranges
|
|
||||||
var ranges = parts[1].split(' ');
|
|
||||||
var idx;
|
|
||||||
for (idx = 0; idx < ranges.length; idx++) {
|
|
||||||
var range = ranges[idx].split('.');
|
|
||||||
var start = parseInt(range[0], 16);
|
|
||||||
var end = parseInt(range[1], 16);
|
|
||||||
var track = tape.tracks[trackIdx];
|
|
||||||
var kdx = 0;
|
|
||||||
for (var jdx = start; jdx <= end; jdx++) {
|
|
||||||
cpu.write(jdx >> 8, jdx & 0xff, track[kdx++]);
|
|
||||||
}
|
|
||||||
trackIdx++;
|
|
||||||
}
|
|
||||||
// Execute parts 2-n
|
|
||||||
for (idx = 2; idx < parts.length; idx++) {
|
|
||||||
if (parts[idx]) {
|
|
||||||
script += parts[idx] + '\n';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
document.querySelector('#text_input').value = script;
|
|
||||||
} else {
|
|
||||||
aci.setData(tape.tracks);
|
|
||||||
document.querySelector('#text_input').value = tape.script;
|
|
||||||
}
|
|
||||||
doLoadText();
|
|
||||||
}
|
|
||||||
document.querySelector('#tape_select').addEventListener('change', doTapeSelect);
|
|
||||||
|
|
||||||
run();
|
|
||||||
setInterval(updateKHz, 1000);
|
|
||||||
updateScreen();
|
|
||||||
|
|
||||||
var tape = hup();
|
|
||||||
if (tape) {
|
|
||||||
openLoadText();
|
|
||||||
document.querySelector('#tape_select').value = tape;
|
|
||||||
doTapeSelect();
|
|
||||||
}
|
|
||||||
});
|
|
536
js/apple1.ts
Normal file
536
js/apple1.ts
Normal file
@ -0,0 +1,536 @@
|
|||||||
|
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided 'as is' without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import MicroModal from 'micromodal';
|
||||||
|
|
||||||
|
import Apple1IO from './apple1io';
|
||||||
|
import CPU6502 from './cpu6502';
|
||||||
|
import Prefs from './prefs';
|
||||||
|
import RAM from './ram';
|
||||||
|
import { TextPage } from './canvas1';
|
||||||
|
import { debug, hup } from './util';
|
||||||
|
|
||||||
|
import Basic from './roms/basic';
|
||||||
|
import Bios from './roms/bios';
|
||||||
|
import Krusader from './roms/krusader';
|
||||||
|
|
||||||
|
import ACI from './cards/aci';
|
||||||
|
|
||||||
|
import { mapKeyEvent, KeyBoard } from './ui/keyboard';
|
||||||
|
import { address, byte } from './types';
|
||||||
|
|
||||||
|
// eslint-disable-next-line prefer-const
|
||||||
|
let DEBUG = false;
|
||||||
|
// eslint-disable-next-line prefer-const
|
||||||
|
let TRACE = true;
|
||||||
|
const skidmarks: string[] = [];
|
||||||
|
|
||||||
|
let focused = false;
|
||||||
|
let startTime = Date.now();
|
||||||
|
let lastCycles = 0;
|
||||||
|
let renderedFrames = 0,
|
||||||
|
lastFrames = 0;
|
||||||
|
let paused = false;
|
||||||
|
|
||||||
|
let hashtag: string | undefined;
|
||||||
|
const prefs = new Prefs();
|
||||||
|
let runTimer: ReturnType<typeof setInterval> | null = null;
|
||||||
|
const cpu = new CPU6502();
|
||||||
|
|
||||||
|
const krusader = window.location.hash === '#krusader';
|
||||||
|
|
||||||
|
let ramh, rom;
|
||||||
|
|
||||||
|
// 32K base memory. Should be 0x0f for 4K, 0x1f for 8K, 0x3f for 16K
|
||||||
|
const raml = new RAM(0x00, 0x7f);
|
||||||
|
const text = new TextPage();
|
||||||
|
text.init();
|
||||||
|
|
||||||
|
const aci = new ACI(cpu, {
|
||||||
|
progress: function (val) {
|
||||||
|
document.querySelector<HTMLElement>('#tape')!.style.width =
|
||||||
|
val * 100 + 'px';
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const io = new Apple1IO(text);
|
||||||
|
|
||||||
|
if (krusader) {
|
||||||
|
ramh = null;
|
||||||
|
rom = new Krusader();
|
||||||
|
} else {
|
||||||
|
// ramh = new RAM(0xe0, 0xef); // 4K ACI memory.
|
||||||
|
ramh = new Basic();
|
||||||
|
rom = new Bios();
|
||||||
|
}
|
||||||
|
const keyboard = new KeyBoard('#keyboard', cpu, io, text);
|
||||||
|
|
||||||
|
cpu.addPageHandler(raml);
|
||||||
|
if (ramh) {
|
||||||
|
cpu.addPageHandler(ramh);
|
||||||
|
}
|
||||||
|
cpu.addPageHandler(rom);
|
||||||
|
|
||||||
|
cpu.addPageHandler(aci);
|
||||||
|
cpu.addPageHandler(io);
|
||||||
|
|
||||||
|
let showFPS = false;
|
||||||
|
|
||||||
|
interface Tape {
|
||||||
|
script: string;
|
||||||
|
tracks: number[][];
|
||||||
|
}
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
tapes: Record<string, Tape>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//aci.setData([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88])
|
||||||
|
//aci.setData([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07])
|
||||||
|
//aci.setData([0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef])
|
||||||
|
|
||||||
|
//aci.setData(tapes['BASIC']);
|
||||||
|
aci.setData(window.tapes['Microchess'].tracks);
|
||||||
|
|
||||||
|
// Audio Buffer Source
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
webkitAudioContext: AudioContext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const AudioContext = window.AudioContext || window.webkitAudioContext;
|
||||||
|
const context = new AudioContext();
|
||||||
|
|
||||||
|
export function doLoadLocal(files: FileList) {
|
||||||
|
context
|
||||||
|
.resume()
|
||||||
|
.then(() => {
|
||||||
|
files =
|
||||||
|
files || document.querySelector<HTMLInputElement>('#local_file')!.files;
|
||||||
|
if (files.length === 1) {
|
||||||
|
const file = files[0];
|
||||||
|
const fileReader = new FileReader();
|
||||||
|
fileReader.onload = function (ev) {
|
||||||
|
context
|
||||||
|
.decodeAudioData(
|
||||||
|
ev.target!.result as ArrayBuffer,
|
||||||
|
function (buffer) {
|
||||||
|
const buf = [];
|
||||||
|
const data = buffer.getChannelData(0);
|
||||||
|
let old = data[0] > 0.25;
|
||||||
|
let last = 0;
|
||||||
|
for (let idx = 1; idx < data.length; idx++) {
|
||||||
|
const current = data[idx] > 0.25;
|
||||||
|
if (current !== old) {
|
||||||
|
const delta = idx - last;
|
||||||
|
buf.push(Math.floor((delta / buffer.sampleRate) * 1023000));
|
||||||
|
old = current;
|
||||||
|
last = idx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aci.buffer = buf;
|
||||||
|
MicroModal.close('local-modal');
|
||||||
|
},
|
||||||
|
function () {
|
||||||
|
window.alert('Unable to read tape file: ' + file.name);
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.catch(console.error);
|
||||||
|
};
|
||||||
|
fileReader.readAsArrayBuffer(file);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(console.error);
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateKHz() {
|
||||||
|
const now = Date.now();
|
||||||
|
const ms = now - startTime;
|
||||||
|
const cycles = cpu.getCycles();
|
||||||
|
let delta: number;
|
||||||
|
|
||||||
|
if (showFPS) {
|
||||||
|
delta = renderedFrames - lastFrames;
|
||||||
|
const fps = Math.floor(delta / (ms / 1000));
|
||||||
|
document.querySelector('#khz')!.innerHTML = fps + 'fps';
|
||||||
|
} else {
|
||||||
|
delta = cycles - lastCycles;
|
||||||
|
const khz = Math.floor(delta / ms);
|
||||||
|
document.querySelector('#khz')!.innerHTML = khz + 'KHz';
|
||||||
|
}
|
||||||
|
|
||||||
|
startTime = now;
|
||||||
|
lastCycles = cycles;
|
||||||
|
lastFrames = renderedFrames;
|
||||||
|
}
|
||||||
|
|
||||||
|
let throttling = true;
|
||||||
|
let turbotape = false;
|
||||||
|
|
||||||
|
export function toggleFPS() {
|
||||||
|
showFPS = !showFPS;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function toggleSpeed() {
|
||||||
|
throttling =
|
||||||
|
document.querySelector<HTMLInputElement>('#speed_toggle')!.checked;
|
||||||
|
if (runTimer) {
|
||||||
|
run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setKeyBuffer(text: string) {
|
||||||
|
io.paste(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setTurboTape(val: boolean) {
|
||||||
|
turbotape = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
function run(pc?: address) {
|
||||||
|
if (runTimer) {
|
||||||
|
clearInterval(runTimer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pc) {
|
||||||
|
cpu.setPC(pc);
|
||||||
|
}
|
||||||
|
|
||||||
|
let ival = 30;
|
||||||
|
let step = 1023 * ival;
|
||||||
|
const stepMax = step;
|
||||||
|
|
||||||
|
if (!throttling) {
|
||||||
|
ival = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let now;
|
||||||
|
let last = Date.now();
|
||||||
|
const runFn = function () {
|
||||||
|
now = Date.now();
|
||||||
|
renderedFrames++;
|
||||||
|
step = (now - last) * 1023;
|
||||||
|
last = now;
|
||||||
|
if (step > stepMax) {
|
||||||
|
step = stepMax;
|
||||||
|
}
|
||||||
|
if (document.location.hash !== hashtag) {
|
||||||
|
hashtag = document.location.hash;
|
||||||
|
}
|
||||||
|
if (DEBUG) {
|
||||||
|
cpu.stepCyclesDebug(TRACE ? 1 : step, function () {
|
||||||
|
const line = JSON.stringify(cpu.getState());
|
||||||
|
if (TRACE) {
|
||||||
|
debug(line);
|
||||||
|
} else {
|
||||||
|
skidmarks.push(line);
|
||||||
|
if (skidmarks.length > 256) {
|
||||||
|
skidmarks.shift();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
cpu.stepCycles(step);
|
||||||
|
}
|
||||||
|
text.blit();
|
||||||
|
if (!paused) {
|
||||||
|
requestAnimationFrame(runFn);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
requestAnimationFrame(runFn);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stop() {
|
||||||
|
if (runTimer) {
|
||||||
|
clearInterval(runTimer);
|
||||||
|
}
|
||||||
|
runTimer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
cpu.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Document {
|
||||||
|
webkitCancelFullScreen: () => void;
|
||||||
|
webkitIsFullScreen: boolean;
|
||||||
|
}
|
||||||
|
interface Element {
|
||||||
|
webkitRequestFullScreen: (options?: unknown) => void;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let _key: byte;
|
||||||
|
function _keydown(evt: KeyboardEvent) {
|
||||||
|
if (evt.keyCode === 112) {
|
||||||
|
cpu.reset();
|
||||||
|
} else if (evt.keyCode === 113) {
|
||||||
|
if (document.webkitIsFullScreen) {
|
||||||
|
document.webkitCancelFullScreen();
|
||||||
|
} else {
|
||||||
|
const elem = document.getElementById('display');
|
||||||
|
elem!.webkitRequestFullScreen();
|
||||||
|
}
|
||||||
|
} else if (evt.key === 'Shift') {
|
||||||
|
keyboard.shiftKey(true);
|
||||||
|
} else if (evt.key === 'Control') {
|
||||||
|
keyboard.controlKey(true);
|
||||||
|
} else if (!focused && (!evt.metaKey || evt.ctrlKey)) {
|
||||||
|
evt.preventDefault();
|
||||||
|
|
||||||
|
const key = mapKeyEvent(evt);
|
||||||
|
if (key !== 0xff) {
|
||||||
|
if (_key !== 0xff) io.keyUp();
|
||||||
|
io.keyDown(key);
|
||||||
|
_key = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _keyup(evt: KeyboardEvent) {
|
||||||
|
_key = 0xff;
|
||||||
|
|
||||||
|
if (evt.key === 'Shift') {
|
||||||
|
keyboard.shiftKey(false);
|
||||||
|
} else if (evt.key === 'Control') {
|
||||||
|
keyboard.controlKey(false);
|
||||||
|
} else {
|
||||||
|
if (!focused) {
|
||||||
|
io.keyUp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let _updateScreenTimer: ReturnType<typeof setInterval> | null = null;
|
||||||
|
|
||||||
|
export function updateScreen() {
|
||||||
|
const green =
|
||||||
|
document.querySelector<HTMLInputElement>('#green_screen')!.checked;
|
||||||
|
const scanlines =
|
||||||
|
document.querySelector<HTMLInputElement>('#show_scanlines')!.checked;
|
||||||
|
|
||||||
|
text.green(green);
|
||||||
|
text.scanlines(scanlines);
|
||||||
|
|
||||||
|
if (!_updateScreenTimer)
|
||||||
|
_updateScreenTimer = setInterval(function () {
|
||||||
|
text.refresh();
|
||||||
|
if (_updateScreenTimer) {
|
||||||
|
clearInterval(_updateScreenTimer);
|
||||||
|
}
|
||||||
|
_updateScreenTimer = null;
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
paused = false;
|
||||||
|
export function pauseRun(b: HTMLButtonElement) {
|
||||||
|
if (paused) {
|
||||||
|
run();
|
||||||
|
b.value = 'Pause';
|
||||||
|
} else {
|
||||||
|
stop();
|
||||||
|
b.value = 'Run';
|
||||||
|
}
|
||||||
|
paused = !paused;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function openOptions() {
|
||||||
|
MicroModal.show('options-modal');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function openLoadText(event?: MouseEvent) {
|
||||||
|
if (event && event.altKey) {
|
||||||
|
MicroModal.show('local-modal');
|
||||||
|
} else {
|
||||||
|
MicroModal.show('input-modal');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function doLoadText() {
|
||||||
|
const text = document.querySelector<HTMLInputElement>('#text_input')!.value;
|
||||||
|
if (!text.indexOf('//Binary')) {
|
||||||
|
const lines = text.split('\n');
|
||||||
|
lines.forEach(function (line) {
|
||||||
|
const parts = line.split(': ');
|
||||||
|
if (parts.length === 2) {
|
||||||
|
let addr: address = 0;
|
||||||
|
if (parts[0].length > 0) {
|
||||||
|
addr = parseInt(parts[0], 16);
|
||||||
|
}
|
||||||
|
const data = parts[1].split(' ');
|
||||||
|
for (let idx = 0; idx < data.length; idx++) {
|
||||||
|
cpu.write(addr >> 8, addr & 0xff, parseInt(data[idx], 16));
|
||||||
|
addr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
io.paste(text);
|
||||||
|
}
|
||||||
|
MicroModal.close('input-modal');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function handleDragOver(event: DragEvent) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.dataTransfer!.dropEffect = 'copy';
|
||||||
|
}
|
||||||
|
|
||||||
|
export function handleDrop(event: DragEvent) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
const dt = event.dataTransfer;
|
||||||
|
if (dt?.files && dt.files.length > 0) {
|
||||||
|
doLoadLocal(dt.files);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function handleDragEnd(event: DragEvent) {
|
||||||
|
const dt = event.dataTransfer;
|
||||||
|
if (dt?.items) {
|
||||||
|
for (let i = 0; i < dt.items.length; i++) {
|
||||||
|
dt.items.remove(i);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
event.dataTransfer?.clearData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MicroModal.init();
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
hashtag = document.location.hash;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Input Handling
|
||||||
|
*/
|
||||||
|
|
||||||
|
const canvas = document.querySelector<HTMLCanvasElement>('#text')!;
|
||||||
|
const context = canvas.getContext('2d')!;
|
||||||
|
|
||||||
|
text.setContext(context);
|
||||||
|
|
||||||
|
window.addEventListener('keydown', _keydown);
|
||||||
|
window.addEventListener('keyup', _keyup);
|
||||||
|
|
||||||
|
window.addEventListener('paste', (event) => {
|
||||||
|
const paste = event.clipboardData!.getData('text/plain');
|
||||||
|
setKeyBuffer(paste);
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener('copy', (event) => {
|
||||||
|
event.clipboardData?.setData('text/plain', text.getText());
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
|
document.querySelectorAll('input,textarea').forEach(function (el) {
|
||||||
|
el.addEventListener('focus', function () {
|
||||||
|
focused = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
document.querySelectorAll('input,textarea').forEach(function (el) {
|
||||||
|
el.addEventListener('blur', function () {
|
||||||
|
focused = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
keyboard.create();
|
||||||
|
|
||||||
|
if (prefs.havePrefs()) {
|
||||||
|
document
|
||||||
|
.querySelectorAll<HTMLInputElement>('input[type=checkbox]')
|
||||||
|
.forEach(function (el) {
|
||||||
|
const val = prefs.readPref(el.id);
|
||||||
|
if (val != null) el.checked = !!JSON.parse(val);
|
||||||
|
});
|
||||||
|
document
|
||||||
|
.querySelectorAll<HTMLInputElement>('input[type=checkbox]')
|
||||||
|
.forEach(function (el) {
|
||||||
|
el.addEventListener('change', function () {
|
||||||
|
prefs.writePref(el.id, JSON.stringify(el.checked));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
turbotape = document.querySelector<HTMLInputElement>('#turbo_tape')!.checked;
|
||||||
|
|
||||||
|
Object.keys(window.tapes)
|
||||||
|
.sort()
|
||||||
|
.forEach(function (key) {
|
||||||
|
const option = document.createElement('option');
|
||||||
|
option.value = key;
|
||||||
|
option.text = key;
|
||||||
|
document.querySelector('#tape_select')!.append(option);
|
||||||
|
});
|
||||||
|
|
||||||
|
function doTapeSelect() {
|
||||||
|
const tapeId =
|
||||||
|
document.querySelector<HTMLInputElement>('#tape_select')!.value;
|
||||||
|
const tape = window.tapes[tapeId];
|
||||||
|
if (!tape) {
|
||||||
|
document.querySelector<HTMLInputElement>('#text_input')!.value = '';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
debug('Loading', tapeId);
|
||||||
|
|
||||||
|
window.location.hash = tapeId;
|
||||||
|
reset();
|
||||||
|
if (turbotape) {
|
||||||
|
let trackIdx = 0,
|
||||||
|
script = '';
|
||||||
|
const parts = tape.script.split('\n');
|
||||||
|
// Ignore part 0 (C100R)
|
||||||
|
// Split part 1 into ranges
|
||||||
|
const ranges = parts[1].split(' ');
|
||||||
|
let idx;
|
||||||
|
for (idx = 0; idx < ranges.length; idx++) {
|
||||||
|
const range = ranges[idx].split('.');
|
||||||
|
const start = parseInt(range[0], 16);
|
||||||
|
const end = parseInt(range[1], 16);
|
||||||
|
const track = tape.tracks[trackIdx];
|
||||||
|
let kdx = 0;
|
||||||
|
for (let jdx = start; jdx <= end; jdx++) {
|
||||||
|
cpu.write(jdx >> 8, jdx & 0xff, track[kdx++]);
|
||||||
|
}
|
||||||
|
trackIdx++;
|
||||||
|
}
|
||||||
|
// Execute parts 2-n
|
||||||
|
for (idx = 2; idx < parts.length; idx++) {
|
||||||
|
if (parts[idx]) {
|
||||||
|
script += parts[idx] + '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.querySelector<HTMLInputElement>('#text_input')!.value = script;
|
||||||
|
} else {
|
||||||
|
aci.setData(tape.tracks);
|
||||||
|
document.querySelector<HTMLInputElement>('#text_input')!.value =
|
||||||
|
tape.script;
|
||||||
|
}
|
||||||
|
doLoadText();
|
||||||
|
}
|
||||||
|
document
|
||||||
|
.querySelector('#tape_select')!
|
||||||
|
.addEventListener('change', doTapeSelect);
|
||||||
|
|
||||||
|
run();
|
||||||
|
setInterval(updateKHz, 1000);
|
||||||
|
updateScreen();
|
||||||
|
|
||||||
|
const tape = hup();
|
||||||
|
if (tape) {
|
||||||
|
openLoadText();
|
||||||
|
document.querySelector<HTMLInputElement>('#tape_select')!.value = tape;
|
||||||
|
doTapeSelect();
|
||||||
|
}
|
||||||
|
});
|
@ -1,97 +0,0 @@
|
|||||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinsteel.com>
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
* the above copyright notice appear in all copies and that both that
|
|
||||||
* copyright notice and this permission notice appear in supporting
|
|
||||||
* documentation. No representations are made about the suitability of this
|
|
||||||
* software for any purpose. It is provided "as is" without express or
|
|
||||||
* implied warranty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
export default function Apple1IO(text) {
|
|
||||||
var _key = 0;
|
|
||||||
var _keyReady = false;
|
|
||||||
|
|
||||||
var _displayReady = false;
|
|
||||||
var _nextDSP = 0;
|
|
||||||
var _buffer = [];
|
|
||||||
|
|
||||||
var LOC = {
|
|
||||||
KBD: 0x10,
|
|
||||||
KBDRDY: 0x011,
|
|
||||||
DSP: 0x12,
|
|
||||||
DSPCTL: 0x13
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
|
||||||
start: function() { return 0xd0; },
|
|
||||||
end: function() { return 0xd0; },
|
|
||||||
read: function(page, off) {
|
|
||||||
var result = 0;
|
|
||||||
off &= 0x13;
|
|
||||||
switch (off) {
|
|
||||||
case LOC.KBD:
|
|
||||||
// Keyboard
|
|
||||||
if (_buffer.length) {
|
|
||||||
result = _buffer.shift().toUpperCase().charCodeAt(0) & 0x7f;
|
|
||||||
_keyReady = (_buffer.length > 0);
|
|
||||||
} else {
|
|
||||||
result = _key;
|
|
||||||
_keyReady = false;
|
|
||||||
}
|
|
||||||
result |= 0x80;
|
|
||||||
break;
|
|
||||||
case LOC.KBDRDY:
|
|
||||||
result = _keyReady ? 0x80 : 0x00;
|
|
||||||
break;
|
|
||||||
case LOC.DSP:
|
|
||||||
// Display
|
|
||||||
// result = (Math.random() > 0.5) ? 0x80 : 0x00;
|
|
||||||
result = (Date.now() > _nextDSP) ? 0x00 : 0x80;
|
|
||||||
break;
|
|
||||||
case LOC.DSPCTL:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
write: function(page, off, val) {
|
|
||||||
off &= 0x13;
|
|
||||||
switch (off) {
|
|
||||||
case LOC.KBD:
|
|
||||||
break;
|
|
||||||
case LOC.KBDRDY:
|
|
||||||
break;
|
|
||||||
case LOC.DSP:
|
|
||||||
// Display
|
|
||||||
if (_displayReady) {
|
|
||||||
text.write(val);
|
|
||||||
}
|
|
||||||
_nextDSP = Date.now() + ((_buffer.length > 0) ? 0 : 17);
|
|
||||||
break;
|
|
||||||
case LOC.DSPCTL:
|
|
||||||
// Don't pretend we care what the value was...
|
|
||||||
_displayReady = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
reset: function apple1io_reset() {
|
|
||||||
text.clear();
|
|
||||||
_buffer = [];
|
|
||||||
_keyReady = false;
|
|
||||||
_displayReady = false;
|
|
||||||
},
|
|
||||||
keyUp: function apple1io_keyUp() {
|
|
||||||
},
|
|
||||||
keyDown: function apple1io_keyDown(key) {
|
|
||||||
_key = key;
|
|
||||||
_keyReady = true;
|
|
||||||
},
|
|
||||||
paste: function apple1io_paste(buffer) {
|
|
||||||
buffer = buffer.replace(/\/\/.*\n/g, '');
|
|
||||||
buffer = buffer.replace(/\n/g, '\r');
|
|
||||||
_buffer = buffer.split('');
|
|
||||||
_keyReady = true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
106
js/apple1io.ts
Normal file
106
js/apple1io.ts
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { TextPage } from './canvas1';
|
||||||
|
import type { byte } from './types';
|
||||||
|
|
||||||
|
const LOC = {
|
||||||
|
KBD: 0x10,
|
||||||
|
KBDRDY: 0x011,
|
||||||
|
DSP: 0x12,
|
||||||
|
DSPCTL: 0x13,
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export default class Apple1IO {
|
||||||
|
_key = 0;
|
||||||
|
_keyReady = false;
|
||||||
|
|
||||||
|
_displayReady = false;
|
||||||
|
_nextDSP = 0;
|
||||||
|
_buffer: string[] = [];
|
||||||
|
|
||||||
|
constructor(private text: TextPage) {}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return 0xd0;
|
||||||
|
}
|
||||||
|
end() {
|
||||||
|
return 0xd0;
|
||||||
|
}
|
||||||
|
read(_page: byte, off: byte): byte {
|
||||||
|
let result = 0;
|
||||||
|
off &= 0x13;
|
||||||
|
switch (off) {
|
||||||
|
case LOC.KBD:
|
||||||
|
{
|
||||||
|
// Keyboard
|
||||||
|
const key = this._buffer.shift();
|
||||||
|
if (key != null) {
|
||||||
|
result = key.toUpperCase().charCodeAt(0) & 0x7f;
|
||||||
|
this._keyReady = this._buffer.length > 0;
|
||||||
|
} else {
|
||||||
|
result = this._key;
|
||||||
|
this._keyReady = false;
|
||||||
|
}
|
||||||
|
result |= 0x80;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LOC.KBDRDY:
|
||||||
|
result = this._keyReady ? 0x80 : 0x00;
|
||||||
|
break;
|
||||||
|
case LOC.DSP:
|
||||||
|
// Display
|
||||||
|
// result = (Math.random() > 0.5) ? 0x80 : 0x00;
|
||||||
|
result = Date.now() > this._nextDSP ? 0x00 : 0x80;
|
||||||
|
break;
|
||||||
|
case LOC.DSPCTL:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
write(_page: byte, off: byte, val: byte): void {
|
||||||
|
off &= 0x13;
|
||||||
|
switch (off) {
|
||||||
|
case LOC.KBD:
|
||||||
|
break;
|
||||||
|
case LOC.KBDRDY:
|
||||||
|
break;
|
||||||
|
case LOC.DSP:
|
||||||
|
// Display
|
||||||
|
if (this._displayReady) {
|
||||||
|
this.text.write(val);
|
||||||
|
}
|
||||||
|
this._nextDSP = Date.now() + (this._buffer.length > 0 ? 0 : 17);
|
||||||
|
break;
|
||||||
|
case LOC.DSPCTL:
|
||||||
|
// Don't pretend we care what the value was...
|
||||||
|
this._displayReady = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
reset() {
|
||||||
|
this.text.clear();
|
||||||
|
this._buffer = [];
|
||||||
|
this._keyReady = false;
|
||||||
|
this._displayReady = false;
|
||||||
|
}
|
||||||
|
keyUp() {}
|
||||||
|
keyDown(key: byte) {
|
||||||
|
this._key = key;
|
||||||
|
this._keyReady = true;
|
||||||
|
}
|
||||||
|
paste(buffer: string) {
|
||||||
|
buffer = buffer.replace(/\/\/.*\n/g, '');
|
||||||
|
buffer = buffer.replace(/\n/g, '\r');
|
||||||
|
this._buffer = buffer.split('');
|
||||||
|
this._keyReady = true;
|
||||||
|
}
|
||||||
|
}
|
110
js/base64.js
110
js/base64.js
@ -1,110 +0,0 @@
|
|||||||
export function base64_encode (data) {
|
|
||||||
// Twacked by Will Scullin to handle arrays of "bytes"
|
|
||||||
|
|
||||||
// http://kevin.vanzonneveld.net
|
|
||||||
// + original by: Tyler Akins (http://rumkin.com)
|
|
||||||
// + improved by: Bayron Guevara
|
|
||||||
// + improved by: Thunder.m
|
|
||||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
||||||
// + bugfixed by: Pellentesque Malesuada
|
|
||||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
||||||
// - depends on: utf8_encode
|
|
||||||
// * example 1: base64_encode('Kevin van Zonneveld');
|
|
||||||
// * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
|
|
||||||
|
|
||||||
// mozilla has this native
|
|
||||||
// - but breaks in 2.0.0.12!
|
|
||||||
//if (typeof this.window['atob'] == 'function') {
|
|
||||||
// return atob(data);
|
|
||||||
//}
|
|
||||||
|
|
||||||
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
||||||
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc='', tmp_arr = [];
|
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
do { // pack three octets into four hexets
|
|
||||||
o1 = data[i++];
|
|
||||||
o2 = data[i++];
|
|
||||||
o3 = data[i++];
|
|
||||||
|
|
||||||
bits = o1<<16 | o2<<8 | o3;
|
|
||||||
|
|
||||||
h1 = bits>>18 & 0x3f;
|
|
||||||
h2 = bits>>12 & 0x3f;
|
|
||||||
h3 = bits>>6 & 0x3f;
|
|
||||||
h4 = bits & 0x3f;
|
|
||||||
|
|
||||||
// use hexets to index into b64, and append result to encoded string
|
|
||||||
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
|
|
||||||
} while (i < data.length);
|
|
||||||
|
|
||||||
enc = tmp_arr.join('');
|
|
||||||
|
|
||||||
switch (data.length % 3) {
|
|
||||||
case 1:
|
|
||||||
enc = enc.slice(0, -2) + '==';
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
enc = enc.slice(0, -1) + '=';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return enc;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function base64_decode(data) {
|
|
||||||
// Twacked by Will Scullin to handle arrays of "bytes"
|
|
||||||
|
|
||||||
// http://kevin.vanzonneveld.net
|
|
||||||
// + original by: Tyler Akins (http://rumkin.com)
|
|
||||||
// + improved by: Thunder.m
|
|
||||||
// + input by: Aman Gupta
|
|
||||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
||||||
// + bugfixed by: Onno Marsman
|
|
||||||
// + bugfixed by: Pellentesque Malesuada
|
|
||||||
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
||||||
// + input by: Brett Zamir (http://brett-zamir.me)
|
|
||||||
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
||||||
// - depends on: utf8_decode
|
|
||||||
// * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
|
|
||||||
// * returns 1: 'Kevin van Zonneveld'
|
|
||||||
|
|
||||||
// mozilla has this native
|
|
||||||
// - but breaks in 2.0.0.12!
|
|
||||||
//if (typeof this.window['btoa'] == 'function') {
|
|
||||||
// return btoa(data);
|
|
||||||
//}
|
|
||||||
|
|
||||||
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
||||||
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, tmp_arr = [];
|
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
do { // unpack four hexets into three octets using index points in b64
|
|
||||||
h1 = b64.indexOf(data.charAt(i++));
|
|
||||||
h2 = b64.indexOf(data.charAt(i++));
|
|
||||||
h3 = b64.indexOf(data.charAt(i++));
|
|
||||||
h4 = b64.indexOf(data.charAt(i++));
|
|
||||||
|
|
||||||
bits = h1<<18 | h2<<12 | h3<<6 | h4;
|
|
||||||
|
|
||||||
o1 = bits>>16 & 0xff;
|
|
||||||
o2 = bits>>8 & 0xff;
|
|
||||||
o3 = bits & 0xff;
|
|
||||||
|
|
||||||
tmp_arr[ac++] = o1;
|
|
||||||
if (h3 != 64) {
|
|
||||||
tmp_arr[ac++] = o2;
|
|
||||||
}
|
|
||||||
if (h4 != 64) {
|
|
||||||
tmp_arr[ac++] = o3;
|
|
||||||
}
|
|
||||||
} while (i < data.length);
|
|
||||||
|
|
||||||
return tmp_arr;
|
|
||||||
}
|
|
172
js/base64.ts
Normal file
172
js/base64.ts
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
import { memory } from './types';
|
||||||
|
|
||||||
|
const B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||||
|
|
||||||
|
/** Encode an array of bytes in base64. */
|
||||||
|
export function base64_encode(data: null | undefined): undefined;
|
||||||
|
export function base64_encode(data: memory): string;
|
||||||
|
export function base64_encode(
|
||||||
|
data: memory | null | undefined,
|
||||||
|
): string | undefined {
|
||||||
|
// Twacked by Will Scullin to handle arrays of 'bytes'
|
||||||
|
|
||||||
|
// http://kevin.vanzonneveld.net
|
||||||
|
// + original by: Tyler Akins (http://rumkin.com)
|
||||||
|
// + improved by: Bayron Guevara
|
||||||
|
// + improved by: Thunder.m
|
||||||
|
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||||
|
// + bugfixed by: Pellentesque Malesuada
|
||||||
|
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||||
|
// - depends on: utf8_encode
|
||||||
|
// * example 1: base64_encode('Kevin van Zonneveld');
|
||||||
|
// * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
|
||||||
|
|
||||||
|
// mozilla has this native
|
||||||
|
// - but breaks in 2.0.0.12!
|
||||||
|
//if (typeof this.window['atob'] == 'function') {
|
||||||
|
// return atob(data);
|
||||||
|
//}
|
||||||
|
|
||||||
|
let o1,
|
||||||
|
o2,
|
||||||
|
o3,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
bits,
|
||||||
|
i = 0,
|
||||||
|
ac = 0,
|
||||||
|
enc = '';
|
||||||
|
const tmp_arr = [];
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
// pack three octets into four hexets
|
||||||
|
o1 = data[i++];
|
||||||
|
o2 = data[i++];
|
||||||
|
o3 = data[i++];
|
||||||
|
|
||||||
|
bits = (o1 << 16) | (o2 << 8) | o3;
|
||||||
|
|
||||||
|
h1 = (bits >> 18) & 0x3f;
|
||||||
|
h2 = (bits >> 12) & 0x3f;
|
||||||
|
h3 = (bits >> 6) & 0x3f;
|
||||||
|
h4 = bits & 0x3f;
|
||||||
|
|
||||||
|
// use hexets to index into b64, and append result to encoded string
|
||||||
|
tmp_arr[ac++] =
|
||||||
|
B64.charAt(h1) + B64.charAt(h2) + B64.charAt(h3) + B64.charAt(h4);
|
||||||
|
} while (i < data.length);
|
||||||
|
|
||||||
|
enc = tmp_arr.join('');
|
||||||
|
|
||||||
|
switch (data.length % 3) {
|
||||||
|
case 1:
|
||||||
|
enc = enc.slice(0, -2) + '==';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
enc = enc.slice(0, -1) + '=';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return enc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns undefined if the input is null or undefined. */
|
||||||
|
export function base64_decode(data: null | undefined): undefined;
|
||||||
|
/** Returns an array of bytes from the given base64-encoded string. */
|
||||||
|
export function base64_decode(data: string): memory;
|
||||||
|
/** Returns an array of bytes from the given base64-encoded string. */
|
||||||
|
export function base64_decode(
|
||||||
|
data: string | null | undefined,
|
||||||
|
): memory | undefined {
|
||||||
|
// Twacked by Will Scullin to handle arrays of 'bytes'
|
||||||
|
|
||||||
|
// http://kevin.vanzonneveld.net
|
||||||
|
// + original by: Tyler Akins (http://rumkin.com)
|
||||||
|
// + improved by: Thunder.m
|
||||||
|
// + input by: Aman Gupta
|
||||||
|
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||||
|
// + bugfixed by: Onno Marsman
|
||||||
|
// + bugfixed by: Pellentesque Malesuada
|
||||||
|
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||||
|
// + input by: Brett Zamir (http://brett-zamir.me)
|
||||||
|
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||||
|
// - depends on: utf8_decode
|
||||||
|
// * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
|
||||||
|
// * returns 1: 'Kevin van Zonneveld'
|
||||||
|
|
||||||
|
// mozilla has this native
|
||||||
|
// - but breaks in 2.0.0.12!
|
||||||
|
//if (typeof this.window['btoa'] == 'function') {
|
||||||
|
// return btoa(data);
|
||||||
|
//}
|
||||||
|
|
||||||
|
let o1,
|
||||||
|
o2,
|
||||||
|
o3,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
bits,
|
||||||
|
i = 0,
|
||||||
|
ac = 0;
|
||||||
|
const tmp_arr = [];
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
// unpack four hexets into three octets using index points in B64
|
||||||
|
h1 = B64.indexOf(data.charAt(i++));
|
||||||
|
h2 = B64.indexOf(data.charAt(i++));
|
||||||
|
h3 = B64.indexOf(data.charAt(i++));
|
||||||
|
h4 = B64.indexOf(data.charAt(i++));
|
||||||
|
|
||||||
|
bits = (h1 << 18) | (h2 << 12) | (h3 << 6) | h4;
|
||||||
|
|
||||||
|
o1 = (bits >> 16) & 0xff;
|
||||||
|
o2 = (bits >> 8) & 0xff;
|
||||||
|
o3 = bits & 0xff;
|
||||||
|
|
||||||
|
tmp_arr[ac++] = o1;
|
||||||
|
if (h3 !== 64) {
|
||||||
|
tmp_arr[ac++] = o2;
|
||||||
|
}
|
||||||
|
if (h4 !== 64) {
|
||||||
|
tmp_arr[ac++] = o3;
|
||||||
|
}
|
||||||
|
} while (i < data.length);
|
||||||
|
|
||||||
|
return new Uint8Array(tmp_arr);
|
||||||
|
}
|
||||||
|
|
||||||
|
const DATA_URL_PREFIX = 'data:application/octet-stream;base64,';
|
||||||
|
|
||||||
|
export function base64_json_parse(json: string): unknown {
|
||||||
|
const reviver = (_key: string, value: unknown) => {
|
||||||
|
if (typeof value === 'string' && value.startsWith(DATA_URL_PREFIX)) {
|
||||||
|
return base64_decode(value.slice(DATA_URL_PREFIX.length));
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.parse(json, reviver);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function base64_json_stringify(json: unknown) {
|
||||||
|
const replacer = (_key: string, value: unknown) => {
|
||||||
|
if (value instanceof Uint8Array) {
|
||||||
|
return DATA_URL_PREFIX + base64_encode(value);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
return JSON.stringify(json, replacer);
|
||||||
|
}
|
221
js/canvas1.js
221
js/canvas1.js
@ -1,221 +0,0 @@
|
|||||||
/* Copyright 2010-2019Will Scullin <scullin@scullinsteel.com>
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
* the above copyright notice appear in all copies and that both that
|
|
||||||
* copyright notice and this permission notice appear in supporting
|
|
||||||
* documentation. No representations are made about the suitability of this
|
|
||||||
* software for any purpose. It is provided "as is" without express or
|
|
||||||
* implied warranty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { charset } from './roms/apple1char';
|
|
||||||
|
|
||||||
/*
|
|
||||||
0: A9 9 AA 20 EF FF E8 8A 4C 2 0
|
|
||||||
0R
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Text Page Drawing
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function TextPage()
|
|
||||||
{
|
|
||||||
var _page;
|
|
||||||
var _context;
|
|
||||||
|
|
||||||
var _buffer = [];
|
|
||||||
var _greenMode = false;
|
|
||||||
var _scanlines = false;
|
|
||||||
|
|
||||||
var _black = [0x00,0x00,0x00];
|
|
||||||
var _white = [0xee,0xff,0xff];
|
|
||||||
var _green = [0x00,0xff,0x80];
|
|
||||||
var _blinking = 0;
|
|
||||||
|
|
||||||
var _row = 0;
|
|
||||||
var _col = 0;
|
|
||||||
var _dirty = false;
|
|
||||||
|
|
||||||
function _init() {
|
|
||||||
_buffer = [];
|
|
||||||
for (var row = 0; row < 24; row++) {
|
|
||||||
_buffer[row] = [];
|
|
||||||
for (var col = 0; col < 40; col++) {
|
|
||||||
_buffer[row][col] = col % 2 ? 0x00 : 0xff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_dirty = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
_init();
|
|
||||||
|
|
||||||
return {
|
|
||||||
init: function() {
|
|
||||||
var self = this;
|
|
||||||
window.setInterval(function() {
|
|
||||||
_blinking = (_blinking + 1) % 3;
|
|
||||||
self._blink();
|
|
||||||
_dirty = true;
|
|
||||||
}, 333);
|
|
||||||
},
|
|
||||||
|
|
||||||
write: function(val) {
|
|
||||||
var col;
|
|
||||||
val &= 0x7f;
|
|
||||||
|
|
||||||
if (this.transcript) {
|
|
||||||
if (val == 0xd) {
|
|
||||||
this.transcript += '\n';
|
|
||||||
} else if (val >= 0x20) {
|
|
||||||
if (val >= 0x60) {
|
|
||||||
val &= 0x5f;
|
|
||||||
}
|
|
||||||
this.transcript += String.fromCharCode(val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val == 0x0d) {
|
|
||||||
for (col = _col; col < 40; col++) {
|
|
||||||
_buffer[_row][col] = 0x20;
|
|
||||||
}
|
|
||||||
_col = 0;
|
|
||||||
_row++;
|
|
||||||
} else {
|
|
||||||
_buffer[_row][_col] = val;
|
|
||||||
_col++;
|
|
||||||
if (_col > 39) {
|
|
||||||
_col = 0;
|
|
||||||
_row++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_row > 23) {
|
|
||||||
_row = 23;
|
|
||||||
_buffer.shift();
|
|
||||||
_buffer.push([]);
|
|
||||||
for (col = 0; col < 40; col++) {
|
|
||||||
_buffer[_row][col] = 0x20;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_buffer[_row][_col] = 0x00;
|
|
||||||
this.refresh();
|
|
||||||
},
|
|
||||||
writeAt: function(row, col, val) {
|
|
||||||
_buffer[row][col] = val;
|
|
||||||
var data = _page.data, fore, back, color;
|
|
||||||
var off = (col * 14 + row * 560 * 8 * 2) * 4;
|
|
||||||
|
|
||||||
fore = _greenMode ? _green : _white;
|
|
||||||
back = _black;
|
|
||||||
var char = 0;
|
|
||||||
|
|
||||||
if (!val) {
|
|
||||||
if (_blinking) {
|
|
||||||
fore = _black;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
char = val & 0x1f;
|
|
||||||
char |= val & 0x40 ? 0 : 0x20;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var jdx = 0; jdx < 8; jdx++) {
|
|
||||||
var b = charset[char * 8 + jdx];
|
|
||||||
for (var idx = 0; idx < 7; idx += 1) {
|
|
||||||
b <<= 1;
|
|
||||||
color = (b & 0x80) ? fore : back;
|
|
||||||
var c0 = color[0], c1 = color[1], c2 = color[2];
|
|
||||||
data[off + 0] = data[off + 4] = c0;
|
|
||||||
data[off + 1] = data[off + 5] = c1;
|
|
||||||
data[off + 2] = data[off + 6] = c2;
|
|
||||||
if (!_scanlines) {
|
|
||||||
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0;
|
|
||||||
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1;
|
|
||||||
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2;
|
|
||||||
} else {
|
|
||||||
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1;
|
|
||||||
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1;
|
|
||||||
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1;
|
|
||||||
}
|
|
||||||
off += 8;
|
|
||||||
}
|
|
||||||
off += 546 * 4 + 560 * 4;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_blink: function() {
|
|
||||||
for (var row = 0; row < 24; row++) {
|
|
||||||
for (var col = 0; col < 40; col++) {
|
|
||||||
var val = _buffer[row][col];
|
|
||||||
if (!val) {
|
|
||||||
this.writeAt(row, col, val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_dirty = true;
|
|
||||||
},
|
|
||||||
refresh: function() {
|
|
||||||
for (var row = 0; row < 24; row++) {
|
|
||||||
for (var col = 0; col < 40; col++) {
|
|
||||||
this.writeAt(row, col, _buffer[row][col]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_dirty = true;
|
|
||||||
},
|
|
||||||
green: function(on) {
|
|
||||||
_greenMode = on;
|
|
||||||
this.refresh();
|
|
||||||
},
|
|
||||||
scanlines: function(on) {
|
|
||||||
_scanlines = on;
|
|
||||||
this.refresh();
|
|
||||||
},
|
|
||||||
blit: function() {
|
|
||||||
if (_dirty) {
|
|
||||||
_context.putImageData(_page, 0, 0, 0, 0, 7 * 40 * 2, 8 * 24 * 2);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setContext: function(context) {
|
|
||||||
_context = context;
|
|
||||||
_page = context.createImageData(560, 384);
|
|
||||||
for (var idx = 0; idx < 560 * 384 * 4; idx++) {
|
|
||||||
_page.data[idx] = 0xff;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getText: function() {
|
|
||||||
function mapCharCode(charCode) {
|
|
||||||
charCode &= 0x7F;
|
|
||||||
if (charCode < 0x20) {
|
|
||||||
charCode += 0x40;
|
|
||||||
}
|
|
||||||
if (charCode >= 0x60) {
|
|
||||||
charCode -= 0x40;
|
|
||||||
}
|
|
||||||
return charCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
var buffer = '', line, charCode;
|
|
||||||
var row, col;
|
|
||||||
for (row = 0; row < 24; row++) {
|
|
||||||
line = '';
|
|
||||||
for (col = 0; col < 40; col++) {
|
|
||||||
charCode = mapCharCode(_buffer[row][col]);
|
|
||||||
line += String.fromCharCode(charCode);
|
|
||||||
}
|
|
||||||
line = line.trimRight();
|
|
||||||
buffer += line + '\n';
|
|
||||||
}
|
|
||||||
return buffer;
|
|
||||||
},
|
|
||||||
clear: function canvas_clearScreen() {
|
|
||||||
for (var row = 0; row < 24; row++) {
|
|
||||||
for (var col = 0; col < 40; col++) {
|
|
||||||
_buffer[row][col] = 0x20;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_col = 0;
|
|
||||||
_row = 0;
|
|
||||||
this.refresh();
|
|
||||||
},
|
|
||||||
transcript: ''
|
|
||||||
};
|
|
||||||
}
|
|
236
js/canvas1.ts
Normal file
236
js/canvas1.ts
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { charset } from './roms/apple1char';
|
||||||
|
import type { byte } from './types';
|
||||||
|
|
||||||
|
/*
|
||||||
|
0: A9 9 AA 20 EF FF E8 8A 4C 2 0
|
||||||
|
0R
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Text Page Drawing
|
||||||
|
*/
|
||||||
|
|
||||||
|
export class TextPage {
|
||||||
|
_page: ImageData | undefined;
|
||||||
|
_context: CanvasRenderingContext2D | undefined;
|
||||||
|
|
||||||
|
_buffer: byte[][] = [];
|
||||||
|
_greenMode = false;
|
||||||
|
_scanlines = false;
|
||||||
|
|
||||||
|
_black = [0x00, 0x00, 0x00];
|
||||||
|
_white = [0xee, 0xff, 0xff];
|
||||||
|
_green = [0x00, 0xff, 0x80];
|
||||||
|
_blinking = 0;
|
||||||
|
|
||||||
|
_row = 0;
|
||||||
|
_col = 0;
|
||||||
|
_dirty = false;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this._buffer = [];
|
||||||
|
for (let row = 0; row < 24; row++) {
|
||||||
|
this._buffer[row] = [];
|
||||||
|
for (let col = 0; col < 40; col++) {
|
||||||
|
this._buffer[row][col] = col % 2 ? 0x00 : 0xff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
init() {
|
||||||
|
window.setInterval(() => {
|
||||||
|
this._blinking = (this._blinking + 1) % 3;
|
||||||
|
this._blink();
|
||||||
|
this._dirty = true;
|
||||||
|
}, 333);
|
||||||
|
}
|
||||||
|
|
||||||
|
write(val: byte): void {
|
||||||
|
let col;
|
||||||
|
val &= 0x7f;
|
||||||
|
|
||||||
|
if (this.transcript) {
|
||||||
|
if (val === 0xd) {
|
||||||
|
this.transcript += '\n';
|
||||||
|
} else if (val >= 0x20) {
|
||||||
|
if (val >= 0x60) {
|
||||||
|
val &= 0x5f;
|
||||||
|
}
|
||||||
|
this.transcript += String.fromCharCode(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val === 0x0d) {
|
||||||
|
for (col = this._col; col < 40; col++) {
|
||||||
|
this._buffer[this._row][col] = 0x20;
|
||||||
|
}
|
||||||
|
this._col = 0;
|
||||||
|
this._row++;
|
||||||
|
} else {
|
||||||
|
this._buffer[this._row][this._col] = val;
|
||||||
|
this._col++;
|
||||||
|
if (this._col > 39) {
|
||||||
|
this._col = 0;
|
||||||
|
this._row++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this._row > 23) {
|
||||||
|
this._row = 23;
|
||||||
|
this._buffer.shift();
|
||||||
|
this._buffer.push([]);
|
||||||
|
for (col = 0; col < 40; col++) {
|
||||||
|
this._buffer[this._row][col] = 0x20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._buffer[this._row][this._col] = 0x00;
|
||||||
|
this.refresh();
|
||||||
|
}
|
||||||
|
writeAt(row: byte, col: byte, val: byte): void {
|
||||||
|
if (!this._page) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._buffer[row][col] = val;
|
||||||
|
const data = this._page.data;
|
||||||
|
let color;
|
||||||
|
let off = (col * 14 + row * 560 * 8 * 2) * 4;
|
||||||
|
|
||||||
|
let fore = this._greenMode ? this._green : this._white;
|
||||||
|
const back = this._black;
|
||||||
|
let char = 0;
|
||||||
|
|
||||||
|
if (!val) {
|
||||||
|
if (this._blinking) {
|
||||||
|
fore = this._black;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char = val & 0x1f;
|
||||||
|
char |= val & 0x40 ? 0 : 0x20;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let jdx = 0; jdx < 8; jdx++) {
|
||||||
|
let b = charset[char * 8 + jdx];
|
||||||
|
for (let idx = 0; idx < 7; idx += 1) {
|
||||||
|
b <<= 1;
|
||||||
|
color = b & 0x80 ? fore : back;
|
||||||
|
const c0 = color[0],
|
||||||
|
c1 = color[1],
|
||||||
|
c2 = color[2];
|
||||||
|
data[off + 0] = data[off + 4] = c0;
|
||||||
|
data[off + 1] = data[off + 5] = c1;
|
||||||
|
data[off + 2] = data[off + 6] = c2;
|
||||||
|
if (!this._scanlines) {
|
||||||
|
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0;
|
||||||
|
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1;
|
||||||
|
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2;
|
||||||
|
} else {
|
||||||
|
data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1;
|
||||||
|
data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1;
|
||||||
|
data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1;
|
||||||
|
}
|
||||||
|
off += 8;
|
||||||
|
}
|
||||||
|
off += 546 * 4 + 560 * 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_blink() {
|
||||||
|
for (let row = 0; row < 24; row++) {
|
||||||
|
for (let col = 0; col < 40; col++) {
|
||||||
|
const val = this._buffer[row][col];
|
||||||
|
if (!val) {
|
||||||
|
this.writeAt(row, col, val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._dirty = true;
|
||||||
|
}
|
||||||
|
refresh() {
|
||||||
|
for (let row = 0; row < 24; row++) {
|
||||||
|
for (let col = 0; col < 40; col++) {
|
||||||
|
this.writeAt(row, col, this._buffer[row][col]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._dirty = true;
|
||||||
|
}
|
||||||
|
green(on: boolean) {
|
||||||
|
this._greenMode = on;
|
||||||
|
this.refresh();
|
||||||
|
}
|
||||||
|
scanlines(on: boolean) {
|
||||||
|
this._scanlines = on;
|
||||||
|
this.refresh();
|
||||||
|
}
|
||||||
|
blit() {
|
||||||
|
if (!this._page || !this._context) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this._dirty) {
|
||||||
|
this._context.putImageData(
|
||||||
|
this._page,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
7 * 40 * 2,
|
||||||
|
8 * 24 * 2,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setContext(context: CanvasRenderingContext2D) {
|
||||||
|
this._context = context;
|
||||||
|
this._page = context.createImageData(560, 384);
|
||||||
|
for (let idx = 0; idx < 560 * 384 * 4; idx++) {
|
||||||
|
this._page.data[idx] = 0xff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getText() {
|
||||||
|
function mapCharCode(charCode: byte) {
|
||||||
|
charCode &= 0x7f;
|
||||||
|
if (charCode < 0x20) {
|
||||||
|
charCode += 0x40;
|
||||||
|
}
|
||||||
|
if (charCode >= 0x60) {
|
||||||
|
charCode -= 0x40;
|
||||||
|
}
|
||||||
|
return charCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
let buffer = '',
|
||||||
|
line,
|
||||||
|
charCode;
|
||||||
|
let row, col;
|
||||||
|
for (row = 0; row < 24; row++) {
|
||||||
|
line = '';
|
||||||
|
for (col = 0; col < 40; col++) {
|
||||||
|
charCode = mapCharCode(this._buffer[row][col]);
|
||||||
|
line += String.fromCharCode(charCode);
|
||||||
|
}
|
||||||
|
line = line.trimRight();
|
||||||
|
buffer += line + '\n';
|
||||||
|
}
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
clear() {
|
||||||
|
for (let row = 0; row < 24; row++) {
|
||||||
|
for (let col = 0; col < 40; col++) {
|
||||||
|
this._buffer[row][col] = 0x20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._col = 0;
|
||||||
|
this._row = 0;
|
||||||
|
this.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
transcript = '';
|
||||||
|
}
|
160
js/cards/aci.js
160
js/cards/aci.js
@ -1,160 +0,0 @@
|
|||||||
import { debug } from '../util';
|
|
||||||
|
|
||||||
export default function ACI(cpu, cb) {
|
|
||||||
var _last = cpu.cycles();
|
|
||||||
var _next = _last;
|
|
||||||
var _recording = false;
|
|
||||||
var _readOffset = 0;
|
|
||||||
var _flip = false;
|
|
||||||
var _beKind = false;
|
|
||||||
var _progress = 0;
|
|
||||||
|
|
||||||
var rom = [
|
|
||||||
0xA9,0xAA,0x20,0xEF,0xFF,0xA9,0x8D,0x20,
|
|
||||||
0xEF,0xFF,0xA0,0xFF,0xC8,0xAD,0x11,0xD0,
|
|
||||||
0x10,0xFB,0xAD,0x10,0xD0,0x99,0x00,0x02,
|
|
||||||
0x20,0xEF,0xFF,0xC9,0x9B,0xF0,0xE1,0xC9,
|
|
||||||
0x8D,0xD0,0xE9,0xA2,0xFF,0xA9,0x00,0x85,
|
|
||||||
0x24,0x85,0x25,0x85,0x26,0x85,0x27,0xE8,
|
|
||||||
0xBD,0x00,0x02,0xC9,0xD2,0xF0,0x56,0xC9,
|
|
||||||
0xD7,0xF0,0x35,0xC9,0xAE,0xF0,0x27,0xC9,
|
|
||||||
0x8D,0xF0,0x20,0xC9,0xA0,0xF0,0xE8,0x49,
|
|
||||||
0xB0,0xC9,0x0A,0x90,0x06,0x69,0x88,0xC9,
|
|
||||||
0xFA,0x90,0xAD,0x0A,0x0A,0x0A,0x0A,0xA0,
|
|
||||||
0x04,0x0A,0x26,0x24,0x26,0x25,0x88,0xD0,
|
|
||||||
0xF8,0xF0,0xCC,0x4C,0x1A,0xFF,0xA5,0x24,
|
|
||||||
0x85,0x26,0xA5,0x25,0x85,0x27,0xB0,0xBF,
|
|
||||||
0xA9,0x40,0x20,0xCC,0xC1,0x88,0xA2,0x00,
|
|
||||||
0xA1,0x26,0xA2,0x10,0x0A,0x20,0xDB,0xC1,
|
|
||||||
0xD0,0xFA,0x20,0xF1,0xC1,0xA0,0x1E,0x90,
|
|
||||||
0xEC,0xA6,0x28,0xB0,0x98,0x20,0xBC,0xC1,
|
|
||||||
0xA9,0x16,0x20,0xCC,0xC1,0x20,0xBC,0xC1,
|
|
||||||
0xA0,0x1F,0x20,0xBF,0xC1,0xB0,0xF9,0x20,
|
|
||||||
0xBF,0xC1,0xA0,0x3A,0xA2,0x08,0x48,0x20,
|
|
||||||
0xBC,0xC1,0x68,0x2A,0xA0,0x39,0xCA,0xD0,
|
|
||||||
0xF5,0x81,0x26,0x20,0xF1,0xC1,0xA0,0x35,
|
|
||||||
0x90,0xEA,0xB0,0xCD,0x20,0xBF,0xC1,0x88,
|
|
||||||
0xAD,0x81,0xC0,0xC5,0x29,0xF0,0xF8,0x85,
|
|
||||||
0x29,0xC0,0x80,0x60,0x86,0x28,0xA0,0x42,
|
|
||||||
0x20,0xE0,0xC1,0xD0,0xF9,0x69,0xFE,0xB0,
|
|
||||||
0xF5,0xA0,0x1E,0x20,0xE0,0xC1,0xA0,0x2C,
|
|
||||||
0x88,0xD0,0xFD,0x90,0x05,0xA0,0x2F,0x88,
|
|
||||||
0xD0,0xFD,0xBC,0x00,0xC0,0xA0,0x29,0xCA,
|
|
||||||
0x60,0xA5,0x26,0xC5,0x24,0xA5,0x27,0xE5,
|
|
||||||
0x25,0xE6,0x26,0xD0,0x02,0xE6,0x27,0x60
|
|
||||||
];
|
|
||||||
|
|
||||||
return {
|
|
||||||
start: function aci_start() {
|
|
||||||
return 0xc0;
|
|
||||||
},
|
|
||||||
end: function aci_end() {
|
|
||||||
return 0xc1;
|
|
||||||
},
|
|
||||||
read: function aci_read(page, off) {
|
|
||||||
var now = cpu.cycles();
|
|
||||||
var result = rom[off];
|
|
||||||
if (page == 0xc0) {
|
|
||||||
if (_recording) {
|
|
||||||
var delta = now - _last;
|
|
||||||
this.buffer.push(delta);
|
|
||||||
_last = now;
|
|
||||||
} else {
|
|
||||||
var progress;
|
|
||||||
if (_readOffset < this.buffer.length) {
|
|
||||||
if (now > _next) {
|
|
||||||
if ((_readOffset % 1000) == 0) {
|
|
||||||
debug('Read ' + (_readOffset / 1000));
|
|
||||||
}
|
|
||||||
_flip = !_flip;
|
|
||||||
_next = now + this.buffer[_readOffset++];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
result = _flip ? rom[off | 0x01] : rom[off & 0xfe];
|
|
||||||
|
|
||||||
progress = Math.round(_readOffset / this.buffer.length * 100) / 100;
|
|
||||||
if (_progress != progress) {
|
|
||||||
_progress = progress;
|
|
||||||
cb.progress(_progress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (cpu.sync()) {
|
|
||||||
switch (off) {
|
|
||||||
case 0x00:
|
|
||||||
_recording = false;
|
|
||||||
_beKind = true;
|
|
||||||
debug('Entering ACI CLI');
|
|
||||||
break;
|
|
||||||
case 0x63:
|
|
||||||
if (_recording) {
|
|
||||||
this.buffer.push(5000000);
|
|
||||||
_recording = false;
|
|
||||||
}
|
|
||||||
debug('Exiting ACI CLI');
|
|
||||||
break;
|
|
||||||
case 0x70: // WRITE
|
|
||||||
_recording = true;
|
|
||||||
if (_beKind) {
|
|
||||||
_beKind = false;
|
|
||||||
this.buffer = [];
|
|
||||||
}
|
|
||||||
debug('Start write');
|
|
||||||
_last = now;
|
|
||||||
break;
|
|
||||||
//case 0x7c: // WBITLOOP:
|
|
||||||
// _debug = true;
|
|
||||||
// debug("Write bit loop");
|
|
||||||
// break;
|
|
||||||
case 0x8d: // READ
|
|
||||||
_recording = false;
|
|
||||||
debug('Start read');
|
|
||||||
if (_beKind) {
|
|
||||||
_readOffset = 0;
|
|
||||||
_next = now + 5000000;
|
|
||||||
_beKind = false;
|
|
||||||
|
|
||||||
cb.progress(0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
write: function aci_write() {},
|
|
||||||
|
|
||||||
getState: function aci_getState() { return {}; },
|
|
||||||
setState: function aci_setState() {},
|
|
||||||
|
|
||||||
setData: function aci_setData(data) {
|
|
||||||
var seg, idx, jdx, d, b;
|
|
||||||
this.buffer = [];
|
|
||||||
for (seg = 0; seg < data.length; seg++) {
|
|
||||||
for (idx = 0; idx < 16384; idx++) {
|
|
||||||
this.buffer.push(592);
|
|
||||||
}
|
|
||||||
this.buffer.push(180);
|
|
||||||
this.buffer.push(238);
|
|
||||||
d = data[seg];
|
|
||||||
for (idx = 0; idx < d.length; idx++) {
|
|
||||||
b = d[idx];
|
|
||||||
for (jdx = 0; jdx < 8; jdx++) {
|
|
||||||
if (b & 0x80) {
|
|
||||||
this.buffer.push(473);
|
|
||||||
this.buffer.push(473);
|
|
||||||
} else {
|
|
||||||
this.buffer.push(238);
|
|
||||||
this.buffer.push(238);
|
|
||||||
}
|
|
||||||
b <<= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.buffer.push(5000000);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
buffer: []
|
|
||||||
};
|
|
||||||
}
|
|
162
js/cards/aci.ts
Normal file
162
js/cards/aci.ts
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
import CPU6502 from '../cpu6502';
|
||||||
|
import { debug } from '../util';
|
||||||
|
import { byte } from '../types';
|
||||||
|
|
||||||
|
const rom = [
|
||||||
|
0xa9, 0xaa, 0x20, 0xef, 0xff, 0xa9, 0x8d, 0x20, 0xef, 0xff, 0xa0, 0xff, 0xc8,
|
||||||
|
0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x99, 0x00, 0x02, 0x20, 0xef,
|
||||||
|
0xff, 0xc9, 0x9b, 0xf0, 0xe1, 0xc9, 0x8d, 0xd0, 0xe9, 0xa2, 0xff, 0xa9, 0x00,
|
||||||
|
0x85, 0x24, 0x85, 0x25, 0x85, 0x26, 0x85, 0x27, 0xe8, 0xbd, 0x00, 0x02, 0xc9,
|
||||||
|
0xd2, 0xf0, 0x56, 0xc9, 0xd7, 0xf0, 0x35, 0xc9, 0xae, 0xf0, 0x27, 0xc9, 0x8d,
|
||||||
|
0xf0, 0x20, 0xc9, 0xa0, 0xf0, 0xe8, 0x49, 0xb0, 0xc9, 0x0a, 0x90, 0x06, 0x69,
|
||||||
|
0x88, 0xc9, 0xfa, 0x90, 0xad, 0x0a, 0x0a, 0x0a, 0x0a, 0xa0, 0x04, 0x0a, 0x26,
|
||||||
|
0x24, 0x26, 0x25, 0x88, 0xd0, 0xf8, 0xf0, 0xcc, 0x4c, 0x1a, 0xff, 0xa5, 0x24,
|
||||||
|
0x85, 0x26, 0xa5, 0x25, 0x85, 0x27, 0xb0, 0xbf, 0xa9, 0x40, 0x20, 0xcc, 0xc1,
|
||||||
|
0x88, 0xa2, 0x00, 0xa1, 0x26, 0xa2, 0x10, 0x0a, 0x20, 0xdb, 0xc1, 0xd0, 0xfa,
|
||||||
|
0x20, 0xf1, 0xc1, 0xa0, 0x1e, 0x90, 0xec, 0xa6, 0x28, 0xb0, 0x98, 0x20, 0xbc,
|
||||||
|
0xc1, 0xa9, 0x16, 0x20, 0xcc, 0xc1, 0x20, 0xbc, 0xc1, 0xa0, 0x1f, 0x20, 0xbf,
|
||||||
|
0xc1, 0xb0, 0xf9, 0x20, 0xbf, 0xc1, 0xa0, 0x3a, 0xa2, 0x08, 0x48, 0x20, 0xbc,
|
||||||
|
0xc1, 0x68, 0x2a, 0xa0, 0x39, 0xca, 0xd0, 0xf5, 0x81, 0x26, 0x20, 0xf1, 0xc1,
|
||||||
|
0xa0, 0x35, 0x90, 0xea, 0xb0, 0xcd, 0x20, 0xbf, 0xc1, 0x88, 0xad, 0x81, 0xc0,
|
||||||
|
0xc5, 0x29, 0xf0, 0xf8, 0x85, 0x29, 0xc0, 0x80, 0x60, 0x86, 0x28, 0xa0, 0x42,
|
||||||
|
0x20, 0xe0, 0xc1, 0xd0, 0xf9, 0x69, 0xfe, 0xb0, 0xf5, 0xa0, 0x1e, 0x20, 0xe0,
|
||||||
|
0xc1, 0xa0, 0x2c, 0x88, 0xd0, 0xfd, 0x90, 0x05, 0xa0, 0x2f, 0x88, 0xd0, 0xfd,
|
||||||
|
0xbc, 0x00, 0xc0, 0xa0, 0x29, 0xca, 0x60, 0xa5, 0x26, 0xc5, 0x24, 0xa5, 0x27,
|
||||||
|
0xe5, 0x25, 0xe6, 0x26, 0xd0, 0x02, 0xe6, 0x27, 0x60,
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
export interface ACICallback {
|
||||||
|
progress: (value: number) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class ACI {
|
||||||
|
_last: number;
|
||||||
|
_next: number;
|
||||||
|
_recording = false;
|
||||||
|
_readOffset = 0;
|
||||||
|
_flip = false;
|
||||||
|
_beKind = false;
|
||||||
|
_progress = 0;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private cpu: CPU6502,
|
||||||
|
private cb: ACICallback,
|
||||||
|
) {
|
||||||
|
this._last = cpu.getCycles();
|
||||||
|
this._next = this._last;
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return 0xc0;
|
||||||
|
}
|
||||||
|
end() {
|
||||||
|
return 0xc1;
|
||||||
|
}
|
||||||
|
read(page: byte, off: byte) {
|
||||||
|
const now = this.cpu.getCycles();
|
||||||
|
let result = rom[off];
|
||||||
|
if (page === 0xc0) {
|
||||||
|
if (this._recording) {
|
||||||
|
const delta = now - this._last;
|
||||||
|
this.buffer.push(delta);
|
||||||
|
this._last = now;
|
||||||
|
} else {
|
||||||
|
if (this._readOffset < this.buffer.length) {
|
||||||
|
if (now > this._next) {
|
||||||
|
if (this._readOffset % 1000 === 0) {
|
||||||
|
debug('Read ' + this._readOffset / 1000);
|
||||||
|
}
|
||||||
|
this._flip = !this._flip;
|
||||||
|
this._next = now + this.buffer[this._readOffset++];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = this._flip ? rom[off | 0x01] : rom[off & 0xfe];
|
||||||
|
|
||||||
|
const progress =
|
||||||
|
Math.round((this._readOffset / this.buffer.length) * 100) / 100;
|
||||||
|
if (this._progress !== progress) {
|
||||||
|
this._progress = progress;
|
||||||
|
this.cb.progress(this._progress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (this.cpu.getSync()) {
|
||||||
|
switch (off) {
|
||||||
|
case 0x00:
|
||||||
|
this._recording = false;
|
||||||
|
this._beKind = true;
|
||||||
|
debug('Entering ACI CLI');
|
||||||
|
break;
|
||||||
|
case 0x63:
|
||||||
|
if (this._recording) {
|
||||||
|
this.buffer.push(5000000);
|
||||||
|
this._recording = false;
|
||||||
|
}
|
||||||
|
debug('Exiting ACI CLI');
|
||||||
|
break;
|
||||||
|
case 0x70: // WRITE
|
||||||
|
this._recording = true;
|
||||||
|
if (this._beKind) {
|
||||||
|
this._beKind = false;
|
||||||
|
this.buffer = [];
|
||||||
|
}
|
||||||
|
debug('Start write');
|
||||||
|
this._last = now;
|
||||||
|
break;
|
||||||
|
//case 0x7c: // WBITLOOP:
|
||||||
|
// _debug = true;
|
||||||
|
// debug("Write bit loop");
|
||||||
|
// break;
|
||||||
|
case 0x8d: // READ
|
||||||
|
this._recording = false;
|
||||||
|
debug('Start read');
|
||||||
|
if (this._beKind) {
|
||||||
|
this._readOffset = 0;
|
||||||
|
this._next = now + 5000000;
|
||||||
|
this._beKind = false;
|
||||||
|
|
||||||
|
this.cb.progress(0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
write() {}
|
||||||
|
|
||||||
|
getState() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
setState() {}
|
||||||
|
|
||||||
|
setData(data: number[][]) {
|
||||||
|
let seg, idx, jdx, d, b;
|
||||||
|
this.buffer = [];
|
||||||
|
for (seg = 0; seg < data.length; seg++) {
|
||||||
|
for (idx = 0; idx < 16384; idx++) {
|
||||||
|
this.buffer.push(592);
|
||||||
|
}
|
||||||
|
this.buffer.push(180);
|
||||||
|
this.buffer.push(238);
|
||||||
|
d = data[seg];
|
||||||
|
for (idx = 0; idx < d.length; idx++) {
|
||||||
|
b = d[idx];
|
||||||
|
for (jdx = 0; jdx < 8; jdx++) {
|
||||||
|
if (b & 0x80) {
|
||||||
|
this.buffer.push(473);
|
||||||
|
this.buffer.push(473);
|
||||||
|
} else {
|
||||||
|
this.buffer.push(238);
|
||||||
|
this.buffer.push(238);
|
||||||
|
}
|
||||||
|
b <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.buffer.push(5000000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buffer: byte[] = [];
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*!
|
/*!
|
||||||
* Copyright 2010-2018 Will Scullin <scullin@scullinsteel.com>
|
* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
* documentation for any purpose is hereby granted without fee, provided that
|
1626
js/cpu6502.js
1626
js/cpu6502.js
File diff suppressed because it is too large
Load Diff
3265
js/cpu6502.ts
Normal file
3265
js/cpu6502.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,3 @@
|
|||||||
var Apple1 = require('./apple1');
|
import * as Apple1 from "./apple1";
|
||||||
|
|
||||||
module.exports = { Apple1: Apple1 };
|
window.Apple1 = Apple1;
|
||||||
|
30
js/prefs.js
30
js/prefs.js
@ -1,30 +0,0 @@
|
|||||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinsteel.com>
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
* the above copyright notice appear in all copies and that both that
|
|
||||||
* copyright notice and this permission notice appear in supporting
|
|
||||||
* documentation. No representations are made about the suitability of this
|
|
||||||
* software for any purpose. It is provided "as is" without express or
|
|
||||||
* implied warranty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*exported Prefs */
|
|
||||||
|
|
||||||
export default function Prefs()
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
havePrefs: function() {
|
|
||||||
return typeof(localStorage) !== 'undefined';
|
|
||||||
},
|
|
||||||
readPref: function(name) {
|
|
||||||
if (localStorage)
|
|
||||||
return localStorage.getItem(name);
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
writePref: function(name, value) {
|
|
||||||
if (localStorage)
|
|
||||||
localStorage.setItem(name, value);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
23
js/prefs.ts
Normal file
23
js/prefs.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default class Prefs {
|
||||||
|
havePrefs() {
|
||||||
|
return typeof localStorage !== 'undefined';
|
||||||
|
}
|
||||||
|
readPref(name: string) {
|
||||||
|
if (localStorage) return localStorage.getItem(name);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
writePref(name: string, value: string) {
|
||||||
|
if (localStorage) localStorage.setItem(name, value);
|
||||||
|
}
|
||||||
|
}
|
57
js/ram.js
57
js/ram.js
@ -1,57 +0,0 @@
|
|||||||
/* -*- mode: JavaScript; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
||||||
/* Copyright 2010-2019Will Scullin <scullin@scullinsteel.com>
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
* the above copyright notice appear in all copies and that both that
|
|
||||||
* copyright notice and this permission notice appear in supporting
|
|
||||||
* documentation. No representations are made about the suitability of this
|
|
||||||
* software for any purpose. It is provided "as is" without express or
|
|
||||||
* implied warranty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { base64_decode, base64_encode } from './base64';
|
|
||||||
import { allocMemPages } from './util';
|
|
||||||
|
|
||||||
export default function RAM(sp, ep) {
|
|
||||||
var mem;
|
|
||||||
var start_page = sp;
|
|
||||||
var end_page = ep;
|
|
||||||
|
|
||||||
mem = allocMemPages(ep - sp + 1);
|
|
||||||
|
|
||||||
for (var page = 0; page <= ep; page++) {
|
|
||||||
for (var off = 0; off < 0x100; off++) {
|
|
||||||
mem[page * 0x100 + off] = 0; // Math.floor(Math.random()*256);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
start: function() {
|
|
||||||
return start_page;
|
|
||||||
},
|
|
||||||
end: function() {
|
|
||||||
return end_page;
|
|
||||||
},
|
|
||||||
read: function(page, off) {
|
|
||||||
return mem[(page - start_page) * 0x100 + off];
|
|
||||||
},
|
|
||||||
write: function(page, off, val) {
|
|
||||||
mem[(page - start_page) * 0x100 + off] = val;
|
|
||||||
},
|
|
||||||
|
|
||||||
getState: function() {
|
|
||||||
return {
|
|
||||||
start: start_page,
|
|
||||||
end: end_page,
|
|
||||||
mem: base64_encode(mem)
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
setState: function(state) {
|
|
||||||
start_page = state.start;
|
|
||||||
end_page = state.end;
|
|
||||||
mem = base64_decode(state.mem);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
64
js/ram.ts
Normal file
64
js/ram.ts
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { base64_decode, base64_encode } from './base64';
|
||||||
|
import { allocMemPages } from './util';
|
||||||
|
import type { byte } from './types';
|
||||||
|
|
||||||
|
export interface RAMState {
|
||||||
|
start: byte;
|
||||||
|
end: byte;
|
||||||
|
mem: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class RAM {
|
||||||
|
mem: Uint8Array | byte[];
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private start_page: byte,
|
||||||
|
private end_page: byte,
|
||||||
|
) {
|
||||||
|
this.mem = allocMemPages(end_page - start_page + 1);
|
||||||
|
|
||||||
|
for (let page = 0; page <= end_page; page++) {
|
||||||
|
for (let off = 0; off < 0x100; off++) {
|
||||||
|
this.mem[page * 0x100 + off] = 0; // Math.floor(Math.random()*256);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return this.start_page;
|
||||||
|
}
|
||||||
|
end() {
|
||||||
|
return this.end_page;
|
||||||
|
}
|
||||||
|
read(page: byte, off: byte) {
|
||||||
|
return this.mem[(page - this.start_page) * 0x100 + off];
|
||||||
|
}
|
||||||
|
write(page: byte, off: byte, val: byte) {
|
||||||
|
this.mem[(page - this.start_page) * 0x100 + off] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
getState(): RAMState {
|
||||||
|
return {
|
||||||
|
start: this.start_page,
|
||||||
|
end: this.end_page,
|
||||||
|
mem: base64_encode(this.mem),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(state: RAMState) {
|
||||||
|
this.start_page = state.start;
|
||||||
|
this.end_page = state.end;
|
||||||
|
this.mem = base64_decode(state.mem);
|
||||||
|
}
|
||||||
|
}
|
@ -1,66 +0,0 @@
|
|||||||
export var charset = [
|
|
||||||
0x00,0x1c,0x22,0x2a,0x2e,0x2c,0x20,0x1e,
|
|
||||||
0x00,0x08,0x14,0x22,0x22,0x3e,0x22,0x22,
|
|
||||||
0x00,0x3c,0x22,0x22,0x3c,0x22,0x22,0x3c,
|
|
||||||
0x00,0x1c,0x22,0x20,0x20,0x20,0x22,0x1c,
|
|
||||||
0x00,0x3c,0x22,0x22,0x22,0x22,0x22,0x3c,
|
|
||||||
0x00,0x3e,0x20,0x20,0x3c,0x20,0x20,0x3e,
|
|
||||||
0x00,0x3e,0x20,0x20,0x3c,0x20,0x20,0x20,
|
|
||||||
0x00,0x1e,0x20,0x20,0x20,0x26,0x22,0x1e,
|
|
||||||
0x00,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,
|
|
||||||
0x00,0x1c,0x08,0x08,0x08,0x08,0x08,0x1c,
|
|
||||||
0x00,0x02,0x02,0x02,0x02,0x02,0x22,0x1c,
|
|
||||||
0x00,0x22,0x24,0x28,0x30,0x28,0x24,0x22,
|
|
||||||
0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3e,
|
|
||||||
0x00,0x22,0x36,0x2a,0x2a,0x22,0x22,0x22,
|
|
||||||
0x00,0x22,0x22,0x32,0x2a,0x26,0x22,0x22,
|
|
||||||
0x00,0x1c,0x22,0x22,0x22,0x22,0x22,0x1c,
|
|
||||||
0x00,0x3c,0x22,0x22,0x3c,0x20,0x20,0x20,
|
|
||||||
0x00,0x1c,0x22,0x22,0x22,0x2a,0x24,0x1a,
|
|
||||||
0x00,0x3c,0x22,0x22,0x3c,0x28,0x24,0x22,
|
|
||||||
0x00,0x1c,0x22,0x20,0x1c,0x02,0x22,0x1c,
|
|
||||||
0x00,0x3e,0x08,0x08,0x08,0x08,0x08,0x08,
|
|
||||||
0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c,
|
|
||||||
0x00,0x22,0x22,0x22,0x22,0x22,0x14,0x08,
|
|
||||||
0x00,0x22,0x22,0x22,0x2a,0x2a,0x36,0x22,
|
|
||||||
0x00,0x22,0x22,0x14,0x08,0x14,0x22,0x22,
|
|
||||||
0x00,0x22,0x22,0x14,0x08,0x08,0x08,0x08,
|
|
||||||
0x00,0x3e,0x02,0x04,0x08,0x10,0x20,0x3e,
|
|
||||||
0x00,0x3e,0x30,0x30,0x30,0x30,0x30,0x3e,
|
|
||||||
0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00,
|
|
||||||
0x00,0x3e,0x06,0x06,0x06,0x06,0x06,0x3e,
|
|
||||||
0x00,0x00,0x00,0x08,0x14,0x22,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x08,
|
|
||||||
0x00,0x14,0x14,0x14,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x14,0x14,0x3e,0x14,0x3e,0x14,0x14,
|
|
||||||
0x00,0x08,0x1e,0x28,0x1c,0x0a,0x3c,0x08,
|
|
||||||
0x00,0x30,0x32,0x04,0x08,0x10,0x26,0x06,
|
|
||||||
0x00,0x10,0x28,0x28,0x10,0x2a,0x24,0x1a,
|
|
||||||
0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x08,0x10,0x20,0x20,0x20,0x10,0x08,
|
|
||||||
0x00,0x08,0x04,0x02,0x02,0x02,0x04,0x08,
|
|
||||||
0x00,0x08,0x2a,0x1c,0x08,0x1c,0x2a,0x08,
|
|
||||||
0x00,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x10,
|
|
||||||
0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
|
|
||||||
0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x00,
|
|
||||||
0x00,0x1c,0x22,0x26,0x2a,0x32,0x22,0x1c,
|
|
||||||
0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x1c,
|
|
||||||
0x00,0x1c,0x22,0x02,0x0c,0x10,0x20,0x3e,
|
|
||||||
0x00,0x3e,0x02,0x04,0x0c,0x02,0x22,0x1c,
|
|
||||||
0x00,0x04,0x0c,0x14,0x24,0x3e,0x04,0x04,
|
|
||||||
0x00,0x3e,0x20,0x3c,0x02,0x02,0x22,0x1c,
|
|
||||||
0x00,0x0e,0x10,0x20,0x3c,0x22,0x22,0x1c,
|
|
||||||
0x00,0x3e,0x02,0x04,0x08,0x10,0x10,0x10,
|
|
||||||
0x00,0x1c,0x22,0x22,0x1c,0x22,0x22,0x1c,
|
|
||||||
0x00,0x1c,0x22,0x22,0x1e,0x02,0x04,0x38,
|
|
||||||
0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x08,0x00,0x08,0x08,0x10,
|
|
||||||
0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,
|
|
||||||
0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,
|
|
||||||
0x00,0x10,0x08,0x04,0x02,0x04,0x08,0x10,
|
|
||||||
0x00,0x1c,0x22,0x04,0x08,0x08,0x00,0x08
|
|
||||||
];
|
|
42
js/roms/apple1char.ts
Normal file
42
js/roms/apple1char.ts
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
export const charset = [
|
||||||
|
0x00, 0x1c, 0x22, 0x2a, 0x2e, 0x2c, 0x20, 0x1e, 0x00, 0x08, 0x14, 0x22, 0x22,
|
||||||
|
0x3e, 0x22, 0x22, 0x00, 0x3c, 0x22, 0x22, 0x3c, 0x22, 0x22, 0x3c, 0x00, 0x1c,
|
||||||
|
0x22, 0x20, 0x20, 0x20, 0x22, 0x1c, 0x00, 0x3c, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||||
|
0x3c, 0x00, 0x3e, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x3e, 0x00, 0x3e, 0x20, 0x20,
|
||||||
|
0x3c, 0x20, 0x20, 0x20, 0x00, 0x1e, 0x20, 0x20, 0x20, 0x26, 0x22, 0x1e, 0x00,
|
||||||
|
0x22, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x22, 0x00, 0x1c, 0x08, 0x08, 0x08, 0x08,
|
||||||
|
0x08, 0x1c, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x22, 0x1c, 0x00, 0x22, 0x24,
|
||||||
|
0x28, 0x30, 0x28, 0x24, 0x22, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3e,
|
||||||
|
0x00, 0x22, 0x36, 0x2a, 0x2a, 0x22, 0x22, 0x22, 0x00, 0x22, 0x22, 0x32, 0x2a,
|
||||||
|
0x26, 0x22, 0x22, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x3c,
|
||||||
|
0x22, 0x22, 0x3c, 0x20, 0x20, 0x20, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x2a, 0x24,
|
||||||
|
0x1a, 0x00, 0x3c, 0x22, 0x22, 0x3c, 0x28, 0x24, 0x22, 0x00, 0x1c, 0x22, 0x20,
|
||||||
|
0x1c, 0x02, 0x22, 0x1c, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
||||||
|
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||||
|
0x14, 0x08, 0x00, 0x22, 0x22, 0x22, 0x2a, 0x2a, 0x36, 0x22, 0x00, 0x22, 0x22,
|
||||||
|
0x14, 0x08, 0x14, 0x22, 0x22, 0x00, 0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08,
|
||||||
|
0x00, 0x3e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x3e, 0x00, 0x3e, 0x30, 0x30, 0x30,
|
||||||
|
0x30, 0x30, 0x3e, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, 0x3e,
|
||||||
|
0x06, 0x06, 0x06, 0x06, 0x06, 0x3e, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x00,
|
||||||
|
0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x3e, 0x14, 0x3e,
|
||||||
|
0x14, 0x14, 0x00, 0x08, 0x1e, 0x28, 0x1c, 0x0a, 0x3c, 0x08, 0x00, 0x30, 0x32,
|
||||||
|
0x04, 0x08, 0x10, 0x26, 0x06, 0x00, 0x10, 0x28, 0x28, 0x10, 0x2a, 0x24, 0x1a,
|
||||||
|
0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x20, 0x20,
|
||||||
|
0x20, 0x10, 0x08, 0x00, 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08, 0x00, 0x08,
|
||||||
|
0x2a, 0x1c, 0x08, 0x1c, 0x2a, 0x08, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
|
||||||
|
0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x1c, 0x22, 0x26, 0x2a, 0x32,
|
||||||
|
0x22, 0x1c, 0x00, 0x08, 0x18, 0x08, 0x08, 0x08, 0x08, 0x1c, 0x00, 0x1c, 0x22,
|
||||||
|
0x02, 0x0c, 0x10, 0x20, 0x3e, 0x00, 0x3e, 0x02, 0x04, 0x0c, 0x02, 0x22, 0x1c,
|
||||||
|
0x00, 0x04, 0x0c, 0x14, 0x24, 0x3e, 0x04, 0x04, 0x00, 0x3e, 0x20, 0x3c, 0x02,
|
||||||
|
0x02, 0x22, 0x1c, 0x00, 0x0e, 0x10, 0x20, 0x3c, 0x22, 0x22, 0x1c, 0x00, 0x3e,
|
||||||
|
0x02, 0x04, 0x08, 0x10, 0x10, 0x10, 0x00, 0x1c, 0x22, 0x22, 0x1c, 0x22, 0x22,
|
||||||
|
0x1c, 0x00, 0x1c, 0x22, 0x22, 0x1e, 0x02, 0x04, 0x38, 0x00, 0x00, 0x00, 0x08,
|
||||||
|
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x08, 0x10, 0x00,
|
||||||
|
0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e,
|
||||||
|
0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00, 0x1c, 0x22,
|
||||||
|
0x04, 0x08, 0x08, 0x00, 0x08,
|
||||||
|
] as const;
|
537
js/roms/basic.js
537
js/roms/basic.js
@ -1,537 +0,0 @@
|
|||||||
export default function Basic() {
|
|
||||||
var ram = [
|
|
||||||
0x4c,0xb0,0xe2,0xad,0x11,0xd0,0x10,0xfb,
|
|
||||||
0xad,0x10,0xd0,0x60,0x8a,0x29,0x20,0xf0,
|
|
||||||
0x23,0xa9,0xa0,0x85,0xe4,0x4c,0xc9,0xe3,
|
|
||||||
0xa9,0x20,0xc5,0x24,0xb0,0x0c,0xa9,0x8d,
|
|
||||||
0xa0,0x07,0x20,0xc9,0xe3,0xa9,0xa0,0x88,
|
|
||||||
0xd0,0xf8,0xa0,0x00,0xb1,0xe2,0xe6,0xe2,
|
|
||||||
0xd0,0x02,0xe6,0xe3,0x60,0x20,0x15,0xe7,
|
|
||||||
0x20,0x76,0xe5,0xa5,0xe2,0xc5,0xe6,0xa5,
|
|
||||||
0xe3,0xe5,0xe7,0xb0,0xef,0x20,0x6d,0xe0,
|
|
||||||
0x4c,0x3b,0xe0,0xa5,0xca,0x85,0xe2,0xa5,
|
|
||||||
0xcb,0x85,0xe3,0xa5,0x4c,0x85,0xe6,0xa5,
|
|
||||||
0x4d,0x85,0xe7,0xd0,0xde,0x20,0x15,0xe7,
|
|
||||||
0x20,0x6d,0xe5,0xa5,0xe4,0x85,0xe2,0xa5,
|
|
||||||
0xe5,0x85,0xe3,0xb0,0xc7,0x86,0xd8,0xa9,
|
|
||||||
0xa0,0x85,0xfa,0x20,0x2a,0xe0,0x98,0x85,
|
|
||||||
0xe4,0x20,0x2a,0xe0,0xaa,0x20,0x2a,0xe0,
|
|
||||||
0x20,0x1b,0xe5,0x20,0x18,0xe0,0x84,0xfa,
|
|
||||||
0xaa,0x10,0x18,0x0a,0x10,0xe9,0xa5,0xe4,
|
|
||||||
0xd0,0x03,0x20,0x11,0xe0,0x8a,0x20,0xc9,
|
|
||||||
0xe3,0xa9,0x25,0x20,0x1a,0xe0,0xaa,0x30,
|
|
||||||
0xf5,0x85,0xe4,0xc9,0x01,0xd0,0x05,0xa6,
|
|
||||||
0xd8,0x4c,0xcd,0xe3,0x48,0x84,0xce,0xa2,
|
|
||||||
0xed,0x86,0xcf,0xc9,0x51,0x90,0x04,0xc6,
|
|
||||||
0xcf,0xe9,0x50,0x48,0xb1,0xce,0xaa,0x88,
|
|
||||||
0xb1,0xce,0x10,0xfa,0xe0,0xc0,0xb0,0x04,
|
|
||||||
0xe0,0x00,0x30,0xf2,0xaa,0x68,0xe9,0x01,
|
|
||||||
0xd0,0xe9,0x24,0xe4,0x30,0x03,0x20,0xf8,
|
|
||||||
0xef,0xb1,0xce,0x10,0x10,0xaa,0x29,0x3f,
|
|
||||||
0x85,0xe4,0x18,0x69,0xa0,0x20,0xc9,0xe3,
|
|
||||||
0x88,0xe0,0xc0,0x90,0xec,0x20,0x0c,0xe0,
|
|
||||||
0x68,0xc9,0x5d,0xf0,0xa4,0xc9,0x28,0xd0,
|
|
||||||
0x8a,0xf0,0x9e,0x20,0x18,0xe1,0x95,0x50,
|
|
||||||
0xd5,0x78,0x90,0x11,0xa0,0x2b,0x4c,0xe0,
|
|
||||||
0xe3,0x20,0x34,0xee,0xd5,0x50,0x90,0xf4,
|
|
||||||
0x20,0xe4,0xef,0x95,0x78,0x4c,0x23,0xe8,
|
|
||||||
0x20,0x34,0xee,0xf0,0xe7,0x38,0xe9,0x01,
|
|
||||||
0x60,0x20,0x18,0xe1,0x95,0x50,0x18,0xf5,
|
|
||||||
0x78,0x4c,0x02,0xe1,0xa0,0x14,0xd0,0xd6,
|
|
||||||
0x20,0x18,0xe1,0xe8,0xb5,0x50,0x85,0xda,
|
|
||||||
0x65,0xce,0x48,0xa8,0xb5,0x78,0x85,0xdb,
|
|
||||||
0x65,0xcf,0x48,0xc4,0xca,0xe5,0xcb,0xb0,
|
|
||||||
0xe3,0xa5,0xda,0x69,0xfe,0x85,0xda,0xa9,
|
|
||||||
0xff,0xa8,0x65,0xdb,0x85,0xdb,0xc8,0xb1,
|
|
||||||
0xda,0xd9,0xcc,0x00,0xd0,0x0f,0x98,0xf0,
|
|
||||||
0xf5,0x68,0x91,0xda,0x99,0xcc,0x00,0x88,
|
|
||||||
0x10,0xf7,0xe8,0x60,0xea,0xa0,0x80,0xd0,
|
|
||||||
0x95,0xa9,0x00,0x20,0x0a,0xe7,0xa0,0x02,
|
|
||||||
0x94,0x78,0x20,0x0a,0xe7,0xa9,0xbf,0x20,
|
|
||||||
0xc9,0xe3,0xa0,0x00,0x20,0x9e,0xe2,0x94,
|
|
||||||
0x78,0xea,0xea,0xea,0xb5,0x51,0x85,0xce,
|
|
||||||
0xb5,0x79,0x85,0xcf,0xe8,0xe8,0x20,0xbc,
|
|
||||||
0xe1,0xb5,0x4e,0xd5,0x76,0xb0,0x15,0xf6,
|
|
||||||
0x4e,0xa8,0xb1,0xce,0xb4,0x50,0xc4,0xe4,
|
|
||||||
0x90,0x04,0xa0,0x83,0xd0,0xc1,0x91,0xda,
|
|
||||||
0xf6,0x50,0x90,0xe5,0xb4,0x50,0x8a,0x91,
|
|
||||||
0xda,0xe8,0xe8,0x60,0xb5,0x51,0x85,0xda,
|
|
||||||
0x38,0xe9,0x02,0x85,0xe4,0xb5,0x79,0x85,
|
|
||||||
0xdb,0xe9,0x00,0x85,0xe5,0xa0,0x00,0xb1,
|
|
||||||
0xe4,0x18,0xe5,0xda,0x85,0xe4,0x60,0xb5,
|
|
||||||
0x53,0x85,0xce,0xb5,0x7b,0x85,0xcf,0xb5,
|
|
||||||
0x51,0x85,0xda,0xb5,0x79,0x85,0xdb,0xe8,
|
|
||||||
0xe8,0xe8,0xa0,0x00,0x94,0x78,0x94,0xa0,
|
|
||||||
0xc8,0x94,0x50,0xb5,0x4d,0xd5,0x75,0x08,
|
|
||||||
0x48,0xb5,0x4f,0xd5,0x77,0x90,0x07,0x68,
|
|
||||||
0x28,0xb0,0x02,0x56,0x50,0x60,0xa8,0xb1,
|
|
||||||
0xce,0x85,0xe4,0x68,0xa8,0x28,0xb0,0xf3,
|
|
||||||
0xb1,0xda,0xc5,0xe4,0xd0,0xed,0xf6,0x4f,
|
|
||||||
0xf6,0x4d,0xb0,0xd7,0x20,0xd7,0xe1,0x4c,
|
|
||||||
0x36,0xe7,0x20,0x54,0xe2,0x06,0xce,0x26,
|
|
||||||
0xcf,0x90,0x0d,0x18,0xa5,0xe6,0x65,0xda,
|
|
||||||
0x85,0xe6,0xa5,0xe7,0x65,0xdb,0x85,0xe7,
|
|
||||||
0x88,0xf0,0x09,0x06,0xe6,0x26,0xe7,0x10,
|
|
||||||
0xe4,0x4c,0x7e,0xe7,0xa5,0xe6,0x20,0x08,
|
|
||||||
0xe7,0xa5,0xe7,0x95,0xa0,0x06,0xe5,0x90,
|
|
||||||
0x28,0x4c,0x6f,0xe7,0xa9,0x55,0x85,0xe5,
|
|
||||||
0x20,0x5b,0xe2,0xa5,0xce,0x85,0xda,0xa5,
|
|
||||||
0xcf,0x85,0xdb,0x20,0x15,0xe7,0x84,0xe6,
|
|
||||||
0x84,0xe7,0xa5,0xcf,0x10,0x09,0xca,0x06,
|
|
||||||
0xe5,0x20,0x6f,0xe7,0x20,0x15,0xe7,0xa0,
|
|
||||||
0x10,0x60,0x20,0x6c,0xee,0xf0,0xc5,0xff,
|
|
||||||
0xc9,0x84,0xd0,0x02,0x46,0xf8,0xc9,0xdf,
|
|
||||||
0xf0,0x11,0xc9,0x9b,0xf0,0x06,0x99,0x00,
|
|
||||||
0x02,0xc8,0x10,0x0a,0xa0,0x8b,0x20,0xc4,
|
|
||||||
0xe3,0xa0,0x01,0x88,0x30,0xf6,0x20,0x03,
|
|
||||||
0xe0,0xea,0xea,0x20,0xc9,0xe3,0xc9,0x8d,
|
|
||||||
0xd0,0xd6,0xa9,0xdf,0x99,0x00,0x02,0x60,
|
|
||||||
0x20,0xd3,0xef,0x20,0xcd,0xe3,0x46,0xd9,
|
|
||||||
0xa9,0xbe,0x20,0xc9,0xe3,0xa0,0x00,0x84,
|
|
||||||
0xfa,0x24,0xf8,0x10,0x0c,0xa6,0xf6,0xa5,
|
|
||||||
0xf7,0x20,0x1b,0xe5,0xa9,0xa0,0x20,0xc9,
|
|
||||||
0xe3,0xa2,0xff,0x9a,0x20,0x9e,0xe2,0x84,
|
|
||||||
0xf1,0x8a,0x85,0xc8,0xa2,0x20,0x20,0x91,
|
|
||||||
0xe4,0xa5,0xc8,0x69,0x00,0x85,0xe0,0xa9,
|
|
||||||
0x00,0xaa,0x69,0x02,0x85,0xe1,0xa1,0xe0,
|
|
||||||
0x29,0xf0,0xc9,0xb0,0xf0,0x03,0x4c,0x83,
|
|
||||||
0xe8,0xa0,0x02,0xb1,0xe0,0x99,0xcd,0x00,
|
|
||||||
0x88,0xd0,0xf8,0x20,0x8a,0xe3,0xa5,0xf1,
|
|
||||||
0xe5,0xc8,0xc9,0x04,0xf0,0xa8,0x91,0xe0,
|
|
||||||
0xa5,0xca,0xf1,0xe0,0x85,0xe4,0xa5,0xcb,
|
|
||||||
0xe9,0x00,0x85,0xe5,0xa5,0xe4,0xc5,0xcc,
|
|
||||||
0xa5,0xe5,0xe5,0xcd,0x90,0x45,0xa5,0xca,
|
|
||||||
0xf1,0xe0,0x85,0xe6,0xa5,0xcb,0xe9,0x00,
|
|
||||||
0x85,0xe7,0xb1,0xca,0x91,0xe6,0xe6,0xca,
|
|
||||||
0xd0,0x02,0xe6,0xcb,0xa5,0xe2,0xc5,0xca,
|
|
||||||
0xa5,0xe3,0xe5,0xcb,0xb0,0xe0,0xb5,0xe4,
|
|
||||||
0x95,0xca,0xca,0x10,0xf9,0xb1,0xe0,0xa8,
|
|
||||||
0x88,0xb1,0xe0,0x91,0xe6,0x98,0xd0,0xf8,
|
|
||||||
0x24,0xf8,0x10,0x09,0xb5,0xf7,0x75,0xf5,
|
|
||||||
0x95,0xf7,0xe8,0xf0,0xf7,0x10,0x7e,0x00,
|
|
||||||
0x00,0x00,0x00,0xa0,0x14,0xd0,0x71,0x20,
|
|
||||||
0x15,0xe7,0xa5,0xe2,0x85,0xe6,0xa5,0xe3,
|
|
||||||
0x85,0xe7,0x20,0x75,0xe5,0xa5,0xe2,0x85,
|
|
||||||
0xe4,0xa5,0xe3,0x85,0xe5,0xd0,0x0e,0x20,
|
|
||||||
0x15,0xe7,0x20,0x6d,0xe5,0xa5,0xe6,0x85,
|
|
||||||
0xe2,0xa5,0xe7,0x85,0xe3,0xa0,0x00,0xa5,
|
|
||||||
0xca,0xc5,0xe4,0xa5,0xcb,0xe5,0xe5,0xb0,
|
|
||||||
0x16,0xa5,0xe4,0xd0,0x02,0xc6,0xe5,0xc6,
|
|
||||||
0xe4,0xa5,0xe6,0xd0,0x02,0xc6,0xe7,0xc6,
|
|
||||||
0xe6,0xb1,0xe4,0x91,0xe6,0x90,0xe0,0xa5,
|
|
||||||
0xe6,0x85,0xca,0xa5,0xe7,0x85,0xcb,0x60,
|
|
||||||
0x20,0xc9,0xe3,0xc8,0xb9,0x00,0xeb,0x30,
|
|
||||||
0xf7,0xc9,0x8d,0xd0,0x06,0xa9,0x00,0x85,
|
|
||||||
0x24,0xa9,0x8d,0xe6,0x24,0x2c,0xf2,0xd0,
|
|
||||||
0x30,0xfb,0x8d,0xf2,0xd0,0x60,0xa0,0x06,
|
|
||||||
0x20,0xd3,0xee,0x24,0xd9,0x30,0x03,0x4c,
|
|
||||||
0xb6,0xe2,0x4c,0x9a,0xeb,0x2a,0x69,0xa0,
|
|
||||||
0xdd,0x00,0x02,0xd0,0x53,0xb1,0xfe,0x0a,
|
|
||||||
0x30,0x06,0x88,0xb1,0xfe,0x30,0x29,0xc8,
|
|
||||||
0x86,0xc8,0x98,0x48,0xa2,0x00,0xa1,0xfe,
|
|
||||||
0xaa,0x4a,0x49,0x48,0x11,0xfe,0xc9,0xc0,
|
|
||||||
0x90,0x01,0xe8,0xc8,0xd0,0xf3,0x68,0xa8,
|
|
||||||
0x8a,0x4c,0xc0,0xe4,0xe6,0xf1,0xa6,0xf1,
|
|
||||||
0xf0,0xbc,0x9d,0x00,0x02,0x60,0xa6,0xc8,
|
|
||||||
0xa9,0xa0,0xe8,0xdd,0x00,0x02,0xb0,0xfa,
|
|
||||||
0xb1,0xfe,0x29,0x3f,0x4a,0xd0,0xb6,0xbd,
|
|
||||||
0x00,0x02,0xb0,0x06,0x69,0x3f,0xc9,0x1a,
|
|
||||||
0x90,0x6f,0x69,0x4f,0xc9,0x0a,0x90,0x69,
|
|
||||||
0xa6,0xfd,0xc8,0xb1,0xfe,0x29,0xe0,0xc9,
|
|
||||||
0x20,0xf0,0x7a,0xb5,0xa8,0x85,0xc8,0xb5,
|
|
||||||
0xd1,0x85,0xf1,0x88,0xb1,0xfe,0x0a,0x10,
|
|
||||||
0xfa,0x88,0xb0,0x38,0x0a,0x30,0x35,0xb4,
|
|
||||||
0x58,0x84,0xff,0xb4,0x80,0xe8,0x10,0xda,
|
|
||||||
0xf0,0xb3,0xc9,0x7e,0xb0,0x22,0xca,0x10,
|
|
||||||
0x04,0xa0,0x06,0x10,0x29,0x94,0x80,0xa4,
|
|
||||||
0xff,0x94,0x58,0xa4,0xc8,0x94,0xa8,0xa4,
|
|
||||||
0xf1,0x94,0xd1,0x29,0x1f,0xa8,0xb9,0x20,
|
|
||||||
0xec,0x0a,0xa8,0xa9,0x76,0x2a,0x85,0xff,
|
|
||||||
0xd0,0x01,0xc8,0xc8,0x86,0xfd,0xb1,0xfe,
|
|
||||||
0x30,0x84,0xd0,0x05,0xa0,0x0e,0x4c,0xe0,
|
|
||||||
0xe3,0xc9,0x03,0xb0,0xc3,0x4a,0xa6,0xc8,
|
|
||||||
0xe8,0xbd,0x00,0x02,0x90,0x04,0xc9,0xa2,
|
|
||||||
0xf0,0x0a,0xc9,0xdf,0xf0,0x06,0x86,0xc8,
|
|
||||||
0x20,0x1c,0xe4,0xc8,0x88,0xa6,0xfd,0xb1,
|
|
||||||
0xfe,0x88,0x0a,0x10,0xcf,0xb4,0x58,0x84,
|
|
||||||
0xff,0xb4,0x80,0xe8,0xb1,0xfe,0x29,0x9f,
|
|
||||||
0xd0,0xed,0x85,0xf2,0x85,0xf3,0x98,0x48,
|
|
||||||
0x86,0xfd,0xb4,0xd0,0x84,0xc9,0x18,0xa9,
|
|
||||||
0x0a,0x85,0xf9,0xa2,0x00,0xc8,0xb9,0x00,
|
|
||||||
0x02,0x29,0x0f,0x65,0xf2,0x48,0x8a,0x65,
|
|
||||||
0xf3,0x30,0x1c,0xaa,0x68,0xc6,0xf9,0xd0,
|
|
||||||
0xf2,0x85,0xf2,0x86,0xf3,0xc4,0xf1,0xd0,
|
|
||||||
0xde,0xa4,0xc9,0xc8,0x84,0xf1,0x20,0x1c,
|
|
||||||
0xe4,0x68,0xa8,0xa5,0xf3,0xb0,0xa9,0xa0,
|
|
||||||
0x00,0x10,0x8b,0x85,0xf3,0x86,0xf2,0xa2,
|
|
||||||
0x04,0x86,0xc9,0xa9,0xb0,0x85,0xf9,0xa5,
|
|
||||||
0xf2,0xdd,0x63,0xe5,0xa5,0xf3,0xfd,0x68,
|
|
||||||
0xe5,0x90,0x0d,0x85,0xf3,0xa5,0xf2,0xfd,
|
|
||||||
0x63,0xe5,0x85,0xf2,0xe6,0xf9,0xd0,0xe7,
|
|
||||||
0xa5,0xf9,0xe8,0xca,0xf0,0x0e,0xc9,0xb0,
|
|
||||||
0xf0,0x02,0x85,0xc9,0x24,0xc9,0x30,0x04,
|
|
||||||
0xa5,0xfa,0xf0,0x0b,0x20,0xc9,0xe3,0x24,
|
|
||||||
0xf8,0x10,0x04,0x99,0x00,0x02,0xc8,0xca,
|
|
||||||
0x10,0xc1,0x60,0x01,0x0a,0x64,0xe8,0x10,
|
|
||||||
0x00,0x00,0x00,0x03,0x27,0xa5,0xca,0x85,
|
|
||||||
0xe6,0xa5,0xcb,0x85,0xe7,0xe8,0xa5,0xe7,
|
|
||||||
0x85,0xe5,0xa5,0xe6,0x85,0xe4,0xc5,0x4c,
|
|
||||||
0xa5,0xe5,0xe5,0x4d,0xb0,0x26,0xa0,0x01,
|
|
||||||
0xb1,0xe4,0xe5,0xce,0xc8,0xb1,0xe4,0xe5,
|
|
||||||
0xcf,0xb0,0x19,0xa0,0x00,0xa5,0xe6,0x71,
|
|
||||||
0xe4,0x85,0xe6,0x90,0x03,0xe6,0xe7,0x18,
|
|
||||||
0xc8,0xa5,0xce,0xf1,0xe4,0xc8,0xa5,0xcf,
|
|
||||||
0xf1,0xe4,0xb0,0xca,0x60,0x46,0xf8,0xa5,
|
|
||||||
0x4c,0x85,0xca,0xa5,0x4d,0x85,0xcb,0xa5,
|
|
||||||
0x4a,0x85,0xcc,0xa5,0x4b,0x85,0xcd,0xa9,
|
|
||||||
0x00,0x85,0xfb,0x85,0xfc,0x85,0xfe,0xa9,
|
|
||||||
0x00,0x85,0x1d,0x60,0xa5,0xd0,0x69,0x05,
|
|
||||||
0x85,0xd2,0xa5,0xd1,0x69,0x00,0x85,0xd3,
|
|
||||||
0xa5,0xd2,0xc5,0xca,0xa5,0xd3,0xe5,0xcb,
|
|
||||||
0x90,0x03,0x4c,0x6b,0xe3,0xa5,0xce,0x91,
|
|
||||||
0xd0,0xa5,0xcf,0xc8,0x91,0xd0,0xa5,0xd2,
|
|
||||||
0xc8,0x91,0xd0,0xa5,0xd3,0xc8,0x91,0xd0,
|
|
||||||
0xa9,0x00,0xc8,0x91,0xd0,0xc8,0x91,0xd0,
|
|
||||||
0xa5,0xd2,0x85,0xcc,0xa5,0xd3,0x85,0xcd,
|
|
||||||
0xa5,0xd0,0x90,0x43,0x85,0xce,0x84,0xcf,
|
|
||||||
0x20,0xff,0xe6,0x30,0x0e,0xc9,0x40,0xf0,
|
|
||||||
0x0a,0x4c,0x28,0xe6,0x06,0xc9,0x49,0xd0,
|
|
||||||
0x07,0xa9,0x49,0x85,0xcf,0x20,0xff,0xe6,
|
|
||||||
0xa5,0x4b,0x85,0xd1,0xa5,0x4a,0x85,0xd0,
|
|
||||||
0xc5,0xcc,0xa5,0xd1,0xe5,0xcd,0xb0,0x94,
|
|
||||||
0xb1,0xd0,0xc8,0xc5,0xce,0xd0,0x06,0xb1,
|
|
||||||
0xd0,0xc5,0xcf,0xf0,0x0e,0xc8,0xb1,0xd0,
|
|
||||||
0x48,0xc8,0xb1,0xd0,0x85,0xd1,0x68,0xa0,
|
|
||||||
0x00,0xf0,0xdb,0xa5,0xd0,0x69,0x03,0x20,
|
|
||||||
0x0a,0xe7,0xa5,0xd1,0x69,0x00,0x95,0x78,
|
|
||||||
0xa5,0xcf,0xc9,0x40,0xd0,0x1c,0x88,0x98,
|
|
||||||
0x20,0x0a,0xe7,0x88,0x94,0x78,0xa0,0x03,
|
|
||||||
0xf6,0x78,0xc8,0xb1,0xd0,0x30,0xf9,0x10,
|
|
||||||
0x09,0xa9,0x00,0x85,0xd4,0x85,0xd5,0xa2,
|
|
||||||
0x20,0x48,0xa0,0x00,0xb1,0xe0,0x10,0x18,
|
|
||||||
0x0a,0x30,0x81,0x20,0xff,0xe6,0x20,0x08,
|
|
||||||
0xe7,0x20,0xff,0xe6,0x95,0xa0,0x24,0xd4,
|
|
||||||
0x10,0x01,0xca,0x20,0xff,0xe6,0xb0,0xe6,
|
|
||||||
0xc9,0x28,0xd0,0x1f,0xa5,0xe0,0x20,0x0a,
|
|
||||||
0xe7,0xa5,0xe1,0x95,0x78,0x24,0xd4,0x30,
|
|
||||||
0x0b,0xa9,0x01,0x20,0x0a,0xe7,0xa9,0x00,
|
|
||||||
0x95,0x78,0xf6,0x78,0x20,0xff,0xe6,0x30,
|
|
||||||
0xf9,0xb0,0xd3,0x24,0xd4,0x10,0x06,0xc9,
|
|
||||||
0x04,0xb0,0xd0,0x46,0xd4,0xa8,0x85,0xd6,
|
|
||||||
0xb9,0x98,0xe9,0x29,0x55,0x0a,0x85,0xd7,
|
|
||||||
0x68,0xa8,0xb9,0x98,0xe9,0x29,0xaa,0xc5,
|
|
||||||
0xd7,0xb0,0x09,0x98,0x48,0x20,0xff,0xe6,
|
|
||||||
0xa5,0xd6,0x90,0x95,0xb9,0x10,0xea,0x85,
|
|
||||||
0xce,0xb9,0x88,0xea,0x85,0xcf,0x20,0xfc,
|
|
||||||
0xe6,0x4c,0xd8,0xe6,0x6c,0xce,0x00,0xe6,
|
|
||||||
0xe0,0xd0,0x02,0xe6,0xe1,0xb1,0xe0,0x60,
|
|
||||||
0x94,0x77,0xca,0x30,0x03,0x95,0x50,0x60,
|
|
||||||
0xa0,0x66,0x4c,0xe0,0xe3,0xa0,0x00,0xb5,
|
|
||||||
0x50,0x85,0xce,0xb5,0xa0,0x85,0xcf,0xb5,
|
|
||||||
0x78,0xf0,0x0e,0x85,0xcf,0xb1,0xce,0x48,
|
|
||||||
0xc8,0xb1,0xce,0x85,0xcf,0x68,0x85,0xce,
|
|
||||||
0x88,0xe8,0x60,0x20,0x4a,0xe7,0x20,0x15,
|
|
||||||
0xe7,0x98,0x20,0x08,0xe7,0x95,0xa0,0xc5,
|
|
||||||
0xce,0xd0,0x06,0xc5,0xcf,0xd0,0x02,0xf6,
|
|
||||||
0x50,0x60,0x20,0x82,0xe7,0x20,0x59,0xe7,
|
|
||||||
0x20,0x15,0xe7,0x24,0xcf,0x30,0x1b,0xca,
|
|
||||||
0x60,0x20,0x15,0xe7,0xa5,0xcf,0xd0,0x04,
|
|
||||||
0xa5,0xce,0xf0,0xf3,0xa9,0xff,0x20,0x08,
|
|
||||||
0xe7,0x95,0xa0,0x24,0xcf,0x30,0xe9,0x20,
|
|
||||||
0x15,0xe7,0x98,0x38,0xe5,0xce,0x20,0x08,
|
|
||||||
0xe7,0x98,0xe5,0xcf,0x50,0x23,0xa0,0x00,
|
|
||||||
0x10,0x90,0x20,0x6f,0xe7,0x20,0x15,0xe7,
|
|
||||||
0xa5,0xce,0x85,0xda,0xa5,0xcf,0x85,0xdb,
|
|
||||||
0x20,0x15,0xe7,0x18,0xa5,0xce,0x65,0xda,
|
|
||||||
0x20,0x08,0xe7,0xa5,0xcf,0x65,0xdb,0x70,
|
|
||||||
0xdd,0x95,0xa0,0x60,0x20,0x15,0xe7,0xa4,
|
|
||||||
0xce,0xf0,0x05,0x88,0xa5,0xcf,0xf0,0x0c,
|
|
||||||
0x60,0xa5,0x24,0x09,0x07,0xa8,0xc8,0xa9,
|
|
||||||
0xa0,0x20,0xc9,0xe3,0xc4,0x24,0xb0,0xf7,
|
|
||||||
0x60,0x20,0xb1,0xe7,0x20,0x15,0xe7,0xa5,
|
|
||||||
0xcf,0x10,0x0a,0xa9,0xad,0x20,0xc9,0xe3,
|
|
||||||
0x20,0x72,0xe7,0x50,0xef,0x88,0x84,0xd5,
|
|
||||||
0x86,0xcf,0xa6,0xce,0x20,0x1b,0xe5,0xa6,
|
|
||||||
0xcf,0x60,0x20,0x15,0xe7,0xa5,0xce,0x85,
|
|
||||||
0xf6,0xa5,0xcf,0x85,0xf7,0x88,0x84,0xf8,
|
|
||||||
0xc8,0xa9,0x0a,0x85,0xf4,0x84,0xf5,0x60,
|
|
||||||
0x20,0x15,0xe7,0xa5,0xce,0xa4,0xcf,0x10,
|
|
||||||
0xf2,0x20,0x15,0xe7,0xb5,0x50,0x85,0xda,
|
|
||||||
0xb5,0x78,0x85,0xdb,0xa5,0xce,0x91,0xda,
|
|
||||||
0xc8,0xa5,0xcf,0x91,0xda,0xe8,0x60,0x68,
|
|
||||||
0x68,0x24,0xd5,0x10,0x05,0x20,0xcd,0xe3,
|
|
||||||
0x46,0xd5,0x60,0xa0,0xff,0x84,0xd7,0x60,
|
|
||||||
0x20,0xcd,0xef,0xf0,0x07,0xa9,0x25,0x85,
|
|
||||||
0xd6,0x88,0x84,0xd4,0xe8,0x60,0xa5,0xca,
|
|
||||||
0xa4,0xcb,0xd0,0x5a,0xa0,0x41,0xa5,0xfc,
|
|
||||||
0xc9,0x08,0xb0,0x5e,0xa8,0xe6,0xfc,0xa5,
|
|
||||||
0xe0,0x99,0x00,0x01,0xa5,0xe1,0x99,0x08,
|
|
||||||
0x01,0xa5,0xdc,0x99,0x10,0x01,0xa5,0xdd,
|
|
||||||
0x99,0x18,0x01,0x20,0x15,0xe7,0x20,0x6d,
|
|
||||||
0xe5,0x90,0x04,0xa0,0x37,0xd0,0x3b,0xa5,
|
|
||||||
0xe4,0xa4,0xe5,0x85,0xdc,0x84,0xdd,0x2c,
|
|
||||||
0x11,0xd0,0x30,0x4f,0x18,0x69,0x03,0x90,
|
|
||||||
0x01,0xc8,0xa2,0xff,0x86,0xd9,0x9a,0x85,
|
|
||||||
0xe0,0x84,0xe1,0x20,0x79,0xe6,0x24,0xd9,
|
|
||||||
0x10,0x49,0x18,0xa0,0x00,0xa5,0xdc,0x71,
|
|
||||||
0xdc,0xa4,0xdd,0x90,0x01,0xc8,0xc5,0x4c,
|
|
||||||
0xd0,0xd1,0xc4,0x4d,0xd0,0xcd,0xa0,0x34,
|
|
||||||
0x46,0xd9,0x4c,0xe0,0xe3,0xa0,0x4a,0xa5,
|
|
||||||
0xfc,0xf0,0xf7,0xc6,0xfc,0xa8,0xb9,0x0f,
|
|
||||||
0x01,0x85,0xdc,0xb9,0x17,0x01,0x85,0xdd,
|
|
||||||
0xbe,0xff,0x00,0xb9,0x07,0x01,0xa8,0x8a,
|
|
||||||
0x4c,0x7a,0xe8,0xa0,0x63,0x20,0xc4,0xe3,
|
|
||||||
0xa0,0x01,0xb1,0xdc,0xaa,0xc8,0xb1,0xdc,
|
|
||||||
0x20,0x1b,0xe5,0x4c,0xb3,0xe2,0xc6,0xfb,
|
|
||||||
0xa0,0x5b,0xa5,0xfb,0xf0,0xc4,0xa8,0xb5,
|
|
||||||
0x50,0xd9,0x1f,0x01,0xd0,0xf0,0xb5,0x78,
|
|
||||||
0xd9,0x27,0x01,0xd0,0xe9,0xb9,0x2f,0x01,
|
|
||||||
0x85,0xda,0xb9,0x37,0x01,0x85,0xdb,0x20,
|
|
||||||
0x15,0xe7,0xca,0x20,0x93,0xe7,0x20,0x01,
|
|
||||||
0xe8,0xca,0xa4,0xfb,0xb9,0x67,0x01,0x95,
|
|
||||||
0x9f,0xb9,0x5f,0x01,0xa0,0x00,0x20,0x08,
|
|
||||||
0xe7,0x20,0x82,0xe7,0x20,0x59,0xe7,0x20,
|
|
||||||
0x15,0xe7,0xa4,0xfb,0xa5,0xce,0xf0,0x05,
|
|
||||||
0x59,0x37,0x01,0x10,0x12,0xb9,0x3f,0x01,
|
|
||||||
0x85,0xdc,0xb9,0x47,0x01,0x85,0xdd,0xbe,
|
|
||||||
0x4f,0x01,0xb9,0x57,0x01,0xd0,0x87,0xc6,
|
|
||||||
0xfb,0x60,0xa0,0x54,0xa5,0xfb,0xc9,0x08,
|
|
||||||
0xf0,0x9a,0xe6,0xfb,0xa8,0xb5,0x50,0x99,
|
|
||||||
0x20,0x01,0xb5,0x78,0x99,0x28,0x01,0x60,
|
|
||||||
0x20,0x15,0xe7,0xa4,0xfb,0xa5,0xce,0x99,
|
|
||||||
0x5f,0x01,0xa5,0xcf,0x99,0x67,0x01,0xa9,
|
|
||||||
0x01,0x99,0x2f,0x01,0xa9,0x00,0x99,0x37,
|
|
||||||
0x01,0xa5,0xdc,0x99,0x3f,0x01,0xa5,0xdd,
|
|
||||||
0x99,0x47,0x01,0xa5,0xe0,0x99,0x4f,0x01,
|
|
||||||
0xa5,0xe1,0x99,0x57,0x01,0x60,0x20,0x15,
|
|
||||||
0xe7,0xa4,0xfb,0xa5,0xce,0x99,0x2f,0x01,
|
|
||||||
0xa5,0xcf,0x4c,0x66,0xe9,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0xab,0x03,0x03,0x03,0x03,
|
|
||||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
|
|
||||||
0x03,0x03,0x3f,0x3f,0xc0,0xc0,0x3c,0x3c,
|
|
||||||
0x3c,0x3c,0x3c,0x3c,0x3c,0x30,0x0f,0xc0,
|
|
||||||
0xcc,0xff,0x55,0x00,0xab,0xab,0x03,0x03,
|
|
||||||
0xff,0xff,0x55,0xff,0xff,0x55,0xcf,0xcf,
|
|
||||||
0xcf,0xcf,0xcf,0xff,0x55,0xc3,0xc3,0xc3,
|
|
||||||
0x55,0xf0,0xf0,0xcf,0x56,0x56,0x56,0x55,
|
|
||||||
0xff,0xff,0x55,0x03,0x03,0x03,0x03,0x03,
|
|
||||||
0x03,0x03,0xff,0xff,0xff,0x03,0x03,0x03,
|
|
||||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
|
|
||||||
0x03,0x03,0x03,0x03,0x03,0x00,0xab,0x03,
|
|
||||||
0x57,0x03,0x03,0x03,0x03,0x07,0x03,0x03,
|
|
||||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
|
|
||||||
0x03,0x03,0xaa,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0x17,0xff,0xff,0x19,0x5d,0x35,0x4b,0xf2,
|
|
||||||
0xec,0x87,0x6f,0xad,0xb7,0xe2,0xf8,0x54,
|
|
||||||
0x80,0x96,0x85,0x82,0x22,0x10,0x33,0x4a,
|
|
||||||
0x13,0x06,0x0b,0x4a,0x01,0x40,0x47,0x7a,
|
|
||||||
0x00,0xff,0x23,0x09,0x5b,0x16,0xb6,0xcb,
|
|
||||||
0xff,0xff,0xfb,0xff,0xff,0x24,0xf6,0x4e,
|
|
||||||
0x59,0x50,0x00,0xff,0x23,0xa3,0x6f,0x36,
|
|
||||||
0x23,0xd7,0x1c,0x22,0xc2,0xae,0xba,0x23,
|
|
||||||
0xff,0xff,0x21,0x30,0x1e,0x03,0xc4,0x20,
|
|
||||||
0x00,0xc1,0xff,0xff,0xff,0xa0,0x30,0x1e,
|
|
||||||
0xa4,0xd3,0xb6,0xbc,0xaa,0x3a,0x01,0x50,
|
|
||||||
0x7e,0xd8,0xd8,0xa5,0x3c,0xff,0x16,0x5b,
|
|
||||||
0x28,0x03,0xc4,0x1d,0x00,0x0c,0x4e,0x00,
|
|
||||||
0x3e,0x00,0xa6,0xb0,0x00,0xbc,0xc6,0x57,
|
|
||||||
0x8c,0x01,0x27,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xe8,0xff,0xff,0xe8,0xe0,0xe0,0xe0,0xef,
|
|
||||||
0xef,0xe3,0xe3,0xe5,0xe5,0xe7,0xe7,0xee,
|
|
||||||
0xef,0xef,0xe7,0xe7,0xe2,0xef,0xe7,0xe7,
|
|
||||||
0xec,0xec,0xec,0xe7,0xec,0xec,0xec,0xe2,
|
|
||||||
0x00,0xff,0xe8,0xe1,0xe8,0xe8,0xef,0xeb,
|
|
||||||
0xff,0xff,0xe0,0xff,0xff,0xef,0xee,0xef,
|
|
||||||
0xe7,0xe7,0x00,0xff,0xe8,0xe7,0xe7,0xe7,
|
|
||||||
0xe8,0xe1,0xe2,0xee,0xee,0xee,0xee,0xe8,
|
|
||||||
0xff,0xff,0xe1,0xe1,0xef,0xee,0xe7,0xe8,
|
|
||||||
0xee,0xe7,0xff,0xff,0xff,0xee,0xe1,0xef,
|
|
||||||
0xe7,0xe8,0xef,0xef,0xeb,0xe9,0xe8,0xe9,
|
|
||||||
0xe9,0xe8,0xe8,0xe8,0xe8,0xff,0xe8,0xe8,
|
|
||||||
0xe8,0xee,0xe7,0xe8,0xef,0xef,0xee,0xef,
|
|
||||||
0xee,0xef,0xee,0xee,0xef,0xee,0xee,0xee,
|
|
||||||
0xe1,0xe8,0xe8,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xbe,0xb3,0xb2,0xb7,0xb6,0x37,0xd4,0xcf,
|
|
||||||
0xcf,0xa0,0xcc,0xcf,0xce,0x47,0xd3,0xd9,
|
|
||||||
0xce,0xd4,0xc1,0x58,0xcd,0xc5,0xcd,0xa0,
|
|
||||||
0xc6,0xd5,0xcc,0x4c,0xd4,0xcf,0xcf,0xa0,
|
|
||||||
0xcd,0xc1,0xce,0xd9,0xa0,0xd0,0xc1,0xd2,
|
|
||||||
0xc5,0xce,0x53,0xd3,0xd4,0xd2,0xc9,0xce,
|
|
||||||
0x47,0xce,0xcf,0xa0,0xc5,0xce,0x44,0xc2,
|
|
||||||
0xc1,0xc4,0xa0,0xc2,0xd2,0xc1,0xce,0xc3,
|
|
||||||
0x48,0xbe,0xb8,0xa0,0xc7,0xcf,0xd3,0xd5,
|
|
||||||
0xc2,0x53,0xc2,0xc1,0xc4,0xa0,0xd2,0xc5,
|
|
||||||
0xd4,0xd5,0xd2,0x4e,0xbe,0xb8,0xa0,0xc6,
|
|
||||||
0xcf,0xd2,0x53,0xc2,0xc1,0xc4,0xa0,0xce,
|
|
||||||
0xc5,0xd8,0x54,0xd3,0xd4,0xcf,0xd0,0xd0,
|
|
||||||
0xc5,0xc4,0xa0,0xc1,0xd4,0x20,0xaa,0xaa,
|
|
||||||
0xaa,0x20,0xa0,0xc5,0xd2,0xd2,0x0d,0xbe,
|
|
||||||
0xb2,0xb5,0x35,0xd2,0xc1,0xce,0xc7,0x45,
|
|
||||||
0xc4,0xc9,0x4d,0xd3,0xd4,0xd2,0xa0,0xcf,
|
|
||||||
0xd6,0xc6,0x4c,0xdc,0x0d,0xd2,0xc5,0xd4,
|
|
||||||
0xd9,0xd0,0xc5,0xa0,0xcc,0xc9,0xce,0xc5,
|
|
||||||
0x8d,0x3f,0x46,0xd9,0x90,0x03,0x4c,0xc3,
|
|
||||||
0xe8,0xa6,0xcf,0x9a,0xa6,0xce,0xa0,0x8d,
|
|
||||||
0xd0,0x02,0xa0,0x99,0x20,0xc4,0xe3,0x86,
|
|
||||||
0xce,0xba,0x86,0xcf,0xa0,0xfe,0x84,0xd9,
|
|
||||||
0xc8,0x84,0xc8,0x20,0x99,0xe2,0x84,0xf1,
|
|
||||||
0xa2,0x20,0xa9,0x30,0x20,0x91,0xe4,0xe6,
|
|
||||||
0xd9,0xa6,0xce,0xa4,0xc8,0x0a,0x85,0xce,
|
|
||||||
0xc8,0xb9,0x00,0x02,0xc9,0x74,0xf0,0xd2,
|
|
||||||
0x49,0xb0,0xc9,0x0a,0xb0,0xf0,0xc8,0xc8,
|
|
||||||
0x84,0xc8,0xb9,0x00,0x02,0x48,0xb9,0xff,
|
|
||||||
0x01,0xa0,0x00,0x20,0x08,0xe7,0x68,0x95,
|
|
||||||
0xa0,0xa5,0xce,0xc9,0xc7,0xd0,0x03,0x20,
|
|
||||||
0x6f,0xe7,0x4c,0x01,0xe8,0xff,0xff,0xff,
|
|
||||||
0x50,0x20,0x13,0xec,0xd0,0x15,0x20,0x0b,
|
|
||||||
0xec,0xd0,0x10,0x20,0x82,0xe7,0x20,0x6f,
|
|
||||||
0xe7,0x50,0x03,0x20,0x82,0xe7,0x20,0x59,
|
|
||||||
0xe7,0x56,0x50,0x4c,0x36,0xe7,0xff,0xff,
|
|
||||||
0xc1,0xff,0x7f,0xd1,0xcc,0xc7,0xcf,0xce,
|
|
||||||
0xc5,0x9a,0x98,0x8b,0x96,0x95,0x93,0xbf,
|
|
||||||
0xb2,0x32,0x2d,0x2b,0xbc,0xb0,0xac,0xbe,
|
|
||||||
0x35,0x8e,0x61,0xff,0xff,0xff,0xdd,0xfb,
|
|
||||||
0x20,0xc9,0xef,0x15,0x4f,0x10,0x05,0x20,
|
|
||||||
0xc9,0xef,0x35,0x4f,0x95,0x50,0x10,0xcb,
|
|
||||||
0x4c,0xc9,0xef,0x40,0x60,0x8d,0x60,0x8b,
|
|
||||||
0x00,0x7e,0x8c,0x33,0x00,0x00,0x60,0x03,
|
|
||||||
0xbf,0x12,0x00,0x40,0x89,0xc9,0x47,0x9d,
|
|
||||||
0x17,0x68,0x9d,0x0a,0x00,0x40,0x60,0x8d,
|
|
||||||
0x60,0x8b,0x00,0x7e,0x8c,0x3c,0x00,0x00,
|
|
||||||
0x60,0x03,0xbf,0x1b,0x4b,0x67,0xb4,0xa1,
|
|
||||||
0x07,0x8c,0x07,0xae,0xa9,0xac,0xa8,0x67,
|
|
||||||
0x8c,0x07,0xb4,0xaf,0xac,0xb0,0x67,0x9d,
|
|
||||||
0xb2,0xaf,0xac,0xaf,0xa3,0x67,0x8c,0x07,
|
|
||||||
0xa5,0xab,0xaf,0xb0,0xf4,0xae,0xa9,0xb2,
|
|
||||||
0xb0,0x7f,0x0e,0x27,0xb4,0xae,0xa9,0xb2,
|
|
||||||
0xb0,0x7f,0x0e,0x28,0xb4,0xae,0xa9,0xb2,
|
|
||||||
0xb0,0x64,0x07,0xa6,0xa9,0x67,0xaf,0xb4,
|
|
||||||
0xaf,0xa7,0x78,0xb4,0xa5,0xac,0x78,0x7f,
|
|
||||||
0x02,0xad,0xa5,0xb2,0x67,0xa2,0xb5,0xb3,
|
|
||||||
0xaf,0xa7,0xee,0xb2,0xb5,0xb4,0xa5,0xb2,
|
|
||||||
0x7e,0x8c,0x39,0xb4,0xb8,0xa5,0xae,0x67,
|
|
||||||
0xb0,0xa5,0xb4,0xb3,0x27,0xaf,0xb4,0x07,
|
|
||||||
0x9d,0x19,0xb2,0xaf,0xa6,0x7f,0x05,0x37,
|
|
||||||
0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x28,
|
|
||||||
0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x2a,
|
|
||||||
0xb4,0xb5,0xb0,0xae,0xa9,0xe4,0xae,0xa5,
|
|
||||||
0x00,0xff,0xff,0x47,0xa2,0xa1,0xb4,0x7f,
|
|
||||||
0x0d,0x30,0xad,0xa9,0xa4,0x7f,0x0d,0x23,
|
|
||||||
0xad,0xa9,0xa4,0x67,0xac,0xac,0xa1,0xa3,
|
|
||||||
0x00,0x40,0x80,0xc0,0xc1,0x80,0x00,0x47,
|
|
||||||
0x8c,0x68,0x8c,0xdb,0x67,0x9b,0x68,0x9b,
|
|
||||||
0x50,0x8c,0x63,0x8c,0x7f,0x01,0x51,0x07,
|
|
||||||
0x88,0x29,0x84,0x80,0xc4,0x80,0x57,0x71,
|
|
||||||
0x07,0x88,0x14,0xed,0xa5,0xad,0xaf,0xac,
|
|
||||||
0xed,0xa5,0xad,0xa9,0xa8,0xf2,0xaf,0xac,
|
|
||||||
0xaf,0xa3,0x71,0x08,0x88,0xae,0xa5,0xac,
|
|
||||||
0x68,0x83,0x08,0x68,0x9d,0x08,0x71,0x07,
|
|
||||||
0x88,0x60,0x76,0xb4,0xaf,0xae,0x76,0x8d,
|
|
||||||
0x76,0x8b,0x51,0x07,0x88,0x19,0xb8,0xa4,
|
|
||||||
0xae,0xb2,0xf2,0xb3,0xb5,0xf3,0xa2,0xa1,
|
|
||||||
0xee,0xa7,0xb3,0xe4,0xae,0xb2,0xeb,0xa5,
|
|
||||||
0xa5,0xb0,0x51,0x07,0x88,0x39,0x81,0xc1,
|
|
||||||
0x4f,0x7f,0x0f,0x2f,0x00,0x51,0x06,0x88,
|
|
||||||
0x29,0xc2,0x0c,0x82,0x57,0x8c,0x6a,0x8c,
|
|
||||||
0x42,0xae,0xa5,0xa8,0xb4,0x60,0xae,0xa5,
|
|
||||||
0xa8,0xb4,0x4f,0x7e,0x1e,0x35,0x8c,0x27,
|
|
||||||
0x51,0x07,0x88,0x09,0x8b,0xfe,0xe4,0xaf,
|
|
||||||
0xad,0xf2,0xaf,0xe4,0xae,0xa1,0xdc,0xde,
|
|
||||||
0x9c,0xdd,0x9c,0xde,0xdd,0x9e,0xc3,0xdd,
|
|
||||||
0xcf,0xca,0xcd,0xcb,0x00,0x47,0x9d,0xad,
|
|
||||||
0xa5,0xad,0xaf,0xac,0x76,0x9d,0xad,0xa5,
|
|
||||||
0xad,0xa9,0xa8,0xe6,0xa6,0xaf,0x60,0x8c,
|
|
||||||
0x20,0xaf,0xb4,0xb5,0xa1,0xf2,0xac,0xa3,
|
|
||||||
0xf2,0xa3,0xb3,0x60,0x8c,0x20,0xac,0xa5,
|
|
||||||
0xa4,0xee,0xb5,0xb2,0x60,0xae,0xb5,0xb2,
|
|
||||||
0xf4,0xb3,0xa9,0xac,0x60,0x8c,0x20,0xb4,
|
|
||||||
0xb3,0xa9,0xac,0x7a,0x7e,0x9a,0x22,0x20,
|
|
||||||
0x00,0x60,0x03,0xbf,0x60,0x03,0xbf,0x1f,
|
|
||||||
0x20,0xb1,0xe7,0xe8,0xe8,0xb5,0x4f,0x85,
|
|
||||||
0xda,0xb5,0x77,0x85,0xdb,0xb4,0x4e,0x98,
|
|
||||||
0xd5,0x76,0xb0,0x09,0xb1,0xda,0x20,0xc9,
|
|
||||||
0xe3,0xc8,0x4c,0x0f,0xee,0xa9,0xff,0x85,
|
|
||||||
0xd5,0x60,0xe8,0xa9,0x00,0x95,0x78,0x95,
|
|
||||||
0xa0,0xb5,0x77,0x38,0xf5,0x4f,0x95,0x50,
|
|
||||||
0x4c,0x23,0xe8,0xff,0x20,0x15,0xe7,0xa5,
|
|
||||||
0xcf,0xd0,0x28,0xa5,0xce,0x60,0x20,0x34,
|
|
||||||
0xee,0xa4,0xc8,0xc9,0x30,0xb0,0x21,0xc0,
|
|
||||||
0x28,0xb0,0x1d,0x60,0xea,0xea,0x20,0x34,
|
|
||||||
0xee,0x60,0xea,0x8a,0xa2,0x01,0xb4,0xce,
|
|
||||||
0x94,0x4c,0xb4,0x48,0x94,0xca,0xca,0xf0,
|
|
||||||
0xf5,0xaa,0x60,0xa0,0x77,0x4c,0xe0,0xe3,
|
|
||||||
0xa0,0x7b,0xd0,0xf9,0x20,0x54,0xe2,0xa5,
|
|
||||||
0xda,0xd0,0x07,0xa5,0xdb,0xd0,0x03,0x4c,
|
|
||||||
0x7e,0xe7,0x06,0xce,0x26,0xcf,0x26,0xe6,
|
|
||||||
0x26,0xe7,0xa5,0xe6,0xc5,0xda,0xa5,0xe7,
|
|
||||||
0xe5,0xdb,0x90,0x0a,0x85,0xe7,0xa5,0xe6,
|
|
||||||
0xe5,0xda,0x85,0xe6,0xe6,0xce,0x88,0xd0,
|
|
||||||
0xe1,0x60,0xff,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0x20,0x15,0xe7,0x6c,0xce,0x00,0xa5,0x4c,
|
|
||||||
0xd0,0x02,0xc6,0x4d,0xc6,0x4c,0xa5,0x48,
|
|
||||||
0xd0,0x02,0xc6,0x49,0xc6,0x48,0xa0,0x00,
|
|
||||||
0xb1,0x4c,0x91,0x48,0xa5,0xca,0xc5,0x4c,
|
|
||||||
0xa5,0xcb,0xe5,0x4d,0x90,0xe0,0x4c,0x53,
|
|
||||||
0xee,0xc9,0x28,0xb0,0x9b,0xa8,0xa5,0xc8,
|
|
||||||
0x60,0xea,0xea,0x98,0xaa,0xa0,0x6e,0x20,
|
|
||||||
0xc4,0xe3,0x8a,0xa8,0x20,0xc4,0xe3,0xa0,
|
|
||||||
0x72,0x4c,0xc4,0xe3,0x20,0x15,0xe7,0x06,
|
|
||||||
0xce,0x26,0xcf,0x30,0xfa,0xb0,0xdc,0xd0,
|
|
||||||
0x04,0xc5,0xce,0xb0,0xd6,0x60,0x20,0x15,
|
|
||||||
0xe7,0xb1,0xce,0x94,0x9f,0x4c,0x08,0xe7,
|
|
||||||
0x20,0x34,0xee,0xa5,0xce,0x48,0x20,0x15,
|
|
||||||
0xe7,0x68,0x91,0xce,0x60,0xff,0xff,0xff,
|
|
||||||
0x20,0x6c,0xee,0xa5,0xce,0x85,0xe6,0xa5,
|
|
||||||
0xcf,0x85,0xe7,0x4c,0x44,0xe2,0x20,0xe4,
|
|
||||||
0xee,0x4c,0x34,0xe1,0x20,0xe4,0xee,0xb4,
|
|
||||||
0x78,0xb5,0x50,0x69,0xfe,0xb0,0x01,0x88,
|
|
||||||
0x85,0xda,0x84,0xdb,0x18,0x65,0xce,0x95,
|
|
||||||
0x50,0x98,0x65,0xcf,0x95,0x78,0xa0,0x00,
|
|
||||||
0xb5,0x50,0xd1,0xda,0xc8,0xb5,0x78,0xf1,
|
|
||||||
0xda,0xb0,0x80,0x4c,0x23,0xe8,0x20,0x15,
|
|
||||||
0xe7,0xa5,0x4e,0x20,0x08,0xe7,0xa5,0x4f,
|
|
||||||
0xd0,0x04,0xc5,0x4e,0x69,0x00,0x29,0x7f,
|
|
||||||
0x85,0x4f,0x95,0xa0,0xa0,0x11,0xa5,0x4f,
|
|
||||||
0x0a,0x18,0x69,0x40,0x0a,0x26,0x4e,0x26,
|
|
||||||
0x4f,0x88,0xd0,0xf2,0xa5,0xce,0x20,0x08,
|
|
||||||
0xe7,0xa5,0xcf,0x95,0xa0,0x4c,0x7a,0xe2,
|
|
||||||
0x20,0x15,0xe7,0xa4,0xce,0xc4,0x4c,0xa5,
|
|
||||||
0xcf,0xe5,0x4d,0x90,0x1f,0x84,0x48,0xa5,
|
|
||||||
0xcf,0x85,0x49,0x4c,0xb6,0xee,0x20,0x15,
|
|
||||||
0xe7,0xa4,0xce,0xc4,0xca,0xa5,0xcf,0xe5,
|
|
||||||
0xcb,0xb0,0x09,0x84,0x4a,0xa5,0xcf,0x85,
|
|
||||||
0x4b,0x4c,0xb7,0xe5,0x4c,0xcb,0xee,0xea,
|
|
||||||
0xea,0xea,0xea,0x20,0xc9,0xef,0x20,0x71,
|
|
||||||
0xe1,0x4c,0xbf,0xef,0x20,0x03,0xee,0xa9,
|
|
||||||
0xff,0x85,0xc8,0xa9,0x74,0x8d,0x00,0x02,
|
|
||||||
0x60,0x20,0x36,0xe7,0xe8,0x20,0x36,0xe7,
|
|
||||||
0xb5,0x50,0x60,0xa9,0x00,0x85,0x4a,0x85,
|
|
||||||
0x4c,0xa9,0x08,0x85,0x4b,0xa9,0x10,0x85,
|
|
||||||
0x4d,0x4c,0xad,0xe5,0xd5,0x78,0xd0,0x01,
|
|
||||||
0x18,0x4c,0x02,0xe1,0x20,0xb7,0xe5,0x4c,
|
|
||||||
0x36,0xe8,0x20,0xb7,0xe5,0x4c,0x5b,0xe8,
|
|
||||||
0xe0,0x80,0xd0,0x01,0x88,0x4c,0x0c,0xe0
|
|
||||||
];
|
|
||||||
return {
|
|
||||||
start: function basic_start() {
|
|
||||||
return 0xe0;
|
|
||||||
},
|
|
||||||
end: function basic_end() {
|
|
||||||
return 0xef;
|
|
||||||
},
|
|
||||||
read: function basic_read(page, off) {
|
|
||||||
return ram[(page - 0xe0) << 8 | off];
|
|
||||||
},
|
|
||||||
write: function basic_write(page, off, val) {
|
|
||||||
ram[(page - 0xe0) << 8 | off] = val;
|
|
||||||
},
|
|
||||||
|
|
||||||
getState: function() {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
|
|
||||||
setState: function() {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
367
js/roms/basic.ts
Normal file
367
js/roms/basic.ts
Normal file
@ -0,0 +1,367 @@
|
|||||||
|
import { byte } from 'js/types';
|
||||||
|
|
||||||
|
export default class Basic {
|
||||||
|
ram = [
|
||||||
|
0x4c, 0xb0, 0xe2, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x60,
|
||||||
|
0x8a, 0x29, 0x20, 0xf0, 0x23, 0xa9, 0xa0, 0x85, 0xe4, 0x4c, 0xc9, 0xe3,
|
||||||
|
0xa9, 0x20, 0xc5, 0x24, 0xb0, 0x0c, 0xa9, 0x8d, 0xa0, 0x07, 0x20, 0xc9,
|
||||||
|
0xe3, 0xa9, 0xa0, 0x88, 0xd0, 0xf8, 0xa0, 0x00, 0xb1, 0xe2, 0xe6, 0xe2,
|
||||||
|
0xd0, 0x02, 0xe6, 0xe3, 0x60, 0x20, 0x15, 0xe7, 0x20, 0x76, 0xe5, 0xa5,
|
||||||
|
0xe2, 0xc5, 0xe6, 0xa5, 0xe3, 0xe5, 0xe7, 0xb0, 0xef, 0x20, 0x6d, 0xe0,
|
||||||
|
0x4c, 0x3b, 0xe0, 0xa5, 0xca, 0x85, 0xe2, 0xa5, 0xcb, 0x85, 0xe3, 0xa5,
|
||||||
|
0x4c, 0x85, 0xe6, 0xa5, 0x4d, 0x85, 0xe7, 0xd0, 0xde, 0x20, 0x15, 0xe7,
|
||||||
|
0x20, 0x6d, 0xe5, 0xa5, 0xe4, 0x85, 0xe2, 0xa5, 0xe5, 0x85, 0xe3, 0xb0,
|
||||||
|
0xc7, 0x86, 0xd8, 0xa9, 0xa0, 0x85, 0xfa, 0x20, 0x2a, 0xe0, 0x98, 0x85,
|
||||||
|
0xe4, 0x20, 0x2a, 0xe0, 0xaa, 0x20, 0x2a, 0xe0, 0x20, 0x1b, 0xe5, 0x20,
|
||||||
|
0x18, 0xe0, 0x84, 0xfa, 0xaa, 0x10, 0x18, 0x0a, 0x10, 0xe9, 0xa5, 0xe4,
|
||||||
|
0xd0, 0x03, 0x20, 0x11, 0xe0, 0x8a, 0x20, 0xc9, 0xe3, 0xa9, 0x25, 0x20,
|
||||||
|
0x1a, 0xe0, 0xaa, 0x30, 0xf5, 0x85, 0xe4, 0xc9, 0x01, 0xd0, 0x05, 0xa6,
|
||||||
|
0xd8, 0x4c, 0xcd, 0xe3, 0x48, 0x84, 0xce, 0xa2, 0xed, 0x86, 0xcf, 0xc9,
|
||||||
|
0x51, 0x90, 0x04, 0xc6, 0xcf, 0xe9, 0x50, 0x48, 0xb1, 0xce, 0xaa, 0x88,
|
||||||
|
0xb1, 0xce, 0x10, 0xfa, 0xe0, 0xc0, 0xb0, 0x04, 0xe0, 0x00, 0x30, 0xf2,
|
||||||
|
0xaa, 0x68, 0xe9, 0x01, 0xd0, 0xe9, 0x24, 0xe4, 0x30, 0x03, 0x20, 0xf8,
|
||||||
|
0xef, 0xb1, 0xce, 0x10, 0x10, 0xaa, 0x29, 0x3f, 0x85, 0xe4, 0x18, 0x69,
|
||||||
|
0xa0, 0x20, 0xc9, 0xe3, 0x88, 0xe0, 0xc0, 0x90, 0xec, 0x20, 0x0c, 0xe0,
|
||||||
|
0x68, 0xc9, 0x5d, 0xf0, 0xa4, 0xc9, 0x28, 0xd0, 0x8a, 0xf0, 0x9e, 0x20,
|
||||||
|
0x18, 0xe1, 0x95, 0x50, 0xd5, 0x78, 0x90, 0x11, 0xa0, 0x2b, 0x4c, 0xe0,
|
||||||
|
0xe3, 0x20, 0x34, 0xee, 0xd5, 0x50, 0x90, 0xf4, 0x20, 0xe4, 0xef, 0x95,
|
||||||
|
0x78, 0x4c, 0x23, 0xe8, 0x20, 0x34, 0xee, 0xf0, 0xe7, 0x38, 0xe9, 0x01,
|
||||||
|
0x60, 0x20, 0x18, 0xe1, 0x95, 0x50, 0x18, 0xf5, 0x78, 0x4c, 0x02, 0xe1,
|
||||||
|
0xa0, 0x14, 0xd0, 0xd6, 0x20, 0x18, 0xe1, 0xe8, 0xb5, 0x50, 0x85, 0xda,
|
||||||
|
0x65, 0xce, 0x48, 0xa8, 0xb5, 0x78, 0x85, 0xdb, 0x65, 0xcf, 0x48, 0xc4,
|
||||||
|
0xca, 0xe5, 0xcb, 0xb0, 0xe3, 0xa5, 0xda, 0x69, 0xfe, 0x85, 0xda, 0xa9,
|
||||||
|
0xff, 0xa8, 0x65, 0xdb, 0x85, 0xdb, 0xc8, 0xb1, 0xda, 0xd9, 0xcc, 0x00,
|
||||||
|
0xd0, 0x0f, 0x98, 0xf0, 0xf5, 0x68, 0x91, 0xda, 0x99, 0xcc, 0x00, 0x88,
|
||||||
|
0x10, 0xf7, 0xe8, 0x60, 0xea, 0xa0, 0x80, 0xd0, 0x95, 0xa9, 0x00, 0x20,
|
||||||
|
0x0a, 0xe7, 0xa0, 0x02, 0x94, 0x78, 0x20, 0x0a, 0xe7, 0xa9, 0xbf, 0x20,
|
||||||
|
0xc9, 0xe3, 0xa0, 0x00, 0x20, 0x9e, 0xe2, 0x94, 0x78, 0xea, 0xea, 0xea,
|
||||||
|
0xb5, 0x51, 0x85, 0xce, 0xb5, 0x79, 0x85, 0xcf, 0xe8, 0xe8, 0x20, 0xbc,
|
||||||
|
0xe1, 0xb5, 0x4e, 0xd5, 0x76, 0xb0, 0x15, 0xf6, 0x4e, 0xa8, 0xb1, 0xce,
|
||||||
|
0xb4, 0x50, 0xc4, 0xe4, 0x90, 0x04, 0xa0, 0x83, 0xd0, 0xc1, 0x91, 0xda,
|
||||||
|
0xf6, 0x50, 0x90, 0xe5, 0xb4, 0x50, 0x8a, 0x91, 0xda, 0xe8, 0xe8, 0x60,
|
||||||
|
0xb5, 0x51, 0x85, 0xda, 0x38, 0xe9, 0x02, 0x85, 0xe4, 0xb5, 0x79, 0x85,
|
||||||
|
0xdb, 0xe9, 0x00, 0x85, 0xe5, 0xa0, 0x00, 0xb1, 0xe4, 0x18, 0xe5, 0xda,
|
||||||
|
0x85, 0xe4, 0x60, 0xb5, 0x53, 0x85, 0xce, 0xb5, 0x7b, 0x85, 0xcf, 0xb5,
|
||||||
|
0x51, 0x85, 0xda, 0xb5, 0x79, 0x85, 0xdb, 0xe8, 0xe8, 0xe8, 0xa0, 0x00,
|
||||||
|
0x94, 0x78, 0x94, 0xa0, 0xc8, 0x94, 0x50, 0xb5, 0x4d, 0xd5, 0x75, 0x08,
|
||||||
|
0x48, 0xb5, 0x4f, 0xd5, 0x77, 0x90, 0x07, 0x68, 0x28, 0xb0, 0x02, 0x56,
|
||||||
|
0x50, 0x60, 0xa8, 0xb1, 0xce, 0x85, 0xe4, 0x68, 0xa8, 0x28, 0xb0, 0xf3,
|
||||||
|
0xb1, 0xda, 0xc5, 0xe4, 0xd0, 0xed, 0xf6, 0x4f, 0xf6, 0x4d, 0xb0, 0xd7,
|
||||||
|
0x20, 0xd7, 0xe1, 0x4c, 0x36, 0xe7, 0x20, 0x54, 0xe2, 0x06, 0xce, 0x26,
|
||||||
|
0xcf, 0x90, 0x0d, 0x18, 0xa5, 0xe6, 0x65, 0xda, 0x85, 0xe6, 0xa5, 0xe7,
|
||||||
|
0x65, 0xdb, 0x85, 0xe7, 0x88, 0xf0, 0x09, 0x06, 0xe6, 0x26, 0xe7, 0x10,
|
||||||
|
0xe4, 0x4c, 0x7e, 0xe7, 0xa5, 0xe6, 0x20, 0x08, 0xe7, 0xa5, 0xe7, 0x95,
|
||||||
|
0xa0, 0x06, 0xe5, 0x90, 0x28, 0x4c, 0x6f, 0xe7, 0xa9, 0x55, 0x85, 0xe5,
|
||||||
|
0x20, 0x5b, 0xe2, 0xa5, 0xce, 0x85, 0xda, 0xa5, 0xcf, 0x85, 0xdb, 0x20,
|
||||||
|
0x15, 0xe7, 0x84, 0xe6, 0x84, 0xe7, 0xa5, 0xcf, 0x10, 0x09, 0xca, 0x06,
|
||||||
|
0xe5, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa0, 0x10, 0x60, 0x20, 0x6c,
|
||||||
|
0xee, 0xf0, 0xc5, 0xff, 0xc9, 0x84, 0xd0, 0x02, 0x46, 0xf8, 0xc9, 0xdf,
|
||||||
|
0xf0, 0x11, 0xc9, 0x9b, 0xf0, 0x06, 0x99, 0x00, 0x02, 0xc8, 0x10, 0x0a,
|
||||||
|
0xa0, 0x8b, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0x88, 0x30, 0xf6, 0x20, 0x03,
|
||||||
|
0xe0, 0xea, 0xea, 0x20, 0xc9, 0xe3, 0xc9, 0x8d, 0xd0, 0xd6, 0xa9, 0xdf,
|
||||||
|
0x99, 0x00, 0x02, 0x60, 0x20, 0xd3, 0xef, 0x20, 0xcd, 0xe3, 0x46, 0xd9,
|
||||||
|
0xa9, 0xbe, 0x20, 0xc9, 0xe3, 0xa0, 0x00, 0x84, 0xfa, 0x24, 0xf8, 0x10,
|
||||||
|
0x0c, 0xa6, 0xf6, 0xa5, 0xf7, 0x20, 0x1b, 0xe5, 0xa9, 0xa0, 0x20, 0xc9,
|
||||||
|
0xe3, 0xa2, 0xff, 0x9a, 0x20, 0x9e, 0xe2, 0x84, 0xf1, 0x8a, 0x85, 0xc8,
|
||||||
|
0xa2, 0x20, 0x20, 0x91, 0xe4, 0xa5, 0xc8, 0x69, 0x00, 0x85, 0xe0, 0xa9,
|
||||||
|
0x00, 0xaa, 0x69, 0x02, 0x85, 0xe1, 0xa1, 0xe0, 0x29, 0xf0, 0xc9, 0xb0,
|
||||||
|
0xf0, 0x03, 0x4c, 0x83, 0xe8, 0xa0, 0x02, 0xb1, 0xe0, 0x99, 0xcd, 0x00,
|
||||||
|
0x88, 0xd0, 0xf8, 0x20, 0x8a, 0xe3, 0xa5, 0xf1, 0xe5, 0xc8, 0xc9, 0x04,
|
||||||
|
0xf0, 0xa8, 0x91, 0xe0, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe4, 0xa5, 0xcb,
|
||||||
|
0xe9, 0x00, 0x85, 0xe5, 0xa5, 0xe4, 0xc5, 0xcc, 0xa5, 0xe5, 0xe5, 0xcd,
|
||||||
|
0x90, 0x45, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe6, 0xa5, 0xcb, 0xe9, 0x00,
|
||||||
|
0x85, 0xe7, 0xb1, 0xca, 0x91, 0xe6, 0xe6, 0xca, 0xd0, 0x02, 0xe6, 0xcb,
|
||||||
|
0xa5, 0xe2, 0xc5, 0xca, 0xa5, 0xe3, 0xe5, 0xcb, 0xb0, 0xe0, 0xb5, 0xe4,
|
||||||
|
0x95, 0xca, 0xca, 0x10, 0xf9, 0xb1, 0xe0, 0xa8, 0x88, 0xb1, 0xe0, 0x91,
|
||||||
|
0xe6, 0x98, 0xd0, 0xf8, 0x24, 0xf8, 0x10, 0x09, 0xb5, 0xf7, 0x75, 0xf5,
|
||||||
|
0x95, 0xf7, 0xe8, 0xf0, 0xf7, 0x10, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xa0,
|
||||||
|
0x14, 0xd0, 0x71, 0x20, 0x15, 0xe7, 0xa5, 0xe2, 0x85, 0xe6, 0xa5, 0xe3,
|
||||||
|
0x85, 0xe7, 0x20, 0x75, 0xe5, 0xa5, 0xe2, 0x85, 0xe4, 0xa5, 0xe3, 0x85,
|
||||||
|
0xe5, 0xd0, 0x0e, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0xa5, 0xe6, 0x85,
|
||||||
|
0xe2, 0xa5, 0xe7, 0x85, 0xe3, 0xa0, 0x00, 0xa5, 0xca, 0xc5, 0xe4, 0xa5,
|
||||||
|
0xcb, 0xe5, 0xe5, 0xb0, 0x16, 0xa5, 0xe4, 0xd0, 0x02, 0xc6, 0xe5, 0xc6,
|
||||||
|
0xe4, 0xa5, 0xe6, 0xd0, 0x02, 0xc6, 0xe7, 0xc6, 0xe6, 0xb1, 0xe4, 0x91,
|
||||||
|
0xe6, 0x90, 0xe0, 0xa5, 0xe6, 0x85, 0xca, 0xa5, 0xe7, 0x85, 0xcb, 0x60,
|
||||||
|
0x20, 0xc9, 0xe3, 0xc8, 0xb9, 0x00, 0xeb, 0x30, 0xf7, 0xc9, 0x8d, 0xd0,
|
||||||
|
0x06, 0xa9, 0x00, 0x85, 0x24, 0xa9, 0x8d, 0xe6, 0x24, 0x2c, 0xf2, 0xd0,
|
||||||
|
0x30, 0xfb, 0x8d, 0xf2, 0xd0, 0x60, 0xa0, 0x06, 0x20, 0xd3, 0xee, 0x24,
|
||||||
|
0xd9, 0x30, 0x03, 0x4c, 0xb6, 0xe2, 0x4c, 0x9a, 0xeb, 0x2a, 0x69, 0xa0,
|
||||||
|
0xdd, 0x00, 0x02, 0xd0, 0x53, 0xb1, 0xfe, 0x0a, 0x30, 0x06, 0x88, 0xb1,
|
||||||
|
0xfe, 0x30, 0x29, 0xc8, 0x86, 0xc8, 0x98, 0x48, 0xa2, 0x00, 0xa1, 0xfe,
|
||||||
|
0xaa, 0x4a, 0x49, 0x48, 0x11, 0xfe, 0xc9, 0xc0, 0x90, 0x01, 0xe8, 0xc8,
|
||||||
|
0xd0, 0xf3, 0x68, 0xa8, 0x8a, 0x4c, 0xc0, 0xe4, 0xe6, 0xf1, 0xa6, 0xf1,
|
||||||
|
0xf0, 0xbc, 0x9d, 0x00, 0x02, 0x60, 0xa6, 0xc8, 0xa9, 0xa0, 0xe8, 0xdd,
|
||||||
|
0x00, 0x02, 0xb0, 0xfa, 0xb1, 0xfe, 0x29, 0x3f, 0x4a, 0xd0, 0xb6, 0xbd,
|
||||||
|
0x00, 0x02, 0xb0, 0x06, 0x69, 0x3f, 0xc9, 0x1a, 0x90, 0x6f, 0x69, 0x4f,
|
||||||
|
0xc9, 0x0a, 0x90, 0x69, 0xa6, 0xfd, 0xc8, 0xb1, 0xfe, 0x29, 0xe0, 0xc9,
|
||||||
|
0x20, 0xf0, 0x7a, 0xb5, 0xa8, 0x85, 0xc8, 0xb5, 0xd1, 0x85, 0xf1, 0x88,
|
||||||
|
0xb1, 0xfe, 0x0a, 0x10, 0xfa, 0x88, 0xb0, 0x38, 0x0a, 0x30, 0x35, 0xb4,
|
||||||
|
0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, 0x10, 0xda, 0xf0, 0xb3, 0xc9, 0x7e,
|
||||||
|
0xb0, 0x22, 0xca, 0x10, 0x04, 0xa0, 0x06, 0x10, 0x29, 0x94, 0x80, 0xa4,
|
||||||
|
0xff, 0x94, 0x58, 0xa4, 0xc8, 0x94, 0xa8, 0xa4, 0xf1, 0x94, 0xd1, 0x29,
|
||||||
|
0x1f, 0xa8, 0xb9, 0x20, 0xec, 0x0a, 0xa8, 0xa9, 0x76, 0x2a, 0x85, 0xff,
|
||||||
|
0xd0, 0x01, 0xc8, 0xc8, 0x86, 0xfd, 0xb1, 0xfe, 0x30, 0x84, 0xd0, 0x05,
|
||||||
|
0xa0, 0x0e, 0x4c, 0xe0, 0xe3, 0xc9, 0x03, 0xb0, 0xc3, 0x4a, 0xa6, 0xc8,
|
||||||
|
0xe8, 0xbd, 0x00, 0x02, 0x90, 0x04, 0xc9, 0xa2, 0xf0, 0x0a, 0xc9, 0xdf,
|
||||||
|
0xf0, 0x06, 0x86, 0xc8, 0x20, 0x1c, 0xe4, 0xc8, 0x88, 0xa6, 0xfd, 0xb1,
|
||||||
|
0xfe, 0x88, 0x0a, 0x10, 0xcf, 0xb4, 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8,
|
||||||
|
0xb1, 0xfe, 0x29, 0x9f, 0xd0, 0xed, 0x85, 0xf2, 0x85, 0xf3, 0x98, 0x48,
|
||||||
|
0x86, 0xfd, 0xb4, 0xd0, 0x84, 0xc9, 0x18, 0xa9, 0x0a, 0x85, 0xf9, 0xa2,
|
||||||
|
0x00, 0xc8, 0xb9, 0x00, 0x02, 0x29, 0x0f, 0x65, 0xf2, 0x48, 0x8a, 0x65,
|
||||||
|
0xf3, 0x30, 0x1c, 0xaa, 0x68, 0xc6, 0xf9, 0xd0, 0xf2, 0x85, 0xf2, 0x86,
|
||||||
|
0xf3, 0xc4, 0xf1, 0xd0, 0xde, 0xa4, 0xc9, 0xc8, 0x84, 0xf1, 0x20, 0x1c,
|
||||||
|
0xe4, 0x68, 0xa8, 0xa5, 0xf3, 0xb0, 0xa9, 0xa0, 0x00, 0x10, 0x8b, 0x85,
|
||||||
|
0xf3, 0x86, 0xf2, 0xa2, 0x04, 0x86, 0xc9, 0xa9, 0xb0, 0x85, 0xf9, 0xa5,
|
||||||
|
0xf2, 0xdd, 0x63, 0xe5, 0xa5, 0xf3, 0xfd, 0x68, 0xe5, 0x90, 0x0d, 0x85,
|
||||||
|
0xf3, 0xa5, 0xf2, 0xfd, 0x63, 0xe5, 0x85, 0xf2, 0xe6, 0xf9, 0xd0, 0xe7,
|
||||||
|
0xa5, 0xf9, 0xe8, 0xca, 0xf0, 0x0e, 0xc9, 0xb0, 0xf0, 0x02, 0x85, 0xc9,
|
||||||
|
0x24, 0xc9, 0x30, 0x04, 0xa5, 0xfa, 0xf0, 0x0b, 0x20, 0xc9, 0xe3, 0x24,
|
||||||
|
0xf8, 0x10, 0x04, 0x99, 0x00, 0x02, 0xc8, 0xca, 0x10, 0xc1, 0x60, 0x01,
|
||||||
|
0x0a, 0x64, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x03, 0x27, 0xa5, 0xca, 0x85,
|
||||||
|
0xe6, 0xa5, 0xcb, 0x85, 0xe7, 0xe8, 0xa5, 0xe7, 0x85, 0xe5, 0xa5, 0xe6,
|
||||||
|
0x85, 0xe4, 0xc5, 0x4c, 0xa5, 0xe5, 0xe5, 0x4d, 0xb0, 0x26, 0xa0, 0x01,
|
||||||
|
0xb1, 0xe4, 0xe5, 0xce, 0xc8, 0xb1, 0xe4, 0xe5, 0xcf, 0xb0, 0x19, 0xa0,
|
||||||
|
0x00, 0xa5, 0xe6, 0x71, 0xe4, 0x85, 0xe6, 0x90, 0x03, 0xe6, 0xe7, 0x18,
|
||||||
|
0xc8, 0xa5, 0xce, 0xf1, 0xe4, 0xc8, 0xa5, 0xcf, 0xf1, 0xe4, 0xb0, 0xca,
|
||||||
|
0x60, 0x46, 0xf8, 0xa5, 0x4c, 0x85, 0xca, 0xa5, 0x4d, 0x85, 0xcb, 0xa5,
|
||||||
|
0x4a, 0x85, 0xcc, 0xa5, 0x4b, 0x85, 0xcd, 0xa9, 0x00, 0x85, 0xfb, 0x85,
|
||||||
|
0xfc, 0x85, 0xfe, 0xa9, 0x00, 0x85, 0x1d, 0x60, 0xa5, 0xd0, 0x69, 0x05,
|
||||||
|
0x85, 0xd2, 0xa5, 0xd1, 0x69, 0x00, 0x85, 0xd3, 0xa5, 0xd2, 0xc5, 0xca,
|
||||||
|
0xa5, 0xd3, 0xe5, 0xcb, 0x90, 0x03, 0x4c, 0x6b, 0xe3, 0xa5, 0xce, 0x91,
|
||||||
|
0xd0, 0xa5, 0xcf, 0xc8, 0x91, 0xd0, 0xa5, 0xd2, 0xc8, 0x91, 0xd0, 0xa5,
|
||||||
|
0xd3, 0xc8, 0x91, 0xd0, 0xa9, 0x00, 0xc8, 0x91, 0xd0, 0xc8, 0x91, 0xd0,
|
||||||
|
0xa5, 0xd2, 0x85, 0xcc, 0xa5, 0xd3, 0x85, 0xcd, 0xa5, 0xd0, 0x90, 0x43,
|
||||||
|
0x85, 0xce, 0x84, 0xcf, 0x20, 0xff, 0xe6, 0x30, 0x0e, 0xc9, 0x40, 0xf0,
|
||||||
|
0x0a, 0x4c, 0x28, 0xe6, 0x06, 0xc9, 0x49, 0xd0, 0x07, 0xa9, 0x49, 0x85,
|
||||||
|
0xcf, 0x20, 0xff, 0xe6, 0xa5, 0x4b, 0x85, 0xd1, 0xa5, 0x4a, 0x85, 0xd0,
|
||||||
|
0xc5, 0xcc, 0xa5, 0xd1, 0xe5, 0xcd, 0xb0, 0x94, 0xb1, 0xd0, 0xc8, 0xc5,
|
||||||
|
0xce, 0xd0, 0x06, 0xb1, 0xd0, 0xc5, 0xcf, 0xf0, 0x0e, 0xc8, 0xb1, 0xd0,
|
||||||
|
0x48, 0xc8, 0xb1, 0xd0, 0x85, 0xd1, 0x68, 0xa0, 0x00, 0xf0, 0xdb, 0xa5,
|
||||||
|
0xd0, 0x69, 0x03, 0x20, 0x0a, 0xe7, 0xa5, 0xd1, 0x69, 0x00, 0x95, 0x78,
|
||||||
|
0xa5, 0xcf, 0xc9, 0x40, 0xd0, 0x1c, 0x88, 0x98, 0x20, 0x0a, 0xe7, 0x88,
|
||||||
|
0x94, 0x78, 0xa0, 0x03, 0xf6, 0x78, 0xc8, 0xb1, 0xd0, 0x30, 0xf9, 0x10,
|
||||||
|
0x09, 0xa9, 0x00, 0x85, 0xd4, 0x85, 0xd5, 0xa2, 0x20, 0x48, 0xa0, 0x00,
|
||||||
|
0xb1, 0xe0, 0x10, 0x18, 0x0a, 0x30, 0x81, 0x20, 0xff, 0xe6, 0x20, 0x08,
|
||||||
|
0xe7, 0x20, 0xff, 0xe6, 0x95, 0xa0, 0x24, 0xd4, 0x10, 0x01, 0xca, 0x20,
|
||||||
|
0xff, 0xe6, 0xb0, 0xe6, 0xc9, 0x28, 0xd0, 0x1f, 0xa5, 0xe0, 0x20, 0x0a,
|
||||||
|
0xe7, 0xa5, 0xe1, 0x95, 0x78, 0x24, 0xd4, 0x30, 0x0b, 0xa9, 0x01, 0x20,
|
||||||
|
0x0a, 0xe7, 0xa9, 0x00, 0x95, 0x78, 0xf6, 0x78, 0x20, 0xff, 0xe6, 0x30,
|
||||||
|
0xf9, 0xb0, 0xd3, 0x24, 0xd4, 0x10, 0x06, 0xc9, 0x04, 0xb0, 0xd0, 0x46,
|
||||||
|
0xd4, 0xa8, 0x85, 0xd6, 0xb9, 0x98, 0xe9, 0x29, 0x55, 0x0a, 0x85, 0xd7,
|
||||||
|
0x68, 0xa8, 0xb9, 0x98, 0xe9, 0x29, 0xaa, 0xc5, 0xd7, 0xb0, 0x09, 0x98,
|
||||||
|
0x48, 0x20, 0xff, 0xe6, 0xa5, 0xd6, 0x90, 0x95, 0xb9, 0x10, 0xea, 0x85,
|
||||||
|
0xce, 0xb9, 0x88, 0xea, 0x85, 0xcf, 0x20, 0xfc, 0xe6, 0x4c, 0xd8, 0xe6,
|
||||||
|
0x6c, 0xce, 0x00, 0xe6, 0xe0, 0xd0, 0x02, 0xe6, 0xe1, 0xb1, 0xe0, 0x60,
|
||||||
|
0x94, 0x77, 0xca, 0x30, 0x03, 0x95, 0x50, 0x60, 0xa0, 0x66, 0x4c, 0xe0,
|
||||||
|
0xe3, 0xa0, 0x00, 0xb5, 0x50, 0x85, 0xce, 0xb5, 0xa0, 0x85, 0xcf, 0xb5,
|
||||||
|
0x78, 0xf0, 0x0e, 0x85, 0xcf, 0xb1, 0xce, 0x48, 0xc8, 0xb1, 0xce, 0x85,
|
||||||
|
0xcf, 0x68, 0x85, 0xce, 0x88, 0xe8, 0x60, 0x20, 0x4a, 0xe7, 0x20, 0x15,
|
||||||
|
0xe7, 0x98, 0x20, 0x08, 0xe7, 0x95, 0xa0, 0xc5, 0xce, 0xd0, 0x06, 0xc5,
|
||||||
|
0xcf, 0xd0, 0x02, 0xf6, 0x50, 0x60, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7,
|
||||||
|
0x20, 0x15, 0xe7, 0x24, 0xcf, 0x30, 0x1b, 0xca, 0x60, 0x20, 0x15, 0xe7,
|
||||||
|
0xa5, 0xcf, 0xd0, 0x04, 0xa5, 0xce, 0xf0, 0xf3, 0xa9, 0xff, 0x20, 0x08,
|
||||||
|
0xe7, 0x95, 0xa0, 0x24, 0xcf, 0x30, 0xe9, 0x20, 0x15, 0xe7, 0x98, 0x38,
|
||||||
|
0xe5, 0xce, 0x20, 0x08, 0xe7, 0x98, 0xe5, 0xcf, 0x50, 0x23, 0xa0, 0x00,
|
||||||
|
0x10, 0x90, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xda,
|
||||||
|
0xa5, 0xcf, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0x18, 0xa5, 0xce, 0x65, 0xda,
|
||||||
|
0x20, 0x08, 0xe7, 0xa5, 0xcf, 0x65, 0xdb, 0x70, 0xdd, 0x95, 0xa0, 0x60,
|
||||||
|
0x20, 0x15, 0xe7, 0xa4, 0xce, 0xf0, 0x05, 0x88, 0xa5, 0xcf, 0xf0, 0x0c,
|
||||||
|
0x60, 0xa5, 0x24, 0x09, 0x07, 0xa8, 0xc8, 0xa9, 0xa0, 0x20, 0xc9, 0xe3,
|
||||||
|
0xc4, 0x24, 0xb0, 0xf7, 0x60, 0x20, 0xb1, 0xe7, 0x20, 0x15, 0xe7, 0xa5,
|
||||||
|
0xcf, 0x10, 0x0a, 0xa9, 0xad, 0x20, 0xc9, 0xe3, 0x20, 0x72, 0xe7, 0x50,
|
||||||
|
0xef, 0x88, 0x84, 0xd5, 0x86, 0xcf, 0xa6, 0xce, 0x20, 0x1b, 0xe5, 0xa6,
|
||||||
|
0xcf, 0x60, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xf6, 0xa5, 0xcf, 0x85,
|
||||||
|
0xf7, 0x88, 0x84, 0xf8, 0xc8, 0xa9, 0x0a, 0x85, 0xf4, 0x84, 0xf5, 0x60,
|
||||||
|
0x20, 0x15, 0xe7, 0xa5, 0xce, 0xa4, 0xcf, 0x10, 0xf2, 0x20, 0x15, 0xe7,
|
||||||
|
0xb5, 0x50, 0x85, 0xda, 0xb5, 0x78, 0x85, 0xdb, 0xa5, 0xce, 0x91, 0xda,
|
||||||
|
0xc8, 0xa5, 0xcf, 0x91, 0xda, 0xe8, 0x60, 0x68, 0x68, 0x24, 0xd5, 0x10,
|
||||||
|
0x05, 0x20, 0xcd, 0xe3, 0x46, 0xd5, 0x60, 0xa0, 0xff, 0x84, 0xd7, 0x60,
|
||||||
|
0x20, 0xcd, 0xef, 0xf0, 0x07, 0xa9, 0x25, 0x85, 0xd6, 0x88, 0x84, 0xd4,
|
||||||
|
0xe8, 0x60, 0xa5, 0xca, 0xa4, 0xcb, 0xd0, 0x5a, 0xa0, 0x41, 0xa5, 0xfc,
|
||||||
|
0xc9, 0x08, 0xb0, 0x5e, 0xa8, 0xe6, 0xfc, 0xa5, 0xe0, 0x99, 0x00, 0x01,
|
||||||
|
0xa5, 0xe1, 0x99, 0x08, 0x01, 0xa5, 0xdc, 0x99, 0x10, 0x01, 0xa5, 0xdd,
|
||||||
|
0x99, 0x18, 0x01, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0x90, 0x04, 0xa0,
|
||||||
|
0x37, 0xd0, 0x3b, 0xa5, 0xe4, 0xa4, 0xe5, 0x85, 0xdc, 0x84, 0xdd, 0x2c,
|
||||||
|
0x11, 0xd0, 0x30, 0x4f, 0x18, 0x69, 0x03, 0x90, 0x01, 0xc8, 0xa2, 0xff,
|
||||||
|
0x86, 0xd9, 0x9a, 0x85, 0xe0, 0x84, 0xe1, 0x20, 0x79, 0xe6, 0x24, 0xd9,
|
||||||
|
0x10, 0x49, 0x18, 0xa0, 0x00, 0xa5, 0xdc, 0x71, 0xdc, 0xa4, 0xdd, 0x90,
|
||||||
|
0x01, 0xc8, 0xc5, 0x4c, 0xd0, 0xd1, 0xc4, 0x4d, 0xd0, 0xcd, 0xa0, 0x34,
|
||||||
|
0x46, 0xd9, 0x4c, 0xe0, 0xe3, 0xa0, 0x4a, 0xa5, 0xfc, 0xf0, 0xf7, 0xc6,
|
||||||
|
0xfc, 0xa8, 0xb9, 0x0f, 0x01, 0x85, 0xdc, 0xb9, 0x17, 0x01, 0x85, 0xdd,
|
||||||
|
0xbe, 0xff, 0x00, 0xb9, 0x07, 0x01, 0xa8, 0x8a, 0x4c, 0x7a, 0xe8, 0xa0,
|
||||||
|
0x63, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0xb1, 0xdc, 0xaa, 0xc8, 0xb1, 0xdc,
|
||||||
|
0x20, 0x1b, 0xe5, 0x4c, 0xb3, 0xe2, 0xc6, 0xfb, 0xa0, 0x5b, 0xa5, 0xfb,
|
||||||
|
0xf0, 0xc4, 0xa8, 0xb5, 0x50, 0xd9, 0x1f, 0x01, 0xd0, 0xf0, 0xb5, 0x78,
|
||||||
|
0xd9, 0x27, 0x01, 0xd0, 0xe9, 0xb9, 0x2f, 0x01, 0x85, 0xda, 0xb9, 0x37,
|
||||||
|
0x01, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0xca, 0x20, 0x93, 0xe7, 0x20, 0x01,
|
||||||
|
0xe8, 0xca, 0xa4, 0xfb, 0xb9, 0x67, 0x01, 0x95, 0x9f, 0xb9, 0x5f, 0x01,
|
||||||
|
0xa0, 0x00, 0x20, 0x08, 0xe7, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, 0x20,
|
||||||
|
0x15, 0xe7, 0xa4, 0xfb, 0xa5, 0xce, 0xf0, 0x05, 0x59, 0x37, 0x01, 0x10,
|
||||||
|
0x12, 0xb9, 0x3f, 0x01, 0x85, 0xdc, 0xb9, 0x47, 0x01, 0x85, 0xdd, 0xbe,
|
||||||
|
0x4f, 0x01, 0xb9, 0x57, 0x01, 0xd0, 0x87, 0xc6, 0xfb, 0x60, 0xa0, 0x54,
|
||||||
|
0xa5, 0xfb, 0xc9, 0x08, 0xf0, 0x9a, 0xe6, 0xfb, 0xa8, 0xb5, 0x50, 0x99,
|
||||||
|
0x20, 0x01, 0xb5, 0x78, 0x99, 0x28, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4,
|
||||||
|
0xfb, 0xa5, 0xce, 0x99, 0x5f, 0x01, 0xa5, 0xcf, 0x99, 0x67, 0x01, 0xa9,
|
||||||
|
0x01, 0x99, 0x2f, 0x01, 0xa9, 0x00, 0x99, 0x37, 0x01, 0xa5, 0xdc, 0x99,
|
||||||
|
0x3f, 0x01, 0xa5, 0xdd, 0x99, 0x47, 0x01, 0xa5, 0xe0, 0x99, 0x4f, 0x01,
|
||||||
|
0xa5, 0xe1, 0x99, 0x57, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, 0xfb, 0xa5,
|
||||||
|
0xce, 0x99, 0x2f, 0x01, 0xa5, 0xcf, 0x4c, 0x66, 0xe9, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab,
|
||||||
|
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0x3f, 0x3f, 0xc0, 0xc0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
|
||||||
|
0x3c, 0x30, 0x0f, 0xc0, 0xcc, 0xff, 0x55, 0x00, 0xab, 0xab, 0x03, 0x03,
|
||||||
|
0xff, 0xff, 0x55, 0xff, 0xff, 0x55, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff,
|
||||||
|
0x55, 0xc3, 0xc3, 0xc3, 0x55, 0xf0, 0xf0, 0xcf, 0x56, 0x56, 0x56, 0x55,
|
||||||
|
0xff, 0xff, 0x55, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
|
||||||
|
0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0xab, 0x03, 0x57, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0x19,
|
||||||
|
0x5d, 0x35, 0x4b, 0xf2, 0xec, 0x87, 0x6f, 0xad, 0xb7, 0xe2, 0xf8, 0x54,
|
||||||
|
0x80, 0x96, 0x85, 0x82, 0x22, 0x10, 0x33, 0x4a, 0x13, 0x06, 0x0b, 0x4a,
|
||||||
|
0x01, 0x40, 0x47, 0x7a, 0x00, 0xff, 0x23, 0x09, 0x5b, 0x16, 0xb6, 0xcb,
|
||||||
|
0xff, 0xff, 0xfb, 0xff, 0xff, 0x24, 0xf6, 0x4e, 0x59, 0x50, 0x00, 0xff,
|
||||||
|
0x23, 0xa3, 0x6f, 0x36, 0x23, 0xd7, 0x1c, 0x22, 0xc2, 0xae, 0xba, 0x23,
|
||||||
|
0xff, 0xff, 0x21, 0x30, 0x1e, 0x03, 0xc4, 0x20, 0x00, 0xc1, 0xff, 0xff,
|
||||||
|
0xff, 0xa0, 0x30, 0x1e, 0xa4, 0xd3, 0xb6, 0xbc, 0xaa, 0x3a, 0x01, 0x50,
|
||||||
|
0x7e, 0xd8, 0xd8, 0xa5, 0x3c, 0xff, 0x16, 0x5b, 0x28, 0x03, 0xc4, 0x1d,
|
||||||
|
0x00, 0x0c, 0x4e, 0x00, 0x3e, 0x00, 0xa6, 0xb0, 0x00, 0xbc, 0xc6, 0x57,
|
||||||
|
0x8c, 0x01, 0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xe8,
|
||||||
|
0xe0, 0xe0, 0xe0, 0xef, 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xee,
|
||||||
|
0xef, 0xef, 0xe7, 0xe7, 0xe2, 0xef, 0xe7, 0xe7, 0xec, 0xec, 0xec, 0xe7,
|
||||||
|
0xec, 0xec, 0xec, 0xe2, 0x00, 0xff, 0xe8, 0xe1, 0xe8, 0xe8, 0xef, 0xeb,
|
||||||
|
0xff, 0xff, 0xe0, 0xff, 0xff, 0xef, 0xee, 0xef, 0xe7, 0xe7, 0x00, 0xff,
|
||||||
|
0xe8, 0xe7, 0xe7, 0xe7, 0xe8, 0xe1, 0xe2, 0xee, 0xee, 0xee, 0xee, 0xe8,
|
||||||
|
0xff, 0xff, 0xe1, 0xe1, 0xef, 0xee, 0xe7, 0xe8, 0xee, 0xe7, 0xff, 0xff,
|
||||||
|
0xff, 0xee, 0xe1, 0xef, 0xe7, 0xe8, 0xef, 0xef, 0xeb, 0xe9, 0xe8, 0xe9,
|
||||||
|
0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xee, 0xe7, 0xe8,
|
||||||
|
0xef, 0xef, 0xee, 0xef, 0xee, 0xef, 0xee, 0xee, 0xef, 0xee, 0xee, 0xee,
|
||||||
|
0xe1, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xb3, 0xb2, 0xb7,
|
||||||
|
0xb6, 0x37, 0xd4, 0xcf, 0xcf, 0xa0, 0xcc, 0xcf, 0xce, 0x47, 0xd3, 0xd9,
|
||||||
|
0xce, 0xd4, 0xc1, 0x58, 0xcd, 0xc5, 0xcd, 0xa0, 0xc6, 0xd5, 0xcc, 0x4c,
|
||||||
|
0xd4, 0xcf, 0xcf, 0xa0, 0xcd, 0xc1, 0xce, 0xd9, 0xa0, 0xd0, 0xc1, 0xd2,
|
||||||
|
0xc5, 0xce, 0x53, 0xd3, 0xd4, 0xd2, 0xc9, 0xce, 0x47, 0xce, 0xcf, 0xa0,
|
||||||
|
0xc5, 0xce, 0x44, 0xc2, 0xc1, 0xc4, 0xa0, 0xc2, 0xd2, 0xc1, 0xce, 0xc3,
|
||||||
|
0x48, 0xbe, 0xb8, 0xa0, 0xc7, 0xcf, 0xd3, 0xd5, 0xc2, 0x53, 0xc2, 0xc1,
|
||||||
|
0xc4, 0xa0, 0xd2, 0xc5, 0xd4, 0xd5, 0xd2, 0x4e, 0xbe, 0xb8, 0xa0, 0xc6,
|
||||||
|
0xcf, 0xd2, 0x53, 0xc2, 0xc1, 0xc4, 0xa0, 0xce, 0xc5, 0xd8, 0x54, 0xd3,
|
||||||
|
0xd4, 0xcf, 0xd0, 0xd0, 0xc5, 0xc4, 0xa0, 0xc1, 0xd4, 0x20, 0xaa, 0xaa,
|
||||||
|
0xaa, 0x20, 0xa0, 0xc5, 0xd2, 0xd2, 0x0d, 0xbe, 0xb2, 0xb5, 0x35, 0xd2,
|
||||||
|
0xc1, 0xce, 0xc7, 0x45, 0xc4, 0xc9, 0x4d, 0xd3, 0xd4, 0xd2, 0xa0, 0xcf,
|
||||||
|
0xd6, 0xc6, 0x4c, 0xdc, 0x0d, 0xd2, 0xc5, 0xd4, 0xd9, 0xd0, 0xc5, 0xa0,
|
||||||
|
0xcc, 0xc9, 0xce, 0xc5, 0x8d, 0x3f, 0x46, 0xd9, 0x90, 0x03, 0x4c, 0xc3,
|
||||||
|
0xe8, 0xa6, 0xcf, 0x9a, 0xa6, 0xce, 0xa0, 0x8d, 0xd0, 0x02, 0xa0, 0x99,
|
||||||
|
0x20, 0xc4, 0xe3, 0x86, 0xce, 0xba, 0x86, 0xcf, 0xa0, 0xfe, 0x84, 0xd9,
|
||||||
|
0xc8, 0x84, 0xc8, 0x20, 0x99, 0xe2, 0x84, 0xf1, 0xa2, 0x20, 0xa9, 0x30,
|
||||||
|
0x20, 0x91, 0xe4, 0xe6, 0xd9, 0xa6, 0xce, 0xa4, 0xc8, 0x0a, 0x85, 0xce,
|
||||||
|
0xc8, 0xb9, 0x00, 0x02, 0xc9, 0x74, 0xf0, 0xd2, 0x49, 0xb0, 0xc9, 0x0a,
|
||||||
|
0xb0, 0xf0, 0xc8, 0xc8, 0x84, 0xc8, 0xb9, 0x00, 0x02, 0x48, 0xb9, 0xff,
|
||||||
|
0x01, 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x68, 0x95, 0xa0, 0xa5, 0xce, 0xc9,
|
||||||
|
0xc7, 0xd0, 0x03, 0x20, 0x6f, 0xe7, 0x4c, 0x01, 0xe8, 0xff, 0xff, 0xff,
|
||||||
|
0x50, 0x20, 0x13, 0xec, 0xd0, 0x15, 0x20, 0x0b, 0xec, 0xd0, 0x10, 0x20,
|
||||||
|
0x82, 0xe7, 0x20, 0x6f, 0xe7, 0x50, 0x03, 0x20, 0x82, 0xe7, 0x20, 0x59,
|
||||||
|
0xe7, 0x56, 0x50, 0x4c, 0x36, 0xe7, 0xff, 0xff, 0xc1, 0xff, 0x7f, 0xd1,
|
||||||
|
0xcc, 0xc7, 0xcf, 0xce, 0xc5, 0x9a, 0x98, 0x8b, 0x96, 0x95, 0x93, 0xbf,
|
||||||
|
0xb2, 0x32, 0x2d, 0x2b, 0xbc, 0xb0, 0xac, 0xbe, 0x35, 0x8e, 0x61, 0xff,
|
||||||
|
0xff, 0xff, 0xdd, 0xfb, 0x20, 0xc9, 0xef, 0x15, 0x4f, 0x10, 0x05, 0x20,
|
||||||
|
0xc9, 0xef, 0x35, 0x4f, 0x95, 0x50, 0x10, 0xcb, 0x4c, 0xc9, 0xef, 0x40,
|
||||||
|
0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x03,
|
||||||
|
0xbf, 0x12, 0x00, 0x40, 0x89, 0xc9, 0x47, 0x9d, 0x17, 0x68, 0x9d, 0x0a,
|
||||||
|
0x00, 0x40, 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x3c, 0x00, 0x00,
|
||||||
|
0x60, 0x03, 0xbf, 0x1b, 0x4b, 0x67, 0xb4, 0xa1, 0x07, 0x8c, 0x07, 0xae,
|
||||||
|
0xa9, 0xac, 0xa8, 0x67, 0x8c, 0x07, 0xb4, 0xaf, 0xac, 0xb0, 0x67, 0x9d,
|
||||||
|
0xb2, 0xaf, 0xac, 0xaf, 0xa3, 0x67, 0x8c, 0x07, 0xa5, 0xab, 0xaf, 0xb0,
|
||||||
|
0xf4, 0xae, 0xa9, 0xb2, 0xb0, 0x7f, 0x0e, 0x27, 0xb4, 0xae, 0xa9, 0xb2,
|
||||||
|
0xb0, 0x7f, 0x0e, 0x28, 0xb4, 0xae, 0xa9, 0xb2, 0xb0, 0x64, 0x07, 0xa6,
|
||||||
|
0xa9, 0x67, 0xaf, 0xb4, 0xaf, 0xa7, 0x78, 0xb4, 0xa5, 0xac, 0x78, 0x7f,
|
||||||
|
0x02, 0xad, 0xa5, 0xb2, 0x67, 0xa2, 0xb5, 0xb3, 0xaf, 0xa7, 0xee, 0xb2,
|
||||||
|
0xb5, 0xb4, 0xa5, 0xb2, 0x7e, 0x8c, 0x39, 0xb4, 0xb8, 0xa5, 0xae, 0x67,
|
||||||
|
0xb0, 0xa5, 0xb4, 0xb3, 0x27, 0xaf, 0xb4, 0x07, 0x9d, 0x19, 0xb2, 0xaf,
|
||||||
|
0xa6, 0x7f, 0x05, 0x37, 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x28,
|
||||||
|
0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x2a, 0xb4, 0xb5, 0xb0, 0xae,
|
||||||
|
0xa9, 0xe4, 0xae, 0xa5, 0x00, 0xff, 0xff, 0x47, 0xa2, 0xa1, 0xb4, 0x7f,
|
||||||
|
0x0d, 0x30, 0xad, 0xa9, 0xa4, 0x7f, 0x0d, 0x23, 0xad, 0xa9, 0xa4, 0x67,
|
||||||
|
0xac, 0xac, 0xa1, 0xa3, 0x00, 0x40, 0x80, 0xc0, 0xc1, 0x80, 0x00, 0x47,
|
||||||
|
0x8c, 0x68, 0x8c, 0xdb, 0x67, 0x9b, 0x68, 0x9b, 0x50, 0x8c, 0x63, 0x8c,
|
||||||
|
0x7f, 0x01, 0x51, 0x07, 0x88, 0x29, 0x84, 0x80, 0xc4, 0x80, 0x57, 0x71,
|
||||||
|
0x07, 0x88, 0x14, 0xed, 0xa5, 0xad, 0xaf, 0xac, 0xed, 0xa5, 0xad, 0xa9,
|
||||||
|
0xa8, 0xf2, 0xaf, 0xac, 0xaf, 0xa3, 0x71, 0x08, 0x88, 0xae, 0xa5, 0xac,
|
||||||
|
0x68, 0x83, 0x08, 0x68, 0x9d, 0x08, 0x71, 0x07, 0x88, 0x60, 0x76, 0xb4,
|
||||||
|
0xaf, 0xae, 0x76, 0x8d, 0x76, 0x8b, 0x51, 0x07, 0x88, 0x19, 0xb8, 0xa4,
|
||||||
|
0xae, 0xb2, 0xf2, 0xb3, 0xb5, 0xf3, 0xa2, 0xa1, 0xee, 0xa7, 0xb3, 0xe4,
|
||||||
|
0xae, 0xb2, 0xeb, 0xa5, 0xa5, 0xb0, 0x51, 0x07, 0x88, 0x39, 0x81, 0xc1,
|
||||||
|
0x4f, 0x7f, 0x0f, 0x2f, 0x00, 0x51, 0x06, 0x88, 0x29, 0xc2, 0x0c, 0x82,
|
||||||
|
0x57, 0x8c, 0x6a, 0x8c, 0x42, 0xae, 0xa5, 0xa8, 0xb4, 0x60, 0xae, 0xa5,
|
||||||
|
0xa8, 0xb4, 0x4f, 0x7e, 0x1e, 0x35, 0x8c, 0x27, 0x51, 0x07, 0x88, 0x09,
|
||||||
|
0x8b, 0xfe, 0xe4, 0xaf, 0xad, 0xf2, 0xaf, 0xe4, 0xae, 0xa1, 0xdc, 0xde,
|
||||||
|
0x9c, 0xdd, 0x9c, 0xde, 0xdd, 0x9e, 0xc3, 0xdd, 0xcf, 0xca, 0xcd, 0xcb,
|
||||||
|
0x00, 0x47, 0x9d, 0xad, 0xa5, 0xad, 0xaf, 0xac, 0x76, 0x9d, 0xad, 0xa5,
|
||||||
|
0xad, 0xa9, 0xa8, 0xe6, 0xa6, 0xaf, 0x60, 0x8c, 0x20, 0xaf, 0xb4, 0xb5,
|
||||||
|
0xa1, 0xf2, 0xac, 0xa3, 0xf2, 0xa3, 0xb3, 0x60, 0x8c, 0x20, 0xac, 0xa5,
|
||||||
|
0xa4, 0xee, 0xb5, 0xb2, 0x60, 0xae, 0xb5, 0xb2, 0xf4, 0xb3, 0xa9, 0xac,
|
||||||
|
0x60, 0x8c, 0x20, 0xb4, 0xb3, 0xa9, 0xac, 0x7a, 0x7e, 0x9a, 0x22, 0x20,
|
||||||
|
0x00, 0x60, 0x03, 0xbf, 0x60, 0x03, 0xbf, 0x1f, 0x20, 0xb1, 0xe7, 0xe8,
|
||||||
|
0xe8, 0xb5, 0x4f, 0x85, 0xda, 0xb5, 0x77, 0x85, 0xdb, 0xb4, 0x4e, 0x98,
|
||||||
|
0xd5, 0x76, 0xb0, 0x09, 0xb1, 0xda, 0x20, 0xc9, 0xe3, 0xc8, 0x4c, 0x0f,
|
||||||
|
0xee, 0xa9, 0xff, 0x85, 0xd5, 0x60, 0xe8, 0xa9, 0x00, 0x95, 0x78, 0x95,
|
||||||
|
0xa0, 0xb5, 0x77, 0x38, 0xf5, 0x4f, 0x95, 0x50, 0x4c, 0x23, 0xe8, 0xff,
|
||||||
|
0x20, 0x15, 0xe7, 0xa5, 0xcf, 0xd0, 0x28, 0xa5, 0xce, 0x60, 0x20, 0x34,
|
||||||
|
0xee, 0xa4, 0xc8, 0xc9, 0x30, 0xb0, 0x21, 0xc0, 0x28, 0xb0, 0x1d, 0x60,
|
||||||
|
0xea, 0xea, 0x20, 0x34, 0xee, 0x60, 0xea, 0x8a, 0xa2, 0x01, 0xb4, 0xce,
|
||||||
|
0x94, 0x4c, 0xb4, 0x48, 0x94, 0xca, 0xca, 0xf0, 0xf5, 0xaa, 0x60, 0xa0,
|
||||||
|
0x77, 0x4c, 0xe0, 0xe3, 0xa0, 0x7b, 0xd0, 0xf9, 0x20, 0x54, 0xe2, 0xa5,
|
||||||
|
0xda, 0xd0, 0x07, 0xa5, 0xdb, 0xd0, 0x03, 0x4c, 0x7e, 0xe7, 0x06, 0xce,
|
||||||
|
0x26, 0xcf, 0x26, 0xe6, 0x26, 0xe7, 0xa5, 0xe6, 0xc5, 0xda, 0xa5, 0xe7,
|
||||||
|
0xe5, 0xdb, 0x90, 0x0a, 0x85, 0xe7, 0xa5, 0xe6, 0xe5, 0xda, 0x85, 0xe6,
|
||||||
|
0xe6, 0xce, 0x88, 0xd0, 0xe1, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0x20, 0x15, 0xe7, 0x6c, 0xce, 0x00, 0xa5, 0x4c, 0xd0, 0x02, 0xc6, 0x4d,
|
||||||
|
0xc6, 0x4c, 0xa5, 0x48, 0xd0, 0x02, 0xc6, 0x49, 0xc6, 0x48, 0xa0, 0x00,
|
||||||
|
0xb1, 0x4c, 0x91, 0x48, 0xa5, 0xca, 0xc5, 0x4c, 0xa5, 0xcb, 0xe5, 0x4d,
|
||||||
|
0x90, 0xe0, 0x4c, 0x53, 0xee, 0xc9, 0x28, 0xb0, 0x9b, 0xa8, 0xa5, 0xc8,
|
||||||
|
0x60, 0xea, 0xea, 0x98, 0xaa, 0xa0, 0x6e, 0x20, 0xc4, 0xe3, 0x8a, 0xa8,
|
||||||
|
0x20, 0xc4, 0xe3, 0xa0, 0x72, 0x4c, 0xc4, 0xe3, 0x20, 0x15, 0xe7, 0x06,
|
||||||
|
0xce, 0x26, 0xcf, 0x30, 0xfa, 0xb0, 0xdc, 0xd0, 0x04, 0xc5, 0xce, 0xb0,
|
||||||
|
0xd6, 0x60, 0x20, 0x15, 0xe7, 0xb1, 0xce, 0x94, 0x9f, 0x4c, 0x08, 0xe7,
|
||||||
|
0x20, 0x34, 0xee, 0xa5, 0xce, 0x48, 0x20, 0x15, 0xe7, 0x68, 0x91, 0xce,
|
||||||
|
0x60, 0xff, 0xff, 0xff, 0x20, 0x6c, 0xee, 0xa5, 0xce, 0x85, 0xe6, 0xa5,
|
||||||
|
0xcf, 0x85, 0xe7, 0x4c, 0x44, 0xe2, 0x20, 0xe4, 0xee, 0x4c, 0x34, 0xe1,
|
||||||
|
0x20, 0xe4, 0xee, 0xb4, 0x78, 0xb5, 0x50, 0x69, 0xfe, 0xb0, 0x01, 0x88,
|
||||||
|
0x85, 0xda, 0x84, 0xdb, 0x18, 0x65, 0xce, 0x95, 0x50, 0x98, 0x65, 0xcf,
|
||||||
|
0x95, 0x78, 0xa0, 0x00, 0xb5, 0x50, 0xd1, 0xda, 0xc8, 0xb5, 0x78, 0xf1,
|
||||||
|
0xda, 0xb0, 0x80, 0x4c, 0x23, 0xe8, 0x20, 0x15, 0xe7, 0xa5, 0x4e, 0x20,
|
||||||
|
0x08, 0xe7, 0xa5, 0x4f, 0xd0, 0x04, 0xc5, 0x4e, 0x69, 0x00, 0x29, 0x7f,
|
||||||
|
0x85, 0x4f, 0x95, 0xa0, 0xa0, 0x11, 0xa5, 0x4f, 0x0a, 0x18, 0x69, 0x40,
|
||||||
|
0x0a, 0x26, 0x4e, 0x26, 0x4f, 0x88, 0xd0, 0xf2, 0xa5, 0xce, 0x20, 0x08,
|
||||||
|
0xe7, 0xa5, 0xcf, 0x95, 0xa0, 0x4c, 0x7a, 0xe2, 0x20, 0x15, 0xe7, 0xa4,
|
||||||
|
0xce, 0xc4, 0x4c, 0xa5, 0xcf, 0xe5, 0x4d, 0x90, 0x1f, 0x84, 0x48, 0xa5,
|
||||||
|
0xcf, 0x85, 0x49, 0x4c, 0xb6, 0xee, 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xc4,
|
||||||
|
0xca, 0xa5, 0xcf, 0xe5, 0xcb, 0xb0, 0x09, 0x84, 0x4a, 0xa5, 0xcf, 0x85,
|
||||||
|
0x4b, 0x4c, 0xb7, 0xe5, 0x4c, 0xcb, 0xee, 0xea, 0xea, 0xea, 0xea, 0x20,
|
||||||
|
0xc9, 0xef, 0x20, 0x71, 0xe1, 0x4c, 0xbf, 0xef, 0x20, 0x03, 0xee, 0xa9,
|
||||||
|
0xff, 0x85, 0xc8, 0xa9, 0x74, 0x8d, 0x00, 0x02, 0x60, 0x20, 0x36, 0xe7,
|
||||||
|
0xe8, 0x20, 0x36, 0xe7, 0xb5, 0x50, 0x60, 0xa9, 0x00, 0x85, 0x4a, 0x85,
|
||||||
|
0x4c, 0xa9, 0x08, 0x85, 0x4b, 0xa9, 0x10, 0x85, 0x4d, 0x4c, 0xad, 0xe5,
|
||||||
|
0xd5, 0x78, 0xd0, 0x01, 0x18, 0x4c, 0x02, 0xe1, 0x20, 0xb7, 0xe5, 0x4c,
|
||||||
|
0x36, 0xe8, 0x20, 0xb7, 0xe5, 0x4c, 0x5b, 0xe8, 0xe0, 0x80, 0xd0, 0x01,
|
||||||
|
0x88, 0x4c, 0x0c, 0xe0,
|
||||||
|
];
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return 0xe0;
|
||||||
|
}
|
||||||
|
end() {
|
||||||
|
return 0xef;
|
||||||
|
}
|
||||||
|
read(page: byte, off: byte) {
|
||||||
|
return this.ram[((page - 0xe0) << 8) | off];
|
||||||
|
}
|
||||||
|
write(page: byte, off: byte, val: byte) {
|
||||||
|
this.ram[((page - 0xe0) << 8) | off] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
getState() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
setState() {}
|
||||||
|
}
|
@ -1,52 +0,0 @@
|
|||||||
export default function Bios() {
|
|
||||||
var rom = [
|
|
||||||
0xd8,0x58,0xa0,0x7f,0x8c,0x12,0xd0,0xa9,
|
|
||||||
0xa7,0x8d,0x11,0xd0,0x8d,0x13,0xd0,0xc9,
|
|
||||||
0xdf,0xf0,0x13,0xc9,0x9b,0xf0,0x03,0xc8,
|
|
||||||
0x10,0x0f,0xa9,0xdc,0x20,0xef,0xff,0xa9,
|
|
||||||
0x8d,0x20,0xef,0xff,0xa0,0x01,0x88,0x30,
|
|
||||||
0xf6,0xad,0x11,0xd0,0x10,0xfb,0xad,0x10,
|
|
||||||
0xd0,0x99,0x00,0x02,0x20,0xef,0xff,0xc9,
|
|
||||||
0x8d,0xd0,0xd4,0xa0,0xff,0xa9,0x00,0xaa,
|
|
||||||
0x0a,0x85,0x2b,0xc8,0xb9,0x00,0x02,0xc9,
|
|
||||||
0x8d,0xf0,0xd4,0xc9,0xae,0x90,0xf4,0xf0,
|
|
||||||
0xf0,0xc9,0xba,0xf0,0xeb,0xc9,0xd2,0xf0,
|
|
||||||
0x3b,0x86,0x28,0x86,0x29,0x84,0x2a,0xb9,
|
|
||||||
0x00,0x02,0x49,0xb0,0xc9,0x0a,0x90,0x06,
|
|
||||||
0x69,0x88,0xc9,0xfa,0x90,0x11,0x0a,0x0a,
|
|
||||||
0x0a,0x0a,0xa2,0x04,0x0a,0x26,0x28,0x26,
|
|
||||||
0x29,0xca,0xd0,0xf8,0xc8,0xd0,0xe0,0xc4,
|
|
||||||
0x2a,0xf0,0x97,0x24,0x2b,0x50,0x10,0xa5,
|
|
||||||
0x28,0x81,0x26,0xe6,0x26,0xd0,0xb5,0xe6,
|
|
||||||
0x27,0x4c,0x44,0xff,0x6c,0x24,0x00,0x30,
|
|
||||||
0x2b,0xa2,0x02,0xb5,0x27,0x95,0x25,0x95,
|
|
||||||
0x23,0xca,0xd0,0xf7,0xd0,0x14,0xa9,0x8d,
|
|
||||||
0x20,0xef,0xff,0xa5,0x25,0x20,0xdc,0xff,
|
|
||||||
0xa5,0x24,0x20,0xdc,0xff,0xa9,0xba,0x20,
|
|
||||||
0xef,0xff,0xa9,0xa0,0x20,0xef,0xff,0xa1,
|
|
||||||
0x24,0x20,0xdc,0xff,0x86,0x2b,0xa5,0x24,
|
|
||||||
0xc5,0x28,0xa5,0x25,0xe5,0x29,0xb0,0xc1,
|
|
||||||
0xe6,0x24,0xd0,0x02,0xe6,0x25,0xa5,0x24,
|
|
||||||
0x29,0x07,0x10,0xc8,0x48,0x4a,0x4a,0x4a,
|
|
||||||
0x4a,0x20,0xe5,0xff,0x68,0x29,0x0f,0x09,
|
|
||||||
0xb0,0xc9,0xba,0x90,0x02,0x69,0x06,0x2c,
|
|
||||||
0x12,0xd0,0x30,0xfb,0x8d,0x12,0xd0,0x60,
|
|
||||||
0x00,0x00,0x00,0x0f,0x00,0xff,0x00,0x00
|
|
||||||
];
|
|
||||||
|
|
||||||
return {
|
|
||||||
start: function bios_start() {
|
|
||||||
return 0xff;
|
|
||||||
},
|
|
||||||
end: function bios_end() {
|
|
||||||
return 0xff;
|
|
||||||
},
|
|
||||||
read: function bios_read(page, off) {
|
|
||||||
return rom[off];
|
|
||||||
},
|
|
||||||
write: function bios_write() {},
|
|
||||||
|
|
||||||
getState: function bios_getState() { return {}; },
|
|
||||||
setState: function bios_setState() {}
|
|
||||||
};
|
|
||||||
}
|
|
44
js/roms/bios.ts
Normal file
44
js/roms/bios.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import { byte } from 'js/types';
|
||||||
|
|
||||||
|
export default class Bios {
|
||||||
|
rom = [
|
||||||
|
0xd8, 0x58, 0xa0, 0x7f, 0x8c, 0x12, 0xd0, 0xa9, 0xa7, 0x8d, 0x11, 0xd0,
|
||||||
|
0x8d, 0x13, 0xd0, 0xc9, 0xdf, 0xf0, 0x13, 0xc9, 0x9b, 0xf0, 0x03, 0xc8,
|
||||||
|
0x10, 0x0f, 0xa9, 0xdc, 0x20, 0xef, 0xff, 0xa9, 0x8d, 0x20, 0xef, 0xff,
|
||||||
|
0xa0, 0x01, 0x88, 0x30, 0xf6, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10,
|
||||||
|
0xd0, 0x99, 0x00, 0x02, 0x20, 0xef, 0xff, 0xc9, 0x8d, 0xd0, 0xd4, 0xa0,
|
||||||
|
0xff, 0xa9, 0x00, 0xaa, 0x0a, 0x85, 0x2b, 0xc8, 0xb9, 0x00, 0x02, 0xc9,
|
||||||
|
0x8d, 0xf0, 0xd4, 0xc9, 0xae, 0x90, 0xf4, 0xf0, 0xf0, 0xc9, 0xba, 0xf0,
|
||||||
|
0xeb, 0xc9, 0xd2, 0xf0, 0x3b, 0x86, 0x28, 0x86, 0x29, 0x84, 0x2a, 0xb9,
|
||||||
|
0x00, 0x02, 0x49, 0xb0, 0xc9, 0x0a, 0x90, 0x06, 0x69, 0x88, 0xc9, 0xfa,
|
||||||
|
0x90, 0x11, 0x0a, 0x0a, 0x0a, 0x0a, 0xa2, 0x04, 0x0a, 0x26, 0x28, 0x26,
|
||||||
|
0x29, 0xca, 0xd0, 0xf8, 0xc8, 0xd0, 0xe0, 0xc4, 0x2a, 0xf0, 0x97, 0x24,
|
||||||
|
0x2b, 0x50, 0x10, 0xa5, 0x28, 0x81, 0x26, 0xe6, 0x26, 0xd0, 0xb5, 0xe6,
|
||||||
|
0x27, 0x4c, 0x44, 0xff, 0x6c, 0x24, 0x00, 0x30, 0x2b, 0xa2, 0x02, 0xb5,
|
||||||
|
0x27, 0x95, 0x25, 0x95, 0x23, 0xca, 0xd0, 0xf7, 0xd0, 0x14, 0xa9, 0x8d,
|
||||||
|
0x20, 0xef, 0xff, 0xa5, 0x25, 0x20, 0xdc, 0xff, 0xa5, 0x24, 0x20, 0xdc,
|
||||||
|
0xff, 0xa9, 0xba, 0x20, 0xef, 0xff, 0xa9, 0xa0, 0x20, 0xef, 0xff, 0xa1,
|
||||||
|
0x24, 0x20, 0xdc, 0xff, 0x86, 0x2b, 0xa5, 0x24, 0xc5, 0x28, 0xa5, 0x25,
|
||||||
|
0xe5, 0x29, 0xb0, 0xc1, 0xe6, 0x24, 0xd0, 0x02, 0xe6, 0x25, 0xa5, 0x24,
|
||||||
|
0x29, 0x07, 0x10, 0xc8, 0x48, 0x4a, 0x4a, 0x4a, 0x4a, 0x20, 0xe5, 0xff,
|
||||||
|
0x68, 0x29, 0x0f, 0x09, 0xb0, 0xc9, 0xba, 0x90, 0x02, 0x69, 0x06, 0x2c,
|
||||||
|
0x12, 0xd0, 0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60, 0x00, 0x00, 0x00, 0x0f,
|
||||||
|
0x00, 0xff, 0x00, 0x00,
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
|
end() {
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
|
read(_page: byte, off: byte) {
|
||||||
|
return this.rom[off];
|
||||||
|
}
|
||||||
|
write() {}
|
||||||
|
|
||||||
|
getState() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
setState() {}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
871
js/roms/enhanced-basic.ts
Normal file
871
js/roms/enhanced-basic.ts
Normal file
@ -0,0 +1,871 @@
|
|||||||
|
import { byte } from 'js/types';
|
||||||
|
|
||||||
|
export default class EnhancedBasic {
|
||||||
|
rom = [
|
||||||
|
0xa0, 0x08, 0xb9, 0xbd, 0x78, 0x99, 0xc8, 0x02, 0x88, 0x10, 0xf7, 0xa2,
|
||||||
|
0xff, 0x86, 0x88, 0x9a, 0xa9, 0x4c, 0x85, 0xa1, 0xa2, 0x18, 0xbd, 0xc5,
|
||||||
|
0x78, 0x95, 0xbb, 0xca, 0xd0, 0xf8, 0xa2, 0x12, 0xbd, 0xde, 0x78, 0x95,
|
||||||
|
0x00, 0xca, 0x10, 0xf8, 0xa9, 0x00, 0x85, 0xd8, 0x85, 0xdb, 0x85, 0xb2,
|
||||||
|
0x85, 0x67, 0xa9, 0x08, 0x85, 0x64, 0xa9, 0x03, 0x85, 0xa0, 0xa2, 0x68,
|
||||||
|
0x86, 0x65, 0x20, 0x61, 0x60, 0xa9, 0xf1, 0xa0, 0x78, 0x20, 0x9c, 0x60,
|
||||||
|
0x20, 0x45, 0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0xd0, 0x1f,
|
||||||
|
0xa0, 0x00, 0xe6, 0x11, 0xd0, 0x08, 0xe6, 0x12, 0xa5, 0x12, 0xc9, 0x58,
|
||||||
|
0xf0, 0x1d, 0xa9, 0x55, 0x91, 0x11, 0xd1, 0x11, 0xd0, 0x15, 0x0a, 0x91,
|
||||||
|
0x11, 0xd1, 0x11, 0xf0, 0xe5, 0xd0, 0x0c, 0x20, 0x6a, 0x71, 0xa5, 0xac,
|
||||||
|
0xc9, 0x98, 0xb0, 0xa2, 0x20, 0xb5, 0x6c, 0xa5, 0x11, 0xa4, 0x12, 0xc0,
|
||||||
|
0x04, 0x90, 0x97, 0x85, 0x85, 0x84, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa0,
|
||||||
|
0x00, 0xa2, 0x03, 0x84, 0x79, 0x86, 0x7a, 0x98, 0x91, 0x79, 0xe6, 0x79,
|
||||||
|
0x20, 0x61, 0x60, 0x20, 0x57, 0x5b, 0xa5, 0x85, 0x38, 0xe5, 0x79, 0xaa,
|
||||||
|
0xa5, 0x86, 0xe5, 0x7a, 0x20, 0x45, 0x72, 0xa9, 0xff, 0xa0, 0x78, 0x20,
|
||||||
|
0x9c, 0x60, 0xa9, 0x59, 0xa0, 0x59, 0x85, 0x01, 0x84, 0x02, 0x6c, 0x01,
|
||||||
|
0x00, 0x20, 0x0c, 0x59, 0x85, 0x7f, 0x84, 0x80, 0x38, 0xa5, 0xa6, 0xe5,
|
||||||
|
0xaa, 0x85, 0x71, 0xa8, 0xa5, 0xa7, 0xe5, 0xab, 0xaa, 0xe8, 0x98, 0xf0,
|
||||||
|
0x23, 0xa5, 0xa6, 0x38, 0xe5, 0x71, 0x85, 0xa6, 0xb0, 0x03, 0xc6, 0xa7,
|
||||||
|
0x38, 0xa5, 0xa4, 0xe5, 0x71, 0x85, 0xa4, 0xb0, 0x08, 0xc6, 0xa5, 0x90,
|
||||||
|
0x04, 0xb1, 0xa6, 0x91, 0xa4, 0x88, 0xd0, 0xf9, 0xb1, 0xa6, 0x91, 0xa4,
|
||||||
|
0xc6, 0xa7, 0xc6, 0xa5, 0xca, 0xd0, 0xf2, 0x60, 0x85, 0x78, 0xba, 0xe4,
|
||||||
|
0x78, 0x90, 0x2e, 0x60, 0xc4, 0x82, 0x90, 0x28, 0xd0, 0x04, 0xc5, 0x81,
|
||||||
|
0x90, 0x22, 0x48, 0xa2, 0x08, 0x98, 0x48, 0xb5, 0xa3, 0xca, 0x10, 0xfa,
|
||||||
|
0x20, 0xae, 0x69, 0xa2, 0xf8, 0x68, 0x95, 0xac, 0xe8, 0x30, 0xfa, 0x68,
|
||||||
|
0xa8, 0x68, 0xc4, 0x82, 0x90, 0x06, 0xd0, 0x05, 0xc5, 0x81, 0xb0, 0x01,
|
||||||
|
0x60, 0xa2, 0x0c, 0x20, 0x61, 0x60, 0xbd, 0xfd, 0x7d, 0xbc, 0xfe, 0x7d,
|
||||||
|
0x20, 0x9c, 0x60, 0x20, 0x90, 0x5b, 0xa9, 0x38, 0xa0, 0x7f, 0x20, 0x9c,
|
||||||
|
0x60, 0xa4, 0x88, 0xc8, 0xf0, 0x03, 0x20, 0x3a, 0x72, 0xa9, 0x00, 0x85,
|
||||||
|
0xdb, 0x85, 0xd8, 0xa9, 0x48, 0xa0, 0x7f, 0x20, 0x9c, 0x60, 0x20, 0x52,
|
||||||
|
0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0xf0, 0xf4, 0xa2, 0xff,
|
||||||
|
0x86, 0x88, 0x90, 0x06, 0x20, 0x83, 0x5a, 0x4c, 0xfa, 0x5c, 0x20, 0x19,
|
||||||
|
0x5f, 0x20, 0x83, 0x5a, 0x84, 0x5d, 0x20, 0x29, 0x5b, 0x90, 0x44, 0xa0,
|
||||||
|
0x01, 0xb1, 0xaa, 0x85, 0x72, 0xa5, 0x7b, 0x85, 0x71, 0xa5, 0xab, 0x85,
|
||||||
|
0x74, 0xa5, 0xaa, 0x88, 0xf1, 0xaa, 0x18, 0x65, 0x7b, 0x85, 0x7b, 0x85,
|
||||||
|
0x73, 0xa5, 0x7c, 0x69, 0xff, 0x85, 0x7c, 0xe5, 0xab, 0xaa, 0x38, 0xa5,
|
||||||
|
0xaa, 0xe5, 0x7b, 0xa8, 0xb0, 0x03, 0xe8, 0xc6, 0x74, 0x18, 0x65, 0x71,
|
||||||
|
0x90, 0x03, 0xc6, 0x72, 0x18, 0xb1, 0x71, 0x91, 0x73, 0xc8, 0xd0, 0xf9,
|
||||||
|
0xe6, 0x72, 0xe6, 0x74, 0xca, 0xd0, 0xf2, 0xad, 0x80, 0x02, 0xf0, 0x3f,
|
||||||
|
0xa5, 0x85, 0xa4, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa5, 0x7b, 0x85, 0xa6,
|
||||||
|
0xa4, 0x7c, 0x84, 0xa7, 0x65, 0x5d, 0x90, 0x01, 0xc8, 0x85, 0xa4, 0x84,
|
||||||
|
0xa5, 0x20, 0xc1, 0x58, 0xa5, 0x7f, 0xa4, 0x80, 0x85, 0x7b, 0x84, 0x7c,
|
||||||
|
0xa4, 0x5d, 0x88, 0xb9, 0x7c, 0x02, 0x91, 0xaa, 0x88, 0xc0, 0x03, 0xd0,
|
||||||
|
0xf6, 0xa5, 0x12, 0x91, 0xaa, 0x88, 0xa5, 0x11, 0x91, 0xaa, 0x88, 0xa9,
|
||||||
|
0xff, 0x91, 0xaa, 0x20, 0x6c, 0x5b, 0xa5, 0x79, 0xa4, 0x7a, 0x85, 0x71,
|
||||||
|
0x84, 0x72, 0x18, 0xa0, 0x01, 0xb1, 0x71, 0xd0, 0x03, 0x4c, 0x66, 0x59,
|
||||||
|
0xa0, 0x04, 0xc8, 0xb1, 0x71, 0xd0, 0xfb, 0xc8, 0x98, 0x65, 0x71, 0xaa,
|
||||||
|
0xa0, 0x00, 0x91, 0x71, 0xa5, 0x72, 0x69, 0x00, 0xc8, 0x91, 0x71, 0x86,
|
||||||
|
0x71, 0x85, 0x72, 0x90, 0xda, 0x20, 0xb4, 0x60, 0x20, 0xb1, 0x60, 0xd0,
|
||||||
|
0x05, 0x20, 0xb6, 0x60, 0xca, 0x2c, 0xa2, 0x00, 0x20, 0xb1, 0x78, 0x90,
|
||||||
|
0xfb, 0xf0, 0xf9, 0xc9, 0x07, 0xf0, 0x10, 0xc9, 0x0d, 0xf0, 0x19, 0xe0,
|
||||||
|
0x00, 0xd0, 0x04, 0xc9, 0x21, 0x90, 0xe9, 0xc9, 0x08, 0xf0, 0xde, 0xe0,
|
||||||
|
0x47, 0xb0, 0x0c, 0x9d, 0x80, 0x02, 0xe8, 0x20, 0xb6, 0x60, 0xd0, 0xd8,
|
||||||
|
0x4c, 0x58, 0x60, 0xa9, 0x07, 0xd0, 0xf4, 0xa0, 0xff, 0x38, 0xa5, 0xc3,
|
||||||
|
0xe9, 0x80, 0xaa, 0x86, 0x60, 0xbd, 0x80, 0x02, 0xf0, 0x51, 0xc9, 0x5f,
|
||||||
|
0xb0, 0x4d, 0xc9, 0x3c, 0xb0, 0x0e, 0xc9, 0x30, 0xb0, 0x45, 0x85, 0x5c,
|
||||||
|
0xc9, 0x22, 0xf0, 0x61, 0xc9, 0x2a, 0x90, 0x3b, 0x24, 0x60, 0x70, 0x37,
|
||||||
|
0x86, 0x78, 0x84, 0xba, 0xa0, 0x8d, 0x84, 0x73, 0xa0, 0x7a, 0x84, 0x74,
|
||||||
|
0xa0, 0x00, 0xd1, 0x73, 0xf0, 0x05, 0x90, 0x21, 0xc8, 0xd0, 0xf7, 0x98,
|
||||||
|
0x0a, 0xaa, 0xbd, 0xab, 0x7a, 0x85, 0x73, 0xbd, 0xac, 0x7a, 0x85, 0x74,
|
||||||
|
0xa0, 0xff, 0xa6, 0x78, 0xc8, 0xb1, 0x73, 0x30, 0x08, 0xe8, 0xdd, 0x80,
|
||||||
|
0x02, 0xf0, 0xf5, 0xd0, 0x2b, 0xa4, 0xba, 0xe8, 0xc8, 0x99, 0x80, 0x02,
|
||||||
|
0xc9, 0x00, 0xf0, 0x32, 0xe9, 0x3a, 0xf0, 0x04, 0xc9, 0x49, 0xd0, 0x02,
|
||||||
|
0x85, 0x60, 0x49, 0x57, 0xd0, 0x93, 0x85, 0x5c, 0xbd, 0x80, 0x02, 0xf0,
|
||||||
|
0xe2, 0xc5, 0x5c, 0xf0, 0xde, 0xc8, 0x99, 0x80, 0x02, 0xe8, 0xd0, 0xf0,
|
||||||
|
0xa6, 0x78, 0xb1, 0x73, 0x08, 0xc8, 0x28, 0x10, 0xf9, 0xb1, 0x73, 0xd0,
|
||||||
|
0xbe, 0xbd, 0x80, 0x02, 0x10, 0xc3, 0xc8, 0xc8, 0x99, 0x80, 0x02, 0xc8,
|
||||||
|
0xc8, 0xc8, 0xc6, 0xc3, 0x60, 0xa5, 0x79, 0xa6, 0x7a, 0xa0, 0x01, 0x85,
|
||||||
|
0xaa, 0x86, 0xab, 0xb1, 0xaa, 0xf0, 0x1c, 0xc8, 0xc8, 0xb1, 0xaa, 0x88,
|
||||||
|
0xc5, 0x12, 0xf0, 0x0b, 0xb0, 0x11, 0x88, 0xb1, 0xaa, 0xaa, 0x88, 0xb1,
|
||||||
|
0xaa, 0x90, 0xe2, 0xb1, 0xaa, 0xc5, 0x11, 0x90, 0xf1, 0xf0, 0x01, 0x18,
|
||||||
|
0x60, 0xd0, 0xfd, 0xa9, 0x00, 0xa8, 0x91, 0x79, 0xc8, 0x91, 0x79, 0x18,
|
||||||
|
0xa5, 0x79, 0x69, 0x02, 0x85, 0x7b, 0xa5, 0x7a, 0x69, 0x00, 0x85, 0x7c,
|
||||||
|
0x18, 0xa5, 0x79, 0x69, 0xff, 0x85, 0xc3, 0xa5, 0x7a, 0x69, 0xff, 0x85,
|
||||||
|
0xc4, 0xa5, 0x85, 0xa4, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa5, 0x7b, 0xa4,
|
||||||
|
0x7c, 0x85, 0x7d, 0x84, 0x7e, 0x85, 0x7f, 0x84, 0x80, 0x20, 0x4d, 0x5d,
|
||||||
|
0xa2, 0x68, 0x86, 0x65, 0x68, 0xaa, 0x68, 0x8e, 0xfe, 0x01, 0x8d, 0xff,
|
||||||
|
0x01, 0xa2, 0xfd, 0x9a, 0xa9, 0x00, 0x85, 0x8c, 0x85, 0x61, 0x60, 0xf0,
|
||||||
|
0xd0, 0x60, 0x90, 0x06, 0xf0, 0x04, 0xc9, 0xb6, 0xd0, 0xf4, 0x20, 0x19,
|
||||||
|
0x5f, 0x20, 0x29, 0x5b, 0x20, 0xc2, 0x00, 0xf0, 0x0c, 0xc9, 0xb6, 0xd0,
|
||||||
|
0x93, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xd0, 0x8b, 0xa5, 0x11, 0x05,
|
||||||
|
0x12, 0xd0, 0x06, 0xa9, 0xff, 0x85, 0x11, 0x85, 0x12, 0xa0, 0x01, 0x84,
|
||||||
|
0x60, 0x20, 0x61, 0x60, 0xb1, 0xaa, 0xf0, 0x3e, 0x20, 0x1d, 0x5d, 0xc8,
|
||||||
|
0xb1, 0xaa, 0xaa, 0xc8, 0xb1, 0xaa, 0xc5, 0x12, 0xd0, 0x04, 0xe4, 0x11,
|
||||||
|
0xf0, 0x02, 0xb0, 0x2a, 0x84, 0x97, 0x20, 0x45, 0x72, 0xa9, 0x20, 0xa4,
|
||||||
|
0x97, 0x29, 0x7f, 0x20, 0xb6, 0x60, 0xc9, 0x22, 0xd0, 0x06, 0xa5, 0x60,
|
||||||
|
0x49, 0xff, 0x85, 0x60, 0xc8, 0xb1, 0xaa, 0xd0, 0x0e, 0xa8, 0xb1, 0xaa,
|
||||||
|
0xaa, 0xc8, 0xb1, 0xaa, 0x86, 0xaa, 0x85, 0xab, 0xd0, 0xb7, 0x60, 0x10,
|
||||||
|
0xde, 0x24, 0x60, 0x30, 0xda, 0xa2, 0x7c, 0x0a, 0x0a, 0x90, 0x02, 0xe8,
|
||||||
|
0x18, 0x69, 0x69, 0x90, 0x01, 0xe8, 0x85, 0x73, 0x86, 0x74, 0x84, 0x97,
|
||||||
|
0xa0, 0x00, 0xb1, 0x73, 0xaa, 0xc8, 0xb1, 0x73, 0xca, 0xf0, 0xb8, 0x20,
|
||||||
|
0xb6, 0x60, 0xc8, 0xb1, 0x73, 0x48, 0xc8, 0xb1, 0x73, 0xa0, 0x00, 0x85,
|
||||||
|
0x74, 0x68, 0x85, 0x73, 0xb1, 0x73, 0xca, 0xf0, 0xa2, 0x20, 0xb6, 0x60,
|
||||||
|
0xc8, 0xd0, 0xf5, 0xa9, 0x80, 0x85, 0x61, 0x20, 0x81, 0x5f, 0x68, 0x68,
|
||||||
|
0xa9, 0x10, 0x20, 0x04, 0x59, 0x20, 0xa6, 0x5e, 0x18, 0x98, 0x65, 0xc3,
|
||||||
|
0x48, 0xa5, 0xc4, 0x69, 0x00, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48,
|
||||||
|
0xa9, 0xac, 0x20, 0xea, 0x63, 0x20, 0x94, 0x62, 0x20, 0x91, 0x62, 0xa5,
|
||||||
|
0xb0, 0x09, 0x7f, 0x25, 0xad, 0x85, 0xad, 0xa9, 0x9e, 0xa0, 0x5c, 0x85,
|
||||||
|
0x71, 0x84, 0x72, 0x4c, 0x46, 0x63, 0xa9, 0xa3, 0xa0, 0x79, 0x20, 0x3e,
|
||||||
|
0x70, 0x20, 0xc2, 0x00, 0xc9, 0xb1, 0xd0, 0x06, 0x20, 0xbc, 0x00, 0x20,
|
||||||
|
0x91, 0x62, 0x20, 0xad, 0x70, 0x85, 0xb0, 0x20, 0x3b, 0x63, 0xa5, 0x98,
|
||||||
|
0x48, 0xa5, 0x97, 0x48, 0xa9, 0x81, 0x48, 0x20, 0x1d, 0x5d, 0xa5, 0xc3,
|
||||||
|
0xa4, 0xc4, 0xa6, 0x88, 0xe8, 0xf0, 0x04, 0x85, 0x8b, 0x84, 0x8c, 0xa0,
|
||||||
|
0x00, 0xb1, 0xc3, 0xf0, 0x07, 0xc9, 0x3a, 0xf0, 0x1d, 0x4c, 0xf3, 0x63,
|
||||||
|
0xa0, 0x02, 0xb1, 0xc3, 0x18, 0xf0, 0x58, 0xc8, 0xb1, 0xc3, 0x85, 0x87,
|
||||||
|
0xc8, 0xb1, 0xc3, 0x85, 0x88, 0x98, 0x65, 0xc3, 0x85, 0xc3, 0x90, 0x02,
|
||||||
|
0xe6, 0xc4, 0x20, 0xbc, 0x00, 0x20, 0x03, 0x5d, 0x4c, 0xc3, 0x5c, 0xf0,
|
||||||
|
0x56, 0x49, 0x80, 0x10, 0x03, 0x4c, 0x81, 0x5f, 0xc9, 0x2b, 0xb0, 0xcd,
|
||||||
|
0x0a, 0xa8, 0xb9, 0xcb, 0x79, 0x48, 0xb9, 0xca, 0x79, 0x48, 0x4c, 0xbc,
|
||||||
|
0x00, 0x6c, 0xcb, 0x02, 0xc9, 0x03, 0xb0, 0x01, 0x18, 0xd0, 0x67, 0xa5,
|
||||||
|
0xc4, 0x49, 0x02, 0xf0, 0x10, 0x49, 0x02, 0xa4, 0xc3, 0x84, 0x8b, 0x85,
|
||||||
|
0x8c, 0xa5, 0x87, 0xa4, 0x88, 0x85, 0x89, 0x84, 0x8a, 0x68, 0x68, 0x90,
|
||||||
|
0x07, 0xa9, 0x31, 0xa0, 0x7f, 0x4c, 0x4e, 0x59, 0x4c, 0x59, 0x59, 0xd0,
|
||||||
|
0x0f, 0x38, 0xa5, 0x79, 0xe9, 0x01, 0xa4, 0x7a, 0xb0, 0x01, 0x88, 0x85,
|
||||||
|
0x8f, 0x84, 0x90, 0x60, 0x20, 0x19, 0x5f, 0x20, 0xa9, 0x5e, 0xa5, 0x88,
|
||||||
|
0xc5, 0x12, 0xb0, 0x0b, 0x98, 0x38, 0x65, 0xc3, 0xa6, 0xc4, 0x90, 0x07,
|
||||||
|
0xe8, 0xb0, 0x04, 0xa5, 0x79, 0xa6, 0x7a, 0x20, 0x2d, 0x5b, 0xb0, 0x03,
|
||||||
|
0x4c, 0x7b, 0x5e, 0xa5, 0xaa, 0xe9, 0x01, 0xa4, 0xab, 0xb0, 0xd0, 0x90,
|
||||||
|
0xcd, 0x20, 0x4a, 0x6c, 0x86, 0x0d, 0x60, 0xd0, 0xfd, 0xa4, 0x8c, 0xd0,
|
||||||
|
0x05, 0xa2, 0x1e, 0x4c, 0x3b, 0x59, 0xa9, 0x93, 0x20, 0xd0, 0x76, 0xa9,
|
||||||
|
0x93, 0x20, 0xd3, 0x76, 0x84, 0xc4, 0xa5, 0x8b, 0x85, 0xc3, 0xa5, 0x89,
|
||||||
|
0xa4, 0x8a, 0x85, 0x87, 0x84, 0x88, 0x60, 0xd0, 0x03, 0x4c, 0x6c, 0x5b,
|
||||||
|
0x20, 0x79, 0x5b, 0xf0, 0x2e, 0xa9, 0x05, 0x20, 0x04, 0x59, 0xa5, 0xc4,
|
||||||
|
0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48, 0xa9, 0x9d,
|
||||||
|
0x48, 0x20, 0xc2, 0x00, 0x4c, 0xc3, 0x5c, 0xa9, 0x05, 0x20, 0x04, 0x59,
|
||||||
|
0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48,
|
||||||
|
0xa9, 0x8d, 0x48, 0x20, 0xc2, 0x00, 0x20, 0xf4, 0x5d, 0x4c, 0xc3, 0x5c,
|
||||||
|
0x20, 0x19, 0x5f, 0x20, 0xa9, 0x5e, 0xa5, 0x88, 0xc5, 0x12, 0xb0, 0x0b,
|
||||||
|
0x98, 0x38, 0x65, 0xc3, 0xa6, 0xc4, 0x90, 0x07, 0xe8, 0xb0, 0x04, 0xa5,
|
||||||
|
0x79, 0xa6, 0x7a, 0x20, 0x2d, 0x5b, 0x90, 0x67, 0xa5, 0xaa, 0xe9, 0x01,
|
||||||
|
0x85, 0xc3, 0xa5, 0xab, 0xe9, 0x00, 0x85, 0xc4, 0x60, 0xa2, 0x22, 0x4c,
|
||||||
|
0x3b, 0x59, 0xa8, 0xba, 0xbd, 0x03, 0x01, 0xc9, 0x9d, 0xd0, 0xf2, 0xe8,
|
||||||
|
0xe8, 0x9a, 0x98, 0xf0, 0x20, 0xc9, 0x3a, 0xf0, 0x1c, 0xe9, 0xb2, 0xaa,
|
||||||
|
0xf0, 0x04, 0xca, 0xd0, 0x62, 0xca, 0x86, 0x98, 0x20, 0xbc, 0x00, 0x20,
|
||||||
|
0xa5, 0x62, 0xa5, 0xac, 0xf0, 0x02, 0xa9, 0xff, 0xba, 0x45, 0x98, 0xd0,
|
||||||
|
0x1a, 0xbd, 0x02, 0x01, 0x85, 0x87, 0xbd, 0x03, 0x01, 0x85, 0x88, 0xbd,
|
||||||
|
0x04, 0x01, 0x85, 0xc3, 0xbd, 0x05, 0x01, 0x85, 0xc4, 0x20, 0xc2, 0x00,
|
||||||
|
0x4c, 0xc3, 0x5c, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x9a, 0x4c, 0x95, 0x5e,
|
||||||
|
0xa2, 0x04, 0x2c, 0xa2, 0x0e, 0x4c, 0x3b, 0x59, 0xd0, 0x9e, 0x68, 0x68,
|
||||||
|
0x68, 0xc9, 0x8d, 0xd0, 0xef, 0x68, 0x85, 0x87, 0x68, 0x85, 0x88, 0x68,
|
||||||
|
0x85, 0xc3, 0x68, 0x85, 0xc4, 0x20, 0xa6, 0x5e, 0x98, 0x18, 0x65, 0xc3,
|
||||||
|
0x85, 0xc3, 0x90, 0x02, 0xe6, 0xc4, 0x60, 0x4c, 0xf3, 0x63, 0xa2, 0x3a,
|
||||||
|
0x2c, 0xa2, 0x00, 0x86, 0x5b, 0xa0, 0x00, 0x84, 0x5c, 0xa5, 0x5c, 0xa6,
|
||||||
|
0x5b, 0x85, 0x5b, 0x86, 0x5c, 0xb1, 0xc3, 0xf0, 0xe5, 0xc5, 0x5c, 0xf0,
|
||||||
|
0xe1, 0xc8, 0xc9, 0x22, 0xf0, 0xeb, 0xd0, 0xf1, 0x20, 0xa5, 0x62, 0x20,
|
||||||
|
0xc2, 0x00, 0xc9, 0x89, 0xf0, 0x05, 0xa9, 0xaf, 0x20, 0xea, 0x63, 0xa5,
|
||||||
|
0xac, 0xd0, 0x05, 0x20, 0xa9, 0x5e, 0xf0, 0xb8, 0x20, 0xc2, 0x00, 0xb0,
|
||||||
|
0x03, 0x4c, 0xf4, 0x5d, 0x4c, 0x03, 0x5d, 0xc9, 0xa9, 0xd0, 0x03, 0x4c,
|
||||||
|
0xf5, 0x76, 0xc9, 0xaa, 0xd0, 0x03, 0x4c, 0xf9, 0x76, 0x20, 0x4a, 0x6c,
|
||||||
|
0x48, 0xc9, 0x8d, 0xf0, 0x04, 0xc9, 0x89, 0xd0, 0x9e, 0xc6, 0xaf, 0xd0,
|
||||||
|
0x04, 0x68, 0x4c, 0x05, 0x5d, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xc9,
|
||||||
|
0x2c, 0xf0, 0xee, 0x68, 0x60, 0xa2, 0x00, 0x86, 0x11, 0x86, 0x12, 0xb0,
|
||||||
|
0xf7, 0xe9, 0x2f, 0x85, 0x5b, 0xa5, 0x12, 0x85, 0x71, 0xc9, 0x19, 0xb0,
|
||||||
|
0xd4, 0xa5, 0x11, 0x0a, 0x26, 0x71, 0x0a, 0x26, 0x71, 0x65, 0x11, 0x85,
|
||||||
|
0x11, 0xa5, 0x71, 0x65, 0x12, 0x85, 0x12, 0x06, 0x11, 0x26, 0x12, 0xa5,
|
||||||
|
0x11, 0x65, 0x5b, 0x85, 0x11, 0x90, 0x02, 0xe6, 0x12, 0x20, 0xbc, 0x00,
|
||||||
|
0x4c, 0x1f, 0x5f, 0xa9, 0xa7, 0x2c, 0xa9, 0xa3, 0x48, 0x20, 0x76, 0x65,
|
||||||
|
0xa6, 0x5f, 0x30, 0x1e, 0x85, 0x97, 0x84, 0x98, 0x20, 0x3e, 0x70, 0x68,
|
||||||
|
0x48, 0xa0, 0x79, 0x20, 0x7c, 0x6d, 0x20, 0x67, 0x70, 0x20, 0xc2, 0x00,
|
||||||
|
0xc9, 0x2c, 0xd0, 0x9f, 0x20, 0xbc, 0x00, 0x4c, 0x59, 0x5f, 0x4c, 0xa0,
|
||||||
|
0x62, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa9, 0xc0, 0x20, 0xea,
|
||||||
|
0x63, 0xa5, 0x5f, 0x48, 0x20, 0xa5, 0x62, 0x68, 0x2a, 0x20, 0x97, 0x62,
|
||||||
|
0xd0, 0x03, 0x4c, 0x67, 0x70, 0xa0, 0x02, 0xb1, 0xae, 0xc5, 0x82, 0x90,
|
||||||
|
0x17, 0xd0, 0x07, 0x88, 0xb1, 0xae, 0xc5, 0x81, 0x90, 0x0e, 0xa4, 0xaf,
|
||||||
|
0xc4, 0x7c, 0x90, 0x08, 0xd0, 0x0d, 0xa5, 0xae, 0xc5, 0x7b, 0xb0, 0x07,
|
||||||
|
0xa5, 0xae, 0xa4, 0xaf, 0x4c, 0xd9, 0x5f, 0xa0, 0x00, 0xb1, 0xae, 0x20,
|
||||||
|
0x01, 0x69, 0xa5, 0x9e, 0xa4, 0x9f, 0x85, 0xb8, 0x84, 0xb9, 0x20, 0xe0,
|
||||||
|
0x6a, 0xa9, 0xac, 0xa0, 0x00, 0x85, 0x9e, 0x84, 0x9f, 0x20, 0x42, 0x6b,
|
||||||
|
0xa0, 0x00, 0xb1, 0x9e, 0x91, 0x97, 0xc8, 0xb1, 0x9e, 0x91, 0x97, 0xc8,
|
||||||
|
0xb1, 0x9e, 0x91, 0x97, 0x60, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98,
|
||||||
|
0x20, 0xbc, 0x76, 0xa6, 0x5f, 0x30, 0x07, 0xa8, 0x20, 0x32, 0x68, 0x4c,
|
||||||
|
0x67, 0x70, 0x48, 0xa9, 0x01, 0xb0, 0x01, 0x68, 0x20, 0x09, 0x69, 0xf0,
|
||||||
|
0x05, 0x68, 0xa0, 0x00, 0x91, 0xad, 0x20, 0x54, 0x69, 0x4c, 0x9d, 0x5f,
|
||||||
|
0x20, 0x9f, 0x60, 0x20, 0xc2, 0x00, 0xf0, 0x3d, 0xf0, 0xca, 0xc9, 0xab,
|
||||||
|
0xf0, 0x51, 0xc9, 0xae, 0xf0, 0x4d, 0xc9, 0x2c, 0xf0, 0x33, 0xc9, 0x3b,
|
||||||
|
0xf0, 0x60, 0x20, 0xa5, 0x62, 0x24, 0x5f, 0x30, 0xdf, 0x20, 0x55, 0x72,
|
||||||
|
0x20, 0x13, 0x69, 0xa0, 0x00, 0xa5, 0x0f, 0xf0, 0x0a, 0x38, 0xe5, 0x0e,
|
||||||
|
0xf1, 0xae, 0xb0, 0x03, 0x20, 0x61, 0x60, 0x20, 0x9f, 0x60, 0xf0, 0xc7,
|
||||||
|
0xa9, 0x00, 0x9d, 0x80, 0x02, 0xa2, 0x7f, 0xa0, 0x02, 0xa9, 0x0d, 0xd0,
|
||||||
|
0x51, 0xa5, 0x0e, 0xc5, 0x10, 0x90, 0x05, 0x20, 0x61, 0x60, 0xd0, 0x26,
|
||||||
|
0x38, 0xe5, 0x64, 0xb0, 0xfc, 0x49, 0xff, 0x69, 0x01, 0xd0, 0x14, 0x48,
|
||||||
|
0x20, 0x47, 0x6c, 0xc9, 0x29, 0xd0, 0x7b, 0x68, 0xc9, 0xab, 0xd0, 0x08,
|
||||||
|
0x8a, 0xe5, 0x0e, 0x90, 0x09, 0xf0, 0x07, 0xaa, 0x20, 0xb1, 0x60, 0xca,
|
||||||
|
0xd0, 0xfa, 0x20, 0xbc, 0x00, 0x4c, 0x24, 0x60, 0x20, 0x13, 0x69, 0x20,
|
||||||
|
0x0d, 0x6b, 0xa0, 0x00, 0xaa, 0xf0, 0x4a, 0xb1, 0x71, 0x20, 0xb6, 0x60,
|
||||||
|
0xc8, 0xca, 0xd0, 0xf7, 0x60, 0xa9, 0x20, 0x2c, 0xa9, 0x3f, 0xc9, 0x20,
|
||||||
|
0x90, 0x1a, 0x48, 0xa5, 0x0f, 0xd0, 0x0b, 0x38, 0xa5, 0x0e, 0xe5, 0x64,
|
||||||
|
0xd0, 0x0b, 0x85, 0x0e, 0xf0, 0x07, 0xc5, 0x0e, 0xd0, 0x03, 0x20, 0x61,
|
||||||
|
0x60, 0xe6, 0x0e, 0x68, 0x20, 0xb4, 0x78, 0xc9, 0x0d, 0xd0, 0x14, 0x86,
|
||||||
|
0x78, 0xa6, 0x0d, 0xf0, 0x0a, 0xa9, 0x00, 0x20, 0xb6, 0x60, 0xca, 0xd0,
|
||||||
|
0xfa, 0xa9, 0x0d, 0x86, 0x0e, 0xa6, 0x78, 0x29, 0xff, 0x60, 0xa5, 0x62,
|
||||||
|
0x10, 0x0b, 0xa5, 0x8d, 0xa4, 0x8e, 0x85, 0x87, 0x84, 0x88, 0x4c, 0xf3,
|
||||||
|
0x63, 0xa9, 0x60, 0xa0, 0x7f, 0x20, 0x9c, 0x60, 0xa5, 0x8b, 0xa4, 0x8c,
|
||||||
|
0x85, 0xc3, 0x84, 0xc4, 0x60, 0xc9, 0x22, 0xd0, 0x0b, 0x20, 0xa9, 0x63,
|
||||||
|
0xa9, 0x3b, 0x20, 0xea, 0x63, 0x20, 0x9f, 0x60, 0x20, 0x36, 0x68, 0x20,
|
||||||
|
0x45, 0x5a, 0xad, 0x80, 0x02, 0xd0, 0x09, 0x18, 0x4c, 0x35, 0x5d, 0xa6,
|
||||||
|
0x8f, 0xa4, 0x90, 0xa9, 0x98, 0x85, 0x62, 0x86, 0x91, 0x84, 0x92, 0x20,
|
||||||
|
0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa5, 0xc3, 0xa4, 0xc4, 0x85, 0x11,
|
||||||
|
0x84, 0x12, 0xa6, 0x91, 0xa4, 0x92, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xc2,
|
||||||
|
0x00, 0xd0, 0x0e, 0x24, 0x62, 0x30, 0x62, 0x20, 0xb4, 0x60, 0x20, 0x45,
|
||||||
|
0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0x24, 0x5f, 0x10, 0x24,
|
||||||
|
0x85, 0x5b, 0xc9, 0x22, 0xf0, 0x07, 0xa9, 0x3a, 0x85, 0x5b, 0xa9, 0x2c,
|
||||||
|
0x18, 0x85, 0x5c, 0xa5, 0xc3, 0xa4, 0xc4, 0x69, 0x00, 0x90, 0x01, 0xc8,
|
||||||
|
0x20, 0x19, 0x69, 0x20, 0x8d, 0x6c, 0x20, 0x9d, 0x5f, 0x4c, 0x96, 0x61,
|
||||||
|
0x20, 0x6a, 0x71, 0x20, 0x67, 0x70, 0x20, 0xc2, 0x00, 0xf0, 0x07, 0xc9,
|
||||||
|
0x2c, 0xf0, 0x03, 0x4c, 0xf2, 0x60, 0xa5, 0xc3, 0xa4, 0xc4, 0x85, 0x91,
|
||||||
|
0x84, 0x92, 0xa5, 0x11, 0xa4, 0x12, 0x85, 0xc3, 0x84, 0xc4, 0x20, 0xc2,
|
||||||
|
0x00, 0xf0, 0x2b, 0x20, 0xe8, 0x63, 0x4c, 0x3b, 0x61, 0x20, 0xa6, 0x5e,
|
||||||
|
0xc8, 0xaa, 0xd0, 0x12, 0xa2, 0x06, 0xc8, 0xb1, 0xc3, 0xf0, 0x72, 0xc8,
|
||||||
|
0xb1, 0xc3, 0x85, 0x8d, 0xc8, 0xb1, 0xc3, 0xc8, 0x85, 0x8e, 0xb1, 0xc3,
|
||||||
|
0xaa, 0x20, 0x98, 0x5e, 0xe0, 0x83, 0xf0, 0x85, 0xd0, 0xdb, 0xa5, 0x91,
|
||||||
|
0xa4, 0x92, 0xa6, 0x62, 0x10, 0x03, 0x4c, 0x57, 0x5d, 0xa0, 0x00, 0xb1,
|
||||||
|
0x91, 0xd0, 0x01, 0x60, 0xa9, 0x50, 0xa0, 0x7f, 0x4c, 0x9c, 0x60, 0xba,
|
||||||
|
0xe8, 0xe8, 0xe8, 0xe8, 0xbd, 0x01, 0x01, 0xc9, 0x81, 0xd0, 0x21, 0xa5,
|
||||||
|
0x98, 0xd0, 0x0a, 0xbd, 0x02, 0x01, 0x85, 0x97, 0xbd, 0x03, 0x01, 0x85,
|
||||||
|
0x98, 0xdd, 0x03, 0x01, 0xd0, 0x07, 0xa5, 0x97, 0xdd, 0x02, 0x01, 0xf0,
|
||||||
|
0x07, 0x8a, 0x18, 0x69, 0x10, 0xaa, 0xd0, 0xd8, 0x60, 0xd0, 0x04, 0xa0,
|
||||||
|
0x00, 0xf0, 0x03, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0x20, 0xfb,
|
||||||
|
0x61, 0xf0, 0x04, 0xa2, 0x00, 0xf0, 0x63, 0x9a, 0x8a, 0x38, 0xe9, 0xf7,
|
||||||
|
0x85, 0x73, 0x69, 0xfb, 0xa0, 0x01, 0x20, 0x3e, 0x70, 0xba, 0xbd, 0x08,
|
||||||
|
0x01, 0x85, 0xb0, 0xa5, 0x97, 0xa4, 0x98, 0x20, 0x7c, 0x6d, 0x20, 0x67,
|
||||||
|
0x70, 0xa0, 0x01, 0x20, 0xdd, 0x70, 0xba, 0xdd, 0x08, 0x01, 0xf0, 0x17,
|
||||||
|
0xbd, 0x0d, 0x01, 0x85, 0x87, 0xbd, 0x0e, 0x01, 0x85, 0x88, 0xbd, 0x10,
|
||||||
|
0x01, 0x85, 0xc3, 0xbd, 0x0f, 0x01, 0x85, 0xc4, 0x4c, 0xc3, 0x5c, 0x8a,
|
||||||
|
0x69, 0x0f, 0xaa, 0x9a, 0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xd0, 0xf1, 0x20,
|
||||||
|
0xbc, 0x00, 0x20, 0x2f, 0x62, 0x20, 0xa5, 0x62, 0x18, 0x24, 0x38, 0x24,
|
||||||
|
0x5f, 0x30, 0x03, 0xb0, 0x03, 0x60, 0xb0, 0xfd, 0xa2, 0x18, 0x4c, 0x3b,
|
||||||
|
0x59, 0xa6, 0xc3, 0xd0, 0x02, 0xc6, 0xc4, 0xc6, 0xc3, 0xa9, 0x00, 0x48,
|
||||||
|
0xa9, 0x02, 0x20, 0x04, 0x59, 0x20, 0x80, 0x63, 0xa9, 0x00, 0x85, 0x9b,
|
||||||
|
0x20, 0xc2, 0x00, 0x38, 0xe9, 0xbf, 0x90, 0x17, 0xc9, 0x03, 0xb0, 0x13,
|
||||||
|
0xc9, 0x01, 0x2a, 0x49, 0x01, 0x45, 0x9b, 0xc5, 0x9b, 0x90, 0x65, 0x85,
|
||||||
|
0x9b, 0x20, 0xbc, 0x00, 0x4c, 0xbf, 0x62, 0xa6, 0x9b, 0xd0, 0x2c, 0xb0,
|
||||||
|
0x77, 0x69, 0x0a, 0x90, 0x73, 0x65, 0x5f, 0xd0, 0x03, 0x4c, 0xa3, 0x6a,
|
||||||
|
0x69, 0xff, 0x85, 0x71, 0x0a, 0x65, 0x71, 0xa8, 0x68, 0xd9, 0x66, 0x7a,
|
||||||
|
0xb0, 0x63, 0x20, 0x94, 0x62, 0x48, 0x20, 0x24, 0x63, 0x68, 0xa4, 0x99,
|
||||||
|
0x10, 0x17, 0xaa, 0xf0, 0x74, 0xd0, 0x5b, 0x46, 0x5f, 0x8a, 0x2a, 0xa6,
|
||||||
|
0xc3, 0xd0, 0x02, 0xc6, 0xc4, 0xc6, 0xc3, 0xa0, 0x24, 0x85, 0x9b, 0xd0,
|
||||||
|
0xd7, 0xd9, 0x66, 0x7a, 0xb0, 0x44, 0x90, 0xd9, 0xb9, 0x68, 0x7a, 0x48,
|
||||||
|
0xb9, 0x67, 0x7a, 0x48, 0x20, 0x3b, 0x63, 0xa5, 0x9b, 0x48, 0xb9, 0x66,
|
||||||
|
0x7a, 0x4c, 0xaf, 0x62, 0x4c, 0xf3, 0x63, 0x68, 0x85, 0x71, 0xe6, 0x71,
|
||||||
|
0x68, 0x85, 0x72, 0xa5, 0xb0, 0x48, 0x20, 0x9d, 0x70, 0xa5, 0xaf, 0x48,
|
||||||
|
0xa5, 0xae, 0x48, 0xa5, 0xad, 0x48, 0xa5, 0xac, 0x48, 0x6c, 0x71, 0x00,
|
||||||
|
0xa0, 0xff, 0x68, 0xf0, 0x20, 0xc9, 0x64, 0xf0, 0x03, 0x20, 0x94, 0x62,
|
||||||
|
0x84, 0x99, 0x68, 0x4a, 0x85, 0x63, 0x68, 0x85, 0xb3, 0x68, 0x85, 0xb4,
|
||||||
|
0x68, 0x85, 0xb5, 0x68, 0x85, 0xb6, 0x68, 0x85, 0xb7, 0x45, 0xb0, 0x85,
|
||||||
|
0xb8, 0xa5, 0xac, 0x60, 0xa9, 0x00, 0x85, 0x5f, 0x20, 0xbc, 0x00, 0xb0,
|
||||||
|
0x03, 0x4c, 0x6a, 0x71, 0xc9, 0x24, 0xf0, 0xf9, 0xc9, 0x25, 0xf0, 0xf5,
|
||||||
|
0x20, 0xe8, 0x65, 0xb0, 0x66, 0xc9, 0x2e, 0xf0, 0xec, 0xc9, 0xb6, 0xf0,
|
||||||
|
0x57, 0xc9, 0xb5, 0xf0, 0xdf, 0xc9, 0x22, 0xd0, 0x0f, 0xa5, 0xc3, 0xa4,
|
||||||
|
0xc4, 0x69, 0x00, 0x90, 0x01, 0xc8, 0x20, 0x13, 0x69, 0x4c, 0x8d, 0x6c,
|
||||||
|
0xc9, 0xb0, 0xd0, 0x13, 0xa0, 0x21, 0xd0, 0x3a, 0x20, 0x70, 0x66, 0xa5,
|
||||||
|
0xaf, 0x49, 0xff, 0xa8, 0xa5, 0xae, 0x49, 0xff, 0x4c, 0x23, 0x68, 0xc9,
|
||||||
|
0xad, 0xd0, 0x03, 0x4c, 0x82, 0x68, 0xc9, 0xc2, 0x90, 0x02, 0xb0, 0x32,
|
||||||
|
0x20, 0xe5, 0x63, 0x20, 0xa5, 0x62, 0xa9, 0x29, 0x2c, 0xa9, 0x28, 0x2c,
|
||||||
|
0xa9, 0x2c, 0xa0, 0x00, 0xd1, 0xc3, 0xd0, 0x03, 0x4c, 0xbc, 0x00, 0xa2,
|
||||||
|
0x02, 0x4c, 0x3b, 0x59, 0xa0, 0x1e, 0x68, 0x68, 0x4c, 0xfe, 0x62, 0x20,
|
||||||
|
0x76, 0x65, 0x85, 0xae, 0x84, 0xaf, 0xa6, 0x5f, 0xd0, 0x03, 0x4c, 0x3e,
|
||||||
|
0x70, 0x60, 0x0a, 0x48, 0xaa, 0x20, 0xbc, 0x00, 0xe0, 0xb3, 0x90, 0x56,
|
||||||
|
0xe0, 0xb7, 0x90, 0x24, 0xe0, 0xc3, 0x90, 0x51, 0x20, 0xe5, 0x63, 0x20,
|
||||||
|
0xa5, 0x62, 0x20, 0xe8, 0x63, 0x20, 0x96, 0x62, 0x68, 0xaa, 0xa5, 0xaf,
|
||||||
|
0x48, 0xa5, 0xae, 0x48, 0x8a, 0x48, 0x20, 0x4a, 0x6c, 0x68, 0xa8, 0x8a,
|
||||||
|
0x48, 0x4c, 0x73, 0x64, 0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0xa5, 0xac,
|
||||||
|
0xc9, 0x98, 0xb0, 0x1f, 0x20, 0x14, 0x71, 0xa2, 0x02, 0xb5, 0xad, 0x95,
|
||||||
|
0x11, 0xca, 0x10, 0xf9, 0x20, 0xc2, 0x00, 0xa2, 0x00, 0xc9, 0x29, 0xf0,
|
||||||
|
0x10, 0x20, 0x9c, 0x6c, 0x20, 0xc2, 0x00, 0xc9, 0x29, 0xf0, 0x06, 0x4c,
|
||||||
|
0xf3, 0x66, 0x20, 0xdc, 0x63, 0x68, 0xa8, 0xb9, 0x9c, 0x79, 0x85, 0xa2,
|
||||||
|
0xb9, 0x9d, 0x79, 0x85, 0xa3, 0x20, 0xa1, 0x00, 0x4c, 0x94, 0x62, 0x20,
|
||||||
|
0xaa, 0x64, 0x45, 0x5b, 0xa8, 0xa5, 0xae, 0x45, 0x5c, 0x4c, 0x23, 0x68,
|
||||||
|
0x20, 0xaa, 0x64, 0x05, 0x5b, 0xa8, 0xa5, 0xae, 0x05, 0x5c, 0x4c, 0x23,
|
||||||
|
0x68, 0x20, 0xaa, 0x64, 0x25, 0x5b, 0xa8, 0xa5, 0xae, 0x25, 0x5c, 0x4c,
|
||||||
|
0x23, 0x68, 0x20, 0x70, 0x66, 0xa5, 0xae, 0x85, 0x5c, 0xa5, 0xaf, 0x85,
|
||||||
|
0x5b, 0x20, 0x81, 0x6d, 0x20, 0x70, 0x66, 0xa5, 0xaf, 0x60, 0x20, 0x97,
|
||||||
|
0x62, 0xb0, 0x13, 0xa5, 0xb7, 0x09, 0x7f, 0x25, 0xb4, 0x85, 0xb4, 0xa9,
|
||||||
|
0xb3, 0xa0, 0x00, 0x20, 0xdb, 0x70, 0xaa, 0x4c, 0x09, 0x65, 0xa9, 0x00,
|
||||||
|
0x85, 0x5f, 0xc6, 0x9b, 0x20, 0x0d, 0x6b, 0x85, 0xac, 0x86, 0xad, 0x84,
|
||||||
|
0xae, 0xa5, 0xb5, 0xa4, 0xb6, 0x20, 0x11, 0x6b, 0x86, 0xb5, 0x84, 0xb6,
|
||||||
|
0xaa, 0x38, 0xe5, 0xac, 0xf0, 0x08, 0xa9, 0x01, 0x90, 0x04, 0xa6, 0xac,
|
||||||
|
0xa9, 0xff, 0x85, 0xb0, 0xa0, 0xff, 0xe8, 0xc8, 0xca, 0xd0, 0x07, 0xa6,
|
||||||
|
0xb0, 0x30, 0x0f, 0x18, 0x90, 0x0c, 0xb1, 0xb5, 0xd1, 0xad, 0xf0, 0xef,
|
||||||
|
0xa2, 0xff, 0xb0, 0x02, 0xa2, 0x01, 0xe8, 0x8a, 0x2a, 0x25, 0x63, 0xf0,
|
||||||
|
0x02, 0xa9, 0xff, 0x4c, 0xbe, 0x70, 0x20, 0xe8, 0x63, 0xaa, 0x20, 0x7b,
|
||||||
|
0x65, 0x20, 0xc2, 0x00, 0xd0, 0xf4, 0x60, 0x20, 0x6b, 0x65, 0xa5, 0xae,
|
||||||
|
0xa6, 0x78, 0xf0, 0x24, 0xe0, 0x10, 0xb0, 0x25, 0x06, 0xaf, 0x26, 0x00,
|
||||||
|
0xca, 0xd0, 0xf9, 0xa4, 0xaf, 0x4c, 0x23, 0x68, 0x20, 0x6b, 0x65, 0xa5,
|
||||||
|
0xae, 0xa6, 0x78, 0xf0, 0x0b, 0xe0, 0x10, 0xb0, 0x0c, 0x46, 0x00, 0x66,
|
||||||
|
0xaf, 0xca, 0xd0, 0xf9, 0xa4, 0xaf, 0x4c, 0x23, 0x68, 0xa9, 0x00, 0xa8,
|
||||||
|
0x4c, 0x23, 0x68, 0x20, 0x4d, 0x6c, 0x86, 0x78, 0x20, 0x81, 0x6d, 0x4c,
|
||||||
|
0x70, 0x66, 0xa2, 0x00, 0x20, 0xc2, 0x00, 0x86, 0x5e, 0x85, 0x93, 0x20,
|
||||||
|
0xe8, 0x65, 0xb0, 0x03, 0x4c, 0xf3, 0x63, 0xa2, 0x00, 0x86, 0x5f, 0x20,
|
||||||
|
0xbc, 0x00, 0x90, 0x05, 0x20, 0xe8, 0x65, 0x90, 0x0b, 0xaa, 0x20, 0xbc,
|
||||||
|
0x00, 0x90, 0xfb, 0x20, 0xe8, 0x65, 0xb0, 0xf6, 0xc9, 0x24, 0xd0, 0x0b,
|
||||||
|
0xa9, 0xff, 0x85, 0x5f, 0x8a, 0x09, 0x80, 0xaa, 0x20, 0xbc, 0x00, 0x86,
|
||||||
|
0x94, 0x05, 0x61, 0xc9, 0x28, 0xd0, 0x03, 0x4c, 0x82, 0x66, 0xa9, 0x00,
|
||||||
|
0x85, 0x61, 0xa5, 0x7b, 0xa6, 0x7c, 0xa0, 0x00, 0x86, 0xab, 0x85, 0xaa,
|
||||||
|
0xe4, 0x7e, 0xd0, 0x04, 0xc5, 0x7d, 0xf0, 0x2c, 0xa5, 0x93, 0xd1, 0xaa,
|
||||||
|
0xd0, 0x08, 0xa5, 0x94, 0xc8, 0xd1, 0xaa, 0xf0, 0x69, 0x88, 0x18, 0xa5,
|
||||||
|
0xaa, 0x69, 0x06, 0x90, 0xe1, 0xe8, 0xd0, 0xdc, 0xc9, 0x61, 0xb0, 0x0a,
|
||||||
|
0xc9, 0x41, 0x90, 0x05, 0xe9, 0x5b, 0x38, 0xe9, 0xa5, 0x60, 0xe9, 0x7b,
|
||||||
|
0x38, 0xe9, 0x85, 0x60, 0x68, 0x48, 0xc9, 0x01, 0xd0, 0x05, 0xa9, 0xa4,
|
||||||
|
0xa0, 0x79, 0x60, 0xa5, 0x7d, 0xa4, 0x7e, 0x85, 0xaa, 0x84, 0xab, 0xa5,
|
||||||
|
0x7f, 0xa4, 0x80, 0x85, 0xa6, 0x84, 0xa7, 0x18, 0x69, 0x06, 0x90, 0x01,
|
||||||
|
0xc8, 0x85, 0xa4, 0x84, 0xa5, 0x20, 0xc1, 0x58, 0xa5, 0xa4, 0xa4, 0xa5,
|
||||||
|
0xc8, 0x85, 0x7d, 0x84, 0x7e, 0xa0, 0x00, 0xa5, 0x93, 0x91, 0xaa, 0xc8,
|
||||||
|
0xa5, 0x94, 0x91, 0xaa, 0xa9, 0x00, 0xc8, 0x91, 0xaa, 0xc8, 0x91, 0xaa,
|
||||||
|
0xc8, 0x91, 0xaa, 0xc8, 0x91, 0xaa, 0xa5, 0xaa, 0x18, 0x69, 0x02, 0xa4,
|
||||||
|
0xab, 0x90, 0x01, 0xc8, 0x85, 0x95, 0x84, 0x96, 0x60, 0xa5, 0x5d, 0x0a,
|
||||||
|
0x69, 0x05, 0x65, 0xaa, 0xa4, 0xab, 0x90, 0x01, 0xc8, 0x85, 0xa4, 0x84,
|
||||||
|
0xa5, 0x60, 0x20, 0xbc, 0x00, 0x20, 0x91, 0x62, 0xa5, 0xb0, 0x30, 0x0d,
|
||||||
|
0xa5, 0xac, 0xc9, 0x90, 0x90, 0x09, 0xa9, 0xab, 0xa0, 0x79, 0x20, 0xdb,
|
||||||
|
0x70, 0xd0, 0x74, 0x4c, 0x14, 0x71, 0xa5, 0x5e, 0x48, 0xa5, 0x5f, 0x48,
|
||||||
|
0xa0, 0x00, 0x98, 0x48, 0xa5, 0x94, 0x48, 0xa5, 0x93, 0x48, 0x20, 0x66,
|
||||||
|
0x66, 0x68, 0x85, 0x93, 0x68, 0x85, 0x94, 0x68, 0xa8, 0xba, 0xbd, 0x02,
|
||||||
|
0x01, 0x48, 0xbd, 0x01, 0x01, 0x48, 0xa5, 0xae, 0x9d, 0x02, 0x01, 0xa5,
|
||||||
|
0xaf, 0x9d, 0x01, 0x01, 0xc8, 0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xf0, 0xd2,
|
||||||
|
0x84, 0x5d, 0x20, 0xe2, 0x63, 0x68, 0x85, 0x5f, 0x68, 0x85, 0x5e, 0xa6,
|
||||||
|
0x7d, 0xa5, 0x7e, 0x86, 0xaa, 0x85, 0xab, 0xc5, 0x80, 0xd0, 0x04, 0xe4,
|
||||||
|
0x7f, 0xf0, 0x39, 0xa0, 0x00, 0xb1, 0xaa, 0xc8, 0xc5, 0x93, 0xd0, 0x06,
|
||||||
|
0xa5, 0x94, 0xd1, 0xaa, 0xf0, 0x16, 0xc8, 0xb1, 0xaa, 0x18, 0x65, 0xaa,
|
||||||
|
0xaa, 0xc8, 0xb1, 0xaa, 0x65, 0xab, 0x90, 0xd7, 0xa2, 0x10, 0x2c, 0xa2,
|
||||||
|
0x08, 0x4c, 0x3b, 0x59, 0xa2, 0x12, 0xa5, 0x5e, 0xd0, 0xf7, 0x20, 0x55,
|
||||||
|
0x66, 0xa5, 0x5d, 0xa0, 0x04, 0xd1, 0xaa, 0xd0, 0xe7, 0x4c, 0x8f, 0x67,
|
||||||
|
0x20, 0x55, 0x66, 0x20, 0x0c, 0x59, 0xa0, 0x00, 0x84, 0xbb, 0xa5, 0x93,
|
||||||
|
0x91, 0xaa, 0xc8, 0xa5, 0x94, 0x91, 0xaa, 0xa5, 0x5d, 0xa0, 0x04, 0x84,
|
||||||
|
0xba, 0x91, 0xaa, 0x18, 0xa2, 0x0b, 0xa9, 0x00, 0x24, 0x5e, 0x50, 0x07,
|
||||||
|
0x68, 0x69, 0x01, 0xaa, 0x68, 0x69, 0x00, 0xc8, 0x91, 0xaa, 0xc8, 0x8a,
|
||||||
|
0x91, 0xaa, 0x20, 0xde, 0x67, 0x86, 0xba, 0x85, 0xbb, 0xa4, 0x71, 0xc6,
|
||||||
|
0x5d, 0xd0, 0xdd, 0x65, 0xa5, 0xb0, 0x5d, 0x85, 0xa5, 0xa8, 0x8a, 0x65,
|
||||||
|
0xa4, 0x90, 0x03, 0xc8, 0xf0, 0x52, 0x20, 0x0c, 0x59, 0x85, 0x7f, 0x84,
|
||||||
|
0x80, 0xa9, 0x00, 0xe6, 0xbb, 0xa4, 0xba, 0xf0, 0x05, 0x88, 0x91, 0xa4,
|
||||||
|
0xd0, 0xfb, 0xc6, 0xa5, 0xc6, 0xbb, 0xd0, 0xf5, 0xe6, 0xa5, 0x38, 0xa0,
|
||||||
|
0x02, 0xa5, 0x7f, 0xe5, 0xaa, 0x91, 0xaa, 0xc8, 0xa5, 0x80, 0xe5, 0xab,
|
||||||
|
0x91, 0xaa, 0xa5, 0x5e, 0xd0, 0x53, 0xc8, 0xb1, 0xaa, 0x85, 0x5d, 0xa9,
|
||||||
|
0x00, 0x85, 0xba, 0x85, 0xbb, 0xc8, 0x68, 0xaa, 0x85, 0xae, 0x68, 0x85,
|
||||||
|
0xaf, 0xd1, 0xaa, 0x90, 0x0e, 0xd0, 0x06, 0xc8, 0x8a, 0xd1, 0xaa, 0x90,
|
||||||
|
0x07, 0x4c, 0xf0, 0x66, 0x4c, 0x39, 0x59, 0xc8, 0xa5, 0xbb, 0x05, 0xba,
|
||||||
|
0xf0, 0x0a, 0x20, 0xde, 0x67, 0x8a, 0x65, 0xae, 0xaa, 0x98, 0xa4, 0x71,
|
||||||
|
0x65, 0xaf, 0x86, 0xba, 0xc6, 0x5d, 0xd0, 0xcb, 0x06, 0xba, 0x2a, 0x06,
|
||||||
|
0xba, 0x2a, 0xa8, 0xa5, 0xba, 0x65, 0xa4, 0x85, 0x95, 0x98, 0x65, 0xa5,
|
||||||
|
0x85, 0x96, 0xa8, 0xa5, 0x95, 0x60, 0x84, 0x71, 0xb1, 0xaa, 0x85, 0x76,
|
||||||
|
0x88, 0xb1, 0xaa, 0x85, 0x77, 0xa9, 0x10, 0x85, 0xa8, 0xa2, 0x00, 0xa0,
|
||||||
|
0x00, 0x8a, 0x0a, 0xaa, 0x98, 0x2a, 0xa8, 0xb0, 0xb3, 0x06, 0xba, 0x26,
|
||||||
|
0xbb, 0x90, 0x0b, 0x18, 0x8a, 0x65, 0x76, 0xaa, 0x98, 0x65, 0x77, 0xa8,
|
||||||
|
0xb0, 0xa2, 0xc6, 0xa8, 0xd0, 0xe3, 0x60, 0xa5, 0x5f, 0xf0, 0x03, 0x20,
|
||||||
|
0x0d, 0x6b, 0x20, 0xae, 0x69, 0x38, 0xa5, 0x81, 0xe5, 0x7f, 0xa8, 0xa5,
|
||||||
|
0x82, 0xe5, 0x80, 0xa2, 0x00, 0x86, 0x5f, 0x85, 0xad, 0x84, 0xae, 0xa2,
|
||||||
|
0x90, 0x4c, 0xc6, 0x70, 0xa4, 0x0e, 0xa9, 0x00, 0xf0, 0xed, 0xa6, 0x88,
|
||||||
|
0xe8, 0xd0, 0xa2, 0xa2, 0x16, 0x4c, 0x3b, 0x59, 0x20, 0x6d, 0x68, 0x20,
|
||||||
|
0x36, 0x68, 0x20, 0xe5, 0x63, 0xa9, 0x80, 0x85, 0x61, 0x20, 0x76, 0x65,
|
||||||
|
0x20, 0x94, 0x62, 0x20, 0xe2, 0x63, 0xa9, 0xc0, 0x20, 0xea, 0x63, 0xa5,
|
||||||
|
0x96, 0x48, 0xa5, 0x95, 0x48, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0x20,
|
||||||
|
0x95, 0x5e, 0x4c, 0xdf, 0x68, 0xa9, 0xad, 0x20, 0xea, 0x63, 0x09, 0x80,
|
||||||
|
0x85, 0x61, 0x29, 0x7f, 0x20, 0x7d, 0x65, 0x85, 0x9c, 0x84, 0x9d, 0x4c,
|
||||||
|
0x94, 0x62, 0x20, 0x6d, 0x68, 0xa5, 0x9d, 0x48, 0xa5, 0x9c, 0x48, 0x20,
|
||||||
|
0xdc, 0x63, 0x20, 0x94, 0x62, 0x68, 0x85, 0x9c, 0x68, 0x85, 0x9d, 0xa2,
|
||||||
|
0x20, 0xa0, 0x03, 0xb1, 0x9c, 0xf0, 0x9e, 0x85, 0x96, 0x88, 0xb1, 0x9c,
|
||||||
|
0x85, 0x95, 0xaa, 0xc8, 0xb1, 0x95, 0x48, 0x88, 0x10, 0xfa, 0xa4, 0x96,
|
||||||
|
0x20, 0x6b, 0x70, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xb1, 0x9c, 0x85,
|
||||||
|
0xc3, 0xc8, 0xb1, 0x9c, 0x85, 0xc4, 0xa5, 0x96, 0x48, 0xa5, 0x95, 0x48,
|
||||||
|
0x20, 0x91, 0x62, 0x68, 0x85, 0x9c, 0x68, 0x85, 0x9d, 0x20, 0xc2, 0x00,
|
||||||
|
0xf0, 0x03, 0x4c, 0xf3, 0x63, 0x68, 0x85, 0xc3, 0x68, 0x85, 0xc4, 0xa0,
|
||||||
|
0x00, 0x68, 0x91, 0x9c, 0xc8, 0x68, 0x91, 0x9c, 0xc8, 0x68, 0x91, 0x9c,
|
||||||
|
0xc8, 0x68, 0x91, 0x9c, 0x60, 0x20, 0x94, 0x62, 0xa0, 0x00, 0x20, 0x57,
|
||||||
|
0x72, 0x68, 0x68, 0xa9, 0xf0, 0xa0, 0x00, 0xf0, 0x12, 0xa6, 0xae, 0xa4,
|
||||||
|
0xaf, 0x86, 0x9e, 0x84, 0x9f, 0x20, 0x7c, 0x69, 0x86, 0xad, 0x84, 0xae,
|
||||||
|
0x85, 0xac, 0x60, 0xa2, 0x22, 0x86, 0x5b, 0x86, 0x5c, 0x85, 0xb8, 0x84,
|
||||||
|
0xb9, 0x85, 0xad, 0x84, 0xae, 0xa0, 0xff, 0xc8, 0xb1, 0xb8, 0xf0, 0x0c,
|
||||||
|
0xc5, 0x5b, 0xf0, 0x04, 0xc5, 0x5c, 0xd0, 0xf3, 0xc9, 0x22, 0xf0, 0x01,
|
||||||
|
0x18, 0x84, 0xac, 0x98, 0x65, 0xb8, 0x85, 0xba, 0xa6, 0xb9, 0x90, 0x01,
|
||||||
|
0xe8, 0x86, 0xbb, 0xa5, 0xb9, 0xc9, 0x03, 0xb0, 0x0b, 0x98, 0x20, 0x01,
|
||||||
|
0x69, 0xa6, 0xb8, 0xa4, 0xb9, 0x20, 0xee, 0x6a, 0xa6, 0x65, 0xe0, 0x71,
|
||||||
|
0xd0, 0x05, 0xa2, 0x1c, 0x4c, 0x3b, 0x59, 0xa5, 0xac, 0x95, 0x00, 0xa5,
|
||||||
|
0xad, 0x95, 0x01, 0xa5, 0xae, 0x95, 0x02, 0xa0, 0x00, 0x86, 0xae, 0x84,
|
||||||
|
0xaf, 0x88, 0x84, 0x5f, 0x86, 0x66, 0xe8, 0xe8, 0xe8, 0x86, 0x65, 0x60,
|
||||||
|
0x46, 0x60, 0x48, 0x49, 0xff, 0x38, 0x65, 0x81, 0xa4, 0x82, 0xb0, 0x01,
|
||||||
|
0x88, 0xc4, 0x80, 0x90, 0x11, 0xd0, 0x04, 0xc5, 0x7f, 0x90, 0x0b, 0x85,
|
||||||
|
0x81, 0x84, 0x82, 0x85, 0x83, 0x84, 0x84, 0xaa, 0x68, 0x60, 0xa2, 0x0c,
|
||||||
|
0xa5, 0x60, 0x30, 0xb8, 0x20, 0xae, 0x69, 0xa9, 0x80, 0x85, 0x60, 0x68,
|
||||||
|
0xd0, 0xd0, 0xa6, 0x85, 0xa5, 0x86, 0x86, 0x81, 0x85, 0x82, 0xa0, 0x00,
|
||||||
|
0x84, 0x9d, 0xa5, 0x7f, 0xa6, 0x80, 0x85, 0xaa, 0x86, 0xab, 0xa9, 0x68,
|
||||||
|
0x85, 0x71, 0x84, 0x72, 0xc5, 0x65, 0xf0, 0x05, 0x20, 0x32, 0x6a, 0xf0,
|
||||||
|
0xf7, 0x06, 0xa0, 0xa5, 0x7b, 0xa6, 0x7c, 0x85, 0x71, 0x86, 0x72, 0xe4,
|
||||||
|
0x7e, 0xd0, 0x04, 0xc5, 0x7d, 0xf0, 0x05, 0x20, 0x2c, 0x6a, 0xf0, 0xf3,
|
||||||
|
0x85, 0xa4, 0x86, 0xa5, 0xa9, 0x04, 0x85, 0xa0, 0xa5, 0xa4, 0xa6, 0xa5,
|
||||||
|
0xe4, 0x80, 0xd0, 0x04, 0xc5, 0x7f, 0xf0, 0x75, 0x85, 0x71, 0x86, 0x72,
|
||||||
|
0xa0, 0x02, 0xb1, 0x71, 0x65, 0xa4, 0x85, 0xa4, 0xc8, 0xb1, 0x71, 0x65,
|
||||||
|
0xa5, 0x85, 0xa5, 0xa0, 0x01, 0xb1, 0x71, 0x10, 0xdb, 0xa0, 0x04, 0xb1,
|
||||||
|
0x71, 0x0a, 0x69, 0x05, 0x20, 0x64, 0x6a, 0xe4, 0xa5, 0xd0, 0x04, 0xc5,
|
||||||
|
0xa4, 0xf0, 0xcd, 0x20, 0x32, 0x6a, 0xf0, 0xf3, 0xc8, 0xb1, 0x71, 0x10,
|
||||||
|
0x30, 0xc8, 0xb1, 0x71, 0xf0, 0x2b, 0xc8, 0xb1, 0x71, 0xaa, 0xc8, 0xb1,
|
||||||
|
0x71, 0xc5, 0x82, 0x90, 0x06, 0xd0, 0x1e, 0xe4, 0x81, 0xb0, 0x1a, 0xc5,
|
||||||
|
0xab, 0x90, 0x17, 0xd0, 0x04, 0xe4, 0xaa, 0x90, 0x11, 0x86, 0xaa, 0x85,
|
||||||
|
0xab, 0xa5, 0x71, 0xa6, 0x72, 0x85, 0x9c, 0x86, 0x9d, 0x88, 0x88, 0x84,
|
||||||
|
0xa2, 0x18, 0xa5, 0xa0, 0x65, 0x71, 0x85, 0x71, 0x90, 0x02, 0xe6, 0x72,
|
||||||
|
0xa6, 0x72, 0xa0, 0x00, 0x60, 0xc6, 0xa0, 0xa6, 0x9d, 0xf0, 0xf5, 0xa4,
|
||||||
|
0xa2, 0x18, 0xb1, 0x9c, 0x65, 0xaa, 0x85, 0xa6, 0xa5, 0xab, 0x69, 0x00,
|
||||||
|
0x85, 0xa7, 0xa5, 0x81, 0xa6, 0x82, 0x85, 0xa4, 0x86, 0xa5, 0x20, 0xc8,
|
||||||
|
0x58, 0xa4, 0xa2, 0xc8, 0xa5, 0xa4, 0x91, 0x9c, 0xaa, 0xe6, 0xa5, 0xa5,
|
||||||
|
0xa5, 0xc8, 0x91, 0x9c, 0x4c, 0xb2, 0x69, 0xa5, 0xaf, 0x48, 0xa5, 0xae,
|
||||||
|
0x48, 0x20, 0x80, 0x63, 0x20, 0x96, 0x62, 0x68, 0x85, 0xb8, 0x68, 0x85,
|
||||||
|
0xb9, 0xa0, 0x00, 0xb1, 0xb8, 0x18, 0x71, 0xae, 0x90, 0x05, 0xa2, 0x1a,
|
||||||
|
0x4c, 0x3b, 0x59, 0x20, 0x01, 0x69, 0x20, 0xe0, 0x6a, 0xa5, 0x9e, 0xa4,
|
||||||
|
0x9f, 0x20, 0x11, 0x6b, 0x20, 0xf2, 0x6a, 0xa5, 0xb8, 0xa4, 0xb9, 0x20,
|
||||||
|
0x11, 0x6b, 0x20, 0x54, 0x69, 0x4c, 0xbc, 0x62, 0xa0, 0x00, 0xb1, 0xb8,
|
||||||
|
0x48, 0xc8, 0xb1, 0xb8, 0xaa, 0xc8, 0xb1, 0xb8, 0xa8, 0x68, 0x86, 0x71,
|
||||||
|
0x84, 0x72, 0xaa, 0xf0, 0x14, 0xa0, 0x00, 0xb1, 0x71, 0x91, 0x83, 0xc8,
|
||||||
|
0xca, 0xd0, 0xf8, 0x98, 0x18, 0x65, 0x83, 0x85, 0x83, 0x90, 0x02, 0xe6,
|
||||||
|
0x84, 0x60, 0x20, 0x96, 0x62, 0xa5, 0xae, 0xa4, 0xaf, 0x85, 0x71, 0x84,
|
||||||
|
0x72, 0x20, 0x42, 0x6b, 0x08, 0xa0, 0x00, 0xb1, 0x71, 0x48, 0xc8, 0xb1,
|
||||||
|
0x71, 0xaa, 0xc8, 0xb1, 0x71, 0xa8, 0x68, 0x28, 0xd0, 0x13, 0xc4, 0x82,
|
||||||
|
0xd0, 0x0f, 0xe4, 0x81, 0xd0, 0x0b, 0x48, 0x18, 0x65, 0x81, 0x85, 0x81,
|
||||||
|
0x90, 0x02, 0xe6, 0x82, 0x68, 0x86, 0x71, 0x84, 0x72, 0x60, 0xc4, 0x67,
|
||||||
|
0xd0, 0x0c, 0xc5, 0x66, 0xd0, 0x08, 0x85, 0x65, 0xe9, 0x03, 0x85, 0x66,
|
||||||
|
0xa0, 0x00, 0x60, 0x20, 0x4d, 0x6c, 0x8a, 0x48, 0xa9, 0x01, 0x20, 0x09,
|
||||||
|
0x69, 0x68, 0xa0, 0x00, 0x91, 0xad, 0x68, 0x68, 0x4c, 0x54, 0x69, 0x20,
|
||||||
|
0xc5, 0x6b, 0xd1, 0x9e, 0x98, 0xf0, 0x08, 0x20, 0xc5, 0x6b, 0x18, 0xf1,
|
||||||
|
0x9e, 0x49, 0xff, 0x90, 0x04, 0xb1, 0x9e, 0xaa, 0x98, 0x48, 0x8a, 0x48,
|
||||||
|
0x20, 0x09, 0x69, 0xa5, 0x9e, 0xa4, 0x9f, 0x20, 0x11, 0x6b, 0x68, 0xa8,
|
||||||
|
0x68, 0x18, 0x65, 0x71, 0x85, 0x71, 0x90, 0x02, 0xe6, 0x72, 0x98, 0x20,
|
||||||
|
0xf2, 0x6a, 0x4c, 0x54, 0x69, 0xa9, 0xff, 0x85, 0xaf, 0x20, 0xc2, 0x00,
|
||||||
|
0xc9, 0x29, 0xf0, 0x06, 0x20, 0xe8, 0x63, 0x20, 0x4a, 0x6c, 0x20, 0xc5,
|
||||||
|
0x6b, 0xca, 0x8a, 0x48, 0x18, 0xa2, 0x00, 0xf1, 0x9e, 0xb0, 0xc3, 0x49,
|
||||||
|
0xff, 0xc5, 0xaf, 0x90, 0xbe, 0xa5, 0xaf, 0xb0, 0xba, 0x20, 0xe2, 0x63,
|
||||||
|
0x68, 0x85, 0xa2, 0x68, 0x85, 0xa3, 0x68, 0x68, 0x68, 0xaa, 0x68, 0x85,
|
||||||
|
0x9e, 0x68, 0x85, 0x9f, 0xa0, 0x00, 0x8a, 0xf0, 0x67, 0xe6, 0xa2, 0x6c,
|
||||||
|
0xa2, 0x00, 0x20, 0x0a, 0x6b, 0x85, 0xac, 0x86, 0xad, 0x84, 0xae, 0xa8,
|
||||||
|
0xf0, 0x2c, 0x88, 0xb1, 0x71, 0x20, 0xec, 0x65, 0x90, 0x04, 0x09, 0x20,
|
||||||
|
0x91, 0x71, 0x98, 0xd0, 0xf1, 0xf0, 0x1b, 0x20, 0x0a, 0x6b, 0x85, 0xac,
|
||||||
|
0x86, 0xad, 0x84, 0xae, 0xa8, 0xf0, 0x0f, 0x88, 0xb1, 0x71, 0x20, 0xe8,
|
||||||
|
0x65, 0x90, 0x04, 0x29, 0xdf, 0x91, 0x71, 0x98, 0xd0, 0xf1, 0x68, 0x68,
|
||||||
|
0x4c, 0x54, 0x69, 0x20, 0x0a, 0x6b, 0x98, 0xa4, 0x71, 0x4c, 0x23, 0x68,
|
||||||
|
0x20, 0x2e, 0x6c, 0x4c, 0x32, 0x68, 0x20, 0x0a, 0x6b, 0xa2, 0x00, 0x86,
|
||||||
|
0x5f, 0xa8, 0x60, 0x20, 0x2e, 0x6c, 0xf0, 0x08, 0xa0, 0x00, 0xb1, 0x71,
|
||||||
|
0xa8, 0x4c, 0x32, 0x68, 0x4c, 0xf3, 0x66, 0x20, 0xbc, 0x00, 0x20, 0x91,
|
||||||
|
0x62, 0x20, 0x6c, 0x66, 0xa4, 0xae, 0xd0, 0xf0, 0xa6, 0xaf, 0x4c, 0xc2,
|
||||||
|
0x00, 0x20, 0x2e, 0x6c, 0xd0, 0x03, 0x4c, 0x0e, 0x6e, 0xa6, 0xc3, 0xa4,
|
||||||
|
0xc4, 0x86, 0xba, 0x84, 0xbb, 0xa6, 0x71, 0x86, 0xc3, 0x18, 0x65, 0x71,
|
||||||
|
0x85, 0x73, 0xa5, 0x72, 0x85, 0xc4, 0x69, 0x00, 0x85, 0x74, 0xa0, 0x00,
|
||||||
|
0xb1, 0x73, 0x48, 0x98, 0x91, 0x73, 0x20, 0xc2, 0x00, 0x20, 0x6a, 0x71,
|
||||||
|
0x68, 0xa0, 0x00, 0x91, 0x73, 0xa6, 0xba, 0xa4, 0xbb, 0x86, 0xc3, 0x84,
|
||||||
|
0xc4, 0x60, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x20, 0xe8, 0x63, 0xa5,
|
||||||
|
0x12, 0x48, 0xa5, 0x11, 0x48, 0x20, 0x4a, 0x6c, 0x68, 0x85, 0x11, 0x68,
|
||||||
|
0x85, 0x12, 0x60, 0xa5, 0xac, 0xc9, 0x98, 0xb0, 0x8f, 0x20, 0x14, 0x71,
|
||||||
|
0xa5, 0xae, 0xa4, 0xaf, 0x84, 0x11, 0x85, 0x12, 0x60, 0x20, 0xaf, 0x6c,
|
||||||
|
0xa2, 0x00, 0xa1, 0x11, 0xa8, 0x4c, 0x32, 0x68, 0x20, 0x96, 0x6c, 0x8a,
|
||||||
|
0xa2, 0x00, 0x81, 0x11, 0x60, 0x20, 0xaf, 0x6c, 0xa2, 0x00, 0xa1, 0x11,
|
||||||
|
0xa8, 0xe6, 0x11, 0xd0, 0x02, 0xe6, 0x12, 0xa1, 0x11, 0x4c, 0x23, 0x68,
|
||||||
|
0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x84, 0x97, 0x85, 0x98, 0x20, 0xe8,
|
||||||
|
0x63, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x98, 0xa2, 0x00, 0x81, 0x97,
|
||||||
|
0xe6, 0x97, 0xd0, 0x02, 0xe6, 0x98, 0xa5, 0x12, 0x81, 0x97, 0x4c, 0xc2,
|
||||||
|
0x00, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa5, 0x5f, 0x48, 0x20,
|
||||||
|
0xe8, 0x63, 0x20, 0x76, 0x65, 0x68, 0xc5, 0x5f, 0xd0, 0x10, 0xa0, 0x03,
|
||||||
|
0xb1, 0x97, 0x48, 0xb1, 0x95, 0x91, 0x97, 0x68, 0x91, 0x95, 0x88, 0x10,
|
||||||
|
0xf3, 0x60, 0x4c, 0xa0, 0x62, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0xa9,
|
||||||
|
0x6d, 0x48, 0xa9, 0x43, 0x48, 0x6c, 0x11, 0x00, 0x4c, 0xc2, 0x00, 0x20,
|
||||||
|
0x96, 0x6c, 0x86, 0x97, 0xa2, 0x00, 0x20, 0xc2, 0x00, 0xf0, 0x03, 0x20,
|
||||||
|
0x9c, 0x6c, 0x86, 0x98, 0xb1, 0x11, 0x45, 0x98, 0x25, 0x97, 0xf0, 0xf8,
|
||||||
|
0x60, 0x20, 0x49, 0x6f, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0x45, 0xb7,
|
||||||
|
0x85, 0xb8, 0xa5, 0xac, 0x4c, 0x7f, 0x6d, 0x20, 0x98, 0x6e, 0x90, 0x4d,
|
||||||
|
0xa9, 0xac, 0xa0, 0x79, 0x20, 0x49, 0x6f, 0xd0, 0x10, 0xa5, 0xb7, 0x85,
|
||||||
|
0xb0, 0xa2, 0x04, 0xb5, 0xb2, 0x95, 0xab, 0xca, 0xd0, 0xf9, 0x86, 0xb9,
|
||||||
|
0x60, 0xa6, 0xb9, 0x86, 0xa3, 0xa2, 0xb3, 0xa5, 0xb3, 0xa8, 0xf0, 0xc4,
|
||||||
|
0x38, 0xe5, 0xac, 0xf0, 0x24, 0x90, 0x12, 0x84, 0xac, 0xa4, 0xb7, 0x84,
|
||||||
|
0xb0, 0x49, 0xff, 0x69, 0x00, 0xa0, 0x00, 0x84, 0xa3, 0xa2, 0xac, 0xd0,
|
||||||
|
0x04, 0xa0, 0x00, 0x84, 0xb9, 0xc9, 0xf9, 0x30, 0xb6, 0xa8, 0xa5, 0xb9,
|
||||||
|
0x56, 0x01, 0x20, 0xaf, 0x6e, 0x24, 0xb8, 0x10, 0x4c, 0xa0, 0xac, 0xe0,
|
||||||
|
0xb3, 0xf0, 0x02, 0xa0, 0xb3, 0x38, 0x49, 0xff, 0x65, 0xa3, 0x85, 0xb9,
|
||||||
|
0xb9, 0x03, 0x00, 0xf5, 0x03, 0x85, 0xaf, 0xb9, 0x02, 0x00, 0xf5, 0x02,
|
||||||
|
0x85, 0xae, 0xb9, 0x01, 0x00, 0xf5, 0x01, 0x85, 0xad, 0xb0, 0x03, 0x20,
|
||||||
|
0x54, 0x6e, 0xa0, 0x00, 0x98, 0x18, 0xa6, 0xad, 0xd0, 0x3e, 0xa6, 0xae,
|
||||||
|
0x86, 0xad, 0xa6, 0xaf, 0x86, 0xae, 0xa6, 0xb9, 0x86, 0xaf, 0x84, 0xb9,
|
||||||
|
0x69, 0x08, 0xc9, 0x18, 0xd0, 0xe8, 0xa9, 0x00, 0x85, 0xac, 0x85, 0xb0,
|
||||||
|
0x60, 0x65, 0xa3, 0x85, 0xb9, 0xa5, 0xaf, 0x65, 0xb6, 0x85, 0xaf, 0xa5,
|
||||||
|
0xae, 0x65, 0xb5, 0x85, 0xae, 0xa5, 0xad, 0x65, 0xb4, 0x85, 0xad, 0xb0,
|
||||||
|
0x1a, 0x60, 0x69, 0x01, 0x06, 0xb9, 0x26, 0xaf, 0x26, 0xae, 0x26, 0xad,
|
||||||
|
0x10, 0xf4, 0x38, 0xe5, 0xac, 0xb0, 0xcf, 0x49, 0xff, 0x69, 0x01, 0x85,
|
||||||
|
0xac, 0x90, 0x0c, 0xe6, 0xac, 0xf0, 0x36, 0x66, 0xad, 0x66, 0xae, 0x66,
|
||||||
|
0xaf, 0x66, 0xb9, 0x60, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0xa5, 0xad,
|
||||||
|
0x49, 0xff, 0x85, 0xad, 0xa5, 0xae, 0x49, 0xff, 0x85, 0xae, 0xa5, 0xaf,
|
||||||
|
0x49, 0xff, 0x85, 0xaf, 0xa5, 0xb9, 0x49, 0xff, 0x85, 0xb9, 0xe6, 0xb9,
|
||||||
|
0xd0, 0x0a, 0xe6, 0xaf, 0xd0, 0x06, 0xe6, 0xae, 0xd0, 0x02, 0xe6, 0xad,
|
||||||
|
0x60, 0xa2, 0x0a, 0x4c, 0x3b, 0x59, 0xa2, 0x74, 0xb4, 0x03, 0x84, 0xb9,
|
||||||
|
0xb4, 0x02, 0x94, 0x03, 0xb4, 0x01, 0x94, 0x02, 0xa4, 0xb2, 0x94, 0x01,
|
||||||
|
0x69, 0x08, 0x30, 0xec, 0xf0, 0xea, 0xe9, 0x08, 0xa8, 0xa5, 0xb9, 0xb0,
|
||||||
|
0x12, 0x16, 0x01, 0x90, 0x02, 0xf6, 0x01, 0x76, 0x01, 0x76, 0x01, 0x76,
|
||||||
|
0x02, 0x76, 0x03, 0x6a, 0xc8, 0xd0, 0xee, 0x18, 0x60, 0x20, 0xad, 0x70,
|
||||||
|
0xf0, 0x02, 0x10, 0x03, 0x4c, 0xf3, 0x66, 0xa5, 0xac, 0xe9, 0x7f, 0x48,
|
||||||
|
0xa9, 0x80, 0x85, 0xac, 0xa9, 0x2c, 0xa0, 0x79, 0x20, 0x7c, 0x6d, 0xa9,
|
||||||
|
0x30, 0xa0, 0x79, 0x20, 0xbf, 0x6f, 0xa9, 0xa3, 0xa0, 0x79, 0x20, 0x61,
|
||||||
|
0x6d, 0xa9, 0x1f, 0xa0, 0x79, 0x20, 0x11, 0x74, 0xa9, 0x34, 0xa0, 0x79,
|
||||||
|
0x20, 0x7c, 0x6d, 0x68, 0x20, 0x08, 0x72, 0xa9, 0x38, 0xa0, 0x79, 0x20,
|
||||||
|
0x49, 0x6f, 0xf0, 0x4c, 0x20, 0x6f, 0x6f, 0xa9, 0x00, 0x85, 0x75, 0x85,
|
||||||
|
0x76, 0x85, 0x77, 0xa5, 0xb9, 0x20, 0x1e, 0x6f, 0xa5, 0xaf, 0x20, 0x1e,
|
||||||
|
0x6f, 0xa5, 0xae, 0x20, 0x1e, 0x6f, 0xa5, 0xad, 0x20, 0x23, 0x6f, 0x4c,
|
||||||
|
0x2f, 0x70, 0xd0, 0x03, 0x4c, 0x86, 0x6e, 0x4a, 0x09, 0x80, 0xa8, 0x90,
|
||||||
|
0x13, 0x18, 0xa5, 0x77, 0x65, 0xb6, 0x85, 0x77, 0xa5, 0x76, 0x65, 0xb5,
|
||||||
|
0x85, 0x76, 0xa5, 0x75, 0x65, 0xb4, 0x85, 0x75, 0x66, 0x75, 0x66, 0x76,
|
||||||
|
0x66, 0x77, 0x66, 0xb9, 0x98, 0x4a, 0xd0, 0xde, 0x60, 0x85, 0x71, 0x84,
|
||||||
|
0x72, 0xa0, 0x03, 0xb1, 0x71, 0x85, 0xb6, 0x88, 0xb1, 0x71, 0x85, 0xb5,
|
||||||
|
0x88, 0xb1, 0x71, 0x85, 0xb7, 0x45, 0xb0, 0x85, 0xb8, 0xa5, 0xb7, 0x09,
|
||||||
|
0x80, 0x85, 0xb4, 0x88, 0xb1, 0x71, 0x85, 0xb3, 0xa5, 0xac, 0x60, 0xa5,
|
||||||
|
0xb3, 0xf0, 0x1d, 0x18, 0x65, 0xac, 0x90, 0x04, 0x30, 0x31, 0x18, 0x2c,
|
||||||
|
0x10, 0x12, 0x69, 0x80, 0x85, 0xac, 0xd0, 0x03, 0x4c, 0x12, 0x6e, 0xa5,
|
||||||
|
0xb8, 0x85, 0xb0, 0x60, 0xa5, 0xb0, 0x10, 0x1b, 0x68, 0x68, 0x4c, 0x0e,
|
||||||
|
0x6e, 0x20, 0x8e, 0x70, 0xaa, 0xf0, 0xf0, 0x18, 0x69, 0x02, 0xb0, 0x0b,
|
||||||
|
0xa2, 0x00, 0x86, 0xb8, 0x20, 0x99, 0x6d, 0xe6, 0xac, 0xd0, 0xe0, 0x4c,
|
||||||
|
0x81, 0x6e, 0x20, 0x8e, 0x70, 0xa9, 0xb4, 0xa0, 0x79, 0xa2, 0x00, 0x86,
|
||||||
|
0xb8, 0x20, 0x3e, 0x70, 0x4c, 0xc2, 0x6f, 0x20, 0x49, 0x6f, 0xf0, 0x66,
|
||||||
|
0x20, 0x9d, 0x70, 0xa9, 0x00, 0x38, 0xe5, 0xac, 0x85, 0xac, 0x20, 0x6f,
|
||||||
|
0x6f, 0xe6, 0xac, 0xf0, 0xd6, 0xa2, 0xfd, 0xa9, 0x01, 0xa4, 0xb4, 0xc4,
|
||||||
|
0xad, 0xd0, 0x0a, 0xa4, 0xb5, 0xc4, 0xae, 0xd0, 0x04, 0xa4, 0xb6, 0xc4,
|
||||||
|
0xaf, 0x08, 0x2a, 0x90, 0x0a, 0xe8, 0xf0, 0x2a, 0x10, 0x2c, 0xa0, 0x01,
|
||||||
|
0x95, 0x77, 0x98, 0x28, 0x90, 0x14, 0xa8, 0xa5, 0xb6, 0xe5, 0xaf, 0x85,
|
||||||
|
0xb6, 0xa5, 0xb5, 0xe5, 0xae, 0x85, 0xb5, 0xa5, 0xb4, 0xe5, 0xad, 0x85,
|
||||||
|
0xb4, 0x98, 0x06, 0xb6, 0x26, 0xb5, 0x26, 0xb4, 0xb0, 0xd3, 0x30, 0xc1,
|
||||||
|
0x10, 0xcf, 0xa0, 0x40, 0xd0, 0xd6, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
|
||||||
|
0x85, 0xb9, 0x28, 0x4c, 0x2f, 0x70, 0xa2, 0x14, 0x4c, 0x3b, 0x59, 0xa5,
|
||||||
|
0x75, 0x85, 0xad, 0xa5, 0x76, 0x85, 0xae, 0xa5, 0x77, 0x85, 0xaf, 0x4c,
|
||||||
|
0xf2, 0x6d, 0x85, 0x71, 0x84, 0x72, 0xa0, 0x03, 0xb1, 0x71, 0x85, 0xaf,
|
||||||
|
0x88, 0xb1, 0x71, 0x85, 0xae, 0x88, 0xb1, 0x71, 0x85, 0xb0, 0x09, 0x80,
|
||||||
|
0x85, 0xad, 0x88, 0xb1, 0x71, 0x85, 0xac, 0x84, 0xb9, 0x60, 0xa2, 0xa8,
|
||||||
|
0x2c, 0xa2, 0xa4, 0xa0, 0x00, 0xf0, 0x04, 0xa6, 0x97, 0xa4, 0x98, 0x20,
|
||||||
|
0x9d, 0x70, 0x86, 0x71, 0x84, 0x72, 0xa0, 0x03, 0xa5, 0xaf, 0x91, 0x71,
|
||||||
|
0x88, 0xa5, 0xae, 0x91, 0x71, 0x88, 0xa5, 0xb0, 0x09, 0x7f, 0x25, 0xad,
|
||||||
|
0x91, 0x71, 0x88, 0xa5, 0xac, 0x91, 0x71, 0x84, 0xb9, 0x60, 0x20, 0x9d,
|
||||||
|
0x70, 0xa2, 0x05, 0xb5, 0xab, 0x95, 0xb2, 0xca, 0xd0, 0xf9, 0x86, 0xb9,
|
||||||
|
0x60, 0xa5, 0xac, 0xf0, 0xfb, 0x06, 0xb9, 0x90, 0xf7, 0x20, 0x76, 0x6e,
|
||||||
|
0xd0, 0xf2, 0x4c, 0x47, 0x6e, 0xa5, 0xac, 0xf0, 0x09, 0xa5, 0xb0, 0x2a,
|
||||||
|
0xa9, 0xff, 0xb0, 0x02, 0xa9, 0x01, 0x60, 0x20, 0xad, 0x70, 0x85, 0xad,
|
||||||
|
0xa9, 0x00, 0x85, 0xae, 0xa2, 0x88, 0xa5, 0xad, 0x49, 0xff, 0x2a, 0xa9,
|
||||||
|
0x00, 0x85, 0xaf, 0x86, 0xac, 0x85, 0xb9, 0x85, 0xb0, 0x4c, 0xed, 0x6d,
|
||||||
|
0x46, 0xb0, 0x60, 0x85, 0x73, 0x84, 0x74, 0xa0, 0x00, 0xb1, 0x73, 0xc8,
|
||||||
|
0xaa, 0xf0, 0xc6, 0xb1, 0x73, 0x45, 0xb0, 0x30, 0xc4, 0xe4, 0xac, 0xd0,
|
||||||
|
0x1a, 0xb1, 0x73, 0x09, 0x80, 0xc5, 0xad, 0xd0, 0x12, 0xc8, 0xb1, 0x73,
|
||||||
|
0xc5, 0xae, 0xd0, 0x0b, 0xc8, 0xa9, 0x7f, 0xc5, 0xb9, 0xb1, 0x73, 0xe5,
|
||||||
|
0xaf, 0xf0, 0x28, 0xa5, 0xb0, 0x90, 0x02, 0x49, 0xff, 0x4c, 0xb3, 0x70,
|
||||||
|
0xa5, 0xac, 0xf0, 0x4a, 0x38, 0xe9, 0x98, 0x24, 0xb0, 0x10, 0x09, 0xaa,
|
||||||
|
0xa9, 0xff, 0x85, 0xb2, 0x20, 0x5a, 0x6e, 0x8a, 0xa2, 0xac, 0xc9, 0xf9,
|
||||||
|
0x10, 0x06, 0x20, 0x98, 0x6e, 0x84, 0xb2, 0x60, 0xa8, 0xa5, 0xb0, 0x29,
|
||||||
|
0x80, 0x46, 0xad, 0x05, 0xad, 0x85, 0xad, 0x20, 0xaf, 0x6e, 0x84, 0xb2,
|
||||||
|
0x60, 0xa5, 0xac, 0xc9, 0x98, 0xb0, 0x1e, 0x20, 0x14, 0x71, 0x84, 0xb9,
|
||||||
|
0xa5, 0xb0, 0x84, 0xb0, 0x49, 0x80, 0x2a, 0xa9, 0x98, 0x85, 0xac, 0xa5,
|
||||||
|
0xaf, 0x85, 0x5b, 0x4c, 0xed, 0x6d, 0x85, 0xad, 0x85, 0xae, 0x85, 0xaf,
|
||||||
|
0xa8, 0x60, 0xa0, 0x00, 0xa2, 0x09, 0x94, 0xa8, 0xca, 0x10, 0xfb, 0x90,
|
||||||
|
0x7f, 0xc9, 0x2d, 0xd0, 0x04, 0x86, 0xb1, 0xf0, 0x04, 0xc9, 0x2b, 0xd0,
|
||||||
|
0x05, 0x20, 0xbc, 0x00, 0x90, 0x6e, 0xc9, 0x24, 0xd0, 0x03, 0x4c, 0x2a,
|
||||||
|
0x76, 0xc9, 0x25, 0xd0, 0x08, 0x4c, 0x58, 0x76, 0x20, 0xbc, 0x00, 0x90,
|
||||||
|
0x5b, 0xc9, 0x2e, 0xf0, 0x2e, 0xc9, 0x45, 0xd0, 0x30, 0x20, 0xbc, 0x00,
|
||||||
|
0x90, 0x17, 0xc9, 0xb6, 0xf0, 0x0e, 0xc9, 0x2d, 0xf0, 0x0a, 0xc9, 0xb5,
|
||||||
|
0xf0, 0x08, 0xc9, 0x2b, 0xf0, 0x04, 0xd0, 0x07, 0x66, 0xab, 0x20, 0xbc,
|
||||||
|
0x00, 0x90, 0x5c, 0x24, 0xab, 0x10, 0x0e, 0xa9, 0x00, 0x38, 0xe5, 0xa9,
|
||||||
|
0x4c, 0xd3, 0x71, 0x66, 0xaa, 0x24, 0xaa, 0x50, 0xc3, 0xa5, 0xa9, 0x38,
|
||||||
|
0xe5, 0xa8, 0x85, 0xa9, 0xf0, 0x12, 0x10, 0x09, 0x20, 0xae, 0x6f, 0xe6,
|
||||||
|
0xa9, 0xd0, 0xf9, 0xf0, 0x07, 0x20, 0x95, 0x6f, 0xc6, 0xa9, 0xd0, 0xf9,
|
||||||
|
0xa5, 0xb1, 0x30, 0x01, 0x60, 0x4c, 0xb4, 0x73, 0x48, 0x24, 0xaa, 0x10,
|
||||||
|
0x02, 0xe6, 0xa8, 0x20, 0x95, 0x6f, 0x68, 0x38, 0xe9, 0x30, 0x20, 0x08,
|
||||||
|
0x72, 0x4c, 0x94, 0x71, 0x48, 0x20, 0x8e, 0x70, 0x68, 0x20, 0xbe, 0x70,
|
||||||
|
0xa5, 0xb7, 0x45, 0xb0, 0x85, 0xb8, 0xa6, 0xac, 0x4c, 0x7f, 0x6d, 0xa5,
|
||||||
|
0xa9, 0xc9, 0x0a, 0x90, 0x09, 0xa9, 0x64, 0x24, 0xab, 0x30, 0x0e, 0x4c,
|
||||||
|
0x81, 0x6e, 0x0a, 0x0a, 0x65, 0xa9, 0x0a, 0xa0, 0x00, 0x71, 0xc3, 0xe9,
|
||||||
|
0x2f, 0x85, 0xa9, 0x4c, 0xba, 0x71, 0xa9, 0x3f, 0xa0, 0x7f, 0x20, 0x52,
|
||||||
|
0x72, 0xa5, 0x88, 0xa6, 0x87, 0x85, 0xad, 0x86, 0xae, 0xa2, 0x90, 0x38,
|
||||||
|
0x20, 0xcb, 0x70, 0x20, 0x55, 0x72, 0x4c, 0x9c, 0x60, 0xa0, 0x01, 0xa9,
|
||||||
|
0x20, 0x24, 0xb0, 0x10, 0x02, 0xa9, 0x2d, 0x99, 0xef, 0x00, 0x85, 0xb0,
|
||||||
|
0x84, 0xba, 0xc8, 0xa6, 0xac, 0xd0, 0x05, 0xa9, 0x30, 0x4c, 0x6e, 0x73,
|
||||||
|
0xa9, 0x00, 0xe0, 0x81, 0xb0, 0x09, 0xa9, 0x44, 0xa0, 0x79, 0x20, 0xf7,
|
||||||
|
0x6e, 0xa9, 0xfa, 0x85, 0xa8, 0xa9, 0x40, 0xa0, 0x79, 0x20, 0xdb, 0x70,
|
||||||
|
0xf0, 0x1e, 0x10, 0x12, 0xa9, 0x3c, 0xa0, 0x79, 0x20, 0xdb, 0x70, 0xf0,
|
||||||
|
0x02, 0x10, 0x0e, 0x20, 0x95, 0x6f, 0xc6, 0xa8, 0xd0, 0xee, 0x20, 0xae,
|
||||||
|
0x6f, 0xe6, 0xa8, 0xd0, 0xdc, 0x20, 0x78, 0x6d, 0x20, 0x14, 0x71, 0xa2,
|
||||||
|
0x01, 0xa5, 0xa8, 0x18, 0x69, 0x07, 0x30, 0x09, 0xc9, 0x08, 0xb0, 0x06,
|
||||||
|
0x69, 0xff, 0xaa, 0xa9, 0x02, 0x38, 0xe9, 0x02, 0x85, 0xa9, 0x86, 0xa8,
|
||||||
|
0x8a, 0xf0, 0x02, 0x10, 0x13, 0xa4, 0xba, 0xa9, 0x2e, 0xc8, 0x99, 0xef,
|
||||||
|
0x00, 0x8a, 0xf0, 0x06, 0xa9, 0x30, 0xc8, 0x99, 0xef, 0x00, 0x84, 0xba,
|
||||||
|
0xa0, 0x00, 0xa2, 0x80, 0xa5, 0xaf, 0x18, 0x79, 0xba, 0x79, 0x85, 0xaf,
|
||||||
|
0xa5, 0xae, 0x79, 0xb9, 0x79, 0x85, 0xae, 0xa5, 0xad, 0x79, 0xb8, 0x79,
|
||||||
|
0x85, 0xad, 0xe8, 0xb0, 0x04, 0x10, 0xe5, 0x30, 0x02, 0x30, 0xe1, 0x8a,
|
||||||
|
0x90, 0x04, 0x49, 0xff, 0x69, 0x0a, 0x69, 0x2f, 0xc8, 0xc8, 0xc8, 0x84,
|
||||||
|
0x95, 0xa4, 0xba, 0xc8, 0xaa, 0x29, 0x7f, 0x99, 0xef, 0x00, 0xc6, 0xa8,
|
||||||
|
0xd0, 0x06, 0xa9, 0x2e, 0xc8, 0x99, 0xef, 0x00, 0x84, 0xba, 0xa4, 0x95,
|
||||||
|
0x8a, 0x49, 0xff, 0x29, 0x80, 0xaa, 0xc0, 0x12, 0xd0, 0xb2, 0xa4, 0xba,
|
||||||
|
0xb9, 0xef, 0x00, 0x88, 0xc9, 0x30, 0xf0, 0xf8, 0xc9, 0x2e, 0xf0, 0x01,
|
||||||
|
0xc8, 0xa9, 0x2b, 0xa6, 0xa9, 0xf0, 0x2e, 0x10, 0x08, 0xa9, 0x00, 0x38,
|
||||||
|
0xe5, 0xa9, 0xaa, 0xa9, 0x2d, 0x99, 0xf1, 0x00, 0xa9, 0x45, 0x99, 0xf0,
|
||||||
|
0x00, 0x8a, 0xa2, 0x2f, 0x38, 0xe8, 0xe9, 0x0a, 0xb0, 0xfb, 0x69, 0x3a,
|
||||||
|
0x99, 0xf3, 0x00, 0x8a, 0x99, 0xf2, 0x00, 0xa9, 0x00, 0x99, 0xf4, 0x00,
|
||||||
|
0xf0, 0x08, 0x99, 0xef, 0x00, 0xa9, 0x00, 0x99, 0xf0, 0x00, 0xa9, 0xf0,
|
||||||
|
0xa0, 0x00, 0x60, 0xf0, 0x42, 0xa5, 0xb3, 0xd0, 0x03, 0x4c, 0x10, 0x6e,
|
||||||
|
0xa2, 0x9c, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa5, 0xb7, 0x10, 0x0f, 0x20,
|
||||||
|
0x45, 0x71, 0xa9, 0x9c, 0xa0, 0x00, 0x20, 0xdb, 0x70, 0xd0, 0x03, 0x98,
|
||||||
|
0xa4, 0x5b, 0x20, 0x83, 0x6d, 0x98, 0x48, 0x20, 0xb9, 0x6e, 0xa9, 0x9c,
|
||||||
|
0xa0, 0x00, 0x20, 0xf7, 0x6e, 0x20, 0xbf, 0x73, 0x68, 0x4a, 0x90, 0x0a,
|
||||||
|
0xa5, 0xac, 0xf0, 0x06, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0x60, 0xa9,
|
||||||
|
0x48, 0xa0, 0x79, 0x20, 0xf7, 0x6e, 0xa5, 0xb9, 0x69, 0x50, 0x90, 0x03,
|
||||||
|
0x20, 0xa5, 0x70, 0x85, 0xa3, 0x20, 0x91, 0x70, 0xa5, 0xac, 0xc9, 0x88,
|
||||||
|
0x90, 0x03, 0x20, 0x8c, 0x6f, 0x20, 0x45, 0x71, 0xa5, 0x5b, 0x18, 0x69,
|
||||||
|
0x81, 0xf0, 0xf3, 0x38, 0xe9, 0x01, 0x48, 0xa2, 0x04, 0xb5, 0xb3, 0xb4,
|
||||||
|
0xac, 0x95, 0xac, 0x94, 0xb3, 0xca, 0x10, 0xf5, 0xa5, 0xa3, 0x85, 0xb9,
|
||||||
|
0x20, 0x64, 0x6d, 0x20, 0xb4, 0x73, 0xa9, 0x4c, 0xa0, 0x79, 0x20, 0x27,
|
||||||
|
0x74, 0xa9, 0x00, 0x85, 0xb8, 0x68, 0x4c, 0x71, 0x6f, 0x85, 0xba, 0x84,
|
||||||
|
0xbb, 0x20, 0x61, 0x70, 0xa9, 0xa4, 0x20, 0xf7, 0x6e, 0x20, 0x2b, 0x74,
|
||||||
|
0xa9, 0xa4, 0xa0, 0x00, 0x4c, 0xf7, 0x6e, 0x85, 0xba, 0x84, 0xbb, 0x20,
|
||||||
|
0x5e, 0x70, 0xb1, 0xba, 0x85, 0xb1, 0xa4, 0xba, 0xc8, 0x98, 0xd0, 0x02,
|
||||||
|
0xe6, 0xbb, 0x85, 0xba, 0xa4, 0xbb, 0x20, 0xf7, 0x6e, 0xa5, 0xba, 0xa4,
|
||||||
|
0xbb, 0x18, 0x69, 0x04, 0x90, 0x01, 0xc8, 0x85, 0xba, 0x84, 0xbb, 0x20,
|
||||||
|
0x7c, 0x6d, 0xa9, 0xa8, 0xa0, 0x00, 0xc6, 0xb1, 0xd0, 0xe4, 0x60, 0xa5,
|
||||||
|
0xac, 0xf0, 0x07, 0xa2, 0xd4, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa2, 0x00,
|
||||||
|
0xa5, 0xd4, 0x6a, 0x6a, 0x90, 0x01, 0xe8, 0x29, 0x08, 0xf0, 0x01, 0xe8,
|
||||||
|
0x8a, 0x4a, 0x66, 0xd5, 0x66, 0xd7, 0x66, 0xd6, 0x66, 0xd4, 0xa2, 0x02,
|
||||||
|
0xb5, 0xd5, 0x95, 0xad, 0xca, 0x10, 0xf9, 0xa9, 0x80, 0x85, 0xac, 0x0a,
|
||||||
|
0x85, 0xb0, 0x4c, 0xf2, 0x6d, 0xa9, 0x69, 0xa0, 0x79, 0x20, 0x7c, 0x6d,
|
||||||
|
0x20, 0x8e, 0x70, 0xa9, 0x7e, 0xa0, 0x79, 0xa6, 0xb7, 0x20, 0xb7, 0x6f,
|
||||||
|
0x20, 0x8e, 0x70, 0x20, 0x45, 0x71, 0xa9, 0x00, 0x85, 0xb8, 0x20, 0x64,
|
||||||
|
0x6d, 0xa9, 0xb0, 0xa0, 0x79, 0x20, 0x61, 0x6d, 0xa5, 0xb0, 0x48, 0x10,
|
||||||
|
0x0d, 0x20, 0x78, 0x6d, 0xa5, 0xb0, 0x30, 0x09, 0xa5, 0x63, 0x49, 0xff,
|
||||||
|
0x85, 0x63, 0x20, 0xb4, 0x73, 0xa9, 0xb0, 0xa0, 0x79, 0x20, 0x7c, 0x6d,
|
||||||
|
0x68, 0x10, 0x03, 0x20, 0xb4, 0x73, 0xa9, 0x6d, 0xa0, 0x79, 0x4c, 0x11,
|
||||||
|
0x74, 0x20, 0x61, 0x70, 0xa9, 0x00, 0x85, 0x63, 0x20, 0x98, 0x74, 0xa2,
|
||||||
|
0x9c, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa9, 0xa4, 0xa0, 0x00, 0x20, 0x3e,
|
||||||
|
0x70, 0xa9, 0x00, 0x85, 0xb0, 0xa5, 0x63, 0x20, 0x09, 0x75, 0xa9, 0x9c,
|
||||||
|
0xa0, 0x00, 0x4c, 0xbf, 0x6f, 0x48, 0x4c, 0xca, 0x74, 0xa5, 0xb0, 0x48,
|
||||||
|
0x10, 0x03, 0x20, 0xb4, 0x73, 0xa5, 0xac, 0x48, 0xc9, 0x81, 0x90, 0x07,
|
||||||
|
0xa9, 0xa3, 0xa0, 0x79, 0x20, 0xbf, 0x6f, 0xa9, 0x82, 0xa0, 0x79, 0x20,
|
||||||
|
0x11, 0x74, 0x68, 0xc9, 0x81, 0x90, 0x07, 0xa9, 0x69, 0xa0, 0x79, 0x20,
|
||||||
|
0x61, 0x6d, 0x68, 0x10, 0x16, 0x4c, 0xb4, 0x73, 0x20, 0x96, 0x6c, 0xe0,
|
||||||
|
0x08, 0xb0, 0x20, 0xa9, 0x00, 0x38, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x01,
|
||||||
|
0x11, 0x81, 0x11, 0x60, 0x20, 0x96, 0x6c, 0xe0, 0x08, 0xb0, 0x0c, 0xa9,
|
||||||
|
0xff, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x21, 0x11, 0x81, 0x11, 0x60, 0x4c,
|
||||||
|
0xf3, 0x66, 0x20, 0xe5, 0x63, 0x20, 0x96, 0x6c, 0xe0, 0x08, 0xb0, 0xf3,
|
||||||
|
0x20, 0xc2, 0x00, 0xc9, 0x29, 0xf0, 0x03, 0x4c, 0xf3, 0x63, 0x20, 0xbc,
|
||||||
|
0x00, 0xa9, 0x00, 0x38, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x21, 0x11, 0xf0,
|
||||||
|
0x02, 0xa9, 0xff, 0x4c, 0xbe, 0x70, 0xe0, 0x19, 0xb0, 0x4a, 0x86, 0x78,
|
||||||
|
0xa9, 0x18, 0x20, 0x09, 0x69, 0xa0, 0x17, 0xa2, 0x18, 0x46, 0x11, 0x66,
|
||||||
|
0x12, 0x66, 0x13, 0x8a, 0x2a, 0x91, 0xad, 0x88, 0x10, 0xf3, 0xa5, 0x78,
|
||||||
|
0xf0, 0x0a, 0xaa, 0x38, 0x49, 0xff, 0x69, 0x18, 0xf0, 0x1c, 0xd0, 0x0f,
|
||||||
|
0xa8, 0xb1, 0xad, 0xc9, 0x30, 0xd0, 0x07, 0xca, 0xf0, 0x03, 0xc8, 0x10,
|
||||||
|
0xf4, 0xe8, 0x98, 0x18, 0x65, 0xad, 0x85, 0xad, 0xa9, 0x00, 0x65, 0xae,
|
||||||
|
0x85, 0xae, 0x68, 0x68, 0x86, 0xac, 0x20, 0xbc, 0x00, 0x4c, 0x54, 0x69,
|
||||||
|
0x4c, 0xf3, 0x66, 0xe0, 0x07, 0xb0, 0xf9, 0x86, 0x78, 0xa9, 0x06, 0x20,
|
||||||
|
0x09, 0x69, 0xa0, 0x05, 0xf8, 0xa5, 0x13, 0x20, 0x0d, 0x76, 0xa5, 0x12,
|
||||||
|
0x20, 0x0d, 0x76, 0xa5, 0x11, 0x20, 0x0d, 0x76, 0xd8, 0xa2, 0x06, 0xa5,
|
||||||
|
0x78, 0xf0, 0xb5, 0xaa, 0x38, 0x49, 0xff, 0x69, 0x06, 0xf0, 0xc7, 0xd0,
|
||||||
|
0xba, 0xaa, 0x29, 0x0f, 0x20, 0x18, 0x76, 0x8a, 0x4a, 0x4a, 0x4a, 0x4a,
|
||||||
|
0xc9, 0x0a, 0x69, 0x30, 0x91, 0xad, 0x88, 0x60, 0x85, 0xac, 0xa9, 0x00,
|
||||||
|
0x85, 0xb8, 0x8a, 0x20, 0x08, 0x72, 0x20, 0xbc, 0x00, 0x90, 0x0a, 0x09,
|
||||||
|
0x20, 0xe9, 0x61, 0xc9, 0x06, 0xb0, 0x2a, 0x69, 0x0a, 0x29, 0x0f, 0xaa,
|
||||||
|
0xa5, 0xac, 0xf0, 0xe4, 0x69, 0x04, 0x90, 0xdc, 0x4c, 0x81, 0x6e, 0xaa,
|
||||||
|
0xa5, 0xac, 0xf0, 0x06, 0xe6, 0xac, 0xf0, 0xf4, 0xa9, 0x00, 0x85, 0xb8,
|
||||||
|
0x8a, 0x20, 0x08, 0x72, 0x20, 0xbc, 0x00, 0x49, 0x30, 0xc9, 0x02, 0x90,
|
||||||
|
0xe6, 0x4c, 0xec, 0x71, 0xad, 0xc8, 0x02, 0xd0, 0x18, 0x20, 0xb1, 0x78,
|
||||||
|
0x90, 0x0b, 0x8d, 0xc9, 0x02, 0xa2, 0x20, 0x8e, 0xca, 0x02, 0x4c, 0x20,
|
||||||
|
0x5d, 0xae, 0xca, 0x02, 0xf0, 0x03, 0xce, 0xca, 0x02, 0xa2, 0xd8, 0x20,
|
||||||
|
0x8c, 0x76, 0xa2, 0xdb, 0x20, 0x8c, 0x76, 0x60, 0xb5, 0x00, 0x10, 0xfb,
|
||||||
|
0x0a, 0x29, 0x40, 0xf0, 0xf6, 0x95, 0x00, 0x8a, 0xa8, 0x68, 0x68, 0xa9,
|
||||||
|
0x05, 0x20, 0x04, 0x59, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88,
|
||||||
|
0x48, 0xa5, 0x87, 0x48, 0xa9, 0x8d, 0x48, 0xb9, 0x01, 0x00, 0x85, 0xc3,
|
||||||
|
0xb9, 0x02, 0x00, 0x85, 0xc4, 0x4c, 0xc3, 0x5c, 0x20, 0xb1, 0x78, 0xb0,
|
||||||
|
0x09, 0xad, 0xca, 0x02, 0xf0, 0x09, 0xad, 0xc9, 0x02, 0x38, 0xa2, 0x00,
|
||||||
|
0x8e, 0xca, 0x02, 0x60, 0xa2, 0xdb, 0x2c, 0xa2, 0xd8, 0xc9, 0x93, 0xf0,
|
||||||
|
0x12, 0xc9, 0xb4, 0xf0, 0x08, 0x38, 0xe9, 0xa2, 0xf0, 0x0e, 0x4c, 0xf3,
|
||||||
|
0x63, 0xa9, 0x7f, 0x35, 0x00, 0x10, 0x05, 0xb5, 0x00, 0x0a, 0x15, 0x00,
|
||||||
|
0x95, 0x00, 0x4c, 0xbc, 0x00, 0x58, 0xa2, 0xdb, 0x2c, 0xa2, 0xd8, 0x86,
|
||||||
|
0x78, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xa5, 0x79, 0xa6, 0x7a, 0x20,
|
||||||
|
0x2d, 0x5b, 0xb0, 0x03, 0x4c, 0x7b, 0x5e, 0xa6, 0x78, 0xa5, 0xaa, 0xe9,
|
||||||
|
0x01, 0x95, 0x01, 0xa5, 0xab, 0xe9, 0x00, 0x95, 0x02, 0xa9, 0xc0, 0x95,
|
||||||
|
0x00, 0x60, 0xd0, 0xfd, 0xa5, 0xdb, 0x0a, 0x05, 0xdb, 0x85, 0xdb, 0x4c,
|
||||||
|
0x82, 0x5e, 0xd0, 0xf1, 0xa5, 0xd8, 0x0a, 0x05, 0xd8, 0x85, 0xd8, 0x4c,
|
||||||
|
0x82, 0x5e, 0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0x20, 0x74, 0x77, 0x10,
|
||||||
|
0xfb, 0xa5, 0xb4, 0x09, 0x80, 0x85, 0xb4, 0x20, 0x81, 0x6d, 0xf0, 0xf0,
|
||||||
|
0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0x20, 0x74, 0x77, 0x30, 0xfb, 0xf0,
|
||||||
|
0xf9, 0xa5, 0xb4, 0x09, 0x80, 0x85, 0xb4, 0x20, 0x81, 0x6d, 0xf0, 0xee,
|
||||||
|
0xc9, 0x29, 0xd0, 0x05, 0x68, 0x68, 0x4c, 0xbc, 0x00, 0x4c, 0xf3, 0x63,
|
||||||
|
0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xd0, 0xed, 0x20, 0x9d, 0x70, 0xa5, 0xb0,
|
||||||
|
0x09, 0x7f, 0x25, 0xad, 0x48, 0xa5, 0xae, 0x48, 0xa5, 0xaf, 0x48, 0xa5,
|
||||||
|
0xac, 0x48, 0x20, 0xbc, 0x00, 0x20, 0x91, 0x62, 0x68, 0x85, 0xb3, 0x68,
|
||||||
|
0x85, 0xb6, 0x68, 0x85, 0xb5, 0x68, 0x85, 0xb4, 0x85, 0xb7, 0xa9, 0xb3,
|
||||||
|
0xa0, 0x00, 0x4c, 0xdb, 0x70, 0xc9, 0x2c, 0xf0, 0x1b, 0x20, 0x4a, 0x6c,
|
||||||
|
0x8a, 0xf0, 0x0a, 0xe0, 0x10, 0x90, 0x45, 0xe4, 0x64, 0xb0, 0x02, 0x86,
|
||||||
|
0x64, 0x86, 0x0f, 0x20, 0xc2, 0x00, 0xf0, 0x1a, 0xc9, 0x2c, 0xd0, 0xa9,
|
||||||
|
0x20, 0x47, 0x6c, 0x8a, 0x30, 0x2e, 0xe0, 0x01, 0x90, 0x2a, 0xa5, 0x0f,
|
||||||
|
0xf0, 0x06, 0xe4, 0x0f, 0xf0, 0x02, 0xb0, 0x20, 0x86, 0x64, 0xa5, 0x0f,
|
||||||
|
0xf0, 0x06, 0xc5, 0x64, 0xb0, 0x03, 0x85, 0x64, 0x38, 0xe5, 0x64, 0xb0,
|
||||||
|
0xfc, 0x65, 0x64, 0x18, 0x65, 0x64, 0x85, 0x10, 0xa5, 0x0f, 0x38, 0xe5,
|
||||||
|
0x10, 0x85, 0x10, 0x60, 0x4c, 0xf3, 0x66, 0xa5, 0xb0, 0x30, 0xf9, 0xa5,
|
||||||
|
0xac, 0xf0, 0xf4, 0x20, 0x8e, 0x70, 0xa9, 0x00, 0x85, 0x77, 0x85, 0x76,
|
||||||
|
0x85, 0x75, 0x85, 0x78, 0x85, 0xaf, 0x85, 0xae, 0x85, 0xad, 0xa2, 0x18,
|
||||||
|
0xa5, 0xb3, 0x4a, 0xb0, 0x0e, 0x06, 0xb6, 0x26, 0xb5, 0x26, 0xb4, 0x26,
|
||||||
|
0x77, 0x26, 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, 0xb6, 0x26, 0xb5, 0x26,
|
||||||
|
0xb4, 0x26, 0x77, 0x26, 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, 0xaf, 0x26,
|
||||||
|
0xae, 0x26, 0xad, 0xa5, 0xaf, 0x2a, 0x85, 0x5b, 0xa5, 0xae, 0x2a, 0x85,
|
||||||
|
0x5c, 0xa5, 0xad, 0x2a, 0x85, 0x5d, 0xa9, 0x00, 0x2a, 0x85, 0x5e, 0xa5,
|
||||||
|
0x77, 0xe5, 0x5b, 0x85, 0x5b, 0xa5, 0x76, 0xe5, 0x5c, 0x85, 0x5c, 0xa5,
|
||||||
|
0x75, 0xe5, 0x5d, 0xa8, 0xa5, 0x78, 0xe5, 0x5e, 0x90, 0x0e, 0x85, 0x78,
|
||||||
|
0x84, 0x75, 0xa5, 0x5c, 0x85, 0x76, 0xa5, 0x5b, 0x85, 0x77, 0xe6, 0xaf,
|
||||||
|
0xca, 0xd0, 0xa2, 0x38, 0xa5, 0xb3, 0xe9, 0x80, 0x6a, 0x69, 0x00, 0x85,
|
||||||
|
0xac, 0x4c, 0xf2, 0x6d, 0x20, 0xe5, 0x63, 0x20, 0x76, 0x65, 0x20, 0xe2,
|
||||||
|
0x63, 0xa4, 0x95, 0xa5, 0x96, 0x4c, 0x23, 0x68, 0x46, 0x5f, 0xa9, 0x7e,
|
||||||
|
0xa0, 0x79, 0x20, 0x3e, 0x70, 0xc6, 0xac, 0x60, 0x46, 0x5f, 0xa9, 0x7e,
|
||||||
|
0xa0, 0x79, 0x4c, 0x3e, 0x70, 0x6c, 0xcd, 0x02, 0x6c, 0xcf, 0x02, 0x6c,
|
||||||
|
0xd1, 0x02, 0x6c, 0xd3, 0x02, 0x00, 0x00, 0x00, 0x64, 0x76, 0x72, 0x7f,
|
||||||
|
0xef, 0xff, 0xe6, 0xc3, 0xd0, 0x02, 0xe6, 0xc4, 0xad, 0xff, 0xff, 0xc9,
|
||||||
|
0x3a, 0xb0, 0x0a, 0xc9, 0x20, 0xf0, 0xef, 0x38, 0xe9, 0x30, 0x38, 0xe9,
|
||||||
|
0xd0, 0x60, 0x4c, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x4c, 0xf3, 0x66, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x03, 0x0d, 0x4d, 0x65,
|
||||||
|
0x6d, 0x6f, 0x72, 0x79, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x00, 0x20,
|
||||||
|
0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x65, 0x65, 0x0d, 0x45,
|
||||||
|
0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x20, 0x42, 0x41, 0x53, 0x49,
|
||||||
|
0x43, 0x20, 0x31, 0x2e, 0x31, 0x30, 0x00, 0x02, 0x80, 0x19, 0x56, 0x62,
|
||||||
|
0x80, 0x76, 0x22, 0xf3, 0x82, 0x38, 0xaa, 0x40, 0x80, 0x35, 0x04, 0xf3,
|
||||||
|
0x81, 0x35, 0x04, 0xf3, 0x80, 0x80, 0x00, 0x00, 0x80, 0x31, 0x72, 0x18,
|
||||||
|
0x91, 0x43, 0x4f, 0xf8, 0x94, 0x74, 0x23, 0xf7, 0x94, 0x74, 0x24, 0x00,
|
||||||
|
0x81, 0x38, 0xaa, 0x3b, 0x06, 0x74, 0x63, 0x90, 0x8c, 0x77, 0x23, 0x0c,
|
||||||
|
0xab, 0x7a, 0x1e, 0x94, 0x00, 0x7c, 0x63, 0x42, 0x80, 0x7e, 0x75, 0xfe,
|
||||||
|
0xd0, 0x80, 0x31, 0x72, 0x15, 0x81, 0x00, 0x00, 0x00, 0x81, 0x49, 0x0f,
|
||||||
|
0xdb, 0x04, 0x86, 0x1e, 0xd7, 0xfb, 0x87, 0x99, 0x26, 0x65, 0x87, 0x23,
|
||||||
|
0x34, 0x58, 0x86, 0xa5, 0x5d, 0xe1, 0x83, 0x49, 0x0f, 0xdb, 0x08, 0x78,
|
||||||
|
0x3a, 0xc5, 0x37, 0x7b, 0x83, 0xa2, 0x5c, 0x7c, 0x2e, 0xdd, 0x4d, 0x7d,
|
||||||
|
0x99, 0xb0, 0x1e, 0x7d, 0x59, 0xed, 0x24, 0x7e, 0x91, 0x72, 0x00, 0x7e,
|
||||||
|
0x4c, 0xb9, 0x73, 0x7f, 0xaa, 0xaa, 0x53, 0x81, 0x00, 0x00, 0x00, 0x81,
|
||||||
|
0x80, 0x00, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
|
||||||
|
0x84, 0x20, 0x00, 0x00, 0xfe, 0x79, 0x60, 0x00, 0x27, 0x10, 0xff, 0xfc,
|
||||||
|
0x18, 0x00, 0x00, 0x64, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x01, 0x23, 0x5d,
|
||||||
|
0x5e, 0x5c, 0x28, 0x62, 0x94, 0x5e, 0x10, 0x61, 0x28, 0x65, 0x2e, 0x61,
|
||||||
|
0x80, 0x5f, 0x52, 0x5f, 0xf3, 0x5d, 0xb2, 0x5d, 0xc7, 0x5e, 0x4a, 0x5d,
|
||||||
|
0xd6, 0x5d, 0x21, 0x77, 0x2d, 0x77, 0x7f, 0x5e, 0xda, 0x5e, 0x21, 0x5d,
|
||||||
|
0xea, 0x5e, 0x88, 0x5d, 0x55, 0x5f, 0x46, 0x6d, 0xb6, 0x78, 0xb9, 0x78,
|
||||||
|
0x3f, 0x68, 0xcb, 0x6c, 0xe7, 0x6c, 0x34, 0x6d, 0xbc, 0x5d, 0x25, 0x5e,
|
||||||
|
0x21, 0x60, 0x8e, 0x5d, 0xa9, 0x5b, 0xa6, 0x5b, 0x54, 0x5b, 0xa8, 0x77,
|
||||||
|
0xf0, 0x5f, 0x0c, 0x6d, 0x3b, 0x75, 0x4f, 0x75, 0xcf, 0x76, 0xd2, 0x76,
|
||||||
|
0xbb, 0x70, 0x45, 0x71, 0xd8, 0x70, 0x0a, 0x00, 0x0f, 0x68, 0x30, 0x68,
|
||||||
|
0xff, 0x77, 0x5b, 0x74, 0xb9, 0x6e, 0xbf, 0x73, 0x91, 0x74, 0x98, 0x74,
|
||||||
|
0xe1, 0x74, 0x0d, 0x75, 0xc1, 0x6c, 0xd5, 0x6c, 0x1f, 0x6c, 0x28, 0x6c,
|
||||||
|
0xf1, 0x68, 0x59, 0x6c, 0x37, 0x6c, 0xff, 0x6b, 0xe2, 0x6b, 0x53, 0x6b,
|
||||||
|
0xdf, 0x75, 0x8e, 0x75, 0x66, 0x75, 0x3a, 0x77, 0x50, 0x77, 0x9c, 0x78,
|
||||||
|
0xa8, 0x78, 0x8c, 0x78, 0x67, 0x6b, 0x6f, 0x6b, 0x9d, 0x6b, 0x79, 0x7e,
|
||||||
|
0x6d, 0x79, 0x63, 0x6d, 0x7b, 0xf9, 0x6e, 0x7b, 0xc1, 0x6f, 0x7f, 0x7a,
|
||||||
|
0x73, 0x50, 0x9c, 0x64, 0x46, 0x82, 0x64, 0x46, 0x8f, 0x64, 0x56, 0x4b,
|
||||||
|
0x65, 0x56, 0x32, 0x65, 0x7d, 0xb3, 0x73, 0x5a, 0xbf, 0x63, 0x64, 0xbd,
|
||||||
|
0x64, 0x2a, 0x2b, 0x2d, 0x2f, 0x3c, 0x3d, 0x3e, 0x3f, 0x41, 0x42, 0x43,
|
||||||
|
0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x52,
|
||||||
|
0x53, 0x54, 0x55, 0x56, 0x57, 0x5e, 0x00, 0xe5, 0x7a, 0xe7, 0x7a, 0xe9,
|
||||||
|
0x7a, 0xeb, 0x7a, 0xed, 0x7a, 0xf1, 0x7a, 0xf3, 0x7a, 0xf7, 0x7a, 0xf9,
|
||||||
|
0x7a, 0x06, 0x7b, 0x1d, 0x7b, 0x32, 0x7b, 0x4a, 0x7b, 0x54, 0x7b, 0x5d,
|
||||||
|
0x7b, 0x6a, 0x7b, 0x6f, 0x7b, 0x80, 0x7b, 0xa1, 0x7b, 0xac, 0x7b, 0xbe,
|
||||||
|
0x7b, 0xc6, 0x7b, 0xd9, 0x7b, 0x06, 0x7c, 0x2c, 0x7c, 0x3f, 0x7c, 0x4e,
|
||||||
|
0x7c, 0x58, 0x7c, 0x67, 0x7c, 0xb7, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb8,
|
||||||
|
0x00, 0x3c, 0xbe, 0xc1, 0x00, 0xc0, 0x00, 0x3e, 0xbd, 0xbf, 0x00, 0x9f,
|
||||||
|
0x00, 0x42, 0x53, 0xc4, 0x4e, 0x44, 0xba, 0x53, 0x43, 0xd6, 0x54, 0x4e,
|
||||||
|
0xcf, 0x00, 0x49, 0x4e, 0x24, 0xdb, 0x49, 0x54, 0x43, 0x4c, 0x52, 0xa8,
|
||||||
|
0x49, 0x54, 0x53, 0x45, 0x54, 0xa7, 0x49, 0x54, 0x54, 0x53, 0x54, 0xdc,
|
||||||
|
0x00, 0x41, 0x4c, 0x4c, 0x9c, 0x48, 0x52, 0x24, 0xd9, 0x4c, 0x45, 0x41,
|
||||||
|
0x52, 0xa2, 0x4f, 0x4e, 0x54, 0xa0, 0x4f, 0x53, 0xcc, 0x00, 0x41, 0x54,
|
||||||
|
0x41, 0x83, 0x45, 0x43, 0x88, 0x45, 0x45, 0x4b, 0xd1, 0x45, 0x46, 0x99,
|
||||||
|
0x49, 0x4d, 0x85, 0x4f, 0x4b, 0x45, 0x9b, 0x4f, 0x9d, 0x00, 0x4e, 0x44,
|
||||||
|
0x80, 0x4f, 0x52, 0xbb, 0x58, 0x50, 0xcb, 0x00, 0x4e, 0xad, 0x4f, 0x52,
|
||||||
|
0x81, 0x52, 0x45, 0xc6, 0x00, 0x45, 0x54, 0xa5, 0x4f, 0x53, 0x55, 0x42,
|
||||||
|
0x8d, 0x4f, 0x54, 0x4f, 0x89, 0x00, 0x45, 0x58, 0x24, 0xda, 0x00, 0x46,
|
||||||
|
0x8b, 0x4e, 0x43, 0x95, 0x4e, 0x50, 0x55, 0x54, 0x84, 0x4e, 0x54, 0xc3,
|
||||||
|
0x52, 0x51, 0xa9, 0x00, 0x43, 0x41, 0x53, 0x45, 0x24, 0xd8, 0x45, 0x46,
|
||||||
|
0x54, 0x24, 0xe2, 0x45, 0x4e, 0xd3, 0x45, 0x54, 0x87, 0x49, 0x53, 0x54,
|
||||||
|
0xa1, 0x4f, 0x41, 0x44, 0x97, 0x4f, 0x47, 0xca, 0x4f, 0x4f, 0x50, 0x9e,
|
||||||
|
0x00, 0x41, 0x58, 0xdd, 0x49, 0x44, 0x24, 0xe4, 0x49, 0x4e, 0xde, 0x00,
|
||||||
|
0x45, 0x57, 0xa3, 0x45, 0x58, 0x54, 0x82, 0x4d, 0x49, 0xaa, 0x4f, 0x54,
|
||||||
|
0xb0, 0x55, 0x4c, 0x4c, 0x94, 0x00, 0x46, 0x46, 0xb4, 0x4e, 0x93, 0x52,
|
||||||
|
0xbc, 0x00, 0x45, 0x45, 0x4b, 0xd0, 0x49, 0xdf, 0x4f, 0x4b, 0x45, 0x9a,
|
||||||
|
0x4f, 0x53, 0xc7, 0x52, 0x49, 0x4e, 0x54, 0x9f, 0x00, 0x45, 0x41, 0x44,
|
||||||
|
0x86, 0x45, 0x4d, 0x91, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x8c, 0x45,
|
||||||
|
0x54, 0x49, 0x52, 0x51, 0x8e, 0x45, 0x54, 0x4e, 0x4d, 0x49, 0x8f, 0x45,
|
||||||
|
0x54, 0x55, 0x52, 0x4e, 0x90, 0x49, 0x47, 0x48, 0x54, 0x24, 0xe3, 0x4e,
|
||||||
|
0x44, 0xc9, 0x55, 0x4e, 0x8a, 0x00, 0x41, 0x44, 0x44, 0xd2, 0x41, 0x56,
|
||||||
|
0x45, 0x98, 0x47, 0x4e, 0xc2, 0x49, 0x4e, 0xcd, 0x50, 0x43, 0x28, 0xae,
|
||||||
|
0x51, 0x52, 0xc8, 0x54, 0x45, 0x50, 0xb1, 0x54, 0x4f, 0x50, 0x92, 0x54,
|
||||||
|
0x52, 0x24, 0xd4, 0x57, 0x41, 0x50, 0xa6, 0x00, 0x41, 0x42, 0x28, 0xab,
|
||||||
|
0x41, 0x4e, 0xce, 0x48, 0x45, 0x4e, 0xaf, 0x4f, 0xac, 0x57, 0x4f, 0x50,
|
||||||
|
0x49, 0xe0, 0x00, 0x43, 0x41, 0x53, 0x45, 0x24, 0xd7, 0x4e, 0x54, 0x49,
|
||||||
|
0x4c, 0xb2, 0x53, 0x52, 0xc5, 0x00, 0x41, 0x4c, 0xd5, 0x41, 0x52, 0x50,
|
||||||
|
0x54, 0x52, 0xe1, 0x00, 0x41, 0x49, 0x54, 0x96, 0x48, 0x49, 0x4c, 0x45,
|
||||||
|
0xb3, 0x49, 0x44, 0x54, 0x48, 0xa4, 0x00, 0xb9, 0x00, 0x03, 0x45, 0x4a,
|
||||||
|
0x7b, 0x03, 0x46, 0x56, 0x7b, 0x04, 0x4e, 0xaf, 0x7b, 0x04, 0x44, 0x32,
|
||||||
|
0x7b, 0x05, 0x49, 0x74, 0x7b, 0x03, 0x44, 0x40, 0x7b, 0x04, 0x52, 0xd9,
|
||||||
|
0x7b, 0x03, 0x4c, 0x8e, 0x7b, 0x03, 0x44, 0x36, 0x7b, 0x04, 0x47, 0x65,
|
||||||
|
0x7b, 0x03, 0x52, 0x02, 0x7c, 0x02, 0x49, 0x6f, 0x7b, 0x07, 0x52, 0xe0,
|
||||||
|
0x7b, 0x05, 0x47, 0x60, 0x7b, 0x06, 0x52, 0xe7, 0x7b, 0x06, 0x52, 0xed,
|
||||||
|
0x7b, 0x06, 0x52, 0xf3, 0x7b, 0x03, 0x52, 0xdd, 0x7b, 0x04, 0x53, 0x1f,
|
||||||
|
0x7c, 0x02, 0x4f, 0xc1, 0x7b, 0x04, 0x4e, 0xb9, 0x7b, 0x03, 0x49, 0x71,
|
||||||
|
0x7b, 0x04, 0x57, 0x58, 0x7c, 0x04, 0x4c, 0x95, 0x7b, 0x04, 0x53, 0x0a,
|
||||||
|
0x7c, 0x03, 0x44, 0x3d, 0x7b, 0x04, 0x50, 0xcc, 0x7b, 0x04, 0x44, 0x43,
|
||||||
|
0x7b, 0x04, 0x43, 0x1d, 0x7b, 0x02, 0x44, 0x47, 0x7b, 0x04, 0x4c, 0x9c,
|
||||||
|
0x7b, 0x05, 0x50, 0xd3, 0x7b, 0x04, 0x43, 0x2a, 0x7b, 0x04, 0x4c, 0x91,
|
||||||
|
0x7b, 0x05, 0x43, 0x25, 0x7b, 0x03, 0x4e, 0xac, 0x7b, 0x05, 0x57, 0x61,
|
||||||
|
0x7c, 0x03, 0x47, 0x5d, 0x7b, 0x04, 0x53, 0x27, 0x7c, 0x06, 0x42, 0x10,
|
||||||
|
0x7b, 0x06, 0x42, 0x0a, 0x7b, 0x03, 0x49, 0x7c, 0x7b, 0x03, 0x4e, 0xb3,
|
||||||
|
0x7b, 0x04, 0x54, 0x2c, 0x7c, 0x02, 0x54, 0x37, 0x7c, 0x02, 0x46, 0x54,
|
||||||
|
0x7b, 0x04, 0x53, 0x14, 0x7c, 0x04, 0x54, 0x33, 0x7c, 0x03, 0x4e, 0xb6,
|
||||||
|
0x7b, 0x04, 0x53, 0x1b, 0x7c, 0x05, 0x55, 0x45, 0x7c, 0x05, 0x57, 0x5c,
|
||||||
|
0x7c, 0x03, 0x4f, 0xbe, 0x7b, 0x01, 0x2b, 0x00, 0x00, 0x01, 0x2d, 0x00,
|
||||||
|
0x00, 0x01, 0x2a, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00, 0x01, 0x5e, 0x00,
|
||||||
|
0x00, 0x03, 0x41, 0xfc, 0x7a, 0x03, 0x45, 0x4d, 0x7b, 0x02, 0x4f, 0xc3,
|
||||||
|
0x7b, 0x02, 0x3e, 0xf3, 0x7a, 0x02, 0x3c, 0xed, 0x7a, 0x01, 0x3e, 0x00,
|
||||||
|
0x00, 0x01, 0x3d, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x03, 0x53, 0x0e,
|
||||||
|
0x7c, 0x03, 0x49, 0x79, 0x7b, 0x03, 0x41, 0xf9, 0x7a, 0x03, 0x55, 0x4a,
|
||||||
|
0x7c, 0x03, 0x46, 0x59, 0x7b, 0x03, 0x50, 0xd0, 0x7b, 0x03, 0x53, 0x18,
|
||||||
|
0x7c, 0x03, 0x52, 0xff, 0x7b, 0x03, 0x4c, 0x99, 0x7b, 0x03, 0x45, 0x50,
|
||||||
|
0x7b, 0x03, 0x43, 0x2e, 0x7b, 0x03, 0x53, 0x11, 0x7c, 0x03, 0x54, 0x30,
|
||||||
|
0x7c, 0x03, 0x41, 0x02, 0x7b, 0x04, 0x50, 0xc6, 0x7b, 0x04, 0x44, 0x39,
|
||||||
|
0x7b, 0x04, 0x53, 0x06, 0x7c, 0x03, 0x4c, 0x8b, 0x7b, 0x04, 0x53, 0x23,
|
||||||
|
0x7c, 0x03, 0x56, 0x4e, 0x7c, 0x03, 0x41, 0xff, 0x7a, 0x06, 0x55, 0x3f,
|
||||||
|
0x7c, 0x06, 0x4c, 0x80, 0x7b, 0x04, 0x43, 0x21, 0x7b, 0x04, 0x48, 0x6a,
|
||||||
|
0x7b, 0x04, 0x42, 0x06, 0x7b, 0x06, 0x42, 0x16, 0x7b, 0x03, 0x4d, 0xa1,
|
||||||
|
0x7b, 0x03, 0x4d, 0xa8, 0x7b, 0x02, 0x50, 0xca, 0x7b, 0x05, 0x54, 0x39,
|
||||||
|
0x7c, 0x06, 0x56, 0x51, 0x7c, 0x05, 0x4c, 0x86, 0x7b, 0x06, 0x52, 0xf9,
|
||||||
|
0x7b, 0x04, 0x4d, 0xa4, 0x7b, 0x21, 0x7e, 0x32, 0x7e, 0x39, 0x7e, 0x4e,
|
||||||
|
0x7e, 0x5a, 0x7e, 0x68, 0x7e, 0x71, 0x7e, 0x7f, 0x7e, 0x93, 0x7e, 0xa0,
|
||||||
|
0x7e, 0xb1, 0x7e, 0xc0, 0x7e, 0xcf, 0x7e, 0xdd, 0x7e, 0xed, 0x7e, 0x00,
|
||||||
|
0x7f, 0x0e, 0x7f, 0x21, 0x7f, 0x4e, 0x45, 0x58, 0x54, 0x20, 0x77, 0x69,
|
||||||
|
0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x46, 0x4f, 0x52, 0x00, 0x53, 0x79,
|
||||||
|
0x6e, 0x74, 0x61, 0x78, 0x00, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x20,
|
||||||
|
0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x47, 0x4f, 0x53, 0x55,
|
||||||
|
0x42, 0x00, 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x41, 0x54,
|
||||||
|
0x41, 0x00, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63,
|
||||||
|
0x61, 0x6c, 0x6c, 0x00, 0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77,
|
||||||
|
0x00, 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f,
|
||||||
|
0x72, 0x79, 0x00, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64,
|
||||||
|
0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x41,
|
||||||
|
0x72, 0x72, 0x61, 0x79, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x00,
|
||||||
|
0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e,
|
||||||
|
0x73, 0x69, 0x6f, 0x6e, 0x00, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20,
|
||||||
|
0x62, 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x00, 0x49, 0x6c, 0x6c, 0x65,
|
||||||
|
0x67, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x00, 0x54,
|
||||||
|
0x79, 0x70, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68,
|
||||||
|
0x00, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6f, 0x20,
|
||||||
|
0x6c, 0x6f, 0x6e, 0x67, 0x00, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20,
|
||||||
|
0x74, 0x6f, 0x6f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x00,
|
||||||
|
0x43, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e,
|
||||||
|
0x75, 0x65, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20,
|
||||||
|
0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x4c, 0x4f, 0x4f,
|
||||||
|
0x50, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x4f,
|
||||||
|
0x00, 0x0d, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x00, 0x20, 0x45, 0x72, 0x72,
|
||||||
|
0x6f, 0x72, 0x00, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x00,
|
||||||
|
0x0d, 0x52, 0x65, 0x61, 0x64, 0x79, 0x0d, 0x00, 0x20, 0x45, 0x78, 0x74,
|
||||||
|
0x72, 0x61, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x0d, 0x00,
|
||||||
|
0x20, 0x52, 0x65, 0x64, 0x6f, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73,
|
||||||
|
0x74, 0x61, 0x72, 0x74, 0x0d, 0x00, 0xad, 0x11, 0xd0, 0x10, 0x07, 0xad,
|
||||||
|
0x10, 0xd0, 0x29, 0x7f, 0x38, 0x60, 0xa9, 0x00, 0x18, 0x60, 0x46, 0x4c,
|
||||||
|
0x4f, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x20, 0x50, 0x4f, 0x49, 0x4e, 0x54,
|
||||||
|
0x20, 0x42, 0x41, 0x53, 0x49, 0x43, 0x20, 0x46, 0x4f, 0x52, 0x20, 0x54,
|
||||||
|
0x48, 0x45, 0x20, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x20, 0x49,
|
||||||
|
0x20, 0x62, 0x79, 0x20, 0x4c, 0x61, 0x72, 0x72, 0x79, 0x20, 0x4e, 0x65,
|
||||||
|
0x6c, 0x73, 0x6f, 0x6e, 0x2e, 0x20, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65,
|
||||||
|
0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x45, 0x68, 0x42, 0x41, 0x53,
|
||||||
|
0x49, 0x43, 0x2e,
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return 0x58;
|
||||||
|
}
|
||||||
|
end() {
|
||||||
|
return 0x60;
|
||||||
|
}
|
||||||
|
read(page: byte, off: byte) {
|
||||||
|
return this.rom[((page - 0xe0) << 8) | off];
|
||||||
|
}
|
||||||
|
write() {}
|
||||||
|
getState() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
setState() {}
|
||||||
|
}
|
1044
js/roms/krusader.js
1044
js/roms/krusader.js
File diff suppressed because it is too large
Load Diff
706
js/roms/krusader.ts
Normal file
706
js/roms/krusader.ts
Normal file
@ -0,0 +1,706 @@
|
|||||||
|
import { byte } from 'js/types';
|
||||||
|
|
||||||
|
export default class Krusader {
|
||||||
|
rom = [
|
||||||
|
0x4c, 0xb0, 0xe2, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x60,
|
||||||
|
0x8a, 0x29, 0x20, 0xf0, 0x23, 0xa9, 0xa0, 0x85, 0xe4, 0x4c, 0xc9, 0xe3,
|
||||||
|
0xa9, 0x20, 0xc5, 0x24, 0xb0, 0x0c, 0xa9, 0x8d, 0xa0, 0x07, 0x20, 0xc9,
|
||||||
|
0xe3, 0xa9, 0xa0, 0x88, 0xd0, 0xf8, 0xa0, 0x00, 0xb1, 0xe2, 0xe6, 0xe2,
|
||||||
|
0xd0, 0x02, 0xe6, 0xe3, 0x60, 0x20, 0x15, 0xe7, 0x20, 0x76, 0xe5, 0xa5,
|
||||||
|
0xe2, 0xc5, 0xe6, 0xa5, 0xe3, 0xe5, 0xe7, 0xb0, 0xef, 0x20, 0x6d, 0xe0,
|
||||||
|
0x4c, 0x3b, 0xe0, 0xa5, 0xca, 0x85, 0xe2, 0xa5, 0xcb, 0x85, 0xe3, 0xa5,
|
||||||
|
0x4c, 0x85, 0xe6, 0xa5, 0x4d, 0x85, 0xe7, 0xd0, 0xde, 0x20, 0x15, 0xe7,
|
||||||
|
0x20, 0x6d, 0xe5, 0xa5, 0xe4, 0x85, 0xe2, 0xa5, 0xe5, 0x85, 0xe3, 0xb0,
|
||||||
|
0xc7, 0x86, 0xd8, 0xa9, 0xa0, 0x85, 0xfa, 0x20, 0x2a, 0xe0, 0x98, 0x85,
|
||||||
|
0xe4, 0x20, 0x2a, 0xe0, 0xaa, 0x20, 0x2a, 0xe0, 0x20, 0x1b, 0xe5, 0x20,
|
||||||
|
0x18, 0xe0, 0x84, 0xfa, 0xaa, 0x10, 0x18, 0x0a, 0x10, 0xe9, 0xa5, 0xe4,
|
||||||
|
0xd0, 0x03, 0x20, 0x11, 0xe0, 0x8a, 0x20, 0xc9, 0xe3, 0xa9, 0x25, 0x20,
|
||||||
|
0x1a, 0xe0, 0xaa, 0x30, 0xf5, 0x85, 0xe4, 0xc9, 0x01, 0xd0, 0x05, 0xa6,
|
||||||
|
0xd8, 0x4c, 0xcd, 0xe3, 0x48, 0x84, 0xce, 0xa2, 0xed, 0x86, 0xcf, 0xc9,
|
||||||
|
0x51, 0x90, 0x04, 0xc6, 0xcf, 0xe9, 0x50, 0x48, 0xb1, 0xce, 0xaa, 0x88,
|
||||||
|
0xb1, 0xce, 0x10, 0xfa, 0xe0, 0xc0, 0xb0, 0x04, 0xe0, 0x00, 0x30, 0xf2,
|
||||||
|
0xaa, 0x68, 0xe9, 0x01, 0xd0, 0xe9, 0x24, 0xe4, 0x30, 0x03, 0x20, 0xf8,
|
||||||
|
0xef, 0xb1, 0xce, 0x10, 0x10, 0xaa, 0x29, 0x3f, 0x85, 0xe4, 0x18, 0x69,
|
||||||
|
0xa0, 0x20, 0xc9, 0xe3, 0x88, 0xe0, 0xc0, 0x90, 0xec, 0x20, 0x0c, 0xe0,
|
||||||
|
0x68, 0xc9, 0x5d, 0xf0, 0xa4, 0xc9, 0x28, 0xd0, 0x8a, 0xf0, 0x9e, 0x20,
|
||||||
|
0x18, 0xe1, 0x95, 0x50, 0xd5, 0x78, 0x90, 0x11, 0xa0, 0x2b, 0x4c, 0xe0,
|
||||||
|
0xe3, 0x20, 0x34, 0xee, 0xd5, 0x50, 0x90, 0xf4, 0x20, 0xe4, 0xef, 0x95,
|
||||||
|
0x78, 0x4c, 0x23, 0xe8, 0x20, 0x34, 0xee, 0xf0, 0xe7, 0x38, 0xe9, 0x01,
|
||||||
|
0x60, 0x20, 0x18, 0xe1, 0x95, 0x50, 0x18, 0xf5, 0x78, 0x4c, 0x02, 0xe1,
|
||||||
|
0xa0, 0x14, 0xd0, 0xd6, 0x20, 0x18, 0xe1, 0xe8, 0xb5, 0x50, 0x85, 0xda,
|
||||||
|
0x65, 0xce, 0x48, 0xa8, 0xb5, 0x78, 0x85, 0xdb, 0x65, 0xcf, 0x48, 0xc4,
|
||||||
|
0xca, 0xe5, 0xcb, 0xb0, 0xe3, 0xa5, 0xda, 0x69, 0xfe, 0x85, 0xda, 0xa9,
|
||||||
|
0xff, 0xa8, 0x65, 0xdb, 0x85, 0xdb, 0xc8, 0xb1, 0xda, 0xd9, 0xcc, 0x00,
|
||||||
|
0xd0, 0x0f, 0x98, 0xf0, 0xf5, 0x68, 0x91, 0xda, 0x99, 0xcc, 0x00, 0x88,
|
||||||
|
0x10, 0xf7, 0xe8, 0x60, 0xea, 0xa0, 0x80, 0xd0, 0x95, 0xa9, 0x00, 0x20,
|
||||||
|
0x0a, 0xe7, 0xa0, 0x02, 0x94, 0x78, 0x20, 0x0a, 0xe7, 0xa9, 0xbf, 0x20,
|
||||||
|
0xc9, 0xe3, 0xa0, 0x00, 0x20, 0x9e, 0xe2, 0x94, 0x78, 0xea, 0xea, 0xea,
|
||||||
|
0xb5, 0x51, 0x85, 0xce, 0xb5, 0x79, 0x85, 0xcf, 0xe8, 0xe8, 0x20, 0xbc,
|
||||||
|
0xe1, 0xb5, 0x4e, 0xd5, 0x76, 0xb0, 0x15, 0xf6, 0x4e, 0xa8, 0xb1, 0xce,
|
||||||
|
0xb4, 0x50, 0xc4, 0xe4, 0x90, 0x04, 0xa0, 0x83, 0xd0, 0xc1, 0x91, 0xda,
|
||||||
|
0xf6, 0x50, 0x90, 0xe5, 0xb4, 0x50, 0x8a, 0x91, 0xda, 0xe8, 0xe8, 0x60,
|
||||||
|
0xb5, 0x51, 0x85, 0xda, 0x38, 0xe9, 0x02, 0x85, 0xe4, 0xb5, 0x79, 0x85,
|
||||||
|
0xdb, 0xe9, 0x00, 0x85, 0xe5, 0xa0, 0x00, 0xb1, 0xe4, 0x18, 0xe5, 0xda,
|
||||||
|
0x85, 0xe4, 0x60, 0xb5, 0x53, 0x85, 0xce, 0xb5, 0x7b, 0x85, 0xcf, 0xb5,
|
||||||
|
0x51, 0x85, 0xda, 0xb5, 0x79, 0x85, 0xdb, 0xe8, 0xe8, 0xe8, 0xa0, 0x00,
|
||||||
|
0x94, 0x78, 0x94, 0xa0, 0xc8, 0x94, 0x50, 0xb5, 0x4d, 0xd5, 0x75, 0x08,
|
||||||
|
0x48, 0xb5, 0x4f, 0xd5, 0x77, 0x90, 0x07, 0x68, 0x28, 0xb0, 0x02, 0x56,
|
||||||
|
0x50, 0x60, 0xa8, 0xb1, 0xce, 0x85, 0xe4, 0x68, 0xa8, 0x28, 0xb0, 0xf3,
|
||||||
|
0xb1, 0xda, 0xc5, 0xe4, 0xd0, 0xed, 0xf6, 0x4f, 0xf6, 0x4d, 0xb0, 0xd7,
|
||||||
|
0x20, 0xd7, 0xe1, 0x4c, 0x36, 0xe7, 0x20, 0x54, 0xe2, 0x06, 0xce, 0x26,
|
||||||
|
0xcf, 0x90, 0x0d, 0x18, 0xa5, 0xe6, 0x65, 0xda, 0x85, 0xe6, 0xa5, 0xe7,
|
||||||
|
0x65, 0xdb, 0x85, 0xe7, 0x88, 0xf0, 0x09, 0x06, 0xe6, 0x26, 0xe7, 0x10,
|
||||||
|
0xe4, 0x4c, 0x7e, 0xe7, 0xa5, 0xe6, 0x20, 0x08, 0xe7, 0xa5, 0xe7, 0x95,
|
||||||
|
0xa0, 0x06, 0xe5, 0x90, 0x28, 0x4c, 0x6f, 0xe7, 0xa9, 0x55, 0x85, 0xe5,
|
||||||
|
0x20, 0x5b, 0xe2, 0xa5, 0xce, 0x85, 0xda, 0xa5, 0xcf, 0x85, 0xdb, 0x20,
|
||||||
|
0x15, 0xe7, 0x84, 0xe6, 0x84, 0xe7, 0xa5, 0xcf, 0x10, 0x09, 0xca, 0x06,
|
||||||
|
0xe5, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa0, 0x10, 0x60, 0x20, 0x6c,
|
||||||
|
0xee, 0xf0, 0xc5, 0xff, 0xc9, 0x84, 0xd0, 0x02, 0x46, 0xf8, 0xc9, 0xdf,
|
||||||
|
0xf0, 0x11, 0xc9, 0x9b, 0xf0, 0x06, 0x99, 0x00, 0x02, 0xc8, 0x10, 0x0a,
|
||||||
|
0xa0, 0x8b, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0x88, 0x30, 0xf6, 0x20, 0x03,
|
||||||
|
0xe0, 0xea, 0xea, 0x20, 0xc9, 0xe3, 0xc9, 0x8d, 0xd0, 0xd6, 0xa9, 0xdf,
|
||||||
|
0x99, 0x00, 0x02, 0x60, 0x20, 0xd3, 0xef, 0x20, 0xcd, 0xe3, 0x46, 0xd9,
|
||||||
|
0xa9, 0xbe, 0x20, 0xc9, 0xe3, 0xa0, 0x00, 0x84, 0xfa, 0x24, 0xf8, 0x10,
|
||||||
|
0x0c, 0xa6, 0xf6, 0xa5, 0xf7, 0x20, 0x1b, 0xe5, 0xa9, 0xa0, 0x20, 0xc9,
|
||||||
|
0xe3, 0xa2, 0xff, 0x9a, 0x20, 0x9e, 0xe2, 0x84, 0xf1, 0x8a, 0x85, 0xc8,
|
||||||
|
0xa2, 0x20, 0x20, 0x91, 0xe4, 0xa5, 0xc8, 0x69, 0x00, 0x85, 0xe0, 0xa9,
|
||||||
|
0x00, 0xaa, 0x69, 0x02, 0x85, 0xe1, 0xa1, 0xe0, 0x29, 0xf0, 0xc9, 0xb0,
|
||||||
|
0xf0, 0x03, 0x4c, 0x83, 0xe8, 0xa0, 0x02, 0xb1, 0xe0, 0x99, 0xcd, 0x00,
|
||||||
|
0x88, 0xd0, 0xf8, 0x20, 0x8a, 0xe3, 0xa5, 0xf1, 0xe5, 0xc8, 0xc9, 0x04,
|
||||||
|
0xf0, 0xa8, 0x91, 0xe0, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe4, 0xa5, 0xcb,
|
||||||
|
0xe9, 0x00, 0x85, 0xe5, 0xa5, 0xe4, 0xc5, 0xcc, 0xa5, 0xe5, 0xe5, 0xcd,
|
||||||
|
0x90, 0x45, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe6, 0xa5, 0xcb, 0xe9, 0x00,
|
||||||
|
0x85, 0xe7, 0xb1, 0xca, 0x91, 0xe6, 0xe6, 0xca, 0xd0, 0x02, 0xe6, 0xcb,
|
||||||
|
0xa5, 0xe2, 0xc5, 0xca, 0xa5, 0xe3, 0xe5, 0xcb, 0xb0, 0xe0, 0xb5, 0xe4,
|
||||||
|
0x95, 0xca, 0xca, 0x10, 0xf9, 0xb1, 0xe0, 0xa8, 0x88, 0xb1, 0xe0, 0x91,
|
||||||
|
0xe6, 0x98, 0xd0, 0xf8, 0x24, 0xf8, 0x10, 0x09, 0xb5, 0xf7, 0x75, 0xf5,
|
||||||
|
0x95, 0xf7, 0xe8, 0xf0, 0xf7, 0x10, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xa0,
|
||||||
|
0x14, 0xd0, 0x71, 0x20, 0x15, 0xe7, 0xa5, 0xe2, 0x85, 0xe6, 0xa5, 0xe3,
|
||||||
|
0x85, 0xe7, 0x20, 0x75, 0xe5, 0xa5, 0xe2, 0x85, 0xe4, 0xa5, 0xe3, 0x85,
|
||||||
|
0xe5, 0xd0, 0x0e, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0xa5, 0xe6, 0x85,
|
||||||
|
0xe2, 0xa5, 0xe7, 0x85, 0xe3, 0xa0, 0x00, 0xa5, 0xca, 0xc5, 0xe4, 0xa5,
|
||||||
|
0xcb, 0xe5, 0xe5, 0xb0, 0x16, 0xa5, 0xe4, 0xd0, 0x02, 0xc6, 0xe5, 0xc6,
|
||||||
|
0xe4, 0xa5, 0xe6, 0xd0, 0x02, 0xc6, 0xe7, 0xc6, 0xe6, 0xb1, 0xe4, 0x91,
|
||||||
|
0xe6, 0x90, 0xe0, 0xa5, 0xe6, 0x85, 0xca, 0xa5, 0xe7, 0x85, 0xcb, 0x60,
|
||||||
|
0x20, 0xc9, 0xe3, 0xc8, 0xb9, 0x00, 0xeb, 0x30, 0xf7, 0xc9, 0x8d, 0xd0,
|
||||||
|
0x06, 0xa9, 0x00, 0x85, 0x24, 0xa9, 0x8d, 0xe6, 0x24, 0x2c, 0x12, 0xd0,
|
||||||
|
0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60, 0xa0, 0x06, 0x20, 0xd3, 0xee, 0x24,
|
||||||
|
0xd9, 0x30, 0x03, 0x4c, 0xb6, 0xe2, 0x4c, 0x9a, 0xeb, 0x2a, 0x69, 0xa0,
|
||||||
|
0xdd, 0x00, 0x02, 0xd0, 0x53, 0xb1, 0xfe, 0x0a, 0x30, 0x06, 0x88, 0xb1,
|
||||||
|
0xfe, 0x30, 0x29, 0xc8, 0x86, 0xc8, 0x98, 0x48, 0xa2, 0x00, 0xa1, 0xfe,
|
||||||
|
0xaa, 0x4a, 0x49, 0x48, 0x11, 0xfe, 0xc9, 0xc0, 0x90, 0x01, 0xe8, 0xc8,
|
||||||
|
0xd0, 0xf3, 0x68, 0xa8, 0x8a, 0x4c, 0xc0, 0xe4, 0xe6, 0xf1, 0xa6, 0xf1,
|
||||||
|
0xf0, 0xbc, 0x9d, 0x00, 0x02, 0x60, 0xa6, 0xc8, 0xa9, 0xa0, 0xe8, 0xdd,
|
||||||
|
0x00, 0x02, 0xb0, 0xfa, 0xb1, 0xfe, 0x29, 0x3f, 0x4a, 0xd0, 0xb6, 0xbd,
|
||||||
|
0x00, 0x02, 0xb0, 0x06, 0x69, 0x3f, 0xc9, 0x1a, 0x90, 0x6f, 0x69, 0x4f,
|
||||||
|
0xc9, 0x0a, 0x90, 0x69, 0xa6, 0xfd, 0xc8, 0xb1, 0xfe, 0x29, 0xe0, 0xc9,
|
||||||
|
0x20, 0xf0, 0x7a, 0xb5, 0xa8, 0x85, 0xc8, 0xb5, 0xd1, 0x85, 0xf1, 0x88,
|
||||||
|
0xb1, 0xfe, 0x0a, 0x10, 0xfa, 0x88, 0xb0, 0x38, 0x0a, 0x30, 0x35, 0xb4,
|
||||||
|
0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, 0x10, 0xda, 0xf0, 0xb3, 0xc9, 0x7e,
|
||||||
|
0xb0, 0x22, 0xca, 0x10, 0x04, 0xa0, 0x06, 0x10, 0x29, 0x94, 0x80, 0xa4,
|
||||||
|
0xff, 0x94, 0x58, 0xa4, 0xc8, 0x94, 0xa8, 0xa4, 0xf1, 0x94, 0xd1, 0x29,
|
||||||
|
0x1f, 0xa8, 0xb9, 0x20, 0xec, 0x0a, 0xa8, 0xa9, 0x76, 0x2a, 0x85, 0xff,
|
||||||
|
0xd0, 0x01, 0xc8, 0xc8, 0x86, 0xfd, 0xb1, 0xfe, 0x30, 0x84, 0xd0, 0x05,
|
||||||
|
0xa0, 0x0e, 0x4c, 0xe0, 0xe3, 0xc9, 0x03, 0xb0, 0xc3, 0x4a, 0xa6, 0xc8,
|
||||||
|
0xe8, 0xbd, 0x00, 0x02, 0x90, 0x04, 0xc9, 0xa2, 0xf0, 0x0a, 0xc9, 0xdf,
|
||||||
|
0xf0, 0x06, 0x86, 0xc8, 0x20, 0x1c, 0xe4, 0xc8, 0x88, 0xa6, 0xfd, 0xb1,
|
||||||
|
0xfe, 0x88, 0x0a, 0x10, 0xcf, 0xb4, 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8,
|
||||||
|
0xb1, 0xfe, 0x29, 0x9f, 0xd0, 0xed, 0x85, 0xf2, 0x85, 0xf3, 0x98, 0x48,
|
||||||
|
0x86, 0xfd, 0xb4, 0xd0, 0x84, 0xc9, 0x18, 0xa9, 0x0a, 0x85, 0xf9, 0xa2,
|
||||||
|
0x00, 0xc8, 0xb9, 0x00, 0x02, 0x29, 0x0f, 0x65, 0xf2, 0x48, 0x8a, 0x65,
|
||||||
|
0xf3, 0x30, 0x1c, 0xaa, 0x68, 0xc6, 0xf9, 0xd0, 0xf2, 0x85, 0xf2, 0x86,
|
||||||
|
0xf3, 0xc4, 0xf1, 0xd0, 0xde, 0xa4, 0xc9, 0xc8, 0x84, 0xf1, 0x20, 0x1c,
|
||||||
|
0xe4, 0x68, 0xa8, 0xa5, 0xf3, 0xb0, 0xa9, 0xa0, 0x00, 0x10, 0x8b, 0x85,
|
||||||
|
0xf3, 0x86, 0xf2, 0xa2, 0x04, 0x86, 0xc9, 0xa9, 0xb0, 0x85, 0xf9, 0xa5,
|
||||||
|
0xf2, 0xdd, 0x63, 0xe5, 0xa5, 0xf3, 0xfd, 0x68, 0xe5, 0x90, 0x0d, 0x85,
|
||||||
|
0xf3, 0xa5, 0xf2, 0xfd, 0x63, 0xe5, 0x85, 0xf2, 0xe6, 0xf9, 0xd0, 0xe7,
|
||||||
|
0xa5, 0xf9, 0xe8, 0xca, 0xf0, 0x0e, 0xc9, 0xb0, 0xf0, 0x02, 0x85, 0xc9,
|
||||||
|
0x24, 0xc9, 0x30, 0x04, 0xa5, 0xfa, 0xf0, 0x0b, 0x20, 0xc9, 0xe3, 0x24,
|
||||||
|
0xf8, 0x10, 0x04, 0x99, 0x00, 0x02, 0xc8, 0xca, 0x10, 0xc1, 0x60, 0x01,
|
||||||
|
0x0a, 0x64, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x03, 0x27, 0xa5, 0xca, 0x85,
|
||||||
|
0xe6, 0xa5, 0xcb, 0x85, 0xe7, 0xe8, 0xa5, 0xe7, 0x85, 0xe5, 0xa5, 0xe6,
|
||||||
|
0x85, 0xe4, 0xc5, 0x4c, 0xa5, 0xe5, 0xe5, 0x4d, 0xb0, 0x26, 0xa0, 0x01,
|
||||||
|
0xb1, 0xe4, 0xe5, 0xce, 0xc8, 0xb1, 0xe4, 0xe5, 0xcf, 0xb0, 0x19, 0xa0,
|
||||||
|
0x00, 0xa5, 0xe6, 0x71, 0xe4, 0x85, 0xe6, 0x90, 0x03, 0xe6, 0xe7, 0x18,
|
||||||
|
0xc8, 0xa5, 0xce, 0xf1, 0xe4, 0xc8, 0xa5, 0xcf, 0xf1, 0xe4, 0xb0, 0xca,
|
||||||
|
0x60, 0x46, 0xf8, 0xa5, 0x4c, 0x85, 0xca, 0xa5, 0x4d, 0x85, 0xcb, 0xa5,
|
||||||
|
0x4a, 0x85, 0xcc, 0xa5, 0x4b, 0x85, 0xcd, 0xa9, 0x00, 0x85, 0xfb, 0x85,
|
||||||
|
0xfc, 0x85, 0xfe, 0xa9, 0x00, 0x85, 0x1d, 0x60, 0xa5, 0xd0, 0x69, 0x05,
|
||||||
|
0x85, 0xd2, 0xa5, 0xd1, 0x69, 0x00, 0x85, 0xd3, 0xa5, 0xd2, 0xc5, 0xca,
|
||||||
|
0xa5, 0xd3, 0xe5, 0xcb, 0x90, 0x03, 0x4c, 0x6b, 0xe3, 0xa5, 0xce, 0x91,
|
||||||
|
0xd0, 0xa5, 0xcf, 0xc8, 0x91, 0xd0, 0xa5, 0xd2, 0xc8, 0x91, 0xd0, 0xa5,
|
||||||
|
0xd3, 0xc8, 0x91, 0xd0, 0xa9, 0x00, 0xc8, 0x91, 0xd0, 0xc8, 0x91, 0xd0,
|
||||||
|
0xa5, 0xd2, 0x85, 0xcc, 0xa5, 0xd3, 0x85, 0xcd, 0xa5, 0xd0, 0x90, 0x43,
|
||||||
|
0x85, 0xce, 0x84, 0xcf, 0x20, 0xff, 0xe6, 0x30, 0x0e, 0xc9, 0x40, 0xf0,
|
||||||
|
0x0a, 0x4c, 0x28, 0xe6, 0x06, 0xc9, 0x49, 0xd0, 0x07, 0xa9, 0x49, 0x85,
|
||||||
|
0xcf, 0x20, 0xff, 0xe6, 0xa5, 0x4b, 0x85, 0xd1, 0xa5, 0x4a, 0x85, 0xd0,
|
||||||
|
0xc5, 0xcc, 0xa5, 0xd1, 0xe5, 0xcd, 0xb0, 0x94, 0xb1, 0xd0, 0xc8, 0xc5,
|
||||||
|
0xce, 0xd0, 0x06, 0xb1, 0xd0, 0xc5, 0xcf, 0xf0, 0x0e, 0xc8, 0xb1, 0xd0,
|
||||||
|
0x48, 0xc8, 0xb1, 0xd0, 0x85, 0xd1, 0x68, 0xa0, 0x00, 0xf0, 0xdb, 0xa5,
|
||||||
|
0xd0, 0x69, 0x03, 0x20, 0x0a, 0xe7, 0xa5, 0xd1, 0x69, 0x00, 0x95, 0x78,
|
||||||
|
0xa5, 0xcf, 0xc9, 0x40, 0xd0, 0x1c, 0x88, 0x98, 0x20, 0x0a, 0xe7, 0x88,
|
||||||
|
0x94, 0x78, 0xa0, 0x03, 0xf6, 0x78, 0xc8, 0xb1, 0xd0, 0x30, 0xf9, 0x10,
|
||||||
|
0x09, 0xa9, 0x00, 0x85, 0xd4, 0x85, 0xd5, 0xa2, 0x20, 0x48, 0xa0, 0x00,
|
||||||
|
0xb1, 0xe0, 0x10, 0x18, 0x0a, 0x30, 0x81, 0x20, 0xff, 0xe6, 0x20, 0x08,
|
||||||
|
0xe7, 0x20, 0xff, 0xe6, 0x95, 0xa0, 0x24, 0xd4, 0x10, 0x01, 0xca, 0x20,
|
||||||
|
0xff, 0xe6, 0xb0, 0xe6, 0xc9, 0x28, 0xd0, 0x1f, 0xa5, 0xe0, 0x20, 0x0a,
|
||||||
|
0xe7, 0xa5, 0xe1, 0x95, 0x78, 0x24, 0xd4, 0x30, 0x0b, 0xa9, 0x01, 0x20,
|
||||||
|
0x0a, 0xe7, 0xa9, 0x00, 0x95, 0x78, 0xf6, 0x78, 0x20, 0xff, 0xe6, 0x30,
|
||||||
|
0xf9, 0xb0, 0xd3, 0x24, 0xd4, 0x10, 0x06, 0xc9, 0x04, 0xb0, 0xd0, 0x46,
|
||||||
|
0xd4, 0xa8, 0x85, 0xd6, 0xb9, 0x98, 0xe9, 0x29, 0x55, 0x0a, 0x85, 0xd7,
|
||||||
|
0x68, 0xa8, 0xb9, 0x98, 0xe9, 0x29, 0xaa, 0xc5, 0xd7, 0xb0, 0x09, 0x98,
|
||||||
|
0x48, 0x20, 0xff, 0xe6, 0xa5, 0xd6, 0x90, 0x95, 0xb9, 0x10, 0xea, 0x85,
|
||||||
|
0xce, 0xb9, 0x88, 0xea, 0x85, 0xcf, 0x20, 0xfc, 0xe6, 0x4c, 0xd8, 0xe6,
|
||||||
|
0x6c, 0xce, 0x00, 0xe6, 0xe0, 0xd0, 0x02, 0xe6, 0xe1, 0xb1, 0xe0, 0x60,
|
||||||
|
0x94, 0x77, 0xca, 0x30, 0x03, 0x95, 0x50, 0x60, 0xa0, 0x66, 0x4c, 0xe0,
|
||||||
|
0xe3, 0xa0, 0x00, 0xb5, 0x50, 0x85, 0xce, 0xb5, 0xa0, 0x85, 0xcf, 0xb5,
|
||||||
|
0x78, 0xf0, 0x0e, 0x85, 0xcf, 0xb1, 0xce, 0x48, 0xc8, 0xb1, 0xce, 0x85,
|
||||||
|
0xcf, 0x68, 0x85, 0xce, 0x88, 0xe8, 0x60, 0x20, 0x4a, 0xe7, 0x20, 0x15,
|
||||||
|
0xe7, 0x98, 0x20, 0x08, 0xe7, 0x95, 0xa0, 0xc5, 0xce, 0xd0, 0x06, 0xc5,
|
||||||
|
0xcf, 0xd0, 0x02, 0xf6, 0x50, 0x60, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7,
|
||||||
|
0x20, 0x15, 0xe7, 0x24, 0xcf, 0x30, 0x1b, 0xca, 0x60, 0x20, 0x15, 0xe7,
|
||||||
|
0xa5, 0xcf, 0xd0, 0x04, 0xa5, 0xce, 0xf0, 0xf3, 0xa9, 0xff, 0x20, 0x08,
|
||||||
|
0xe7, 0x95, 0xa0, 0x24, 0xcf, 0x30, 0xe9, 0x20, 0x15, 0xe7, 0x98, 0x38,
|
||||||
|
0xe5, 0xce, 0x20, 0x08, 0xe7, 0x98, 0xe5, 0xcf, 0x50, 0x23, 0xa0, 0x00,
|
||||||
|
0x10, 0x90, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xda,
|
||||||
|
0xa5, 0xcf, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0x18, 0xa5, 0xce, 0x65, 0xda,
|
||||||
|
0x20, 0x08, 0xe7, 0xa5, 0xcf, 0x65, 0xdb, 0x70, 0xdd, 0x95, 0xa0, 0x60,
|
||||||
|
0x20, 0x15, 0xe7, 0xa4, 0xce, 0xf0, 0x05, 0x88, 0xa5, 0xcf, 0xf0, 0x0c,
|
||||||
|
0x60, 0xa5, 0x24, 0x09, 0x07, 0xa8, 0xc8, 0xa9, 0xa0, 0x20, 0xc9, 0xe3,
|
||||||
|
0xc4, 0x24, 0xb0, 0xf7, 0x60, 0x20, 0xb1, 0xe7, 0x20, 0x15, 0xe7, 0xa5,
|
||||||
|
0xcf, 0x10, 0x0a, 0xa9, 0xad, 0x20, 0xc9, 0xe3, 0x20, 0x72, 0xe7, 0x50,
|
||||||
|
0xef, 0x88, 0x84, 0xd5, 0x86, 0xcf, 0xa6, 0xce, 0x20, 0x1b, 0xe5, 0xa6,
|
||||||
|
0xcf, 0x60, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xf6, 0xa5, 0xcf, 0x85,
|
||||||
|
0xf7, 0x88, 0x84, 0xf8, 0xc8, 0xa9, 0x0a, 0x85, 0xf4, 0x84, 0xf5, 0x60,
|
||||||
|
0x20, 0x15, 0xe7, 0xa5, 0xce, 0xa4, 0xcf, 0x10, 0xf2, 0x20, 0x15, 0xe7,
|
||||||
|
0xb5, 0x50, 0x85, 0xda, 0xb5, 0x78, 0x85, 0xdb, 0xa5, 0xce, 0x91, 0xda,
|
||||||
|
0xc8, 0xa5, 0xcf, 0x91, 0xda, 0xe8, 0x60, 0x68, 0x68, 0x24, 0xd5, 0x10,
|
||||||
|
0x05, 0x20, 0xcd, 0xe3, 0x46, 0xd5, 0x60, 0xa0, 0xff, 0x84, 0xd7, 0x60,
|
||||||
|
0x20, 0xcd, 0xef, 0xf0, 0x07, 0xa9, 0x25, 0x85, 0xd6, 0x88, 0x84, 0xd4,
|
||||||
|
0xe8, 0x60, 0xa5, 0xca, 0xa4, 0xcb, 0xd0, 0x5a, 0xa0, 0x41, 0xa5, 0xfc,
|
||||||
|
0xc9, 0x08, 0xb0, 0x5e, 0xa8, 0xe6, 0xfc, 0xa5, 0xe0, 0x99, 0x00, 0x01,
|
||||||
|
0xa5, 0xe1, 0x99, 0x08, 0x01, 0xa5, 0xdc, 0x99, 0x10, 0x01, 0xa5, 0xdd,
|
||||||
|
0x99, 0x18, 0x01, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0x90, 0x04, 0xa0,
|
||||||
|
0x37, 0xd0, 0x3b, 0xa5, 0xe4, 0xa4, 0xe5, 0x85, 0xdc, 0x84, 0xdd, 0x2c,
|
||||||
|
0x11, 0xd0, 0x30, 0x4f, 0x18, 0x69, 0x03, 0x90, 0x01, 0xc8, 0xa2, 0xff,
|
||||||
|
0x86, 0xd9, 0x9a, 0x85, 0xe0, 0x84, 0xe1, 0x20, 0x79, 0xe6, 0x24, 0xd9,
|
||||||
|
0x10, 0x49, 0x18, 0xa0, 0x00, 0xa5, 0xdc, 0x71, 0xdc, 0xa4, 0xdd, 0x90,
|
||||||
|
0x01, 0xc8, 0xc5, 0x4c, 0xd0, 0xd1, 0xc4, 0x4d, 0xd0, 0xcd, 0xa0, 0x34,
|
||||||
|
0x46, 0xd9, 0x4c, 0xe0, 0xe3, 0xa0, 0x4a, 0xa5, 0xfc, 0xf0, 0xf7, 0xc6,
|
||||||
|
0xfc, 0xa8, 0xb9, 0x0f, 0x01, 0x85, 0xdc, 0xb9, 0x17, 0x01, 0x85, 0xdd,
|
||||||
|
0xbe, 0xff, 0x00, 0xb9, 0x07, 0x01, 0xa8, 0x8a, 0x4c, 0x7a, 0xe8, 0xa0,
|
||||||
|
0x63, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0xb1, 0xdc, 0xaa, 0xc8, 0xb1, 0xdc,
|
||||||
|
0x20, 0x1b, 0xe5, 0x4c, 0xb3, 0xe2, 0xc6, 0xfb, 0xa0, 0x5b, 0xa5, 0xfb,
|
||||||
|
0xf0, 0xc4, 0xa8, 0xb5, 0x50, 0xd9, 0x1f, 0x01, 0xd0, 0xf0, 0xb5, 0x78,
|
||||||
|
0xd9, 0x27, 0x01, 0xd0, 0xe9, 0xb9, 0x2f, 0x01, 0x85, 0xda, 0xb9, 0x37,
|
||||||
|
0x01, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0xca, 0x20, 0x93, 0xe7, 0x20, 0x01,
|
||||||
|
0xe8, 0xca, 0xa4, 0xfb, 0xb9, 0x67, 0x01, 0x95, 0x9f, 0xb9, 0x5f, 0x01,
|
||||||
|
0xa0, 0x00, 0x20, 0x08, 0xe7, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, 0x20,
|
||||||
|
0x15, 0xe7, 0xa4, 0xfb, 0xa5, 0xce, 0xf0, 0x05, 0x59, 0x37, 0x01, 0x10,
|
||||||
|
0x12, 0xb9, 0x3f, 0x01, 0x85, 0xdc, 0xb9, 0x47, 0x01, 0x85, 0xdd, 0xbe,
|
||||||
|
0x4f, 0x01, 0xb9, 0x57, 0x01, 0xd0, 0x87, 0xc6, 0xfb, 0x60, 0xa0, 0x54,
|
||||||
|
0xa5, 0xfb, 0xc9, 0x08, 0xf0, 0x9a, 0xe6, 0xfb, 0xa8, 0xb5, 0x50, 0x99,
|
||||||
|
0x20, 0x01, 0xb5, 0x78, 0x99, 0x28, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4,
|
||||||
|
0xfb, 0xa5, 0xce, 0x99, 0x5f, 0x01, 0xa5, 0xcf, 0x99, 0x67, 0x01, 0xa9,
|
||||||
|
0x01, 0x99, 0x2f, 0x01, 0xa9, 0x00, 0x99, 0x37, 0x01, 0xa5, 0xdc, 0x99,
|
||||||
|
0x3f, 0x01, 0xa5, 0xdd, 0x99, 0x47, 0x01, 0xa5, 0xe0, 0x99, 0x4f, 0x01,
|
||||||
|
0xa5, 0xe1, 0x99, 0x57, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, 0xfb, 0xa5,
|
||||||
|
0xce, 0x99, 0x2f, 0x01, 0xa5, 0xcf, 0x4c, 0x66, 0xe9, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab,
|
||||||
|
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0x3f, 0x3f, 0xc0, 0xc0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
|
||||||
|
0x3c, 0x30, 0x0f, 0xc0, 0xcc, 0xff, 0x55, 0x00, 0xab, 0xab, 0x03, 0x03,
|
||||||
|
0xff, 0xff, 0x55, 0xff, 0xff, 0x55, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff,
|
||||||
|
0x55, 0xc3, 0xc3, 0xc3, 0x55, 0xf0, 0xf0, 0xcf, 0x56, 0x56, 0x56, 0x55,
|
||||||
|
0xff, 0xff, 0x55, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff,
|
||||||
|
0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0xab, 0x03, 0x57, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0x19,
|
||||||
|
0x5d, 0x35, 0x4b, 0xf2, 0xec, 0x87, 0x6f, 0xad, 0xb7, 0xe2, 0xf8, 0x54,
|
||||||
|
0x80, 0x96, 0x85, 0x82, 0x22, 0x10, 0x33, 0x4a, 0x13, 0x06, 0x0b, 0x4a,
|
||||||
|
0x01, 0x40, 0x47, 0x7a, 0x00, 0xff, 0x23, 0x09, 0x5b, 0x16, 0xb6, 0xcb,
|
||||||
|
0xff, 0xff, 0xfb, 0xff, 0xff, 0x24, 0xf6, 0x4e, 0x59, 0x50, 0x00, 0xff,
|
||||||
|
0x23, 0xa3, 0x6f, 0x36, 0x23, 0xd7, 0x1c, 0x22, 0xc2, 0xae, 0xba, 0x23,
|
||||||
|
0xff, 0xff, 0x21, 0x30, 0x1e, 0x03, 0xc4, 0x20, 0x00, 0xc1, 0xff, 0xff,
|
||||||
|
0xff, 0xa0, 0x30, 0x1e, 0xa4, 0xd3, 0xb6, 0xbc, 0xaa, 0x3a, 0x01, 0x50,
|
||||||
|
0x7e, 0xd8, 0xd8, 0xa5, 0x3c, 0xff, 0x16, 0x5b, 0x28, 0x03, 0xc4, 0x1d,
|
||||||
|
0x00, 0x0c, 0x4e, 0x00, 0x3e, 0x00, 0xa6, 0xb0, 0x00, 0xbc, 0xc6, 0x57,
|
||||||
|
0x8c, 0x01, 0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xe8,
|
||||||
|
0xe0, 0xe0, 0xe0, 0xef, 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xee,
|
||||||
|
0xef, 0xef, 0xe7, 0xe7, 0xe2, 0xef, 0xe7, 0xe7, 0xec, 0xec, 0xec, 0xe7,
|
||||||
|
0xec, 0xec, 0xec, 0xe2, 0x00, 0xff, 0xe8, 0xe1, 0xe8, 0xe8, 0xef, 0xeb,
|
||||||
|
0xff, 0xff, 0xe0, 0xff, 0xff, 0xef, 0xee, 0xef, 0xe7, 0xe7, 0x00, 0xff,
|
||||||
|
0xe8, 0xe7, 0xe7, 0xe7, 0xe8, 0xe1, 0xe2, 0xee, 0xee, 0xee, 0xee, 0xe8,
|
||||||
|
0xff, 0xff, 0xe1, 0xe1, 0xef, 0xee, 0xe7, 0xe8, 0xee, 0xe7, 0xff, 0xff,
|
||||||
|
0xff, 0xee, 0xe1, 0xef, 0xe7, 0xe8, 0xef, 0xef, 0xeb, 0xe9, 0xe8, 0xe9,
|
||||||
|
0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xee, 0xe7, 0xe8,
|
||||||
|
0xef, 0xef, 0xee, 0xef, 0xee, 0xef, 0xee, 0xee, 0xef, 0xee, 0xee, 0xee,
|
||||||
|
0xe1, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xb3, 0xb2, 0xb7,
|
||||||
|
0xb6, 0x37, 0xd4, 0xcf, 0xcf, 0xa0, 0xcc, 0xcf, 0xce, 0x47, 0xd3, 0xd9,
|
||||||
|
0xce, 0xd4, 0xc1, 0x58, 0xcd, 0xc5, 0xcd, 0xa0, 0xc6, 0xd5, 0xcc, 0x4c,
|
||||||
|
0xd4, 0xcf, 0xcf, 0xa0, 0xcd, 0xc1, 0xce, 0xd9, 0xa0, 0xd0, 0xc1, 0xd2,
|
||||||
|
0xc5, 0xce, 0x53, 0xd3, 0xd4, 0xd2, 0xc9, 0xce, 0x47, 0xce, 0xcf, 0xa0,
|
||||||
|
0xc5, 0xce, 0x44, 0xc2, 0xc1, 0xc4, 0xa0, 0xc2, 0xd2, 0xc1, 0xce, 0xc3,
|
||||||
|
0x48, 0xbe, 0xb8, 0xa0, 0xc7, 0xcf, 0xd3, 0xd5, 0xc2, 0x53, 0xc2, 0xc1,
|
||||||
|
0xc4, 0xa0, 0xd2, 0xc5, 0xd4, 0xd5, 0xd2, 0x4e, 0xbe, 0xb8, 0xa0, 0xc6,
|
||||||
|
0xcf, 0xd2, 0x53, 0xc2, 0xc1, 0xc4, 0xa0, 0xce, 0xc5, 0xd8, 0x54, 0xd3,
|
||||||
|
0xd4, 0xcf, 0xd0, 0xd0, 0xc5, 0xc4, 0xa0, 0xc1, 0xd4, 0x20, 0xaa, 0xaa,
|
||||||
|
0xaa, 0x20, 0xa0, 0xc5, 0xd2, 0xd2, 0x0d, 0xbe, 0xb2, 0xb5, 0x35, 0xd2,
|
||||||
|
0xc1, 0xce, 0xc7, 0x45, 0xc4, 0xc9, 0x4d, 0xd3, 0xd4, 0xd2, 0xa0, 0xcf,
|
||||||
|
0xd6, 0xc6, 0x4c, 0xdc, 0x0d, 0xd2, 0xc5, 0xd4, 0xd9, 0xd0, 0xc5, 0xa0,
|
||||||
|
0xcc, 0xc9, 0xce, 0xc5, 0x8d, 0x3f, 0x46, 0xd9, 0x90, 0x03, 0x4c, 0xc3,
|
||||||
|
0xe8, 0xa6, 0xcf, 0x9a, 0xa6, 0xce, 0xa0, 0x8d, 0xd0, 0x02, 0xa0, 0x99,
|
||||||
|
0x20, 0xc4, 0xe3, 0x86, 0xce, 0xba, 0x86, 0xcf, 0xa0, 0xfe, 0x84, 0xd9,
|
||||||
|
0xc8, 0x84, 0xc8, 0x20, 0x99, 0xe2, 0x84, 0xf1, 0xa2, 0x20, 0xa9, 0x30,
|
||||||
|
0x20, 0x91, 0xe4, 0xe6, 0xd9, 0xa6, 0xce, 0xa4, 0xc8, 0x0a, 0x85, 0xce,
|
||||||
|
0xc8, 0xb9, 0x00, 0x02, 0xc9, 0x74, 0xf0, 0xd2, 0x49, 0xb0, 0xc9, 0x0a,
|
||||||
|
0xb0, 0xf0, 0xc8, 0xc8, 0x84, 0xc8, 0xb9, 0x00, 0x02, 0x48, 0xb9, 0xff,
|
||||||
|
0x01, 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x68, 0x95, 0xa0, 0xa5, 0xce, 0xc9,
|
||||||
|
0xc7, 0xd0, 0x03, 0x20, 0x6f, 0xe7, 0x4c, 0x01, 0xe8, 0xff, 0xff, 0xff,
|
||||||
|
0x50, 0x20, 0x13, 0xec, 0xd0, 0x15, 0x20, 0x0b, 0xec, 0xd0, 0x10, 0x20,
|
||||||
|
0x82, 0xe7, 0x20, 0x6f, 0xe7, 0x50, 0x03, 0x20, 0x82, 0xe7, 0x20, 0x59,
|
||||||
|
0xe7, 0x56, 0x50, 0x4c, 0x36, 0xe7, 0xff, 0xff, 0xc1, 0xff, 0x7f, 0xd1,
|
||||||
|
0xcc, 0xc7, 0xcf, 0xce, 0xc5, 0x9a, 0x98, 0x8b, 0x96, 0x95, 0x93, 0xbf,
|
||||||
|
0xb2, 0x32, 0x2d, 0x2b, 0xbc, 0xb0, 0xac, 0xbe, 0x35, 0x8e, 0x61, 0xff,
|
||||||
|
0xff, 0xff, 0xdd, 0xfb, 0x20, 0xc9, 0xef, 0x15, 0x4f, 0x10, 0x05, 0x20,
|
||||||
|
0xc9, 0xef, 0x35, 0x4f, 0x95, 0x50, 0x10, 0xcb, 0x4c, 0xc9, 0xef, 0x40,
|
||||||
|
0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x03,
|
||||||
|
0xbf, 0x12, 0x00, 0x40, 0x89, 0xc9, 0x47, 0x9d, 0x17, 0x68, 0x9d, 0x0a,
|
||||||
|
0x00, 0x40, 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x3c, 0x00, 0x00,
|
||||||
|
0x60, 0x03, 0xbf, 0x1b, 0x4b, 0x67, 0xb4, 0xa1, 0x07, 0x8c, 0x07, 0xae,
|
||||||
|
0xa9, 0xac, 0xa8, 0x67, 0x8c, 0x07, 0xb4, 0xaf, 0xac, 0xb0, 0x67, 0x9d,
|
||||||
|
0xb2, 0xaf, 0xac, 0xaf, 0xa3, 0x67, 0x8c, 0x07, 0xa5, 0xab, 0xaf, 0xb0,
|
||||||
|
0xf4, 0xae, 0xa9, 0xb2, 0xb0, 0x7f, 0x0e, 0x27, 0xb4, 0xae, 0xa9, 0xb2,
|
||||||
|
0xb0, 0x7f, 0x0e, 0x28, 0xb4, 0xae, 0xa9, 0xb2, 0xb0, 0x64, 0x07, 0xa6,
|
||||||
|
0xa9, 0x67, 0xaf, 0xb4, 0xaf, 0xa7, 0x78, 0xb4, 0xa5, 0xac, 0x78, 0x7f,
|
||||||
|
0x02, 0xad, 0xa5, 0xb2, 0x67, 0xa2, 0xb5, 0xb3, 0xaf, 0xa7, 0xee, 0xb2,
|
||||||
|
0xb5, 0xb4, 0xa5, 0xb2, 0x7e, 0x8c, 0x39, 0xb4, 0xb8, 0xa5, 0xae, 0x67,
|
||||||
|
0xb0, 0xa5, 0xb4, 0xb3, 0x27, 0xaf, 0xb4, 0x07, 0x9d, 0x19, 0xb2, 0xaf,
|
||||||
|
0xa6, 0x7f, 0x05, 0x37, 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x28,
|
||||||
|
0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x2a, 0xb4, 0xb5, 0xb0, 0xae,
|
||||||
|
0xa9, 0xe4, 0xae, 0xa5, 0x00, 0xff, 0xff, 0x47, 0xa2, 0xa1, 0xb4, 0x7f,
|
||||||
|
0x0d, 0x30, 0xad, 0xa9, 0xa4, 0x7f, 0x0d, 0x23, 0xad, 0xa9, 0xa4, 0x67,
|
||||||
|
0xac, 0xac, 0xa1, 0xa3, 0x00, 0x40, 0x80, 0xc0, 0xc1, 0x80, 0x00, 0x47,
|
||||||
|
0x8c, 0x68, 0x8c, 0xdb, 0x67, 0x9b, 0x68, 0x9b, 0x50, 0x8c, 0x63, 0x8c,
|
||||||
|
0x7f, 0x01, 0x51, 0x07, 0x88, 0x29, 0x84, 0x80, 0xc4, 0x80, 0x57, 0x71,
|
||||||
|
0x07, 0x88, 0x14, 0xed, 0xa5, 0xad, 0xaf, 0xac, 0xed, 0xa5, 0xad, 0xa9,
|
||||||
|
0xa8, 0xf2, 0xaf, 0xac, 0xaf, 0xa3, 0x71, 0x08, 0x88, 0xae, 0xa5, 0xac,
|
||||||
|
0x68, 0x83, 0x08, 0x68, 0x9d, 0x08, 0x71, 0x07, 0x88, 0x60, 0x76, 0xb4,
|
||||||
|
0xaf, 0xae, 0x76, 0x8d, 0x76, 0x8b, 0x51, 0x07, 0x88, 0x19, 0xb8, 0xa4,
|
||||||
|
0xae, 0xb2, 0xf2, 0xb3, 0xb5, 0xf3, 0xa2, 0xa1, 0xee, 0xa7, 0xb3, 0xe4,
|
||||||
|
0xae, 0xb2, 0xeb, 0xa5, 0xa5, 0xb0, 0x51, 0x07, 0x88, 0x39, 0x81, 0xc1,
|
||||||
|
0x4f, 0x7f, 0x0f, 0x2f, 0x00, 0x51, 0x06, 0x88, 0x29, 0xc2, 0x0c, 0x82,
|
||||||
|
0x57, 0x8c, 0x6a, 0x8c, 0x42, 0xae, 0xa5, 0xa8, 0xb4, 0x60, 0xae, 0xa5,
|
||||||
|
0xa8, 0xb4, 0x4f, 0x7e, 0x1e, 0x35, 0x8c, 0x27, 0x51, 0x07, 0x88, 0x09,
|
||||||
|
0x8b, 0xfe, 0xe4, 0xaf, 0xad, 0xf2, 0xaf, 0xe4, 0xae, 0xa1, 0xdc, 0xde,
|
||||||
|
0x9c, 0xdd, 0x9c, 0xde, 0xdd, 0x9e, 0xc3, 0xdd, 0xcf, 0xca, 0xcd, 0xcb,
|
||||||
|
0x00, 0x47, 0x9d, 0xad, 0xa5, 0xad, 0xaf, 0xac, 0x76, 0x9d, 0xad, 0xa5,
|
||||||
|
0xad, 0xa9, 0xa8, 0xe6, 0xa6, 0xaf, 0x60, 0x8c, 0x20, 0xaf, 0xb4, 0xb5,
|
||||||
|
0xa1, 0xf2, 0xac, 0xa3, 0xf2, 0xa3, 0xb3, 0x60, 0x8c, 0x20, 0xac, 0xa5,
|
||||||
|
0xa4, 0xee, 0xb5, 0xb2, 0x60, 0xae, 0xb5, 0xb2, 0xf4, 0xb3, 0xa9, 0xac,
|
||||||
|
0x60, 0x8c, 0x20, 0xb4, 0xb3, 0xa9, 0xac, 0x7a, 0x7e, 0x9a, 0x22, 0x20,
|
||||||
|
0x00, 0x60, 0x03, 0xbf, 0x60, 0x03, 0xbf, 0x1f, 0x20, 0xb1, 0xe7, 0xe8,
|
||||||
|
0xe8, 0xb5, 0x4f, 0x85, 0xda, 0xb5, 0x77, 0x85, 0xdb, 0xb4, 0x4e, 0x98,
|
||||||
|
0xd5, 0x76, 0xb0, 0x09, 0xb1, 0xda, 0x20, 0xc9, 0xe3, 0xc8, 0x4c, 0x0f,
|
||||||
|
0xee, 0xa9, 0xff, 0x85, 0xd5, 0x60, 0xe8, 0xa9, 0x00, 0x95, 0x78, 0x95,
|
||||||
|
0xa0, 0xb5, 0x77, 0x38, 0xf5, 0x4f, 0x95, 0x50, 0x4c, 0x23, 0xe8, 0xff,
|
||||||
|
0x20, 0x15, 0xe7, 0xa5, 0xcf, 0xd0, 0x28, 0xa5, 0xce, 0x60, 0x20, 0x34,
|
||||||
|
0xee, 0xa4, 0xc8, 0xc9, 0x30, 0xb0, 0x21, 0xc0, 0x28, 0xb0, 0x1d, 0x60,
|
||||||
|
0xea, 0xea, 0x20, 0x34, 0xee, 0x60, 0xea, 0x8a, 0xa2, 0x01, 0xb4, 0xce,
|
||||||
|
0x94, 0x4c, 0xb4, 0x48, 0x94, 0xca, 0xca, 0xf0, 0xf5, 0xaa, 0x60, 0xa0,
|
||||||
|
0x77, 0x4c, 0xe0, 0xe3, 0xa0, 0x7b, 0xd0, 0xf9, 0x20, 0x54, 0xe2, 0xa5,
|
||||||
|
0xda, 0xd0, 0x07, 0xa5, 0xdb, 0xd0, 0x03, 0x4c, 0x7e, 0xe7, 0x06, 0xce,
|
||||||
|
0x26, 0xcf, 0x26, 0xe6, 0x26, 0xe7, 0xa5, 0xe6, 0xc5, 0xda, 0xa5, 0xe7,
|
||||||
|
0xe5, 0xdb, 0x90, 0x0a, 0x85, 0xe7, 0xa5, 0xe6, 0xe5, 0xda, 0x85, 0xe6,
|
||||||
|
0xe6, 0xce, 0x88, 0xd0, 0xe1, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
|
0x20, 0x15, 0xe7, 0x6c, 0xce, 0x00, 0xa5, 0x4c, 0xd0, 0x02, 0xc6, 0x4d,
|
||||||
|
0xc6, 0x4c, 0xa5, 0x48, 0xd0, 0x02, 0xc6, 0x49, 0xc6, 0x48, 0xa0, 0x00,
|
||||||
|
0xb1, 0x4c, 0x91, 0x48, 0xa5, 0xca, 0xc5, 0x4c, 0xa5, 0xcb, 0xe5, 0x4d,
|
||||||
|
0x90, 0xe0, 0x4c, 0x53, 0xee, 0xc9, 0x28, 0xb0, 0x9b, 0xa8, 0xa5, 0xc8,
|
||||||
|
0x60, 0xea, 0xea, 0x98, 0xaa, 0xa0, 0x6e, 0x20, 0xc4, 0xe3, 0x8a, 0xa8,
|
||||||
|
0x20, 0xc4, 0xe3, 0xa0, 0x72, 0x4c, 0xc4, 0xe3, 0x20, 0x15, 0xe7, 0x06,
|
||||||
|
0xce, 0x26, 0xcf, 0x30, 0xfa, 0xb0, 0xdc, 0xd0, 0x04, 0xc5, 0xce, 0xb0,
|
||||||
|
0xd6, 0x60, 0x20, 0x15, 0xe7, 0xb1, 0xce, 0x94, 0x9f, 0x4c, 0x08, 0xe7,
|
||||||
|
0x20, 0x34, 0xee, 0xa5, 0xce, 0x48, 0x20, 0x15, 0xe7, 0x68, 0x91, 0xce,
|
||||||
|
0x60, 0xff, 0xff, 0xff, 0x20, 0x6c, 0xee, 0xa5, 0xce, 0x85, 0xe6, 0xa5,
|
||||||
|
0xcf, 0x85, 0xe7, 0x4c, 0x44, 0xe2, 0x20, 0xe4, 0xee, 0x4c, 0x34, 0xe1,
|
||||||
|
0x20, 0xe4, 0xee, 0xb4, 0x78, 0xb5, 0x50, 0x69, 0xfe, 0xb0, 0x01, 0x88,
|
||||||
|
0x85, 0xda, 0x84, 0xdb, 0x18, 0x65, 0xce, 0x95, 0x50, 0x98, 0x65, 0xcf,
|
||||||
|
0x95, 0x78, 0xa0, 0x00, 0xb5, 0x50, 0xd1, 0xda, 0xc8, 0xb5, 0x78, 0xf1,
|
||||||
|
0xda, 0xb0, 0x80, 0x4c, 0x23, 0xe8, 0x20, 0x15, 0xe7, 0xa5, 0x4e, 0x20,
|
||||||
|
0x08, 0xe7, 0xa5, 0x4f, 0xd0, 0x04, 0xc5, 0x4e, 0x69, 0x00, 0x29, 0x7f,
|
||||||
|
0x85, 0x4f, 0x95, 0xa0, 0xa0, 0x11, 0xa5, 0x4f, 0x0a, 0x18, 0x69, 0x40,
|
||||||
|
0x0a, 0x26, 0x4e, 0x26, 0x4f, 0x88, 0xd0, 0xf2, 0xa5, 0xce, 0x20, 0x08,
|
||||||
|
0xe7, 0xa5, 0xcf, 0x95, 0xa0, 0x4c, 0x7a, 0xe2, 0x20, 0x15, 0xe7, 0xa4,
|
||||||
|
0xce, 0xc4, 0x4c, 0xa5, 0xcf, 0xe5, 0x4d, 0x90, 0x1f, 0x84, 0x48, 0xa5,
|
||||||
|
0xcf, 0x85, 0x49, 0x4c, 0xb6, 0xee, 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xc4,
|
||||||
|
0xca, 0xa5, 0xcf, 0xe5, 0xcb, 0xb0, 0x09, 0x84, 0x4a, 0xa5, 0xcf, 0x85,
|
||||||
|
0x4b, 0x4c, 0xb7, 0xe5, 0x4c, 0xcb, 0xee, 0xea, 0xea, 0xea, 0xea, 0x20,
|
||||||
|
0xc9, 0xef, 0x20, 0x71, 0xe1, 0x4c, 0xbf, 0xef, 0x20, 0x03, 0xee, 0xa9,
|
||||||
|
0xff, 0x85, 0xc8, 0xa9, 0x74, 0x8d, 0x00, 0x02, 0x60, 0x20, 0x36, 0xe7,
|
||||||
|
0xe8, 0x20, 0x36, 0xe7, 0xb5, 0x50, 0x60, 0xa9, 0x00, 0x85, 0x4a, 0x85,
|
||||||
|
0x4c, 0xa9, 0x08, 0x85, 0x4b, 0xa9, 0x10, 0x85, 0x4d, 0x4c, 0xad, 0xe5,
|
||||||
|
0xd5, 0x78, 0xd0, 0x01, 0x18, 0x4c, 0x02, 0xe1, 0x20, 0xb7, 0xe5, 0x4c,
|
||||||
|
0x36, 0xe8, 0x20, 0xb7, 0xe5, 0x4c, 0x5b, 0xe8, 0xe0, 0x80, 0xd0, 0x01,
|
||||||
|
0x88, 0x4c, 0x0c, 0xe0, 0xa9, 0x03, 0x85, 0xf8, 0xa9, 0x20, 0x85, 0xff,
|
||||||
|
0xa9, 0x7c, 0x85, 0xf9, 0xa2, 0x1b, 0xbd, 0x67, 0xfd, 0x20, 0xef, 0xff,
|
||||||
|
0xca, 0xd0, 0xf7, 0xca, 0x9a, 0x20, 0x71, 0xf0, 0xd8, 0xa9, 0x00, 0x85,
|
||||||
|
0x5b, 0x20, 0xce, 0xf0, 0xa2, 0x0f, 0x86, 0x58, 0x86, 0x59, 0x20, 0xe5,
|
||||||
|
0xfe, 0xa9, 0x3f, 0x20, 0xef, 0xff, 0x20, 0xe0, 0xfe, 0x20, 0xea, 0xfe,
|
||||||
|
0xc9, 0x08, 0xf0, 0xe0, 0xc9, 0x0d, 0xf0, 0x08, 0x20, 0xef, 0xff, 0x95,
|
||||||
|
0x00, 0xe8, 0xd0, 0xed, 0xa5, 0x0f, 0xf0, 0xd0, 0xa5, 0x10, 0xf0, 0x04,
|
||||||
|
0xc9, 0x20, 0xd0, 0x0c, 0xa2, 0x0d, 0xbd, 0x27, 0xfd, 0xc5, 0x0f, 0xf0,
|
||||||
|
0x0e, 0xca, 0xd0, 0xf6, 0x48, 0x48, 0xa0, 0x03, 0x68, 0x68, 0x20, 0x69,
|
||||||
|
0xf4, 0xd0, 0xb1, 0x20, 0xd6, 0xf0, 0x4c, 0x1c, 0xf0, 0xa9, 0x00, 0xa8,
|
||||||
|
0x85, 0xfe, 0x91, 0xfe, 0xa5, 0xff, 0x85, 0xfd, 0xa9, 0x00, 0x85, 0xfa,
|
||||||
|
0x85, 0xfb, 0x85, 0xfc, 0x60, 0x20, 0x71, 0xf0, 0xa5, 0x11, 0xd0, 0x02,
|
||||||
|
0xa9, 0x01, 0x91, 0xfe, 0x60, 0x20, 0xab, 0xf0, 0xf0, 0xcc, 0x20, 0xe5,
|
||||||
|
0xfe, 0xa5, 0x3f, 0xa6, 0x3e, 0x4c, 0x67, 0xfb, 0x20, 0xab, 0xf0, 0xf0,
|
||||||
|
0xbd, 0x20, 0xe5, 0xfe, 0x6c, 0x3e, 0x00, 0xa2, 0x02, 0xb5, 0x0f, 0xf0,
|
||||||
|
0x08, 0x48, 0x20, 0xd3, 0xf7, 0x68, 0xe8, 0xf0, 0xab, 0x60, 0xa5, 0xf5,
|
||||||
|
0x85, 0x3e, 0xa5, 0xf6, 0x85, 0x3f, 0x60, 0xa5, 0x3e, 0x85, 0xf5, 0xa5,
|
||||||
|
0x3f, 0x85, 0xf6, 0x60, 0xa9, 0x20, 0xa2, 0x27, 0x95, 0xff, 0xca, 0xd0,
|
||||||
|
0xfb, 0x60, 0xbd, 0x34, 0xfd, 0x48, 0xbd, 0x41, 0xfd, 0x48, 0x60, 0x20,
|
||||||
|
0x71, 0xf0, 0x4c, 0x58, 0xf1, 0x20, 0x78, 0xf0, 0x20, 0x1d, 0xf1, 0xf0,
|
||||||
|
0x03, 0x20, 0x53, 0xf2, 0xa0, 0x00, 0xb1, 0xfc, 0xf0, 0x0e, 0x20, 0x72,
|
||||||
|
0xf2, 0x20, 0xdc, 0xf4, 0xad, 0x11, 0xd0, 0x10, 0xef, 0xad, 0x10, 0xd0,
|
||||||
|
0x60, 0x20, 0x4f, 0xf2, 0x20, 0xe5, 0xfe, 0xa2, 0x04, 0xb5, 0xfb, 0x20,
|
||||||
|
0xdc, 0xff, 0xe0, 0x03, 0xd0, 0x03, 0x20, 0xb9, 0xfe, 0xca, 0xd0, 0xf1,
|
||||||
|
0x60, 0xa0, 0x00, 0x84, 0x30, 0xa2, 0x01, 0xb5, 0x0f, 0xf0, 0x25, 0xc9,
|
||||||
|
0x20, 0xf0, 0x07, 0xc9, 0x24, 0xf0, 0x03, 0xe8, 0xd0, 0xf1, 0xe6, 0x30,
|
||||||
|
0xa9, 0x24, 0x95, 0x0f, 0x20, 0x5b, 0xf9, 0xe8, 0xf0, 0x5f, 0xa5, 0x3e,
|
||||||
|
0x99, 0x54, 0x00, 0xc8, 0xa5, 0x3f, 0x99, 0x54, 0x00, 0xc8, 0xd0, 0xd7,
|
||||||
|
0xa4, 0x30, 0x60, 0x20, 0x1d, 0xf1, 0x88, 0xd0, 0x48, 0x20, 0xc7, 0xf1,
|
||||||
|
0x20, 0x1d, 0xf1, 0xe8, 0xf0, 0x3f, 0x98, 0xd0, 0x06, 0x20, 0x4f, 0xf2,
|
||||||
|
0x18, 0x90, 0x03, 0x20, 0x53, 0xf2, 0x20, 0xde, 0xf2, 0xe0, 0xff, 0xf0,
|
||||||
|
0xab, 0x86, 0x2f, 0xa5, 0xfd, 0x85, 0x51, 0x85, 0x53, 0xa5, 0xfc, 0x85,
|
||||||
|
0x50, 0x18, 0x65, 0x2f, 0x85, 0x52, 0x90, 0x02, 0xe6, 0x53, 0x20, 0xa0,
|
||||||
|
0xf1, 0x20, 0x25, 0xf2, 0xa0, 0x00, 0xb9, 0x00, 0x00, 0x91, 0xfc, 0xc8,
|
||||||
|
0xc4, 0x2f, 0xd0, 0xf6, 0x20, 0xdc, 0xf4, 0xd0, 0xcd, 0x4c, 0x62, 0xf0,
|
||||||
|
0xa2, 0xfc, 0xb5, 0xfe, 0x48, 0xe8, 0xd0, 0xfa, 0x20, 0x4f, 0xf2, 0x38,
|
||||||
|
0xa5, 0xfc, 0xe5, 0x50, 0x85, 0x54, 0xa5, 0xfd, 0xe5, 0x51, 0x85, 0x55,
|
||||||
|
0xe6, 0x54, 0xd0, 0x02, 0xe6, 0x55, 0xa2, 0x04, 0x68, 0x95, 0xf9, 0xca,
|
||||||
|
0xd0, 0xfa, 0x60, 0x20, 0x1d, 0xf1, 0xf0, 0xd1, 0x84, 0x30, 0x20, 0x53,
|
||||||
|
0xf2, 0xe0, 0xff, 0xf0, 0xc8, 0xa5, 0xfc, 0x85, 0x52, 0xa5, 0xfd, 0x85,
|
||||||
|
0x53, 0xa5, 0x30, 0x4a, 0xf0, 0x0c, 0xa6, 0x57, 0xa4, 0x56, 0xe4, 0x55,
|
||||||
|
0xd0, 0x02, 0xc4, 0x54, 0x90, 0xaf, 0xc8, 0xd0, 0x01, 0xe8, 0x86, 0x55,
|
||||||
|
0x84, 0x54, 0x20, 0x53, 0xf2, 0xa5, 0xfc, 0x85, 0x50, 0xa5, 0xfd, 0x85,
|
||||||
|
0x51, 0x20, 0xa0, 0xf1, 0xa0, 0x00, 0xa6, 0x55, 0xf0, 0x0e, 0xb1, 0x50,
|
||||||
|
0x91, 0x52, 0xc8, 0xd0, 0xf9, 0xe6, 0x51, 0xe6, 0x53, 0xca, 0xd0, 0xf2,
|
||||||
|
0xa6, 0x54, 0xf0, 0x08, 0xb1, 0x50, 0x91, 0x52, 0xc8, 0xca, 0xd0, 0xf8,
|
||||||
|
0x60, 0xa6, 0x55, 0x18, 0x8a, 0x65, 0x51, 0x85, 0x51, 0x18, 0x8a, 0x65,
|
||||||
|
0x53, 0x85, 0x53, 0xe8, 0xa4, 0x54, 0xf0, 0x0e, 0x88, 0xf0, 0x07, 0xb1,
|
||||||
|
0x50, 0x91, 0x52, 0x88, 0xd0, 0xf9, 0xb1, 0x50, 0x91, 0x52, 0x88, 0xc6,
|
||||||
|
0x51, 0xc6, 0x53, 0xca, 0xd0, 0xed, 0x60, 0xa9, 0xff, 0x85, 0x55, 0x20,
|
||||||
|
0x78, 0xf0, 0xa4, 0x54, 0xc4, 0xfa, 0xd0, 0x06, 0xa6, 0x55, 0xe4, 0xfb,
|
||||||
|
0xf0, 0x51, 0xa0, 0xff, 0xc8, 0xb1, 0xfc, 0xd0, 0xfb, 0x98, 0xf0, 0x45,
|
||||||
|
0xc8, 0x20, 0xdc, 0xf4, 0xd0, 0xe4, 0x20, 0xe5, 0xfe, 0x86, 0x2f, 0x20,
|
||||||
|
0xee, 0xf3, 0xc8, 0x20, 0xd6, 0xfe, 0xa2, 0x00, 0xb5, 0x04, 0xf0, 0x06,
|
||||||
|
0x20, 0xef, 0xff, 0xe8, 0xd0, 0xf6, 0xa6, 0x2f, 0x60, 0x20, 0xea, 0xfe,
|
||||||
|
0xc9, 0x09, 0xd0, 0x02, 0xa9, 0x20, 0xc9, 0x20, 0x10, 0x1a, 0xa8, 0x68,
|
||||||
|
0x68, 0x68, 0x68, 0xc0, 0x08, 0xf0, 0x3b, 0xc0, 0x0d, 0xd0, 0x0a, 0xe0,
|
||||||
|
0x04, 0xf0, 0x29, 0xa9, 0x00, 0x95, 0x00, 0xf0, 0x5c, 0xa2, 0xff, 0x60,
|
||||||
|
0xe0, 0x27, 0x10, 0x1a, 0xc9, 0x5e, 0x10, 0x16, 0x38, 0x60, 0xc9, 0x2e,
|
||||||
|
0xf0, 0xfa, 0xc9, 0x30, 0x30, 0x0c, 0xc9, 0x3a, 0x30, 0xf2, 0xc9, 0x41,
|
||||||
|
0x30, 0x04, 0xc9, 0x5b, 0x30, 0xea, 0x18, 0x60, 0xa9, 0x02, 0xaa, 0x85,
|
||||||
|
0x00, 0xa9, 0x00, 0x85, 0x01, 0x60, 0x20, 0xcc, 0xf0, 0xa9, 0x00, 0x85,
|
||||||
|
0x1d, 0x20, 0xe5, 0xfe, 0x20, 0xd6, 0xfe, 0xa2, 0x04, 0xa9, 0x0a, 0x20,
|
||||||
|
0x9c, 0xf3, 0x20, 0xc4, 0xf3, 0xa5, 0x04, 0xc9, 0x3b, 0xf0, 0x0d, 0xa9,
|
||||||
|
0x0e, 0x20, 0x9c, 0xf3, 0x20, 0xc4, 0xf3, 0xa9, 0x1d, 0x20, 0x9c, 0xf3,
|
||||||
|
0xa9, 0x00, 0x20, 0x9c, 0xf3, 0xa2, 0x00, 0x86, 0x51, 0xa9, 0x20, 0x85,
|
||||||
|
0x55, 0xa9, 0x04, 0x85, 0x50, 0xa9, 0x01, 0x85, 0x54, 0x20, 0xd7, 0xf3,
|
||||||
|
0xa4, 0x04, 0xc0, 0x3b, 0xd0, 0x04, 0xa9, 0x0b, 0xd0, 0x5f, 0x8a, 0x48,
|
||||||
|
0x18, 0x66, 0x56, 0xa2, 0x03, 0x38, 0xb5, 0x0a, 0xe9, 0x40, 0xa0, 0x05,
|
||||||
|
0x4a, 0x66, 0x56, 0x66, 0x57, 0x88, 0xd0, 0xf8, 0xca, 0xd0, 0xee, 0xa2,
|
||||||
|
0x38, 0xbd, 0xe8, 0xfb, 0xc5, 0x56, 0xd0, 0x07, 0xbd, 0x20, 0xfc, 0xc5,
|
||||||
|
0x57, 0xf0, 0x03, 0xca, 0xd0, 0xef, 0xca, 0x8a, 0xc9, 0xff, 0xd0, 0x19,
|
||||||
|
0xa5, 0x0b, 0xc9, 0x2e, 0xd0, 0x0c, 0xa2, 0x05, 0xa5, 0x0c, 0xdd, 0x4e,
|
||||||
|
0xfd, 0xf0, 0x09, 0xca, 0xd0, 0xf8, 0x68, 0xa0, 0x01, 0x4c, 0x69, 0xf4,
|
||||||
|
0xca, 0xa8, 0xc8, 0x68, 0xaa, 0x94, 0x00, 0xe8, 0xa9, 0x0f, 0x85, 0x50,
|
||||||
|
0x20, 0xd7, 0xf3, 0x86, 0x2f, 0xe6, 0x2f, 0xa9, 0x1d, 0x85, 0x50, 0xa9,
|
||||||
|
0x00, 0x85, 0x54, 0x85, 0x55, 0x20, 0xd7, 0xf3, 0xe4, 0x2f, 0xd0, 0x03,
|
||||||
|
0xca, 0x95, 0xff, 0x60, 0x85, 0x54, 0x20, 0x8d, 0xf2, 0x90, 0xfb, 0x20,
|
||||||
|
0xef, 0xff, 0x95, 0x00, 0xe8, 0xc9, 0x20, 0xf0, 0x05, 0xe4, 0x54, 0xd0,
|
||||||
|
0xed, 0x60, 0xa5, 0x54, 0xf0, 0xe8, 0xe4, 0x54, 0xf0, 0xf7, 0xa9, 0x20,
|
||||||
|
0x95, 0x00, 0x20, 0xef, 0xff, 0xe8, 0xd0, 0xee, 0xb5, 0xff, 0xc9, 0x20,
|
||||||
|
0xf0, 0x07, 0x20, 0x8d, 0xf2, 0xc9, 0x20, 0xd0, 0xf9, 0x95, 0x00, 0xe8,
|
||||||
|
0x4c, 0xef, 0xff, 0xa0, 0x00, 0xb1, 0x50, 0xf0, 0x0b, 0xc5, 0x55, 0xf0,
|
||||||
|
0x07, 0x95, 0x00, 0xe8, 0xe6, 0x50, 0xd0, 0xf1, 0xa5, 0x54, 0x95, 0x00,
|
||||||
|
0xe8, 0x60, 0x20, 0xcc, 0xf0, 0xa0, 0x00, 0xa2, 0x04, 0xb1, 0xfc, 0xf0,
|
||||||
|
0x4d, 0xc9, 0x02, 0xd0, 0x05, 0xc8, 0xa9, 0x00, 0xf0, 0x46, 0xc9, 0x01,
|
||||||
|
0xf0, 0x06, 0x95, 0x00, 0xe8, 0xc8, 0xd0, 0xe9, 0xa5, 0x04, 0xc9, 0x3b,
|
||||||
|
0xd0, 0x04, 0xa2, 0x0b, 0xd0, 0x2d, 0xc8, 0xb1, 0xfc, 0xaa, 0xca, 0x86,
|
||||||
|
0x3c, 0xe0, 0x38, 0x10, 0x09, 0x98, 0x48, 0x20, 0x99, 0xfa, 0x68, 0xa8,
|
||||||
|
0xd0, 0x06, 0x86, 0x0c, 0xa9, 0x2e, 0x85, 0x0b, 0xc8, 0xa2, 0x0f, 0xb1,
|
||||||
|
0xfc, 0xf0, 0x11, 0xc9, 0x01, 0xd0, 0x05, 0xc8, 0xa2, 0x1d, 0xd0, 0xf3,
|
||||||
|
0x95, 0x00, 0xe8, 0xc8, 0xd0, 0xed, 0xa2, 0xfe, 0x95, 0x00, 0x60, 0x20,
|
||||||
|
0x94, 0xf4, 0x20, 0xe5, 0xfe, 0x20, 0xf8, 0xf5, 0x20, 0xb8, 0xf4, 0xe8,
|
||||||
|
0xf0, 0x0f, 0xe0, 0xff, 0xd0, 0xf6, 0xe6, 0x58, 0x20, 0x10, 0xf6, 0xe8,
|
||||||
|
0xf0, 0x03, 0x4c, 0xf8, 0xf5, 0x20, 0xe5, 0xfe, 0xa2, 0x05, 0xbd, 0x53,
|
||||||
|
0xfd, 0x20, 0xef, 0xff, 0xca, 0xd0, 0xf7, 0x98, 0x18, 0x8a, 0x69, 0x03,
|
||||||
|
0x88, 0xd0, 0xfb, 0xa8, 0xa2, 0x03, 0xb9, 0x56, 0xfd, 0x20, 0xef, 0xff,
|
||||||
|
0xc8, 0xca, 0xd0, 0xf6, 0xca, 0xa5, 0x59, 0xd0, 0x26, 0x4c, 0x72, 0xf2,
|
||||||
|
0x20, 0x78, 0xf0, 0x85, 0x58, 0x85, 0xeb, 0x85, 0xe9, 0x85, 0xf5, 0xa5,
|
||||||
|
0xf8, 0x85, 0xf6, 0x20, 0xeb, 0xf5, 0x86, 0xea, 0xa9, 0x00, 0x85, 0x2b,
|
||||||
|
0x85, 0x29, 0x85, 0x46, 0xa4, 0xf9, 0xc8, 0x84, 0x2a, 0x84, 0x47, 0x60,
|
||||||
|
0x20, 0xee, 0xf3, 0xe0, 0xfe, 0xf0, 0x1d, 0xe0, 0x04, 0xf0, 0x18, 0xa9,
|
||||||
|
0x00, 0x85, 0x59, 0x85, 0x58, 0x85, 0x5a, 0x20, 0x44, 0xf5, 0xe0, 0xff,
|
||||||
|
0xf0, 0x1d, 0xa0, 0x00, 0xb1, 0xfc, 0xf0, 0x03, 0xc8, 0xd0, 0xf9, 0xc8,
|
||||||
|
0xa5, 0xfc, 0x84, 0x44, 0x18, 0x65, 0x44, 0x85, 0xfc, 0x90, 0x02, 0xe6,
|
||||||
|
0xfd, 0xe6, 0xfa, 0xd0, 0x02, 0xe6, 0xfb, 0x60, 0xa4, 0x3c, 0xb9, 0x73,
|
||||||
|
0xfc, 0xa6, 0x3d, 0x18, 0x7d, 0xab, 0xfc, 0xe0, 0x0b, 0xf0, 0x0e, 0xe0,
|
||||||
|
0x02, 0xd0, 0x11, 0xc0, 0x28, 0x30, 0x0d, 0xc0, 0x30, 0xb0, 0x09, 0x69,
|
||||||
|
0x08, 0xc0, 0x35, 0xd0, 0x03, 0x18, 0x69, 0x04, 0x20, 0x2f, 0xf5, 0xc9,
|
||||||
|
0x00, 0xd0, 0x03, 0x20, 0x2f, 0xf5, 0x8a, 0xf0, 0xce, 0xca, 0xf0, 0xcb,
|
||||||
|
0xa5, 0x3e, 0xe0, 0x08, 0x30, 0x05, 0x20, 0x2f, 0xf5, 0xa5, 0x3f, 0xa0,
|
||||||
|
0x00, 0x91, 0xf5, 0xe6, 0xf5, 0xd0, 0x02, 0xe6, 0xf6, 0x60, 0x20, 0xa9,
|
||||||
|
0xf6, 0xe0, 0xff, 0xd0, 0xaf, 0xa0, 0x02, 0x60, 0xa5, 0x04, 0xc9, 0x3b,
|
||||||
|
0xf0, 0xa5, 0xa6, 0x0b, 0xe0, 0x2e, 0xd0, 0x0d, 0xa6, 0x0c, 0xe0, 0x4d,
|
||||||
|
0xd0, 0x03, 0x4c, 0xb6, 0xf5, 0xe0, 0x3d, 0xf0, 0x47, 0xc9, 0x20, 0xf0,
|
||||||
|
0x03, 0x20, 0xdf, 0xf8, 0xa5, 0x0b, 0xc9, 0x2e, 0xd0, 0xd0, 0xa2, 0x00,
|
||||||
|
0xa5, 0x0c, 0xc9, 0x53, 0xf0, 0x19, 0x85, 0x58, 0x20, 0x7a, 0xf7, 0xe8,
|
||||||
|
0xf0, 0x0c, 0xa5, 0x3e, 0xa6, 0x0c, 0xe0, 0x57, 0xf0, 0xa8, 0xa6, 0x3f,
|
||||||
|
0xf0, 0xa9, 0xa0, 0x03, 0xa2, 0xff, 0x60, 0xb5, 0x0f, 0xc9, 0x27, 0xd0,
|
||||||
|
0xf5, 0xe8, 0xb5, 0x0f, 0xf0, 0xf0, 0xc9, 0x27, 0xf0, 0x09, 0x20, 0x2f,
|
||||||
|
0xf5, 0xe0, 0x0e, 0xd0, 0xf0, 0xf0, 0xe3, 0x60, 0x85, 0x58, 0x20, 0xc2,
|
||||||
|
0xf2, 0x90, 0xdb, 0xa2, 0x00, 0x20, 0x7a, 0xf7, 0xe8, 0xf0, 0xd3, 0x4c,
|
||||||
|
0xe2, 0xf8, 0x20, 0xc2, 0xf2, 0x90, 0xcb, 0xa0, 0x00, 0xa5, 0x0f, 0xf0,
|
||||||
|
0x14, 0xc9, 0x20, 0xf0, 0x10, 0x20, 0xf6, 0xf5, 0xa2, 0x00, 0xa5, 0x0f,
|
||||||
|
0x20, 0x5b, 0xf9, 0xe8, 0xf0, 0xb4, 0x20, 0xc3, 0xf0, 0x20, 0xdf, 0xf8,
|
||||||
|
0xe0, 0xff, 0xf0, 0xc7, 0x20, 0x10, 0xf6, 0xe0, 0xff, 0xf0, 0xc0, 0x20,
|
||||||
|
0xc4, 0xfe, 0xa9, 0x00, 0x20, 0xf6, 0xf5, 0xa2, 0x00, 0x86, 0xee, 0x86,
|
||||||
|
0xec, 0xa6, 0xf9, 0x86, 0xed, 0x60, 0x85, 0x58, 0xa5, 0xf6, 0xa6, 0xf5,
|
||||||
|
0xa4, 0x58, 0xf0, 0x0d, 0x48, 0x20, 0xb9, 0xfe, 0x68, 0xe0, 0x00, 0xd0,
|
||||||
|
0x03, 0x38, 0xe9, 0x01, 0xca, 0x4c, 0x67, 0xfb, 0xa6, 0x2b, 0xf0, 0x72,
|
||||||
|
0x86, 0x59, 0x86, 0x45, 0xa5, 0xf5, 0x48, 0xa5, 0xf6, 0x48, 0x20, 0xa8,
|
||||||
|
0xf4, 0xa0, 0x00, 0xa5, 0x58, 0x85, 0x48, 0x84, 0x5a, 0xb1, 0x46, 0xc9,
|
||||||
|
0x2e, 0xd0, 0x02, 0x85, 0x58, 0xb1, 0x46, 0x99, 0x1d, 0x00, 0xc8, 0xc0,
|
||||||
|
0x06, 0xd0, 0xf6, 0xb1, 0x46, 0x85, 0xf5, 0xc8, 0xb1, 0x46, 0x85, 0xf6,
|
||||||
|
0xc8, 0xb1, 0x46, 0x85, 0x54, 0x20, 0x7e, 0xf8, 0xe0, 0xff, 0xf0, 0x47,
|
||||||
|
0xa5, 0x5a, 0xf0, 0x04, 0xa5, 0x54, 0x91, 0x50, 0x20, 0xc3, 0xf7, 0xa0,
|
||||||
|
0x00, 0xb1, 0xf5, 0x29, 0x1f, 0xc9, 0x10, 0xf0, 0x22, 0x20, 0x33, 0xf5,
|
||||||
|
0xa5, 0x3e, 0x20, 0x2a, 0xf5, 0x18, 0xa5, 0x46, 0x69, 0x09, 0x85, 0x46,
|
||||||
|
0x90, 0x02, 0xe6, 0x47, 0xa5, 0x48, 0x85, 0x58, 0xc6, 0x45, 0xd0, 0xa1,
|
||||||
|
0x68, 0x85, 0xf6, 0x68, 0x85, 0xf5, 0x60, 0x20, 0x62, 0xf7, 0xe0, 0xff,
|
||||||
|
0xf0, 0x09, 0xa0, 0x01, 0xa5, 0x3e, 0x91, 0xf5, 0x4c, 0x6d, 0xf6, 0xa0,
|
||||||
|
0x00, 0x20, 0xe0, 0xfe, 0xb1, 0x46, 0x20, 0xef, 0xff, 0xc8, 0xc0, 0x06,
|
||||||
|
0xd0, 0xf6, 0x88, 0xd0, 0xd7, 0xa2, 0xff, 0x86, 0x3d, 0xa5, 0x3c, 0xa6,
|
||||||
|
0x0f, 0xf0, 0x04, 0xe0, 0x20, 0xd0, 0x0e, 0xa2, 0x00, 0x20, 0x3d, 0xf7,
|
||||||
|
0xe0, 0xff, 0xd0, 0x35, 0xa2, 0x01, 0x4c, 0x3d, 0xf7, 0xe0, 0x23, 0xf0,
|
||||||
|
0x0e, 0xa2, 0x03, 0x20, 0x3d, 0xf7, 0xe0, 0xff, 0xf0, 0x24, 0xa5, 0x0f,
|
||||||
|
0x4c, 0x4f, 0xf7, 0xc9, 0x2c, 0xf0, 0x71, 0xa2, 0x02, 0xc9, 0x35, 0xf0,
|
||||||
|
0x07, 0x20, 0x3d, 0xf7, 0xe0, 0xff, 0xf0, 0x0d, 0x86, 0x3d, 0xca, 0x20,
|
||||||
|
0x7a, 0xf7, 0xe8, 0xf0, 0x5b, 0xa5, 0x3f, 0xd0, 0x57, 0x60, 0xa2, 0x00,
|
||||||
|
0xa5, 0x0f, 0xc9, 0x28, 0xd0, 0x01, 0xe8, 0x20, 0xd3, 0xf7, 0xe0, 0xff,
|
||||||
|
0xf0, 0xef, 0x20, 0x9c, 0xf9, 0xe0, 0xff, 0xf0, 0xe8, 0x86, 0x3d, 0xe0,
|
||||||
|
0x06, 0xd0, 0x0e, 0xa5, 0x3c, 0xc9, 0x28, 0x90, 0x08, 0xc9, 0x30, 0xb0,
|
||||||
|
0x04, 0xa2, 0x0b, 0xd0, 0x28, 0xa0, 0x06, 0xb9, 0x15, 0xfd, 0xc5, 0x3c,
|
||||||
|
0xd0, 0x0e, 0xbe, 0x1b, 0xfd, 0xe4, 0x3d, 0xf0, 0x18, 0xbe, 0x21, 0xfd,
|
||||||
|
0xe4, 0x3d, 0xf0, 0x11, 0x88, 0xd0, 0xe8, 0xa6, 0x3d, 0xa5, 0x3c, 0xdd,
|
||||||
|
0x59, 0xfc, 0x90, 0x08, 0xdd, 0x66, 0xfc, 0xb0, 0x03, 0x86, 0x3d, 0x60,
|
||||||
|
0xa2, 0xff, 0x60, 0xa2, 0x00, 0x86, 0x3e, 0x86, 0x3f, 0xc9, 0x2a, 0xd0,
|
||||||
|
0x06, 0x20, 0xba, 0xf0, 0x20, 0xfd, 0xf7, 0x20, 0xd3, 0xf7, 0x38, 0xa5,
|
||||||
|
0x3e, 0xe5, 0xf5, 0x85, 0x3e, 0xa5, 0x3f, 0xe5, 0xf6, 0x85, 0x3f, 0xf0,
|
||||||
|
0x04, 0xe6, 0x3f, 0xd0, 0xd7, 0xc6, 0x3e, 0xc6, 0x3e, 0x60, 0xb5, 0x0f,
|
||||||
|
0xf0, 0xce, 0xc9, 0x27, 0xf0, 0x03, 0x4c, 0xd3, 0xf7, 0xe8, 0xa9, 0x00,
|
||||||
|
0x85, 0x3f, 0xb5, 0x0f, 0x85, 0x3e, 0xe8, 0xb5, 0x0f, 0xc9, 0x27, 0xd0,
|
||||||
|
0xb7, 0xe8, 0xb5, 0x0f, 0xf0, 0x7c, 0xc9, 0x20, 0xf0, 0x78, 0x48, 0xe8,
|
||||||
|
0xb5, 0x0f, 0x20, 0x51, 0xfa, 0xe0, 0xff, 0xd0, 0x02, 0x68, 0x60, 0x85,
|
||||||
|
0x54, 0x68, 0xc9, 0x2b, 0xf0, 0x09, 0xa5, 0x54, 0x18, 0x49, 0xff, 0x69,
|
||||||
|
0x01, 0x85, 0x54, 0xa5, 0x5a, 0xf0, 0x04, 0xa5, 0x54, 0x91, 0x50, 0xa5,
|
||||||
|
0x54, 0x10, 0x02, 0xc6, 0x3f, 0x18, 0x65, 0x3e, 0x85, 0x3e, 0x90, 0x02,
|
||||||
|
0xe6, 0x3f, 0x60, 0x86, 0x56, 0xb5, 0x0f, 0xc9, 0x3c, 0xf0, 0x04, 0xc9,
|
||||||
|
0x3e, 0xd0, 0x05, 0x85, 0x58, 0xe8, 0xb5, 0x0f, 0x20, 0xbe, 0xf2, 0xb0,
|
||||||
|
0x09, 0x20, 0x5b, 0xf9, 0xe0, 0xff, 0xf0, 0x24, 0xd0, 0x0b, 0x86, 0x2f,
|
||||||
|
0x20, 0x60, 0xf8, 0xe0, 0xff, 0xf0, 0x1b, 0xa6, 0x2f, 0xe8, 0xb5, 0x0f,
|
||||||
|
0x20, 0xbe, 0xf2, 0xb0, 0xf8, 0xc9, 0x2b, 0xf0, 0x04, 0xc9, 0x2d, 0xd0,
|
||||||
|
0x0a, 0x20, 0x9e, 0xf7, 0xe0, 0xff, 0xd0, 0xe9, 0xa0, 0x03, 0x60, 0xa0,
|
||||||
|
0x00, 0xa5, 0x58, 0xc9, 0x3c, 0xf0, 0x08, 0xc9, 0x3e, 0xd0, 0x06, 0xa5,
|
||||||
|
0x3f, 0x85, 0x3e, 0x84, 0x3f, 0xb5, 0x0f, 0x99, 0x1d, 0x00, 0xf0, 0x0a,
|
||||||
|
0xc9, 0x20, 0xf0, 0x06, 0xe8, 0xc8, 0xe0, 0x0e, 0xd0, 0xef, 0xa9, 0x00,
|
||||||
|
0x99, 0x1d, 0x00, 0xa4, 0x56, 0xa9, 0x24, 0x99, 0x0f, 0x00, 0xc8, 0xa5,
|
||||||
|
0x3f, 0xf0, 0x03, 0x20, 0x82, 0xfa, 0xa5, 0x3e, 0x20, 0x82, 0xfa, 0xa2,
|
||||||
|
0x00, 0xb5, 0x1d, 0x99, 0x0f, 0x00, 0xf0, 0xba, 0xe8, 0xc8, 0xd0, 0xf5,
|
||||||
|
0xa0, 0x00, 0xc0, 0x06, 0xf0, 0x18, 0x20, 0xbe, 0xf2, 0x90, 0x09, 0x99,
|
||||||
|
0x1d, 0x00, 0xe8, 0xb5, 0x0f, 0xc8, 0xd0, 0xee, 0xa9, 0x20, 0x99, 0x1d,
|
||||||
|
0x00, 0xc8, 0xc0, 0x06, 0xd0, 0xf8, 0xa9, 0x1d, 0x85, 0x42, 0xa2, 0x00,
|
||||||
|
0x86, 0x43, 0xa9, 0x06, 0x85, 0x2e, 0xa9, 0x08, 0x85, 0x2d, 0xa5, 0x1d,
|
||||||
|
0xc9, 0x2e, 0xf0, 0x11, 0x20, 0x8a, 0xf9, 0xf0, 0x13, 0xa0, 0x06, 0xb1,
|
||||||
|
0x40, 0x85, 0x3e, 0xc8, 0xb1, 0x40, 0x85, 0x3f, 0x60, 0xa2, 0x03, 0x20,
|
||||||
|
0x8a, 0xf9, 0xd0, 0xed, 0xa5, 0x58, 0xd0, 0x4f, 0x20, 0xba, 0xf0, 0xa5,
|
||||||
|
0x2a, 0x85, 0x51, 0xa5, 0x29, 0xa6, 0x2b, 0xf0, 0x0a, 0x18, 0x69, 0x09,
|
||||||
|
0x90, 0x02, 0xe6, 0x51, 0xca, 0xd0, 0xf6, 0x85, 0x50, 0xe6, 0x2b, 0xa5,
|
||||||
|
0x2b, 0xc9, 0x55, 0x10, 0x32, 0xa9, 0x1d, 0x85, 0x5a, 0x85, 0x52, 0x20,
|
||||||
|
0x43, 0xf9, 0xc8, 0x8a, 0x91, 0x50, 0x60, 0x20, 0xba, 0xf0, 0xa9, 0x04,
|
||||||
|
0x85, 0x52, 0x85, 0x42, 0xa2, 0x00, 0x86, 0x43, 0xa9, 0x06, 0x85, 0x2e,
|
||||||
|
0xa5, 0x04, 0xc9, 0x2e, 0xd0, 0x02, 0xa2, 0x03, 0x20, 0x8a, 0xf9, 0xf0,
|
||||||
|
0x0b, 0x68, 0x68, 0xa0, 0x05, 0xd0, 0x02, 0xa0, 0x04, 0xa2, 0xff, 0x60,
|
||||||
|
0xa6, 0x04, 0xe0, 0x2e, 0xf0, 0x17, 0x38, 0xa5, 0xe9, 0xe9, 0x08, 0xb0,
|
||||||
|
0x02, 0xc6, 0xea, 0x85, 0xe9, 0xe6, 0xeb, 0xf0, 0xe6, 0x85, 0x50, 0xa5,
|
||||||
|
0xea, 0x85, 0x51, 0xd0, 0x1e, 0xa5, 0xed, 0x85, 0x51, 0xa5, 0xec, 0xa6,
|
||||||
|
0xee, 0xf0, 0x0a, 0x18, 0x69, 0x08, 0x90, 0x02, 0xe6, 0x51, 0xca, 0xd0,
|
||||||
|
0xf6, 0x85, 0x50, 0xe6, 0xee, 0xa5, 0xee, 0xc9, 0x20, 0x10, 0xc0, 0xa0,
|
||||||
|
0x00, 0x84, 0x53, 0xa2, 0x06, 0xb1, 0x52, 0x91, 0x50, 0xc8, 0xca, 0xd0,
|
||||||
|
0xf8, 0xa5, 0x3e, 0x91, 0x50, 0xc8, 0xa5, 0x3f, 0x91, 0x50, 0x60, 0xc9,
|
||||||
|
0x24, 0xd0, 0xa6, 0x84, 0x1e, 0x20, 0x18, 0xfa, 0xe0, 0xff, 0xf0, 0x9d,
|
||||||
|
0x85, 0x1d, 0xa0, 0x00, 0x84, 0x3f, 0xca, 0xca, 0xb5, 0x0f, 0xc9, 0x24,
|
||||||
|
0xf0, 0x06, 0x20, 0x51, 0xfa, 0x38, 0xb0, 0x03, 0x20, 0x6d, 0xfa, 0x99,
|
||||||
|
0x3e, 0x00, 0xc8, 0xc4, 0x1d, 0xd0, 0xe7, 0xa4, 0x1e, 0x60, 0xb5, 0xe9,
|
||||||
|
0x85, 0x40, 0xb5, 0xea, 0x85, 0x41, 0xb5, 0xeb, 0x85, 0x2c, 0x20, 0x2c,
|
||||||
|
0xfa, 0xe0, 0xff, 0x60, 0xa2, 0x00, 0xa9, 0x04, 0xb4, 0x0f, 0xc0, 0x28,
|
||||||
|
0xd0, 0x04, 0x18, 0x69, 0x03, 0xe8, 0x48, 0x20, 0x18, 0xfa, 0xa8, 0xca,
|
||||||
|
0xa5, 0x3c, 0xc9, 0x21, 0xf0, 0x04, 0xc9, 0x23, 0xd0, 0x01, 0xc8, 0x68,
|
||||||
|
0xe8, 0xf0, 0x56, 0x88, 0xf0, 0x03, 0x18, 0x69, 0x06, 0xa8, 0xb5, 0x0f,
|
||||||
|
0xf0, 0x04, 0xc9, 0x20, 0xd0, 0x14, 0xa5, 0x0f, 0xc9, 0x28, 0xf0, 0x41,
|
||||||
|
0xc0, 0x0f, 0x10, 0x3d, 0xc0, 0x07, 0xf0, 0x39, 0x30, 0x01, 0x88, 0x98,
|
||||||
|
0xaa, 0x60, 0xc9, 0x29, 0xd0, 0x0b, 0xa9, 0x20, 0x85, 0x0f, 0xe8, 0xb5,
|
||||||
|
0x0f, 0xc9, 0x2c, 0xd0, 0xd5, 0xb5, 0x0f, 0xc9, 0x2c, 0xd0, 0x1e, 0xe8,
|
||||||
|
0xb5, 0x0f, 0xc9, 0x58, 0xf0, 0x0d, 0xc9, 0x59, 0xd0, 0x13, 0xa5, 0x0f,
|
||||||
|
0xc9, 0x28, 0xf0, 0x0d, 0x95, 0x0d, 0xc8, 0xc8, 0xb5, 0x0d, 0xc9, 0x29,
|
||||||
|
0xf0, 0x03, 0xe8, 0xd0, 0xb1, 0xa2, 0xff, 0x60, 0xa0, 0x00, 0xe8, 0xc8,
|
||||||
|
0x20, 0x6e, 0xfa, 0xc9, 0xff, 0xd0, 0xf7, 0x98, 0x4a, 0xf0, 0xee, 0xc9,
|
||||||
|
0x03, 0xb0, 0xea, 0x60, 0xa5, 0x2c, 0xf0, 0xe5, 0xa2, 0x00, 0xa0, 0xff,
|
||||||
|
0xc8, 0xc4, 0x2e, 0xf0, 0xde, 0xb1, 0x40, 0xd1, 0x42, 0xf0, 0xf5, 0xe8,
|
||||||
|
0xe4, 0x2c, 0xf0, 0xd1, 0xa5, 0x40, 0x18, 0x65, 0x2d, 0x85, 0x40, 0x90,
|
||||||
|
0xe5, 0xe6, 0x41, 0xb0, 0xe1, 0x20, 0x6e, 0xfa, 0xc9, 0xff, 0xf0, 0xbd,
|
||||||
|
0x48, 0x20, 0x6d, 0xfa, 0xca, 0xc9, 0xff, 0xd0, 0x02, 0x68, 0x60, 0x85,
|
||||||
|
0x44, 0x68, 0x0a, 0x0a, 0x0a, 0x0a, 0x65, 0x44, 0x60, 0xe8, 0xb5, 0x0f,
|
||||||
|
0x49, 0x30, 0xc9, 0x0a, 0x90, 0x08, 0x69, 0x88, 0xc9, 0xfa, 0x90, 0x03,
|
||||||
|
0x29, 0x0f, 0x60, 0xa9, 0xff, 0x60, 0x48, 0x20, 0xd6, 0xfb, 0x20, 0x8a,
|
||||||
|
0xfa, 0x68, 0x29, 0x0f, 0x09, 0x30, 0xc9, 0x3a, 0x90, 0x02, 0x69, 0x06,
|
||||||
|
0x99, 0x0f, 0x00, 0xc8, 0x60, 0xbd, 0xe9, 0xfb, 0x85, 0x56, 0xbd, 0x21,
|
||||||
|
0xfc, 0x85, 0x57, 0xa2, 0x00, 0xa9, 0x00, 0xa0, 0x05, 0x06, 0x57, 0x26,
|
||||||
|
0x56, 0x2a, 0x88, 0xd0, 0xf8, 0x69, 0x40, 0x95, 0x0b, 0xa4, 0x5b, 0xf0,
|
||||||
|
0x03, 0x20, 0xef, 0xff, 0xe8, 0xe0, 0x03, 0xd0, 0xe4, 0x60, 0x20, 0xab,
|
||||||
|
0xf0, 0xf0, 0x03, 0x20, 0xc3, 0xf0, 0x20, 0xdc, 0xfa, 0x20, 0x81, 0xfb,
|
||||||
|
0x85, 0xf5, 0x84, 0xf6, 0xad, 0x11, 0xd0, 0x10, 0xf1, 0xad, 0x10, 0xd0,
|
||||||
|
0x20, 0x6e, 0xfb, 0xa1, 0xf5, 0xa8, 0x4a, 0x90, 0x09, 0x6a, 0xb0, 0x14,
|
||||||
|
0xc9, 0xa2, 0xf0, 0x10, 0x29, 0x87, 0x4a, 0xaa, 0xbd, 0xb8, 0xfc, 0x90,
|
||||||
|
0x03, 0x20, 0xd6, 0xfb, 0x29, 0x0f, 0xd0, 0x04, 0xa0, 0x80, 0xa9, 0x00,
|
||||||
|
0xaa, 0xbd, 0xfc, 0xfc, 0x85, 0x29, 0x29, 0x03, 0x85, 0x2a, 0x98, 0x20,
|
||||||
|
0x90, 0xfb, 0xa0, 0x00, 0x48, 0xb1, 0xf5, 0x20, 0xdc, 0xff, 0xa2, 0x01,
|
||||||
|
0x20, 0x7a, 0xfb, 0xc4, 0x2a, 0xc8, 0x90, 0xf1, 0xa2, 0x03, 0x86, 0x5b,
|
||||||
|
0xc0, 0x04, 0x90, 0xf0, 0x68, 0xaa, 0x20, 0x99, 0xfa, 0x20, 0x78, 0xfb,
|
||||||
|
0xa4, 0x2a, 0xa2, 0x06, 0xe0, 0x03, 0xf0, 0x1e, 0x06, 0x29, 0x90, 0x0e,
|
||||||
|
0xbd, 0x09, 0xfd, 0x20, 0xef, 0xff, 0xbd, 0x0f, 0xfd, 0xf0, 0x03, 0x20,
|
||||||
|
0xef, 0xff, 0xca, 0xd0, 0xe7, 0x86, 0x5b, 0x60, 0x88, 0x30, 0xe5, 0x20,
|
||||||
|
0xdc, 0xff, 0xa5, 0x29, 0xc9, 0xe8, 0xb1, 0xf5, 0x90, 0xf2, 0x20, 0x84,
|
||||||
|
0xfb, 0xaa, 0xe8, 0xd0, 0x01, 0xc8, 0x98, 0x20, 0xdc, 0xff, 0x8a, 0x4c,
|
||||||
|
0xdc, 0xff, 0x20, 0xe5, 0xfe, 0xa5, 0xf6, 0xa6, 0xf5, 0x20, 0x67, 0xfb,
|
||||||
|
0xa2, 0x03, 0x20, 0xe0, 0xfe, 0xca, 0xd0, 0xfa, 0x60, 0x38, 0xa5, 0x2a,
|
||||||
|
0xa4, 0xf6, 0xaa, 0x10, 0x01, 0x88, 0x65, 0xf5, 0x90, 0x01, 0xc8, 0x60,
|
||||||
|
0x85, 0x54, 0x29, 0x8f, 0xc9, 0x8a, 0xf0, 0x43, 0x0a, 0xc9, 0x10, 0xf0,
|
||||||
|
0x37, 0xa5, 0x54, 0x0a, 0x69, 0x80, 0x2a, 0x0a, 0x29, 0x1f, 0x69, 0x20,
|
||||||
|
0x48, 0xa5, 0x54, 0x29, 0x9f, 0xf0, 0x1b, 0x0a, 0xc9, 0x20, 0xf0, 0x10,
|
||||||
|
0x29, 0x06, 0xd0, 0x2f, 0x68, 0x29, 0x07, 0xc9, 0x03, 0x10, 0x02, 0x69,
|
||||||
|
0x02, 0x69, 0x1f, 0x60, 0x68, 0x29, 0x07, 0x69, 0x18, 0x60, 0x68, 0xaa,
|
||||||
|
0xbd, 0xb0, 0xfb, 0x60, 0x16, 0x21, 0x17, 0x18, 0xa5, 0x54, 0x4a, 0x4a,
|
||||||
|
0x4a, 0x4a, 0x60, 0x20, 0xd4, 0xfb, 0xc9, 0x0e, 0xd0, 0x02, 0x69, 0xfd,
|
||||||
|
0x69, 0x08, 0x60, 0x68, 0x60, 0x82, 0x1b, 0x83, 0x99, 0x82, 0x1b, 0x83,
|
||||||
|
0x99, 0x21, 0xa6, 0xa0, 0x1b, 0x4b, 0x1b, 0x4b, 0x99, 0xa6, 0xa6, 0xa0,
|
||||||
|
0xa4, 0x21, 0x73, 0x14, 0x95, 0x95, 0x14, 0x13, 0x15, 0x15, 0x10, 0x10,
|
||||||
|
0x13, 0x11, 0x54, 0x12, 0x53, 0x9d, 0x61, 0x1c, 0x1c, 0x7c, 0x0b, 0x2b,
|
||||||
|
0x09, 0x9d, 0x61, 0x1b, 0x98, 0x0c, 0x93, 0x64, 0x93, 0x9d, 0x61, 0x21,
|
||||||
|
0x4b, 0x20, 0x06, 0x20, 0x46, 0x02, 0x12, 0x02, 0x52, 0x72, 0x42, 0x72,
|
||||||
|
0x2c, 0xb2, 0x08, 0xb0, 0x48, 0x02, 0x26, 0x70, 0xf0, 0x70, 0xe0, 0x96,
|
||||||
|
0x12, 0x26, 0x18, 0x52, 0x86, 0xa6, 0xc6, 0xe6, 0x8a, 0x62, 0xe4, 0x68,
|
||||||
|
0x60, 0x32, 0x32, 0x32, 0x30, 0x82, 0x88, 0xe4, 0x06, 0x02, 0x02, 0x60,
|
||||||
|
0x86, 0xd8, 0xd8, 0xe4, 0xe4, 0x30, 0x30, 0x46, 0x86, 0x00, 0x30, 0x25,
|
||||||
|
0x19, 0x24, 0x28, 0x34, 0x28, 0x28, 0x21, 0x28, 0x28, 0x23, 0x19, 0x34,
|
||||||
|
0x30, 0x21, 0x38, 0x34, 0x36, 0x30, 0x30, 0x38, 0x34, 0x30, 0x24, 0x08,
|
||||||
|
0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xa8, 0xb8, 0xc8,
|
||||||
|
0xd8, 0xe8, 0xf8, 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xea, 0x00, 0x40, 0x60,
|
||||||
|
0x10, 0x30, 0x50, 0x70, 0x90, 0xb0, 0xd0, 0xf0, 0x14, 0x20, 0x40, 0x80,
|
||||||
|
0xa0, 0xc0, 0xe0, 0x01, 0x21, 0x41, 0x61, 0x81, 0xa1, 0xc1, 0xe1, 0x02,
|
||||||
|
0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, 0x00, 0x08, 0x00, 0x00, 0x04,
|
||||||
|
0x14, 0x14, 0x00, 0x10, 0x0c, 0x1c, 0x18, 0x2c, 0x04, 0x20, 0x54, 0x30,
|
||||||
|
0x0d, 0x80, 0x04, 0x90, 0x03, 0x22, 0x54, 0x33, 0x0d, 0x80, 0x04, 0x90,
|
||||||
|
0x04, 0x20, 0x54, 0x33, 0x0d, 0x80, 0x04, 0x90, 0x04, 0x20, 0x54, 0x3b,
|
||||||
|
0x0d, 0x80, 0x04, 0x90, 0x00, 0x22, 0x44, 0x33, 0x0d, 0xc8, 0x44, 0x00,
|
||||||
|
0x11, 0x22, 0x44, 0x33, 0x0d, 0xc8, 0x44, 0xa9, 0x01, 0x22, 0x44, 0x33,
|
||||||
|
0x0d, 0x80, 0x04, 0x90, 0x01, 0x22, 0x44, 0x33, 0x0d, 0x80, 0x04, 0x90,
|
||||||
|
0x26, 0x31, 0x87, 0x9a, 0x00, 0x21, 0x81, 0x82, 0x00, 0x00, 0x59, 0x4d,
|
||||||
|
0x91, 0x92, 0x86, 0x4a, 0x85, 0x9d, 0x2c, 0x29, 0x2c, 0x23, 0x28, 0x24,
|
||||||
|
0x59, 0x00, 0x58, 0x24, 0x24, 0x00, 0x22, 0x24, 0x25, 0x35, 0x36, 0x37,
|
||||||
|
0x04, 0x05, 0x05, 0x02, 0x05, 0x05, 0x04, 0x05, 0x0a, 0x0b, 0x0a, 0x0a,
|
||||||
|
0x4e, 0x4c, 0x58, 0x45, 0x4d, 0x52, 0x44, 0x49, 0x21, 0x24, 0x41, 0x56,
|
||||||
|
0x50, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf0, 0xfa, 0xf1, 0xff, 0xff, 0xf4,
|
||||||
|
0xf0, 0xf0, 0xde, 0xe4, 0xc6, 0x4e, 0x04, 0x9f, 0xc1, 0x57, 0x1a, 0x0e,
|
||||||
|
0x4a, 0x90, 0x84, 0x42, 0x57, 0x53, 0x3d, 0x4d, 0x20, 0x3a, 0x52, 0x52,
|
||||||
|
0x45, 0x4d, 0x4e, 0x45, 0x41, 0x44, 0x44, 0x53, 0x59, 0x4e, 0x4f, 0x56,
|
||||||
|
0x46, 0x53, 0x59, 0x4d, 0x4e, 0x45, 0x53, 0x53, 0x45, 0x57, 0x20, 0x4e,
|
||||||
|
0x45, 0x4b, 0x20, 0x59, 0x42, 0x20, 0x33, 0x2e, 0x31, 0x20, 0x52, 0x45,
|
||||||
|
0x44, 0x41, 0x53, 0x55, 0x52, 0x4b, 0x0d, 0x50, 0x53, 0x59, 0x58, 0x41,
|
||||||
|
0x4c, 0x48, 0x43, 0x5a, 0x49, 0x44, 0x42, 0x00, 0x56, 0x4e, 0x20, 0xe5,
|
||||||
|
0xfe, 0x20, 0xb9, 0xfe, 0x20, 0xbe, 0xfe, 0xa0, 0x07, 0xd9, 0x82, 0xfd,
|
||||||
|
0xf0, 0x5c, 0x88, 0xd0, 0xf8, 0xc9, 0x52, 0xd0, 0x06, 0x20, 0x9f, 0xfe,
|
||||||
|
0x6c, 0xf5, 0x00, 0xc9, 0x54, 0xd0, 0x3a, 0xa2, 0x08, 0xbd, 0x96, 0xfe,
|
||||||
|
0x95, 0xe0, 0xca, 0xd0, 0xf8, 0xa1, 0xf5, 0xf0, 0x5d, 0xa4, 0x2a, 0xc9,
|
||||||
|
0x20, 0xf0, 0x75, 0xc9, 0x60, 0xf0, 0x63, 0xc9, 0x4c, 0xf0, 0x78, 0xc9,
|
||||||
|
0x6c, 0xf0, 0x75, 0xc9, 0x40, 0xf0, 0x53, 0x29, 0x1f, 0x49, 0x14, 0xc9,
|
||||||
|
0x04, 0xf0, 0x02, 0xb1, 0xf5, 0x99, 0xe0, 0x00, 0x88, 0x10, 0xf8, 0x20,
|
||||||
|
0x9f, 0xfe, 0x4c, 0xe0, 0x00, 0xc9, 0x21, 0xd0, 0x06, 0x20, 0x1b, 0xff,
|
||||||
|
0x4c, 0x1e, 0xfe, 0xc9, 0x24, 0xd0, 0x97, 0x4c, 0x0f, 0xff, 0xa2, 0xfe,
|
||||||
|
0x20, 0xbe, 0xfe, 0x95, 0x11, 0xe8, 0xd0, 0xf8, 0x20, 0x51, 0xfa, 0x99,
|
||||||
|
0xef, 0x00, 0xa6, 0xf1, 0x9a, 0x4c, 0x1e, 0xfe, 0x28, 0x20, 0xaa, 0xfe,
|
||||||
|
0x68, 0x85, 0xf5, 0x68, 0x85, 0xf6, 0xba, 0x86, 0xf1, 0x20, 0x57, 0xfe,
|
||||||
|
0x20, 0xdc, 0xfa, 0x4c, 0x92, 0xfd, 0x18, 0x68, 0x85, 0xf0, 0x68, 0x85,
|
||||||
|
0xf5, 0x68, 0x85, 0xf6, 0x20, 0x82, 0xfb, 0x84, 0xf6, 0x18, 0x90, 0x14,
|
||||||
|
0x18, 0x20, 0x82, 0xfb, 0xaa, 0x98, 0x48, 0x8a, 0x48, 0xa0, 0x02, 0x18,
|
||||||
|
0xb1, 0xf5, 0xaa, 0x88, 0xb1, 0xf5, 0x86, 0xf6, 0x85, 0xf5, 0xb0, 0xf3,
|
||||||
|
0x4c, 0x1e, 0xfe, 0x20, 0xe5, 0xfe, 0xa2, 0x05, 0xbd, 0x82, 0xfd, 0x20,
|
||||||
|
0xef, 0xff, 0x20, 0xb9, 0xfe, 0xb5, 0xef, 0x20, 0xdc, 0xff, 0x20, 0xe0,
|
||||||
|
0xfe, 0xca, 0xd0, 0xec, 0xa5, 0xf0, 0xa2, 0x08, 0x0a, 0x90, 0x08, 0x48,
|
||||||
|
0xbd, 0x89, 0xfd, 0x20, 0xef, 0xff, 0x68, 0xca, 0xd0, 0xf2, 0x60, 0x18,
|
||||||
|
0xa0, 0x01, 0xb1, 0xf5, 0x20, 0x84, 0xfb, 0x85, 0xf5, 0x98, 0x38, 0xb0,
|
||||||
|
0xa1, 0x20, 0xaa, 0xfe, 0x38, 0xb0, 0x9d, 0xea, 0xea, 0x4c, 0x91, 0xfe,
|
||||||
|
0x4c, 0x83, 0xfe, 0xa5, 0xf0, 0x48, 0xa5, 0xf4, 0xa6, 0xf3, 0xa4, 0xf2,
|
||||||
|
0x28, 0x60, 0x85, 0xf4, 0x86, 0xf3, 0x84, 0xf2, 0x08, 0x68, 0x85, 0xf0,
|
||||||
|
0xba, 0x86, 0xf1, 0xd8, 0x60, 0xa9, 0x2d, 0x4c, 0xef, 0xff, 0x20, 0xea,
|
||||||
|
0xfe, 0x4c, 0xef, 0xff, 0x20, 0xe5, 0xfe, 0xa2, 0x00, 0xb5, 0x04, 0x20,
|
||||||
|
0xef, 0xff, 0xe8, 0xe0, 0x06, 0xd0, 0xf6, 0x20, 0xe0, 0xfe, 0xa5, 0xfb,
|
||||||
|
0x20, 0xe5, 0xff, 0xa5, 0xfa, 0x20, 0xdc, 0xff, 0xa9, 0x20, 0x4c, 0xef,
|
||||||
|
0xff, 0xa9, 0x0d, 0x4c, 0xef, 0xff, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad,
|
||||||
|
0x10, 0xd0, 0x29, 0x7f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xd8, 0x58, 0xa0, 0x7f, 0x8c, 0x12, 0xd0, 0xa9,
|
||||||
|
0xa7, 0x8d, 0x11, 0xd0, 0x8d, 0x13, 0xd0, 0xa9, 0x5c, 0x20, 0xef, 0xff,
|
||||||
|
0x20, 0x1b, 0xff, 0x90, 0xf6, 0xb0, 0xf9, 0x20, 0xe5, 0xfe, 0xa0, 0x01,
|
||||||
|
0x88, 0x30, 0xf8, 0x20, 0xbe, 0xfe, 0x99, 0x00, 0x02, 0xc9, 0x0d, 0xf0,
|
||||||
|
0x0b, 0xc9, 0x5f, 0xf0, 0xef, 0xc9, 0x1b, 0xf0, 0xda, 0xc8, 0x10, 0xeb,
|
||||||
|
0xa0, 0xff, 0xa9, 0x00, 0xaa, 0x0a, 0x85, 0x2b, 0xc8, 0xb9, 0x00, 0x02,
|
||||||
|
0xc9, 0x0d, 0xd0, 0x02, 0x38, 0x60, 0x09, 0x80, 0xc9, 0xae, 0x90, 0xf0,
|
||||||
|
0xf0, 0xec, 0xc9, 0xba, 0xf0, 0xe7, 0xc9, 0xd2, 0xf0, 0x3d, 0x86, 0x28,
|
||||||
|
0x86, 0x29, 0x84, 0x2a, 0xb9, 0x00, 0x02, 0x49, 0x30, 0xc9, 0x0a, 0x90,
|
||||||
|
0x06, 0x69, 0x88, 0xc9, 0xfa, 0x90, 0x11, 0x0a, 0x0a, 0x0a, 0x0a, 0xa2,
|
||||||
|
0x04, 0x0a, 0x26, 0x28, 0x26, 0x29, 0xca, 0xd0, 0xf8, 0xc8, 0xd0, 0xe0,
|
||||||
|
0xc4, 0x2a, 0xd0, 0x02, 0x18, 0x60, 0x24, 0x2b, 0x50, 0x10, 0xa5, 0x28,
|
||||||
|
0x81, 0x26, 0xe6, 0x26, 0xd0, 0xaf, 0xe6, 0x27, 0x4c, 0x41, 0xff, 0x6c,
|
||||||
|
0x24, 0x00, 0x30, 0x27, 0xa2, 0x02, 0xb5, 0x27, 0x95, 0x25, 0x95, 0x23,
|
||||||
|
0xca, 0xd0, 0xf7, 0xd0, 0x12, 0x20, 0xe5, 0xfe, 0xa5, 0x25, 0x20, 0xdc,
|
||||||
|
0xff, 0xa5, 0x24, 0x20, 0xdc, 0xff, 0xa9, 0x3a, 0x20, 0xef, 0xff, 0x20,
|
||||||
|
0xe0, 0xfe, 0xa1, 0x24, 0x20, 0xdc, 0xff, 0x86, 0x2b, 0xa5, 0x24, 0xc5,
|
||||||
|
0x28, 0xa5, 0x25, 0xe5, 0x29, 0xb0, 0xc5, 0xe6, 0x24, 0xd0, 0x02, 0xe6,
|
||||||
|
0x25, 0xa5, 0x24, 0x29, 0x07, 0x10, 0xcc, 0x00, 0x48, 0x4a, 0x4a, 0x4a,
|
||||||
|
0x4a, 0x20, 0xe5, 0xff, 0x68, 0x29, 0x0f, 0x09, 0x30, 0xc9, 0x3a, 0x90,
|
||||||
|
0x02, 0x69, 0x06, 0x2c, 0x12, 0xd0, 0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60,
|
||||||
|
0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0x14, 0xfe,
|
||||||
|
];
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return 0xe0;
|
||||||
|
}
|
||||||
|
end() {
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
|
read(page: byte, off: byte): byte {
|
||||||
|
return this.rom[((page - 0xe0) << 8) | off];
|
||||||
|
}
|
||||||
|
write(page: byte, off: byte, val: byte) {
|
||||||
|
this.rom[((page - 0xe0) << 8) | off] = val;
|
||||||
|
}
|
||||||
|
getState() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
setState() {}
|
||||||
|
}
|
@ -1,11 +0,0 @@
|
|||||||
export var SYMBOLS = {
|
|
||||||
0xD010: 'KBD',
|
|
||||||
0xD011: 'KBDCR',
|
|
||||||
0xD012: 'DSP',
|
|
||||||
0xD013: 'DSPCR',
|
|
||||||
|
|
||||||
0xFF1F: 'GETLINE',
|
|
||||||
0xFFEF: 'ECHO',
|
|
||||||
0xFFDC: 'PRBYTE',
|
|
||||||
0xFFE5: 'PRHEX'
|
|
||||||
};
|
|
24
js/symbols.ts
Normal file
24
js/symbols.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { address } from './types';
|
||||||
|
|
||||||
|
export const SYMBOLS: Record<address, string> = {
|
||||||
|
0xd010: 'KBD',
|
||||||
|
0xd011: 'KBDCR',
|
||||||
|
0xd012: 'DSP',
|
||||||
|
0xd013: 'DSPCR',
|
||||||
|
|
||||||
|
0xff1f: 'GETLINE',
|
||||||
|
0xffef: 'ECHO',
|
||||||
|
0xffdc: 'PRBYTE',
|
||||||
|
0xffe5: 'PRHEX',
|
||||||
|
};
|
43
js/types.ts
Normal file
43
js/types.ts
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright 2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type byte = number;
|
||||||
|
|
||||||
|
export type word = number;
|
||||||
|
|
||||||
|
export type address = word;
|
||||||
|
|
||||||
|
export type memory = Uint8Array | byte[];
|
||||||
|
|
||||||
|
export interface Memory {
|
||||||
|
/** Read a byte. */
|
||||||
|
read(page: byte, offset: byte): byte;
|
||||||
|
/** Write a byte. */
|
||||||
|
write(page: byte, offset: byte, value: byte): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** A mapped region of memory. */
|
||||||
|
export interface MemoryPages extends Memory {
|
||||||
|
/** Start page. */
|
||||||
|
start(): byte;
|
||||||
|
/** End page, inclusive. */
|
||||||
|
end(): byte;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts the members of a constant array as a type. Used as:
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* const SOME_VALUES = ['a', 'b', 1, 2] as const;
|
||||||
|
* type SomeValues = MemberOf<typeof SOME_VALUES>; // 'a' | 'b' | 1 | 2
|
||||||
|
*/
|
||||||
|
export type MemberOf<T extends ReadonlyArray<unknown>> =
|
||||||
|
T extends ReadonlyArray<infer E> ? E : never;
|
@ -1,311 +0,0 @@
|
|||||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinstekb.com>
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
* the above copyright notice appear in all copies and that both that
|
|
||||||
* copyright notice and this permission notice appear in supporting
|
|
||||||
* documentation. No representations are made about the suitability of this
|
|
||||||
* software for any purpose. It is provided "as is" without express or
|
|
||||||
* implied warranty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { debug, toHex } from '../util';
|
|
||||||
|
|
||||||
// keycode: [plain, cntl, shift]
|
|
||||||
|
|
||||||
var keymap = {
|
|
||||||
// Most of these won't happen
|
|
||||||
0x00: [0x00, 0x00, 0x00], //
|
|
||||||
0x01: [0x01, 0x01, 0x01], //
|
|
||||||
0x02: [0x02, 0x02, 0x02], //
|
|
||||||
0x03: [0x03, 0x03, 0x03], //
|
|
||||||
0x04: [0x04, 0x04, 0x04], //
|
|
||||||
0x05: [0x05, 0x05, 0x05], //
|
|
||||||
0x06: [0x06, 0x06, 0x06], //
|
|
||||||
0x07: [0x07, 0x07, 0x07], //
|
|
||||||
0x08: [0x5f, 0x5f, 0x5f], // BS
|
|
||||||
0x09: [0x09, 0x09, 0x09], // TAB
|
|
||||||
0x0A: [0x0A, 0x0A, 0x0A], //
|
|
||||||
0x0B: [0x0B, 0x0B, 0x0B], //
|
|
||||||
0x0C: [0x0C, 0x0C, 0x0C], //
|
|
||||||
0x0D: [0x0D, 0x0D, 0x0D], // CR
|
|
||||||
0x0E: [0x0E, 0x0E, 0x0E], //
|
|
||||||
0x0F: [0x0F, 0x0F, 0x0F], //
|
|
||||||
|
|
||||||
0x10: [0xff, 0xff, 0xff], // SHIFT
|
|
||||||
0x11: [0xff, 0xff, 0xff], // CTRL
|
|
||||||
0x12: [0xff, 0xff, 0xff], // OPTION
|
|
||||||
0x13: [0x13, 0x13, 0x13], //
|
|
||||||
0x14: [0x14, 0x14, 0x14], //
|
|
||||||
0x15: [0x15, 0x15, 0x15], //
|
|
||||||
0x16: [0x16, 0x16, 0x16], //
|
|
||||||
0x17: [0x17, 0x17, 0x18], //
|
|
||||||
0x18: [0x18, 0x18, 0x18], //
|
|
||||||
0x19: [0x19, 0x19, 0x19], //
|
|
||||||
0x1A: [0x1A, 0x1A, 0x1A], //
|
|
||||||
0x1B: [0x1B, 0x1B, 0x1B], // ESC
|
|
||||||
0x1C: [0x1C, 0x1C, 0x1C], //
|
|
||||||
0x1D: [0x1D, 0x1D, 0x1D], //
|
|
||||||
0x1E: [0x1E, 0x1E, 0x1E], //
|
|
||||||
0x1F: [0x1F, 0x1F, 0x1F], //
|
|
||||||
|
|
||||||
// Most of these besides space won't happen
|
|
||||||
0x20: [0x20, 0x20, 0x20], //
|
|
||||||
0x21: [0x21, 0x21, 0x21], //
|
|
||||||
0x22: [0x22, 0x22, 0x22], //
|
|
||||||
0x23: [0x23, 0x23, 0x23], //
|
|
||||||
0x24: [0x24, 0x24, 0x24], //
|
|
||||||
0x25: [0x5f, 0x5f, 0x5f], // <- left
|
|
||||||
0x26: [0x0B, 0x0B, 0x0B], // ^ up
|
|
||||||
0x27: [0x15, 0x15, 0x15], // -> right
|
|
||||||
0x28: [0x0A, 0x0A, 0x0A], // v down
|
|
||||||
0x29: [0x29, 0x29, 0x29], // )
|
|
||||||
0x2A: [0x2A, 0x2A, 0x2A], // *
|
|
||||||
0x2B: [0x2B, 0x2B, 0x2B], // +
|
|
||||||
0x2C: [0x2C, 0x2C, 0x3C], // , - <
|
|
||||||
0x2D: [0x2D, 0x2D, 0x5F], // - - _
|
|
||||||
0x2E: [0x2E, 0x2E, 0x3E], // . - >
|
|
||||||
0x2F: [0x2F, 0x2F, 0x3F], // / - ?
|
|
||||||
|
|
||||||
0x30: [0x30, 0x30, 0x29], // 0 - )
|
|
||||||
0x31: [0x31, 0x31, 0x21], // 1 - !
|
|
||||||
0x32: [0x32, 0x00, 0x40], // 2 - @
|
|
||||||
0x33: [0x33, 0x33, 0x23], // 3 - #
|
|
||||||
0x34: [0x34, 0x34, 0x24], // 4 - $
|
|
||||||
0x35: [0x35, 0x35, 0x25], // 5 - %
|
|
||||||
0x36: [0x36, 0x36, 0x5E], // 6 - ^
|
|
||||||
0x37: [0x37, 0x37, 0x26], // 7 - &
|
|
||||||
0x38: [0x38, 0x38, 0x2A], // 8 - *
|
|
||||||
0x39: [0x39, 0x39, 0x28], // 9 - (
|
|
||||||
0x3A: [0x3A, 0x3A, 0x3A], // :
|
|
||||||
0x3B: [0x3B, 0x3B, 0x3A], // ; - :
|
|
||||||
0x3C: [0x3C, 0x3C, 0x3C], // <
|
|
||||||
0x3D: [0x3D, 0x3D, 0x2B], // = - +
|
|
||||||
0x3E: [0x3E, 0x3E, 0x3E], // >
|
|
||||||
0x3F: [0x3F, 0x3F, 0x3F], // ?
|
|
||||||
|
|
||||||
// Alpha and control
|
|
||||||
0x40: [0x40, 0x00, 0x40], // @
|
|
||||||
0x41: [0x41, 0x01, 0x41], // A
|
|
||||||
0x42: [0x42, 0x02, 0x42], // B
|
|
||||||
0x43: [0x43, 0x03, 0x43], // C - BRK
|
|
||||||
0x44: [0x44, 0x04, 0x44], // D
|
|
||||||
0x45: [0x45, 0x05, 0x45], // E
|
|
||||||
0x46: [0x46, 0x06, 0x46], // F
|
|
||||||
0x47: [0x47, 0x07, 0x47], // G - BELL
|
|
||||||
0x48: [0x48, 0x08, 0x48], // H
|
|
||||||
0x49: [0x49, 0x09, 0x49], // I - TAB
|
|
||||||
0x4A: [0x4A, 0x0A, 0x4A], // J - NL
|
|
||||||
0x4B: [0x4B, 0x0B, 0x4B], // K - VT
|
|
||||||
0x4C: [0x4C, 0x0C, 0x4C], // L
|
|
||||||
0x4D: [0x4D, 0x0D, 0x4D], // M - CR
|
|
||||||
0x4E: [0x4E, 0x0E, 0x4E], // N
|
|
||||||
0x4F: [0x4F, 0x0F, 0x4F], // O
|
|
||||||
|
|
||||||
0x50: [0x50, 0x10, 0x50], // P
|
|
||||||
0x51: [0x51, 0x11, 0x51], // Q
|
|
||||||
0x52: [0x52, 0x12, 0x52], // R
|
|
||||||
0x53: [0x53, 0x13, 0x53], // S
|
|
||||||
0x54: [0x54, 0x14, 0x54], // T
|
|
||||||
0x55: [0x55, 0x15, 0x55], // U
|
|
||||||
0x56: [0x56, 0x16, 0x56], // V
|
|
||||||
0x57: [0x57, 0x17, 0x57], // W
|
|
||||||
0x58: [0x58, 0x18, 0x58], // X
|
|
||||||
0x59: [0x59, 0x19, 0x59], // Y
|
|
||||||
0x5A: [0x5A, 0x1A, 0x5A], // Z
|
|
||||||
// 0x5B: [0x5B, 0x1B, 0x5B], // [ - ESC
|
|
||||||
// 0x5C: [0x5C, 0x1C, 0x5C], // \
|
|
||||||
// 0x5D: [0x5D, 0x1D, 0x5D], // ]
|
|
||||||
0x5E: [0x5E, 0x1E, 0x5E], // ^
|
|
||||||
0x5F: [0x5F, 0x1F, 0x5F], // _
|
|
||||||
|
|
||||||
// Stray keys
|
|
||||||
0xBA: [0x3B, 0x3B, 0x3A], // ; - :
|
|
||||||
0xBB: [0x3D, 0x3D, 0x2B], // = - +
|
|
||||||
0xBC: [0x2C, 0x2C, 0x3C], // , - <
|
|
||||||
0xBD: [0x2D, 0x2D, 0x5F], // - - _
|
|
||||||
0xBE: [0x2E, 0x2E, 0x3E], // . - >
|
|
||||||
0xBF: [0x2F, 0x2F, 0x3F], // / - ?
|
|
||||||
0xDB: [0x5B, 0x5B, 0x5B], // [
|
|
||||||
0xDC: [0x5C, 0x5C, 0x5C], // \
|
|
||||||
0xDD: [0x5D, 0x5D, 0x5D], // ]
|
|
||||||
0xDE: [0x27, 0x27, 0x22], // ' - "
|
|
||||||
|
|
||||||
0xFF: [0xFF, 0xFF, 0xFF] // No comma line
|
|
||||||
};
|
|
||||||
|
|
||||||
export function mapKeyEvent(evt) {
|
|
||||||
var code = evt.keyCode;
|
|
||||||
|
|
||||||
if (code in keymap) {
|
|
||||||
return keymap[code][evt.shiftKey ? 2 : (evt.ctrlKey ? 1 : 0)];
|
|
||||||
}
|
|
||||||
|
|
||||||
debug('Unhandled key = ' + toHex(code));
|
|
||||||
return 0xFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function KeyBoard(id, cpu, io, text) {
|
|
||||||
var keys =
|
|
||||||
[[['1','2','3','4','5','6','7','8','9','0',':','-','RESET'],
|
|
||||||
['ESC','Q','W','E','R','T','Y','U','I','O','P','FEED','RETURN'],
|
|
||||||
['CTRL','A','S','D','F','G','H','J','K','L',';','OUT','CLS'],
|
|
||||||
['SHIFT','Z','X','C','V','B','N','M',',','.','/','SHIFT'],
|
|
||||||
[' ']],
|
|
||||||
[['!','"','#','$','%','&','\'','(',')','0','*','=','RESET'],
|
|
||||||
['ESC','Q','W','E','R','T','Y','U','I','O','@','LINE','RETURN'],
|
|
||||||
['CTRL','A','S','D','F','BELL','H','J','K','L','+','RUB','CLS'],
|
|
||||||
['SHIFT','Z','X','C','V','B','^','M','<','>','?','SHIFT'],
|
|
||||||
[' ']]];
|
|
||||||
|
|
||||||
var shifted = false;
|
|
||||||
var controlled = false;
|
|
||||||
var kb = document.querySelector(id);
|
|
||||||
|
|
||||||
return {
|
|
||||||
shiftKey: function keyboard_shiftKey(down) {
|
|
||||||
shifted = down;
|
|
||||||
kb.querySelectorAll('.key-SHIFT').forEach(function(el) {
|
|
||||||
if (down) {
|
|
||||||
el.classList.add('active');
|
|
||||||
} else {
|
|
||||||
el.classList.remove('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
controlKey: function keyboard_controlKey(down) {
|
|
||||||
controlled = down;
|
|
||||||
kb.querySelectorAll('.key-CTRL').forEach(function(el) {
|
|
||||||
if (down) {
|
|
||||||
el.classList.add('active');
|
|
||||||
} else {
|
|
||||||
el.classList.remove('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
create: function keyboard_create() {
|
|
||||||
var x, y, row, key, key1, key2, label, label1, label2;
|
|
||||||
|
|
||||||
function buildLabel(k) {
|
|
||||||
var span = document.createElement('span');
|
|
||||||
span.innerHTML = k;
|
|
||||||
if (k.length > 1 && k.substr(0,1) != '&') {
|
|
||||||
span.classList.add('small');
|
|
||||||
}
|
|
||||||
return span;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _mouseup(event) {
|
|
||||||
event.currentTarget.classList.remove('pressed');
|
|
||||||
}
|
|
||||||
|
|
||||||
function _mousedown(event) {
|
|
||||||
event.currentTarget.classList.add('pressed');
|
|
||||||
var key = event.currentTarget.dataSet[shifted ? 'key2' : 'key1'];
|
|
||||||
switch (key) {
|
|
||||||
case 'BELL':
|
|
||||||
key = 'G';
|
|
||||||
break;
|
|
||||||
case 'RETURN':
|
|
||||||
key = '\r';
|
|
||||||
break;
|
|
||||||
case 'LINE':
|
|
||||||
case 'FEED':
|
|
||||||
key = '\n';
|
|
||||||
break;
|
|
||||||
case 'RUB':
|
|
||||||
case 'OUT':
|
|
||||||
key = '_'; // 0x5f
|
|
||||||
break;
|
|
||||||
case ' ':
|
|
||||||
key = ' ';
|
|
||||||
break;
|
|
||||||
case 'ESC':
|
|
||||||
key = '\0x1b';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key.length > 1) {
|
|
||||||
switch (key) {
|
|
||||||
case 'SHIFT':
|
|
||||||
shifted = !shifted;
|
|
||||||
kb.querySelectorAll('.key-SHIFT').forEach(function(el) {
|
|
||||||
el.classList.toggle('active');
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 'CTRL':
|
|
||||||
controlled = !controlled;
|
|
||||||
kb.querySelectorAll('.key-CTRL').forEach(function(el) {
|
|
||||||
el.classList.toggle('active');
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 'RESET':
|
|
||||||
cpu.reset();
|
|
||||||
break;
|
|
||||||
case 'CLS':
|
|
||||||
text.clear();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (controlled && key >= '@' && key <= '_') {
|
|
||||||
io.keyDown(key.charCodeAt(0) - 0x40);
|
|
||||||
} else {
|
|
||||||
io.keyDown(key.charCodeAt(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (y = 0; y < 5; y++) {
|
|
||||||
row = document.createElement('div');
|
|
||||||
row.classList.add('row', 'row' + y);
|
|
||||||
kb.append(row);
|
|
||||||
for (x = 0; x < keys[0][y].length; x++) {
|
|
||||||
key1 = keys[0][y][x];
|
|
||||||
key2 = keys[1][y][x];
|
|
||||||
|
|
||||||
label = document.createElement('div');
|
|
||||||
label1 = buildLabel(key1);
|
|
||||||
label2 = buildLabel(key2);
|
|
||||||
|
|
||||||
key = document.createElement('div');
|
|
||||||
key.classList.add('key', 'key-' + key1.replace(/[&;]/g,''));
|
|
||||||
|
|
||||||
if (key1.length > 1) {
|
|
||||||
if (key1 != key2) {
|
|
||||||
key.classList.add('vcenter2');
|
|
||||||
} else {
|
|
||||||
key.classList.add('vcenter');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key1 != key2) {
|
|
||||||
key.classList.add('key-' + key2.replace(/[&;]/g,''));
|
|
||||||
label.append(label2);
|
|
||||||
label.append(document.createElement('br'));
|
|
||||||
}
|
|
||||||
label.append(label1);
|
|
||||||
key.append(label);
|
|
||||||
key.dataSet = {'key1': key1, 'key2': key2};
|
|
||||||
|
|
||||||
if (window.ontouchstart === undefined) {
|
|
||||||
key.addEventListener('mousedown', _mousedown);
|
|
||||||
key.addEventListener('mouseup', _mouseup);
|
|
||||||
key.addEventListener('mouseout', _mouseup);
|
|
||||||
} else {
|
|
||||||
key.addEventListener('touchstart', _mousedown);
|
|
||||||
key.addEventListener('touchend', _mouseup);
|
|
||||||
key.addEventListener('touchleave', _mouseup);
|
|
||||||
}
|
|
||||||
|
|
||||||
row.append(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
339
js/ui/keyboard.ts
Normal file
339
js/ui/keyboard.ts
Normal file
@ -0,0 +1,339 @@
|
|||||||
|
/* Copyright 2010-2019 Will Scullin <scullin@scullinstekb.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import CPU6502 from 'js/cpu6502';
|
||||||
|
import { debug, toHex } from '../util';
|
||||||
|
import Apple1IO from 'js/apple1io';
|
||||||
|
import { TextPage } from 'js/canvas1';
|
||||||
|
import { byte } from 'js/types';
|
||||||
|
|
||||||
|
// keycode: [plain, cntl, shift]
|
||||||
|
|
||||||
|
const keymap: Record<byte, readonly byte[]> = {
|
||||||
|
// Most of these won't happen
|
||||||
|
0x00: [0x00, 0x00, 0x00], //
|
||||||
|
0x01: [0x01, 0x01, 0x01], //
|
||||||
|
0x02: [0x02, 0x02, 0x02], //
|
||||||
|
0x03: [0x03, 0x03, 0x03], //
|
||||||
|
0x04: [0x04, 0x04, 0x04], //
|
||||||
|
0x05: [0x05, 0x05, 0x05], //
|
||||||
|
0x06: [0x06, 0x06, 0x06], //
|
||||||
|
0x07: [0x07, 0x07, 0x07], //
|
||||||
|
0x08: [0x5f, 0x5f, 0x5f], // BS
|
||||||
|
0x09: [0x09, 0x09, 0x09], // TAB
|
||||||
|
0x0a: [0x0a, 0x0a, 0x0a], //
|
||||||
|
0x0b: [0x0b, 0x0b, 0x0b], //
|
||||||
|
0x0c: [0x0c, 0x0c, 0x0c], //
|
||||||
|
0x0d: [0x0d, 0x0d, 0x0d], // CR
|
||||||
|
0x0e: [0x0e, 0x0e, 0x0e], //
|
||||||
|
0x0f: [0x0f, 0x0f, 0x0f], //
|
||||||
|
|
||||||
|
0x10: [0xff, 0xff, 0xff], // SHIFT
|
||||||
|
0x11: [0xff, 0xff, 0xff], // CTRL
|
||||||
|
0x12: [0xff, 0xff, 0xff], // OPTION
|
||||||
|
0x13: [0x13, 0x13, 0x13], //
|
||||||
|
0x14: [0x14, 0x14, 0x14], //
|
||||||
|
0x15: [0x15, 0x15, 0x15], //
|
||||||
|
0x16: [0x16, 0x16, 0x16], //
|
||||||
|
0x17: [0x17, 0x17, 0x18], //
|
||||||
|
0x18: [0x18, 0x18, 0x18], //
|
||||||
|
0x19: [0x19, 0x19, 0x19], //
|
||||||
|
0x1a: [0x1a, 0x1a, 0x1a], //
|
||||||
|
0x1b: [0x1b, 0x1b, 0x1b], // ESC
|
||||||
|
0x1c: [0x1c, 0x1c, 0x1c], //
|
||||||
|
0x1d: [0x1d, 0x1d, 0x1d], //
|
||||||
|
0x1e: [0x1e, 0x1e, 0x1e], //
|
||||||
|
0x1f: [0x1f, 0x1f, 0x1f], //
|
||||||
|
|
||||||
|
// Most of these besides space won't happen
|
||||||
|
0x20: [0x20, 0x20, 0x20], //
|
||||||
|
0x21: [0x21, 0x21, 0x21], //
|
||||||
|
0x22: [0x22, 0x22, 0x22], //
|
||||||
|
0x23: [0x23, 0x23, 0x23], //
|
||||||
|
0x24: [0x24, 0x24, 0x24], //
|
||||||
|
0x25: [0x5f, 0x5f, 0x5f], // <- left
|
||||||
|
0x26: [0x0b, 0x0b, 0x0b], // ^ up
|
||||||
|
0x27: [0x15, 0x15, 0x15], // -> right
|
||||||
|
0x28: [0x0a, 0x0a, 0x0a], // v down
|
||||||
|
0x29: [0x29, 0x29, 0x29], // )
|
||||||
|
0x2a: [0x2a, 0x2a, 0x2a], // *
|
||||||
|
0x2b: [0x2b, 0x2b, 0x2b], // +
|
||||||
|
0x2c: [0x2c, 0x2c, 0x3c], // , - <
|
||||||
|
0x2d: [0x2d, 0x2d, 0x5f], // - - _
|
||||||
|
0x2e: [0x2e, 0x2e, 0x3e], // . - >
|
||||||
|
0x2f: [0x2f, 0x2f, 0x3f], // / - ?
|
||||||
|
|
||||||
|
0x30: [0x30, 0x30, 0x29], // 0 - )
|
||||||
|
0x31: [0x31, 0x31, 0x21], // 1 - !
|
||||||
|
0x32: [0x32, 0x00, 0x40], // 2 - @
|
||||||
|
0x33: [0x33, 0x33, 0x23], // 3 - #
|
||||||
|
0x34: [0x34, 0x34, 0x24], // 4 - $
|
||||||
|
0x35: [0x35, 0x35, 0x25], // 5 - %
|
||||||
|
0x36: [0x36, 0x36, 0x5e], // 6 - ^
|
||||||
|
0x37: [0x37, 0x37, 0x26], // 7 - &
|
||||||
|
0x38: [0x38, 0x38, 0x2a], // 8 - *
|
||||||
|
0x39: [0x39, 0x39, 0x28], // 9 - (
|
||||||
|
0x3a: [0x3a, 0x3a, 0x3a], // :
|
||||||
|
0x3b: [0x3b, 0x3b, 0x3a], // ; - :
|
||||||
|
0x3c: [0x3c, 0x3c, 0x3c], // <
|
||||||
|
0x3d: [0x3d, 0x3d, 0x2b], // = - +
|
||||||
|
0x3e: [0x3e, 0x3e, 0x3e], // >
|
||||||
|
0x3f: [0x3f, 0x3f, 0x3f], // ?
|
||||||
|
|
||||||
|
// Alpha and control
|
||||||
|
0x40: [0x40, 0x00, 0x40], // @
|
||||||
|
0x41: [0x41, 0x01, 0x41], // A
|
||||||
|
0x42: [0x42, 0x02, 0x42], // B
|
||||||
|
0x43: [0x43, 0x03, 0x43], // C - BRK
|
||||||
|
0x44: [0x44, 0x04, 0x44], // D
|
||||||
|
0x45: [0x45, 0x05, 0x45], // E
|
||||||
|
0x46: [0x46, 0x06, 0x46], // F
|
||||||
|
0x47: [0x47, 0x07, 0x47], // G - BELL
|
||||||
|
0x48: [0x48, 0x08, 0x48], // H
|
||||||
|
0x49: [0x49, 0x09, 0x49], // I - TAB
|
||||||
|
0x4a: [0x4a, 0x0a, 0x4a], // J - NL
|
||||||
|
0x4b: [0x4b, 0x0b, 0x4b], // K - VT
|
||||||
|
0x4c: [0x4c, 0x0c, 0x4c], // L
|
||||||
|
0x4d: [0x4d, 0x0d, 0x4d], // M - CR
|
||||||
|
0x4e: [0x4e, 0x0e, 0x4e], // N
|
||||||
|
0x4f: [0x4f, 0x0f, 0x4f], // O
|
||||||
|
|
||||||
|
0x50: [0x50, 0x10, 0x50], // P
|
||||||
|
0x51: [0x51, 0x11, 0x51], // Q
|
||||||
|
0x52: [0x52, 0x12, 0x52], // R
|
||||||
|
0x53: [0x53, 0x13, 0x53], // S
|
||||||
|
0x54: [0x54, 0x14, 0x54], // T
|
||||||
|
0x55: [0x55, 0x15, 0x55], // U
|
||||||
|
0x56: [0x56, 0x16, 0x56], // V
|
||||||
|
0x57: [0x57, 0x17, 0x57], // W
|
||||||
|
0x58: [0x58, 0x18, 0x58], // X
|
||||||
|
0x59: [0x59, 0x19, 0x59], // Y
|
||||||
|
0x5a: [0x5a, 0x1a, 0x5a], // Z
|
||||||
|
// 0x5B: [0x5B, 0x1B, 0x5B], // [ - ESC
|
||||||
|
// 0x5C: [0x5C, 0x1C, 0x5C], // \
|
||||||
|
// 0x5D: [0x5D, 0x1D, 0x5D], // ]
|
||||||
|
0x5e: [0x5e, 0x1e, 0x5e], // ^
|
||||||
|
0x5f: [0x5f, 0x1f, 0x5f], // _
|
||||||
|
|
||||||
|
// Stray keys
|
||||||
|
0xba: [0x3b, 0x3b, 0x3a], // ; - :
|
||||||
|
0xbb: [0x3d, 0x3d, 0x2b], // = - +
|
||||||
|
0xbc: [0x2c, 0x2c, 0x3c], // , - <
|
||||||
|
0xbd: [0x2d, 0x2d, 0x5f], // - - _
|
||||||
|
0xbe: [0x2e, 0x2e, 0x3e], // . - >
|
||||||
|
0xbf: [0x2f, 0x2f, 0x3f], // / - ?
|
||||||
|
0xdb: [0x5b, 0x5b, 0x5b], // [
|
||||||
|
0xdc: [0x5c, 0x5c, 0x5c], // \
|
||||||
|
0xdd: [0x5d, 0x5d, 0x5d], // ]
|
||||||
|
0xde: [0x27, 0x27, 0x22], // ' - "
|
||||||
|
|
||||||
|
0xff: [0xff, 0xff, 0xff], // No comma line
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
const keys = [
|
||||||
|
[
|
||||||
|
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ':', '-', 'RESET'],
|
||||||
|
['ESC', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'FEED', 'RETURN'],
|
||||||
|
['CTRL', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', 'OUT', 'CLS'],
|
||||||
|
['SHIFT', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 'SHIFT'],
|
||||||
|
[' '],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
['!', '"', '#', '$', '%', '&', "'", '(', ')', '0', '*', '=', 'RESET'],
|
||||||
|
['ESC', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', '@', 'LINE', 'RETURN'],
|
||||||
|
['CTRL', 'A', 'S', 'D', 'F', 'BELL', 'H', 'J', 'K', 'L', '+', 'RUB', 'CLS'],
|
||||||
|
['SHIFT', 'Z', 'X', 'C', 'V', 'B', '^', 'M', '<', '>', '?', 'SHIFT'],
|
||||||
|
[' '],
|
||||||
|
],
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
export function mapKeyEvent(evt: KeyboardEvent) {
|
||||||
|
const code = evt.keyCode;
|
||||||
|
|
||||||
|
if (code in keymap) {
|
||||||
|
return keymap[code][evt.shiftKey ? 2 : evt.ctrlKey ? 1 : 0];
|
||||||
|
}
|
||||||
|
|
||||||
|
debug('Unhandled key = ' + toHex(code));
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class KeyBoard {
|
||||||
|
shifted = false;
|
||||||
|
controlled = false;
|
||||||
|
kb: HTMLDivElement;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
id: string,
|
||||||
|
private cpu: CPU6502,
|
||||||
|
private io: Apple1IO,
|
||||||
|
private text: TextPage,
|
||||||
|
) {
|
||||||
|
this.kb = document.querySelector<HTMLDivElement>(id)!;
|
||||||
|
}
|
||||||
|
|
||||||
|
shiftKey(down: boolean) {
|
||||||
|
this.shifted = down;
|
||||||
|
this.kb.querySelectorAll('.key-SHIFT').forEach(function (el) {
|
||||||
|
if (down) {
|
||||||
|
el.classList.add('active');
|
||||||
|
} else {
|
||||||
|
el.classList.remove('active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
controlKey(down: boolean) {
|
||||||
|
this.controlled = down;
|
||||||
|
this.kb.querySelectorAll('.key-CTRL').forEach(function (el) {
|
||||||
|
if (down) {
|
||||||
|
el.classList.add('active');
|
||||||
|
} else {
|
||||||
|
el.classList.remove('active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
create() {
|
||||||
|
let x, y, row, key, key1, key2, label, label1, label2;
|
||||||
|
|
||||||
|
function buildLabel(k: string) {
|
||||||
|
const span = document.createElement('span');
|
||||||
|
span.innerHTML = k;
|
||||||
|
if (k.length > 1 && !k.startsWith('&')) {
|
||||||
|
span.classList.add('small');
|
||||||
|
}
|
||||||
|
return span;
|
||||||
|
}
|
||||||
|
|
||||||
|
const _mouseup = (event: Event) => {
|
||||||
|
if (!(event.currentTarget instanceof HTMLElement)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.currentTarget.classList.remove('pressed');
|
||||||
|
};
|
||||||
|
|
||||||
|
const _mousedown = (event: Event) => {
|
||||||
|
if (!(event.currentTarget instanceof HTMLElement)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
event.currentTarget.classList.add('pressed');
|
||||||
|
let key = event.currentTarget.dataset[this.shifted ? 'key2' : 'key1'];
|
||||||
|
if (!key) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (key) {
|
||||||
|
case 'BELL':
|
||||||
|
key = 'G';
|
||||||
|
break;
|
||||||
|
case 'RETURN':
|
||||||
|
key = '\r';
|
||||||
|
break;
|
||||||
|
case 'LINE':
|
||||||
|
case 'FEED':
|
||||||
|
key = '\n';
|
||||||
|
break;
|
||||||
|
case 'RUB':
|
||||||
|
case 'OUT':
|
||||||
|
key = '_'; // 0x5f
|
||||||
|
break;
|
||||||
|
case ' ':
|
||||||
|
key = ' ';
|
||||||
|
break;
|
||||||
|
case 'ESC':
|
||||||
|
key = '\0x1b';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key.length > 1) {
|
||||||
|
switch (key) {
|
||||||
|
case 'SHIFT':
|
||||||
|
this.shifted = !this.shifted;
|
||||||
|
this.kb
|
||||||
|
.querySelectorAll<HTMLElement>('.key-SHIFT')
|
||||||
|
.forEach(function (el: HTMLElement) {
|
||||||
|
el.classList.toggle('active');
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'CTRL':
|
||||||
|
this.controlled = !this.controlled;
|
||||||
|
this.kb.querySelectorAll('.key-CTRL').forEach(function (el) {
|
||||||
|
el.classList.toggle('active');
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'RESET':
|
||||||
|
this.cpu.reset();
|
||||||
|
break;
|
||||||
|
case 'CLS':
|
||||||
|
this.text.clear();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (this.controlled && key >= '@' && key <= '_') {
|
||||||
|
this.io.keyDown(key.charCodeAt(0) - 0x40);
|
||||||
|
} else {
|
||||||
|
this.io.keyDown(key.charCodeAt(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (y = 0; y < 5; y++) {
|
||||||
|
row = document.createElement('div');
|
||||||
|
row.classList.add('row', 'row' + y);
|
||||||
|
this.kb.append(row);
|
||||||
|
for (x = 0; x < keys[0][y].length; x++) {
|
||||||
|
key1 = keys[0][y][x];
|
||||||
|
key2 = keys[1][y][x];
|
||||||
|
|
||||||
|
label = document.createElement('div');
|
||||||
|
label1 = buildLabel(key1);
|
||||||
|
label2 = buildLabel(key2);
|
||||||
|
|
||||||
|
key = document.createElement('div');
|
||||||
|
key.classList.add('key', 'key-' + key1.replace(/[&;]/g, ''));
|
||||||
|
|
||||||
|
if (key1.length > 1) {
|
||||||
|
if (key1 !== key2) {
|
||||||
|
key.classList.add('vcenter2');
|
||||||
|
} else {
|
||||||
|
key.classList.add('vcenter');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key1 !== key2) {
|
||||||
|
key.classList.add('key-' + key2.replace(/[&;]/g, ''));
|
||||||
|
label.append(label2);
|
||||||
|
label.append(document.createElement('br'));
|
||||||
|
}
|
||||||
|
label.append(label1);
|
||||||
|
key.append(label);
|
||||||
|
key.dataset['key1'] = key1;
|
||||||
|
key.dataset['key2'] = key2;
|
||||||
|
|
||||||
|
if (window.ontouchstart === undefined) {
|
||||||
|
key.addEventListener('mousedown', _mousedown);
|
||||||
|
key.addEventListener('mouseup', _mouseup);
|
||||||
|
key.addEventListener('mouseout', _mouseup);
|
||||||
|
} else {
|
||||||
|
key.addEventListener('touchstart', _mousedown);
|
||||||
|
key.addEventListener('touchend', _mouseup);
|
||||||
|
key.addEventListener('touchleave', _mouseup);
|
||||||
|
}
|
||||||
|
|
||||||
|
row.append(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
79
js/util.js
79
js/util.js
@ -1,79 +0,0 @@
|
|||||||
/* Copyright 2010-2019 Will Scullin <scullin@scullinsteel.com>
|
|
||||||
*
|
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
* the above copyright notice appear in all copies and that both that
|
|
||||||
* copyright notice and this permission notice appear in supporting
|
|
||||||
* documentation. No representations are made about the suitability of this
|
|
||||||
* software for any purpose. It is provided "as is" without express or
|
|
||||||
* implied warranty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
var hex_digits = '0123456789ABCDEF';
|
|
||||||
var bin_digits = '01';
|
|
||||||
|
|
||||||
export function allocMem(size) {
|
|
||||||
var result;
|
|
||||||
if (window.Uint8Array) {
|
|
||||||
result = new Uint8Array(size);
|
|
||||||
} else {
|
|
||||||
result = new Array(size);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function allocMemPages(pages) {
|
|
||||||
return allocMem(pages * 0x100);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function debug(msg) {
|
|
||||||
/*eslint no-console: 0 */
|
|
||||||
if (typeof(console) != 'undefined' && 'log' in console) {
|
|
||||||
console.log(msg);
|
|
||||||
} else if (typeof(environment) == 'object') { // rhino shell
|
|
||||||
print(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function toHex(v, n) {
|
|
||||||
if (!n) {
|
|
||||||
n = v < 256 ? 2 : 4;
|
|
||||||
}
|
|
||||||
var result = '';
|
|
||||||
for (var idx = 0; idx < n; idx++) {
|
|
||||||
result = hex_digits[v & 0x0f] + result;
|
|
||||||
v >>= 4;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function toBinary(v) {
|
|
||||||
var result = '';
|
|
||||||
for (var idx = 0; idx < 8; idx++) {
|
|
||||||
result = bin_digits[v & 0x01] + result;
|
|
||||||
v >>= 1;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// From http://www.netlobo.com/url_query_string_javascript.html
|
|
||||||
export function gup( name )
|
|
||||||
{
|
|
||||||
name = name.replace(/[[]/,'\\[').replace(/[\]]/,'\\]');
|
|
||||||
var regexS = '[\\?&]'+name+'=([^&#]*)';
|
|
||||||
var regex = new RegExp( regexS );
|
|
||||||
var results = regex.exec( window.location.href );
|
|
||||||
if( !results )
|
|
||||||
return '';
|
|
||||||
else
|
|
||||||
return results[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function hup() {
|
|
||||||
var regex = new RegExp('#(.*)');
|
|
||||||
var results = regex.exec(window.location.hash);
|
|
||||||
if ( !results )
|
|
||||||
return '';
|
|
||||||
else
|
|
||||||
return decodeURIComponent(results[1]);
|
|
||||||
}
|
|
67
js/util.ts
Normal file
67
js/util.ts
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/* Copyright 2010-2023 Will Scullin <scullin@scullinsteel.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { byte, word } from './types';
|
||||||
|
|
||||||
|
const hex_digits = '0123456789ABCDEF';
|
||||||
|
const bin_digits = '01';
|
||||||
|
|
||||||
|
export function allocMem(size: word) {
|
||||||
|
let result;
|
||||||
|
if (window.Uint8Array) {
|
||||||
|
result = new Uint8Array(size);
|
||||||
|
} else {
|
||||||
|
result = new Array(size);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function allocMemPages(pages: byte) {
|
||||||
|
return allocMem(pages * 0x100);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function debug(...msg: unknown[]) {
|
||||||
|
/*eslint no-console: 0 */
|
||||||
|
console.log(...msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function toHex(v: byte, n?: 2 | 4) {
|
||||||
|
if (!n) {
|
||||||
|
n = v < 256 ? 2 : 4;
|
||||||
|
}
|
||||||
|
let result = '';
|
||||||
|
for (let idx = 0; idx < n; idx++) {
|
||||||
|
result = hex_digits[v & 0x0f] + result;
|
||||||
|
v >>= 4;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function toBinary(v: byte) {
|
||||||
|
let result = '';
|
||||||
|
for (let idx = 0; idx < 8; idx++) {
|
||||||
|
result = bin_digits[v & 0x01] + result;
|
||||||
|
v >>= 1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function gup(name: string) {
|
||||||
|
const params = new URLSearchParams(window.location.search);
|
||||||
|
return params.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function hup() {
|
||||||
|
const regex = new RegExp('#(.*)');
|
||||||
|
const results = regex.exec(window.location.hash);
|
||||||
|
if (!results) return '';
|
||||||
|
else return decodeURIComponent(results[1]);
|
||||||
|
}
|
17455
package-lock.json
generated
17455
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
13
package.json
13
package.json
@ -28,11 +28,20 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.4.0",
|
"@babel/core": "^7.4.0",
|
||||||
"@babel/preset-env": "^7.4.2",
|
"@babel/preset-env": "^7.4.2",
|
||||||
|
"@types/micromodal": "^0.3.3",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^6.2.1",
|
||||||
|
"@types/jest": "^29.5.3",
|
||||||
"ajv": "^6.9.2",
|
"ajv": "^6.9.2",
|
||||||
"babel-jest": "^26.3.0",
|
"babel-jest": "^29.5.0",
|
||||||
"eslint": "^8.3.0",
|
"eslint": "^8.3.0",
|
||||||
"jest": "^27.3.1",
|
"eslint-config-prettier": "^9.0.0",
|
||||||
|
"eslint-plugin-jest": "^27.2.3",
|
||||||
|
"eslint-plugin-prettier": "^5.0.0",
|
||||||
|
"jest": "^29.5.0",
|
||||||
"node-forge": "^1.3.0",
|
"node-forge": "^1.3.0",
|
||||||
|
"ts-jest": "^29.1.1",
|
||||||
|
"ts-loader": "^9.4.4",
|
||||||
|
"typescript": "^5.1.6",
|
||||||
"webpack": "^5.64.4",
|
"webpack": "^5.64.4",
|
||||||
"webpack-cli": "^4.9.1",
|
"webpack-cli": "^4.9.1",
|
||||||
"webpack-dev-server": "^4.6.0"
|
"webpack-dev-server": "^4.6.0"
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
|
|
||||||
import CPU6502 from '../js/cpu6502';
|
|
||||||
import Test6502 from './roms/6502test';
|
|
||||||
import Test65C02 from './roms/65C02test';
|
|
||||||
|
|
||||||
import { toHex } from '../js/util';
|
|
||||||
|
|
||||||
describe.skip('CPU', function () {
|
|
||||||
var cpu;
|
|
||||||
var lastPC = 0;
|
|
||||||
var done = false;
|
|
||||||
|
|
||||||
function traceCB() {
|
|
||||||
var pc = cpu.getPC();
|
|
||||||
done = lastPC == pc;
|
|
||||||
lastPC = pc;
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('6502', function () {
|
|
||||||
it('completes the test ROM', function () {
|
|
||||||
cpu = new CPU6502();
|
|
||||||
var test = new Test6502();
|
|
||||||
cpu.addPageHandler(test);
|
|
||||||
cpu.setPC(0x400);
|
|
||||||
|
|
||||||
do {
|
|
||||||
cpu.stepCyclesDebug(1000, traceCB);
|
|
||||||
} while (!done);
|
|
||||||
|
|
||||||
expect(toHex(lastPC)).toEqual(toHex(0x3469));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('65C02', function () {
|
|
||||||
it('completes the test ROM', function () {
|
|
||||||
cpu = new CPU6502({'65C02': true});
|
|
||||||
var test = new Test65C02();
|
|
||||||
cpu.addPageHandler(test);
|
|
||||||
cpu.setPC(0x400);
|
|
||||||
|
|
||||||
do {
|
|
||||||
cpu.stepCyclesDebug(1000, traceCB);
|
|
||||||
} while (!done);
|
|
||||||
|
|
||||||
expect(toHex(lastPC)).toEqual(toHex(0x24f1));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
48
test/cpu.spec.ts
Normal file
48
test/cpu.spec.ts
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import CPU6502, { FLAVOR_ROCKWELL_65C02 } from '../js/cpu6502';
|
||||||
|
// From https://github.com/Klaus2m5/6502_65C02_functional_tests
|
||||||
|
import Test6502 from './roms/6502test';
|
||||||
|
import Test65C02 from './roms/65C02test';
|
||||||
|
|
||||||
|
import { toHex } from '../js/util';
|
||||||
|
|
||||||
|
describe('CPU', function () {
|
||||||
|
let cpu: CPU6502;
|
||||||
|
let lastPC = 0;
|
||||||
|
let done = false;
|
||||||
|
|
||||||
|
function traceCB() {
|
||||||
|
const pc = cpu.getPC();
|
||||||
|
done = lastPC === pc;
|
||||||
|
lastPC = pc;
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('6502', function () {
|
||||||
|
it('completes the test ROM', function () {
|
||||||
|
cpu = new CPU6502();
|
||||||
|
const test = new Test6502();
|
||||||
|
cpu.addPageHandler(test);
|
||||||
|
cpu.setPC(0x400);
|
||||||
|
|
||||||
|
do {
|
||||||
|
cpu.stepCyclesDebug(1000, traceCB);
|
||||||
|
} while (!done);
|
||||||
|
|
||||||
|
expect(toHex(lastPC)).toEqual(toHex(0x3469));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('65C02', function () {
|
||||||
|
it('completes the test ROM', function () {
|
||||||
|
cpu = new CPU6502({ flavor: FLAVOR_ROCKWELL_65C02 });
|
||||||
|
const test = new Test65C02();
|
||||||
|
cpu.addPageHandler(test);
|
||||||
|
cpu.setPC(0x400);
|
||||||
|
|
||||||
|
do {
|
||||||
|
cpu.stepCyclesDebug(1000, traceCB);
|
||||||
|
} while (!done);
|
||||||
|
|
||||||
|
expect(toHex(lastPC)).toEqual(toHex(0x24f1));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
2240
test/cpu6502.spec.js
2240
test/cpu6502.spec.js
File diff suppressed because it is too large
Load Diff
3254
test/cpu6502.spec.ts
Normal file
3254
test/cpu6502.spec.ts
Normal file
File diff suppressed because it is too large
Load Diff
BIN
test/roms/6502_functional_test.bin
Normal file
BIN
test/roms/6502_functional_test.bin
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
29
test/roms/6502test.ts
Normal file
29
test/roms/6502test.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// From https://github.com/Klaus2m5/6502_65C02_functional_tests
|
||||||
|
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import { MemoryPages, byte } from '../../js/types';
|
||||||
|
|
||||||
|
export default class Test6502 implements MemoryPages {
|
||||||
|
private data: Buffer;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.data = fs.readFileSync(path.join(__dirname, '6502_functional_test.bin'));
|
||||||
|
}
|
||||||
|
|
||||||
|
start = () => {
|
||||||
|
return 0x00;
|
||||||
|
};
|
||||||
|
|
||||||
|
end = () => {
|
||||||
|
return 0xff;
|
||||||
|
};
|
||||||
|
|
||||||
|
read = (page: byte, off: byte) => {
|
||||||
|
return this.data[page << 8 | off];
|
||||||
|
};
|
||||||
|
|
||||||
|
write = (page: byte, off: byte, val: byte) => {
|
||||||
|
this.data[page << 8 | off] = val;
|
||||||
|
};
|
||||||
|
}
|
BIN
test/roms/65C02_extended_opcodes_test.bin
Normal file
BIN
test/roms/65C02_extended_opcodes_test.bin
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
29
test/roms/65C02test.ts
Normal file
29
test/roms/65C02test.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// From https://github.com/Klaus2m5/6502_65C02_functional_tests
|
||||||
|
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import { MemoryPages, byte } from '../../js/types';
|
||||||
|
|
||||||
|
export default class Test65C02 implements MemoryPages {
|
||||||
|
private data: Buffer;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.data = fs.readFileSync(path.join(__dirname, '65C02_extended_opcodes_test.bin'));
|
||||||
|
}
|
||||||
|
|
||||||
|
start = () => {
|
||||||
|
return 0x00;
|
||||||
|
};
|
||||||
|
|
||||||
|
end = () => {
|
||||||
|
return 0xff;
|
||||||
|
};
|
||||||
|
|
||||||
|
read = (page: byte, off: byte) => {
|
||||||
|
return this.data[page << 8 | off];
|
||||||
|
};
|
||||||
|
|
||||||
|
write = (page: byte, off: byte, val: byte) => {
|
||||||
|
this.data[page << 8 | off] = val;
|
||||||
|
};
|
||||||
|
}
|
6
test/util/asserts.ts
Normal file
6
test/util/asserts.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { byte } from "../../js/types";
|
||||||
|
|
||||||
|
export const assertByte = (b: byte) => {
|
||||||
|
expect(b <= 0xff).toEqual(true);
|
||||||
|
expect(b >= 0x00).toEqual(true);
|
||||||
|
};
|
56
test/util/bios.ts
Normal file
56
test/util/bios.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import { MemoryPages, byte } from "../../js/types";
|
||||||
|
import { assertByte } from "./asserts";
|
||||||
|
|
||||||
|
export class Program implements MemoryPages {
|
||||||
|
private data: Buffer;
|
||||||
|
|
||||||
|
constructor(private page: byte, code: byte[]) {
|
||||||
|
this.data = Buffer.from(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return this.page;
|
||||||
|
}
|
||||||
|
|
||||||
|
end() {
|
||||||
|
return this.page;
|
||||||
|
}
|
||||||
|
|
||||||
|
read(page: byte, off: byte) {
|
||||||
|
assertByte(page);
|
||||||
|
assertByte(off);
|
||||||
|
return this.data[off];
|
||||||
|
}
|
||||||
|
|
||||||
|
write(_page: byte, _off: byte, _val: byte) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const bios = new Program(
|
||||||
|
0xff,
|
||||||
|
[
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x45, 0x4c, 0x4c,
|
||||||
|
0x4f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||||
|
0x00, 0x04, 0x00, 0xff,
|
||||||
|
]
|
||||||
|
);
|
34
test/util/cpu.ts
Normal file
34
test/util/cpu.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import { flags, CpuState } from "js/cpu6502";
|
||||||
|
import { byte } from "js/types";
|
||||||
|
import { toHex } from "js/util";
|
||||||
|
|
||||||
|
export const dumpStatusRegister = (sr: byte) =>
|
||||||
|
[
|
||||||
|
sr & flags.N ? "N" : "-",
|
||||||
|
sr & flags.V ? "V" : "-",
|
||||||
|
sr & flags.X ? "X" : "-",
|
||||||
|
sr & flags.B ? "B" : "-",
|
||||||
|
sr & flags.D ? "D" : "-",
|
||||||
|
sr & flags.I ? "I" : "-",
|
||||||
|
sr & flags.Z ? "Z" : "-",
|
||||||
|
sr & flags.C ? "C" : "-",
|
||||||
|
].join("");
|
||||||
|
|
||||||
|
const detail = !!process.env.JEST_DETAIL;
|
||||||
|
|
||||||
|
export function toReadableState(state: CpuState) {
|
||||||
|
if (detail) {
|
||||||
|
const { pc, sp, a, x, y, s } = state;
|
||||||
|
|
||||||
|
return {
|
||||||
|
pc: toHex(pc, 4),
|
||||||
|
sp: toHex(sp),
|
||||||
|
a: toHex(a),
|
||||||
|
x: toHex(x),
|
||||||
|
y: toHex(y),
|
||||||
|
s: dumpStatusRegister(s),
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
}
|
60
test/util/memory.ts
Normal file
60
test/util/memory.ts
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
import { MemoryPages, byte, word } from "js/types";
|
||||||
|
import { assertByte } from "./asserts";
|
||||||
|
|
||||||
|
export type Log = [address: word, value: byte, types: "read" | "write"];
|
||||||
|
export class TestMemory implements MemoryPages {
|
||||||
|
private data: Buffer;
|
||||||
|
private logging: boolean = false;
|
||||||
|
private log: Log[] = [];
|
||||||
|
|
||||||
|
constructor(private size: number) {
|
||||||
|
this.data = Buffer.alloc(size << 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
end() {
|
||||||
|
return this.size - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
read(page: byte, off: byte) {
|
||||||
|
assertByte(page);
|
||||||
|
assertByte(off);
|
||||||
|
|
||||||
|
const val = this.data[(page << 8) | off];
|
||||||
|
if (this.logging) {
|
||||||
|
this.log.push([(page << 8) | off, val, "read"]);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
write(page: byte, off: byte, val: byte) {
|
||||||
|
assertByte(page);
|
||||||
|
assertByte(off);
|
||||||
|
assertByte(val);
|
||||||
|
|
||||||
|
if (this.logging) {
|
||||||
|
this.log.push([(page << 8) | off, val, "write"]);
|
||||||
|
}
|
||||||
|
this.data[(page << 8) | off] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
reset() {
|
||||||
|
this.log = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
logStart() {
|
||||||
|
this.log = [];
|
||||||
|
this.logging = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
logStop() {
|
||||||
|
this.logging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
getLog() {
|
||||||
|
return this.log;
|
||||||
|
}
|
||||||
|
}
|
43
tsconfig.json
Normal file
43
tsconfig.json
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"jsx": "react",
|
||||||
|
"jsxFactory": "h",
|
||||||
|
"jsxFragmentFactory": "Fragment",
|
||||||
|
"module": "esnext",
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"target": "es6",
|
||||||
|
"lib": ["DOM", "ES6"],
|
||||||
|
"strict": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"exactOptionalPropertyTypes": true,
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"outDir": "dist",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"allowJs": true,
|
||||||
|
"paths": {
|
||||||
|
"*": [
|
||||||
|
"node_modules/*",
|
||||||
|
"types/*"
|
||||||
|
],
|
||||||
|
"js/*": [
|
||||||
|
"js/*"
|
||||||
|
],
|
||||||
|
"json/*": [
|
||||||
|
"json/*"
|
||||||
|
],
|
||||||
|
"test/*": [
|
||||||
|
"test/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"js/**/*",
|
||||||
|
"test/**/*",
|
||||||
|
"types/**/*",
|
||||||
|
"*.config.js"
|
||||||
|
]
|
||||||
|
}
|
@ -9,9 +9,25 @@ module.exports =
|
|||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
path: path.resolve('dist/'),
|
path: path.resolve('dist/'),
|
||||||
library: 'Apple1',
|
},
|
||||||
libraryExport: 'Apple1',
|
module: {
|
||||||
libraryTarget: 'var'
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.ts$/i,
|
||||||
|
use: [
|
||||||
|
{
|
||||||
|
loader: 'ts-loader'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
exclude: /node_modules/,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.ts', '.js'],
|
||||||
|
alias: {
|
||||||
|
js: path.resolve(__dirname, 'js/')
|
||||||
|
}
|
||||||
},
|
},
|
||||||
devServer: {
|
devServer: {
|
||||||
compress: true,
|
compress: true,
|
||||||
|
Loading…
Reference in New Issue
Block a user