diff --git a/Icon.png b/Icon.png new file mode 100644 index 0000000..7065cd8 Binary files /dev/null and b/Icon.png differ diff --git a/IconBig.png b/IconBig.png new file mode 100644 index 0000000..39465b0 Binary files /dev/null and b/IconBig.png differ diff --git a/appWindow.go b/appWindow.go index a38a7f7..227d042 100644 --- a/appWindow.go +++ b/appWindow.go @@ -21,6 +21,8 @@ import ( func mainWindow(computer *okean240.ComputerType, config *config.OkEmuConfig) (*fyne.Window, *canvas.Raster, *widget.Label) { emulatorApp := app.New() w := emulatorApp.NewWindow("Океан 240.2") + + // Handle all keys typed in main window canvas w.Canvas().SetOnTypedKey( func(key *fyne.KeyEvent) { computer.PutKey(key) @@ -33,6 +35,7 @@ func mainWindow(computer *okean240.ComputerType, config *config.OkEmuConfig) (*f addShortcuts(w.Canvas(), computer) + // --- label := widget.NewLabel(fmt.Sprintf("Screen size: %dx%d", computer.ScreenWidth(), computer.ScreenHeight())) raster := canvas.NewRasterWithPixels( @@ -49,15 +52,20 @@ func mainWindow(computer *okean240.ComputerType, config *config.OkEmuConfig) (*f raster.SetMinSize(fyne.NewSize(512, 512)) centerRaster := container.NewCenter(raster) - w.Resize(fyne.NewSize(600, 600)) - vBox := container.NewVBox( + //vBox := container.NewVBox( + // newToolbar(computer, w, emulatorApp, config), + // centerRaster, + // label, + //) + vBox := container.NewBorder( newToolbar(computer, w, emulatorApp, config), - centerRaster, label, + nil, + nil, + centerRaster, ) - w.SetContent(vBox) return &w, raster, label @@ -86,40 +94,37 @@ func newToolbar(c *okean240.ComputerType, w fyne.Window, a fyne.App, config *con } hBox.Add(widget.NewButtonWithIcon("1", theme.DownloadIcon(), func() { - c.SetRamBytes(ramBytes1) - })) - hBox.Add(widget.NewSeparator()) - hBox.Add(widget.NewButtonWithIcon("2", theme.DownloadIcon(), func() { - c.SetRamBytes(ramBytes2) + c.SetRamBytes(ramBytes) })) + hBox.Add(widget.NewSeparator()) hBox.Add(widget.NewButtonWithIcon("^C", theme.MediaStopIcon(), func() { c.PutCtrlKey(0x03) })) hBox.Add(widget.NewSeparator()) - cbFreq := widget.NewCheck("Fmax", func(checked bool) { - fullSpeed.Store(checked) - if checked { - c.SetCPUFrequency(25_000_000) - } else { - c.SetCPUFrequency(2_500_000) - } - }) - //bNorm := widget.NewButtonWithIcon("", theme.MediaPlayIcon(), func() { - // fullSpeed.Store(false) - // c.SetCPUFrequency(2_500_000) - // //bNorm.Disable() - // - //}) - //bFast := widget.NewButtonWithIcon("", theme.MediaFastForwardIcon(), func() { - // fullSpeed.Store(true) - // c.SetCPUFrequency(50_000_000) - // bNorm.Enable() - // //bFast.Disable() - //}) + bNorm := widget.NewButtonWithIcon("", theme.MediaPlayIcon(), nil) + bFast := widget.NewButtonWithIcon("", theme.MediaFastForwardIcon(), nil) + + bFast.OnTapped = func() { + fullSpeed.Store(true) + c.SetCPUFrequency(50_000_000) + bNorm.Enable() + bFast.Disable() + } + + bNorm.OnTapped = func() { + fullSpeed.Store(false) + c.SetCPUFrequency(2_500_000) + bNorm.Disable() + bFast.Enable() + } + + bNorm.Disable() + + //hBox.Add(cbFreq) + hBox.Add(bNorm) + hBox.Add(bFast) - hBox.Add(cbFreq) - //hBox.Add(bFast) hBox.Add(widget.NewSeparator()) hBox.Add(widget.NewButtonWithIcon("", theme.SettingsIcon(), func() { cfg := config.Clone() diff --git a/bin/2048.com b/bin/2048.com new file mode 100644 index 0000000..0a05bf0 Binary files /dev/null and b/bin/2048.com differ diff --git a/bin/ANTIX.BAS b/bin/ANTIX.BAS new file mode 100644 index 0000000..af415e9 --- /dev/null +++ b/bin/ANTIX.BAS @@ -0,0 +1,27 @@ +10 CLS 0:SCRN 4,3:COLOR 1:P=2:R=1:C=210:D=120:E=40:F=10:INPUT N +20 CURS 40,10:RECT 211,120:X=127:Y=120:COLOR 1:A=40:B=30:B1=20:A1=80:P1=2:R1=2 +30 CURS X,Y:PLOT X,Y +40 A$=INKEY$ +50 IF A=>C THEN P=-N +55 IF A1=>C THEN P1=-N +60 IF B=>D THEN R=-N +65 IF B1=>D THEN R1=-N +70 IF A<=E THEN P=N +75 IF A1<=E THEN P1=N +80 IF B<=F+N THEN R=N +85 IF B1<=F+N THEN R1=N +90 COLOR 1:CURS A,B:PLOT A,B:A=A+P:B=B+R:COLOR 3 +100 CURS A,B:PLOT A,B:COLOR 1:CURS A1,B1:PLOT A1,B1 +105 A1=A1+P1:B1=B1+R1:COLOR 3:CURS A1,B1:PLOT A1,B1 +110 CURS X,Y +120 IF A$=CHR$(48) THEN 160:REM *** Y *** +130 IF A$=CHR$(54) THEN 170:REM *** => *** +140 IF A$=CHR$(53) THEN 180:REM *** ^ *** +150 IF A$=CHR$(52) THEN 190 ELSE 40:REM *** <= *** +160 IF Y=F GOTO 210 ELSE Y=Y-N:GOTO 200 +170 IF X=C GOTO 40 ELSE X=X+N:GOTO 200 +180 IF Y=D GOTO 40 ELSE Y=Y+N:GOTO 200 +190 IF X=E GOTO 40 ELSE X=X-N +200 PLOT X,Y:GOTO 40 +210 IF C-X<=10 THEN 40 ELSE C=X-1:GOTO 200 + \ No newline at end of file diff --git a/bin/ASM.COM b/bin/ASM.COM new file mode 100644 index 0000000..a63e5ae Binary files /dev/null and b/bin/ASM.COM differ diff --git a/bin/DDT.COM b/bin/DDT.COM new file mode 100644 index 0000000..83f8603 Binary files /dev/null and b/bin/DDT.COM differ diff --git a/bin/DEMO.BAS b/bin/DEMO.BAS new file mode 100644 index 0000000..eac7f73 --- /dev/null +++ b/bin/DEMO.BAS @@ -0,0 +1,23 @@ +10 CLS 0:SCRN 4,0:COLOR 2:CURS 255,120:PLOT 0,120 +20 COLOR 3:FOR I=0 TO 255:PLOT I,SIN(I/10)*100+120:NEXT +30 FOR I=255 TO 0 STEP -1:PLOT I,COS(I/10)*100+120:NEXT +40 COLOR 2:FOR I=0 TO 255:PLOT I,SIN(I/10)*100+120 +50 PLOT I,COS(I/10)*100+120:NEXT:A$=INPUT$(1) +60 CLS 8:SCRN 4,0:COLOR 2:CURS 255,120:PLOT 0,120 +70 COLOR 3:FOR I=0 TO 255:PLOT I,SIN(I/81)*100+120:NEXT +80 FOR I=0 TO 255:PLOT -I+255,COS(I/81)*100+120:NEXT +90 FOR I=0 TO 255:Y=TAN(I/81)*10+120:IF Y<0 THEN Y=0 +100 IF Y>255 THEN Y=255 +110 PLOT I,Y:NEXT:A$=INPUT$(1) +120 CLS 0:SCRN 4,0:COLOR 3 +130 CURS 50,50:PLOT 49,201:PLOT 201,201:PLOT 201,49:PLOT 49,49 +140 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT 50,I +150 CURS 125,125:COLOR 1:PLOT 50,I+10:FOR J=0 TO 900:NEXT:NEXT +160 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT I,200 +170 CURS 125,125:COLOR 1:PLOT I+10,200:FOR J=0 TO 900:NEXT:NEXT +180 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT 200,-I+250 +190 CURS 125,125:COLOR 1:PLOT 200,-I+240:FOR J=0 TO 900:NEXT +200 NEXT +210 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT -I+250,50 +220 CURS 125,125:COLOR 1:PLOT -I+240,50:FOR J=0 TO 900:NEXT:NEXT + \ No newline at end of file diff --git a/bin/DUMP.COM b/bin/DUMP.COM new file mode 100644 index 0000000..03a77c3 Binary files /dev/null and b/bin/DUMP.COM differ diff --git a/bin/ED.COM b/bin/ED.COM new file mode 100644 index 0000000..c84657a Binary files /dev/null and b/bin/ED.COM differ diff --git a/bin/ED1.COM b/bin/ED1.COM new file mode 100644 index 0000000..a0f0f54 Binary files /dev/null and b/bin/ED1.COM differ diff --git a/bin/FORMAT.COM b/bin/FORMAT.COM new file mode 100644 index 0000000..3ba1b10 Binary files /dev/null and b/bin/FORMAT.COM differ diff --git a/bin/GONKI.BAS b/bin/GONKI.BAS new file mode 100644 index 0000000..f91b427 --- /dev/null +++ b/bin/GONKI.BAS @@ -0,0 +1,22 @@ +10 CLS 4:SCRN 0,3:PRINT "tarakanxi bega":A=RND +20 INPUT "na kakogo tarakana wy stawite ";T:IF T>5 GOTO 20 +30 PRINT CHR$(31);"******* tarakanxi bega *******" +40 PRINT "-----------------------------------------" +50 FOR I=1 TO 5:N(I)=2:NEXT:GOSUB 100 +60 PRINT "-----------------------------------------" +70 FOR I=1 TO 5+T:N(I)=N(I)+RND(A):OUT 242,8:OUT 242,0:NEXT +80 PRINT CHR$(12):PRINT:GOSUB 100:PRINT:C=C+1 +85 IF C/2=INT(C/2) THEN PRINT "!dawaj wasq!" ELSE PRINT " " +86 FOR I=1 TO 5 +90 IF N(I)=>39 THEN 150 ELSE NEXT:RANDOMIZE A:GOTO 70 +100 PRINT "1";TAB(N(1))"O<";TAB(42)"f" +110 PRINT "2";TAB(N(2))"O<";TAB(42)"i" +120 PRINT "3";TAB(N(3))"*<";TAB(42)"n" +130 PRINT "4";TAB(N(4))"O<";TAB(42)"i" +140 PRINT "5";TAB(N(5))"O<";TAB(42)"{":RETURN +150 PRINT CHR$(7);CHR$(7):PRINT +160 PRINT "wyigral tarakan so startowym nomerom ";I +170 FOR J=1 TO 2000:NEXT:IF I=T GOTO 190 ELSE PRINT "ha-ha" +180 PRINT "e}e razok poprobuem":GOTO 20 +190 PRINT "wa{a wzqla":GOTO 180 + \ No newline at end of file diff --git a/bin/JACK.COM b/bin/JACK.COM new file mode 100644 index 0000000..1383f38 Binary files /dev/null and b/bin/JACK.COM differ diff --git a/bin/L80.COM b/bin/L80.COM new file mode 100644 index 0000000..82f5866 Binary files /dev/null and b/bin/L80.COM differ diff --git a/bin/LIB.COM b/bin/LIB.COM new file mode 100644 index 0000000..45d7fb2 Binary files /dev/null and b/bin/LIB.COM differ diff --git a/bin/LINK.COM b/bin/LINK.COM new file mode 100644 index 0000000..e188fb9 Binary files /dev/null and b/bin/LINK.COM differ diff --git a/bin/LOAD.COM b/bin/LOAD.COM new file mode 100644 index 0000000..0da8627 Binary files /dev/null and b/bin/LOAD.COM differ diff --git a/bin/M80.COM b/bin/M80.COM new file mode 100644 index 0000000..d64eebd Binary files /dev/null and b/bin/M80.COM differ diff --git a/bin/MAC.COM b/bin/MAC.COM new file mode 100644 index 0000000..f49e835 Binary files /dev/null and b/bin/MAC.COM differ diff --git a/bin/MB.COM b/bin/MB.COM new file mode 100644 index 0000000..0608982 Binary files /dev/null and b/bin/MB.COM differ diff --git a/bin/MOVCPM.COM b/bin/MOVCPM.COM new file mode 100644 index 0000000..30f3701 Binary files /dev/null and b/bin/MOVCPM.COM differ diff --git a/bin/MUZA.BAS b/bin/MUZA.BAS new file mode 100644 index 0000000..403acae --- /dev/null +++ b/bin/MUZA.BAS @@ -0,0 +1,41 @@ +10 DIM A%(1000):CLS 0:SCRN 0,0:COLOR 1:RECT 100,10 +20 COLOR 3:N%=1:PRINT CHR$(12);" MYUZIK SINTEZATOR" +30 A$=INKEY$:IF A$="" THEN 70 +40 A=(ASC(A$)-47):IF A>9 THEN 90 ELSE A%(N%)=A+1 +50 ON A GOSUB 200,210,220,240,260,280,310,340,380,420 +60 N%=N%+1:GOTO 30 +70 CURS 0,0:RECT N%*.1,10:IF N%=1 THEN 30 +80 FOR I=0 TO 20:NEXT I:A%(N%)=0:N%=N%+1:GOTO 30 +90 COLOR 1:IF N%=1 THEN N%=N1% ELSE N1%=N% +100 FOR N=1 TO N%:A=A%(N)-1 +110 L=L+1:L=L+1:IF A<0 THEN 140 +120 ON A GOSUB 200,210,220,240,260,280,310,340,380,420 +140 CURS 0,0:RECT N*.1,10 +150 NEXT N:GOTO 20 +200 FOR I=0 TO 70:E=2:OUT 242,8:OUT 242,0:NEXT:RETURN +210 FOR I=0 TO 50:E=1:E=2:OUT 242,8:OUT 242,0:NEXT:RETURN +220 FOR I=0 TO 40:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +230 NEXT:RETURN +240 FOR I=0 TO 35:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +250 OUT 242,8:OUT 242,0:NEXT:RETURN +260 FOR I=0 TO 30:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +270 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:NEXT:RETURN +280 FOR I=0 TO 19:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +290 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8 +300 OUT 242,0:NEXT:RETURN +310 FOR I=0 TO 16:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +320 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8 +330 OUT 242,0:OUT 242,8:OUT 242,0:NEXT:RETURN +340 FOR I=0 TO 13:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +350 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8 +360 OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +370 NEXT:RETURN +380 FOR I=0 TO 10:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +390 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8 +400 OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +410 OUT 242,8:OUT 242,0:NEXT:RETURN +420 FOR I=0 TO 10:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0 +430 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8 +440 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8 +450 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:NEXT:RETURN + \ No newline at end of file diff --git a/bin/PIP.COM b/bin/PIP.COM new file mode 100644 index 0000000..4b2ce4b Binary files /dev/null and b/bin/PIP.COM differ diff --git a/bin/PLOT.BAS b/bin/PLOT.BAS new file mode 100644 index 0000000..9254dd0 --- /dev/null +++ b/bin/PLOT.BAS @@ -0,0 +1,22 @@ +10 REM **** LEXA CORP. *** DEMO PLOT **** +20 CLS 0:SCRN 4,0:N=5:COLOR 2:RECT 255,255:GOSUB 50 +30 FOR I=0 TO 255 STEP 1:COLOR 0:CURS 0,I:PLOT 255,I:NEXT +40 GOSUB 50:N=5:GOSUB 110:GOTO 80 +50 OUT 3,128:OUT 1,1:FOR I=1 TO 3000:NEXT:OUT 1,0:RETURN +60 FOR I=A TO B STEP N:COLOR I:CURS H,Z:PLOT X,I:NEXT:RETURN +70 FOR I=A TO B STEP N:COLOR I:CURS H,Z:PLOT I,Y:NEXT:RETURN +80 COLOR 1:P=5:GOSUB 130:GOSUB 50:P=1:GOSUB 130:GOSUB 50 +90 FOR I=255 TO 0 STEP -1:COLOR I:CURS 0,I:PLOT 255,I +100 OUT 242,8:OUT 242,0:NEXT:N=1:GOSUB 50:GOSUB 110:GOTO 30 +110 H=128:Z=128:A=0:B=255:X=0:GOSUB 60:Y=255:GOSUB 70:A=255 +120 B=0:N=-N:X=255:GOSUB 60:B=2:Y=0:GOSUB 70:GOSUB 50:RETURN +130 A=64:B=192:X=128:Y=220:GOSUB 180:X=255:Y=255:GOSUB 180 +140 A=192:B=64:P=-P:X=0:GOSUB 180:A=64:B=192:P=-P:X=255:Y=120 +150 GOSUB 180:A=192:B=64:P=-P:X=0:Y=120:GOSUB 180 +160 GOSUB 50:SCRN 0,0:COLOR 3:CURS 64,0:RECT 192,10 +170 CURS 85,230:GPRINT "SUPPER STAR":RETURN +180 FOR I=A TO B STEP P:COLOR I:CURS X,Y:PLOT I,0:NEXT:RETURN +190 FOR I=0 TO 255:COLOR I:CURS I,0:PLOT I,255:NEXT +R":RETURN +180 FOR I=A TO B STEP P:COLOR I:CURS X,Y:PLOT I,0:NEXT:RETURN +190 FOR I=0 TO \ No newline at end of file diff --git a/bin/PW.COM b/bin/PW.COM new file mode 100644 index 0000000..9837455 Binary files /dev/null and b/bin/PW.COM differ diff --git a/bin/RD.BAS b/bin/RD.BAS new file mode 100644 index 0000000..f7bbfbd --- /dev/null +++ b/bin/RD.BAS @@ -0,0 +1,20 @@ +10 REM **** Program READ **** +20 CLS 2:SCRN 0,0:INPUT "READ: FILE-1 OR MEMORY-0";R +30 DIM A$(32),N(16):PRINT CHR$(31):IF R=0 GOTO 110 +40 INPUT "FILE";FIL$:OPEN "I",#1,FIL$ +45 REM ** READ FILE ** +50 FOR I=1 TO 16:A$=INPUT$(1,#1):B=B+1 +60 A=ASC(A$):IF A<16 THEN PRINT "0"; ELSE PRINT HEX$(A); +70 IF A$>CHR$(32) THEN 80 ELSE A$=" " +80 IF A$>CHR$(127) AND A$127 AND N(I)<160 THEN N(I)=0 +160 IF CHR$(N(I))<" " THEN PRINT " "; ELSE PRINT CHR$(N(I)); +170 NEXT I + \ No newline at end of file diff --git a/bin/RES.COM b/bin/RES.COM new file mode 100644 index 0000000..1df3617 Binary files /dev/null and b/bin/RES.COM differ diff --git a/bin/STAT.COM b/bin/STAT.COM new file mode 100644 index 0000000..60c5484 Binary files /dev/null and b/bin/STAT.COM differ diff --git a/bin/SUBMIT.COM b/bin/SUBMIT.COM new file mode 100644 index 0000000..6cc609b Binary files /dev/null and b/bin/SUBMIT.COM differ diff --git a/bin/SYSGEN.COM b/bin/SYSGEN.COM new file mode 100644 index 0000000..8842e35 Binary files /dev/null and b/bin/SYSGEN.COM differ diff --git a/bin/TET.COM b/bin/TET.COM new file mode 100644 index 0000000..2a6d6cf Binary files /dev/null and b/bin/TET.COM differ diff --git a/bin/TM.COM b/bin/TM.COM new file mode 100644 index 0000000..bc86fc5 Binary files /dev/null and b/bin/TM.COM differ diff --git a/bin/TYPE.COM b/bin/TYPE.COM new file mode 100644 index 0000000..9af4a5f Binary files /dev/null and b/bin/TYPE.COM differ diff --git a/bin/WM.COM b/bin/WM.COM new file mode 100644 index 0000000..a2ba008 Binary files /dev/null and b/bin/WM.COM differ diff --git a/bin/XSUB.COM b/bin/XSUB.COM new file mode 100644 index 0000000..15e86ab Binary files /dev/null and b/bin/XSUB.COM differ diff --git a/bin/catchum.com b/bin/catchum.com new file mode 100644 index 0000000..27010be Binary files /dev/null and b/bin/catchum.com differ diff --git a/bin/catchum.dat b/bin/catchum.dat new file mode 100644 index 0000000..ca43d58 Binary files /dev/null and b/bin/catchum.dat differ diff --git a/bin/main.com b/bin/main.com new file mode 100644 index 0000000..da16925 Binary files /dev/null and b/bin/main.com differ diff --git a/bin/zexall.com b/bin/zexall.com new file mode 100644 index 0000000..fa0e6ff Binary files /dev/null and b/bin/zexall.com differ diff --git a/bin/zexdoc.com b/bin/zexdoc.com new file mode 100644 index 0000000..5cfd531 Binary files /dev/null and b/bin/zexdoc.com differ diff --git a/debug/breakpoint/breakpoint.go b/debug/breakpoint/breakpoint.go index 11b7562..87f094d 100644 --- a/debug/breakpoint/breakpoint.go +++ b/debug/breakpoint/breakpoint.go @@ -11,7 +11,9 @@ import ( log "github.com/sirupsen/logrus" ) -const MaxBreakpoints = 256 +const MaxBreakpoints = 16383 +const BpTmp1 = MaxBreakpoints + 1 +const BpTmp2 = MaxBreakpoints + 2 const ( BPTypeSimplePC = iota // Simple PC=nn breakpoint @@ -27,6 +29,7 @@ type Breakpoint struct { pass uint16 passCount uint16 enabled bool + mBank uint8 } var andMatch = regexp.MustCompile(`\s+AND\s+`) @@ -82,13 +85,14 @@ func getSecondUint16(param string, sep string) (uint16, error) { return uint16(a), nil } -func NewBreakpoint(expr string) (*Breakpoint, error) { +func NewBreakpoint(expr string, mBank uint8) (*Breakpoint, error) { bp := Breakpoint{ addr: 0, enabled: false, passCount: 0, pass: 0, bpType: BPTypeSimplePC, + mBank: mBank, } // Check if BP is simple PC=addr @@ -209,13 +213,13 @@ func (b *Breakpoint) Hit(ctx map[string]interface{}) bool { if b.bpType == BPTypeSimplePC { pc := getUint16("PC", ctx) if pc == b.addr { - log.Debugf("Breakpoint Hit PC=%04X", b.addr) + log.Debugf("Breakpoint Hit PC=0x%04X", b.addr) } return pc == b.addr } else if b.bpType == BPTypeSimpleSP { sp := getUint16("SP", ctx) if sp >= b.addr { - log.Debugf("Breakpoint Hit SP>=%04X", b.addr) + log.Debugf("Breakpoint Hit SP>=0x%04X", b.addr) } return sp >= b.addr } @@ -246,3 +250,7 @@ func (b *Breakpoint) SetExpression(expression string) error { func (b *Breakpoint) Expression() string { return b.cond } + +func (b *Breakpoint) MBank() uint8 { + return b.mBank +} diff --git a/debug/debuger.go b/debug/debuger.go index db1dd44..2b10ba3 100644 --- a/debug/debuger.go +++ b/debug/debuger.go @@ -138,15 +138,38 @@ func (d *Debugger) BreakpointsEnabled() bool { } // SetBreakpoint Create new breakpoint with specified number -func (d *Debugger) SetBreakpoint(number uint16, exp string) error { +func (d *Debugger) SetBreakpoint(number uint16, exp string, mBank uint8) error { var err error - bp, err := breakpoint.NewBreakpoint(exp) + bp, err := breakpoint.NewBreakpoint(exp, mBank) if err == nil && bp != nil { d.breakpoints[number] = bp } return err } +func (d *Debugger) AddBreakpoint(exp string, mBank uint8) (uint16, error) { + var err error + bpNo := d.GetBreakpointNum() + if bpNo < breakpoint.MaxBreakpoints { + bp, err := breakpoint.NewBreakpoint(exp, mBank) + if err == nil && bp != nil { + bp.SetEnabled(true) + d.breakpoints[bpNo] = bp + } + } + return bpNo, err +} + +func (d *Debugger) GetBreakpointNum() uint16 { + num := uint16(1) + for no, bp := range d.breakpoints { + if bp != nil && no < breakpoint.MaxBreakpoints && num <= no { + num = no + 1 + } + } + return num +} + func (d *Debugger) SetBreakpointPassCount(number uint16, count uint16) { bp, ok := d.breakpoints[number] if ok && bp != nil { @@ -170,6 +193,14 @@ func (d *Debugger) BreakpointEnabled(number uint16) bool { return false } +func (d *Debugger) BreakpointMBank(number uint16) uint8 { + bp, ok := d.breakpoints[number] + if ok && bp != nil { + return bp.MBank() + } + return 1 +} + func (d *Debugger) ClearMemBreakpoints() { for c := 0; c < 65536; c++ { d.memBreakpoints[c] = 0 @@ -207,6 +238,10 @@ func (d *Debugger) SetMemBreakpoint(address uint16, typ byte, size uint16) { } } +func (d *Debugger) RemoveBreakpoint(number uint16) { + delete(d.breakpoints, number) +} + func (d *Debugger) CheckMemBreakpoints(accessMap *map[uint16]byte) (bool, uint16, byte) { if !d.breakpointsEnabled { return false, 0, 0 @@ -223,3 +258,7 @@ func (d *Debugger) CheckMemBreakpoints(accessMap *map[uint16]byte) (bool, uint16 } return false, 0, 0 } + +func (d *Debugger) ClearBreakpoints() { + clear(d.breakpoints) +} diff --git a/debug/dzrp/dzrp.go b/debug/dzrp/dzrp.go new file mode 100644 index 0000000..5c2dce9 --- /dev/null +++ b/debug/dzrp/dzrp.go @@ -0,0 +1,556 @@ +package dzrp + +import ( + "bufio" + "errors" + "fmt" + "io" + "net" + "okemu/config" + "okemu/debug" + "okemu/debug/breakpoint" + "okemu/okean240" + "okemu/z80/dis" + "strconv" + + log "github.com/sirupsen/logrus" +) + +type DZRP struct { + port string + config *config.OkEmuConfig + debugger *debug.Debugger + disassembler *dis.Disassembler + computer *okean240.ComputerType + conn net.Conn + reader *bufio.Reader + writer *bufio.Writer + cmd *Command +} + +// SetupTcpHandler Setup TCP listener, handle connections + +func NewDZRP(config *config.OkEmuConfig, debug *debug.Debugger, dissasm *dis.Disassembler, comp *okean240.ComputerType) *DZRP { + return &DZRP{ + port: config.Debugger.Host + ":" + strconv.Itoa(config.Debugger.Port), + debugger: debug, + disassembler: dissasm, + computer: comp, + } +} + +func (p *DZRP) SetupTcpHandler() { + + var err error + var l net.Listener + + l, err = net.Listen("tcp4", p.port) + if err != nil { + fmt.Println(err) + return + } + + defer func(l net.Listener) { + err := l.Close() + if err != nil { + log.Warnf("Error closing listener connection %v", err) + } + }(l) + + log.Infof("Ready for debugger connections on %s", p.port) + for { + p.conn, err = l.Accept() + if err != nil { + log.Errorf("Accept connection: %v", err) + return + } + go p.handleConnection() + } + +} + +// Receive messages, split to strings and parse +func (p *DZRP) handleConnection() { + p.reader = bufio.NewReader(p.conn) + p.writer = bufio.NewWriter(p.conn) + var command Command + n := 0 + for { + // receive command packet byte by byte + b, err := p.reader.ReadByte() + if err != nil { + if err == io.EOF { + break + } else { + log.Errorf("TCP error: %v", err) + p.debugger.SetStepMode(false) + return + } + } + switch n { + case 0: + command.Len = uint32(b) + case 1: + command.Len |= uint32(b) << 8 + case 2: + command.Len |= uint32(b) << 16 + case 3: + command.Len |= uint32(b) << 24 + case 4: + command.Sn = b + case 5: + command.Id = b + default: + command.Payload = append(command.Payload, b) + } + if n >= 5 && int(command.Len) == len(command.Payload) { + p.cmd = &command + if p.handleCommand() { + break + } + command.Len = 0 + command.Payload = []uint8{} + n = 0 + } else { + n++ + } + } + log.Debug("Closing connection") + + p.debugger.SetStepMode(false) + _ = p.writer.Flush() + p.writer = nil + p.reader = nil + err := p.conn.Close() + if err != nil { + log.Warnf("Can not close TCP socket: %v", err) + } +} + +// writeResponse Write response to command back to client +func (p *DZRP) writeResponse(response *Response) error { + // log.Infof("Ready for debugger connections on %s", port) + // Send Len + l := response.Len + for c := 0; c < 4; c++ { + e := p.writer.WriteByte(byte(l)) + if e != nil { + log.Warnf("Error writing Len: %v", e) + } + l = l >> 8 + } + // Send Sn + e := p.writer.WriteByte(response.Sn) + if e != nil { + log.Warnf("Error writing Sn: %v", e) + return e + } + // Send Payload + for _, b := range response.Payload { + e := p.writer.WriteByte(b) + if e != nil { + log.Warnf("Error writing payload: %v", e) + return e + } + } + e = p.writer.Flush() + if e != nil { + log.Warnf("Error flushing response: %v", e) + return e + } + return nil +} + +// BreakpointHit Send notification message to Dezog on BP Hit +func (p *DZRP) BreakpointHit(number uint16, typ byte) { + // turn off temporary breakpoints on any hit + p.debugger.SetBreakpointEnabled(breakpoint.BpTmp1, false) + p.debugger.SetBreakpointEnabled(breakpoint.BpTmp2, false) + if p.writer != nil { + err := p.writeResponse(p.buildBpHitResponse(number, typ)) + if err != nil { + log.Warnf("NTF_PAUSE, write response err: %v", err) + } + } else { + log.Warn("NTF_PAUSE, writer is nil") + } +} + +func (p *DZRP) buildBpHitResponse(number uint16, typ byte) *Response { + bpReason, bpAddr, mBank := p.getBpReasonAndAddr(number, typ) + rsn := getBpReason(bpReason, bpAddr) + // msg - ASCIIZ bytes + msg := []byte(rsn) + msg = append(msg, byte(0)) + + rep := []byte{ + 1, // NTF_PAUSE + bpReason, + byte(bpAddr), byte(bpAddr >> 8), + mBank, // bank + } + rep = append(rep, msg...) + + log.Debugf("NTF_PAUSE %s resp: %v", rsn, PayloadToString(rep)) + + return &Response{ + Len: uint32(len(rep) + 1), + Sn: 0, + Payload: rep, + } +} + +// handleCommand Handle command received from client, return true if last command is CMD_CLOSE +func (p *DZRP) handleCommand() bool { + log.Debugf("Handling command: %s", p.cmd.toString()) + var err error + var resp *Response + handler, ok := commandHandlers[int(p.cmd.Id)] + if ok { + resp, err = handler(p) + } else { + //resp = NewResponse(p.cmd, nil) + err = errors.New("unknown command Id: " + strconv.Itoa(int(p.cmd.Id))) + } + if err == nil { + err = p.writeResponse(resp) + } + if err != nil { + log.Errorf("Error handling command: %v", err) + } + return p.cmd.Id == CMD_CLOSE +} + +type CommandHandler func(*DZRP) (*Response, error) + +var commandHandlers = map[int]CommandHandler{ + CMD_INIT: (*DZRP).handleCmdInit, //1 + CMD_CLOSE: (*DZRP).handleCmdClose, //2 + CMD_GET_REGISTERS: (*DZRP).handleCmdGetRegisters, //3 + CMD_SET_REGISTER: (*DZRP).handleCmdSetRegister, //4 + CMD_CONTINUE: (*DZRP).handleCmdContinue, //6 + CMD_PAUSE: (*DZRP).handleCmdPause, // 7 + CMD_READ_MEM: (*DZRP).handleCmdReadMem, //8 + CMD_WRITE_MEM: (*DZRP).handleCmdWriteMem, //9 + CMD_LOOPBACK: (*DZRP).handleCmdLoopback, // 15 + CMD_READ_PORT: (*DZRP).handleCmdReadPort, // 20 + CMD_WRITE_PORT: (*DZRP).handleCmdWritePort, // 21 + CMD_INTERRUPT_ON_OFF: (*DZRP).handleCmdInterruptOnOff, // 23 + CMD_ADD_BREAKPOINT: (*DZRP).handleCmdAddBreakpoint, //40 + CMD_REMOVE_BREAKPOINT: (*DZRP).handleCmdRemoveBreakpoint, //41 + +} + +func (p *DZRP) handleCmdInit() (*Response, error) { + if len(p.cmd.Payload) < 4 { + return nil, errors.New("too short payload") + } + p.debugger.SetStepMode(true) + p.debugger.SetBreakpointsEnabled(true) + p.debugger.ClearBreakpoints() + p.debugger.ClearMemBreakpoints() + + app := string(p.cmd.Payload[3 : len(p.cmd.Payload)-1]) + log.Debugf("CMD_INIT: client version %d.%d.%d App: %s", p.cmd.Payload[0], p.cmd.Payload[1], p.cmd.Payload[2], app) + + payload := []byte{0, VersionMajor, VersionMinor, VersionPatch, MachineZX128K} + payload = append(payload, []byte(AppName)...) + payload = append(payload, 0) + return NewResponse(p.cmd, payload), nil +} + +func (p *DZRP) handleCmdClose() (*Response, error) { + log.Debug("CMD_CLOSE") + return NewResponse(p.cmd, nil), nil +} + +func (p *DZRP) handleCmdPause() (*Response, error) { + log.Debug("CMD_PAUSE") + p.debugger.SetStepMode(true) + //return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil + return NewResponse(p.cmd, nil), nil +} + +func (p *DZRP) handleCmdReadMem() (*Response, error) { + if len(p.cmd.Payload) < 5 { + return nil, errors.New("too short payload") + } + addr := uint16(p.cmd.Payload[2])<<8 + uint16(p.cmd.Payload[1]) + size := uint16(p.cmd.Payload[4])<<8 + uint16(p.cmd.Payload[3]) + + log.Debugf("CMD_READ_MEM[0x%04X] len: 0x%04X", addr, size) + mem := make([]byte, size) + //mem[0] = cmd.Sn + for i := 0; i < int(size); i++ { + mem[i] = p.computer.MemRead(addr) + addr++ + } + return NewResponse(p.cmd, mem), nil +} + +func (p *DZRP) handleCmdWriteMem() (*Response, error) { + if len(p.cmd.Payload) < 4 { + return nil, errors.New("too short payload") + } + addr := uint16(p.cmd.Payload[1]) + uint16(p.cmd.Payload[2])<<8 + log.Debugf("CMD_WRITE_MEM[0x%04X] len: 0x%04X", addr, len(p.cmd.Payload)-3) + for i := 3; i < len(p.cmd.Payload); i++ { + p.computer.MemWrite(addr, p.cmd.Payload[i]) + addr++ + } + return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil +} + +func (p *DZRP) handleCmdSetRegister() (*Response, error) { + lo := p.cmd.Payload[1] + hi := p.cmd.Payload[2] + word := uint16(hi)<<8 | uint16(lo) + s := p.computer.CPUState() + + switch p.cmd.Payload[0] { + case RegPC: + s.PC = word + log.Debugf("Set PC=0x%04X", s.PC) + case RegSP: + s.SP = word + log.Debugf("Set SP=0x%04X", s.PC) + case RegAF: + s.A = hi + s.Flags.SetFlags(lo) + case RegBC: + s.B = hi + s.C = lo + case RegDE: + s.D = hi + s.E = lo + case RegHL: + s.H = hi + s.L = lo + case RegIX: + s.IX = word + case RegIY: + s.IY = word + case RegAF_: + s.AAlt = hi + s.FlagsAlt.SetFlags(lo) + case RegBC_: + s.BAlt = hi + s.CAlt = lo + case RegDE_: + s.DAlt = hi + s.EAlt = lo + case RegHL_: + s.HAlt = hi + s.LAlt = lo + case RegIM: + s.IMode = lo + case RegF: + s.Flags.SetFlags(lo) + case RegA: + s.A = lo + case RegC: + s.C = lo + case RegB: + s.B = lo + case RegE: + s.E = lo + case RegD: + s.D = lo + case RegL: + s.L = lo + case RegH: + s.H = lo + case RegIXL: + s.IX = s.IX&0xff00 | uint16(lo) + case RegIXH: + s.IX = (uint16(lo) << 8) | (s.IX & 0x00ff) + case RegIYL: + s.IY = s.IY&0xff00 | uint16(lo) + case RegIYH: + s.IY = (uint16(lo) << 8) | (s.IY & 0x00ff) + case RegF_: + s.FlagsAlt.SetFlags(lo) + case RegA_: + s.AAlt = lo + case RegC_: + s.CAlt = lo + case RegB_: + s.BAlt = lo + case RegE_: + s.EAlt = lo + case RegD_: + s.DAlt = lo + case RegL_: + s.LAlt = lo + case RegH_: + s.HAlt = lo + case RegR: + s.R = lo + case RegI: + s.I = lo + default: + return nil, errors.New("unknown register no: " + strconv.Itoa(int(p.cmd.Payload[0]))) + } + p.computer.SetCPUState(s) + //return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil + return NewResponse(p.cmd, nil), nil +} + +func (p *DZRP) handleCmdGetRegisters() (*Response, error) { + s := p.computer.CPUState() + resp := []byte{ + //p.cmd.Sn, + byte(s.PC), byte(s.PC >> 8), + byte(s.SP), byte(s.SP >> 8), + s.Flags.GetFlags(), s.A, + s.C, s.B, + s.E, s.D, + s.L, s.H, + byte(s.IX), byte(s.IX >> 8), + byte(s.IY), byte(s.IY >> 8), + s.FlagsAlt.GetFlags(), s.AAlt, + s.CAlt, s.BAlt, + s.EAlt, s.DAlt, + s.LAlt, s.HAlt, + s.R, + s.I, + s.IMode, + 0, // reserved + 0, // Nslots. The number of slots that will follow. + } + log.Debugf("CMD_GET_REGISTERS resp: %v", resp) + return NewResponse(p.cmd, resp), nil +} + +func (p *DZRP) handleCmdContinue() (*Response, error) { + + eb1 := p.cmd.Payload[0] != 0 + ab1 := (uint16(p.cmd.Payload[2]) << 8) | uint16(p.cmd.Payload[1]) + p.setTempBreakpoint(eb1, breakpoint.BpTmp1, ab1) + eb2 := p.cmd.Payload[3] != 0 + ab2 := (uint16(p.cmd.Payload[5]) << 8) | uint16(p.cmd.Payload[4]) + p.setTempBreakpoint(eb2, breakpoint.BpTmp2, ab2) + + log.Debugf("CMD_CONTINUE BP1 en: %v, addr: 0x%04X; BP2 en: %v, addr: 0x%04X; AC: 0x%02X", + eb1, ab1, eb2, ab2, p.cmd.Payload[6]) + + p.debugger.SetRunMode(true) + + //return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil + return NewResponse(p.cmd, nil), nil +} + +func (p *DZRP) setTempBreakpoint(ena bool, no uint16, addr uint16) { + if ena { + e := p.debugger.SetBreakpoint(no, fmt.Sprintf("PC=%04Xh", addr), 0) + if e != nil { + log.Debugf("setTmpBreakpoint err: %v", e) + } + p.debugger.SetBreakpointEnabled(no, true) + } else { + p.debugger.SetBreakpointEnabled(no, false) + } +} + +func (p *DZRP) getBpReasonAndAddr(number uint16, typ byte) (reason byte, addr uint16, mBank uint8) { + reason = BprStepOver // default StepOver + addr = number + mBank = uint8(1) + if typ >= 1 && typ <= 2 { // 1-rd, 2-wr + reason = typ + 2 + } else { + if number != breakpoint.BpTmp1 && number != breakpoint.BpTmp2 { + // bp hit + mBank = p.debugger.BreakpointMBank(addr) + reason = BprHit + } + addr = p.computer.CPUState().PC + } + return reason, addr, mBank +} + +func (p *DZRP) handleCmdAddBreakpoint() (*Response, error) { + if len(p.cmd.Payload) < 4 { + return nil, errors.New("too short payload") + } + addr := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0]) + mBank := p.cmd.Payload[2] + isCond := p.cmd.Payload[3] != 0 + var expr string + if isCond { + expr = string(p.cmd.Payload[3 : len(p.cmd.Payload)-3]) + } else { + expr = fmt.Sprintf("PC=%04Xh", addr) + } + log.Debugf("CMD_ADD_BREAKPOINT addr: 0x%04X, bank: %d, cond: '%s'", addr, mBank, expr) + bpNum, err := p.debugger.AddBreakpoint(expr, mBank) + if err != nil { + log.Debugf("SetBreakpoint err: %v", err) + return nil, err + } + if bpNum == breakpoint.MaxBreakpoints { + bpNum = 0 + } + //bpNum := p.debugger.GetBreakpointNum() + //if bpNum < breakpoint.MaxBreakpoints { + // err := p.debugger.SetBreakpoint(bpNum, cond, mBank) + // p.debugger.SetBreakpointEnabled(bpNum, true) + // if err != nil { + // log.Debugf("SetBreakpoint err: %v", err) + // return nil, err + // } + //} else { + // bpNum = 0 + //} + return NewResponse(p.cmd, []byte{byte(bpNum), byte(bpNum >> 8)}), nil +} + +func getBpReason(reason byte, addr uint16) string { + rsn, ok := BprReasons[int(reason)] + if !ok { + rsn = strconv.Itoa(int(reason)) + } + return fmt.Sprintf("BP: '%s', at: 0x%04X", rsn, addr) +} + +func (p *DZRP) handleCmdRemoveBreakpoint() (*Response, error) { + if len(p.cmd.Payload) < 2 { + return nil, errors.New("too short payload") + } + bpNum := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0]) + p.debugger.RemoveBreakpoint(bpNum) + log.Debugf("CMD_REMOVE_BREAKPOINT no: %d", bpNum) + return NewResponse(p.cmd, nil), nil +} + +// handleCmdLoopback send back received data +func (p *DZRP) handleCmdLoopback() (*Response, error) { + return NewResponse(p.cmd, p.cmd.Payload), nil +} + +func (p *DZRP) handleCmdReadPort() (*Response, error) { + if len(p.cmd.Payload) < 2 { + return nil, errors.New("too short payload") + } + addr := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0]) + return NewResponse(p.cmd, []byte{p.computer.IORead(addr)}), nil +} + +func (p *DZRP) handleCmdWritePort() (*Response, error) { + if len(p.cmd.Payload) < 3 { + return nil, errors.New("too short payload") + } + addr := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0]) + p.computer.IOWrite(addr, p.cmd.Payload[2]) + return NewResponse(p.cmd, nil), nil +} + +func (p *DZRP) handleCmdInterruptOnOff() (*Response, error) { + if len(p.cmd.Payload) == 0 { + return nil, errors.New("too short payload") + } + on := p.cmd.Payload[0] != 0 + p.debugger.SetBreakpointsEnabled(on) + log.Debugf("CMD_INTERRUPT_ONOFF on: %t", on) + return NewResponse(p.cmd, nil), nil +} diff --git a/debug/dzrp/protocol.go b/debug/dzrp/protocol.go new file mode 100644 index 0000000..34bfecb --- /dev/null +++ b/debug/dzrp/protocol.go @@ -0,0 +1,178 @@ +package dzrp + +import "fmt" + +const ( + VersionMajor = 2 + VersionMinor = 1 + VersionPatch = 0 + AppName = "okemu v1.0.0" +) + +type Command struct { + Len uint32 // Length of the payload data. (little endian) + Sn uint8 // Sequence number, 1-255. Increased with each command + Id uint8 // Command ID + Payload []uint8 // Payload: Data[0]..Data[n-1] +} + +type Notification struct { + Len uint32 // Length of the following data beginning with the sequence number. (little endian) + Sn uint8 // Sequence number = 0 + Payload []uint8 // Payload: Data[0]..Data[n-1] +} + +type Response struct { + Len uint32 // Length of the following data beginning with the sequence number. (little endian) + Sn uint8 // Sequence number, same as command. + Payload []uint8 // Payload: Data[0]..Data[n-1] +} + +// The DRZP commands and responses. +// The response contains the command with the bit 7 set. +const ( + CMD_INIT = 1 + CMD_CLOSE = 2 + CMD_GET_REGISTERS = 3 + CMD_SET_REGISTER = 4 + CMD_WRITE_BANK = 5 + CMD_CONTINUE = 6 + CMD_PAUSE = 7 + CMD_READ_MEM = 8 + CMD_WRITE_MEM = 9 + CMD_SET_SLOT = 10 + CMD_GET_TBBLUE_REG = 11 + CMD_SET_BORDER = 12 + CMD_SET_BREAKPOINTS = 13 + CMD_RESTORE_MEM = 14 + CMD_LOOPBACK = 15 + CMD_GET_SPRITES_PALETTE = 16 + CMD_GET_SPRITES_CLIP_WINDOW_AND_CONTROL = 17 + + // Sprites + CMD_GET_SPRITES = 18 + CMD_GET_SPRITE_PATTERNS = 19 + + CMD_READ_PORT = 20 + CMD_WRITE_PORT = 21 + CMD_EXEC_ASM = 22 + CMD_INTERRUPT_ON_OFF = 23 + + // Breakpoint + CMD_ADD_BREAKPOINT = 40 + CMD_REMOVE_BREAKPOINT = 41 + + CMD_ADD_WATCHPOINT = 42 + CMD_REMOVE_WATCHPOINT = 43 + + // State + CMD_READ_STATE = 50 + CMD_WRITE_STATE = 51 +) + +// DZRP notifications. +const NTF_PAUSE = 1 + +// Machine type that is returned in CMD_INIT. +// It is required to determine the memory model +const ( + MachineUnknown = 0 + MachineZX16K = 1 + MachineZX48K = 2 + MachineZX128K = 3 + MachineZXNEXT = 4 +) + +const ( + RegPC = iota + RegSP + RegAF + RegBC + RegDE + RegHL + RegIX + RegIY + RegAF_ + RegBC_ + RegDE_ + RegHL_ + RegUnk + RegIM + RegF + RegA + RegC + RegB + RegE + RegD + RegL + RegH + RegIXL + RegIXH + RegIYL + RegIYH + RegF_ + RegA_ + RegC_ + RegB_ + RegE_ + RegD_ + RegL_ + RegH_ + RegR + RegI +) + +type CmdInitCommand struct { + Major uint8 // Version (of the command sender): 3 bytes, big endian: Major.Minor.Patch + Minor uint8 + Patch uint8 + AppName string // 0-terminated string The program name + version as a string. E.g. "DeZog v1.4.0" +} + +type CmdInitResponse struct { + Sn uint8 // Same seq no + Error uint8 // Error: 0=no error, 1=general (unknown) error. + Major uint8 // Version (of the response sender) : 3 bytes, big endian: Major.Minor.Patch + Minor uint8 + Patch uint8 + Machine uint8 // Machine type (memory model): 0 = UNKNOWN, 1 = ZX16K, 2 = ZX48K, 3 = ZX128K, 4 = ZXNEXT. + AppName string // 0-terminated string The responding program name + version as a string. E.g. "dbg_uart_if v2.0.0"} +} + +const ( + BprStepOver = 0 + BprManual = 1 + BprHit = 2 + BprMemRead = 3 + BprMemWrite = 4 + BprOther = 255 +) + +var BprReasons = map[int]string{ + BprStepOver: "Step-over", + BprManual: "Manual break", + BprHit: "Hit", + BprMemRead: "WP read", + BprMemWrite: "WP Write", + BprOther: "Other", +} + +func (c *Command) toString() string { + return fmt.Sprintf("Len: %d, Sn: %d, Id: %d, Payload: %s", c.Len, c.Sn, c.Id, PayloadToString(c.Payload)) +} + +func NewResponse(cmd *Command, payload []byte) *Response { + return &Response{ + Len: uint32(len(payload) + 1), + Sn: cmd.Sn, + Payload: payload, + } +} + +func PayloadToString(payload []byte) string { + res := "[" + for _, b := range payload { + res += fmt.Sprintf("%02X ", b) + } + return res + "]" +} diff --git a/debug/listener/listener.go b/debug/listener/listener.go index 0c04994..220cf22 100644 --- a/debug/listener/listener.go +++ b/debug/listener/listener.go @@ -154,8 +154,8 @@ func HandleCommand(str string, writer *bufio.Writer) bool { switch cmd { case "cpu-step": debugger.SetDoStep(true) // computer.Do() - text := disassembler.Disassm(computer.GetCPUState().PC) - writeResponseMessage(writer, registersResponse(computer.GetCPUState())+" TSTATES: "+strconv.Itoa(int(computer.TStatesPartial()))+"\n"+text) + text := disassembler.Disassm(computer.CPUState().PC) + writeResponseMessage(writer, registersResponse(computer.CPUState())+" TSTATES: "+strconv.Itoa(int(computer.TStatesPartial()))+"\n"+text) case "run": writeMessage(writer, runUntilBPMessage) debugger.SetRunMode(true) @@ -173,7 +173,7 @@ func HandleCommand(str string, writer *bufio.Writer) bool { case "get-version": writeResponseMessage(writer, getVersionResponse) case "get-registers": - writeResponseMessage(writer, registersResponse(computer.GetCPUState())) + writeResponseMessage(writer, registersResponse(computer.CPUState())) case "set-register": writeResponseMessage(writer, setRegister(params)) case "hard-reset-cpu": @@ -472,7 +472,7 @@ func stateResponse(state *z80.CPU) string { } func setRegister(param string) string { - state := computer.GetCPUState() + state := computer.CPUState() params := strings.Split(param, "=") if len(params) != 2 { log.Errorf("Invalid set register parameter: %s", param) @@ -515,7 +515,7 @@ func setRegister(param string) string { log.Errorf("Unsupported set register parameter: %s", param) } computer.SetCPUState(state) - return registersResponse(computer.GetCPUState()) + return registersResponse(computer.CPUState()) } func readMemory(param string) string { @@ -551,7 +551,7 @@ func getExtendedStack(param string) string { log.Errorf("Invalid size param: %s", param) } - sp := computer.GetCPUState().SP + sp := computer.CPUState().SP if len(params) == 3 { psp, err := strconv.ParseUint(params[2], 10, 16) if err != nil { @@ -620,7 +620,7 @@ func typToString(typ uint8) string { func BreakpointHit(number uint16, typ byte) { if activeWriter != nil { - pc := computer.GetCPUState().PC + pc := computer.CPUState().PC res := disassembler.Disassm(pc) msg := "" if typ == 0 { diff --git a/floppy/disk1.img b/floppy/disk1.img new file mode 100644 index 0000000..02def52 Binary files /dev/null and b/floppy/disk1.img differ diff --git a/floppy/disk1.okd b/floppy/disk1.okd new file mode 100644 index 0000000..e09a515 Binary files /dev/null and b/floppy/disk1.okd differ diff --git a/floppy/disketa.img b/floppy/disketa.img new file mode 100644 index 0000000..69f09b3 Binary files /dev/null and b/floppy/disketa.img differ diff --git a/floppy/disketa.okd b/floppy/disketa.okd new file mode 100644 index 0000000..31bc9d5 Binary files /dev/null and b/floppy/disketa.okd differ diff --git a/floppy/floppyB.okd b/floppy/floppyB.okd new file mode 100644 index 0000000..21a3f5f Binary files /dev/null and b/floppy/floppyB.okd differ diff --git a/floppy/floppyB1.okd b/floppy/floppyB1.okd new file mode 100644 index 0000000..ae2c601 Binary files /dev/null and b/floppy/floppyB1.okd differ diff --git a/floppy/floppyC.okd b/floppy/floppyC.okd new file mode 100644 index 0000000..371a719 Binary files /dev/null and b/floppy/floppyC.okd differ diff --git a/floppy/oce1_2.okd b/floppy/oce1_2.okd new file mode 100644 index 0000000..f8fe906 Binary files /dev/null and b/floppy/oce1_2.okd differ diff --git a/floppy/oce2_2.okd b/floppy/oce2_2.okd new file mode 100644 index 0000000..678016f Binary files /dev/null and b/floppy/oce2_2.okd differ diff --git a/hex/format.hex b/hex/format.hex new file mode 100644 index 0000000..9c44228 --- /dev/null +++ b/hex/format.hex @@ -0,0 +1,23 @@ +:020000040000FA +:20010000116A02D53A8000FE02112D03C03A8100FE20C03A8200324503FE420E05CA2501C0 +:20012000FE430E02C079329803CD06E0B7CA3601CD09E0C32901113F03CD6A02CD09E01107 +:200140007203FE79CA4A01FE59C0CD6A0221000022EFBF3A9803D325F608D325111403DB97 +:200160002507D8DB20E680C25F01AFD3200000DB2507D8DB20E605FE04C26F01AFD321AF0B +:200180003297033A9803D325F608D3250E00CDD301CD8802CDA0023A9803D325F628D32578 +:2001A0000E01CDD301CD8802CDA002CD06E0B7C409E0FE03118F03C8FE1BC83A97033C3223 +:2001C0009703FE50117D03D03E58D3200000DB24C38301219903114E50CD630211000CCD7F +:2001E000630211F603CD630236FC23114E32CD6302060111000CCD630211F503CD6302367F +:20020000FE233A970377237123702336022336F723114E16CD630211000CCD630211F5037E +:20022000CD630236FB2311E500CD6302CD630236F723114E36CD63020478FE0ADAF3011164 +:200240004E00CD6302CD6302CD63020E46C5117503CD6A023A9703CD75020E20CD0CE0C11F +:20026000C30CE0732315C26302C91AB7C84FCD0CE013C36A02570E0006087A0757798927DD +:200280004F05C27A02C303E02199033EF4D3200000DB240F7ED32323DA9102DB20C3C702AB +:2002A0000E56CD4D022101123E01D3223E94D3200000DB240FDB232BDAB202DB20E6CFC25A +:2002C000C7027CB5C83E08B7C8F5117203CD6A02F1116A02D5FE0811F602C8FE4011020375 +:2002E000C8FE80111403C8F5112603CD6A02F1CD03E0117203C9435243204552524F520DE1 +:200300000A0057524954452050524F5445435445440D0A004452495645204E4F5420524525 +:200320004144590D0A004552524F52200055534147453A20464F524D415420422F4300446E +:2003400052495645203F3A2057494C4C204245204C4F5354210D0A50524F434545442057BC +:2003600049544820464F524D41542028592F4E293F000D0A000D545241434B20000D464FCE +:19038000524D415420434F4D504C4554450D000D0A425245414B0000002E +:00000001FF diff --git a/hex/l80.hex b/hex/l80.hex new file mode 100644 index 0000000..8ddcb26 --- /dev/null +++ b/hex/l80.hex @@ -0,0 +1,290 @@ +:020000040000FA +:200100002A06002BF922FA181106FF1922621A226A1A1100F81922601A22681AAF676F22DB +:20012000F81822031932FF1832011932FE1821D02322641A225C1A22661A225E1A22E518ED +:2001400022E318210301227E1A227C1A22821A22801A32511A322F1AC3B7013F4E6F20536F +:20016000746172742041646472657373003F4C6F6164696E67204572726F72003F4E6F7447 +:2001800068696E67204C6F61646564003F4F7574206F66206D656D6F727900216D01C3A435 +:2001A00001218C01C3B001217C01C3B001216903CD7803AF3280002AFA18F9218A1A7EB7A5 +:2001C000C2CA0134212903CD78033E01324F1AAF320019CDA103AF320619CDEA0CDAAD0139 +:2001E000FE2CCA8202FE0DCA8202FE2FC2AD01CD8203014902C5FE4DC2FE010680C9FE478E +:200200000640C8FE52CA0001FE530602C8FE550601C8FE580610C8FE590608C8FE45C234D8 +:20022000020620C9CD2809CDB807010000C5C3A61FC30000FE4FC23F0232FE180600C9D6F5 +:2002400048C2F70332FE1847C93A0619B0320619CD8203FE3AC2E001D53E60A0CAAD01CD63 +:20026000740DEB11E91878B7CAAD01FE07D2AD011213CD8203121305C27202CD8203D1C317 +:20028000E00122FC183A091AB7C41C07AF32800001F802C52106197EE6FEBE77CAAB02B726 +:2002A000FAAB023A091AB7CAA9097EE6FDBE77C2BD023A091AB7C8320019C3970B32001919 +:2002C0002A03197CB5C8CD7011DAC602CAC60279FE0FC8B7C2C602CDF112DAE6027EE64098 +:2002E000C2C602C3EC02226A1AC3C602CD9D0B2A03197CB5C8C3C6022AFC187EE67FFE0D27 +:20030000C2DA013A0019B73A0619CA2103FE80CDAA0947E640C2810778E620C22402C3B35E +:2003200001FE80D4AA09C312030D0A4C696E6B2D38302020332E3337202030382D4D61799E +:200340002D38302020436F7079726967687420313937392C383020284329204D6963726FB3 +:20036000736F66740D0A0D0A003F436F6D6D616E64204572726F72007EB7C8CDD80623C3DD +:2003800078037EE67F23FE20CA8203FE0ACA8203FE60DA9C03FE7BD29C03D620FE0DC02B6B +:2003A000C9D5C52180007EB747CAC803237EFE20C2B70305C3A903110819782B0412132358 +:2003C00005CAE4037EC3BD033A4F1AB7CAD703CD12073E2ACDD8060E0A110719CD05003E16 +:2003E0000ACDD8063A0819210919E5856F3E008C67360DE1C1D1C9D60837CA1904D6F4CA91 +:200400001904D60AC2AD0132091AE5110A1A212E1A010C00CD9E17E1C9F5CD8203FE3AC21D +:20042000AD01CDE405F1E5478F874FC29F043A511AB7C29F04CD6D06EBE5010000CD60056D +:20044000227E1A22821AE1227C1A22801A2A5C1AE52A641A225C1A22E318CD9D05D12A641F +:200460001AEBCD96052A661A19B7CDDE14424B2A641AEB2A661AE5D5CDA91722E518AF32C5 +:20048000501A473C32511AD1E1F5C35905D5CD9605E17AB3C83600231B7AB3C29504C9F53D +:2004A000DAAB043A511AB7C2AB044FCD6D06D5CD6905CD7D05CDB40ACA0305D1CD6005EBAD +:2004C000CD9605D21605E5210000CD9605CD6905E519C579CDE314C1EBE3CD7D05D5CD9608 +:2004E0000579424BD1E119E5D5F5CDA917F14FD1E1CD8D04CD7D05E1F1D8F5E521E31809A2 +:20050000732372D1217C1A09732372F1D821801A09732372E1C9D5EBCD860513CDB40A1B2A +:20052000F5D44906F1E1E3F5E5F1DA340521801A09732372D1E1D5F5CD7D0519EB21E31859 +:2005400009F1F5DA4905732372E1F1E5D25C05CD6905EB79C5CDE314C1CD8D04F1D8E1C9D8 +:20056000217C1A097E23666FC9215C1AC36305D5CD6905CD7D05CD9605EBD1B5C9EB216449 +:200580001ACD6305EBC9D5CD6005CD7D05CD9605CD690519D1C97D935F7C9A57C93E013296 +:2005A000501A2A7C1AEB2A7E1ACD9605DAC4052A5C1A19EB2A681A3A511AB7CAC405CDB499 +:2005C0000AD2D8052A5C1AEB2A681ACD96051F577B1F5F2A5C1A19EBEB2322661A225E1A66 +:2005E00022E518C91100003AFE1847EBEBCD82034FD630DA1F06FE0ADA0006D607DA1F062B +:20060000EB292929FE10D21E060405CA1406FE08D21E060E29856F3E008C67C3EC05EB7913 +:20062000FE0DC82BC9254F7665726C6179696E6720002061726561003C06410644617461D2 +:200640000050726F6772616D00CD4F06C31207E5212506CD7803213806097E23666FCD7828 +:2006600003213206CD7803E1C9E5C35306E5C5010000CD600513CDB40A1BD29D06E5CD86E8 +:2006800005EBE3CDB40AE1EBCA9D06CDB40ADAAE06E17D3CCAA8063DB9C44906E50C0C7919 +:2006A000FE04C27206C1E1C9E57937C3A506EBE3C5794DB9E537CAC6062CCAC606CD6005D8 +:2006C00023EBCDB40AEBE1C1D1E5DA9D0621F517CD6906C3B3013E09F5C5D5E50E02E67FB1 +:2006E0005FCD0500E1D1C1F1C9210B1A3E3FCDD80606087E23CDD806FE21DA010705C2F319 +:2007000006210707C3A401204E6F7420466F756E64003E0DCDD8063E0AC3D8063E80325AA6 +:200720001A1189190E1ACD0500110A1ACD6E070E0FCD05003CCAE9063EFF32E018C9E5D5AD +:200740003A5A1AB7FC56075F16003C325A1A218919197ED1E1C9C50E1A118919CD0500112C +:200760000A1A0E14CD0500C13CCA9B01AFC9210C0019AF0604772305C275072120001977D9 +:20078000C9CD28097CB5EB215B01CAB001EBE5CDB807E521A607CD7803CD12072AF81844C3 +:2007A0004DE1C5C3A61F5B426567696E20657865637574696F6E5D003A0119B7CAA7013A76 +:2007C000FF18B7CA40082A621AEB2A6A1AEBCDB40ACA40087EE6E0FE607EC22508EE4077BE +:2007E000E607E52B2B2BFE07DAED073E07474F119D097E122B1305C2F2073E0791CA070804 +:20080000EB36203DC20108D12A621ACD9605D5219C09CD8709AF32FF18CDA9092A621AD1CA +:20082000CD9605EB7E4FE6075F1600CD9605EB2B2B2B79B7F239082B2B3AFF18B7C2C9070F +:20084000CD12073A0619E618320619CDA9092AF8183E5BCDD806CD280BCDD606010000CD96 +:200860008605E521220911F0183E0612477E23131205C26D08AFCDF112DA8F087EE640CAA6 +:200880008F082B5E2B56CD0418EBD1732372D5E1E5CD280BCDD6062A601AEB2A681ACDB40A +:2008A0000ACACB081AD6C532531AD5CDB914CD0418EB3A531AB7C2C008782F47792F4F032A +:2008C0007E8177237E8877D1C39B08E1010000CD86053A511AB7CAE608EB0E02CD8605CD5D +:2008E000B40AD2E608EB110001AF957CCE0092CD0F093E5DCDD806CD12073EC33200012AEE +:20090000F8182201013A2F1AB7C47B1DC38B1A06FFD60A04D21109F578C40F09F1C63AC3D3 +:20092000D806244D454D52592AF81811E9181AB7C821F01806071A77231305C23609AFCDC7 +:20094000F112DA54097EE640CA54092B5E2B56EB22F818C9E5216909CD7803E1CD770EAF00 +:2009600032E918217A09C3A4013F53746172742073796D626F6C202D2000202D20756E6414 +:200980006566696E656400110A1A060C7EE67F12231305C28C09CD1C07C3BD02002020204C +:2009A000202020202052454CF637F53A0619E660C2C509010000CD700B3A511AB70E02C4EA +:2009C000700BCD1207AF320519329C0A2A621AEB2A6A1AEBCDB40ACA830A7EE60747F1F53B +:2009E000D2F5097EE660C2700A2F32FF183A0619E660C2700AE57EE6E0FE20CA6F0A7EB715 +:200A00003E20F20A0A3E2FCDD806F52B5E2B562B7ECDD80605C20F0AF1FE2FCCD806E37EFE +:200A2000E640C2340A3A9C0A3C329C0A3E2A32FF18CDD806CDD6067EE620EBCA470A21905C +:200A40000BCD7803C34A0ACD280BEB7EB7E3F25C0ACDD6062B5E2B56EBCD280BCDD6063A50 +:200A60000519FE023FCE01E603320519CC1207E17EB7F2770A3C3CE60FC6022F4F06FF09E2 +:200A8000C3CF093A9C0AB7CA6B0BCD12073A9C0ACD0F09219D0ACD7803C36B0B0020556E0D +:200AA000646566696E656420476C6F62616C2873290D0A007C92C07D93C921371A36532356 +:200AC000365923364DCDB61D3E04F52A621AEB2A6A1AEBCDB40ACA1F0B7EE6074F7EE64003 +:200AE000CA0C0BE52B5E2B56EBCDA61EEB3E20CD5E1F2B7ECD5E1F0DC2F20A3E09CD5E1FC8 +:200B0000E1F13DC20B0BCDC21E3E04F57EB7F2130B3C3CE60FC6022F4F06FF09C3CE0AF178 +:200B2000FE04C4C21EC3341E3AFE18B7CA4D0BAF29CE30CDD806C50605AF0E03298F0DC239 +:200B40003C0BC630CDD80605C2390BC1C97CCD520B7DF50F0F0F0FCD5B0BF1CD610BC3D8CC +:200B600006E60FC630FE3AD8C607C9CD1207F1C9213806097E23666FCD7803CDD606CD6042 +:200B800005CD280BCDD606CD8605CD280BC3120752515545535400CD9D0BC3970B2A621A0F +:200BA0003A521AB7CAEC0BEB2A6A1ACDB40AEBCAEC0B7EE6075F16007EE5E640CAE10B2BFD +:200BC0002B2B7ED623C2E10BCD96052A6A1AEBCD9605424BEBE1E5CDBC17226A1AE1C3A762 +:200BE0000BE1CD9605EB2B2B2BC3A70BAF32501A32521A32551A3A511AB7CC9D05AF676FE7 +:200C000022561A22841A22861A32FF1822881A3C32541A3A511AB72A5C1AEB2A661AC48DF5 +:200C2000042A5E1AEB2A681ACD8D042AE518E5E1CD4517CD7011D23F0CCD570CC3330CC2A4 +:200C4000480CCDAF0CC3330CE5060021231209097E23666F424BE9D5C5E5233A541A3DEB05 +:200C6000CA8C0C3A881AB7C2830C2A5C1A7C92CA780CD2830CC27D0C7D93D2830CEB23B750 +:200C8000CDE114E1CD4517C17023D1C93A891AB7C2830C2A5E1A7C92CAA10CD2830CC2A6C5 +:200CA0000C7D93D2830CEB23B7CDDE14C3830CD53A531A3DC2DB0C3A501AB7CADB0CE5CDC1 +:200CC000FD16EBE3CD7617E5EB9FE680772B702B71D1C12B702B71EB11FFFF23CDC7174283 +:200CE000CD570CE52B2B73E1D1C9CD740DFE3A373E00C2010DEBCD8203FE5B3FD8D640D835 +:200D0000EB320A1AD4740D78FE0BDA0F0D060BC5EBD5110B1A0405CA220DCD82031213C3BE +:200D2000160DE1C13E0A90DA330DEB3620233DF22B0DEB7832091A790600FE2EF5CC740D8C +:200D4000E3EBD511131A78FE04DA4E0D06030405CA5B0DCD82031213C34F0DF1CA700D21D0 +:200D6000131A7EFE20C2700D365223364523364CE179B7C90600E5CD8203FE5BD2920DFEC1 +:200D800030DA920DFE41D28E0DFE3AD2920D04C3770DFE5BCA8E0DFE5DCA8E0DFE40CA8EF6 +:200DA0000DFE5CCA8E0DFE5ECA8E0DFE5FCA8E0D4FD1C9EBD1D5CDE9123A501AB7C2E10D97 +:200DC0003A541A32531ACDC717424B7CB5CA2F0C7E5F7123B65670CD0418EBC2D00DC32F0C +:200DE0000CEBE5CDFD163A531A3DCAF20DCDC7173E803C473A541A3DCAFD0D3E4080772B45 +:200E0000722B732BD1E640E5CC6A12E13A541A32531ACDC717722B73C32F0C3E80CDF11204 +:200E2000DA330EE51A2F6F1B1A2F6709DA620EE1C32F0C7EF64077EB712B702AE318E51BB6 +:200E4000EB3E0232531ACDC717EB7D121B7C12E10922E318EB2A5C1AEBCDB40AD4E114C366 +:200E60002F0C21880ECD7803E1CD770E3E2FCDD806CD1207C32F0C7EE607572B2B2B7ECD7B +:200E8000D8062B15C27E0EC925326E6420434F4D4D4F4E204C6172676572202F002AE3181A +:200EA000EB22841AEB097C32881AEB2A5C1AEBCDB40AD4E114E5CD9D13E1C32F0C3E20CD0D +:200EC000F1127EF64077C32F0CF637F5CDFD163A501AB73EC0CAEC0E3A541A3DCAE10E3EEB +:200EE00080473A531A3DCAEB0E3E4080C60477F19F3C86772BCDC717EBE3EBD53A541A323E +:200F0000531ACDC7173A501AB7CA150F3A541A3DE5CC6A12E1722B732BEBE1E3EB722B7398 +:200F2000C32F0CC1C1C3F8027AB3C1CA360FAFCD2C18EB22F818010000CDE91221841A0909 +:200F40005E235621801ACD3D1021E318CD3D10030379FE03DA3C0F3A511AB7C02A5C1AEB63 +:200F60002A641ACDB40AC26F0F2A7E1A227C1A010000CD8605EB2A7E1ACD9605DABA0F2A49 +:200F80005C1A19E5CDE1142A661AEB2A5E1ACD9605424B2A661AEBE122661ACDB40AD4A9CF +:200FA00017DC9E17225E1A225C1A22E318010000CD860522821A22801AC9CD8605EB0E024B +:200FC000CD8605CDB40ADACA0FEB2A7E1AEBCD9605D52A661AEB2A5E1ACD9605E1CDB40A9B +:200FE000D2F00F210000CD96052A5E1A19CDDE142A641AEB2A5C1ACD9605424B2A7E1AEB48 +:201000002A7C1ACD96052A661A19EB2A641AEBCDA9172A7E1A227C1A2A661AEB2A5E1ACD5C +:201020009605424B2A661AEB2A641A22661ACD9E17225C1A225E1A22E318C3AD0F097E834F +:2010400077237E8A77C95059CDE9123E04CD2C18424BAFCDF112D4B2107EE640C28D103A0B +:20106000501AB7C272107EF640772B7E5F712BC3D40DEBCDFD163A531A3DCA7F103E80C60C +:2010800043772B702B712B722B73C32F0CE5219E10CD7803E1CD770ECD1207C32F0C254DA1 +:2010A000756C742E204465662E20476C6F62616C20007EE640C0E52A03192B220319E1C91D +:2010C0005059CDE9123E02CD2C18424BC5AFCDF1127E2BDAF3104E2B46E640EBE1C20C1167 +:2010E0003A501AB7C22011EB7AB3CA2F0CCD5B14C32F0CEBCD4311E17CB5CA2F0C3A501A84 +:20110000B71BC22011EB722373C32F0C3A501AB7C220117CB5CA2F0CEBCD0418EBC3CB0D3B +:20112000EB7AB3CA2F0C23E5CDFD163A531A3DCA34113E80C642772B722B732BD1722B7333 +:20114000C32F0CE52A031923220319E1C9E521DF187E2334C25C11CD3E0736F8872B77E110 +:20116000C90E080600CD4D117817470DC26511C9AF32531ACD4D11DA7F11CD611137C90E4B +:2011800002CD6311B7CA8D11CDE011AFC9E50E04CD6311FE05F5DAA611FE0FCACF110E022F +:2011A000CD6311CDE011F1F5FE08D2CF11D50E03CD631121F018B777C2BC11342336205F79 +:2011C0001DFACE11CD6111E67F7723C3C011D1F12100FFFE0EC2DB1122DF184F3CB7E1C9A6 +:2011E000F532531ACD611158CD611150F1FE01CC111287E5CAFE11FE05D2FE11EE064F06E4 +:201200000021E118094E2346EB099F320219EBE1C9F53A501AB7CA2112AF320219F1E3E181 +:20122000C9F1C92F0C71124221BD0ED7201B0EC0104610C90ECA0E9D0E8712B30D431228C9 +:201240000F230F3A501AB7CC6A12D5CD9D13E122861AEB2AE518193EFF32891AEB2A5E1AEB +:20126000EBCDB40AD4DE14C32F0C2AE518EBC396053E80CDF112DA9B012B5E2B56CD0418CD +:20128000EB22E718C32F0CE1C5CDE9123A531A3DFAAA123C32541A3DC22F0C3A501AB7CA01 +:2012A0002F0C2AE51809E3C32F0C5059010200D537CD9F04D12A7E1AEBCD9605D2D21222FC +:2012C0007E1A210000CD96052AE5181922E5181100002A661A19C1E521000022561A7D32B2 +:2012E000891A3C32541AC32F0C3A0219B7C8C3A1012A621AC5F5EB2A6A1AEB7CAA477DABBF +:20130000B0CA43137EE6074FF1F5AEE6B8C2301311F0181A13A9C23013E5412B2B2B1ABE99 +:20132000C22F13132B05C21E13EBE1F1C1AFC9E17EB7F237130C0C79C6032F4F06FF030942 +:20134000C3F612C111F0181AF5C6034F78070781E5D55F1600CD9605EBCDD814D1E1F113C9 +:201360004FB0771AFE23C26C1332521AE5AF2B772B772B1A772B130DC27313D11AB7E5F23D +:201380008713AF772B772B226A1AEBD1C137C91D142B144014741495149514F7203A501A44 +:2013A000B7C8AF32501A2A5C1AEB2A661AD5EBCD9605EB444D2A561A0922561AEB2AE51843 +:2013C000E50922E518D12A5E1AD5CD9605424BD1E122661ACD9E17225E1A010000CD8605FA +:2013E000227E1A22821A2A601A22581AE5CDB520D12A681A7C92C2FB137D93CA1414EB7EF0 +:2014000087E60E5F160001F013C5E5218F13195E2356EBE92A581A22681AC30B21CDB914DE +:20142000E1E3E5CD0418EB712370C9CDB914E1E3E5CD0418EB5E712356707BB2C23114C996 +:20144000CDB914E1E3E5C5E1237EE640D52B5E2B56EBE3EBC27014C17BB2C8722373C5CDAE +:201460000418EB5E23567BB2C25F14D1722B73C9C1C33114CDB914E1E3E5C5E17E4FF640CD +:201480007779E6402B4E732B4672C5D5C1D1C07BB2C8C33114E1E57E32091ACDB914E1E387 +:2014A000E52A581A3A091AE607F6C0772B722B732B702B712B22581AC9E1E37E2B562B5EEE +:2014C0002B462B4E2BE3E52A7E1AB7FAD114EB19EBE640C009444DC93E06DA3E04DA3E0225 +:2014E000DA3E00C5FE04D2EE143C3201193D4F0600D5E5FE0321661ADAFE14215A1A095EDB +:201500002356E1FE03DA0A15E5EBCD9605F579FE03DA1715F1E1F5F1E5D22D1579FE033F60 +:20152000DA3415CD7D05CDB40A3FDA3415F5C5CD5415C1F1F579FE03215C1ADA41152164EF +:201540001A09F1D1D24D15732372C350155E2356EBD1C1C9E5D5CD4616D5CD9605DAA10189 +:20156000CAA101E1CD9D16217A1A0602702305C26C151100002A641AE5216C1A194E2346F1 +:20158000237E23666FE521741A19D55E2356EB09D1C1EBE3C519E509C1EBE1E3EBE5216870 +:2015A0001A197E23666FEBE3CDB40AD1D20F16E321661A19D55E71235670EBE3EBE1E3E5D5 +:2015C000215E1A19EBE3EB7E73235F7E7257E1E3EBD5CD9605E1E37DE3EBB7CAED15F53A39 +:2015E000551AB7CAEB150303030303F123CC1917E5C5E1C1E5CDB40AD4A917DC9E17E1D149 +:201600007B1F5FE5217A1A193600EB29EBC1C51C1C6069C17BFE04DA7815217A1AAF060251 +:20162000862305C22016B7C272152A721AEB2A621ACD9605EB226A1A2A6C1AEB2A641A1968 +:20164000225C1AD1E1C9C5D5215C1A79FE03DA541621641A095E2356010900FE03DA6316AB +:2016600001F5FF0946236668FE03DA6E16EBCD9605E119E50603215C1A110000D55E235647 +:20168000D5110900195E2356E3EBCD9605E1E319E311F7FF1905C27D16E1D1C1C979010045 +:2016A00000D5E5215C1A095E2356D5110700195E2356E1F5CD9605F1B9C2C016E1E519EBD2 +:2016C000216C1A097323720C0C4779FE08780600C2A316E121741A0603E3CDE816E37323BB +:2016E000722305C2D916E1C978D601CAFB167C1F577D1F5FD5CD9605EBD1EBEBC9D5C501AB +:20170000FBFF7832551A2A681A09B7CDDB14AF32551A11050019C1D1C9EBE579956F789C53 +:2017200067D5EB2A561A1922561AEB2AE5181922E5182AE718195059CDB40ADA411722E742 +:2017400018D1E1EBC9D53A541AFE03CA61173DC25717EB2A561A19EB21000022561AEBD1E6 +:20176000C9E5EB2A561A19EB2A661ACDB40AE1D25717EBC35717CD4517C28A17D5EB2AE565 +:20178000187B954F7A9C47EBD1C9E5D5EB2A641AEBCD96052A7C1A19444DD1E137C978B10B +:2017A000C81A7723130BC39E1709E5EB092B1B78B1CA67067E121B2B0BC3AF1778B1C81A1A +:2017C000771B2B0BC3BC173A531A373DF8E5C5FE02CC2318EE01874F0600B7CAE6173A5014 +:2017E0001AB737C2F217EBCD7D05CD9605CD600519EBC1E1C93F496E74657273656374697A +:201800006E672000F5C5E501FF00CD6D06D21F184FD5CD7D05CD6005EBCD9605E119EBE12D +:20182000C1F1C92A5C1ACDB40A9F3CC932DE18CDC717D8E5C53A531AFE023F9FE602060096 +:201840004FCA4B183A501AB7C2F217CD6005CDB40AD2F217CD8605EBCDB40AEBD2F217E5D5 +:2018600021F517CD69063E2CCDD8062ADE18260011D8184D195E2356EBCD780379B7C288B9 +:2018800018E1CDA718C3B30121F01846237E23CDD80605C28D183E28CDD806E1CDA7183E46 +:2018A00029CDD806C3B3013A531AFE029FE602CD7D05CD9605C3280B205374617274203D77 +:2018C00020002045787465726E616C2000205075626C6963203D2000B818C218CD180000DA +:2018E0000000000000000000000000000000000000000000000000000000CF2300000000F6 +:20190000000000000000008000000000000000000000000000000000000000000000000047 +:201920000000000000000000000000000000000000000000000000000000000000000000A7 +:20194000000000000000000000000000000000000000000000000000000000000000000087 +:20196000000000000000000000000000000000000000000000000000000000000000000067 +:20198000000000000000000000000000000000000000000000000000000000000000000047 +:2019A000000000000000000000000000000000000000000000000000000000000000000027 +:2019C000000000000000000000000000000000000000000000000000000000000000000007 +:2019E0000000000000000000000000000000000000000000000000000000000000000000E7 +:201A00000000000000000000000000000000000000000000000000000000000000000000C6 +:201A20000000000000000000000000000000000000000000000000000000000000000000A6 +:201A4000000000000000000000000000000000000000000000000000000000000000000086 +:201A6000000000000000000000000000000000000000000000000000000000000000000066 +:201A80000000000000000000000000010200CD6F050E00C29C1ACD6F0532011911030121B9 +:201AA00003023A0119B7C8CD6F05CAB91ACD6005CD131BCD8605CD131B0C0C79FE04C2A7F4 +:201AC0001A2A7C1AEB2A7E1ACDB40ADC831C2A641A110001010400CD8E1B0E00CD69050CEF +:201AE0000CCD7D05E5CD6905CDB40AE1C2F61AEB2AFA18EB0E02EBCDB40AD48E1B79FE029F +:201B0000C2DC1ACD6905EB2AFA18CDB40AD48E1BC3A101110001CDB40ADA2F1BEB2AFA1856 +:201B2000CDB40AEBDA281BC9E5215B1BC3331BE521551BE521611BCD7803E1CD78032169C9 +:201B40001BCD7803AF324F1ACDA103CD8203FE59E1C8C3310262656C6F770061626F7665F9 +:201B6000004F726967696E2000206C6F61646572206D656D6F72792C206D6F766520616E9B +:201B8000797761792859206F72204E293F00C5D5010200EBCD8605D5EBCD6005CDB40AEBDB +:201BA000D1CAAA1BCDB40ADCBE1B0D0DF2941B0E04210001CDB40ADCBE1BEBD1C1C9C5E566 +:201BC00079B7C2CD1B3A511AB7CAD11BAFC602FE042AFA18CAFA1BDADB1BAF4FCD6005D5B0 +:201BE000EBCD8605CDB40AEBD1C2FA1B79B72AFA18C2FA1B217E1ACD6305CDB40AD2011CD9 +:201C0000EB21060039F9E1E53B3B3B3B3B3BEBCDB40ADA3F1CE3CDB40ADA1D1CEBE1D5CDBE +:201C200096057AB7D1CA431C01252037CD461CDA391C04CD461CCA431CC1C1C1C1C1C9D148 +:201C4000EBC1C9EBC1C9C5D5E5C5E1F5CDB40ADA7D1CF1D1D5F5EBCDB40ADA7D1CF1D268E2 +:201C60001CE1C1C5E5C5E1EBD5CD96057AB7CA771CD1C1C1C137C9D1E1D1C1AFC9C1E1D15D +:201C8000C1B7C92A5C1A22E3182A5E1A22E5182A641AEB2AE318CD9605C2A31CB3CA431D07 +:201CA000F2A51C1E804B060050C52AE318E5CD9605EB22E318EB218919CD9E17D12A5C1A52 +:201CC000D5CD9605424BB1D12AE318C49E172A661AEB2AE518CD9605C1C5C2E61CB3CA2807 +:201CE0001DB9D2E61C4F2A5C1AD1CD96052A661AC5EBCD9E17225C1A2A661AD1D519EB2A20 +:201D0000E518CD9605424B2A661AD1D5EB19EBCD9E172AE518D1D5CD9605EB22E518118937 +:201D200019C1CD9E17C38F1C50592A5C1ACD9605EB225C1A2A661AD1D5CD9605EB22661A60 +:201D4000C3121D2A661AEB2AE518CD9605DA601D424BB32A661AEB2A5C1AC49E17225C1A90 +:201D60002A7E1AEB2A7C1A227E1AEB227C1A2AE51822661A2AE31822641AC9FE20C8213704 +:201D80001A01B21DC57EFE52C0237EFE45C0237EFE4CC0060311AE1D3A0619E610CAA31DF9 +:201DA00011B11D1A772B1B05C2A31DC9434F4D48455801DA1DC51189190E1ACD0500112EB0 +:201DC0001ACD6E070E13CD0500112E1A0E16CD05003CCA881FAF325A1AC90100003A511AF4 +:201DE000B7CAF91DCD6F05CAF71D2A7E1AEB2A7C1ACDB40ADAF91D0E022106197EE608CABF +:201E0000061E11BA0AD57EE610CACC1ECD3F1E79EE024F3A511AB7C43F1E3E3ACD5E1FAFFC +:201E200047CDAB1E2AF818CDA61E3E01CDAB1EAF90CDAB1ECDC21E3E1ACD5E1FC3201FCD32 +:201E40008605EBCD6005EBD5CD96057BB2E1C8C5E5CD7D05CD6905EB7DC61C4F7CCE00477E +:201E60007B914F7A98DA6D1E3E1CC3701E79C61DB7C2771EC1C1C94F06003E3ACD5E1F79A0 +:201E8000CDAB1EE3D5CDA61E16005919D1E3AFCDAB1E7E23CDAB1E0DC2921EAF90CDAB1E57 +:201EA000CDC21EC3581E7CCDAB1E7DF50F0F0F0FCDBC1EF1F5CDBC1EF18047C9CD610BC3CB +:201EC0005E1F3E0DCD5E1F3E0AC35E1F2AF8181100017CB5CAFF1ECDB40ACAFF1E1103017D +:201EE000CD6005CDB40A110001DAFF1E3EC3CD5E1F2AF8187DCD5E1F7CCD5E1F110301CD28 +:201F0000341FCD481F3A511AB7CA201FCD8605EB79EE024FCD6F05CA201FCD341FCD481F3C +:201F20003A5A1AB7C4781F112E1A0E10CD05003CCA881FC9CD6005CD9605D8B3C8AFCD5E5B +:201F40001F1B7AB3C23D1FC9CD7D05CD6905EBCD96057AB3C87E23CD5E1F13C3521FD5E575 +:201F6000F52189193A5A1A5F160019F1777B3CFC781F325A1AE1D1C9C5112E1A0E15CD0587 +:201F800000B7C2881FC1AFC9218E1FC3A4013F43616E27742073617665206F626A65637460 +:201FA0002066696C6500E513212920CD9D20212F20CD9D20213220CD9D202138200606CD2C +:201FC0009D20232305C2BF1F23230603CD9D20232305C2CC1F23CD9D20217920CD9D202176 +:201FE0008420CD9D20D52A641A228820EB2A5C1ACD9605EB2286202A7C1A228A202A661A90 +:20200000228E20EB2A5E1ACD9605EB228C202A7E1A229020D1E1C1F9C5EB112520016D00CE +:20202000C325200000CD9220C32B20010000CD5520DA4620010600CD5520D46B20DC7B2069 +:20204000CD5520C36B20CD7B200E06CD5520D46B20DC7B20C9218620094E2346235E235612 +:20206000237E23666F7C92C07D93C909EB092B1B78B1C87E122B1B0BC3702078B1C81A7736 +:2020800013230BC37B2000000000000000000000000078B1C81A7713230BC39220C5E5D5EA +:2020A0007E23666F112520CD9605EBD119E5C1E1712370C1C93A4121B7C8E5D12A681ACDB8 +:2020C000B40AC8EB7EE607FE0301BB20C5E5CA7414CDB914E1E3E9CD1A213AF21832402125 +:2020E0002AE318225C1AAF32881ACDFD1636C62B3A402177C32F0CCDB914E1E3E57AF5CD0A +:202100001A21F1324021B7C8C336213A4121B7C8CD1A212AE318225C1AC93A4021B7C83272 +:202120004121010000CD6F05EB2AE3187223732B3A4021C368212AE318CDA121225C1AC9BC +:202140000000AF32402132412121AF2301072070230DC24F2121F0184E2311AF237E12238C +:20216000130DC25D21C32F0CE5D5722373CD0B23CDEE22D17BE67FCA84217BE680C6805FC1 +:20218000D28421147AB3E1CA9D21D5E5CDC622E111800019E31180FF19EBC38421CDA222B4 +:2021A000C9E5CD0B23CDD922212D23CDB322212D2356235EE1CDF521DAEC21D5118000CD75 +:2021C000FD21D1E52180FF19EBE1CDF521DADD21D5E5CDB322E111800019C3C2217AB3CA67 +:2021E000EF21E5212D23D5CDB322D1E1CDFD21E5CDA222E1C97AB7C07BB7F837C9012D23D9 +:202200007AB3C80A7723031BC30022E60FC630FE3A77D8D6F977C93AAD23213A22F5CD0B4D +:20222000222BF11F1F1F1FCD0B22213022C378033F5365676D656E74202020202C200066F5 +:20224000696C65206E6F7420666F756E640063616E2774206372656174652066696C650076 +:2022600072656164206572726F72004469736B2069732066756C6C00CD1722213F22C3A42F +:2022800001CD1722214E22C3A401CD1722CDA222216022C3A401CD1722CDA222216B22C394 +:2022A000A401112D230E1ACD05000E1011AE23CD0500C90E1AEBCD05000E1411AE23CD05C8 +:2022C00000B7C28A22C90E1AEBCD05000E1511AE23CD0500B7C29622C90E1A112D23CD05FF +:2022E000000E0F11AE23CD05003CCA7822C90E1A112D23CD050011AE230E13CD05000E1650 +:2023000011AE23CD05003CCA8122C9F532AD2321B923CD0B22F11F1F1F1F2BCD0B220E15F4 +:202320002323AF32AE2377230DC22623C9000000000000000000000000000000000000002A +:2023400000000000000000000000000000000000000000000000000000000000000000007D +:2023600000000000000000000000000000000000000000000000000000000000000000005D +:2023800000000000000000000000000000000000000000000000000000000000000000003D +:2023A000000000000000000000000000000000000000000000002056202000000000000067 +:2023C0000000000000000000000000000000001000000000000000000000000000000000ED +:2023E0000000000000000000000000000000000000000000000000000000000000000000DD +:202400001C24876F260009E55E23562A4D38CD360DD1D8EB732372AF326138C92A55382323 +:2024200023C30724F53A6A37B7CA43243A6138B7CA4324C5D5E52A4F38EB010B00CDD0193B +:20244000E1D1C1AF326138F1C9CD5A19CD7B0BCDE90AFE22CA5C24FE27C2D82447CDDC0A3B +:20246000CDDC0A2AC1372B2BE5B80E00CA7C240CCDDC0AFE0DCA8324B8C26F24CD9D0AB8A8 +:20248000CA6F24CDE90ACD7B0BFE2CCA9924FE3BCA9924B8CA9924FE0DE122C137C2D82458 +:2024A00079FE02DAD824CDD60A47CDDC0ACDDC0AC3BB24C5CDD315C1CDDC0AFE0DC8B8C296 +:2024C000B324CDD60AB8CAD224CD9D0AFE2CCA4924C9CDD315C34924CD030FF53A2439B75B +:2024E000FA1317F1CDD31579FE2CCA4924C9CD491EF578E683C4AA04F1C9CD5A19CD7B0BA6 +:00000001FF diff --git a/hex/m80.hex b/hex/m80.hex new file mode 100644 index 0000000..b3c2666 --- /dev/null +++ b/hex/m80.hex @@ -0,0 +1,578 @@ +:020000040000FA +:20010000210A01C3B7404D41430022F539AF018B02216A375F73230B78B1C2150121664809 +:2001200022BC37772424242422EB390120000922ED392100F822293921F7391162387EB71D +:20014000CA6B01F5E607124F23137E120DC24801E5CDA80CD1F17723131A1336202377EB6B +:20016000C33B01CDB5443E01326A37AF32D53932E63832A937327137327237326138327332 +:200180003732C939325E38214D38060A772305C28C013C32A63732AA3732AB37324C383E22 +:2001A0000A326F373A543A3269373E3132AE373C32AD3721010022AF372B22E4392B22B159 +:2001C000372AF539F921B402E5211E02E5AF32363932A73732B43732CA39CD1A04E1E50151 +:2001E000E401C5E921C33722C137010C847EB9CC050223FE0DCAFC0105C2ED01C1E1E5C5A6 +:20020000012D04C5E9F5E52AAF372322AF3721FFFF22B1373AAD373D32AE37E1F1C921B4DE +:20022000373E0132DF3932DE390E06CD7E02FE0ACA2B02CDAE02CA2B02B7F25402E67F0C71 +:200240000DCA2B02CDAE02CA2B02FE30DA2B027723C32B020E8321C337FE0ACA76020D0C58 +:20026000CA660277230DFE0DC27602773AB437B7C83D32B337C9CD7E02E67FC359023AA871 +:2002800037B7CA9002CD2548D0AF32A837CD6548CD3546DA9702C921CF04CD97403E0D3237 +:2002A000C337CD1F443E0ACD1F4437C37A29FE0CC0C3050221000022BE37AF32AC373D3200 +:2002C000CA392A55382259383AC337FE2AC2D5023E2432C337D62432C037CD080BC2E8037E +:2002E000FE3ACA69033AC037B7C20C033A62383DC20C03CD080B06082162387EB8D2010340 +:2003000034233E244E77792305C204032AC1372B7E23FE0DCA9A03E5CD0604CD080BCDFD2F +:2003200004C25F037EB7F25F03237EFE22CA3A03FE1CCA3A03FE0DC25F03E1F53AA637B750 +:20034000CA4204CD0604F1F5FE1CCA5103B7CDA80CF1FE22CA4829FE1CCA9C32C31729E17E +:2003600022C137CD0604C39A033AA637B7CA9403CD5A19CDA80C22BE37EBCD9319EBF620C0 +:20038000F5CDD60AFE3AC29003F1F640F5CD9D0AF1CD840DCD080BC2E803CDE90A3AA637EB +:2003A000B7CAAA03CDC10BCA5F33CDFD04C2E803B7F53AA637B7C2C303F1F24304F5E66038 +:2003C000CA4204F1F2D603237E21C509875F1600195E2356EBE91F1F1FE60F234EF5CD5A22 +:2003E0001921A709F1C3CC03FE3BC8FE0DC821C33722C1372ABE377CB5C4080B3AA637B792 +:20040000CA4304C34924216238116B3806094E1A777912231305C20E04C921803822743834 +:20042000217638012020712305C22604C9CDE90ACD7B0BE5FE0DCA4304FE3BCA4304CDA48F +:2004400004F5F1E13A6A37B7C26E043A7638FE56CA6204FE4DCA6204FE44CA6204FE58C29A +:20046000CD01323639CD3F19CDB517C3CD01CD7717C3CD01C50641C3BF04C50643C3BF04AC +:20048000C50644C3BF04C50645C3BF04C5064DC3BF04C5064EC3BF04C5064FC3BF04C50689 +:2004A00050C3BF04C50651C3BF04C50652C3BF04C50655C3BF04C50656C3BF04C50658E5CC +:2004C000F52176387EFE20C2CB0470F1E1C1C94E4F20454E442053544154454D454E5420D6 +:2004E000454E434F554E544552454420494E20494E5055542046494C4500C398043A6338E5 +:20050000FE2ECA7205FE24CA7A05FE5B3CD0D642B7F887C5D55F1600218005195E2356EBC0 +:200520003A62383D4F7EB7CA6E05B7FA43053A6937B77EC23E05FE50D24305C36205FE50FC +:20054000D26205E607B9C26205116438E54123231ABEC26105231305C25005E1AF7ED1C188 +:20056000C9E17EE607C6025F160019C32505D1D13CC9211F09C5D5C32005218F09C37505BB +:20058000B405E305E8054D069B06E506E606EE06F8065E0785078607B407CA07DC07080813 +:2005A0002C082D08A908FC0803090409050906091D091E092ACE43491A8844435200444314 +:2005C0001A804444520244442AC644491AA04E4152044E442AE64E4983005345478322536E +:2005E0004554005A0649540033CD414C4C5308414C4C31DC436A3F434631FC4D022F4D419D +:20060000023F4D431AB84D5032D44E4332C44E5A85014F4D4D4F4EC3144F4E4431F45051DB +:200620000A5072A9504473B950445232EC50452AFE504972A1504973B15049526A2F504C3B +:2006400032E4504F830253454731CC5A00022741416A27414112094144810342810443221C +:20066000054352120B4358520C45438303454642832245464C830345464D8305454653832C +:200680000745465701F34969F349530E4A4E5A81055383065345478107570001FB4969FB73 +:2006A00049C3084C534582094E44A30A4E4443A40A4E4449468B0B4E444D840C4E54525982 +:2006C000820D51555110586AD95858840E5849544D820F5854870F585445524E414C8410E0 +:2006E0005854524E000085204C4F42414C006B76414C5402764C5400C11146C2324642C26F +:20070000124645C2134646C333464E42C214465461124D29DB4E51144E52164E4386384ED5 +:20072000434C55444572AA4E4473BA4E445272A24E4973B24E495222044E5212034E58C291 +:20074000154631C2164632C41746444546C518464E44454692195250931A5250430031DAA3 +:200760004331FA4D32C34D5032D24E4332C24E5A31F25051185032EA504532E2504F511A00 +:200780005231CA5A0000511C44323A44410B0A44415872A8444473B844445272A044497365 +:2007A000B0444952332A484C44841B4F43414C4A01584900853841434C4942941C4143522D +:2007C0004F3A404F564206564900831D414D457244454702004F506A004F5000511E521A8A +:2007E000B05241821E52472AF6524973BB54445273B35449522AD355545220555473AB5561 +:20080000544473A355544900831F41474503E943484C12C14F5052224F50852055424C49B0 +:200820004313C5555348532455534800000217414C021F415201D84393214550545A26456E +:200840005302C9455452284554734D455449734545544E0220494D592A4C6A174C410207EF +:200860004C435A2C4C436B074C4341726F4C4401F84D02D04E4302C04E5A01F05002E85093 +:200880004502E0504F592E526A1F5241020F52435A3052436B0F5243417267524422C753DD +:2008A000545232535401C85A001A9842422ADE4249523442436A3743465A36455482224586 +:2008C000543322484C440230494D5A384C4103F950484C5A3A52415A3C524C323254410B71 +:2008E00002544158023754431A905542523E55428523554254544C2AD655490084244954BB +:200900004C450000000003EB43484752404F521AA852412AEE524903E354484C00000084F9 +:20092000363830383083375A38308725434F4D4D454E54842643524546872744455048419C +:20094000534584284C414C4C84294C495354852A5041535332852B5048415345862C5052B8 +:20096000494E5458852D5241444958873552455155455354842E53414C4C842F58414C4C63 +:20098000853058435245468531584C49535400851F454A4543548738494E434C5544458589 +:2009A000345449544C4500220E290E380E470E530E620E700E7C0E9D0EB90E200F230F26AD +:2009C0000F220E1D0EAB238528C4234924FA244425D9236B25AA257A297E251830C72698E9 +:2009E00004FE2FD428D42808261026102608261D2627263126322655315331183098043A9F +:200A0000283A23B627C726332F9804F926F02656325527283464274627FA04093428328ADD +:200A2000276C2773275C274E276C266D262427E2277B2783270D280488068000A002400C70 +:200A4000CD00B8080516101E000A461A00080410C31218220000B01C0020C120C502800E09 +:200A600000141014001418140818C7049802C0142014281438009000A8F51244122C1375B4 +:200A800013A9123B0FFB0F850F1C1048105812B9105B0F8F113D11D2116D0FD613E52AC179 +:200AA000377E2322C137FE0CCA9E0A6FFE41D2C30AFE30DABB0AFE3ADAC00A379F7DE1C9D5 +:200AC000B7E1C9FE5BDAD20AFE61DABB0AFE7BD2BB0AAF7DE1C9CD9D0AC3E90ACD9D0AF52F +:200AE000FE0DC21317CD9804F1E52AC1372B22C137E1C92AC1372322C137C9CD9D0AC0FE55 +:200B000061DA060BD620BFC9CD7B0BCDE90A216338012008712305C2140B21623836002385 +:200B2000CD640BC4B50B3265370E00FE61DA320BD62077230C79FE08CA520BCD640BF22B08 +:200B40000BCD8D0BD24A0BF22B0B4779326238AF78C9CD640BF2520BCD8D0BD24A0BF252FF +:200B60000BC34A0BCD9D0AF0FE24C8FE2EC8FE40C8FE3FC8FE5FC82FB72FC9CD9D0AF0FEA0 +:200B800020CA7B0BFE09CA7B0B2FB72FC9F5B7CA970BFE26C213173ACA39B7C2A00BF1C96D +:200BA000F1CD640BB7CAA10BFE26CAA10BCDE90ACD640B37C9CD8D0BD2BC0BC8C10E004769 +:200BC000C9214D393A6238F5CDDA0BCAD50BF1326238B77EC9C1C9218939CD920C060009DE +:200BE00009224B395E23562142390609AF772305C2ED0B2162387EFE06DAFE0B36062162DD +:200C0000384E0D7AB3CA740CEB5E2356D5235E2356D5E5237EE6073DCA2E0C11070019116E +:200C20006438471ABEC2410C231305C2230CE1237EE6073DB9C26E0C22BA37237E2BC1C1BC +:200C4000C93F9FE602E1F5EB1B1B1BF5D511453921423906061A77231305C2550CD1F177CA +:200C600023732372F1E1D1CA030CEBC3030C2B3E02C3460C3C2ABC377EC92AE9392323233B +:200C8000237EE60737C8E5C60616005F1922E939E1C93A6338FE240E00C8FE2E0E01C8FECC +:200CA0003F0E02C8D63D4FC9F5CDD70B22BA37C1F5C5F1CD3C0DF1C8E52A4939EB7AB3CA8D +:200CC000770D3A4839EB06004F09D1732372EB0E04AF77230DC2D20C22BA371162381AFEEA +:200CE00006DAE60C3E0677472313AF77237723772323231A77231305C2F30C22BC3723233F +:200D000023237011000119EB2AEB39CD360DDC97352ABA377CB73E00C921220DCD9740C3F5 +:200D2000000153594D424F4C205441424C452046554C4C0D0A007C92C07D93C9F53A583A82 +:200D4000B7CA13173AA937B7C213173A6A37B7CA13172ABA377EE640C21317F1DA620D3E82 +:200D600082DA3E81CDA745E521623846237ECDA74505C26C0DE1C92A4B39C3CA0CF5CDC1AB +:200D80000BC3AC0C477EE638C2AB0D237EE620C2BA0D2B7EF68077237EB077237323722394 +:200DA000D5EB2A5938EB732372D1C97EE607773A6937B7CCA40423C3920D7EE694C40A0EEB +:200DC0007EA8E603C40A0E23D55E235623E3CD360DC4FB0DD1E52A5938EB78E603FE03C2F7 +:200DE000ED0D7BBEC40A0E237ABEC40A0ED13A7638FE202ABA3723CA920DC93AAC37B7C2D0 +:200E00000A0E2ABA377EB7F29E04E5F52ABA37237EF6107778F61047F1E1C38C043EEDCDE1 +:200E2000D31579CDD315C3F30AC5CD030FCDDF0E878787C181C3D315C5CD030FCDE90E870D +:200E40008787C181C3D315C5CD030FCDFB0EC181C3D315C5CD030FCDFB0EC187878781C31C +:200E6000D31579F5CD030F4FF1CDD31579C3D31579F5CD3D29F1CDD315C33516C5CD030F2B +:200E8000CDFB0EC1878787814FC5CDD30ECD030FCDFB0EC181FE76CC7404C3D315C5CD03F4 +:200EA0000FCDFB0EC187878781F5CDD30ECD030F4FF1CDD31579C3D315C5CD030FC1CDE9C0 +:200EC0000E87878781F5CDD30ECD3D29F1CDD315C33516CDE90ACD9D0AFE2CC49804C9B726 +:200EE000C8FE02C8E602C37404FE07F5D2F40EE601CAF70ECD7404F1E606C9FE08D8E60705 +:200F0000C37404CD3D297AB7CA120F3CCA120FCD74043A2739B7FC8604E603C474047BC99B +:200F200006001106CB1106ED59160021370A195E234E21790A195E2356EBE9C5CD030FFE02 +:200F400003D47404CDC915C178CDD3157BFE013FCE00E60387878781C3D315C5CD030FE6EE +:200F600038BBC47404CDC915C181C3D315C5CD0E11DC7404E608C4A90FC1CD23113A6737A1 +:200F8000E606C3540FCD491E3A2839B7C2A40FCD00113A6637FE30C4B90F3A6737E6070E02 +:200FA000C0C3540F3EC9C3D3153A6737E620C6DDCDD3153E04326737C9FE10C274043A679F +:200FC000373CFE02CACD0F3DFE06C274043C326737C9C5AF326837CD7B0BCDE90AFE28C268 +:200FE000E50F326837CD3D2979D62CC1B7C0CD00113A6637FE30C4B90F37C9CDD20FD21542 +:20100000100EC43A6737878787E638814FC5CD3D29CDC915C179CDD315C33516CDD20FDA6B +:2010200043103A6637FE203FD21510FE28CCA90FCD1B113A6737FE04C47404CD00113EE974 +:20104000C3D3150EC2C30310CDD20FD263103A6737FE04D47404E603878787C6204FC5CDE1 +:201060003D29C1CD6F107948CDD31579C3D3153A273947E680C28604CDC91578E60347CDB0 +:201080009319B8C2AA04FE03C29A10D52A5538EB2A5938CD360DD1C2AA04CD93192323EBE2 +:2010A000CD02347AB743CAB3103CC2740478B7F27404C978B7FA7404C9C5CD3D29C1C3630B +:2010C00010CDD30EC5AF326837CD7B0BCDE90AFE28C2D710326837CD3D29C13A6637B7C810 +:2010E000FE30CC74046F3A6837B77DCA0011FE28C200117AB7CA05113C57CA0511CD740465 +:201100007AB3C474043A2739E6DFC4AA04C9CDC4103A6637B7CA7404FE20C93A6837B7CC18 +:201120007404C93A6837B7C47404C9CDC4103A6637FE10C03A6737FE08D8C37404CD2B1199 +:20114000CDD30ECD1B113A6637FE10CA6F11B7C47404CDF3103ED3CDD3157BCDD315CD0E25 +:2011600011D474043A6737FE07C47404C323113A67373DC47404CD0E11D47404CD23113E3A +:20118000EDCDD315CD2311CD2E110E41C3540FCD0E11D47404CD2311CD2E11F5CDC110CD86 +:2011A0001B113A6637FE10CAC011B7C474043EDBCDD315F1FE07C47404CDF3107BC3D3159A +:2011C0003A67373DC474043EEDCDD315F10E40C3540FCD0E11DC7404CDD30ECD2E1ECA1296 +:2011E000123A6737FE02CA2612FE06C47404CD1B11CD0E11DC7404CD2311CD00113A6637D4 +:20120000FE28CCA90F3A6737FE04C474043EE3C3D315CD2311CD0E11DC7404CD2E1EC474B0 +:20122000043E08C3D315CD2311CD0E11DC74043A6637FE20C474043A6737FE04C474043EF3 +:20124000EBC3D315C5CD030FFE08D47404E607878787C1814FCDD30ECD2B11F637F53A6676 +:2012600037FE28F5CCA90FE1F1E5F53ECBD4D315F1DA7A12F17BCCD315F5F53A6637B7CC6C +:201280007404E6203A6737C2941281CDD315CD2311F1F1C9FE04C474043E0681CDD315CD29 +:2012A0001B11F1D21317C3EF12CD2B113A6637B7CC7404FE10CAE212FE28F5CCA90F3A676A +:2012C00037FE04C2CD123A6837B7C2EA12CD2311F1790DFE05C2DA120E0B3A6737E606C31D +:2012E000540F3A6737E607C3540F3E06CDE512F17BCCD315C9CDC4103A6637B7CA1F13FE86 +:2013000010CA1613FE28F5CCA90FCD1B113E0681CDD315C3EF123A6737E60781C3D3153EC5 +:201320004681CDD315CDF3107BC3D315CD0E11CDD30ECD23113A6637FE10CA6A13FE20C492 +:2013400074043A6737FE04C474043EEDCDD31579EE101FE608C6424FCD0E11C47404CD2E21 +:201360001ECC7404CD2311C3DA123A6737FE07C47404C3F512CD0E11CDD30ECD23113A663D +:2013800037FE10CA6A13FE28CA98133A6737FE04C474040E09C358133A6737F5CDA90FCDAC +:2013A0000E11DC7404F5CD2E1ECC7404CD23113A6737FE04CC740447F178CAC513F1B8C48A +:2013C00074043E04F5C1E6060E09C3540F3A6637FE10C47404C9CDC4103A6637B7CA11146C +:2013E000FE10CAE4143A6837B7CA71143A6737E606FE04CA4915D47404F5CDC410CD23116D +:20140000CDCD133A6737FE07C474040E02F1C3540FD5CD1B113A2239F53A2739F5CDC1105A +:20142000CD23113A6637B7CC7404FE20DA61143A67374FE606FE04CA51143EEDCDD31579CF +:201440000E43CD540FF1322739F1322239D1C335163A6637FE28CCA90F3E22CDD315C3458D +:20146000143A6737FE07C474043E32CDD315C345143A6737F5CDC1103A6637FE20D2A11417 +:20148000B7C474043A6837B7C2BA140E01F1F5E660C69DFEC0D4D315F1E606CD540FC3351C +:2014A00016C4A90FF1FE06C47404CD23113A6737FE04C474043EF9C3D315F13267374FE67A +:2014C00006FE04C2D41479FE40D4A90F3E2ACDD315C335163EEDCDD31579E6060E4BCD542D +:2014E0000FC33516CD23113A6737FE08D22D15F5CDC1103A6637B7C20E153A6837B7C27410 +:2015000015CDF3100E06F1CD540F7BC3D3153A6637FE10CCAB15FE20C223153A6737FE0428 +:20152000DA8215F1878787C6404FC35C12F5CDC110CDCD133A6737FE07C474043EEDCDD30A +:2015400015F1E6010E47C3540F3A6737D5F5CDC110CD2311F1F5E660C69DFEC0D4D3150ECB +:20156000703A6637B7CA9315CD5C12F1D1FE407BD4D315C9F1FE07C474043E3ACDD315C39E +:201580003516CD1B11F1FE07C474043A67370E0AC3540FCDF310CD23113E36CDD3154BF189 +:2015A000D1FE407BD4D31579C3D3153A6737FE084F3A6637D8E1F1FE07C474043EEDCDD307 +:2015C0001579E6010E57C3540FF53A6637B7C4A404F1C9473A6A37B7C4E815E52A4D382311 +:2015E000224D38E1C2321AC9E5D5C5F5CD24242A7438118C38CD360DC5D47717C12A74388A +:20160000EB3A5A3AB7CA2F1660AF298F298FC63012130602AF0E03298F0DC21716C630122D +:201620001305C21416EB23227438F1C1D1E1C9CD6017C325163A6A37B7C41517E52A4D3845 +:201640002323224D38E1C83A273947CDDF163A273947CDAA192A7438E683C26916232274A7 +:201660003843CD321A42C3321A78E680C5C2801678E603FE02FA9116CA8E163621C3931657 +:20168000362AEB2A253923237E23666FEB013622013627C12323227438CDAA1978E603C58E +:2016A000CAD416CD451A43CD361A42CD361AC178E680C82A4D382B2BEB2A2539233A4C38CB +:2016C000477EE6FCB0772373237223EB2A5738EB732372C943CD321A42CD321AC3AE16F55B +:2016E000B7F213173A23393227393A2239B7CA1317E5C5D578CDAA19E603C2FF167AB30E2D +:2017000009C4D019AF322239D1C12A2539237E322739E1F1C9F5E5D52A7438118838CD3696 +:201720000DD477172A7438EBE1E53A5A3AB7CA5417AF29CE301213C50605AF0E03298F0DA9 +:20174000C23D17C630121305C23A17EB227438C1D1E1F1C9C544CD601745CD6017C34B175F +:20176000781F1F1F1FCD691778E60FC630FE3ADA7417C6071213C9F5C5D5E5CD3F193AABEF +:2017800037B7C28A173A7638FE20C4B5173A7638FE20CAA6173A7F3A3CCAA617323639CDB1 +:2017A000B517AF3236393C32A737CD1A04CD5A19E1D1C1F1C93AC939B7CAE1173DC2C717D7 +:2017C0003ACA39B7CAE1173E2B3290383AAA37B7FAE1173A7638FE20C2E1173A7838FE2064 +:2017E000C83AA837B7CAED173E43328F383A3639B7C21F183AAB37B7C201183A7638FE20FC +:20180000C821AE37343AAD37BECC99183A3639B7C21F183A583AB7CA1F183E83CDA74521F5 +:20182000763806207E23CD8D1805C224183AA737B7C283183AC9393DFA4C18C245183ACA98 +:2018400039B7CA4C183AAA37B7CA831821B43706067E23FE30DA5F18CD8D1805C251183E1B +:2018600006B8C26C183AB337B7CA71183E09CD8D1821C3377E23FE0DCA8318FE0CC48D18DE +:20188000C374183E0DCD8D183E0AC38D184F3A3639B779CAA745C31F443E0432AE373AAB4A +:2018A00037B7CAB6183E0CCDA745219638CDFE18212019CDFE182AAF37237CB52BF53AAB27 +:2018C00037B7CACD18F1F5CAF618CD0819F12AB1372322B1373AAB37B7C87CB5CAE7183EBC +:2018E0002DCDA745CD0819CD831821E638CDFE18CD8318C383183E53CDA745C3CD187E2331 +:20190000B7C8CDA745C3FE1801F6FF50580913DA0D19E5EB7CB5C40B193E3AC181C38D18F1 +:20192000094D3830095645525320312E312009202020202020202020095041474509003A3E +:201940007638FE20C8FE51CA52192A6B3723226B37C92A6D3723226D37C9CD9319F53A6A61 +:2019600037B7CA13173A7838FE20C21317F1EB217838227438CD1517E603C54F0600218F6A +:2019800019097E2A743877218038227438C1C9202722212A4D383A5E38B7CAA619D5EB2AF6 +:2019A0005F3819D1AFC93A4C38C9F5C578E603FE03C2CD19D5E52A5738EB2A5938CD360DBA +:2019C00022BA372257380E01C4D019E1D1C1F1C9C50600CD451A413E04CD161AC179FE05A6 +:2019E000DAF719FE0FC83E02CD161A43CD361A42CD361A79FE08D0E52ABA377EE6074757D4 +:201A00003E03CD161A23232323232346CD361A2315C20B1AE1C9D5573E0892CA261A5F78A5 +:201A2000871DC2201A47788747CD511A15C2261AD1C9AFCD511AC50E08781747CD511A0DB3 +:201A4000C2391AC1C937CD511A781F1FCD511A781FE52129397E17772334C2651ACD0E46C6 +:201A60003EF8322A39E1C9C5CD080BC1CA4C1CF2101BFE20CA671AFE09CA671AFE27CACCC6 +:201A80001AFE22CACC1AFE28CAB51AFE29CAB81AFE2BCABB1AFE2DCABE1AFE2ACAC11AFE7A +:201AA0002FCAC41AFE3BCAB31AFE2CCAB31AFE0DC49804AF113E02113E03113E08113E0952 +:201AC000113E0A113E0B113E01FE01C9210000C547CDDC0AB8C2E21ACDD60AB8C2021BCDD4 +:201AE000DC0A6F322439CDDC0AB8C2F81ACDD60AB878C2FD1ACDDC0A656FCDDC0AB8C1C397 +:201B0000771B1124391AB7C20C1B3D1278C3FD1A2AC1372BE5CDFB0AF2151B3224392AC1CA +:201B2000372B2B22C137CDFB0AE122C137C2041CFE47D2511B673A6F37FE0ED2041C6F7C9C +:201B4000FE44CA511BFE42C2041C7DFE0CD2041C7CFE42CA801BFE44CA9E1BFE48CAA61BBB +:201B6000FE4FCA6D1BFE51C49804C29E1BCDC51BFE4FCA7A1BFE51C498040E20EBC3C71AD7 +:201B8000210000CDFB0AFE42CA7A1BD630FC9204FE02D4920429B7CA831B23C3831BCDAE6A +:201BA0001BFE44C3771BCDDE1BFE48C3771B210000CDFB0AC8F8D63029545D2929191600FE +:201BC0005F19C3B11B210000CDFB0AC8F8D630FE08D492042929295F160019C3C81B210005 +:201BE00000CDFB0AF8FE47D2FE1BD630FE0ADAF31BD607292929295F160019C3E11BFE48E1 +:201C0000C8C392043A7037B7C23D1C210000C5CDFB0AFA391CD630FE0ADA211CD607DC9279 +:201C2000044F06003A6F373DB9DC92043C5F50C5CD8521EBC109C30F1CC1C3461CCDAE1BC1 +:201C4000C3461CCDC51BCDE90AC37A1BC5CDE90A3A6238322439FE05D2AB1C3DCAB21D211F +:201C6000DE1D0111000DCAAB1C0405CA721C23C36A1C06041163381ABEC2651C132305C21E +:201C8000771C211D1E097EC1B7F2C91ACD7B0B11FFFFFE3BCAA51CFE0DCAA51CCD9D0AFE53 +:201CA0000DC29C1C13CDE90AC3C71A2AC137E5CD9D0AFE23C2D91CCD9D0AFE23C2D91C3750 +:201CC000CDA80CCD0529237E47E620C48C0478E603F68077C12BC3F41CE122C137CDD70B8F +:201CE000CA471D3A6937B7CAF01CCDFD04CA7C1D37CDA80CE6A347E68078CA051D3223393E +:201D00000680222539E610C480043A6937B73E00C2161D7EE638B77823235E2356C14FCAF9 +:201D2000241D1E00E603FE03C2351DD5235E2356EB225938D179E62079C2C71AE680CCB08B +:201D400004110000C3C71AE5F537CD3C0DF1E122BA377EE638CA761DF53A6637B7C49804E2 +:201D6000F132663723237E326737CD2E1ECC401E2B7E2BC3F41C237E2BC3F41CB7FAF01CC9 +:201D8000235EE6781F1F1F4F16004221A81D097EB7CAA21DFE1DC29C1D322C39C10E20C3D4 +:201DA000C91AC10E20C3C71A001B1A181900001D191A3A6338FE58C2CE1DCDD60AFE27C28B +:201DC000AB1CCD9D0ACDDE1BFE27C1C3771BFE24C2AB1CCD9319EBC620C14FC3C71A584F77 +:201DE0005220414E44204E4F54204D4F442053484C20534852204F522020455120204E450F +:201E000020204C5420204C45202047542020474520204C4F5720484947484E554C20FF16D4 +:201E20001514131211100F040E0D0C0706053A6637FE20C03A6737FE06C03A6537FE41C9B8 +:201E4000CDD60AFE27CC9D0AC9AF470E206F67322C393222393224393266373267373922CD +:201E60002D39C5CD671AFAC91ECA081FFE03FA261FCA891FFE18DA7C1ECD0E1F4F322B39FC +:201E8000CD2B1F3DB879D2A31FFE08CA9B1FFE09CA9B1FCDD11F79322F39CD361FFE02CA58 +:201EA000EA1EB7C2B51E3A2B39FE03C2EA1ECC9804C5C3EA1EC5CD2B1FF53A2F394FF1CDED +:201EC0000E1F473A2B39C37C1EF5CDE90ACD9D0AFE2CC2E61E3A2C39B7CAE61EF1AF322C58 +:201EE000393E1CC37C1EF1C3471F3A2F394F3A2B39FE03CAFD1EC5CD0E1FC3A31FC1C57821 +:201F0000CD2B1F473A2F394FCD0E1FC3631EE1D55F79E603FE037BC2211FEB2A5938E3E5D1 +:201F2000EB160159D5E947C5C3631ED52150205F1600197ED1C9E1C178FE01C2461FCD9887 +:201F400004C5AF47FE01E9E17CFE019F322839E5CDD11F79322F39CD361FFA771FFE02CA1B +:201F60005622C53A2F394FCD0E1FC3501F110000CDF30AAF322F393A2F39473227392AC17D +:201F8000372B4E7B2A2D39F9C9322B39D17AFE02CC9804B7CC9804D5C3931EE37CE33DCACA +:201FA000931E79C157C5783D7ACAC81F7AFE07CAC81FFE08CA631EFE15CAC81FFE16CAC84F +:201FC0001FFE09C498043E1747C5CD2B1F47C3631EE1223439D17AB7D5C2E41F110000D586 +:201FE000112001D5CD3720225B38EB223039EB79322F39CD361FFA2E20D602CA2E203233CE +:2020000039FE05CA1820FE14CA1820FE13CA1820FE15CA1820CD37203A33392A3439E521DF +:202020006A2087856F3E008C677E23666FE9C53A2F394F2A3439E9E1C105C49804CA4220A2 +:20204000C5E9D179E603FE03C2251FE3225938C901010101040405060808090909090907DE +:2020600007070707070A0A0A020202020302A220AC20B620C020262148218221CE21352235 +:20208000F420052161226C22782285228B229422BE22B122D620CB22D722E622F52204237C +:2020A0001A23CDA2217AB4577BB55FC9CDA2217AAC577BAD5FC9CDA2217AA4577BA55FC9CC +:2020C0003A2F39E683FE00C4AA042A30390E207C2F577D2F5FC92A30393A2F39F5E680C49A +:2020E0008604F1E603C4AA047C2F577D2F5F133A2F394FC9CDA221EB131B7AB3CA03212943 +:20210000C3F920EBC9CDA221232B7DB4C87A1F577B1F5FC309212A30393A2F39E680C879A6 +:20212000E680FC8604C9CD162179E680C237213A2F39E680CA4221CD422179F6804F3222F6 +:2021400039C9CDB22119EBC9CD16213A2F39E680FC860479E680CA6421322239CD642179F8 +:20216000F6804FC93A2F39E603CA7B21F579E6034FF1B9C4AA04CD23230E207B955F7A9C58 +:2021800057C9CDA221444D2100003E113DCA9E2129E5C5E129E3C1D28C2119C38C21EB0E46 +:2021A00020C93A2F39B9C4AA04FE20C4AA042A3039C93A2F39FE20CACA2179FE20C4AA04FF +:2021C0003A2F394F2A5B382259382A3039C9CDA221C5EB7AB3CC98047AB742FC2D227CA88B +:2021E000477CB5CAF6217CB7EBFC2D22C5CDF921F1B7FC2D22EBEBC1C97C2F477D2F4F032E +:202200002100003E11F5B7C31422F5E509D21322F1373EE17B175F7A17577D176F7C1767A2 +:20222000F13DC20A227CB71F677D1F6FC9AF4F935F799A57C9CDA221C5EB7AB3CA53227CAA +:20224000B5CA53227CAAF5D5EBCDD121EBE1F1FC2D22EBEBC1C93E4F116D1FD5C547C3BFFB +:2022600004CDA322CD360DD601C37F22CDA322CD360DD6013FC37F22CDA322EBCD360D9F35 +:20228000575F0E20C9CDA322C39822CDA322CD360DC37F22CDA322EBCD360D37F27F223FE6 +:2022A000C37F223A2F39B9C4AA04CD23232A3039C93E204F322F392A30395CAF57C93E201B +:2022C0004F322F392A30395DAF57C9CDA2217DCDFB0EE607835FC9CDA2217DCDFB0EE6070B +:2022E000171717835FC9CDA2217DCDE90EE606171717835FC9CDA2217DCDDF0EE602171764 +:2023000017835FC9CDA2217DCDFB0EE6076F7BCDFB0EE607171717855FC9CDA2217DE63F5A +:20232000835FC9E603FE03C0E5D52A5938EB2A5B38CD360DC4AA04D1E1C9CDCB28CD491E3A +:20234000EB78E620CAB604AF32613878E60347CA6D233A4C38B8C2AA04FE03C26D23E52ACC +:202360005538EB2A5938CD360DC2AA04E13A4C3847EB2A55382259383A6A37B7C4AA19EB6B +:20238000224D38EB0E0B3A6138B7C29B233A6A37B7C4D0193A3739B7CCEE233A3739B7C8E2 +:2023A000AF323739CD080BCAA404C9CDEE23CD5A193E0047324C383C3237393261382A4F36 +:2023C00038C37123CDEE23CD5A193E0132373947324C382A5138C37123CDEE23CD5A193E0C +:2023E0000232373947324C382A5338C371233A3739B7C4CB283A4C38014F38E603FE03CA1E +:202400001C24876F260009E55E23562A4D38CD360DD1D8EB732372AF326138C92A55382323 +:2024200023C30724F53A6A37B7CA43243A6138B7CA4324C5D5E52A4F38EB010B00CDD0193B +:20244000E1D1C1AF326138F1C9CD5A19CD7B0BCDE90AFE22CA5C24FE27C2D82447CDDC0A3B +:20246000CDDC0A2AC1372B2BE5B80E00CA7C240CCDDC0AFE0DCA8324B8C26F24CD9D0AB8A8 +:20248000CA6F24CDE90ACD7B0BFE2CCA9924FE3BCA9924B8CA9924FE0DE122C137C2D82458 +:2024A00079FE02DAD824CDD60A47CDDC0ACDDC0AC3BB24C5CDD315C1CDDC0AFE0DC8B8C296 +:2024C000B324CDD60AB8CAD224CD9D0AFE2CCA4924C9CDD315C34924CD030FF53A2439B75B +:2024E000FA1317F1CDD31579FE2CCA4924C9CD491EF578E683C4AA04F1C9CD5A19CD7B0BA6 +:20250000FE22CA0A25FE27C474044FCDDC0AFE0DC847CDD60AB9CA202578CDD315C30B2590 +:20252000CDF30ACDD60AB9CA392578F680CDD315CD9D0AFE2CCAFA24C978CDD31579CDF3EB +:202540000AC31125CD5A19CD5825CD24242A4D38193A4C3847C37123CDEE243A6A37B7C084 +:202560003A7638FE55C03C327638C9CD5A19CD2424CD491ECD351679FE2CCA6B25C93A7169 +:20258000373DFAA625473271373A72373DB8C294253272373A7237909F3C32A637CDD32591 +:2025A000327337C3F30ACD7A04C93A7337B7C47A043A7137B7CC7A0421723796CACF253D50 +:2025C000C2F30A343D32A6373C327337C3F30A35C3C5253A71375FFE323E00D05721743760 +:2025E00019377EC9F5CDD325117337D2F0251A77AF12217137343AA637B7CA1317F132A60E +:2026000037217237B7C834C9CD5A267AB3C3E425CD5A267AB32FCAE425AFC3E4253A6A3725 +:20262000CDF30A3DC3E4253A6A37CDF30AB7C3E425F637F53AA637B7CA6126CD080BCDD7DA +:202640000BC24926E6A0C25426CDC10BCA5426F19FC3E425F13F9FC3E4253AA637B7C258C0 +:2026600025C1AF21340D22C137C3E425F637F5CD7B0BFE3CC47404CDD60AB7C28F26CD9D4D +:202680000ACDD60AFE26C28F26CD9D0AC377262AC1372B110000237EFE3EC29F26545DFEA3 +:2026A0000DC2962623E52AC1377AB3CC74043A7638FE20C2C326CD360DE122C137CA5426F4 +:2026C000C34F26E1C36126CD080B4FC5C4740437CDA80C237EF64077C1E620CCB0047EE6B6 +:2026E00080C48C041F1F1FB67779FE2CCAC726C911963801004FC300270E0011E638063BC2 +:20270000CD7B0B2AC1372B7E23FE0DCA1D27B9CA1D270405CA0727121305C30727AF122398 +:2027200022C137C9CD7B0BFE28C27404CDDC0AFE27C274044FCDFB26CDE90ACDDC0AFE291A +:20274000C47404C3F30A3E0132AB37C3F30AAF32AB37C3F30AAF32A937C3F30A3E0132A94C +:2027600037C3F30A3EFF32AA37C3F30AAF32AA37C3F30A3E0132AA37C3F30A3E01326937AD +:20278000C3F30AAF326937C3F30A3EFF327037CD5825AF3270377AB7C274043A7638FE20DF +:2027A000C07B3DF8CA7404FE10D274043C326F37AF676BC35D19CD58257AB7C274043A6AE8 +:2027C00037B7C87BB7CAD927FE0ADC74043A7638FE20C2D9277B32AD37CD7717CD1A04C389 +:2027E0009918CD080BC27404F53A6238FE08DAF627CDA4043E07215D38773A6A37B722BAF3 +:20280000370E03C4D019F1FE2CCAE227C93AA837B7C29804CD7B0B2AC1372BCDA247B7CA07 +:202820002828CD6548C3B6043D32A8372AC1377E2322C137FE21D22C28C9CD7B0BFE28C2DD +:202840007404CDDC0AFE27C27404CD080BC27404FE27C27404CDDC0AFE29C27404CDF30A97 +:202860003A6A37B7C03A6238FE06DA6F283E06116338213839477EB7C28C041A77231305A1 +:20288000C27B2870C9CDCB28CD7B0BFE2FC27404CD080BC4C328FE2FC27404CDF30ACDA8EB +:2028A0000C237EE6D0C28C04E57EF62477CDEE23E12B2255383E03324C38210000224D3817 +:2028C000C36D23F53E01326238F1C93A5E38B7C8C1C39E04CD080BC2F628F5B7CDA80CCDBC +:2028E0000529237EE664C2FC287EE603F68077F1FE2CCAD428C9CD7404C3F028F61077CD71 +:202900008C04C3EF287EE638C87EE60777E5AF237723772377E1C922BE37CD3D293A7638C9 +:20292000FE55C878E680C2860478F62032AC372ABE3722BA37CD840DEB78C35D19CD491E4F +:202940003A2839B7C8C3A40422BE37CD3D2978E680C286042ABE37CD0529237EE694C28CFB +:20296000047EE640B0F620772373237223D5EB2A5938EB732372E1C35D19F5CDE9443AC9AA +:2029800039B7C4292B3A7137B7C45A2BF1216A37347E3DC2212A2138397EB7C2AA2921968B +:2029A000387EB7C2AA2921A03A230106001138397E23FE20CACC29FE09CACC29B7CACC29B4 +:2029C000FE0DCACC291213040DC2B0292132397022BA370E02CDD019CDEE2321664822E9CF +:2029E00039CD7A0CDA082A22BA377EE67F77237EE640C21D2B7EE604CAE129235E235601CA +:202A00000500CDD019C3E1292A5338EB010A00CDD019010D012A5138EB7BB2C4D019C36320 +:202A2000012AC137F5D4491ED5C5CD771721FFFF22AF3722B137CD991821A62BCDFE1821A9 +:202A40004D393E08CD2536CD8318219B2BCDFE182189393E04CD2536CD8318CD662B2A6BA8 +:202A6000377CB5CA7C2AE5CD0819E13A7F3A3C323639C40819AF323639C3822A21FD2ACD41 +:202A8000822B21012BCD822B2A6D377CB5CAB72A3E2CCDA7453A7F3A3C3E2CC41F44E5CD83 +:202AA0000819E13A7F3A3C323639C40819AF32363921112BCD822BCD662BC1D1F1D2C52A96 +:202AC0000600110000CDAA190E0ECDD0192A29397CFEF8CADD2AAFCD511AC3CD2A010F00FD +:202AE000CDD0190600CD361A3A583AB7CAF42A3E80CDA745CD0C45CD4C45C300014E4F201E +:202B00000020464154414C204552524F5228532900205741524E494E47285329000E003ABD +:202B20004C3847CDD019C3E129CD7F2B21382BCD822BCD5219C3662B524550542F495250F1 +:202B40002F495250432F4D4143524F00554E5445524D494E415445442000CD7F2B218F2B75 +:202B6000CD822BCD52193E0DCD83183E0ACD83183A7F3A3CC83E0DCD1F443E0AC31F44213F +:202B80004C2BE5CDFE18E13A7F3A3CC8C39740434F4E444954494F4E414C0053594D424FC6 +:202BA0004C533A0D0A004D4143524F533A0D0A003AC939B721000022F13922F3392AC73937 +:202BC000C2E72B21000039EB2100FE19E52AED39E5EBCD02347A1F577B1F5FE119D1CD36E5 +:202BE0000D3E00DAE72BEB3C32C939AF32CA3932D439EB2AED3924CD360DD2022CEB22C7DD +:202C000039C925EBCDE03521C93935C3B02BCDFD04C07EB73CF03DF5E610CA382C3AD4393E +:202C20003C32D439F1E608EE08C03AD439B7C83AD4393D32D4393CC9237EFE1BC2242C3AF0 +:202C4000D439B7C2242C3ADE39B7C2242CF137C922C7393AC9393D32C939C9CD9D0AFE2663 +:202C6000C2972C2AC1377EFE20CA952CFE09CA952CE5C5CD080BCDA32CC1E122C137C295BB +:202C80002C3E2632CB39C3042DFE26C2972C3ACB39B7C29C2C3E26CDDB34B7F8F5AF32CBC2 +:202CA00039F1C92AD63906007EB7CAD12C1162381ABEC2C62C4F2B131ABEC2C62C0DC2B611 +:202CC0002C78F680BFC92B7EFE07D2C62C04C3A82C3ADF39B7C02AE03906C07EB7CA022D45 +:202CE0001162381ABEC2F72C4F2B131ABEC2F72C0DC2E92CAF78C92B7EFE07D2F72C04C3E4 +:202D0000DB2C3CC92AC137E5CD080BF5CDA32CC23D2D47F1E1F57E23FE20CA222DFE09C254 +:202D20002A2DE5CD972CE1C3162D78CD972CF147F5F1C2892CFE26C2892CC3E90AF1E1F52B +:202D400022C137CD9D0AFE20CA562DFE09CA562DCDE90AC35C2DCD972CC3432DCD640BC259 +:202D6000312DC36B2DCD640BFA312DCD972CC3652DCD9D0AFE3BCA8D2DC37F2DCD5D35CD55 +:202D8000972CFE0DCA3E35CD9D0AC37F2DCD5D35CD5D35FE20CA902DFE09CA902DB7CD844C +:202DA0003522F339CA3E35FE0DCA3E353E0DCDDB34C33E35E5F53ADF39B7CAC52DD5EB2A25 +:202DC000EB391934D1F1E67FF587FA0F2E2ADA397EB7CAFE2DF1C547042B05CAE92D7ED5DD +:202DE0002F5F16FF19D1C3DA2D7EB7CA0C2E3D472B7E0405CA0C2ECDF72E05C3F02DF12B16 +:202E00003C3DCA092E2BC3012E7EE1C9C1E1C93E2ECDF72ECDF72EF1E63FC52AE6394F06BF +:202E2000000923D5EB2AE439CD360DEBD2322E22E4392BD144CD601745CD6017C1E11B1A0F +:202E4000C9E5CD080BE1C45A2EF51162381A3C4F1A77132B0DC2502EF1C9FE0DC8FE3BC8C8 +:202E6000D1C374040600C5E52BCD7B0BFE27CAA62EFE22CAA62EFE3CCAC42EFE3ECACF2E9E +:202E8000FE2CCAD92EFE20CAD92EFE09CAD92EFE3BCAD92EFE21CCDC0AFE0DCAEC2E772B04 +:202EA000CD9D0AC36C2E4F772BCD9D0AB9CAB82EFE0DCAF12EC3A72E772BCD9D0AB9CAA7A7 +:202EC0002EC36C2E0405CACB2E772B04C3A02E05CAA02EFADE2EC39E2E0405C29E2ED17B4F +:202EE000953D12C1EB2AC1372B7EEBC90405CADE2ECDBC04C3DE2EF5E5214538CD360DD22E +:202F00000A2F23360D2BEBE1F1C9E1F11213C9CD042DFE26CC042DFE3ACA042DFE21D0FE62 +:202F20000DC8F5CDC10BCA2F2FCDFD04CA1317F1C3042DCD58253A7638FE20CA412F1100C4 +:202F400000EB22CC39CDB02BC1D1E101552FC5D53E0DC33304C101502FC5CD080BFE3ACCF6 +:202F6000080BCD0E2CCA762F11C3371ACDDB3413FE0DC26B2FC9AFCDDB34CD3E35C1D1E146 +:202F800021B402E5D52AF139E5E52ACC39E521B402E521982FE5C5C9CDE92FC1E1D1CD36FC +:202FA0000DC2C52F3AD539B7C2B02F78B1C2C52FCD36342AC739CD502CAF32D539D1D52A66 +:202FC000CE39E5EBE9D5CD1235B7CAF82F11C337CD2835CDF72EFE0DC2D02FE5C52AD039D0 +:202FE000E52AD239E52ACE39E9D1E122CE39E122D239E122D039EBE90B626BC39D2F3AC985 +:2030000039B7CABC0432D539C1E1D1111B30D5E5C5AF32D439C3F30AC398043AD539B7CAD2 +:203020007A30C101CD01C5CD080BFE3ACC080BCDFD04C0B7F04FE608C24E3079E610C25661 +:203040003079E620C25E3079E640C26B30C93AD4393D32D439C93AD4393C32D439C93AD487 +:2030600039B7C03A7137B7C8C37E253AD439B7C0237EFE08C83EFFC3E425C1D1E121B40259 +:20308000E5D5C5C9B7F5CDB02B22D639CD412E4F3A7638FE20CA9D30CD502CF1C979360089 +:2030A0002BFE2CC47404F1F5CAD930CDDC0AFE3CC47404F177E5F50E002B3A7638FE20C25A +:2030C0003431F1F547CAE730CD642E0CFE0DCA3131FE3ECA3431C3C830CDD60AD63C32DDE7 +:2030E00039CC9D0AC3B330CD9D0AFE0DCA2A31F53ADD39B7CA0C31F1113431D5FE20C8FEB7 +:2031000009C8FE3BC8FE2CC8D1C32431F1FE3CCA2031FE3EC224310405CA343105C3243114 +:2031200004C324310C772BC3E7303ADD39B7C23431CDA40436002BCDF22B78B7C47404F1A1 +:20314000E122D83926006922CC39C1D1E1015A31C34E2FAFC23E01C38430C101502FC52A0F +:20316000F3393E0132DF39E5CD0F2FF5CD0E2CCA9E31F1E1FE0DCA7C2DFE3BCA712DFE27FF +:20318000CA8E31FE22CA8E31CD042DC3743147CD5B2CFE0DCA7C2DB8CA8831C38F31F1E1EE +:2031A00022F339AFCDDB34CD3E35C1D1E121B402E5D52AF139E5E52AD839E52ACC39E5217F +:2031C000B402E521C931E5C5C9CDE92FC1E1D13E0132DF3922DA39E1CD360DC2FA313AD5C3 +:2031E00039B7C2EA3178B1C2FA312ADA3923237EFE0823D2EF312BC3B02FEBD5CD1235B778 +:20320000CA213211C337CD1235B7FCB42DCD8435CDF72EFE0DC20632E52ADA39E5C5C3DDF5 +:203220002F0B626BD1C3DE31CD7B0BFE0DCA74044FCD1F44CDDC0AFE0DCA4332CD1F44B9DF +:20324000C234323E0DCD1F443E0ACD1F443A7638FE20C0C3F30ACD7B0BFE0DCA740432DC1F +:20326000394FCD9D0AFE0DCA7132B9CAF30AC36232E1D1C1017A32C34E2FC101502FC5217C +:20328000C3373ADC394F7EB9CA9232FE0DC823C38632C1D1E121B402E5D5C5C9B7CD7D0DC0 +:2032A000C2AD32E523235E2356CD3634E12322C5397EF62877CDB02B22D6390E00C5CD4143 +:2032C0002EC10CFE2CCABD32AF772B32DE393C772B22E03922E23936007932E839CDDB3442 +:2032E000C1D1E121EA32E5D5C5C9C101502FC52AF339E5AF32DE3932DF39CD0F2FF5CD0E78 +:203300002CDA0F33CA3833F132DE39E1C37431F1CD080BC474042AE239F51162381A3C4F16 +:203320001A772B130DC22033360022E239F1FE2CCA1033E122F339C9F1E1AF22F339CDDB92 +:2033400034CD3E352AF139EB2AC539237323722AD639CD502CC1D1E121B402E5D5C5C9E56E +:2033600037CD3C0DCDB02B36002B360122DA392B0E00CD642E0CCDE90ACD7B0BFE0DCA8E71 +:2033800033FE3BCA8E33FE2CC4A404C37233E323235E2356EBCD2835E3B7CAA833B9CAA8B9 +:2033A0003336002B0CC39D3336002BCDF22BE1C1E52AE439E52ADA39E521B402E511C333F7 +:2033C000D5C5C9CDE92FE122DA39E122E639E1AF32DF39CD1235B7CAFB3311C337CD1235B1 +:2033E000B7FCB42DCD8435CDF72EFE0DC2DD33E52AE639E52ADA39E5C3DD2F2ADA392BC3B5 +:20340000B32F7D935F7C9A57C93A5E38B7C29E04CD58253A7638FE20C0325E382A4D38EBC8 +:20342000CD0234EB225F38C93A5E38B7CCA404AF325E38C3F30A21EF394E73234672CD48F0 +:2034400034CD5134712370C92AEB39195E23562BC92AEB391923235E23562BC92AEF397DA0 +:20346000B4CA7134EBD5CD5134EB22EF39D1C39B342AED39112000EB1922ED392100FE395A +:20348000CD360DDAE0352AC739253AC939B7CD360DDAE0352AEB39EBCD0234D5CD4834EBA7 +:2034A0002AF339EB7BE6E05F7BB2C2AF34D1D5732372233E00772377CD5134D1CAC53473E0 +:2034C0002372C3CA34EB22F139EB2AF139D5EBCD4834D17323727BF6045FC9D5F52AF33981 +:2034E000EB7BE61FCC5C342AEB3919F1F5777BE61FFE1FCAF73413CC0135EB22F339F1D19F +:20350000C97BE6E05FCD51347AB3CA5C3413131313C9D5EB2AEB39EB7DE61FC222357DF64D +:20352000046FEB197EEBD1C9CD1235F5D5EB7BE61FFE1FCA373513CC0135EBD1F1C9EB7B84 +:20354000E6E05FD5CD51347BB2C1C8AF772377CD36342AF139EBCD4834712370C92AF339C7 +:20356000D5EB7BE61F1BFE04CC78352AEB39EB22F339EB197EEBD1C97BE6E05FCD48347B83 +:20358000F61F5FC9D5F5EB7BE61FFE1FCA903513CC0135EBF1D1C92AED39EB2AC7393AC91A +:2035A00039B7C2A9352100FC39CD0234DA190D7AB7CA190D1F577B1F5FD52AEB39EB2AED6D +:2035C00039CD0234424BD12AED39EB1922ED3978B1CADC352B1B1A770BC3CF3522EB39C9F9 +:2035E000D52ABC37EB2AEB39CD02347AFE03DA190D1F577B1F5FE1C5E52AEB39EBE3CD023D +:2036000034424BD12AEB39E52ABC3719E522EB390922ED39E1D178B1CA23360B1A77231363 +:20362000C31636C1C93227393228394F061E5E235623E5C5CD4536C1E105C22E363A273906 +:20364000B9C48318C9010000C57AB3CA1317EBE55E23567BB2C24E36E17DB4C8CD73362B0D +:20366000562B5E7BB2CA5836AF7723772B2B2BE5C34E36010400097E22BA37E67FC8FE406F +:20368000D077237EE680C453372B46237EF5235E23562323237E23CDA74505C29536F1F552 +:2036A000E608C2D336CDF936CD3F37F1F55FE680C2FE367BE604C204377BE640C40F377BE9 +:2036C000E6A0CA07377BE6035F1600218F19197ECDA745F121273935C2EE363A283977CDFE +:2036E000831821AE37343AAD37BECC9918AFC4F9362ABA377EF64077C93E09C3A7453E2A8D +:20370000CA3E4DCA3E43CA3E55CDA745C3D336D5C52ABA37E5237BE603470E07235E2356B0 +:2037200023D55E2356EB225938D1CDAA19E122BA37237EE620C4D019C1D13E49C3A745218A +:203740007638227438CD15172A74383600217638C3FE18C5E57EE603470E06235E2356CD0D +:20376000D019E1C1C9000000000000000000000000000000000000000000000000000000F5 +:20378000000000000000000000000000000000000000000000000000000000000000000029 +:2037A000000000000000000000000000000000000000000000000000000000000000000009 +:2037C0000000000000000000000000000000000000000000000000000000000000000000E9 +:2037E0000000000000000000000000000000000000000000000000000000000000000000C9 +:203800000000000000000000000000000000000000000000000000000000000000000000A8 +:20382000000000000000000000000000000000000000000000000000000000000000000088 +:20384000000000000000000000000000000000000000000000000000000000000000000068 +:20386000000000000000000000000000000000000000000000000000000000000000000048 +:20388000000000000000000000000000000000000000000000000000000000000000000028 +:2038A000000000000000000000000000000000000000000000000000000000000000000008 +:2038C0000000000000000000000000000000000000000000000000000000000000000000E8 +:2038E0000000000000000000000000000000000000000000000000000000000000000000C8 +:203900000000000000000000000000000000000000000000000000000000000000000000A7 +:20392000000000000000000000000000000000000000000000000000000000000000000087 +:20394000000000000000000000000000000000000000000000000000000000000000000067 +:20396000000000000000000000000000000000000000000000000000000000000000000047 +:20398000000000000000000000000000000000000000000000000000000000000000000027 +:2039A000000000000000000000000000000000000000000000000000000000000000000007 +:2039C0000000000000000000000000000000000000000000000000000000000000000000E7 +:2039E000000000000000000000000000000000000000000000000051410751420051430106 +:203A0000514402514503514804514C05514D06625350066350535706514908515209624233 +:203A200043006244450262484C04624146066A4958446A495964724E5A00715A01724E43C5 +:203A40000271500672504F047250450500000000000000000000000000000000000000007C +:203A6000000000000000000000000000000000000000000000000000000000000000000046 +:203A8000000000000000000000000000000000000000000000000000000000000000000026 +:203AA000000000000000000000000000000000000000000000000000000000000000000006 +:203AC0000000000000000000000000000000000000000000000000000000000000000000E6 +:203AE0000000000000000000000000000000000000000000000000000000000000000000C6 +:203B000000000052454C43524650524E0000000000000000000000000000000000000000F7 +:203B2000000000000000000000000000000000000000000000000000000000000000000085 +:203B4000000000000000000000000000000000000000000000000000000000000000000065 +:203B6000000000000000000000000000000000000000000000000000000000000000000045 +:203B8000000000000000000000000000000000000000000000000000000000000000000025 +:203BA000000000000000000000000000000000000000000000000000000000000000000005 +:203BC0000000000000000000000000000000000000000000000000000000000000000000E5 +:203BE0000000000000000000000000000000000000000000000000000000000000000000C5 +:203C00000000000000000000000000000000000000000000000000000000000000000000A4 +:203C2000000000000000000000000000000000000000000000000000000000000000000084 +:203C4000000000000000000000000000000000000000000000000000000000000000000064 +:203C6000000000000000000000000000000000000000000000000000000000000000000044 +:203C8000000000000000000000000000000000000000000000000000000000000000000024 +:203CA000000000000000000000000000000000000000000000000000000000000000000004 +:203CC0000000000000000000000000000000000000000000000000000000000000000000E4 +:203CE0000000000000000000000000000000000000000000000000000000000000000000C4 +:203D00000000000000000000000000000000000000000000000000000000000000000000A3 +:203D2000000000000000000000000000000000000000000000000000000000000000000083 +:203D4000000000000000000000000000000000000000000000000000000000000000000063 +:203D6000000000000000000000000000000000000000000000000000000000000000000043 +:203D8000000000000000000000000000000000000000000000000000000000000000000023 +:203DA000000000000000000000000000000000000000000000000000000000000000000003 +:203DC0000000000000000000000000000000000000000000000000000000000000000000E3 +:203DE0000000000000000000000000000000000000000000000000000000000000000000C3 +:203E00000000000000000000000000000000000000000000000000000000000000000000A2 +:203E2000000000000000000000000000000000000000000000000000000000000000000082 +:203E4000000000000000000000000000000000000000000000000000000000000000000062 +:203E6000000000000000000000000000000000000000000000000000000000000000000042 +:203E8000000000000000000000000000000000000000000000000000000000000000000022 +:203EA000000000000000000000000000000000000000000000000000000000000000000002 +:203EC0000000000000000000000000000000000000000000000000000000000000000000E2 +:203EE0000000000000000000000000000000000000000000000000000000000000000000C2 +:203F00000000000000000000000000000000000000000000000000000000000000000000A1 +:203F2000000000000000000000000000000000000000000000000000000000000000000081 +:203F4000000000000000000000000000000000000000000000000000000000000000000061 +:203F6000000000000000000000000000000000000000000000000000000000000000000041 +:203F8000000000000000000000000000000000000000000000000000000000000000000021 +:203FA000000000000000000000000000000000000000000000000000000000000000000001 +:203FC0000000000000000000000000000000000000000000000000000000000000000000E1 +:203FE0000000000000000000000000000000000000000000000000000000000000000000C1 +:20400000000000000000000000000000000000000000500000000000000000000000000050 +:20402000000000000000000000000000000000000000000000000000000000000000000080 +:20404000000000000000000000000000000000000000000000000000000000000000000060 +:204060000000000000003F434F4D4D414E44204552524F52003F46494C45204E4F54204682 +:204080004F554E44003F43414E275420454E5445522046494C45007EE67FC8CD1F4423C3BF +:2040A0009740216640C3B140217540C3B140218540CD9740C3D24022F73A2A06002BF92BF3 +:2040C0002B224E3A2AF73AE53A593AB7C2000032513A2A4E3AF9CD9F433A1440FE0DCAD239 +:2040E00040AF325D3A32553A325B3A325A3A32583A32573A325C3A3C32563A32543A01A20A +:2041000040C5AF324D3ACD4242D811033BCD254211F83A1AFE20C21E413E80324D3AE5216D +:204120005E3ACD1942E13E2032F83A32003BAF32F73A79D62CB732573AC248413A4D3AEEAE +:204140008032573ACD4242D811093B3A583AB7CA554111063BCD254211F83A3AF73A325302 +:204160003A1AD62032523AC272413A4D3AC640324D3AE5217F3ACD1942E179FE3D37C0CD02 +:204180004242FE0D37C0110601CD254211F73A1A13B7FA9A411AFE2037C8E521A03ACD1955 +:2041A00042E13A4D3A87215E3ADCF94187217F3AF53A583AB7CACA4111883A01063B3E03C1 +:2041C000F50A121303F13DC2C041F1DCF9413A553AB7C2DF413A523AB7C2DF413A533A3206 +:2041E000553ACDB544CD5644CD6C44E12A4E3A23233A563A32513A47C9F511F73A0E097E4A +:20420000B7C213421AB7FA13421A7723130DC20942F1C90D2313C309421B060C1A772313D0 +:2042200005C21C42C93A503AB7C8E521003B7EFE20C2404206031AE67F77231305C23642B8 +:20424000E1C9CD7E43FE3A373E00C2664278B7CA4242EBCD08444F783D79C28742FE5BD05D +:20426000FE41D8D640EB32F73AD47E4378FE0BDA7442060BC5EBD511F83A0405CAD042CD92 +:2042800008441213C37B42FE54C2A042CD0844FE5437C0CD0844FE5937C09FEBB7C36642C2 +:2042A000FE4CC2BA42CD0844FE5337C0CD0844FE5437C03EFEEBB7C36642FE5237C0CD08CE +:2042C00044FE4437C0FE5237C03EFEEBB7C36642E1C13E0A90DAE142EB3620233DF2D942AC +:2042E000EB790600D62E32503ACC7E43EBD511003B78FE04DAF94206030405CA0643CD0872 +:20430000441213C3FA42E179D62FB779C0CD0844FE4CC21F4332553ACD08444FC30743FE2B +:204320004EC22A43325B3AC31843FE4FC23543325A3AC31843FE52C2404332573AC318433A +:20434000FE43C24E4332583A32553AC31843FE4DC25943325C3AC31843FE49C26443325461 +:204360003AC31843FE5AC27043AF32543AC31843FE5037C03A563A3C32563AC3184306005A +:20438000E5CD0844FE5BD29C43FE30DA9C43FE41D29843FE3AD29C4304C381434FD1C9C520 +:2043A000D52180007E3600B747CACE43237EFE20C2B74305C3A943111340782B0412132378 +:2043C00005CAC8437EC3BD4332593AC3EE43AF32593A3A513AB7C2E143CD4C443E2ACD1F82 +:2043E000440E0A111240CD05003E0ACD1F44D1C13A1340211440E5226440856F3E008C6750 +:20440000360D233E0A77E1C97E23FE20CA0844FE0ACA0844FE0DC2464423226440C9F1E5FB +:20442000D5C5F50E02E67F5FCD0500F1C1D1E1B7C9E52A64402B7EE67FFE0A23CC9F4323A6 +:204440002264402B7EE1FE1A37C8B7C93E0DCD1F443E0AC31F44F5C5D5E511103C2100009A +:20446000220E3C217F3A3A553AC37F44F5C5D5E5110E3B210000220C3B215E3A3A573AB714 +:20448000CAB044E50E1ACD0500E17EB7FAB044CDD244D50E13CD0500D1D50E16CD05003CF8 +:2044A000CAAE40E1CDD2440E0FCD05003CCAA840E1D1C1F1C9F5C5D5E521000222103E115E +:2044C000123E0E1ACD050021A03A7EB7FAB044C3A444E5D5110C0019AF1604772315C2DBC4 +:2044E000441110001977E1D1C9F5D511A03A1AB7FA0945C5E5D511123E0E1ACD0500D101D2 +:20450000C5E50E10CD0500E1C1D1F1C9F53A553AB7CA1142D53A7F3A3CCA0945FA95453E14 +:204520000DCDA7453E0ACDA7453E1ACDA745E52A0E3C11103CC5017F3ACD7F4511103C0E72 +:204540001ACD0500C1E1117F3AC30045F53A573AB7CA1142D53A5E3AB7FA09453E1ACD0E8E +:2045600046E52A0C3B110E3BC5015E3ACD7F45110E3B0E1ACD0500C1E1115E3AC300457C33 +:20458000B5C87DE67FCA8A45C6801717E60329846069C3DE453E0DCDA7453E0ACDA7453E27 +:2045A0000CCDA745D1F1C9F53A553AB7CA11423A7F3A3CCA1E44FA8646E3E5D52A0E3C7C6B +:2045C000FE02CCD64523220E3C110F3C19D1F1F5E67F77F1E1C911103C217F3A3E04F5C58F +:2045E000D5E50E1ACD0500D1D50E15CD0500B7C2D246D1E101800009EBC1F13DC2DE4521BF +:204600000000C9110E3B3E02215E3AC3DE45F53A573AB7CA11423A5E3AB7FA1E44E3E5D582 +:204620002A0C3B7C3DCC034623220C3B110D3B19D1F177E1C93AA03A3CCA3144FAC146E5E5 +:20464000D52A103E7CFE02CC56462322103E11113E19D1C3444411123E3E04F5D5C50E1AA7 +:20466000CD050011A03A0E14CD0500C1D13DCA7F4621800019EBF13DC25B46210000C9F11A +:204680003E1A12C37B46F1E5D5C5F50E05E67F5F215D3AFE20D2A446D60DCAA2463CCAA221 +:2046A000467E3D77347BFE09C2B9463E20CDA7457EE607C2AB46C3BC46CD0500F1C1D1E1DB +:2046C000C9E5D5C50E03CD0500C1D1E1FE1A37C8B7C921F246CD9740D11AC640FE40C2E3D4 +:2046E000463E20CD1F4421F846CD9740CD4C44C300004449534B20002046554C4C00000025 +:20470000000000000000000000000000000000000000000000000000000000000000000099 +:20472000000000000000000000000000000000000000000000000000000000000000000079 +:20474000000000000000000000000000000000000000000000000000000000000000000059 +:20476000000000000000000000000000000000000000000000000000000000000000000039 +:20478000000000000000000000000000000000000000000000000000000000000000000019 +:2047A0000000E5D5C5EB21FE46131A1BFE3A3E00C2BD471A13D640FE1BD22148137723065C +:2047C000081A1332503AFE2ECAE847FE21DAE847772305C2C1471A1332503AFE2ECAEF471D +:2047E000FE21D2D647C3EF4736202305C2E84706033A503AFE2ECAFC471106011A1377235E +:2048000005C2FC47701122470E1ACD050011FE460E0FCD0500FEFFCA2148AF321E47321F9F +:2048200047C1D1E1C9E5D5C53A1F473DF24C481122470E1ACD050011FE460E14CD0500C690 +:20484000FFDA61482122472220473E7F321F472A20477EFE1AC25C4837C361482322204792 +:20486000B7C1D1E1C9C900000000000000000000000000000000000000000000000000007C +:20488000512001000A204300000000512002002050440000000051200300570D45000000F5 +:2048A0000051200400202048000000005120050050534C000000005120060020204DE54964 +:2048C000000062200600202053505849000063200600202050535700000000512008004749 +:2048E00049490000000051200900202052000000006220000020204243000000006220024F +:00000001FF diff --git a/hex/mb.hex b/hex/mb.hex new file mode 100644 index 0000000..c0f7dc7 --- /dev/null +++ b/hex/mb.hex @@ -0,0 +1,770 @@ +:020000040000FA +:20010000C3D15E7A29DC290644BF119E45EC146318863940191815951467145116E6437D57 +:2001200014D114EE1401449C160E454A5E20438515734403202B1EC0225D44C90CC90CFD88 +:200140001F9416842000002420EE147C447D448244C444E33C1016D3157C221B16F922C9BD +:2001600013CC13CF13D213F51700000000584C7B4CF14C7B50EC14744D3D2487240000B7C3 +:20018000590000BA581754FE5AFD5AD9539B525C53045A6558D7597B547A549A53BE5948DE +:2001A00049794983497C28802A6728C036DD377F38BD262B3779381C393139F64AF21FD1F3 +:2001C0001DD6489646A449E248F248B6222B498A469046CB1D7A29F429202A6D2A0000003C +:2001E000000000000000000000000000000000000000007A517D51805100008E55405658C4 +:20020000566151645167512400000000000000000000000000000000005554CFAB4EC4F719 +:2002200042D30654CE0E53C31500004C4F53C5C34F4ED49A4C4541D292494ED41C534EC7A2 +:200240001D4442CC1E56C92B56D32C56C42D4FD30C4852A416414CCCB64F4D4D4FCEB84894 +:200260004149CEB94F4C4FD2E25552D3E34CD3E000454C4554C5AA4154C18449CD864546D9 +:200280005354D2AD4546494ED4AE4546534EC7AF45464442CCB045C698004C53C5A24EC4AA +:2002A00081524153C5A64449D4A752524FD2A852CCD652D2D758D00B4FC62F51D6FA004F21 +:2002C000D28249454CC4C0494C45D3C6CED352C50F49D81F004F54CF894F2054CF894F533A +:2002E00055C28D45D4C15052494ED4E6004558A41A004E5055D485C68B4E5354D2DA4ED4D2 +:20030000054ED0104DD0FB4E4B4559A4DD0000494CCCC8005052494ED49E4C4953D49F505B +:200320004FD31B45D488494EC5B14F41C4C45345D4C94953D4934FC70A4FC33045CE1245B6 +:200340004654A4014FC63100455247C5C54FC4FC4B49A4324B53A4334B44A4344944A40327 +:20036000004558D483554CCC96414DC5C745D7944FD4D5005045CEBF55D49DCE95D2F8436C +:2003800054A4195054494FCEBA0052494ED49155D4C24F4BC5994FD3114545CB174C4FD449 +:2003A000E4000045545552CE8E4541C48755CE8A4553544F52C58C45CD8F4553554DC5A918 +:2003C0005345D4CA49474854A4024EC408454E55CDAC455345D4CC414E444F4D495AC5BB8B +:2003E0004543D4E500544FD0905741D0A54156C5CB5043A8D45445D0D147CE0451D20749B0 +:20040000CE095452A4135452494E47A4D850414345A41859535445CDBD4352CEE1004F4E23 +:20042000C5E74845CECF524FCEA3524F46C6A44142A8D0CFCE41CE0D0053494EC7D953D220 +:20044000D20041CC1441525054D2DC00494454C8A14149D49748494CC5B4454EC4B5524988 +:2004600054C5B7004FD2F9000000ABF2ADF3AAF4AFF5DEF6DCFDA7DBBEEFBDF0BCF1007964 +:20048000797C7C7F50463C32287A7B202A00007A293B2AF429262C1F2C642D442E73298818 +:2004A000258525032769270629312B252B512B841B3329004E45585420776974686F7574EE +:2004C00020464F520053796E746178206572726F720052455455524E20776974686F757430 +:2004E00020474F535542004F7574206F66204441544100496C6C6567616C2066756E6374FB +:20050000696F6E2063616C6C004F766572666C6F77004F7574206F66206D656D6F7279009F +:20052000556E646566696E6564206C696E65206E756D6265720053756273637269707420D9 +:200540006F7574206F662072616E6765004475706C696361746520446566696E6974696FCB +:200560006E004469766973696F6E206279207A65726F00496C6C6567616C2064697265630C +:20058000740054797065206D69736D61746368004F7574206F6620737472696E67207370E8 +:2005A00061636500537472696E6720746F6F206C6F6E6700537472696E6720666F726D7599 +:2005C0006C6120746F6F20636F6D706C65780043616E277420636F6E74696E756500556ECF +:2005E000646566696E656420757365722066756E6374696F6E004E6F20524553554D450019 +:20060000524553554D4520776974686F7574206572726F7200556E7072696E7461626C6507 +:20062000206572726F72004D697373696E67206F706572616E64004C696E65206275666642 +:200640006572206F766572666C6F77003F003F00464F5220576974686F7574204E45585457 +:20066000003F003F005748494C4520776974686F75742057454E440057454E44207769745F +:20068000686F7574205748494C45004649454C44206F766572666C6F7700496E7465726E99 +:2006A000616C206572726F72004261642066696C65206E756D6265720046696C65206E6F36 +:2006C0007420666F756E64004261642066696C65206D6F64650046696C6520616C72656139 +:2006E0006479206F70656E003F004469736B20492F4F206572726F720046696C6520616CE3 +:20070000726561647920657869737473003F003F004469736B2066756C6C00496E70757418 +:20072000207061737420656E6400426164207265636F7264206E756D626572004261642014 +:2007400066696C65206E616D65003F004469726563742073746174656D656E7420696E2092 +:2007600066696C6500546F6F206D616E792066696C65730018141814181418141814181497 +:2007800018141814181418140100000000007084503800000000A360FEFF4060090500007E +:2007A000000000000000000000000000000000000000000000000000000000000000000039 +:2007C000000000000000000000000000000000000000000000000000000000000000000019 +:2007E0000000000000000000000000000000000000000000000000000000000000000000F9 +:200800000000000000000000000000000000000000000000000000000000000000000000D8 +:2008200000003A00000000000000000000000000000000000000000000000000000000007E +:20084000000000000000000000000000000000000000000000000000000000000000000098 +:20086000000000000000000000000000000000000000000000000000000000000000000078 +:20088000000000000000000000000000000000000000000000000000000000000000000058 +:2008A000000000000000000000000000000000000000000000000000000000000000000038 +:2008C000000000000000000000000000000000000000000000000000000000000000000018 +:2008E0000000000000000000000000000000000000000000000000000000000000000000F8 +:200900000000000000000000000000000000000000000000000000000000000000000000D7 +:200920000000000000000000000000000000000000000000000000000000000000000000B7 +:20094000000000000000000000000000000000000000000000000000000000000000000097 +:20096000002C0000000000000000000000000000000000000000000000000000000000004B +:20098000000000000000000000000000000000000000000000000000000000000000000057 +:2009A000000000000000000000000000000000000000000000000000000000000000000037 +:2009C000000000000000000000000000000000000000000000000000000000000000000017 +:2009E0000000000000000000000000000000000000000000000000000000000000000000F7 +:200A00000000000000000000000000000000000000000000000000000000000000000000D6 +:200A20000000000000000000000000000000000000000000000000000000000000000000B6 +:200A4000000000000000000000000000000000000000000000000000000000000000000096 +:200A6000000000000000000000000000000000000000000000000000000000000000000076 +:200A8000000000000000000000000000000000000000000000000000000000000000000056 +:200AA000000000000000000000000000000000000000000000000000000000000000000036 +:200AC000000000000000000000000000000000000000000000000000000000000000000016 +:200AE0000000000000000000000000000000000000000000000000000000000000000000F6 +:200B00000000000000000000000000000000000000000000000000000000000000000000D5 +:200B20000000000000000000000000000000000000000000000000000000000000000000B5 +:200B4000000000000000000000000000000000000000000000000000000000000000000095 +:200B6000000000000000000000000000000000000000000000000000000000000000000075 +:200B8000000000000000000000000000000000000000000000000000000000000000000055 +:200BA000000000000000000000000000000000000000000000000000000000000000000035 +:200BC000000000000000000000000000000000000000000000000000000000000000000015 +:200BE0000000000000000000000000000000000000000000000000000000000000000000F5 +:200C00000000000000000000000000000000000000000000000000000000000000000000D4 +:200C20000000000000000000000000000000000000000000000000000000000000000000B4 +:200C400020696E20004F4B0D0A00427265616B00210400397E23FEB4C2620C01060009C333 +:200C6000540CFE82C04E234623E560697AB3EBCA760CEBCDCD43011000E1C809C3540C0139 +:200C8000860DC3FC0C2A98077CA53CCA970C3ABB0AB71E13C2E30CC319441E3D011E3901F7 +:200CA0001E36011E35011E34011E33011E3E011E37011E40011E3F011E32011E43011E3A6B +:200CC000C3E30C2AA30A2298071E02011E0B011E01011E0A011E12011E14011E06011E1679 +:200CE000011E0D2A980722B30AAF32ED0B32F30B7CA53CCAF90C22B50A01020D2AB10AC352 +:200D0000A243C17B4B328A072AAF0A22B70AEB2AB30A7CA53CCA1F0D22BE0AEB22C00A2ACE +:200D2000B90A7CB5EB21BB0ACA340DA6C2340D35EBC3C012AF7759329307CD144221B3043F +:200D40007BFE44D2500DFE32D2520DFE1FDA550D3E28D6135FCDEE14231DC2550DE52AB34A +:200D60000AE37EFE3FC26F0DE121B304C3500DCD2347E111FEFFCDCD43CC2142CABB597C28 +:200D8000A53CC412313EC1CD4441AF329307CD4D53CD144221450CCD00003A8A07D602CC61 +:200DA000D53C21FFFF2298073AAA0AB7CAF90D2AAB0AE5CD1A31D1D5CDF80E3E2ADAC20D67 +:200DC0003E20CDD640CD284BD1D2DA0DAF32AA0AC3870DAF32AA0AC3EF0D2AAD0A19DAD321 +:200DE0000DD511F9FFCDCD43D1D2D30D22AB0A3A6209B7CAA20DC3E23ECD284BDAA20DCD83 +:200E000005133C3DCAA20DF5CD2814CDAC117EFE20CCBE28D5CD180FD1F122AF0AD28A53DD +:200E2000D5C5CD655DCD0513B7F5EB22B50AEBCDF80EDA3B0EF1F5CACC14B7C5F5E5CD3563 +:200E400024E1F1C1C5DCA222D1F1D5CA870ED13AF30BB7C25C0E2A760A229B0A2AC20AE34A +:200E6000C1E509E5CDB642E122C20AEB74C1D1E52323732372231123080B0B0B0B1A7723E7 +:200E8000130B79B0C27D0ED1CDAF0E218000360022A4072A940722BC0ACD37432AA20722D6 +:200EA000A4072ABC0A229407C3A20D2A9A07EB626B7E23B6C82323237EB7CAD00EFE20D290 +:200EC000B70EFE0BDAB70ECD0613CD0513C3B90E23EB732372C3AF0E110000D5CAEB0ED140 +:200EE000CD1D14D5CAF40ECDD343F311FAFFC41D14C2C90CEBD1E3E52A9A07444D7E23B6B0 +:200F00002BC823237E23666FCDCD4360697E23666F3FC83FD0C3FB0EAF32690A32680A012B +:200F20003B011123087EB7C23D0F2140017D914F7C9847212208AF1213121312C9FE22CAD3 +:200F4000790FFE20CA4F0F3A680AB77ECA820F23F5CD5911F1D63ACA610FFE4AC2670F3E3F +:200F60000132680A32690AD655C2250FF57EB7E37CE1CA2A0FBECA4F0FF57E23CD5911C323 +:200F80006D0FFE3F3E91D5C5CA4810116A04CD5A1CCD0445DA9710E511CC0FCDBE0FC2D6B1 +:200FA0000FCD051311D00FCDBE0F3E89CAB80F11D30FCDBE0FC2D60F3E8DC1C348101AB7AF +:200FC000C84FCD5A1CB9C02313C3BE0F474F2000544F00554200E1CD5A1CE5219B5ED6414E +:200FE000874F0600095E2356E123E5CD5A1C4F1AE67FCA641123B9C23C101A13B7F2EB0F42 +:2010000079FE28CA21101AFED3CA2110FED2CAFD03CD5A1CFE2ECA1C10CDE2213E00D2640D +:2010200011F11AB7FA4710C1D1F680F53EFFCD5911AF32690AF1CD5911C3250FE11A13B7E3 +:20104000F23D1013C3EA0F2BF5115A104F1AB7CA691013B9C24D10C36B108CABACAAA7A97E +:20106000D6A28A939F89CF8D00AFC23E0132690AF1C1D1FEA2F5CC5711F1FEB4C28410CDF0 +:2010800059113EF2FEDBC23511F5CD57113E8FCD5911F1F5C37B0F7EFE2ECAA710FE3AD23F +:2010A0002211FE30DA22113A690AB77EC1D1FA4F0FCAD310FE2ECA4F0F3E0ECD5911D5CDD0 +:2010C0002814CDAC11E3EB7DCD59117CE1CD5911C3250FD5C57ECDD12ECDAC11C1D1E53A1E +:2010E000670AFE02C2FF102A040C7CB73E02C2FF107D652E0FFE0AD2C710C611C3CC10F5F5 +:201100000FC61BCD591121040CCD641DDA121121000CF1F57ECD5911F1233DC21311E1C389 +:20112000250F116904131AE67FCA8E1113BE1AC22511C3A011FE26C24F0FE5CD0513E1CDEF +:201140005B1CFE483E0BC24B113E0CCD5911D5C5CD691CC1C3C5103E3A12130B79B0C01EF6 +:2011600017C3E30CE12B3D32690AC1D1CD5A1CCD591123CD5A1CCD0445D26F11FE3AD28B49 +:2011800011FE30D26F11FE2ECA6F11C3250F7EFE20D2A011FE09CAA011FE0ACAA0113E20CF +:2011A000F53A690A3CCAA9113DC36D102B7EFE20CAAC11FE09CAAC11FE0ACAAC1123C93EBB +:2011C0006432A50ACD8B39CDD343F0D5EB22A70AEB3A670AF5CD021AF1E5CDAC1F21C00B05 +:2011E000CDC028E1D1C1E5CDEC1422A10A21020039CD540CC2111209D52B562B5E2323E5C7 +:201200002AA10ACDCD43E1D1C2F111D1F922B10A0ED1EB0E08CDC742E52AA10AE3E52A9805 +:2012200007E3CDD343CECD641DCAE10CD2E10CF5CD021AF1E5F24E12CD7A29E31101007E66 +:20124000FED1CC5320D5E5EBCD9228C37112CDF429CDB428E1C5D5010081515A7EFED13E48 +:2012600001C27212CD031AE5CDF429CDB428CD4528E1C5D54FCD641D47C52BCD0513C2C9CC +:201280000CCDE224CD0513E5E52AC40B2298072AA70AE30682C533F5F5C3A0450682C533B6 +:2012A000E5CD0000E1B7C45C4222AF0AEB2100003922B10AEB7EFE3ACAE512B7C2C90C23B2 +:2012C0007E23B6CA850C235E2356EB2298073AFE0BB7CAE412D53E5BCDD640CD1A313E5DF8 +:2012E000CDD640D1EBCD051311A012D5C80000C38A5D000000000000000000000000000957 +:201300004E2346C5EB237EFE3AD0FE20CA0513D28613B7C8FE0BDA8113FE1EC223133A6CA2 +:201320000AB7C9FE10CA6013F523326C0AD61CD26613D6F5D23E13FEFEC252137E23226A9D +:201340000A26006F226E0A3E02326D0A218C13F1B7C97E2323226A0A2B66C34313CD8E13C8 +:201360002A6A0AC306133C07326D0AD5C5116E0AEB47CDCD28EBC1D1226A0AF1218C13B775 +:20138000C9FE09D20513FE303F3C3DC91E103A6C0AFE0FD2AB13FE0DDAAB132A6E0AC2A8BA +:2013A000132323235E2356EBC3032C3A6D0A32670AFE08CAC3132A6E0A22040C2A700A2269 +:2013C000060CC9216E0AC3EE281E03011E02011E04011E08CD034501C90CC5D8D6414F47FF +:2013E000CD0513FEF3C2F513CD0513CD0345D8D64147CD05137891D83CE321CA0A06000934 +:2014000073233DC20014E17EFE2CC0CD0513C3D413CD0513CD5620F01E05C3E30C7EFE2EB4 +:20142000EB2AB50AEBCA05132BCD0513FE0ECA3314FE0DEB2A6E0AEBCA0513AF326C0A2BF7 +:20144000110000CD0513D0E5F5219819CDCD43DA6414626B19291929F1D6305F160019EB2A +:20146000E1C34314F1E1C9CA3743FE0ECA7414FE0DC29A52CD3B4301A012C394140E03CD34 +:20148000C742CD2814C1E5E52A9807E33E8DF533C5C39814C5CD28143A6C0AFE0DEBC8FEA2 +:2014A0000EC2C90CEBE52A6A0AE3CDEE1423E52A9807CDCD43E1DCFB0ED4F80ED2CC140B5C +:2014C0003E0D32A90AE1CD2C246069C91E08C3E30CC016FFCD500CF922B10AFE8D1E03C232 +:2014E000E30CE122980721A012E33EE1013A0E0006007948472BCD0513B7C8B8C823FE22DD +:20150000CAF2143CCAF614D68CC2F514B88A57C3F514F1C603C32D15CD8B39CDD343F0EB4B +:2015200022A70AEBD53A670AF5CD021AF1E3473A670AB878CA3D15CDAC1F3A670A11040C19 +:20154000FE05DA481511000CE5FE03C27F152A040CE5235E23562A9A07CDCD43D273152AB3 +:20156000C60ACDCD43D1D27B1521980ACDCD43D27B153ED1CDC648EBCDA346CDC648E3CD73 +:20158000C928D1E1C9FEA8C2B515CD0513CDD34389CD28147AB3CAA215CDF60E5059E1D278 +:2015A000CC14EB22B90AEBD83ABB0AB77BC83A8A075FC3F90CCD75207E47FE8DCAC415CDAB +:2015C000D343892B4B0D78CAED12CD2914FE2CC0C3C51511BB0A1AB7CAD80C3C328A0712B1 +:2015E0007EFE83CAF315CD2814C07AB3C298143CC3F715CD0513C02AB70AEB2AB30A22988F +:2016000007EBC07EB7C20C162323232323C3EC14CD7520C0B7CA1814C3E30C110A00D5CA52 +:201620003D16CD1D14EBE3CA3E16EBCDD3432CEB2AAD0AEBCA3D16CD2814C2C90CEB7CB5E3 +:20164000CA181422AD0A32AA0AE122AB0AC1C3A20DCD021A7EFE2CCC0513FE89CA6416CDDD +:20166000D343CF2BE5CD8628E1CA7E16CD0513C8FE0ECA9514FE0DC2ED122A6E0AC9160141 +:20168000CDEC14B7C8CD0513FEA2C2801615C28016C36C163E01328D07C3A1160E02CD0D06 +:2016A000512BCD0513CC2142CAE917FED9CAF73EFED0CA6517FED4CA6517E5FE2CCA2517B9 +:2016C000FE3BCAE217C1CD021AE5CD641DCADC16CD2931CDC74636202A040C34CD5446C287 +:2016E0001E172A040C3A8D07B7CA05173A8F07473CCA1E173A8C07B7CA1E17863FD21B1772 +:201700003DB8C31B173A9007473CCA1E173A650AB7CA1E17863FD21B173DB8D42142CD2645 +:2017200047E1C3A1160128002A940709CD54467EC25C173A8D07B7CA49173A8E07473C3ABB +:201740008C07CA5C17B8C356173A9107473A650AFEFFCA5C17B8D42142D2E217D60ED25C09 +:20176000172FC3D717F5CD0513CD5620F1F5FED4CA74171B7AB7F27C17110000E5CD54461A +:20178000C29B173A8D07B73A8F07C290173A90076F3CCA9B172600CD0D2CEBE1CDD343291B +:2017A0002BF1D6D4E5CAC6170128002A940709CD54467EC2C6173A8D07B7CAC3173A8C0766 +:2017C000C3C6173A650A2F83DAD7173CCAE217CD21427B3DFAE2173C473E20CDD64005C2E1 +:2017E000DB17E1CD0513C3A816AF328D07E5676F229407E1C9CDD34385FE23CAA751CD48B9 +:201800004CCD6F18CD8B39CD3B2AD5E5CD304BD1C1DA1644C5D50600CDCA46E13E03C32D0E +:20182000153F5265646F2066726F6D2073746172740D0A00237EB7CAC90CFE22C23418C3A9 +:20184000DA18E1E1C34E183AA60AB7C2C30CC1212118CD23472AAF0AC9CD0B51E5216109E2 +:20186000C33B19FE23CA5918CD484C019918C5FE223E003293073EFF32E70BC0CDC8467E79 +:20188000FE2CC28F18AF32E70BCD0513C39318CDD3433BE5CD2647E1C9E53AE70BB7CAAB6B +:2018A000183E3FCDD6403E20CDD640CD304BC1DA1644C5AF32A60A362CEBE1E5D5D52B3EB6 +:2018C0008032A50ACD0513CD893A7E2BFE5BCAD618FE28C2FD1823060004CD0513CAC90CCA +:2018E000FE22CA3418FE28CAD918FE5BCADA18FE5DCAF918FE29C2DA1805C2DA18CD05130D +:20190000CA0819FE2CC2C90CE37EFE2CC242183E01320A0CCD64193A0A0C3DC24218E5CD48 +:20192000641DCCA848E12BCD0513E37EFE2CCABF18E12BCD0513B7E1C24E18362CC3451919 +:20194000E52AC80AF6AF32A60AE3C35119CDD3432CCD8B39E3D57EFE2CCA63193AA60AB728 +:20196000C2D319F6AF32BC0BCD5446C29751CD641DF5C2A219CD05135747FE22CA8C193AFE +:20198000A60AB757CA8919163A062C2BCDCB46F1C6034F3ABC0BB7C879EB21B119E3D5C33F +:2019A0002E15CD0513F1F5018F19C5DAD12EC3CA2E2BCD0513CABD19FE2CC24718E32BCD41 +:2019C0000513C24D19D13AA60AB7EBC2FC43D5E1C3E917CDEC14B7C2EC19237E23B61E0409 +:2019E000CAE30C235E2356EB22A30AEBCD0513FE84C2D319C36319CDD343F0C3021ACDD3E9 +:201A000043282B1600D50E01CDC742CD931BAF32090C22BC0A2ABC0AC17E229D0AFEEFD84A +:201A2000FEF2DA8E1AD6F25FC2341A3A670AFE037BCA5B48FE0CD0217F041600197856BA34 +:201A4000D0C501151AC57AFE7FCAAC1AFE51DABA1AE6FEFE7ACABA1A21040C3A670AD603C9 +:201A6000CAE10CB74E2346C5FA7F1A234E2346C5E27F1A21000C4E234623C54E2346C5C6C1 +:201A8000034B47C501E31AC52A9D0AC3051A1600D6EFDAC61AFE03D2C61AFE0117AABA575D +:201AA000DAC90C229D0ACD0513C3901ACDF429CD992801CC36167FC3871AD5CD7A29D1E5ED +:201AC00001751DC3871A78FE64D0C5D511046421421DE5CD641DC2581A2A040CE5015C46A9 +:201AE000C3871AC17932680A3A670AB8C2FC1AFE02CA181BFE04CA671BD22B1B5778FE0831 +:201B0000CA281B7AFE08CA4F1B78FE04CA641B7AFE03CAE10CD26F1B21A904060009094E7F +:201B20002346D12A040CC5C9CD202ACDF428E122020CE122000CC1D1CDA928CD202A219586 +:201B4000043A680A07856F8C95677E23666FE978F5CDF428F132670AFE04CA361BE12204E5 +:201B60000CC33B1BCDF429C1D1219F04C3411BE1CD9928CD142ACDB428E122060CE12204A2 +:201B80000CC3691BE5EBCD142AE1CD9928CD142AC36727CD0513CADE0CDAD12ECD0445D2F2 +:201BA0004A1CFE20DA5D133CCAD31C3DFEF2CA931BFEF3CA3C1CFE22CAC846FED5CA4F1DA9 +:201BC000FE26CA691CFED7C2D61BCD05133A8A07E5CDD51DE1C9FED6C2E71BCD0513E52A80 +:201BE000B30ACD032CE1C9FEDCC2161CCD0513CDD34328FE23C2031CCD7220E5CD5051E12F +:201C0000C3061CCD893ACDD34329E5EB7CB5CA1814CDDC29E1C9FED2CADB1DFEDACACB4988 +:201C2000FEDDCA6F42FED8CA0049FE85CA2755FED3CA541ECDFE19CDD34329C9167DCD0571 +:201C40001A2ABC0AE5CD6B28E1C9CD8B39E5EB22040CCD641DC4EE28E1C97EFE61D8FE7BF8 +:201C6000D0E65FC9FE26C22814110000CD0513CD5B1CFE4FCAAD1CFE48C2AC1C0605237ECE +:201C8000CD5B1CCD0445EBD2971CFE3AD2CE1CD630DACE1CC39E1CFE47D2CE1CD6372929DF +:201CA0002929B56FEB05C27E1CC3DB0C2BCD0513EBD2CE1CFE38D2C90C01DB0CC529D8294D +:201CC000D829D8C10600D6304F09EBC3AD1CCDDC29EBC9237ED681FE07C2E81CE5CD05137C +:201CE000FE28E1C2CC373E070600074FC5CD051379FE05D20F1DCDFE19CDD3432CCD3B2A2E +:201D0000EB2A040CE3E5EBCD7520EBE3C3291DCD341CE37DFE0CDA201DFE1BE5DCF429E13C +:201D200011481CD53E0132090C019F01094E236669E915FEF3C8FE2DC814FE2BC8FEF2C882 +:201D40002BC93C8FC1A0C6FF9FCD7F28C3611D165ACD051ACD7A297D2F6F7C2F6722040C1F +:201D6000C1C3151A3A670AFE08D2711DD603B737C9D603B7C978F5CD7A29F1D1FE7ACA0DC8 +:201D80002CFE7BCAA82B01D71DC5FE46C2951D7BB56F7CB2C9FE50C2A01D7BA56F7CA2C9B6 +:201DA000FE3CC2AB1D7BAD6F7CAAC9FE32C2B81D7BAD2F6F7CAA2FC97D2FA32F6F7C2FA2F4 +:201DC0002FC97D936F7C9A67C3032C3A8C07C3D41D3A650A3C6FAF67C3DC29CDFA1DD5CDE4 +:201DE000341CE35E2356215727E5D53A670AF5FE03CCA848F1EB21040CC9CD051301000067 +:201E0000FE1BD2131EFE11DA131ECD05133A6E0AB7174FEB21740709EBC9CDFA1DD5CDD33B +:201E200043F0CDD122E3732372E1C9FED2CA1A1ECDD41FCDC61FEB732372EB7EFE28C2ECA6 +:201E400014CD0513CD8B397EFE29CAEC14CDD3432CC3441ECDD41F3A670AB7F522BC0AEB6B +:201E60007E23666F7CB5CAD50C7EFE28C21E1FCD0513229D0AEB2ABC0ACDD34328AFF5E550 +:201E8000EB3E8032A50ACD8B39EBE33A670AF5D5CD021A22BC0AE1229D0AF1CDAC1F0E04CE +:201EA000CDC74221F8FF39F9CDF7283A670AF52ABC0A7EFE29CACB1ECDD3432CE52A9D0A69 +:201EC000CDD3432CC3811EF1324E0BF1B7CA0F1F32670A21000039CDEE2821080039F9D169 +:201EE0002E032C1B1AB7FAE21E1B1B1B3A670A85473A4E0B4F80FE64D21814F57D0600217C +:201F0000500B094FCDC01F01C71EC5C5C33A152ABC0ACD0513E52A9D0ACDD343293ED52214 +:201F20009D0A3AE60AC604F50F4FCDC742F14F2F3C6F26FF39F9E511E40ACDC01FE122E4F5 +:201F40000A2A4E0B22E60A444D21E80A11500BCDC01F676F224E0B2ABA0B2322BA0B7CB5AB +:201F600032B70B2A9D0ACDF7192BCD0513C2C90CCD641DC2881F11980A2A040CCDCD43DABD +:201F8000881FCDA346CD01472AE40A545D23234E23460303030321E40ACDC01FEBF92ABA7A +:201FA0000B2B22BA0B7CB532B70BE1F1E5E607218B044F060009CD2C1DE1C91A7723130B9B +:201FC00078B1C2BB1FC9E52A9807237CB5E1C01E0CC3E30CCDD343D33E8032A50AB64FC3D7 +:201FE0009039FE7EC2C90C237E23FE83CA604AC3C90CCD782032F91FDB00C3D51DCD622026 +:20200000D300C9CD6220F51E002BCD0513CA1720CDD3432CCD7520F157DB00ABA2CA1920CD +:20202000C9C3C90CFE9EC23A20CD0513CD7520328F075FCD4820328E07C9CD752032900729 +:202040005FCD4820329107C9D60ED24820C61C2F3C83C9CD0513CD021AE5CD7A29EBE17A39 +:20206000B7C9CD7520321A20320120CDD3432CC37520CD0513CD021ACD5920C218142BCD5E +:2020800005137BC93E01328D07C1CDD80EC5CD655D21FFFF229807E1D14E23462378B1CAB8 +:2020A000870DCD5446CC5142C54E234623C5E3EBCDCD43C1DA860DE3E5C5EB22B50ACD1A49 +:2020C00031E17EFE09CACD203E20CDD640CDE620216209CDDC20CD2142C391207EB7C8CDDB +:2020E000A54223C3DC2001620916FFAF32E60BCD655DC3F920032315C87EB702C8FE0BDA74 +:202100000821FE205FDA1C21B7FA41215FFE2ECA1C21CDE221D21C21AFC32F213AE60BB7DA +:20212000CA2D213CC22D213E20020315C83E0132E60B7BFE0BDA3D21FE20DAED2102C3F51D +:20214000203C7EC24A21237EE67F23FEDBC258210B0B0B0B14141414FEA2CC6B2AFEB4C24A +:202160006C217E23FEF23EB4CA6C212BE5C5D5211802470E400C23545D7EB7CA752123F2F4 +:2021800079217EB8C27621EBFED2CA8F21FED379D1C15FC2A2213AE60BB73E0032E60BC31B +:2021A000B721FE5BC2AE21AF32E60BC3C6213AE60BB73EFF32E60BCAC2213E20020315CAB0 +:2021C00058477BC3C9217E235FE67F020315CA5847B3F2C621FEA8C2DE21AF32E60BE1C3E7 +:2021E000F920CD0445D0FE30D8FE3A3FC92BCD0513D5C5F5CD8E13F1010C22C5FE0BCA6F66 +:2022000036FE0CCA72362A6E0AC32931C1D13A6C0A1E4FFE0BCA1F22FE0C1E48C22A223ECE +:2022200026020315C87B020315C83A6D0AFE041E00DA3B221E21CA3B221E237EFE20CCBE64 +:20224000287E23B7CA6D22020315C83A6D0AFE04DA41220B0A03C25E22FE2ECA6822FE44B7 +:20226000CA6822FE45C241221E00C341227BB7CA7622020315C82A6A0AC3F920CDD80EC5F6 +:20228000CD3524C1D1C5C5CDF80ED29422545DE3E5CDCD43D2181421450CCD2347C121873B +:2022A0000EE3EB2AC20A1A020313CDCD43C2A622606922C20AC9CDDB22CD5C5D7EC3D51DB0 +:2022C000CDD122D5CD5C5DCDD3432CCD7520D112C9CD021AE5CDDB22EBE1C9017A29C5CD63 +:2022E000641DF83A070CFE90C0CD4528F8CDF429018091110000C38825010A00C55058CAD9 +:202300002F23FE2CCA1123D5CD1D14424BD1CA2F23CDD3432CCD1D14CA2F23F1CDD3432CCD +:20232000D5CD2814C2C90C7AB3CA1814EBE3EBC5CDF80ED1D5C5CDF80E6069D1CDCD43EB14 +:20234000DA1814D1C1F1E5D5C35B2309DA1814EBE521F9FFCDCD43E1DA1814D55E23567A17 +:20236000B3EBD1CA6E237E23B62BEBC24B23C5CD9123C1D1E1D55E23567AB3CA8C23EBE31D +:20238000EB23732372EB09EBE1C3752301860DC5FEF6AF32A90A2A9A072B237E23B6C823D0 +:2023A0005E2356CD0513B7CA9A234F3AA90AB779CA1224FEA8C2D423CD0513FE89C2A62361 +:2023C000CD0513FE0EC2A623D5CD33147AB3C2DD23C3FD23FE0EC2A323D5CD3314E5CDF89F +:2023E0000E0B3E0DDA2524CD1442210224D5CD2347E1CD1A31C1E1E5C5CD1231E1D12BC3EB +:20240000A323556E646566696E6564206C696E652000FE0DC2FF23D5CD3314E5EB2323236B +:202420004E23463E0E21FC23E52A6A0AE52B702B712B77E1C93AA90AB7C8C39223CDD343A7 +:2024400042CDD34341CDD34353CDD343453AC70BB7C2D20CE52AC40AEB2AC60ACDCD43C2F4 +:20246000D20CE17ED630DAC90CFE02D2C90C32C60B3C32C70BCD0513C97EB7C8CD8324233E +:20248000C37924F5C35C41CA9424CD021AE5CD7A29C3B024E521B824CD2347CD0D4BD1DA47 +:2024A0001644D5237ECDD12E7EB7C29524CD7A29226A38CDCF37E1C952616E646F6D206E30 +:2024C000756D626572207365656420282D333237363820746F20333237363729000E1DC35E +:2024E000E4240E1A0600EB2A980722C40BEB042BCD0513CA0025FEA2CA1525FECFC2F024CC +:20250000B7C21525237E23B659CAE30C235E2356EB22C40BEBCD051379FE1A7ECA2E25FEAC +:20252000B4CAEE24FEB5C2EF2405C2EF24C9FE82CAEE24FE83C2EF2405C8CD0513CA00258D +:20254000EB2A9807E52AC40B229807EBC5CD8B39C12BCD0513110025CA6325CDD3432C2B54 +:20256000113825E3229807E1D5C9F53A090C320A0CF1F5AF32090CF1C9210D36CDB728C3D5 +:202580008825CDB728CD742878B7C83A070CB7CAA92890D2A2252F3CEBCD9928EBCDA9284D +:2025A000C1D1FE19D0F5CDD62867F1CD62267CB721040CF2C925CD4226D223262334CA88F8 +:2025C000302E01CD8926C32326AF90477E9B5F237E9A57237E994FDC4E266863AF4779B7BA +:2025E000C20E264A54656F78D608FEE0C2DD25AF32070CC97CB5B2C20626790517D2FB2566 +:20260000041F4FC3112605297A1757798F4FF2F425785C45B7CA232621070C8677D2EF25DC +:20262000CAEF257821070CB7FC352646237EE680A94FC3A9281CC014C00CC00E8034C0C368 +:2026400087307E835F237E8A57237E894FC921080C7E2F77AF6F90477D9B5F7D9A577D9956 +:202660004FC90600D608DA7126435A510E00C36426C6096F7AB3B0C28526792DC81F4FD26E +:202680007B26C38B26AF2DC8791F4F7A1F577B1F5F781F47C3852600000081049AF71983B3 +:2026A0002463438375CD8D84A97F83820400000081E2B04D830A721183F404357FCD452870 +:2026C000B7EA1814CDD026013180111872C30327CDB4283E8032070CA8F5CD9928219B2677 +:2026E000CDA737C1E1CD9928EBCDA92821AC26CDA737C1D1CD6927F1CD9928CD5428C1D18F +:20270000C38825CD4528C82E00CD032879323C27EB223727010000505821DA25E52125278D +:20272000E5E521040C7E23B7CA5927E5EB1E081F5779D23D27D511000019D1CE001F4F7C59 +:202740001F677D1F6F781F47E610CA512778F620471D7AC22F27EBE1C9435A514FC9CD994D +:202760002821AE2DCDA628C1D1CD4528CA90302EFFCD032834CA673034CA67302B7E32A07A +:20278000272B7E329C272B7E32982741EBAF4F575F32A327E5C57DD6006F7CDE006778DE7B +:2027A00000473E00DE003FD2B12732A327F1F137D2C1E1793C3D1FF2CF27173AA3271FE62B +:2027C000C0F578B4B5CACA273E20E1B4C32426177B175F7A175779174F297817473AA327D6 +:2027E0001732A32779B2B3C29427E521070C35E1C29427C3EF253EFF2EAF21130C4E23AE6F +:20280000472E0078B7CA27287D21070CAE80471FA878F22628C68077CA5727CDD628772BE4 +:20282000C9CD45282FE1B7E1F2EF25C36730CDB42878B7C8C602DA803047CD882521070CA6 +:2028400034C0C380303A070CB7C83A060CFE2F179FC03CC9068811000021070C4F700600B9 +:2028600023368017C3D725CD8628F0CD641DFAF82BCAE10C21060C7EEE8077C9CD86286FD3 +:20288000179F67C3DC29CD641DCAE10CF245282A040C7CB5C87CC34F28EB2A040CE3E52AEF +:2028A000060CE3E5EBC9CDB728EB22040C606922060CEBC921040C5E2356234E234623C942 +:2028C00011040C0604C3CD28EB3A670A471A77132305C2CD28C921060C7E07371F773F1F09 +:2028E0002323777907371F4F1FAEC9210D0C11C828C3FA28210D0C11C928D511040CCD64DD +:202900001DD811000CC978B7CA4528214E28E5CD452879C821060CAE79F8CD20291FA9C986 +:202920002378BEC02B79BEC02B7ABEC02B7B96C0E1E1C97AAC7CFA4F28BAC240297D93C8E2 +:20294000C35028210D0CCDC92811140C1AB7CA4528214E28E5CD45281B1A4FC821060CAE28 +:2029600079F8132306081A96C21D291B2B05C26629C1C9CD4929C24E28C9CD641D2A040CFC +:20298000F8CAE10CE29929CDF428210936CDEE28CD262CCDFE29C39C29CD79253A060CB7AF +:2029A000F5E67F32060C3A070CFE90D2DB0CCD422A3A070CB7C2BD29F1EBC3C229F1EBF2A8 +:2029C000C8297C2F677D2F6FC3DC2921DB0CE53A070CFE90D2E529CD422AEBD122040C3E04 +:2029E0000232670AC9018090110000CD0629C0616AC3DB29CD641DE0FA112ACAE10CCDB45E +:202A000028CD362A78B7C8CDD62821030C46C323262A040CCD362A7C551E000690C35928ED +:202A2000CD641DD0CAE10CFC112A21000022000C22020C3E08013E04C3E129CD641DC8C3DC +:202A4000E10C474F575FB7C8E5CDB428CDD628AE67FC662A3E9890CD62267C17DC35260639 +:202A600000DC4E26E1C91B7AA33CC00BC9CD641DF8CD4528F2802ACD7428CD802AC36B2802 +:202A8000CD641DF8D2A62ACAE10CCDCF2921070C7EFE983A040CD07ECD422A36987BF57902 +:202AA00017CDD725F1C921070C7EFE90C2CA2A4F2B7EEE8006062BB605C2B62AB721008034 +:202AC000C2C92ACDDC29C3202A79B7C8FEB8D0F5CDB428CDD628AE2B36B8F52B71FCFA2A03 +:202AE0003A060C4F21060C3EB890CD252DF1FCDD2CAF32FF0BF1D0C3912C21000C7E35B7AA +:202B000023CAFD2AC9E521000078B1CA222B3E1029DAD63BEB29EBD21E2B09DAD63B3DC223 +:202B2000102BEBE1C97C179F47CDEE2B7998C3342B7C179F47E57A179F19880FACF2DB2953 +:202B4000C5EBCD142AF1E1CD9928EBCD082CC34E307CB5CADC29E5D5CDE22BC5444D210022 +:202B6000003E1029DA892BEB29EBD2712B09DA892B3DC2632BC1D17CB7FA812BD178C3EA5E +:202B80002BEE80B5CA9A2BEB01C1E1CD142AE1CD9928CD142AC1D1C3032778B7C1FADC29D7 +:202BA000D5CD142AD1C374287CB5CACC0CCDE22BC5EBCDEE2B444D2100003E11F5B7C3CB87 +:202BC0002BF5E509D2CA2BF1373EE17B175F7A17577D176F7C1767F13DC2C12BEBC1D5C3E3 +:202BE000772B7CAA47CDE92BEB7CB7F2DC29AF4F956F799C67C3DC292A040CCDEE2B7CEE00 +:202C000080B5C0EBCD362AAF0698C35928D5CDA82BAF821F677B1F6FCDDF29F1C3EA2B2122 +:202C2000130C7EEE807721140C7EB7C8472B4E11070C1AB7CAEB2890D2522C2F3CF50E08EC +:202C400023E51A467778121B2B0DC2422CE1462B4EF1FE39D0F5CDD628210C0C473E0077FB +:202C600032FF0BF121130CCD252D78B7F2862C3A0C0C32FF0BCDFA2CD2CB2CEB34CA88300A +:202C8000CD512DC3CB2C3E9ECDFC2C21080CDC122DAF473A060CB7C2BA2C21FF0B0E0856D6 +:202CA000777A230DC29F2C78D608FEC0C2922CC3EF250521FF0BCD592DB7F2B22C78B7CAF8 +:202CC000CB2C21070C8677D2EF25C83AFF0BB7FCDD2C21080C7EE6802B2BAE77C921000C94 +:202CE000060734C02305C2E22C34CA88302B3680C911300C210D0CC3022D3E8E210D0C11EB +:202D0000000C0E0732092DAF1A8E1213230DC2082DC97E2F7721FF0B0608AF4F799E7723B2 +:202D200005C21C2DC971E5D608DA3C2DE1E51100084E73592B15C2312DC3272DC60957AFFE +:202D4000E115C8E51E087E1F772B1DC2462DC33F2D21060C1601C3432D0E087E1777230D1B +:202D6000C25B2DC9CD4528C83A140CB7CAEF25CDF927CD9D2E711306071A13B7D5CA992DF0 +:202D80000E08C51F47DCFA2CCD512D78C10DC2822DD105C2792DC3912C21060CCD2D2DC313 +:202DA000912DCDCCCCCCCCCC4C7D00000000000020843A070CFE41D2C62D11A22D210D0CB4 +:202DC000CDC928C3642D3A060CB7F2D62DE67F32060C217428E5CD0E2E11000C210D0CCD71 +:202DE000C928CD0E2ECD262C11000C210D0CCDC9283E0FF5CD162ECD222ECD262C21130CD6 +:202E0000CD332EF13DC2F32DCD0E2ECD0E2E21070C35C0C3EF2521140C3E0435C83DC21BC8 +:202E20002EC9D13E04210D0C4E234623C53DC2282ED5C9D13E0421140CC1702B712B3DC271 +:202E4000392ED5C93A140CB7CA94303A070CB7CAEF25CDF6273434CA8830CD9D2E21370C1C +:202E600071413E9ECDF12C1A993FDA742E3E8ECDF12CAFDA12043A060C3C3D1FFACE2C1728 +:202E800021000C0E07CD5B2D21300CCD592D78B7C2622E21070C35C2622EC3EF257932131A +:202EA0000C2B11360C0100077E12711B2B05C2A82EC9CDF428EB2B7EB7C8C602DA88307706 +:202EC000E5CD262CE134C0C38830CDEF25CD332AF6AF016A25C5F53E0132090CF1EB01FF42 +:202EE000006068CCDC29EB7EFE26CA691CFE2DF5CAF92EFE2BCAF92E2BCD0513DAE02FFE3B +:202F00002ECA862FFE65CA0B2FFE45C2352FE5CD0513FE6CCA232FFE4CCA232FFE71CA2322 +:202F20002FFE51E1CA342F3A670AFE08CA4E2F3E00C34E2F7EFE25CA932FFE23CAA42FFEA6 +:202F400021CAA52FFE64CA4E2FFE44C2652FB7CDAE2FCD0513CD321DCD0513DA533014C2F7 +:202F6000652FAF935FE57B905FF4BD2FFCCD2FC2692FE1F1E5CC6B28E1CD641DE8E5215711 +:202F800027E5CDE529C9CD641D0CC2652FDCAE2FC3F92ECD0513F1E5215727E5217A29E546 +:202FA000F5C3652FB7CDAE2FCD0513C3652FE5D5C5F5CCF429F1C4202AC1D1E1C9C8F5CD06 +:202FC000641DF5E42E28F1ECB22EF13DC9D5E5F5CD641DF5E45E27F1ECB22DF1E1D13CC9CE +:202FE000D5788947C5E57ED630F5CD641DF219302A040C11CD0CCDCD43D21530545D2929ED +:203000001929F14F097CB7FA133022040CE1C1D1C3F92E79F5CD112A37D235300174941128 +:203020000024CD0629F23230CD2E28F1CD4830C30D30CD2A2ACDB22ECDF428F1CD5428CD05 +:203040002A2ACD262CC30D30CD9928CD5428C1D1C388257BFE0AD262300707830786D63019 +:203060005FFA1E7FC3582FE521060CCD641DE277303A130CC3783079AE17E1C39E30F1F1CB +:203080003A060C17C39E30F13A080C2F17C39E3079C397303A130C17216205229C07E5C5BC +:2030A000D5F5F52AB90A7CB5C2CB3021090C7EB7CAB8303DC2CB30342A9C07CD792432655D +:2030C0000A3E0DCD83243E0ACD8324F121040C110A31D2D830110E31CDC328CD641DDAEA09 +:2030E0003021000C110E31CDC3282AB90A7CB52A9C07110905EB229C07CA0531CDCD43CA0A +:20310000DB0CC3CC0CF1D1C1E1C9FFFF7FFFFFFFFFFFE521400CCD2347E1012247C5CDDC46 +:2031200029AFCDB231B6C34631AFCDB231E608CA3431362BEBCD8628EBF24631362DC5E573 +:20314000CD6B28E1C1B42336303A9D0A57173A670ADAD732CACF32FE04D2BB31010000CDFA +:20316000BA3521160C460E203A9D0A5FE620CA7F3178B90E2AC27F317BE604C27F31417185 +:20318000CD0513CA9F31FE45CA9F31FE44CA9F31FE30CA7F31FE2CCA7F31FE2EC2A2312BBF +:2031A00036307BE610CAAB312B36247BE604C02B70C9329D0A21160C3620C9CD9928EB2AA6 +:2031C000000CE52A020CE5EBF5AF320B0CF1F5CD663206450E00E57EB8CA0732FE3AD2E756 +:2031E00031FE30DAE7310C237EB7C2D8313E44B847E10E00C2D631F1C1D1EB22000C6069B1 +:2032000022020CEBC1D1C9C50600237EFE2BCA4E32FE2DCA2532D6304F7887878087814763 +:20322000FE10D24E32237EB7C20C3260C178FE45C243327984FE09E1D2F7313E80320B0CDD +:20324000C353327C81FE12E1D2F731C33B32C1E1C3F731F1C1D1EB22000C606922020CEB01 +:20326000C1D1CDA92823FE05E5DE00175714CD5C34010003F53A0B0CB7F28132F182C38BEF +:2032800032F182FA8F3214BAD28F323C473E02D602E1F5CDFB343630CCBE28CD22352B7E1B +:2032A000FE30CA9E32FE2EC4BE28F1CAD032F5CD641D3E228F7723F1362BF2C132362D2F1E +:2032C0003C062F04D60AD2C332C63A23702377233600EB21160CC923C5FE047AD251331F7C +:2032E000DAEE33010306CDF334D17AD605F4CF34CDBA357BB7CC1F283DF4CF34E5CD62313E +:20330000E1CA06337023360021150C233ABC0A9592C87EFE20CA0B33FE2ACA0B332BE5F5D3 +:20332000011F33C5CD0513FE2DC8FE2BC8FE24C8C1FE30C2493323CD0513D249332B012BE8 +:2033400077F1CA3F33C1C30C33F1CA4933E13625C9E51FDAF533CA6D33111136CD432916B3 +:2033600010FA7B33E1C1CD29312B3625C9010EB611CA1BCD0629F264331606CD4528C45CC7 +:2033800034E1C1FAA033C55F789293F4CF34CDE634CD2235B3C4DF34B3C40E35D1C3F332CA +:2033A0005F79B7C4CB2F83FAAB33AFC5F5FCCD2FFAAD33C17B90C15F8278FAC9339293F435 +:2033C000CF34C5CDE634C3DA33CDCF3479CD12354FAF9293CDCF34C5474FCD2235C1B1C26B +:2033E000E5332ABC0A833DF4CF3450C3FC32E5D5CD112AD1AFCAFB331E10011E06CD452806 +:2034000037C45C34E1C1F579B7F5C4CB2F804F7AE604FE019F57814F93F5C5FCCD2FFA1B55 +:2034200034C1F1C5F5FA2934AF2F3C803C82470E00CD2235F1F4D834CD0E35C1F1C24C34CF +:20344000CD1F287EFE2EC4BE2822BC0AF1DA5334839092C5CDAE32EBD1C3FC32D5AFF5CDC0 +:20346000641DE280343A070CFE91D2803411F135210D0CCDC928CD642DF1D60AF5C3653424 +:20348000CDB234CD641DEA953401439111F94FCD0629C39B3411F935CD4329F2AE34F1CDB2 +:2034A000BE2FF5C38334F1CDCD2FF5CDB234F1B7D1C9CD641DEAC43401749411F823CD06D4 +:2034C00029C3CA34110136CD4329E1F2A634E9B7C83D363023C3D034C2DF34C8CD0E3536FC +:2034E00030233DC3DB347B823C473CD603D2EB34C6054F3A9D0AE640C04FC905F20F35228E +:20350000BC0A362E23363004C204352348C905C21A35362E22BC0A2348C90DC0362C230ECF +:2035200003C9D5CD641DE27135C5E5CDF428210936CDEE28CD262CAFCDCF2AE1C1111936A8 +:203540003E0ACD0E35C5F5E5D5062F04E1E53E9ECDFF2CD24B35E13E8ECDFF2CEBE1702376 +:20356000F1C13DC24235C5E521000CCDA628C37E35C5E5CD79253E01CD422ACDA928E1C16E +:20358000AF115F363FCD0E35C5F5E5D5CDB428E1062F047B965F237A9E5723799E4F2B2B6F +:2035A000D29235CD422623CDA928EBE17023F1C1DA843513133E04C3C035D51165363E05F4 +:2035C000CD0E35C5F5E5EB4E2346C523E3EB2A040C062F047D936F7C9A67D2D3351922045C +:2035E0000CD1E17023F1C13DC2C035CD0E3577D1C900000000F90215A2E1FF9F31A95F63E6 +:20360000B2FEFF03BFC91B0EB60000000000000080000004BFC91B0EB60080C6A47E8D03AE +:2036200000407A10F35A0000A0724E1809000010A5D4E8000000E8764817000000E40B5481 +:2036400002000000CA9A3B00000000E1F5050000008096980000000040420F00000000A00F +:2036600086011027001027E80364000A000100AF47C20601C5CDDB22C111150CD5AF12051F +:20368000040E06CA8E360E04298F298F298F298FB7C29F36793DCA9F361AB7CAAB36AFC6FE +:2036A00030FE3ADAA836C607121312AF0DCAB8360504CA8A36C3883612E1C9217428E3E919 +:2036C000CD9928210D36CDA628C3CF36CDF429C1D1217225E53E0132090CCD452878CA2B4F +:2036E00037F2E836B7CA9730B7CAF025D5C579F67FCDB428F21337F53A070CFE99DA04374A +:20370000F1C31337F1D5C5CD8D2AC1D1F5CD0629E17C1FE122060CE122040CDCBB36CC7468 +:2037200028D5C5CDBD26C1D1CD0327013881113BAACD03273A070CFE88D26037FE68DA72F9 +:2037400037CD9928CD8D2AC681C1D1CA6337F5CD8525217B37CDA737C11100004AC30327F0 +:20376000CD99283A060CB7F26F37F1F1C3EF25C37E30010081110000C3A928077C885974F7 +:20378000E0972677C41D1E7A5E50637C1AFE757E1872318000000081CD992811952BD5E52F +:2037A000CDB428CD0327E1CD99287E23CDA62806F1C1D13DC8D5C5F5E5CD0327E1CDB72838 +:2037C000E5CD8825E1C3B03752C74F80CD0513E5219726CDA628CDDD37E1C3362ACD4528B5 +:2037E000214838FA3E38216938CDA628214838C886E6070600772387874F09CDB728CD03FD +:20380000273A47383CE6030600FE018832473821693887874F09CD7C25CDB4287B59EE4F15 +:203820004F36802B463680214638347ED6ABC23538770C151CCDDA25216938C3C028772BCC +:20384000772B77C31938000000354ACA99391C76982295B3980ADD479853D199990A1A9F15 +:203860009865BCCD98D6773E9852C74F8068B1466899E9926910D1756821FF38CD7C253A1D +:20388000070CFE77D83A060CB7F29538E67F32060C117428D501227E1183F9CD0327CD9950 +:2038A00028CD8D2AC1D1CD852501007F110000CD0629FAD93801807F110000CD88250180AF +:2038C00080110000CD8825CD4528F4742801007F110000CD8825CD74283A060CB7F5F2E6CF +:2038E00038EE8032060C210739CD9837F1F03A060CEE8032060CC90000000083F9227EDB42 +:203900000F49810000007F05FBD71E866526998758342387E15DA586DB0F4983CD9928CD79 +:203920007F38C1E1CD9928EBCDA928CD7938C36727CD4528FCBB36FC74283A070CFE81DAE3 +:203940004E390100815159CD6927218225E5215839CD983721FF38C9094AD73B78026E846A +:203960007BFEC12F7C74319A7D843D5A7DC87F917EE4BB4C7E6CAAAA7F000000812BCD0592 +:2039800013C8CDD3432C017D39C5F6AF32660A4ECD0345DAC90CAF4732C507237EFE2EDACD +:2039A000E339CAB539FE3AD2AF39FE30D2B539CD0445DAE33947C506FF11C507F6800412CD +:2039C00013237EFE3AD2CD39FE30D2BC39CD0445D2BC39FE2ECABC3978FE27D2C90CC1322F +:2039E000C5077EFE26D2FF39110D3AD51602FE25C814FE24C814FE21C81608FE23C8F179B5 +:203A0000E67F5F1600E521890A1956E12B7A32670ACD05133AA50A3DCA923BF2293A7ED650 +:203A200028CA163BD633CA163BAF32A50AE53AB70BB732B40BCA7D3A2AE60A11E80A19222D +:203A4000B50BEBC3633A1A6F131A13B9C25B3A3A670ABDC25B3A1AB8CAE53A131A26008530 +:203A60003C6F19EB3AB50BBBC2463A3AB60BBAC2463A3AB40BB7CA923AAF32B40B2AC40ACB +:203A800022B50B2AC20AC3633ACD8B39C9575FC1E3C9E1E3D5118C3ACDCD43CA8D3A114D35 +:203AA0001CCDCD43D1CA003BE3E5C53A670A473AC507803C4FC506000303032AC60AE509EB +:203AC000C1E5CDB642E122C60A606922C40A2B3600CDCD43C2CE3AD17223D1732372CDA338 +:203AE0003CEB13E1C9133AC507671ABCC25C3AB7C2F63A13E1C9EBCDB83CEBC25D3AE1C934 +:203B000032070C676F22040CCD641DC2143B21440C22040CE1C9E52A660AE357D5C511C583 +:203B2000071AB7CA583BEBC6021F4FCDC742794E234623C53DC22F3BE53AC507F5EBCD112F +:203B400014F122EC07E1C6021FC12B702B713DC2493B2AEC07C35F3BCD1114AF32C5073AB5 +:203B6000C60BB7CA6C3B7AB3CAD63B1BC1F1EBE3E5EB3C577EFE2CCA1C3BFE29CA843BFECF +:203B80005DC2C90CCD051322BC0AE122660A1E00D511E5F52AC40A3E19EB2AC60AEBCDCD5A +:203BA00043CAF03B5E237E23B9C2B83B3A670ABBC2B83B7EB8CADC3B235E1C1600195E23BE +:203BC0005623C2983B3A660AB7C2D20CF1444DCA572796CA5D3C110900C3E30C233AC5071E +:203BE000BEC2B93B23B7CABE3B2BCDB83CC3BE3B3A670A77235F1600F1CA963C712370CDF4 +:203C0000A33C234FCDC7422323229D0A71233A660A1779DA233CF53AC60BEE0B4F0600F128 +:203C2000D2253CC10371F5237023CD052BF13DC2133CF5424BEB19DADD42CDEB4222C60ACA +:203C40002B3600CDCD43C2403C03572A9D0A5EEB2909EB2B2B73237223F1DA923C474F7E29 +:203C60002316E15E235623E3F5CDCD43D2D63BCD052B19F13D444DC2623C3A670A444D29FE +:203C8000D604DA8A3C29CA8F3C29B7E28F3C09C109EB2ABC0AC9379FE1C97E23C506004FAD +:203CA00009C1C9C5D5F511C5071A47041A13237705C2AC3CF1D1C1C9D5C511C607472304F8 +:203CC00005CAD23C1A13BE23CAC03C783DC49C3CAF3DC1D1C9328A072AB30AB4A53CEBC8A9 +:203CE000C3E73CCD1D14C0E1EB22B50AEBCDF80ED2CC14606923234E234623C5CDE620E1A1 +:203D0000E57CA53C3E21CCD640C41A313E20CDD640216209E50EFF0C7E23B7C2173DE147B0 +:203D20001600CDF541B7CA223DCD5B1CD630DA413DFE0AD2413D5F7A070782078357C32261 +:203D40003DE521203DE31514C24C3D14FED8CABA3EFE4FCAC93EFEDDCAD73EFEF0CAA83D4B +:203D6000FE31DA673DD620FE21CAEC3EFE1CCAE23DFE23CABB3DFE19CA3E3EFE14CAEC3D45 +:203D8000FE13CA093EFE15CADA3EFE28CA393EFE1BCAB53DFE18CA363EFE113E07C2D64050 +:203DA000C1D1CD2142C3E83C7EB7C804CDA5422315C2A83DC9E521033EE337F5CDF5415F45 +:203DC000F1F5DC033E7EB7CAE03DCDA542F1F5DC813EDAD73D23047EBBC2C53D15C2C53DA4 +:203DE000F1C9CDDC20CD2142C1C3FF3C7EB7C83E5CCDA5427EB7CA033ECDA542CD813E1571 +:203E0000C2F43D3E5CCDD640C97EB7C8CDF541FE20D22B3EFE0ACA2B3EFE07CA2B3EFE0996 +:203E2000CA2B3E3E07CDD640C30C3E77CDA542230415C2093EC936004816FFCDA83DCDF5DA +:203E400041FE7FCA713EFE08CA733EFE0DCAD73EFE1BC8FE08CA733EFE0ACA913EFE07CAEE +:203E6000913EFE09CA913EFE20DA3E3EFE5FC2913E3E5F0504CA993ECDA5422B05113E3EB9 +:203E8000D5E50D7EB737CA5727237E2B7723C3833EF579FEFFDAA13EF13E07CDD640C33E7F +:203EA0003E900C04C5EB6F260019444D23CDB942C1F177CDA54223C39E3E78B7C82B3E0843 +:203EC000CDA5420515C2C93EC978B7C8052B7ECDA54215C2C93EC9CDDC20CD2142C1D17A7D +:203EE000A33C216109C837F523C3140EC1D17AA33CCA1C42C3870DCD031ACD3B2ACDD343F3 +:203F00003BEB2A040CC3113F3AA60AB7CA1B3FD1EBE5AF32A60A3CF5D546B0CA1814237EA4 +:203F200023666FC3453F58E50E027E23FE5CCA9140FE20C23B3F0C05C22A3FE1433E5CCD3E +:203F4000CC40CDD640AF5F57CDCC40577E23FE21CA8E40FE23CAA13FFE26CA894005CA67CD +:203F600040FE2B3E08CA483F2B7E23FE2ECAC03FFE5FCA7D40FE5CCA263FBEC23F3FFE24F3 +:203F8000CA9A3FFE2AC23F3F7823FE02DA923F7EFE243E20C29E3F051CFEAFC610231C82CE +:203FA000571C0E0005CAF63F7E23FE2ECACB3FFE23CAA13FFE2CC2D73F7AF64057C3A13F64 +:203FC0007EFE233E2EC23F3F0E01230C05CAF63F7E23FE23CACB3FD511F43FD5545DFE5EC3 +:203FE000C0BEC023BEC023BEC02378D604D8D1D1471423CAEBD17A2B1CE608C216401D78F2 +:20400000B7CA16407ED62DCA1140FEFEC216403E08C604825705E1F1CA7240C5D5CD021A5A +:20402000D1C1C5E5437881FE19D218147AF680CD2A31CD2347E12BCD051337CA4E4032A64C +:204040000AFE3BCA4B40FE2CC2C90CCD0513C1EBE1E5F5D57E902316005F7E23666F197839 +:20406000B7C2453FC36D40CDCC40CDD640E1F1C2083FDC2142E3CDAB48E1C3E917CDCC40DD +:20408000057E23CDD640C35F400E00C392400E013EF105CDCC40E1F1CA7240C5CD021ACDAD +:2040A0003B2AC1C5E52A040C410E0078F578B7C44F49CD26472A040CF1B7CA354096473E39 +:2040C000200405CA3540CDD640C3C240F57AB73E2BC4D640F1C9F5E5CD5446C26656E13AD3 +:2040E0008D07B7CA5C41F1F5FE08C2FC403A8C07D601DAF840328C07F1C33741FE09C210A4 +:20410000413E20CDD6403A8C07E607C20141F1C9F1F5D60DCA3341DA36413A8F073C3A8C7B +:2041200007CA2D41E5218F07BEE1CC4D41FEFFCA36413C328C07F1F5C5D5E54FCD0000E10A +:20414000D1C1F1C9AF328D073A8C07B7C83E0DCD37413E0ACD3741AF328C07C93A9307B76D +:20416000C25847F1C5F5FE08C27B413A650AB7CA8D413D32650A3E08C3AE41FE09C2904147 +:204180003E20CDD6403A650AE607C28041F1C1C9FE20DAAE413A9007473A650A04CAA541EE +:2041A00005B8CC2142FEFFCAAE413C32650AF1C1F5F1F5C5D5E54FCD0000E1D1C1F1C9CD5E +:2041C0005446CAF541CDC257D0C5D5E5CD4D53E1D1C13AF30BB7C230503A9E07B7CAE74177 +:2041E00021A012E5C33743E5C5D521450CCD2347D1C1AFE1C9C5D5E5CD0000E1D1C1E67F93 +:20420000FE0FC03A9307B7CC41442F329307B7CA4144AFC93A650AB7C8C321423600216176 +:20422000093E0DCDD6403E0ACDD640CD5446CA3342AFC93A8D07B7CA3F42AF328C07C9AF42 +:2042400032650A3A88073DC8F5AFCDD640F1C34642C5D5E5CD0000E1D1C1B7C8CDF541FEED +:2042600013CCF541328907FE03CC4344C30144CD0513E5CD9942C28342CD0000B7CA8C42F6 +:20428000CDF541F5CDB746F15FCDF84821440C22040C3E0332670AE1C93A8907B7C8F5AFE1 +:2042A000328907F1C9CDD640FE0AC03E0DCDD640CD2B423E0AC9CDEB42C5E3C1CDCD437EA0 +:2042C00002C80B2BC3BC42E52A760A060009093EC6956F3EFF9C67DADD4239E1D82A96077C +:2042E0002B2B22B10A110700C3E30CCDFF42D0C5D5E5CD6747E1D1C1CDFF42D0C3E542D5D9 +:20430000EB2A9B0ACDCD43EBD1C93AC4074721A407AF045E2356231205C21343CD0D54AFB0 +:20432000C02A9A07CD7D4432EC0B32AA0A32A90A7723772322C20A2A9A072B22A70A3AED5E +:204340000BB7C25843AF32C70B32C60B061A21CA0A36042305C2514311C837216938CDC359 +:2043600028214638AF7723772377AF32BB0A6F6722B90A22C00A2A760A3AF30BB7C28343AE +:20438000229B0AAFCDE6432AC20A22C40A22C60A3AED0BB7CC0D54C12A96072B2B22B10A08 +:2043A0002323F9217A0A22780ACD7225CD4441CDE917AF676F22E60A32B70B224E0B22BA10 +:2043C0000B22E40A32A50AE5C52AA70AC97C92C07D93C97EE3BEC2E34323E3237EFE3AD036 +:2043E000C30A13C3C90CEB2A9A07CAFB43EBCD2814E5CDF80E6069D1D2CC142B22C80AEB85 +:20440000C9C03CC30C44C0F5CC0D54F122AF0A217A0A22780A21F6FFC12A9807E5F57DA432 +:204420003CCA2D4422BE0A2AAF0A22C00AAF329307CD4441CD1442F1214A0CC2620DC3867A +:204440000D3E0FF5D603C24F44328D073293073E5ECDD640F1C640CDD640C321422AC00ADA +:204460007CB5111100CAE30CEB2ABE0AEBEB229807EBC9CD7520C03C328807C93EAF32FE03 +:204480000BC9CD8B39D5E521F60BCDC9282AC40AE3CD641DF5CDD3432CCD8B39F147CD64F6 +:2044A0001DB8C2E10CE3EBE52AC40ACDCD43C2C144D1E1E3D5CDC928E111F60BCDC928E16F +:2044C000C9C318143E0132A50ACD8B39C2C144E532A50A60690B0B0B0A0BB7FAD8440B0B04 +:2044E00019EB2AC60ACDCD431A021303C2E5440B606922C60AE17EFE2CC0CD0513C3C44405 +:20450000F1E1C97EFE41D8FE5B3FC9C33B43CA0B45FE2CCA2045CD14142BCD0513CA0B4537 +:20452000CDD3432CCA0B45EB2A9607EBFE2CCA3445CD79452BCD0513D5CA8545CDD3432C35 +:20454000CA8545CD79452BCD0513C2C90CE3E5214E00CDCD43D28245E1CD9745DA8245E5D8 +:204560002AC20A01140009CDCD43D28245EB22760AE1229607E1C30B45CDD1227AB3CA18C1 +:2045800014C9C3DD42E52A9607EB2A760A7B955F7A9C57E1C34D457D935F7C9A57C9F5F679 +:2045A000AF32BF0BF111000022BD0BC48B3922A70ACD500CC2CF0CF9D55E235623E52ABDAF +:2045C0000BCDCD43C2CF0CE1D1D57EF523D57E23B7FAF945CDA628E3E53ABF0BB7C2E745C8 +:2045E00021C00BCDA628AFC47C25E1CDC028E1CDB728E5CD0629C32F46232323234E2346A1 +:2046000023E35E2356E569603ABF0BB7C215462AC00BC32046CD312B3A670AFE04CADB0C92 +:20462000EBE1722B73E1D55E235623E3CD3329E1C190CDB728CA4146EB2298076960C39CDF +:2046400012F922B10A2AA70A7EFE2CC2A012CD0513CDA845E52A94077CB5E1C9CDA5487E1F +:20466000234E2346D1C5F5CDAC48F1575E234E2346E17BB2C87AD601D8AFBB3CD0151D0AE3 +:2046800003BE23CA72463FC35028CD6F36C39946CD7236C39946CD2931CDC746CDA8480150 +:2046A000FC48C57E23E5CD3C47E14E2346CDBC46E56FCD9B48D1C93E01CD3C4721980AE5DF +:2046C0007723732372E1C92B062250E50EFF237E0CB7CADD46BACADD46B8C2CE46FE22CC87 +:2046E0000513E578FE2CC2F5460C0DCAF5462B7EFE20CAEA46E1E323EB79CDBC4611980A72 +:204700003ED52A780A22040C3E0332670ACDC928119B0ACDCD4322780AE17EC0111000C3CC +:20472000E30C23CDC746CDA848CDB9281415C80ACDD640FE0DCC2B4203C32D47B70EF1F51B +:204740002AC60AEB2A9B0A2F4F06FF0923CDCD43DA5A47229B0A23EBF1C9F1110E00CAE352 +:204760000CBFF5013E47C52A760A229B0A210000E52AC60AE5217A0AEB2A780AEBCDCD43D4 +:20478000017847C21248214C0B22B80B2AC40A22B50B2AC20AEB2AB50BEBCDCD43CAB947A9 +:2047A0007E232323F5CD9A3CF1FE03C2B247CD1348AF5F160019C395472AB80B5E23567A8B +:2047C000B32AC40ACADB47EB22B80B23235E235623EB1922B50BEBC39547C1EB2AC60AEB31 +:2047E000CDCD43CA37487E23F52323CD9A3C4E234623F1E509FE03C2DA47229F0AE14E0677 +:2048000000090923EB2A9F0AEBCDCD43CADB47010448C5AFB6235E235623C8444D2A9B0A35 +:20482000CDCD436069D8E1E3CDCD43E3E56069D0C1F1F1E5D5C5C9D1E17CB5C82B462B4E78 +:20484000E52B6E26000950592B444D2A9B0ACDB942E171237060692BC36A47C5E52A040C7E +:20486000E3CD931BE3CD3B2A7EE52A040CE586110F00DAE30CCDB946D1CDAC48E3CDAB48D3 +:20488000E52A990AEBCD9348CD934821121AE3E5C3FD46E1E37E234E23466F2C2DC80A1248 +:2048A0000313C39C48CD3B2A2A040CEBCDC648EBC0D550591B4E2A9B0ACDCD43C2C44847B6 +:2048C00009229B0AE1C92A780A2B462B4E2BCDCD43C022780AC901D51DC5CDA548AF577E9D +:2048E000B7C901D51DC5CDDA48CA1814235E23561AC9CDB746CD78202A990A73C1C3FD4688 +:20490000CD0513CDD34328CD7520D5CDD3432CCD021ACDD34329E3E5CD641DCA2449CD78DA +:2049200020C32749CDE648D1CD3049CD78203E20F57BCDB94647F10405CAFC482A990A7780 +:204940002305C23F49C3FC48CDC149AFE34F3EE5E57EB8DA584978110E00C5CD3C47C1E11F +:20496000E52346236668060009444DCDBC466FCD9B48D1CDAC48C3FD46CDC149D1D51A90AB +:20498000C34C49EB7ECDC6490405CA1814C5CDE34AF1E3015049C53DBE0600D04F7E91BB9F +:2049A00047D843C9CDDA48CAD51D5F237E23666FE5194672E3C52BCD0513CDCA2EC1E170E4 +:2049C000C9EBCDD34329C1D1C543C9CD0513CDFE19CD641D3E01F5CAED49F1CD7820B7CA92 +:2049E0001814F5CDD3432CCD021ACD3B2ACDD3432CE52A040CE3CD021ACDD34329E5CDA50F +:204A000048EBC1E1F1C5015727C501D51DC5F5D5CDAB48D1F1473D4FBE3E00D01AB778C813 +:204A20007E23462366680600099147C5D5E34E235E2356E1E5D5C51ABEC2554A130DCA4C23 +:204A40004A2305C2374AD1D1C1D1AFC9E1D1D1C17894813CC9C1D1E12305C2344AC3494AEE +:204A6000CDD34328CD8B39CD3B2AE5D5EB235E23562AC60ACDCD43DA8D4A2A9A07CDCD4399 +:204A8000D28D4AE1E5CDA346E1E5CDC928E1E3CDD3432CCD7520B7CA1814F57ECDE34AD549 +:204AA000CDF719E5CDA548EBE1C1F147E3E5215727E379B7C87E90DA18143CB9DAC04A790D +:204AC000480D0600D5235E23666B0947D1EB4E237E23666FEB79B7C81A7713230DC805C2F8 +:204AE000D84AC91EFFFE29CAF14ACDD3432CCD7520CDD34329C9CD641DC2024BCDA848CD55 +:204B00006747EB2AC60AEB2A9B0AC3C21D3E3FCDD6403E20CDD640C3284BCDBF41FE01C241 +:204B20007A4B3600C3384B70AF328907AF32E60BCDBF41FE01C26F4BCD214221FFFFC30027 +:204B40003D3A9207B73E5C329207C2554B05CA274BCDD64004052BCA694B7ECDD640C31AB3 +:204B60004B052BCDD640C21A4BCDD640CD21422162090601F5AF329207F14FFE7FCA414B88 +:204B80003A9207B7CA904B3E5CCDD640AF32920779FE07CAFA4BFE03CC434437C8FE0DCA3A +:204BA0003B4CFE09CAFA4BFE0AC2B44B05CA284B04C3FA4BFE15CC4344CA284BFE08C2D204 +:204BC0004B05CA304BCDD6403E20CDD6403E08C3624BFE18C2DC4B3E23C3694BFE12C2F5C8 +:204BE0004BC5D5E53600CD2142216209CDDC20E1D1C1C31A4BFE20DA1A4B78B7C2184CE5FE +:204C00002A94077CB5E13E07CA1C4C216209CD2814EB229807C35F1179712304CDD640D608 +:204C20000AC21A4B32650A3E0DCDD640CDBF41B7CA2C4CFE0DCA1A4BC37A4B3AE60BB7CA40 +:204C40001C42AF77216109C9F53E0032E60BF1FE3BC032E60BC3051322A10ACDDD24CD05D1 +:204C600013EBCDC14C3333C26F4C09F922B10A2A9807E52AA10AE5D5C3A14CC2C90CEBCD5E +:204C8000C14CC2EB4CF922B10AEB2A9807EBEB22C40BEB23235E2356237E23666F2298075B +:204CA000EBCD021AE5CD8628E1CAB54C01B40041C533C3A0122AC40B229807E1C1C1C3A031 +:204CC00012210400397E23018200B9C2D54C01100009C3C54C01B400B9C0E57E23666FCD60 +:204CE000CD43E1010600C809C3C54C111E00C3E30C3E8032A50ACD8B39E5EBCD641DCDEE2D +:204D000028CDDB2222E60B0E20CDC742D121C0FF39F9EB0E202BCD051322A70ACA5F4DCD68 +:204D2000D34328C5D5CD8B39E373237223E3D1C17EFE2CC23D4D0DCD0513C3234DCDD3438B +:204D40002922A70A3E2191E13DCA5F4DD13DCA5F4DC13DCA5F4DC5E521020039444DE1E57E +:204D6000216A4DE3E52AE60BE3C92AB10AF92AA70AC3A012AF32ED0B32EE0B7E11C500BB8B +:204D8000C2874D32ED0B232BCD0513CD9452E521000022F40BE12BCD0513CA074ECDD34353 +:204DA0002CFE2CCAB84DCD021AE5CDDB2222F40BE12BCD0513CA074ECDD3432C11AA00BB80 +:204DC000CADB4DCDD34341CDD3434CCDD3434CCA4E4FCDD3432CBBC2C90CB7F532EE0BCDF3 +:204DE0000513CDD80EC5CD3524C1D1C5606922F10BCDF80ED2004E545D22EF0BE1CDCD4341 +:204E0000D21814F1C24E4F2A9807E52A9A072B237E23B6CACF4E235E2356EB229807EBCDE1 +:204E20000513B7CA0F4EFE3ACA1F4E11B800BBCA3C4ECD0513CDEC142BC31F4ECD0513CA79 +:204E4000224EE53E0132A50ACD893ACAA24E78F68047AFCD923B3E0032A50AC2684E7EFE02 +:204E600028C26E4EF1C3BE4E7EFE28CA1814E1CD893A7AB3C28F4E78F68047118A4ED511F1 +:204E80008C3AD53A670A57C3293A7AB3CA1814E5424B21B14EE50B0A0BB7FA974E0AF6807F +:204EA00002C932A50A7EFE28C26E4EE30B0BCD964EE12BCD0513CA224EFE28C2C84ECD057F +:204EC00013CDD34329CA224ECDD3432CC3424EE1229807EB2AC40AEB2AC20ACDCD43CA23E7 +:204EE0004FE54E23237EB7F5E67F7723CD9A3C060009F1C1FADB4EC5CD074F2AC40A19221F +:204F0000C40AEBE1C3DB4EEB2AC60ACDCD431A021303C20B4F79955F789C571B0B60692212 +:204F2000C60AC9EB2AC60AEBCDCD43CA4E4FE523237EB7F5E67F7723CD9A3C4E23462309EA +:204F4000F1C1FA284FC5CD074FEBE1C3284F2AC20AEB2AC40AEBCDCD43CA764F7E23232329 +:204F6000F5CD9A3CF1FE03C26E4FCDAE4FAF5F160019C3514FC1EB2AC60AEBCDCD43CAD8AE +:204F80004F7E2323F523CD9A3C4E234623F1E509FE03C2754F229D0AE14E0600090923EBE5 +:204FA0002A9D0AEBCDCD43CA764F019F4FC57E235E235623B7C8E52AC20ACDCD43E1D8E5A5 +:204FC0002A9A07CDCD43E1D0E52B2B2BE5CDA346E10603CDCD28E1C9CD67472AC60A444D1B +:204FE000EB2AC20AEB2AC40A7D936F7C9A6722B80B2A9B0A22E80BCDB94260692B229B0AA5 +:205000003AEE0BB7CA1B502AF10B444D2AEF0BCDA22222C40A22C60ACDAB0E3E0132F30B2E +:205020003AED0BB7C26D533AC407329F07C3B952AF32F30B32ED0B2AC20A444D2AB80B09D4 +:2050400022C40A2A9B0A23EB2AE80B229B0ACDCD431A021303C24E500B606922C60AEB2A55 +:20506000F40BEB2A9A072B7AB3CAA012CDF80ED2CC140B6069C3A012C3EC140E02CD0D51DB +:205080002BCD0513CADA50CD021AE5CD641DCACA50CD2931CDC7462A040C235E23561AFEBF +:2050A00020C2AA5013722B732B35CD2647E12BCD0513CADA50FE3BCABF50CDD3432C2BCD59 +:2050C00005133E2CCDD640C387503E22CDD640CD26473E22CDD640C3AD50E52A94077CB576 +:2050E000CA04517EFE03C20451CDC25C7D936F7C9A6711FEFF19D204513E20CDD6402B7CDE +:20510000B5C2F950E1CD2142C3E9170E01FE23C0C5CD2A51D1BBCA1E51FE03C2A00CCDD32A +:20512000432C5059EB229407EBC92BCD0513FE23CC0513CD021ACD78205F3AC407BBDAA6F9 +:205140000C1600E521A40719194E23460AB7E1C9CD3A51212900FE03C25E5121B20009EB4D +:20516000C93E02013E04013E08F5CDAC1FF1CDB9462A990ACDF728C3FC483E01013E030110 +:205180003E07F5CDA548F1BED218143C32670A237E23666FC3EE28CD641D018F1911202CC9 +:2051A000C2BB515AC3BB51CD0B51CD8B39CD3B2A01E917C5D5011215AF575FF5C5E5CDC2B6 +:2051C00057DAAC0CFE20C2CE511415C2BE51FE22C2E351477BFE2C78C2E3515058CDC257EF +:2051E000DA315221620906FF4F7AFE2279CA1C52FE0DE5CA5152E1FE0AC21C524F7BFE2CBD +:2052000079C48A52CDC257DA3152FE0DC21C527BFE20CA2B52FE2C3E0DCA2B52B7CA2B525D +:20522000BACA3152BBCA3152CD8A52CDC257D2E851E5FE22CA3C52FE20C26452CDC257DA12 +:205240006452FE20CA3C52FE2CCA6452FE0DC25C52CDC257DA6452FE0ACA64522A94070139 +:2052600028000934E136002161097BD620CA7852421600CDCB46E1C9CD641DF5CD0513F129 +:20528000F5DCD12EF1D4CA2EE1C9B7C8772305C0C1C365521601AFC3FE58F6AFF5CD945292 +:2052A0003AC407329F072BCD0513CABE52CDD3432CCDD34352C2C90CF1AF32C407F6F13296 +:2052C0009E07218000360022A407CD21433A9F0732C4072AA20722A4072294072A9807232E +:2052E0007CA53CC2E952229807CDC257DAA20DFEFEC2FA5232EC0BC3FE523CC27F532A9A4A +:2053000007EB2A9B0A01AAFF09CDCD43EBDA5653CD48577723D2015322C20A3AEC0BB7C408 +:20532000225DCDAB0E232322C20A21C4077E329F073600CD37433A9F0732C4073AF30BB7A9 +:20534000C230503A9E07B7CA870DC3A012CDE917CD0656C3C943CD2143C3DD42C1CD945256 +:205360002BCD0513CA6D53CD4D53C3C90CAF329E07CDC257DAA20D3CCAA00C3CCAA00C2A0B +:2053800094070128000934C3A20DE52A94077CB5114200C2E30CE1C3E5121602CD96522B28 +:2053A000CD0513CAB653CDD3432CFE50CAD15CCDD34341C38920CD9223CD655D3EFFCD68CE +:2053C00056EB2AC20AEB2A9A07CDCD43CA4D537E23D5CD6856D1C3C9530106563AC407C2C4 +:2053E000FC53E5C5F511EB53D5C5C9F1C13DF2E353E1C9C1E17EFE2CC0CD0513C57EFE23F9 +:20540000CC0513CD7520E3E511F353D5E9D5C5AFCDD953C1D1AFC9CD2A51CAA60CD603C2BE +:20542000A00CEB21A900097E23666F22E60B210000226F5D7CEB11B200EB0947EB7EFE2C72 +:20544000C0D5C5CD7220F5CDD34341CDD34353CD8B39CD3B2AF1C1E34FD5E52A6F5D0600E7 +:2054600009226F5DEB2AE60BCDCD43DAB80CE1D1EB7123732372E1C33954F637F5CD8B3997 +:20548000CD3B2AD5CDF719C1E3E5C5CDA54846E37E4FC5E5F5235E2356B7CAFC542A9A07F5 +:2054A000CDCD43D2D7542AC20ACDCD43DAD7545916002AC60A19EB2A9B0ACDCD43DA1055E2 +:2054C000F179CD3C47E1C1E3D5C5CDA548C1D1E3C5E523F5732372F1E1235E2356C1E12369 +:2054E0007E23666F79B8D2EA5447904FF1D406550405CA01557E122313C3F154C1C1C1C1B4 +:20550000C1DC0655E1C93E200C0DC81213C30955F1E1C1E3EBC22155C578CDB946CDFD46B2 +:20552000C1E3C5E5C3C154CD0513CDD34324CDD34328CD7520D57EFE2CC24B55CD0513CD5B +:205540002A51FE02CAA00CCD2251AFF5CDD34329F1E3F57DB7CA1814E5CDB946EBC1F1F534 +:20556000CA8555CD9942C26C55CDF541FE03CA7E5577230DC25E55F1CDE917C3FD462AB100 +:205580000AF9C31944CDC257DAAC0CC37155CD3651CAA60CFE02CAA00C212700097EB7CA51 +:2055A000C3550AFE03CAC355237EB7C2B855C56069CD7D57C1C399553E80964F0600092349 +:2055C0007ED61AD6019FC37F2850591321270009C5AF77CDB1573A2108CD9E5AFEFFCABB06 +:2055E0000C3DCA9D0C3DC2F555D1AF120E1013CD0500C39A0C3CCABB0CC1212500095E234A +:205600005613722B73C9CD3951CA3656C50A505913D5FE02C22C56212356E5E560693E1A72 +:20562000C37956212700097EB7C4CC55D1CDB1570E10CD0500C11629AF020315C23956C9F4 +:20564000CD3651CAA60CFE03212600C2515621AE00097E2B6EC3D71DCD3651CAA60C211022 +:2056600000097EC3D51DE1F1E5F52A94077EFE01CA0045FE03CA655CF1D5C5444DF511271C +:2056800000197EFE80E5CCC955E1344E060023F1F556FE0D70CA9D56C6E07A887709F1C14C +:2056A000D177E1C91B2B732372233680233680E1E3444DE53A1F08B7CAC8562122000973FF +:2056C0002372233600C30D57210D00097B177A1756BACA0557D5F5E5C51180000E1ACD0526 +:2056E00000D1D5130E10CD0500D1E1F177D5130E0FD5CD0500D13CC203570E16CD05003CE0 +:20570000CABB0CC1D1212100097BE67F77E13AA007B7C21A57CD7D57E1C9212100097EFE06 +:205720007FF511800021290009D5E5CC3B57CDC955D1E1F1CC3B57E1C3E917C506807E237D +:20574000121305C23E57C1C9C5E52A94077EFE03CA965C012800097EB7CA68572B7E2335A3 +:20576000964F097EB7E1C1C92B7EB7CA7457CD7A57C24A5737E1C13E1AC92A9407D5545D60 +:2057800013012500094E2346032B7123702323E50E802336000DC29257CDB1573A2008CD10 +:2057A0009E5AB73E00C2AA573E80E1772B77B7D1C9C5D5E521280019EB0E1ACD0500E1D1B8 +:2057C000C1C9CD4857D8FE1A373FC0C5E52A940701270009360023360037E1C1C9CD021AF3 +:2057E000E5CDA5487EB7CAB20CF5235E23666B5FFE02DA00584E237E1DFE3ACA04582B1CA1 +:205800002B1C0E401DCA625879E6DFD640DA6258FE1BD2625801FE070203160B231DFA520D +:20582000587EFE2EC23058CD3E58F137F5C31C5802032315C21D58AF320A08F1E1C97AFEEB +:205840000BCA6258FE03DA6258C83E20020315C33E581415CA37583E20020315C25758C35D +:205860003758C3B20CCDDD57E51180000E1ACD050011FE070E0FCD05003CCAA30C21EE07D7 +:2058800011FE07060C1A77231305C28558E1CDD34341CDD34353CDDD57E53AFE0721EE07FF +:2058A000BEC2181411FE070E0FCD05003CC2BE0C0E1711EE07CD0500E1C901E917C5CD0233 +:2058C0001AE5CDA5487EB7CAA00C234E23460AE6DF1602FE4FCAE6581601FE49CAE65816D2 +:2058E00003FE52C2A00CE1CDD3432CD5FE23CC0513CD7520CDD3432C7BB7CAA60CD15FD5F9 +:20590000CD3951C2AF0CD1C5D5CDDD57D1C1C5F57ACDCD5AF122A70ADA31597BB7C23159E7 +:205920002107087EFE20C231593642233641233653E17AF5229407E52311FE070E0C1A77BB +:2059400013230DC23E59AF771114001977D1D513CDB157E1F1F5E5FE02C26F59D50E13CD49 +:205960000500D10E16CD05003CCABB0CC385590E0FCD05003CC28559D1F1F5D5FE03C2A330 +:205980000C13C36359D1F112D521250019AF77237723772377E17EFE03CAA859FE01C2C9B8 +:2059A00043CD7A572AA70AC9012900090E8070230DC2AE59C3C943C0CD0D54C30000C0E513 +:2059C000CD0D540E19CD0500F50E0DCD0500F15F0E0ECD0500E1C9CDDD57E51180000E1A37 +:2059E000CD050011FE07D50E0FCD05003CD1D5F50E10CAF859CD0500F1D1CAA30C0E13CDF0 +:205A00000500E1C9C2145AE521FE073600230E0BCD965AE1C4DD57AF320A08E521FF070E87 +:205A200008CD925A2107080E03CD925A1180000E1ACD050011FE070E11CD0500FEFFCAA3AF +:205A40000CE60387878787874F0600218100090E0B7E23CDD64079FE04C2675A7EFE20CAAD +:205A6000645A3E2ECDD6400DC2515A3A650AC60D573A9007BADA805A3E20CDD640CDD64069 +:205A8000DC214211FE070E12CD0500FEFFC2415AE1C97EFE2AC0363F230DC2965AC9D54F11 +:205AA000C5CD0500C1D1F52121001934C2B65A2334C2B65A233479FE22C2CB5AF1B7C8FEF9 +:205AC00005CABB0CFE033E01C83CC9F1C9FE03C02BCD0513D5118000CAE05AC5CD1114C1B6 +:205AE000E52AEA0BCDCD43DA181421A90009732372AF1E0723771DC2F45AE1D1C9F6AF32F7 +:205B0000755DCD2A51FE03C2A00CC5E521AD00095E235613E37EFE2CCC11142BCD0513C243 +:205B2000C90CE37AB3CAB50C2B7323721BE1C1E5C521B00009AF77237721A900097E2366E7 +:205B40006FEBD5E5218000CDCD43E1C2545B110000C3925B424B3E10EB210000E529E3D2F6 +:205B6000675B2923C3685B29E3EB29EBD2765B09E3D2755B23E33DC25D5B7DE67F5F160041 +:205B8000C17D6C6129DA181417D28D5B2378B7C21814226F5DE1C1E521B2000922715D2158 +:205BA0002900091922735DE1E52180007D936F7C9A67D1D5CDCD43DABC5B626B3A755DB741 +:205BC000CA025C118000CDCD43D2D15BE5CD205CE1C5444DEB2A735DEB2A715DCD585C2261 +:205BE000715D5059C1CD1F5C2A6F5D23226F5DE17D936F7C9A677CB5110000E5C29F5BE17D +:205C0000E1C9E5CD205CE1C5444DEB2A715DEB2A735DCD585CEB22715D5059C1C3E85BF6EB +:205C2000AF32A007C5D5E5EB2A6F5DEB21AB0009E57E23666F13CDCD43E1732372C2475C23 +:205C40003AA007B7CA545C21545CE5C5E521260009C3A456E1D1C1C9C57E1223130B78B1CA +:205C6000C2595CC1C9F1D5C5F5444DCDC45CCA935CCDB95C21B1000919F177F521280009E7 +:205C8000563600FE0DCA8E5CC6E07ACE0077F1C1D1E1C9C3B80CD5CDC25CCA935CCDB95C45 +:205CA00021B10009197EB7D1E1C1C921A900C3B45C21B000095E2356C91321B000097323E5 +:205CC00072C9444DCDB15CD5CDAB5CEBD1CDCD43C9CD051322A70ACD9223CDE85C3EFECDBF +:205CE000BE53CD225DC3C943010B0D2A9A07EB2AC20ACDCD43C82158397D816F7CCE00673E +:205D00001A90AEF52107397D806F7CCE0067F1AE8112130DC2195D0E0B05C2EF5C060DC32D +:205D2000EF5C010B0D2A9A07EB2AC20ACDCD43C82107397D806F7CCE00671A91AEF5215869 +:205D4000397D816F7CCE0067F1AE8012130DC2535D0E0B05C2295D060DC3295DE52A9807B9 +:205D60007CA5E13CC0F53AEC0BB7C21814F1C900000000000000CD0A432A9A072B36002A30 +:205D80009F0A7EB7C29A52C3870DFEE0DA9C5DFEE8D29C5DD6E011B15DC3A95DD681DA18D7 +:205DA00015FE4CD2E21F110701074F0600EBC3FF12C15DEF5D385E095E125E2C5EDC5D598A +:205DC0005ECD645ECD8B5E1B36301B36007AF630CDB241EB21000022075EEBC9CD8B5E1BD6 +:205DE0003000E52A075EEBCD6E5EEBE1C39C16CD5A5ECD8B5E1B38007BE6075F7AE60787F7 +:205E00008787B3CDB241C90000CD5A5EEB22075EEBC9CD5A5ECD8B5E1B3200E52A075EEBA6 +:205E200022075ECD6E5EEBCD6E5EE1C9CD5A5ECD8B5E1B3100C31B5ECD645ECD8B5E1B34BD +:205E4000007AE607C630CDB241C9F5CD8B5E1B36311B380100F1C38920C9CD7520326D5E56 +:205E6000CDD3432CCD7520573A6D5E5FC9007BCD735E7AF50F0F0F0FCD7C5EF1CD825EC361 +:205E8000B241E60FC69027CE4027C9E37EB7CA985ECDB24123C38C5E23E3C919022A022BF6 +:205EA0000271029A02BF02D502ED02F2020E030F0314034803610374038A03A203A303E539 +:205EC000031E04390442044C046404680469040000213F61F9AF32EC0B229607F9212208F4 +:205EE000363ACD974332650A22B10A2A0100010400095E2356EB227A4222554222A212EBBA +:205F000023235E2356EB22F941EB23235E2356EB22B841EB23235E2356EB223D410E0CCD95 +:205F20000500321F08B7211415CA2F5F21212222200821FEFF229807AF32930732640A32D0 +:205F4000F30B32ED0B328A07210000228C0721800022EA0B217A0A22780A21E40A224C0BF7 +:205F60002A060022760A3E0332C407211960229F0A3A1A60B7C21B603C321A602180007EFD +:205F8000B7229F0ACA1B6046237E2B77232305C2895F2B3600229F0A217F00CD0513B7CA8A +:205FA0001B60FE2FCABD5F2B3622229F0A23FE2FCABD5FCD0513B7C2AE5FC31B603600CD23 +:205FC0000513CD5A1CFE53CA0760FE4DF5CAD55FFE46C2C90CCD0513CDD3433ACD641CF18B +:205FE000CAF45F7AB7C218147BFE10D2181432C407C3F95FEB22760AEB2BCD0513CA1B60F9 +:20600000CDD3432FC3C25FCD0513CDD3433ACD641CEB22EA0BEBC3F95F00002B2A760A2B33 +:2060200022760A2BE53AC40721CF5E22A20711A40732C4073C01A900EB73237223EB09E502 +:206040002AEA0B01B20009444DE13DC2386023229A0722B10AD17B956F7A9C67DADD4206CD +:2060600003B77C1F677D1F6F05C261607CFE02DA75602100027B956F7A9C67DADD422276F6 +:206080000AEB229607229B0AF922B10A2A9A07EBCDEB427D936F7C9A672B2BE521DF60CD9B +:2060A0002347E1CD1A3121D360CD234721234722980DCD2142217F0CC3765D0D0A0A4F7747 +:2060C0006E6564206279204D6963726F736F66740D0A002042797465732066726565000DAB +:2060E0000A42415349432D383020522E352F3234300D0A00007AFDFD1210EDED1212FDFD60 +:00000001FF diff --git a/hex/pw.hex b/hex/pw.hex new file mode 100644 index 0000000..a74646e --- /dev/null +++ b/hex/pw.hex @@ -0,0 +1,514 @@ +:020000040000FA +:20010000C3C7021A02100B3D2E7E3D1B01FFFF20A9B9000000000000FF0001E5FF7F010AEC +:20012000002A010054212E01467E0F77BE70C23801237CBAC22801C91E3F0E02C30500FF3C +:20014000C9FFFFFFFFFFFFFFC32404FFFFFFFFFFC32904FFFFFFFFFFC3D304FFFFFFFFFF77 +:20016000000F0200010000FF4800018100FFFF00001B290000000000001B2800000000001F +:200180003EC606962E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +:2001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +:2001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4420434F50592052204520542054582059 +:2001E00054482054412052554E20455849542053495A4520434845434B2053544154205595 +:20020000205855205445535420534554205344205353205352205357205245434C41494D7C +:20022000204449534B2047524F5550204C4F47205245534554204453205350454544205366 +:20024000415645204C4F41442052454144205752495445205245414447522057524954451B +:200260004752204455204455582044554820445541204D4F56452046494C4C20434D20535F +:200280004541524348204A5020455820474F20555231205552322055523320555234205375 +:2002A0004F52542050415353203F2000000000000000000000000000000000000000000073 +:2002C0001B36311B38302411C0020E09CD0500C31003000000000000000000000000000063 +:2002E0000000000000000000000000000000000001505720202000000000000000000000F6 +:20030000C3C537C32038C3EF38C303368A3B8A3B21000039221001318A3B2A06002E00E5CD +:200320003A6D01B7CA31035F3CC22E031E087C93672218133A1501B7CA3E033219133A1728 +:2003400001B7CA5F033200004F3EFF914F3E389116005F3EC312212904137D12137C12AF4C +:2003600032E004676F22A82C0E0CCD05007D3267047CB532BD0DF532971032AA0ECA8A0359 +:200380001EFFCD0133F68032AA0E2A01001103001922CC3719222438191919191922B63244 +:2003A0001922E7301922373219224527191922B8331922C933F11919222D27E1C2D20332E7 +:2003C0006701E5110F0019222D27E1111A00192228272A0E0323EB21800046783277052312 +:2003E0003A5D00FE20C4BC37EB36202336003A5C00B7CCBD35CD300E325C003275253A6AE3 +:2004000001321D36B7FA2904B7C20F043A5C0032D03ACDC63111D03ACD1033CD9F31321D3F +:2004200036C329043EFF325C30318A3B3EFF3257393A5C306FCD4E303A7705B7C2D3043AE6 +:200440001E01B7FAD304A5C2D304CD68380D0D09504F57455220332E3033206F6E20435006 +:200460002F4DA0CD680C3E221F1F1F1FE63FC630CDEF383E2ECDEF383A6704E63FCDB42F5A +:20048000CD683820312F320D0D2020436F707972696768742028632920313938312C2031E6 +:2004A00039383220627920504156454C204252454445520D09416C6C207269676874732032 +:2004C00072657365727665642E2030312F30332F38338D318A3BCD610C3A0D013248343EF0 +:2004E00000B7CAEF04325C003A16013DCC4E303A16013DC2FA042F325C30CDB70DCA140573 +:200500003A8708B73A9710C4FE321EFFCD0133F6803297103A77053CCAA21F215D00060B0D +:20052000363F2305C220052A0E0322771E3EFF3267083C32C51D32370B32F910328215326D +:200540005109328708328508329F0832750E32E00432B70E32A61632681E32C52F32D01A3E +:2005600032E41E32D00F327C0032131C32141C3A5C003275254F3E00B7CA84053EFF3277E6 +:2005800005C3D005CD6338AF320A3932203979CD8035CDB70DCAC7053AAA0EE67F4F3A970E +:2005A00010E67F47B7C2B405B9C2B4053A1C01B7CAC70578C5CD972FC179B8CAC705F5CD5B +:2005C0006838ADF1CD972F3A0701CDEF38CD03362A0E0323E5CD860CE1CDA80DCD782FCACB +:2005E0000106FE5BCA0106237ECD2A0E2BC208067ECD51303A5C0032752523CD782FC2089A +:2006000006AF327705C3D304E5060011D001AF322E067ECD1638EBBECA24064F7EE67FCDC6 +:200620001638B979EBC29806FE20C28B063E00B7CAB1063E00B7C2B106CD6838090770614C +:200640007373776F726420726571756972656400AF323406CD792FE5118001CD7006CD68F8 +:200660003809076261642070617373776F7264001AB7CA81060F0F0FEE97BEC01323C370BD +:20068000067EFE20C0323406C3D3041A07D29306322E062313C312061AB7CADD0D13FE2039 +:2006A000C29806EBCD792FEBCADD0D04E1E5C30E06783C32EF14E5FE09C27507E52A1813ED +:2006C000222D1325257522EA06233620E1CD792FCA7507237ECD2A0ECC782FCA7507FE2055 +:2006E000C2D306CD792FCA750711000013010000137E12B7CA6E07CD2A0EC20107CD782FA3 +:200700002B23130CC3F1064E2346EBC5C9347622191B230D74250E13220F19221B5A201C7B +:200720000438207C291F7C2917B23910B81516A7260A8A1F2BEC1F2C17201ABC0D2ED31FE3 +:200740002FD91F30DF1F31E51F215029225029255D2D264D2D24552D23452D274F2C280383 +:200760002F29C42E2A682D32DB0A335006FF2AEA0671092370E1D1CD792FCADD07FE3DC2D8 +:200780008E073A5C0032B70ECD782FCADD07237E2BCD2A0EC2DD073AE004B7C2A4073A5CC6 +:2007A0000032E0047ECD300E325C003AEF14FE1ACABC0DCD4E3023CD782FCADD07FE3DC297 +:2007C000DD07CD782F3A5C0032B70ECAD707237E2BCD2A0ECA8E073AE004325C00EB210D97 +:2007E000073AEF14BE7E23CA070723233CC2E107EBCDB70DC204083AEF14FE12DA0408FED7 +:2008000016DADD0DCD792FC4F321015C00C5C4AC2122362FE1060B237EFE3FCA220805C2EC +:200820001708326B0E3AEF14FE1ECA472BFE1DCAAD2BFE2DCA362CF5CD6338F1FE09CA50D6 +:2008400008FE01CA5B08AF328708328508C3E008216500364323364F23364DCD8408CAE03A +:20086000087BB7CA97083EFF3C3267085F3A6101BB7BD28A083EFF3267083A8508B7CAD32D +:2008800004C35B083E001E00B3C932370BCDFE323A6708B7C2E0083A8508B7CAE0083E006D +:2008A0005F3C329F08325C003A4834B7CAB6083A6001B7C2DC08D50E18CD0500D10110009A +:2008C0000DFAD30422D108CD702F7804BBC2C008210000CD702FD29E08C3E008BBCAD30406 +:2008E0002A0E0322771E21000022F40F22B709CD4E303E00B7C23F31115C001A32063BCDA5 +:200900007B31CD3030545D21090019463AEF14234EFE14CA3C09FE15C2220978EEFF47C386 +:200920003C0941FE12CA1B09FE13CA3C09FE09CA50093A6B0EFE3FC25009AF47DA9F093A2C +:200940006501B7FA4B097917DA9F097817DA9F093E00B7CA7309F5D511F6FF19E60F5F167B +:200960000019D1F17EFA6F0917DA9F09C3730917D29F092A771E060B133600233600231A94 +:2009800077231305C27F0922771EEB2AB7092322B709291924EB2A1813CD2C2BDA5E2F2A6F +:2009A000771E36FF2336FFCDA731C202092A0E03237E3CCA82312128002322D8092A0E0364 +:2009C000EB2A771E222F0A226A0A2323010D0073237223EB09EBE52100002B22D8097DB4B9 +:2009E000E1C2CF092AB7092322560A2B7DB4CAF00A3A0401B7CAF00ACD702FB4CAF00A7DB2 +:200A0000F6016F22460A2322590AEB2A460A7B956F7A9C6722430AEB2A460A19222C0A3E72 +:200A20000DCD690AF2550A2A430AEB21290001923D2909EB29094E1AEB711223134E1AEBEE +:200A400071121128002101007B956F7A9C67FA550AB5C2140A112900212900237B957A9C01 +:200A6000F2070A2A460AC3F80901923D2909EB2909EB4E2346EB5E2356EB5F0AFEFFC8E5B4 +:200A8000D5110B00197ED1E1173E00CE00573A0401FE01CACB0AFE03CAB60AFE05D2CB0A90 +:200AA000E5210B00097EE1173E00CE0092C03A0401FE02CACB0AE5C5160A7B925F230315F9 +:200AC000C2BD0ACDCB0AC1E1C01E0A7EE67F570AE67FBA0323C01DC2CB0AC9CD792FFE30F8 +:200AE000DABA3AFE3AD2BA3AD630320401C3D3042A560A29EB2A771E1922771ECD8408CA03 +:200B0000050BCD63383AEF14FE01CA150B3A6B0EFE3FC2360E3A5C00CD80353A8708B7C2E7 +:200B2000360B3A9710E67FC2380B3AAA0EE67FC2360B3A1C01B73E00F5C4972FCD7E35F193 +:200B4000CA480BFE0ADCED383AEF14FE013A6401C2580BB7F2580B3CE67F32C52F2AF40F6F +:200B6000EB2AB709CD2C2BDA3C0E2AF40F29EB2A2F0A2323195E2356EBE52AF40F2322F448 +:200B80000FE13AEF14FE01C29E0B3A0E01B7CAAD0BFA9E0BCD6838202020A0C3AD0BE52AA2 +:200BA000F40F0E30CDED2FE13E3DCDEF38E5110A00197E32D60B233A7001B77E32E80BE108 +:200BC000CAC70BB7FC680CB73E28FCEF38F4ED382323CD180C3E43B73E2AFCEF38FAF20B08 +:200BE0003A7001B7C2E90B3E4FB73E29FCEF38F4ED38CD610CE5D52AB709EB2AF40FCD2C07 +:200C00002BD1E1D23C0E3AC52F3D32C52FCA020B3E7CCDEF38C35D0BE5D1E5C13A6B01E6B2 +:200C20000FCA390CE5D55F1600197E17DA370C2B7E173FD2370CAFD1E1F53E08CD510CF1D1 +:200C40003E2ECA4C0C3E3ED24C0C3E3CCDEF383E03F57E1202CDEF38231303F13DC2510CB0 +:200C6000C9E5217801C36C0CE5217001C5462305FA820CE5D5C55E0E02CD0500C1D1E1C3CA +:200C80006E0CC1E1AFC95E1C237E1DC8FE5BC2880CCD782FC8FE5DC801910CC5CD1638FE36 +:200CA0002BCAD00CFE2DCAC90CFE22CA400DFE31DAFF0CFE3AD2FF0CE60F473A6401B7782F +:200CC000F2C50CF680326401C9CDD80C325109C9CDD80CC680C3CC0C237ECD16380E09FE12 +:200CE00052CAFD0C0CFE53CAFD0C0CFE58CAFD0CFE31DABA3AFE39D2BA3AE60FC979C9E58B +:200D0000FE56CA9A0DFE52CA620DFE53CA5C0DFE54CA680DFE50CA560DFE55CA6E0DFE5807 +:200D2000CA7A0DFE4DCA850DFE51CA940DFE24CA8E0DE1FE41D8FE45D0E60F3D326201C9DF +:200D4000237EFE22C8B72BC823FE0EF5CC6338F1C4EF38C3400D210501C3A30D216501C305 +:200D6000A30D216301C3A30D216601C3A30DCDB70DCAA60D218708C3A50D3285083A5C0048 +:200D800032E004E1C9216B017EC680C3A50D21F002C39D0D21F910C3A50D216701CDB70D94 +:200DA000CAA50D7E2F77E1C93A0501B7C83C3220393E20320A39C93ABD0DB7C93E22FE16CF +:200DC000DADD0D3A5C00CD300E210100CDD30DC3D304293DC2D20DEB0E25C30500AF327700 +:200DE00005CD68380907696E636F72726563742C20666F72206C697374206F6620636F6DE5 +:200E00006D616E647320656E7465723AA0AF21D00123BEC2110E2B2B7EFE20C2170E237ECA +:200E2000B7CAD304CDEF38C31E0EFE3AC8FE3BC9E60FC03E10C921010022F40F3AEF14FE27 +:200E400001C24D0ECD8408CAD304C35B082A771E2322771EE52AF40F2B7DB4E1C2710E2308 +:200E6000360123363123362023773E4DFE3FC29F0ECDA80D3E50FE2AC2900E2A771E2336B7 +:200E80000223363123362D233620233600C39F0ECD68380D73656C6563743FA0CD03362AF5 +:200EA000771E237E2BB7CAD3043E8032681E3AEF14FE02C2480F3E00B7C2DC0ECD68380D92 +:200EC0000D64657374696E6174696F6E20647269766520BACD1038FE0DCAD304CD300E3251 +:200EE0002A3B5F215C005673D5CD4E30D13AF308B7C23F31727ABBC2660F3AF910B7C266D9 +:200F00000F3A97105F3A681EBBC22A0FCD68380302636F707920746F2073616D6520647220 +:200F20006976E5AF32B70EC3AE0ECD68380D2843296F7079206F7220284D296F7665BACDD2 +:200F4000103832C51DC3660FF5AF322A3B32F910F1FE04C2660FCD68380D0745524153C5EC +:200F6000CD1B1CC2D304CD6338CDA80D3AEF14FE02C2770F320A393A2A3BB7C2810F3A0608 +:200F80003BF5CD9E322A771E2323229D0FAF6F67320210220F10225610224A1021EA3DCD8E +:200FA000792F229D0FCA7C10110000EB1AD630A7FAE20FFE0A3FDACF0F1329E52929C1097B +:200FC0004F060009C3AC0F3EFF32D00FC3A80F3EFF3CC8EB237EB7CA7C10FE20C2D40FC30D +:200FE0009F0F3AD00F3CC83A681EB7FAEF0FC0EB1BE5D5212800CD2C2BD1E1229D0FDAD49C +:201000000F3E2DFE2DC21210EB23225610EB11270013CD792F7E320210FE2DC22F10CD78D3 +:201020002F229D0FC22F10E52AF40F225610E1EB220F10EB136B6229EB2A2F0A195E2356D9 +:20104000EB237E2BB6C25510E521270023224A10EBE17323722100007DB4CA9C0FEB2A0F71 +:201060001023220F10E5CD2C2BE15D54DA34102B220F10210000225610C39C0F3A681EB749 +:20108000FA8410C021000022291A2C22F40F2A2F0A232322771E3E80B7C4FE322A0E03CD5A +:2010A0006338010D00C3A91009237E563CCAD3042B5EE52AF40FE5CD2C2B7CB5D1E1C2A83D +:2010C0001023772B77E5EB2322F40FE13A2A3BB7CADC10CD8035CD6838183ABD3A5C00CD5E +:2010E0007B3511073B012B3B2323CD1C0C2E18AF021203132DC2F0103E00B7CA7611212BAB +:201100003B060B363F2305C20311CD6838096E6577206E616D65BACD03362A771E23CD78A8 +:201120002FCA4311CDF321C23D11CD68380720426164206E616D650D0989C30A11012A3B32 +:20114000CDAC21CD68380D20202020A011073B212B3B060B7EFE3FC25B111ACDEF384F1A10 +:20116000B779F26711F68077132378FE043E2ECCEF3805C2541121333B11F43A0603CDBC4D +:20118000373AEF14FE03CA93113A6301B7C41B1CC2961011063B3AEF14FE18CA7419FE0BAF +:2011A000C4D6313A2A3BB7C2AD1C676F32C52F227B1F21F000223C1ECDC63111063B210FF8 +:2011C0003B3AEF144FFE04CA441AFE0CCA6513FE0BCA601BFE03CA791AFE11CA7E1CFE14A1 +:2011E000CA9B1CFE15CAA11C23FE13CA9B1CFE12CAA11CFE09C25713D5CD6338CD601BD1FF +:20120000CD10332A273BEB2AEA0624D5E5EB21FF123A7525324813065FCDBC37E1E52E16A2 +:20122000360023742E2B362523742E3E36382374E1D1E5D525250E80CD401CD1CD2C2BDAE9 +:201240005E2FAF32D01AE1257EB7C4782FCA6212237E2BCD2A0EC262127ECD300E326A1214 +:2012600023233AEB063C470E803E0002CDAC21AF1E0502031DC27212CD782F0B237E2BCAC3 +:201280008F12CD2A0EC28F127ECD300E022323CDAC21AF1E0502031DC2951221063B115CAE +:2012A00000CDBA373AF002B7FAE412C2B1123A752521D03A77112A3BD5CDBA37D1CD1033B8 +:2012C000CD9F31C2E412CDAF3121F002545D06FF237E04B7C2D0127832F002CDC931CD858E +:2012E00035CDF131115C00CDD6312AEA062424F9210000E52AEA0624110001CDB01FE9D57E +:201300000E1ACD0500115C000E14CD0500D121800019EBB7CAFF122100B22E0025257E1190 +:201320008000124723137E1205F224132100002E8025115C0006247E12231305C23713116D +:2013400080000E1ACD05001E001D0E0ECD0500C300013AFD3AB7C9CD68380D8D2A3C1E7D2D +:20136000E60F322F153AEF14B7F27113E67FC30F1411063BCD1132B7C2F6193AEF14FE0523 +:20138000CA0414FE0CCA04143A0C01B7CA04143A263B3D6F26003AFA3A3C4FCD401C7B3263 +:2013A000D1323AFB3A4F3A123BA14F4521163BCABC133E10B71F0DC2B413804705FACB1347 +:2013C00023CD5213CABC1323C3BC137E5E320A34CD521357CAD91323567A320B34CDC632B6 +:2013E000CD0827CD68380D0D8DCDF628CDED3821063B7ECD7B3523CD180CCDED387ECDB49E +:201400002FCD63382180003AEF14FE0CCA8815F5FE06CA1C14FE07CA1C14FE08CC8914F194 +:20142000FE06CAC214FE07CAC214FE08CA3C14FE05CA3A153E0632EF14C30F147ECDA021BC +:20144000DABA14CD5015CD63143AEF14E67FFE06C23C147DE60FCABF143A18013DCCED3826 +:20146000C33C143AEF14E67FFE06C83A18013DCA8514CDED383AEF14E67FFE07C285147D87 +:20148000E603CCED387DE60FC0CD63383AEF14B7F2991422A82CC3A614E52A3C1ED5111073 +:2014A0000019D1223C1ECDBA2FAF32C52FCD7E35CDED383AEF14B7F8E1C93E2EC34314CDE0 +:2014C00089147EE5CDB42FE13AEF14E67FFE06CADB14CD5315CD6314C3C2143A18013DCAB0 +:2014E000ED143CCCED387D3CE603CCED38233E1DB7F210151B7AB3C21015D57DE60FCA1689 +:20150000157DEE10E60F2FE60F3C5F19D1C316157DE60FC2C2143A18013DC22615CD6838AB +:201520000D2D2D2D2DBACDED38D511F0FF191E00AF57322F1519D1C33C147EFE1ACA4615FE +:20154000CD5015C33A153AEF14B7F29610C3D304CDEF38233AEF14B7F26E15E52A7B1F2BCD +:20156000227B1F7CB5EBE1C022A82CC3D3043A8215B7C27D153A0601FE0DCAEC197DB7C077 +:20158000E13E00B7C0C365137E32C52FE52A7B1F7CE680F5293AC52F856FF1CAA6157CEE2B +:2015A000A0677DEE976F227B1FE13AEF14B7C8CDC537CD5315C38815CD792FCD16383258E2 +:2015C00016CD4E30CD68380305636865636B73756D202620746573748D3E8032E41E3D32CE +:2015E000A616CDBF26EB36FF2322B316115C00060B3A0A01131205C2F4150615AF320A3958 +:20160000131205C20016115C00CD9F31CA2F16CD30303AD60BB7F229163A6500E67F3265E4 +:2016200000115C000E1ECD0633115C00CDC131CDB70DCA40163A0A01EE803265003266004C +:20164000AF326800CDBF26AF32EF14676F227B1F223C1E3C32A6163E00FE53C26516220085 +:201660002723220627CD122BDAA516CDFF263EFF32C52F3A0C01B7CA93163E2AF4EF38F2F7 +:201680009316CDF6283E0DCDEF383A5139B73E0AFCEF38CDB033CDC537218000CD8815CD40 +:2016A000C728D265163E00B7F26F17AF32A61632161721000022F816CD52133E08C2C11623 +:2016C00087321C172AF8167E23B6CA6F171120002A0E037EFEE5CAE1163CCA973519C3D330 +:2016E00016EBD5AF1213215D00061FCDBC37D121100019222817EB2100004E23CD5213CAE8 +:201700000517462378B1CA4317CD5213791213CA15177812133E003C321617FE00C2FA16EB +:2017200022F8163AFB3A4F2100002B2B2B2B3A680081773C3268002323233680AF32161751 +:20174000C3C4163A16174F3AFA3A3C470DCA541780C34C17FE81DA5B17E67F2A28172B7722 +:201760002B2B2B3A6800DA6E174F3AFB3A89772A3C1E7DB4CA9917AF32E41ECD68380D732A +:201780006176E5CD1B1CC299173E0132E41ECDBF263EFF325C30CD4E30CD68380D0D051808 +:2017A000071018000800009E1F8100C0200180008830808183C100022008F2200787E01993 +:2017C0001C139F1903001800089F9F9E1E2000808013C0002180C6200787E0E0F21FF1E754 +:2017E00081E1FC302000863CF0381FC0818020008781E1FC200086200086200086200787CC +:201800009F071C089F0307109F191C139F190300180008002000E02180C62007879F31049A +:2018200003109F04089F0810039F03009F0804089F919F09802000200787E0E008070000E6 +:201840009F191C139FF20820C0C2380CC6200787E0E000081009E4F3E49F10070260810079 +:20186000C10000102001C782200CC7FCCFFFE4008008C181C3C0881CC7202009C82073C769 +:20188000983107800C2001C7C1C8043844C62009C82020C7C0062020C62009C8201FC7C8B2 +:2018A00081FF80881CC63904C7982009C8200CC798108100C1CCCFFFC4001C3808C7810052 +:2018C000C1CC9FFFC49900C03801C62000878100C100102043802000861C109820C7E22092 +:2018E00000861CCCE3FFC4002003802018863801C6200787E009100F1C040820C0C23808B4 +:20190000043E3532EF143AFA3A3C6F260054227B1F2AB3165ECD5213CA1D1923567BB2C2E1 +:201920002519C3D304CDBD32CDFF26CDB0332A7B1F2B227B1F7DB4CA4019CDC728C32819B2 +:201940002AB31623CD5213CA4B192322B316C30619218000CD9133CD6338CDF6280E02CDBF +:20196000C833B7CCB733B7C8CD683820027265706169F2C93E3F32123BCD9F31CD3030114E +:201980000C0019CDED387EE5CDB42FE1CD683820A0232323CD52130608C29E19061023CDE7 +:2019A0005213CAB8195E23567BB2CAC919E5C5EBCDBA2FC1E1C3C2197EB7CAC919E5CDB4A5 +:2019C0002FE1CDED3805C29E19CDA731CA9610F5CD68380D092020202020A03A6301B7F273 +:2019E000E819CD68380909A0F1C37C19318A3BAF327915CDA80D3AEF14FE0CCA061ACD6831 +:201A0000380D8DC39610CD683803636865636B73756D3AA02A7B1FE5CDBA2FCD68382020E2 +:201A2000746F74616C3AA0D121085F1922291AE5CDBA2FCD683820206465633AA0E1CDDFF6 +:201A40002FC396107EB7FA6731CDC131C396103AD01AB7C2AE1DCDB41DC36B1ACD683849FB +:201A60006C6C6567616C206E616DE5CD633821063B7E23CD7B35CD180C3A0F3BB7FA67310E +:201A8000CD6838203DA03AD01AB721E93BFAC61ACD68386E6577204E414D45BACD03362A00 +:201AA000771E237EB7CA9610CD6338CD782FCDF32132D01AC2C61ACD2A0EC25C1ACD782F9D +:201AC000CDF321CA5C1A228B1A012A3BCDAC213E00FE3AC2DE1AF68032D01AC36E1AB7FA60 +:201AE000F31A21063B7E23CD7B35CD180CCD6838203DA021073B11173B060BD5C5CDBC37CD +:201B0000212B3BC1D17EFE3FCA151B4F1AB779F2141BF680121ACDEF38231378FE043E2E8B +:201B2000CCEF3805C2051B11163B1A323A1B3A063B12AF32223BCD9F313E2812C24F1A3A83 +:201B40006301B7F2571BCD6838202072656E616DE5CD1B1CC2961011063BCDD131C396106B +:201B600011063BCD10333E3F32123BCDB70DC2A91BCD7E3121000022273BC3981B3AFA3AEB +:201B80003C6F2600111000CD5E35EB2A273B1922273BCDA731CAAE1BCD3030110F00197EC3 +:201BA000FE80CA7D1B5FC38B1B0E23CD06333AEF14FE0BC0CD683820AD2A273BE5CDDF2FBA +:201BC000CD68382081E10E08CD401C7BB7CAD11B23CD0E26174FC5CD401CC17BB7CAE11BBE +:201BE00023591600CD5E35E5110800CD5E35EB2A273BEBCD2C2BCDDF2FCD683820656D7065 +:201C000074F9D1D52A131C1922131CE1CD9F26CDED38210000CD9F26C39610CDA80DCD68B6 +:201C2000382028592F4E2920BFCD1038FE4EC2361CCD68386FA0FE59C0CD683865F3AFC901 +:201C40001100004279B7C83DC8E57D916F7C9867DA591C13E3E1C3491CE1EBC9CD6838897E +:201C6000060B237EB73E2DF26C1C3E49CDEF3878FE043E2ECCEF3805C2621CC396102106ED +:201C80003B3A5109B7CA5C1C000000000000F5D5E60F5F160019D1F1FAA11C7EF680C3A45B +:201CA0001C7EE67F770E1ECD0633C396103A9710B73A681EC4FE32112A3BCD9F31CAC41D09 +:201CC000CD30303AD60BB7FA67313A62013A6201B7CAC11DFE02C2AA1DCD6838200420653B +:201CE00078697374732C2028422961636B75702C20284F2976657277726974652C2028538B +:201D0000296B6970BACD1038FE4FCAC11DFE53CA9610FE42C29610212B3B113B3B0608CD40 +:201D2000BC373E4212133E4112133E4B12113A3B1A32961D3A2A3B12CD1033CD9F31CA958A +:201D40001DD5CD3030D13AD60BB7F2641D3A6201FE02CC6338CD6838206F6C64202E4241AD +:201D6000CBC367313A6E01B7CA8F1D3A6201FE02CC6338CD6838206F7665727772697465EF +:201D8000206F6C64202E4241CBCD1B1CC29610113A3BCDC1313E0012CDCE31213B3B060BD3 +:201DA00036002305C2A01DC3C41D3DCA171DCDB41DC39610CD68380304206578697374F3AC +:201DC000C9CDBE313E00FE4DCA3B1F3E2411333B1213121312112A3BCD1033CD9F31CA099E +:201DE0001ED5CD3030D13AD60BB7F2091E3A6201FE02CC6338CD6838206F6C642074656DD1 +:201E000070202E2424A4C36731CDBE31CDAF313A6701B7112A3B0E24C40500AF32E41E6740 +:201E20006F223C1E227B1F3A9710B7C4FE323A5C00CD9E32CDC5372A771EEB21801E19E50C +:201E4000EBCDC931E13A19133DBCCA671E11063BCD1132B7C2641E2A3C1E11800019223C58 +:201E60001EC3341E32E41E3E00B7C4FE323A2A3BCD9E32CDC537118A3B2A7B1F3A3D1EBC22 +:201E8000C2751F3A3C1EBDC2751F3A6701B7CAE31EEB227B1FEB2A3C1E19223C1ECDC631B2 +:201EA000CDC537112A3B0E21CD0633B7C2E31E2A7B1F1180001ABEC2631F13237BB7C2B5E4 +:201EC0001E227B1FE52A4B3B23224B3BE13A3D1EBCC2A01E3A3C1EBDC2A01E112A3B0E21A0 +:201EE000CD06333E00B7CA1B1E3A681EB7FCFE32CDF131212B3B113B3B0608CDBC3721F461 +:201F00003A0603CDBC373A6B01B7F5CA1E1FFA1E1FE60F213B3B5F1600197EC68077CDCE3E +:201F200031F1CA9610FA9610F53A9710B7C4FE32F111063B6F260019C39B1C3A9710CDFED7 +:201F4000323E3F32123B11063BCD9F31CA9610CD30303A681EE67F77CDBA333EFF325C3076 +:201F6000C3461FCD68380703566572696679206572726F720019EBCDC931213C001180004A +:201F800019227B1FCD8535C3731EAF3277053A6D01B7C2AB1F3C325C00325C30CD4E30CDA9 +:201FA000B01F3A6D01B70E00CA05002A1001F9C93A00004F3A1701B9C2C01F3EC3320000B1 +:201FC0003A9710E67F171717174F3A75253DB1320400C9114001C3E81F114801C3E81F11FE +:201FE0005001C3E81F115801EBC31A20CD2620223C1E2A1813E3210000E52A3C1EE5EBE56E +:2020000011810006007EB7CA112012231304C2052078328000E1C9CD2620223C1E318A3B6C +:20202000212904C3F91FCDAE3A110000EB1ACD1638FE2CC8FE20C8D630DABA3AC6E9DABAA2 +:202040003AC606F24B20C607DABA3AC60AB74F0600292929290913C32D20CD2620AF329250 +:2020600020322039E5CD68380D616464723A48657820446563202042696E617279204173B7 +:2020800063696920456E7465F2E1CD6338E5CDBA2F3E00B7F47E35F29E20CD6838ADCDED69 +:2020A00038E1E57E47CDB42FCDED3878CDA62FCDED3878CD842FCDED3878B73E20F2C22064 +:2020C0003E2DCDEF3878E67FFE20DAD220FE7FDADA20CD3937C640C3DF20F5CDED38F1CDDF +:2020E000EF38CD68382020BC3A6801CDEF38CD6838BECD03362A771E23CD782FC20621E168 +:20210000CD6F21C38A20473A0801B8C23521237ECD1638FE42CA2C21FE44CA2C21FE41CA26 +:202120002C21FE2ECAD304FE48C2BA3A326801CD782FCA8920229D0F3A6801FE41CA7821F4 +:20214000FE42CA7C21FE44CA9721CD26207CB7C2BA3A7DE177CD6F21EB2A9D0F7E23FE2066 +:20216000C25C21CD792FEBCA8A20E5EBC30621233A9220B7F02B2BC96EC352210100087E92 +:20218000FE30CA8B21FE31C2BA3A3779174F2305C27F2169C35221CDC70FCDB63AC35221E1 +:2021A000FE5FCAAA21FE20D8FE7F3FC9037EFE2AC2BB21237EFE2ACABB212B32750E1E08F6 +:2021C000CDC621231E037EFE2ACA0122FE2ECAEE21CDF321CAED21573A6C01B77ACC16386D +:2021E000021D0323C2C6217EFE2ECAEE212B3E20C30B22FE20C8FE5BC8FE5DC8FE3AC8B714 +:20220000C9237EFE2ECA09222B3E3F1C1DC80203C30C22CD2B22C3D304CD2B227BF68032A3 +:20222000AA0E3A9710CDFE32C3D304CDB70DCADD0DCD792F3E0132681EE57EFE20CA4E2202 +:20224000FE30DABA3AFE3AD2BA3A23C33A22363AE1CD8A0F3A6101BBDA61227BFE10DA690B +:20226000223A3406B77BCA3906FE20D2BA3AF68032AA0EC30133CD792FCD163832DC222171 +:20228000D001CD63383A6401E67F47CD610CCD792F0E0FE52B1600237EB7F2A322F57AF654 +:2022A0000157F1E67FFE7FCABF22CD1638D2B822FE20CAC022D297223E02B257C397225710 +:2022C000E17AFE7FCAF9220F57D2D6223A3406B7CAF922CD680C7A0FD2E2223E00FE3FC224 +:2022E000F9227EE67FFE20CA0723D2EE220DCD4137230DFAF922C2E2227EB7CAD30423FE98 +:2023000020C2F922C38B22CD792FCAD304CDED380DC20D2305C28B22C38222CD63383A626A +:2023200001C641CDEF38CD6838094966200420657869737420412D6F7665726C61792C202F +:20234000422D6261636B2075702C20432D61736B2C20442D736B69708D3A6401F5C630CD25 +:20236000EF38CD683809636F6C756D6EF3F117D27F23CD6838202B3120696E204449D2CD97 +:2023800068380DD03A05012F3CCDE025CD683809706167696E670DD23A6301CDE025CD68D3 +:2023A00038097265717565737420592F4E206F6E2063757272656E7420040928512D726513 +:2023C0007175657374206E6577206E616D65290DD63A6701CDE025CD6838097265616420EE +:2023E00061667465722077726974650DD33A6501CDE025CD68380973686F77207379737404 +:20240000656D2004730DD43A6601CDE025CD68380973746F70206966200569732066756C6C +:202420006C0DCD3A6B01B7CA2B242FCDE025CD6838094D61726B20636F706965642066695B +:202440006C65730D58096C69737420647269766573201841AD3A60015F3A483457B77BC240 +:202460006324AFCD300ECD80357AA3C27C24CD6838206966206F6E206C696EE5CDB70DCA1E +:20248000DB24CD68380D55096C69737420757365727320201830AD3A6101CD972FCD683886 +:2024A0000DA43AF0022FCDE025CD6838097375626D6974202424242E5355428321F0027E7C +:2024C000B7F2C6242FB7C2CC243A7525CD7B35237EB7CADB24CDEF38C3CF24CD68380D2B10 +:2024E0002F2D09312D38206F72202852296561642F77726974652C20285329737973746571 +:202500006D2F6469722C20652858297472610D504F57455289210001CDBA2FCD683848830C +:202520003A1D016F260029EB132A0E0319E5CDBA2FCD6838480D54504189E17DB7118000C2 +:202540006A19F2462519E5CDBA2FCD683848832A18132BE5CDBA2FCD683848A0E123D1CD9D +:202560002C2B0607CD702F05C26425CDDF2FCD68382001003E0232E0040E1DCD0500E50E8C +:2025800018CD0500EBE10110000DFAD30478FE08C295256C5A047B1F5FD2D825E67FF5C5EB +:2025A000D578325C00CD4E30CD6338D1C178CD7B35CD6838182052AF7D1F6F3E57D2C22507 +:2025C0003E4FCDEF38CDED38E5D5C5CDFB25CD1626C1D1E1F1C38925F57D1F6FF1C38925DC +:2025E000B7FAF025CD68382028184F464617A9C9CD68382028184F4E17A9C92AFC3A23CDA1 +:202600000E26CA0A26293DC30226227B1FC93AF93AD603C037C9210000223C1E2AFC3A2390 +:20262000EB0E1BD5CD0500D106087E07DA3826E52A3C1E23223C1EE1F51B7AB3CA4826F1F4 +:2026400005C22B2623C32826F1CD0E26CA5A262A3C1E29223C1E3DC34C26CD6838557365BD +:2026600064BA2A3C1EEB2A7B1FCD2C2BE52AFE3A230E20CD401CEBE1CD2C2BCD9F26CD686D +:20268000382C2046726565BA2A3C1ECD9F26CD68382C204361706163697479BA2A7B1FCD32 +:2026A000DF2FCD6838CBC9CD68380364656C657465642004730D8DCD4E303E0232BD332ABC +:2026C000043B2200272101002206272AFE3A23CD702FCD702F444D2A771EEBC5D5424B3A08 +:2026E00019133D3DBADA5E2FCDC931CDFF263AE41E3DC249273D325C30CDBA33C34C2711B3 +:202700000000CD2332110100E5D52A043BEB2206272A0027CD2C2BC16069D227273E00B714 +:20272000C23F272BC33F27210000EB0BCD30D63AF83AB7C2372767CDB70DC23F27676922DE +:20274000CD30444DCD21D6E1C9CDB033CDC728D1C121800019EB0B78B1C2DB26D5CDC6314A +:20276000D13AE41EB7C02AFE3A444D2A771E1120007EFEE523C2B928237EFEE52B2BCAB96E +:2027800028233A5C00CD7B355D54C5D5E5CD180CD1D51BD51A32E41E3A5C00CD9E3212D5BC +:2027A000210C00197E32D60B3600D1E5CD9F31E13AD60B773AE41ED112CAD527CD683803F1 +:2027C000027265636F7665722C2004206578697374F3C3B3283AFB3A4F3AD60BB9CA072848 +:2027E00081B9CA0728CD683803027265636F7665722C2004207769746820626164206578CE +:2028000074656EF4C3B328CD6838037265636F7665F2CD1B1CC2B328325628E1D1C1C5D59B +:20282000E52B227B1F3A9710E67F77E511090019CDB70DCA3A287EF680772323237E32D6E0 +:202840000B2323237EFE80E1C2A328112000190B78B1C267283E00B7C2A3282F3256282A40 +:20286000FE3A444D2A771E7EFEE5C24B28223C1EEB2A7B1FC50E0B23131ABECA8428F68037 +:20288000BEC29B280DC27728233AD60B96FAA2282A3C1E79325628C1C32528C12A3C1EC369 +:2028A0004B28C13E0132E41ECDBF263E8032E41ECDBF26CD6338E1D1C12B112000190B7848 +:2028C000B1C27127C3D304E5D52A062723EB2AF73ACD2C2BEBD2F0282A002723EB2A253200 +:2028E000CD2C2BD2E928110000EB220027210100220627D1E1C9E5CD2F35CD683847BD2AEF +:20290000043BEB2A0027CD2C2BDA1E292A0A34CDBA2FCD7E353AD132CDB42FC32829CD6823 +:20292000382D2D2D2D3A2DADCD68382054BD4F2A0027CDE72FCD68382053BD2A0627CDEDC8 +:202940002FCD6838205053BD2ACD30CDED2FE1C93AEF14FE213E1FCA5C293E2032EF14CD39 +:202960004E30CD2620CDB63AEBE52AFC3ACD2C2BCDBD32210100227B1FC3A429CD4E30CD73 +:20298000AE3ACDC70FCDB63A220027210100227B1FEBCDAF3ACDC70FCDB63AD52206277D26 +:2029A000B4CA332BE1CD782FCA112A3AEF14FE1FC2F0297ECD1638FE58C2F0293E063282EA +:2029C00015237ECD1638FE20CADF29FE41C2D5293E08C3DC29FE48C2DC293E07328215E529 +:2029E000218000223C1EE1CD782FC2002AC3172ACD2620CDB63A223C1EEBCD782FCA172ABF +:202A0000CDC70FCDB63A227B1F7DB4CAD304C3172A218000223C1E2A7B1F3A19013DFEFF55 +:202A2000C2272A3AF93A3C5F4F1600CD2C2B3E03DE0132BD337932062B2A3C1EEBCDC9319E +:202A4000CD122BDA602ACDFF262A7B1F2B7DB4CA602A3A8215B7C2602A3A0C01B7CA802A5C +:202A6000CD6338CDF628CD6838204174BA2A3C1EE5CDBA2FCD6838ADE1117F0019CDBA2F8E +:202A8000CD122BDA332B3AEF14B7CA332BFE1FF5CCB033F1C4BA333AEF14F52A3C1EE521B9 +:202AA0007000223C1E2180007DE60F322F153A821532EF14B7CAD22AF53A0C01B7F5C4630F +:202AC00038CD0714F1CACD2ACD68380D8DF1210000E3E1223C1EF132EF142A3C1E11800090 +:202AE00019223C1E2A7B1F2B227B1F7DB4CAD304CDC728D2052BAF32EF14673A1E276F22AB +:202B0000CD30C3602A3E013D32062BB7CA172AC3392A2A0027EB2A2532CD2C2BD87DB42A90 +:202B20000627EB2AF73AC22C2B2124007D936F7C9A67C9CD683807034F7574206F66200536 +:202B4000626F756E647300CD1F2F2A3C1EE5CD8B2BCD6838204C617374204164647265734F +:202B600073BA2A3C1ED17CBAC2702B7DBBCA712B2BCDBA2FCD683848A0CDC631CDB02B2AD6 +:202B8000273BCDDF2FCD6838200100115C00CDD6312A3C1EEBCDC931115C00CD11323DC871 +:202BA0002A3C1E11800019223C1EC3912BCD1F2F215C00112A3BD5CDBA37E1E511063BCD66 +:202BC000BA37D1CD9F31C2D42B3AEF14FE1DC2DF31C3022CD5CD3030D1CD601B3AEF14FE64 +:202BE0001DC03AD60BB7F2EF2BCD6D31C3D3042A7B1F237DB4C2FF2B2A273B23227B1FCDD9 +:202C0000BE312A7B1F237DB4CABA3ACDAF312A7B1F2B227B1F7DB4CA302C2A3C1EE5EBCD1F +:202C2000C931E111800019223C1ECD8535C30E2CCDF131C3D304CD1F2FEB227B1F318A3BCE +:202C4000212404E52A3C1EE5CD8B2B2A7B1FC9CD082D7CB5CAD304E52A7B1F78BCDA7C2C9A +:202C6000C2682C79BDDA7C2CD119E5606919444DE1137E020B2BCD182FC3722CD1137E0281 +:202C80002303CD182FC37E2CCD792FCAA42CFE2CC2B52CCD782FCAA42CCD26202BEB2AA8A8 +:202CA0002CC3FE2C1170002100007DE60F2FE60F835FC3FE2CCD2620227B1FEBFE2CCADA6C +:202CC0002CD5CD792FD1CAD42CFE2CCADA2CCD122DC3FA2C210000C3FA2CCD782FCAE72C99 +:202CE000CD26202BC3FA2C2170003A7B1FE60F2FE60F856FC3FA2CCD082DEB2A7B1F223C43 +:202D00001EEB23227B1FEBC9CD2620227B1FEBCDAF3ACD2620223C1EEB3AEF14FE27CA2BD6 +:202D20002DFE29CA2B2DFE28C2312DCDAF3ACD2620E5C12A3C1EE5545D2A7B1FEBCD2C2B7B +:202D4000D1DABA3AC9CD882C3E85C3622DCD882C3E88C3622DCD882C3E86C3622DCD882CC4 +:202D60003E8732EF14C35C13CDF72CAF32E41E2A0E0322771E6069CDAE3A3AE41EB7F47984 +:202D80002FCAEB2DF28F2D237E2BB7CAEB2D7E4FFE22CAE02D0600FE3FCAB52D3AE41EB769 +:202DA000FAC12DCD26207CB7C2BA3ACDB63A4DEB0680C3C12D063F3AE41EB7FAC12D06BF1E +:202DC00023E52A771E71247023702522771EE13AE41EB7FAE72D7EFE20CA7A2D23C3D62DE0 +:202DE0003AE41E2F32E41E23C37A2D2A0E03EB2A771E424BCD2C2BEB2A3C1EE52A7B1F7C7D +:202E0000B52B227B1FC2132EC3192EE52A7B1F2B227B1F237CB5CAD304D5CD2C2BDAD304DA +:202E2000D1E10ABECA312E040AE67F05FE3FC24E2EE5D5C523031B7AB3CA522E0ABECA34FF +:202E40002E040A05E67FFE3FCA342EC1D1E123C30B2EC1D1E1CD6338CDBA2FCD68383AA0F9 +:202E6000E5D5C5040AB73E22F4EF380AB77EF27C2EE5CDB42FCDED38E1C3972ECDA021D268 +:202E8000942EF5CD6838BCF1E5CDB42FE1CD6838BEC3972ECDEF3823D50A07E6015F030AE8 +:202EA00007E601ABCAB02ECD6838A20AB7FCED38D11B7AB3C26B2E0AB73E22F4EF38C1D19E +:202EC000E1C34E2ECD082D7CB5CAD30423EB2A7B1F0ABECAFB2EE5F57EF5CD6338CDBA2F06 +:202EE000CD68383AA0F1CDB42FCDED38F1CDB42FCD683820BAC5E1CDBA2FE12303CD182F99 +:202F0000C3D12ECD082D78B7C2BA3AEB132A7B1F7123CD182FC3102F1B7AB3CAD304C92AC0 +:202F20000E03237EFE20C2222FCDAF3ACD4E3021FFFF227B1F21963BCDAF3ACD2620223CB9 +:202F40001E21FFFF227B1FEBCD782FC83AEF14FE1DC0CDC70F1AFE20C023227B1FC9CD68C1 +:202F600038036D656D6F72792066756C6C030D00B77C1F677D1F6FC9237EFE20CA782FFEDF +:202F80003BC8B7C9C5060807F53E30CE00CDEF38F105C2872FC1C90E01C39E2F0EFFE67FA6 +:202FA0006F2600C3F32F0E30E5D5C56F2600CDED2FC343386FAF67C3BC2F3EFF32C52FE5A3 +:202FC000D5C50EFF3E00B7CAD62F1100F0CDFE2F1100FFCDFE2F11F0FFCDF62FC343380E43 +:202FE0003011F0D8CDFE2F1118FCCDFE2F119CFFCDFE2F11F6FFCDFE2F11FFFF0EFF062FB8 +:203000002209300419DA003021000078B9CAED380DCA21300EFFFE3ADAEF38C60747C3EFB9 +:2030200038F5D630B90E01CA2E30F1C31430F1C9E60387878787875F160021800019E53EDD +:2030400009856F7E32D60B237E32E80BE1C93A5C00CD300E325C00E5CDC6313E00B7CA7665 +:20306000303E0132E534AF325C305FCD200111E5340E0DCD06330E18CD05003A5C005F01A3 +:2030800010000DFA9E3004CD702FD2823078BBC282303AF308BBCA9E301E01C3A0301E0058 +:2030A0003A5C00CDD630CABC30DABF305E235623EB222827210800197E23666FCD3B322AB6 +:2030C000043BEBCD2332110100CD08272100007CB5321E27E1C932E5343D4F3A16013CC2FD +:2030E000E63079F6804FCD1BD6CDB70DC8AF32F3087CB5C0CD68380D074469736B206C6F91 +:2031000067204552524F52206F6EA03A5C0032F308F5CD7B35CD68382C206C6F67696E6793 +:2031200020746F206472697665206F6E6CF9F1B73FC93A8508B7CA3F31318A3BC39708CD63 +:2031400068380D024C4FC7CD6838206F6EA03AE534B7C258313A5C00CD7B353A7525325C8A +:2031600000CD7036C3D304CD6D31C39610CD683803042069732024522FCFC9CD1033CD9F25 +:2031800031C0CD8408CA8C31E1C35B08CD68380D4E6F200473A0215D00CD180CC347310E31 +:2031A00011D5CDA931D1C90E12CD0633FEFFC9112A3B0E16CD1033CDA931C0C39735112A21 +:2031C0003B0E13C3A9311180000E1AC30500112A3B0E17C3A9310E0FCD1033CDA931C0CDDC +:2031E00068380304206E6F7420666F756EE4C34731112A3BD5CDC631D10E10CDA931C0CD8E +:2032000068380302636C6F73652084CD7036C3A4353EFE32A6160E14CD0633F5AF32A6165C +:20322000F1B7C9E5214F00CD2C2BE1DA332BEB220027EB424BE5CD1ED6E1C9CDB70DCA4CE8 +:203240003211F73A060FCDBC37C380322A06002E00113A00195E23EB22F73AEB5E23EB22B6 +:20326000FE3AEB7E2332F93A7E2332FA3A5E23EB22FC3AEB5E23EB22003BEB5EEB22043B11 +:2032800021D1327EF53AFA3A77E52AFC3AEBCDC632222532EB222A2BE1F1773A5C00F5E529 +:2032A000D5C532E53411E534CD7E343D5F0E0ECD0500CD4634CD18D6C1D1E1F1C9EB220AB0 +:2032C00034EBAF32D132626B3AF93A293DC2CB323E04856FEB2AF73A7D2F6F7C2F6723EBD5 +:2032E0000100000319DAE3320BEB2AF73A19E52A043B09EBE123220627EB220027C9E67F61 +:203300005F0E20C30500CD7E34CD0500CD4634C9E5D5210C001911170072231DC21933D13E +:20332000E1C93AEF14FE35CA5119CD68380362616420736563746F72206F6EA03AA616B7AE +:20334000CA4E31FEFEC2CB333A1A01B7CA4E31F53AEF14FE02CA5D33FE1EC24E313A752556 +:2033600032E004CD6838726561E4F1FA7E33CD68382C2061626F72F4CD1B1CCAD3042A777B +:203380001EEB3AEF14FE02CA8D331100002A3C1E190E803A1B0177230DC296333AEF14FE5E +:2033A00035C8CD633821263B34217C00343E00C9E5CDB733C3C233C327D6E5C50E02CDC8B7 +:2033C00033C1B7E1C22233C9C32AD62A043BEB2A0027CD2C2BD2DD333E0232A6163A0C019E +:2033E0003DCC6338CDF6283AA616B7FA0334FE7FCA0935FE02CA14352AB316AF7723773DD8 +:2034000032A616CD6338CD2F35019C002A3C1E23223C1E2AB3162BCD5213CA3834237E231B +:20342000B9C227347EB8C87E2BB623C21D3470237723772B2B2B71C9237EB9C8B7C23834BD +:203440007123772377C9F53EFF3CCA4F34F1C9F122CD34E3225B3431843B210F33E3D5F5E1 +:203460001100022A06002323237323722311160073237223110086732372F1C3CB34F53AA2 +:2034800048343CCA8834F1C9F122CD3421000039225834D5F51A32E534F12A06002323235F +:2034A0005E2356EB226134EB235E2356EB226E34EB235E2356EB227534EB11EC34722B7338 +:2034C0002B11D034722B732B722B73D1210035C9CD46343AA616FEFECA2233B7C03A5C000C +:2034E000B7C232313E02325C00C33231CD4634CD68380D0D5072657373205E432C200569A6 +:20350000732024522FCFC34731CD683820696E20646972003E0132A616CD6838206F6E20EF +:2035200073797374656D20747261636B738DC92A043BEB2A0027CD2C2BEB2AF73ACD5E3579 +:20354000EB2A06272B193AFA3A477DA032D1323AF93A47CD702F05C25335220A34C9C5D5AC +:20356000EB424B78B1C26E35210000D1C1C90B545D78B1CA6B35190BC37135CD80353EFA33 +:20358000C640C3EF38112A3B0E15CD0633B7C83DCAC4353DCAD435CD683807036469722037 +:2035A00066756CECCDAA35C3D304CD6838206F6E206472697665A0CDBD35C37B350E19CD28 +:2035C00005003CC9CD68380302657874656E642084C3A435CD683807030566756C6C206FE9 +:2035E0006EA03A2A3BCD7B35CDF131CDBE313A6601B7FAD3043AEF14FE1DCAD304318A3BDE +:20360000C396103A1D01325739E52A771EEBE112F5E5C5D5D1D5AF32573713123EFFB7FA09 +:203620008536D5CDC63111D03AD5CDD631D13ADF3A3D32F03AFA8136CD1132C28136D1D5D5 +:203640002180004604CDBC37E1E546237ECDEF3805C24B3623362023AF7732573921DE3A19 +:2036600077233511D03ACDF431CA8136D1C3B832211D367EB7F82F77CDC63111D03AC3C1C5 +:2036800031CD7036D113EBCD2038FE0DCAE036FE5FCA0137FE7FCA0137FE08CA0137FE15AE +:2036A000CA8237FE12CA8C37FE05CAB437FE18CA7A37FE5EC2C936CD2038CD1638FE21DA4B +:2036C0008A36FE5ECAC936D640473A0901B8C2ED363AEF14FE1BC2ED363A92202F3292208D +:2036E000362023F5AF77325739F1C3B832EBE1E57E2334BECAAB37EB7078CD413723C38761 +:2037000036CD0737C38736EBC1E1E5C523477ED60177DA4C37EB2B78463620FE08CA53379A +:203720003A57373C3C32573778FE20D2EF38CD80353A57373C3C325737F53E5ECDEF38F102 +:20374000C9FE20DC3937DA8035C3EF38333334EBC38736CD63373E00B7C806203D32573771 +:20376000C3533778FE203E08DC6D373E08CDEF383E20CDEF383E08C3EF383E08CD0737C3D0 +:203780007A37CD6338AF325737C31436D1D5131A47CD6838238DAF32573778B7CA87361325 +:2037A0001ACD413705C29F37C38736CD68388735EBC38736CD6338C3873606247E12231321 +:2037C00005C2BC37C9E5CDCB37E1C9CD06D6B7CA0138CD2038320A39FE13CA2038FE20C2F8 +:2037E000E937F680320A39E67FC5473A0F01B878C1CA2038FE30D8FE3A3FD8E60F3269010A +:20380000C9F601C9CDAE3ACDF437DABA3AC3D304CD2038CDEF38FE61D8FE7B3FD8E65FC91C +:20382000E5D5C5CD09D6327915FE03CA5738FE10CA4D38473A0B01B8CA473878FE0AC243D3 +:20384000383E0DC1D1E1C9CDA80DC3D3043A51392F325139C32338CD4137CDA80DCD703686 +:20386000C32404CD68388DC922BF38E3D5CD680C7EE67FCAD30411CC38FE01CCC23811D445 +:2038800038FE02CCC23811DE38FE03CCC23811E238FE04CCC23811E738FE05CCC238FE173B +:2038A000CC680CFE18CC610CB7C4EF38FE0D3E0ACCEF387EB723F27038CD610CD1E3218A06 +:2038C0003BC91AB7C8CDEF3813C3C238736563746F7273000763616E206E6F742000202D6D +:2038E000200066696C65006469736B20003E20E5D5C5F5E67F5FFE07C202393A1201B7C2DF +:2039000073393A1F01BBC248393E2057E67FFE20C248397AB7FA32393A5139B7FA48393E5E +:20392000113DFA4839322039B7C248393A0501322039CD203857FE0D3E20CA45397AFE20A9 +:20394000C24539EE80320A390E02CD0500F1F55F3E00B7FC77393E00B7CCC5373A6901B764 +:20396000CA7339575F622E00292B7CB5C269391DC26539F1C343387BF5FE09CA8839FE0DE9 +:20398000C299393EFFC3A33916033E20CD9839147AFE08C28A39F1C9F53A89393CFE08C2DA +:2039A000A339AF328939F1F5D55F0E05CD0500D1F1C9CD4E30CD68380D05636170616369D3 +:2039C00074793A89CDFB25CD9F26CD68380D747261636B733A09892A253223CDDF2F2A043D +:2039E0003BE5CDDF2FCD68382073797374656D0D012F747261636B3A892AF73AE5CDDF2F6A +:203A00002A2A2BCDDF2FCD6838206C6173740D012F73797374656D3A89D1E1CD5E35CDDFA8 +:203A20002F2AFE3A23E50E04CD401CCDDF2FCD6838206469720D64697220656E7472696518 +:203A4000733A89E1E5CDDF2FE10E20CD401CCD9F26CD68380D012F67726F75703A893AFAF7 +:203A60003A3C6F2600CDDF2FCD0E26176F2600CD9F262AFC3A3E3032C32FCDBA2F3EFF320A +:203A8000C32FCD6838482067726F7570730D6B62797465732F657874656E743A892108006D +:203AA0003AFB3A293DF2A33ACD9F26C3D3042BCD782FC0C3BA3A1AFE20C8CD683807036940 +:203AC0006E76616C696420617267756D656E740001242424202020202053554200000000EE +:203AE0000000000000000000000000000000000000000000434F4D2400040F01B3003F00BD +:203B0000800010000000025057202020202020434F4D3F000000000000000000000000008E +:203B200000000000000000780000005057202020202020434F4D00000074363738393A3B00 +:203B40003C3D0000000000000000740000000000CE37C93700005C3902434300433B0000D8 +:203B600060384300433B4D39935E00004D3902430000003046000134B8324F00560056001A +:203B800046002A3B0C338D352D2C7F13534156452050572E434F4D20313030203132302007 +:203BA00000434F4D00004341544348554D20444154000044454D4F202020204241530000AD +:203BC000464F524D41542020434F4D0000474F4E4B492020204241530000475241462020EF +:203BE0002020434F4D0000494E562020202020434F4D00004A41434B20202020434F4D00C2 +:203C0000004D555A412020202042415300004D42202020202020434F4D00005043414420AB +:203C2000202020424153000050435420202020202020200000504C4F5420202020424153D2 +:203C400000005057202020202020434F4D00005244202020202020424153000054455354B2 +:203C600020202020434F4D00005445542020202020434F4D000054494D4520202020424147 +:203C80005300004444542020202020434F4D000044522020202020204D414300004C38309B +:203CA0002020202020434F4D00004C38302F31202020434F4D00004C4C383020202020436F +:203CC0004F4D00004D38302020202020434F4D00004D55534943202020434F4D0000504FB5 +:203CE000574552202020434F4D00005245534F52432020434F4D00004D4143202020202039 +:203D0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E503 +:203D2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E3 +:203D4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C3 +:203D6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A3 +:203D8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E583 +:203DA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E563 +:203DC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E543 +:203DE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E523 +:203E0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E502 +:203E2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E2 +:203E4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C2 +:203E6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A2 +:203E8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E582 +:203EA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E562 +:203EC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E542 +:203EE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E522 +:203F0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E501 +:203F2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E1 +:203F4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C1 +:203F6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A1 +:203F8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E581 +:203FA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E561 +:203FC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E541 +:203FE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E521 +:20400000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E500 +:20402000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E0 +:20404000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C0 +:20406000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A0 +:20408000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E580 +:2040A000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E560 +:2040C000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E540 +:2040E000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E520 +:00000001FF diff --git a/hex/res.hex b/hex/res.hex new file mode 100644 index 0000000..9829de3 --- /dev/null +++ b/hex/res.hex @@ -0,0 +1,258 @@ +:020000040000FA +:20010000CD42015245534F55524345206279205761726420436872697374656E73656E0D0B +:200120000A284153204F462030312F30382F3830290D0A24436F70797269676874203139EE +:200140003830D10E09CD05002100003922FD1731FD17CD47160D0A4D656D6F7279206F70EF +:20016000656E20746F20002A06002BCD9A14CDDA15CDDA15CD5C16AF32121732141731FD67 +:2001800017CD15162123177EFE0DCA7701FE3BCA290DFE41CAC804FE42CAD404FE43CA72BD +:2001A0000BFE44CA2D03FE45CADF13FE46CA1508FE4BCA0314FE4CCADC04FE4FCA5504FE42 +:2001C00050CA2B02FE51CAEC02FE52CAC508FE53CA230AFE55CA6E0EFE58CAF801FE5ACACE +:2001E0008108FE3FCA8B07AF321217321417CD47163F0D0A00C37701CD4716592F4E20702B +:200200007572676520616C6C2073796D626F6C7320262043544C3F00CD15163A2317FE595E +:20022000CA7401FE4ECA7701C3F8012124177EFE0DCAE701CDA714FE20CA4102FE2CC2E718 +:200240000123D5E53E01321217CD4E16094F52470900E1D17ACD3C117BCD8C143E00CDE6DC +:2002600015CDDA15D5CDA714FE0DC2E701C121001E23237EB7CA77012B2B7E91237E98DA66 +:200280008B022B7E93237E9ADADA02E5C52346E5237E2BFE41DAE602237EFE2BCAE602FE65 +:2002A0002DCAE60205C29802E1463E01321217237ECDE61505C2AF02CD4E1609455155092E +:2002C00000C1E17EB7C43C112B7ECD8C143E00CDE615CDDA15AF32121723237ECD37112358 +:2002E000CD8F16C37102E1C1E1C3DA023E013214171123172124177E122313FE0DC2F70265 +:20030000C38401436F6E67726174756C6174696F6E732C20796F7520666F756E6420746877 +:20032000652070617463682061726561212AE816E5EB2AFE161922EA16D12124177EFE0D27 +:20034000CA8C03FE53CA0C04FE3DCAEF03FE2CCA5E03CDA714E52AFE161922EA16E1FE0DFB +:20036000CA7703FE20CA6D03FE2CC2E70123D5CDA714EB22EA16D12AEC16E51922E8162A3B +:20038000EA16D11922EA16FE0DC2E7012AE816CD8F16E5CD7408CD9A14E1E5CDA2147ECDC5 +:2003A0008C14237DE603CCA2147DE607CCA2147DE60FC29E03CDE415E17EFE20DAC403FEEF +:2003C0007FDAC6033E2ECDE615237DE60FCAD803E607CCA214C3B903CDE415CDDA1522E813 +:2003E000163AEA16953AEB169CD28F03C3770123CDA714231BEB22FE16EBFE2CCA5203FE66 +:2004000020CA5203FE0DCA7701C3E7012125177EFE2EC22404CD4214CD6813D227042A180A +:2004200017C3270421001E5E2356237EB7CA7701EBCD9A14EB46237ECDE6152305C23704E2 +:20044000CDDA15CD8F16C327042AEC16CD9A14CDDA15C377012124177EFE0DCA4904CDA772 +:2004600014FE0DC2E701EB22EC16C377013A1317B7C2220B325C003268002124173A251765 +:20048000FE20CAE701FE3AC294043A2417D640325C002323115D000608CDA2040603CDA234 +:2004A00004C97EFE0DCABF0423FE2ECABF04121305C2A2047EFE0DC8FE2E23C8C3B4043ECA +:2004C00020121305C2BF04C93E01321C17AF321D17C3E3043E01321D17C3E304AF321D17BD +:2004E000321C17AF3212173A00173201173202172124177EFE0DCA2B05FE2CCA1F05FE2092 +:20050000CA1F05FE3DCA2906CDA714EB22F016EBFE0DCA2B05FE20CA1F05FE2CC2E701232B +:20052000CDA714EB22F216AF320217CD8F163A0217B7CA3F053A01173DFA7701C34D052A5A +:20054000F2163AF016953AF1169CD277013A1C17B7CA87052AF016EB2AEC161906087ECD64 +:20056000CE16DA87052305C25E057ECDCE1623D26A052BCD7408EBD52AF016EB3E42CD9520 +:200580000BD13E49CD950B2AF6167CB5CAC1052AF016EBCD7E0DDAC1052323463E01321272 +:2005A00017CDAE10AFB0CABE05237EFE5CC2B705CDDA1505C39C05CDE61505C2A905CDDA2B +:2005C000152AF016EBCD480C2BDACF052323237EFE49CA1F06FE45CA8108F5235E2356D57A +:2005E0002AF016EBCDAB0EE1221517EBAF321217F1FE53CA4906FE42CAA406FE57CA790689 +:20060000CDE615CD47163A20494E56414C49442043544C20454E5452590D0A00C37701CDB3 +:20062000080FAF321217C32B0523CDA7147BB7CAE7013200177E23FE2CCA0805FE20CA083C +:2006400005FE0DCA7701C3E701D53AF0162F6F3AF1162F6723193E01321217CD4E16445375 +:2006600009007CCD3C117DCD8C143E00CDE615CDDA15E122F016C32B053E01321217CD4E7E +:2006800016445709002AF016EB2AEC16195E2356CD21102AF016232322F016C32B05CDDA33 +:2006A00015C32B05AF3217173C321217CD4E16444209002AF016EB2AEC16197EFE0ADADE2E +:2006C00006FE20DACB06FE7FDA1A07CD3C113E00CDE6153A1717C602321717C3E306F63051 +:2006E000CDE61523EB2AF0162322F016EB3A1517BBC2FB063A1617BACA85072AF016EBCD7B +:20070000BA13D29E063A1717C602321717FE19D29E063E2CCDE615C3B3063E27CDE6153A64 +:2007200017173C3217177ECDE6157EFE27CCE61523EB2AF0162322F016EB3A1517BBC248A0 +:20074000073A1617BACA8007E52AF016EBCDBA13E1D280073A17173C321717FE23D27807D6 +:20076000FE19DA6D072B7E23FE20CA80077EFE20DA7807FE7FDA27073E27CDE615C3ED067C +:200780003E27CDE615CDDA15C32B05CD471653594D54424C3D0021001ECD9A142AEE16CD86 +:2007A0009A14CDDA15CD47165043202020203D002AF016CD9A14CDDA15CD47164F46465396 +:2007C00045543D002AEC16CD9A14CDDA152AF6167CB5CAEF07CD4716434F4D4E54533D007E +:2007E0002AF616CD9A142AF816CD9A14CDDA15CD471643544C54424C3D00210018CD9A14F9 +:200800007E23A623233CC200082B2B2BCD9A14CDDA15C377012124177EFE0DCA4B08CDA7DC +:2008200014EB22FC162AEC1622FA16EBFE0DCA4B08FE20CA3B08FE2CC2E70123CDA714FE6C +:200840000DC2E7012AEC161922FA162AFC16EBCD8F162AFA167E2322FA16BBC24F087EBAB8 +:20086000C24F08E5D5CD74082BCD9A14D1E1CDA214C34F083AEC162F5F3AED162F571319AE +:20088000C9CDAB0E3E01321217CD4E16454E440D0A00AF3212173A1317B7CA77013E1ACDC4 +:2008A000B615CD7715AF321317CD47162B2B41534D2046494C4520434C4F5345442B2B0D2B +:2008C0000A00C37701CD6D043A1317B7C2220B216500110C170E03CD8516C2ED0821001E62 +:2008E000CDC00922EE1623233600C38B072165001106170E03CD8516C23E09CDDF142AEC5F +:20090000167CFE1EDA710911000119E5EB0E1ACD0500115C000E14CD0500B7C22609E111E5 +:20092000800019C30B09E1CD9A14CD7408CD9A14CDDA151180000E1ACD0500C3770121651F +:20094000001109170E03CD8516C24F09C3E80C216500110F170E03CD8516C2E701CDF20D70 +:200960002AF616CDC00922F81636FF2336FFC38B07CD47162B2B4E4F2C2054484154205788 +:200980004F554C44204F5645524C41592054484520444953415353454D424C45520D0A42E9 +:2009A000454341555345204F464653455420495320544F4F20534D414C4C3A2000C34904C9 +:2009C000CDDF14CD0E15FE1AC8FE09CAC309FE0DCAC309FE0ACAC309CDFC0973237223E5C9 +:2009E000230600CD0E15FE09CAF609FE0DCAF609772304C3E309E370E1C3C309110000FE1B +:200A000020C8FE1ACA590BFE3ADA0E0AD607D630EB29292929856FEBCD0E15FE1ACA590BF7 +:200A2000C3FF09CD6D043A1317B7C2220B216500110C170E03CD8516C2910A21001ECD56B1 +:200A4000155E2356237E2347B7CA6A0ACD750A3E20CDB6157ECDB6152305C2540A3E0DCDF2 +:200A6000B6153E0ACDB615C3410A3E1ACDB615CD7715C377017ACD7C14CDB6157ACD8014EF +:200A8000CDB6157BCD7C14CDB6157BCD8014C3B6152165001109170E03CD8516CAB30C210A +:200AA0006500110F170E03CD8516CA120B2165001103170E03CD8516C2E7013E01321317CB +:200AC000AF321217CD5615CD47162B2B57524954494E47202E41534D20454E41424C4544F6 +:200AE0000D0A555345205A20434F4D4D414E44204F52204520434F4E54524F4C20544F200F +:200B0000434C4F53452046494C452B2B0D0A00C37701CDF20D2AF816232336002AF616C3FE +:200B20003E0ACD47162B2B4E4F2046494C45204143434553534553205045524D495454451C +:200B40004420554E54494C202E41534D20434C4F5345440D0A00C37701CD47162B2B554E27 +:200B6000455850454354454420454F460D0A00C377012124177EFE0DCA6A0CCDA714FE0D1F +:200B8000CA640CFE20CA8D0BFE2CC2E701237ECDA70BC37701E5D5F5CD480C2BDAA20B23C7 +:200BA0002323F1D1BEE1C8321E17CD480CDAF20B3A1E17FE49CA440CFE57CA440CFE42CA1E +:200BC000440CFE53CA440CFE45CA440CFE4BC2E701EB21030019EB7E23A62B3CCAEC0B0682 +:200BE000031A77132305C2E10BC3D70B2B2B2BC3EF073A1E17FE4BCAE701FE45CA130CFE05 +:200C000042CA130CFE57CA130CFE49CA130CFE53C2E701D5E52100187E23A623233CC218AA +:200C20000C232323EB21FDFF19C12B1B7E127BB9C22A0C7AB8C22A0C6069D1732372233A32 +:200C40001E1777C9232377C92100187E23A62B3C37C8237ABE2BD8C25E0C7BBEC8D823230A +:200C600023C34B0CCD480CC36D0C210018CD8F165E2356237AA33CC27D0CC3EF07D5E5CD51 +:200C8000BA13DA960C7ECDE6152305C2850C3E3ACDE615CDDA15E1D1CDA214CDA214EBCDDE +:200CA0009A143E2CCDE615EB7ECDE615CDDA1523C36D0CCD56152100185E2356237AA33C44 +:200CC000CADD0CCD750A3E2CCDB6157ECDB6153E0DCDB6153E0ACDB61523C3B90C3E1ACD6A +:200CE000B615CD7715C37701CDDF14210018CD0E15110000FE1ACA210DFE2CCA150DFE3A3D +:200D0000DA050DD607D630EB29292929856FEBCD0E15C3F40C73237223CD0E157723C3EE7D +:200D20000C36FF2336FFC3EF07CDF20D2124177EFE0DCAA20DCDA71423FE0DCA9C0DFE20F0 +:200D4000CA480DFE2CC2E701E5CD7E0DDA5A0DCDCD0DE1E57EFE0DCA77012AF816732372AA +:200D600023D10600E5231A7713041AFE0DC2650D2322F81636FF2336FFE170C377012AF6E4 +:200D8000167E23A62B3C37C8237ABE2BC2920D7BBEC823237ECD371123C3810DCD7E0DC340 +:200DA000A50D2AF616CD8F165E2356237AA33CCA7701EBCD9A14EB3E3BCDE61546237ECDFE +:200DC000E61505C2BD0DCDDA1523C3A50D7E23A63CC82BD5545D23237ECD37112306007EB7 +:200DE0001223134FA03C41C2DF0DEB2B2B22F816D1C92AF6167CB5C0CD47162B2B434F4D00 +:200E00004D414E442049474E4F5245442B2B0D0A2B2B49737375652027554E4E4E4E2720A3 +:200E2000746F2074656C6C205245534F5552434520746F20757365206164647265737320E0 +:200E40004E4E4E4E0D0A617320746865207374617274206F662074686520636F6D6D656ECB +:200E60007473207461626C650D0A00C377012124177EFE0DCAE701FE2ECAE701CDA714EB29 +:200E80007CFE1FDA940E22F61622F81636FF2336FFC37701CD47162B2B4E4F2121203C312B +:200EA00046303048210D0A00C37701D5E53E013212172AF016EBCDBA13DAED0E48E57EFE4A +:200EC0002BCAEC0EFE2DCAEC0E230DC2BE0EE1CD4B113E3ACDE615CDA910CDA910CDAE1095 +:200EE0002AF016CD9A14CDDA15C3ED0EE1AF321217CDA214CDA2142AF016CD9A143E0132C0 +:200F00001217CDA910E1D1C9CDAB0E2AF016EB2AEC161922F416E52AF0162322F016E17ED6 +:200F200047216711110600197EB7CAB310A04F237EB9C2270F237E321E170604237EFE2EBF +:200F4000C4E61505C23C0F2AF0163A1E17FE04DA610FFE09D2610F23FE06DA5E0F2322F0E9 +:200F6000165F1600216F0F191919E52AF416C9C3930FC3960FC39F0FC3A80FC3B10FC3BD5F +:200F80000FC30D10C36D10C37310C37910C37F10C39310C3DA15CDA910CD2711C3DA15CD1C +:200FA000A910CD1D11C3DA15CDA910CDF010C3DA15CDA910CD1D11CDA410C3C00FCDA910AC +:200FC0002AF4162322F4162AF4167EFE20DAF10FFE5BD2F10F3A1E17FE04DAF10FFE06D298 +:200FE000F10F7ECDDC103E27CDE615CDA910CDAE107EFE0ADA0210CD3C113E00CDE615C327 +:20100000DA15C630CDE615C3DA15C3DA15CDA9102AF4167ECDF010CDA4102AF416235E2361 +:2010200056D5CDBA13D237103A1D17B7CA4010D1D5CD0A13C34010CD4B11CDA910CDAE10B6 +:20104000D17AB33E00CA56107AB7CA5C10CD3C117BCD8C143E00CDE615C3DA157BFE0ADAA6 +:201060006810CD3C11C35410C630C35610CDA910C31A10CDC210C36D10CDC210C3DA15CD28 +:20108000A9102AF4167E1F1F1FE607F630CDE615C3DA15CDA9102AF4167ECD1D11CDA41047 +:2010A0007EC3990F3E2CC3E6153E20C3E6153E3BC3E615CD4E16444209003E04321E17C3A0 +:2010C000C70F2AF4167E1F1FE60E215511CD37117ECDE615237EFE2EC4E615C9F53E27CDF8 +:2010E000E615F1FE27C2E615F5CDE615F1C3E6152AF4167E1F1F1FE606FE06C22B117EE655 +:20110000CFFEC1CA1511FEC5CA15113E53CDE6153E50C3E615CD4E1650535700C92AF416D1 +:201120007E1F1F1FC32B112AF4167E216511E607CD37117EC3E615856FD024C9FEA0DA8C99 +:2011400014F53E30CDE615F1C38C147ECDE6152305C24B11C94E5A5A2E4E43432E504F5086 +:2011600045502E4D2E42434445484C4D41FFCE054143492EF888014144432EF880014144BF +:20118000442EFFC6054144492EF8A001414E412EFFE605414E492EC7C408432E2E2EFFCD64 +:2011A0000743414C4CFF2F00434D412EFF3F00434D432EF8B801434D502EFFFE0543504903 +:2011C0002EFF27004441412ECF09034441442EC705024443522ECF0B034443582EFFF30044 +:2011E00044492E2EFFFB0045492E2EFF7600484C542EFFDB05494E2E2EC70402494E522EE1 +:20120000CF0303494E582EC7C2084A2E2E2EFFC3074A4D502EFF3A074C44412EEF0A034C12 +:20122000444158FF2A074C484C44CF01064C58492EC0400B4D4F562EC706044D56492EFF77 +:2012400000004E4F502EF8B0014F52412EFFF6054F52492EFFD3054F55542EFFE900504330 +:20126000484CCFC103504F502ECFC50350555348C7C009522E2E2EFF170052414C2EFF1FA6 +:20128000005241522EFFC9005245542EFF0F005252432EFF0700524C432EC7C70A52535491 +:2012A0002EF898015342422EFFDE055342492EFF220753484C44FFF9005350484CFF3207C2 +:2012C0005354412EEF020353544158FF37005354432EF890015355422EFFD6055355492EDC +:2012E000FFEB0058434847F8A8015852412EFFEE055852492EFFE3005854484C004E4E4D02 +:201300004D444459593F3F3F3F3F212117364C237ACD6F147BCD6F142121170605CD6813CC +:20132000DA2713732372C9E5D5C52AEE16545D78C603856F7CCE006722EE16232336002BB7 +:201340002B444D2A18177BBDC250137ABCCA57131B0B1A02C34613C1D17323722370D12332 +:201360001A771305C25F13C9D5E521001ED1D52323E57E23B7CAB013B8DA9C13C2A6134F0D +:20138000CD8516CA9513DAB013E17E23856FD26D1324C36D13E12B2BD1D1B7C94FCD851697 +:2013A000D28913C3B01348CD8516CAB013D28913E12B2B221817E1D137C921001E7E23BBB9 +:2013C000C2C8137EBACAD713237EB737C823856FD2BD1324C3BD13237E2347B7C037C9211A +:2013E0002417CDA7147EFE20CAF013FE2CC2E701237EFE2EC2E701D5CD4214D1CD1D13C3ED +:201400007701C92124177EFE2EC2E701CD4214CD6813DAE701444D23237E856F7CCE0067B4 +:2014200023EB2AEE167BBDC22F147ABCCA36141A020313C32514606922EE1623233600C38D +:201440007701230600E57E2304FE2BCA4614FE2DCA4614FE30DA6714FE3ADA4614FE41DABD +:201460006714FE5BDA461405CAE7012BEBE1C9F5CD7C147723F1CD80147723C91F1F1F1FD0 +:20148000E60FFE0ADA8914C607C630C9F5CD7C14CDE615F1CD8014C3E6157CCD8C147DCDEF +:2014A0008C143E20C3E6157EFE2ECACF141100007EFE30D8FE3ADAC114FE41D8FE47D0D69B +:2014C00007D630EB29292929856FEB23C3B014CD4214D5CD6813DAE7015E2356E17EC9E501 +:2014E000210001221A17AF327C00115C000E0FCD0500E13CC0CD47162B2B46494C45204ED3 +:201500004F5420464F554E440D0A00C37701E52A1A177CFE01C22B15C5D5115C000E14CD87 +:201520000500B7D1C1218000C232157E23221A17E1C9FE03DA5015CD47162B2B554E455815 +:2015400050454354454420454F460D0A00C377013E1A77C32B15E5115C000E13CD05001162 +:201560005C000E16CD05003CCAE701AF327C00218000221A17E1C9115C000E15CD0500B717 +:20158000C2A315115C000E10CD05003CC0CD47162B2B434C4F5345204552524F520D0A00C1 +:2015A000C37701CD47162B2B5752495445204552524F520D0A00E52A1A17772C221A17E10D +:2015C000C0C5D5E5115C000E15CD0500B7C2A315218000221A17E1D1C1C93E0DCDE6153EB8 +:2015E0000AC3E6153E2AC5D5E55FD50E023A1417B7CC0500D13A1317211217A67BC4B615DC +:201600007BFE0AC211163A0217B7CA111621011735E1D1C1C9CDE4151121173E4E120E0AF4 +:20162000CD05002122175E16001923360D212217237EFE0DCADA15FE61DA3016FE7BD230D2 +:2016400016E65F77C33016AF321217321417E37ECDE615237EB7C24F1623E3C9AF32021ED0 +:2016600021001E22EE163E0D32241721FFFF2200183E4932FF172AF6167CB5C822F8163690 +:20168000FF2336FFC91ABEC013230DC28516C9C5D5E50E0BCD0500B7CACA160E01CD05007D +:2016A000FE03CAAB16CDDA15C37701CD47160D0A41424F525420592F4E20000E01CD0500F7 +:2016C000E65FFE59CA0000C37701E1D1C1C9FE0DC8FE0AC8B7C8FE20D8FE7F3FC9D10E09A8 +:2016E000CD05002AFD17F9C9000180010000001E00010001000100000000000000007F00F6 +:201700000A010141534D434F4D43544C53594D444F4300000000000000000000000000004B +:20172000004E00030D0000000000000000000000000000000000000000000000000000004B +:20174000000000000000000000000000000000000000000000000000000000000000000089 +:20176000000000000000000000000000000000000000000000000000000000000000001A4F +:20178000E54D201EFF040E00AF78811FBBCAC4175FE5D5C5E5424816002100001905C29CA1 +:2017A00017D1191189011ABE1323C2B6170DC2A617C1D1E17BC9C1D1E1DAC0174BC38817DC +:2017C00043C38817AF3CC93A89010117C2FE4AC806C4FE43C80113C0FE52C93A8801FE047D +:2017E000D20D18FE03CAF217FE02C2F41530CAF4152ACA0000F8CA330023168401A9B949FE +:20180000FFFF00490049004900490049004900490049004900490049004900490049004983 +:20182000004900490049004900490049004900490049004900490049004900490049004918 +:2018400000490049004900490049004900490049004900490049004900D1964900490049DA +:201860000049004900490049004900490049004900490049004900490049004900490049D8 +:201880000049004900490049004900490049004900490049004900490049004900490049B8 +:2018A000004900490049004900490049004900490049004900D1964900490049004900497A +:2018C0000049004900490049004900490049004996490049004900490049004900490049E2 +:2018E0000049004900490049004900490049004900490049004900D196490049004900493A +:20190000004900490049004900490049004900490049004900490049004900490049004937 +:20192000004900490049004900490049004900490049004900490049004900490049004917 +:201940000049004900490049004900490049004900490049004900490049004900490049F7 +:201960000049004900490049004900490049004900490049004900490049004900490049D7 +:20198000004900490049004900D196490049004900490049004900D196490049004900497B +:2019A000004900490049004900490049004900490049004900490049004900490049004997 +:2019C000004900490049004900490049004900490049004900490049004900490049004977 +:2019E000004900490049004900490049004900490049004900490049004900490049004957 +:201A0000004900490049004900490049004900490049004900490049004900490049004936 +:201A200000490049004900490049004900490049004900490049004900D1964900490049F8 +:201A40000049004900490049004900490049004900490049004900490049004900D19649D8 +:201A60000049004900490049004900490049004900490049004900490049004900490049D6 +:201A80000049004900490049004900490049004900490049004900490049004900490049B6 +:201AA000004900490049004900490049004900490049004900490049004900490049004996 +:201AC0000049004900490049004900490049004900490049004900490049004900D1964958 +:201AE000004900490049004900490049004900490049004900490049004900490049004956 +:201B0000004900490049004900490049004900490049004900490049004900490049004935 +:201B20000049004900490049004900490049004900D19649004900490049004900490049F7 +:201B40000049004900490049004900490049004900490049004900490049004900490049F5 +:201B60000049004900490049004900490049004900490049004900490049004900490049D5 +:201B8000004900D19649004900490049004900490049004900490049004900490049004997 +:201BA000004900490049004900490049004900490049004900490049004900490049004995 +:201BC000004900490049004900490049004900490049004900490049004900490049004975 +:201BE000004900490049004900490049004900490049004900490049004900490049004955 +:201C00000049004900D1964900490049004900490049004900490049004900490049004916 +:201C20000049004900490049004900D19649004900490049004900490049004900490049F6 +:201C40000049004900490049004900490049004900490049004900490049004900490049F4 +:201C60000049004900490049004900490049004900490049004900490049004900490049D4 +:201C80000049004900490049004900490049004900490049004900490049004900490049B4 +:201CA000004900490049004900490049004900490049004900490049004900490049004994 +:201CC000004900490049004900490049004900490049004900D1964900D196490049004938 +:201CE000004900490049004900490049004900490049004900490049004900490049004954 +:201D0000004900490049004900490049004900490049004900490049004900490049004933 +:201D2000004900490049004900490049004900490049004900490049004900490049004913 +:201D40000049004900490049004900490049004900490049004900490049004900490049F3 +:201D60000049004900490049004900490049004900490049004900490049004900490049D3 +:201D8000004900490049004900D196490049004900490049004900D1964900490049004977 +:201DA000004900490049004900490049004900490049004900490049004900490049004993 +:201DC000004900490049004900490049004900490049004900490049004900490049004973 +:201DE000004900490049004900490049004900490049004900490049004900490049004953 +:201E0000004900490049004900490049004900490049004900490049004900490049004932 +:201E200000490049004900490049004900490049004900490049004900D1964900490049F4 +:201E40000049004900490049004900490049004900490049004900490049004900D19649D4 +:201E60000049004900490049004900490049004900490049004900490049004900490049D2 +:201E80000049004900490049004900490049004900490049004900490049004900490049B2 +:201EA000004900490049004900490049004900490049004900490049004900490049004992 +:201EC0000049004900490049004900490049004900490049004900490049004900D1964954 +:201EE000004900490049004900490049004900490049004900490049004900490049004952 +:201F0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E521 +:201F2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E501 +:201F4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E1 +:201F6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C1 +:201F8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A1 +:201FA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E581 +:201FC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E561 +:201FE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E541 +:20200000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E520 +:20202000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E500 +:20204000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E0 +:20206000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C0 +:20208000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A0 +:2020A000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E580 +:2020C000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E560 +:2020E000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E540 +:00000001FF diff --git a/hex/tet.hex b/hex/tet.hex new file mode 100644 index 0000000..eb6b26c --- /dev/null +++ b/hex/tet.hex @@ -0,0 +1,323 @@ +:020000040000FA +:200100002A0600F90000C30C01C30000CD6203CDB808C37B048026B80780260029C37704B0 +:20012000C37B04C39604C3E004C3C504C3BC05C34805C30106C32106C34B03C35D03C36A44 +:2001400004C35504F80CCD320FCDB50DC3E15E235623E52A1501197E23666FC9E15E23E57C +:2001600016002A1501197E23666FC9E15E235623E52A1501196EC9E15E23E516002A1501E4 +:20018000196EC9E15E235623E5EB097E23666FC9E15E23E5EB2600097E23666FC92101005A +:2001A000C82BC9210000C823C9210100D82BC9210000D823C9210100F02BC9210100F82B90 +:2001C000C9110100C81BC9110000C813C9110100D81BC9110000D813C9110100F01BC91159 +:2001E0000100F81BC97DBBC07CBAC9EB7ABCC07BBDC9EB7CBAC07DBBC9EB7CAAF2EC017AFD +:20020000B7F037C9EB7CAAF2F3017CB7F037C97AF5CD5A02EBCD5A02EBCD2902F1B7F07C7A +:200220002F677D2F6F23C900007CB5C8D5E5CD8902D1CD6B027C2F677D2F6F23D119C9AF59 +:20024000326806CD5A02EBCD5A02CD6B023A68061FD07C2F677D2F6F23C97CB7F02F677DA1 +:200260002F6F233A68063C326806C9C5CD7102C1C9444D21000078B1C8781F47791F4FD2A7 +:20028000830219EB29EBC376027CB5C8C5CD94026069C1C906017CB7FAA0022904C39602B4 +:2002A000EB78010000F5CDDD02DAB70203D57A2F577B2F5F1319D1AF7A1F577B1F5FF13D02 +:2002C000C8F579174F781747C3A602AF326806CD5A02EBCD5A02EBCD8902C34D027CBAD852 +:2002E000C07DBBC9EB1C1DC8AF7C1F677D1F6FC3E602EB1C1DC829C3F4027C2F677D2F6FEF +:2003000023C97A2F577B2F5F13C9210400397E23666FC9210600C30D03210800C30D032158 +:200320000A00C30D03210C00C30D03210E00C30D03211000C30D0311500621040039C5064A +:200340000E7E12231305C24103C1C9210000392277062A060011CCF719F9C303012A7706B7 +:20036000F9C9E1226A06217A08E52A1B0122640621E80322660621DC592248063EDB325EE5 +:20038000063ED33261063EC9326006326306CD3E01AF3273063274063E1F3272063E0332E7 +:2003A00076062100CC2240062110002244062140002242062100042246060E0BCD0500B7CF +:2003C00000CAC9030E01CD050021800011F907462378B7C2DC03110100C33A047E122313E2 +:2003E00005C2DC03AF1221F907110100017C08AF3269067E23FE20CAF303B7CA3A04FE2230 +:20040000C20904326906C30A042B7D02037C0203137E23B7CA3A04C5473A6906B778C1CA8B +:200420002E04FE22C21104AF3269062B7723FE20C211042B360023C3F303D5061B21DE0750 +:2004400036002305C24004CD4101AF326E06323F062A6A06E92A1B01EB2A1501CDFA021987 +:200460007CB5C81B2BAF12C36004C91B0122640621E8032266062121FFFFC93E10F5CDC56C +:2004800004DA8C046F2600E5CD9604E1F13DFE07C27D04C30901CD0A03CDC504DA77047EA6 +:2004A000CD3201E604CAB804E5CD1303C5CDBC05EB0E10CD0500C1E1CD35013600FEFF21DD +:2004C0000000C02BC957D608D8FE093FD8D55F160021DE071919197EE60137D17AC83FC9EB +:2004E000C5CDA705E51306044ECD15002305C2E8020E20C315007AE6380F0F0FC9CDF6025F +:20050000874F213506094ECD1500234ECD15000E20CD1500C31500CDF602E606FE06C2B10D +:20052000020E53CD15000E50C31500CD2E002A0C007CCDC8027DCDC8020E20CD1500CD15F6 +:2005400000C9210000392213003A1000B7CA640321FFFF220E003CC264033C3210002A0CA9 +:2005600000C38A03CD9106C233052110007EB7CA760335CA33052A0C00CD9406CD2E000E47 +:2005800020CD1500CD1500CD2E03CD960257213805011100BECAF004230DC294030E0ABE72 +:2005A000CADC04230DC29F030E06BECAC104230DC2AA03E6C0FE40CAA704FE80CA98047A46 +:2005C000E6C7D604CA89043DCA83043DCA6F047AE6C0CA3D047AE607CA3204D602CA2704D6 +:2005E000D602CA1C04D603CA0D047AE608C2FE047AE6074F3D212C0609CDE602CDF602FE92 +:2006000006C29204212906CDE602C36403212506CDE602CDF602CDC802C364030E43CD1593 +:2006200000CDFD02C3CC040E4ACD1500CDFD02C3CC040E52CD1500CDFD02C36403210D005C +:2006400000CC400010000004C8D5C8D704FE03DA02000400320000FF001F0AFF0012DB64AF +:20066000C9D3E6C90029E80300CD0F01C3CC002109061F0000CD0302CDB1020E2CCD1500F2 +:20068000C3E704210506C38C04210106CDE602CDF602CDB102C364037AE6380F4F21E105E4 +:2006A00009CDE602C3B80421DD05CDE602CDF602CDB1020E2CCD15007AE607CDB102C364D6 +:2006C000037987874F21C10509CDE602CD9602F5CD960257F15FCD8806C364037987874FDB +:2006E00021990509CDE602CD9602CD8506C364037987874F21550509CDE602C364032169D3 +:2007000006CDE6027ACD8506C36403CD2E000E3FCD15002A1300F921000039221300CD2B3B +:2007200003221100CD7C06CD4D012A1100220C00C31E052A1300F9C900070F171F272F37F2 +:200740003F76C9E3E9EBF3F9FBC6CED3D6DBDEE6EEF6FE222A323AC3CD45492020535048BE +:200760004C44492020584348475043484C5854484C52455420484C5420434D4320535443DF +:2007800020434D4120444141205241522052414C2052524320524C43204E4F50204350496D +:2007A000204F52492058524920414E492053424920494E2020535549204F55542041434939 +:2007C000204144492043414C4C4A4D50204C444120535441204C484C4453484C444D000053 +:2007E000000000000000000000000000000000000000000000000000004F524120434D5017 +:2008000020494E5220444352204D5649204C58492053544158494E5820444144204C444194 +:2008200058444358205253542050535720504F5020505553484E5A5A204E434320504F50DA +:200840004550204D20422043204420452048204C204D204120422020204420202048202078 +:200860002053502020505357203F3F3D20000000000000C39706C39F06C30F16C3DE11C35B +:200880000612C3EF11C33412C35D12C34A14C3E112C34E12C37F12E3224B19E3C306DC2AD9 +:2008A0000600229D0621970622010021000022060022EC19AF325019C3F708C3420FC3CA6F +:2008C0001AC3DE0EC3BF11C3DD0FC36510C3F80EC38D16C37C13C3F913C35516C38C25C320 +:2008E0001A0EC37B17C33918C37814C39E15C35B0FC3E80DC3DD25C5CDBB08CDBE08CDC182 +:20090000082A1501116C0219110000732372D52A1501116A0219D1732372D52A15011168CC +:200920000219D1732372D52A1501115D0219D173CD6B015C027DFE6ECA960DCDBB08CDC4D3 +:2009400008CDC708CDCA082A15011160021936322336002A150111620219AF7723772A15FA +:200960000111660219110000732372D52A150111640219D17323722A150111700019E5CDC1 +:20098000CD08D12A150111780019E5CDCD08D12A150111700019E5CDD008D17CB5CA4B0DEF +:2009A0002A150111700019E5CDD308D1CDD608217F00E52A150111700019E5CDD908D1D1C0 +:2009C0002A1501117E0219360A233600CD4D016002E52A1501117C0219D17323722A150131 +:2009E000115E0219AF772377210400E52A150111740019E52A150111700019E5CDDC08D19F +:200A0000D1D1CD4D017C0211FFFF197C17D21C0A2A1501115C02193600C3290ACDDF08E55B +:200A20002A1501115C0219D173CD6B015C027DB7C2E80A2A1501117E0219E57E23666FE501 +:200A4000CD4D016002E5CD4D017C02D1CDFA0219D119EBE17323722A150111760019E57EE7 +:200A600023666F110C0019EBE17323722A150111740019E5CDD008D17CB5CACD0A21210027 +:200A8000E52A150111700019E5CDD908D1D1217F00E52A150111740019E5CDD908D1D121A9 +:200AA0000400E52A150111700019E52A150111740019E5CDDC08D1D1D1CD4D016002E52A1B +:200AC0001501117C0219D1732372C3E50A2A150111700019E5CDE208D12A1501115E0219BC +:200AE0003601233600C3120D2A1501117C0219E57E23666F2B2B2BEBE1732372CD6B015C57 +:200B0000027DFE35C2A70B2A150111760019E57E23666F110C0019EBE17323722A15011119 +:200B2000740019E5CDD008D17CB5CAA40B2A150111760019E57E23666F110C0019EBE17373 +:200B400023722A150111740019E5CDD008D17CB5C22D0B2A150111760019E57E23666F1150 +:200B6000F4FF19EBE1732372212100E52A150111700019E5CDD908D1D1217F00E52A15019A +:200B800011740019E5CDD908D1D1210400E52A150111700019E52A150111740019E5CDDC4D +:200BA00008D1D1D1C3B20CCD6B015C027DFE30C2F00BCD4D01640211F6FF197C17D2ED0B3D +:200BC0002A1501116402195E235613722B732A150111660219E57E23666FE5CD4D016402B8 +:200BE000110A00CD3F02D119EBE1732372C3B20CCD6B015C027DFE20CA0D0CFE37CA4E0C1F +:200C0000FE39CA5F0CFE38CA700CC3A60C212100E52A150111700019E5CDD908D1D12A1502 +:200C200001115E021936012336002A1501117E021936102336272A150111660219E57E2391 +:200C4000666F11CEFF19EBE1732372C3B20C2A1501117600195E23561B722B73C3B20C2AE6 +:200C60001501117600195E235613722B73C3B20C2A1501117400195E235613722B73CD5C42 +:200C80000174110400EBCD0F027CB5C2A30C2A150111740019E57E23666F2B2B2B2BEBE1AE +:200CA000732372C3B20C2A1501115C02193620C3B20CCD6B015C027DFE20CDA301E52A1545 +:200CC0000111740019E5CDD008D1D17CA2677DA36F7CB5CA120D212100E52A150111700033 +:200CE00019E5CDD908D1D1217F00E52A150111740019E5CDD908D1D1210400E52A150111B3 +:200D0000700019E52A150111740019E5CDDC08D1D1D1CD4D015E027CB5CADD09CDE5082147 +:200D20000400E52A150111700019E52A150111780019E5CDDC08D1D1D12A1501117800193E +:200D4000E5CDCD08D1CDE808C38F09CDEB08211700E5210000E5CDEE08D1D121A50DE5CD56 +:200D6000F108D1CDDF08E52A1501115C0219D173CD6B015C027DFE64CDA301E5CD6B015CA3 +:200D8000027DFE6ECDA301D17CA2677DA36F7CB5C2630DC33009210F00E5210400E5CDF4D3 +:200DA00008D1D1C1C970726F646F6C76696D203F00C3BA0DC30126C3DD25C521000039F973 +:200DC000444D210400096E7DFE0AC2D50D210D00E5CDB40DD1210400096E2600E52104007F +:200DE000E5CDB70DD1D1C1C9C3EE0DC30126C521000039F9444DCD9001046E7DB7CA180E0C +:200E0000210400095E235613722B731BEB6E2600E5CDEB0DD1C3F60DC1C9C3200EC3DD258F +:200E2000C521FBFF39F9444D21020009AF7723772104000936006069AF772377210200E52E +:200E4000CD1D0ED17CB5CA570E210300E5CD1D0ED1EB210400097360695E235613722B7348 +:200E600021FBFF197C17CDA901E5210400096E7DB7CD9D01D17CA2677DA36F7CB5C23C0EF2 +:200E8000210200095E235613722B731BD5CD4D017C02D1CDFA01CDA901E5210400096E7D95 +:200EA000B7CD9D01D17CA2677DA36F7CB5C2360E2A1501117C0219E57E23666FE5CD90016E +:200EC00002D1CDFA0219EBE1732372210400096E2600C3D50EEB21050039F9EBC1C9C3E4C2 +:200EE0000EC33026C521EF0EE5CDE10ED1C1C96E617E6E656D203F00C3010FC3AA1FC35886 +:200F000026C521FEFF39F9444DCDFE0EE5CDFB0ED1EB6069732372CD900106E5CD9001003D +:200F2000110700EBCD0F022929EBE1732372CD90010623233605233600EB21020039F9EB41 +:200F4000C1C9C3480FC3E80DC521530FE5CD450FD1C1C91F1B36371B373100C3610FC3DD8F +:200F600025C521000039F9444D211B00E5210400E5CD5E0FD1D1213500E5210400E5CD5E2C +:200F80000FD1D1CD90010611200019E5210400E5CD5E0FD1D1CD90010411200019E5210471 +:200FA00000E5CD5E0FD1D1C1C9C3AF0FC35B0FC521000039F9444DCD900104110C00EBCD58 +:200FC000CB022323E5CD900104110C00EBCD0F0229111E0019E5CDAC0FD1D1C1C9C521FEE3 +:200FE000FF39F9444D6069AF772377CD9001001110FF197C17D25C10CD90010029E52A1593 +:2010000001117C0019D119E5CD900100110C00EBCD0F027CB5CD9D01CA4210CD90010011EF +:201020000C00EBCD0F0211F5FF197CB5CD9D01CA4210CD900100111BFF197C17CDAF01DA79 +:201040004810210100C34B10210000EBE173237260695E235613722B73C3EB0FEB21020075 +:2010600039F9EBC1C9C36E10C3A90FC3DD25C521FEFF39F9444D6069AF772377CD900100BB +:201080001110FF197C17D2D010CD90010029E52A1501117C0019D1197E23666F7CB5C2C469 +:2010A00010CD900100E5CD6810D1212100E5210400E5CD6B10D1D1212100E5210400E5CDAE +:2010C0006B10D1D160695E235613722B73C37C10EB21020039F9EBC1C9C3DF10C3DD25C5F0 +:2010E00021FEFF39F9444D6069AF772377CD90010829E52A150111380019D1197E23666F10 +:20110000E5CD900100D1196E7DFE43CA2011FE4CCA4511FE52CA6211FE44CA7F11C38F1185 +:20112000210600096E2600E5210400E5CDDC10D1D1210600096E2600E5210400E5CDDC1035 +:20114000D1D1C38F11210800E5210400E5CDDC10D1D1210800E5210400E5CDDC10D1D1C3E1 +:201160008F11211800E5210400E5CDDC10D1D1211800E5210400E5CDDC10D1D1C38F112145 +:201180001A00E5210400E5CDDC10D1D1C38F11CD90010829E52A150111380019D1197E23E7 +:2011A000666FE560695E235613722B731BE1196E7DFE45C2ED10EB21020039F9EBC1C9C338 +:2011C000CB11C35B0FC3E80DC3D910C521FEFF39F9444D210000E5210000E5CDC211D1D1AE +:2011E00021BB12E5CDC511D121D312E5CDC511D121E312E5CDC511D121F312E5CDC511D15B +:20120000210600E5210000E5CDC211D1D1210313E5CDC511D1210F00E5210000E5CDC2112F +:20122000D1D1210E13E5CDC511D1211B13E5CDC511D1212813E5CDC511D1213313E5CDC536 +:2012400011D1214113E5CDC511D1214D13E5CDC511D1216513E5CDC511D16069AF77237789 +:20126000CD90010011F9FF197C17D2B212CD90010029E52A1501116E0219D119AF772377D5 +:20128000CD900100110300CD3F022323E5213C00E5CDC211D1D1CD9001002929E5217F00EA +:2012A000E5CDC811D1D160695E235613722B73C36012EB21020039F9EBC1C92020202020B4 +:2012C000202074656B757D696A20206C757E7B696A0A006F7E6B69202020202020202020ED +:2012E000200A006C696E69692020202020202020200A0075726F77656E78202020202020AD +:20130000200A00736C656475607D61710A0075707261776C656E69653A0A0070726F626535 +:201320006C2D776E697A0A0037202D20776C65776F0A0038202D207772617D656E69650A4F +:201340000039202D2077707261776F0A0035202D20756E697E746F76656E69652066696781 +:201360007572790A0030202D207577656C697E656E69652075726F776E710A00C38513C32D +:201380005B0FC3CD1FC521FEFF39F9444DCD9001067E23666F110400EBCDCB02EB606973F3 +:2013A0002372CD90010029E52A1501116E0219D1195E235613722B73CD900100110300CD2F +:2013C0003F022323E5214600E5CD7F13D1D1CD90010029E52A1501116E0219D1197E23661D +:2013E0006FE521F413E5CD8213D1D1EB21020039F9EBC1C92533640A00C30514C35B0FC341 +:20140000E80DC3D910C5210700E5210000E5CDFC13D1D1215014E5CDFF13D1215A14E5CD7A +:20142000FF13D1216414E5CDFF13D1216E14E5CDFF13D1210700E5210000E5CDFC13D1D1D2 +:20144000CD5C0178E5217F00E5CD0214D1D1C1C920202020202020200A00202020202020A7 +:2014600020200A0020202020202020200A0020202020202020200A00C38414C3DD25C35BD0 +:201480000FC3CD1FC521FEFF39F9444DCD4D016202110A00EBCDCB02EB6069732372CD90B0 +:2014A0000100E5CD4D016402D1CD0502D2CC14210700E5210400E5CD7B14D1D1CD900100FB +:2014C000E52A150111640219D1732372CD4D01640211F6FF197C17D2FB14CD4D01640211D8 +:2014E0000500CD3F02113200CDFA0219E52A150111600219D1732372C307152A150111609A +:20150000021936032336002A150111660219E57E23666FE5CD4D017E0211E803CDCB02E5F6 +:20152000CD4D016402D119D119EBE1732372210100E5210700E5CD7E14D1D1CD4D016602EA +:20154000E5218B15E5CD8114D1D1210200E5210700E5CD7E14D1D1CD4D016202E5219115BB +:20156000E5CD8114D1D1210300E5210700E5CD7E14D1D1CD4D016402E5219715E5CD8114F1 +:20158000D1D1EB21020039F9EBC1C9253035640A00253033640A0020253032640A00C3A787 +:2015A00015C35B0FC3CD1FC5CD4D016602E5CD4D016C02D1CD0502D2ED15CD4D016602E5A3 +:2015C0002A1501116C0219D1732372CD4D016402E52A1501116A0219D1732372CD4D0162C8 +:2015E00002E52A150111680219D1732372210100E5211000E5CDA115D1D1CD4D016C02E5A7 +:20160000214316E5CDA415D1D1210200E5211000E5CDA115D1D1CD4D016802E5214916E531 +:20162000CDA415D1D1210300E5211000E5CDA115D1D1CD4D016A02E5214F16E5CDA415D110 +:20164000D1C1C9253035640A00253033640A00253032640A00C35E16C3A90FC3D910C52108 +:20166000000039F9444DCD90010423237E23666FE5CD5816D1CD9001047E23666FE52106B4 +:2016800000096E2600E5CD5B16D1D1C1C9C521F8FF39F9444D21060009AF772377CD900170 +:2016A0000C7E23666F29EB2A1501197E23666FEB21020009732372CD90010C23237E2366EF +:2016C0006FEB21040009732372CD900102110200EBCD0F02E5CD90010429E52A1501117C1C +:2016E0000019D1197E23666FD17CA2677DA36FEB6069732372210600095E235613722B73A6 +:20170000210400095E235613722B73CD9001062B2B2B2B7CB5C2321721060009AF77237765 +:2017200021040009E57E23666F11080019EBE173237221020009E57E23666F110200EBCDC8 +:20174000CB02EBE1732372CD9001027CB5CDA301E5CD9001007CB5CDC101E17CA2677DA35D +:201760006F7CB5C2C916CD9001007CB5CD9D01C37217EB21080039F9EBC1C9C521FAFF390F +:20178000F9444D6069AF772377CD90010A7E23666F29EB2A1501197E23666FEB210200095E +:2017A000732372CD90010A23237E23666FEB21040009732372CD900102110200EBCD0F02A0 +:2017C0007CB5CAD917CD90010429E52A1501117C0019D119360123360060695E2356137229 +:2017E0002B73210400095E235613722B73CD9001002B2B2B2B7CB5C212186069AF77237773 +:2018000021040009E57E23666F11080019EBE173237221020009E57E23666F110200EBCDE7 +:20182000CB02EBE1732372CD9001027CB5C2B517EB21060039F9EBC1C9C34218C3A90FC3D4 +:20184000DD25C521F5FF39F9444D606911D8007323722102000973237221080009110100B7 +:2018600073237221060009732372210400093601233600CD90010411F5FF197C17D2F3187A +:2018800021060009E57E23666FE5CD900100E5CD900104D11929E52A1501117C0019D1196B +:2018A0007E23666F7CB5CD9D01D17CA2677DA36FEBE173237221080009E57E23666FE5CD1E +:2018C000900100E5CD900104D11929E52A1501117C0019D1197E23666FD17CA2677DA36F0D +:2018E000EBE1732372210400095E235613722B73C37318CD9001067CB5CA8619CD90010042 +:20190000E5CD900102D1CDE501CA8319CD90010223E5CD3C18D1210400093601233600CDB3 +:2019200090010411F5FF197C17D26E19CD900102E5CD900104D11929E52A1501117C001983 +:20194000D119AF772377212100E5210400E5CD3F18D1D1212100E5210400E5CD3F18D1D1EF +:20196000210400095E235613722B73C31F1921020009E57E23666F11F4FF19EBE1732372CC +:20198000C3FC18C3921ACD9001087CB5CABF192A1501116202195E235613722B732A1501C0 +:2019A00011660219E57E23666FE5CD4D016402110500CD3F02D119EBE1732372C3921ACDB6 +:2019C000900100E5CD900102D1CDE501CA801ACD90010223E5CD3C18D12104000936012367 +:2019E0003600CD90010411F5FF197C17D2801ACD900102E5CD900104D11929E52A15011142 +:201A00007C0019D119E5CD900100E5CD900104D11929E52A1501117C0019D1197E23666F7F +:201A2000EBE1732372210A00093621CD900100E5CD900104D11929E52A1501117C0019D1F3 +:201A4000197E23666F7CB5CA501A210A0009367F210A00096E2600E5210400E5CD3F18D1FD +:201A6000D1210A00096E2600E5210400E5CD3F18D1D1210400095E235613722B73C3E21932 +:201A800021020009E57E23666F11F4FF19EBE17323726069E57E23666F11F4FF19EBE1734E +:201AA0002372CD9001007C17CDAF01E5CD9001067CB5CDC101E17CA2677DA36F7CB5C259D9 +:201AC00018EB210B0039F9EBC1C9C3D01AC3DD25C521CE1DE52A150111380019D17323728D +:201AE00021DF1DE52A1501113A0019D173237221F01DE52A1501113C0019D17323722101B3 +:201B00001EE52A1501113E0019D173237221121EE52A150111400019D173237221231EE541 +:201B20002A150111420019D173237221341EE52A150111440019D173237221451EE52A1599 +:201B40000111460019D173237221561EE52A150111480019D173237221671EE52A1501115A +:201B60004A0019D173237221781EE52A1501114C0019D173237221891EE52A1501114E00B2 +:201B800019D1732372219A1EE52A150111500019D173237221AB1EE52A150111520019D1A6 +:201BA00073237221BC1EE52A150111540019D173237221CD1EE52A150111560019D173238E +:201BC0007221DE1EE52A150111580019D173237221EF1EE52A1501115A0019D17323722125 +:201BE000001FE52A1501115C0019D173237221111FE52A1501115E0019D173237221221F09 +:201C0000E52A150111600019D173237221331FE52A150111620019D173237221441FE52AAC +:201C2000150111640019D173237221551FE52A150111660019D173237221661FE52A150139 +:201C400011680019D173237221771FE52A1501116A0019D173237221881FE52A1501116C66 +:201C60000019D173237221991FE52A1501116E0019D17323722A150136172336002A1501DD +:201C8000232336112336032A15011104001936742336002A15011106001936232336022A9C +:201CA00015011108001936472336002A1501110A001936132336012A1501110C00193671D2 +:201CC0002336002A1501110E001936222336032A15011110001936632336002A15011112B0 +:201CE000001936322336012A15011114001936632336002A15011116001936322336012A2D +:201D000015011118001936362336002A1501111A001936312336022A1501111C001936366E +:201D20002336002A1501111E001936312336022A15011120001936272336002A150111224D +:201D4000001936312336012A15011124001936722336002A15011126001936322336022A9D +:201D600015011128001936332336002A1501112A001936332336002A1501112C00193633E4 +:201D80002336002A1501112E001936332336002A150111300019360F2336002A15011132D5 +:201DA000001936222336222A150111340019360F2336002A15011136001936222336222167 +:201DC0000E00E5210400E5CDCD1AD1D1C1C9434343444C4C4C434545454545454545004387 +:201DE000444C43444C4343454545454545454500525243444C4C4C4343434545454545455C +:201E0000004343444C43444C43454545454545454500434343444C434545454545454545AA +:201E20004545004343444C4C43444C43454545454545450043444C43434345454545454583 +:201E400045454545005243444C43444C4C4343454545454545004343444C43434545454556 +:201E6000454545454545005243444C4C4343444C4C434545454545004343444C434345452F +:201E80004545454545454545005243444C4C4343444C4C43454545454500524343444C4CF7 +:201EA0004C4343454545454545450043444C4343444C4345454545454545450052434344FD +:201EC0004C4C4C4343454545454545450043444C4343444C434545454545454545004343DB +:201EE00043444C4C434545454545454545450043444C4343444C4C434545454545454500B8 +:201F00005243444C4C4343434545454545454545005243444C4C4343444C4345454545453C +:201F200045004343444C4C4343454545454545454545004343444C4C434345454545454581 +:201F4000454545004343444C4C4343454545454545454545004343444C4C43434545454561 +:201F600045454545450043434343454545454545454545454545005243444C43444C434441 +:201F80004C4345454545450043434343454545454545454545454545005243444C43444C19 +:201FA00043444C43454545454500C521000039F9444DCD9001047C17D2C51FCD900104CD2F +:201FC000FA02C3C91FCD900104C1C9C1C9C3D61FC30126C3F01FC521000039F9444D2AD1CC +:201FE0001FE521040009E5CDD31FD1D1C1C9C1C9C3FF1FC3E923C39124C3C024C32325C5B6 +:202000002159FF39F9444D21AB00095E23561313722B731B1BEB7E23666FEB21040009737F +:202020002372CD9001ABEB21A50009732372210400095E235613722B731BEB6EEB6069737D +:202040007BB7CADA2360696E7DFE25C2AB2321060009EB219C000973237221A3000936062E +:2020600023360021A000091E0073219E000973219F000973CD9001046E7DFE2DC28F20212B +:202080000400095E235613722B73219F000934CD9001046E7DFE30C29F2021A0000934CD75 +:2020A0009001046E2600E5CDF61FD17DB7CABC2021040009E5CDF91FD1C3BF20210000EB0E +:2020C00021A10009732372210400095E235613722B731BEB6EEB6069737BFE2EC2072121B8 +:2020E000040009E5CDF91FD1EB21A30009732372219E000934210400095E235613722B7354 +:202100001BEB6EEB60697360696E2600E5CDFC1FD17DFE44CA3821FE55CA7421FE58CA7DF8 +:2021200021FE4FCA8621FE43CACC21FE53CAFD21FE00CA7623C37C23CD9001A57E23666F53 +:202140007C17D27421219C00095E235613722B731BEB362DCD9001A5E5CD9001A57E23666A +:202160006FCDFA02EBE173237221A100095E23561B722B7321010009360AC38C2121010089 +:20218000093610C38C2121010009360821A10009E57E23666FE5210100096E2600E521A5A2 +:2021A00000095E23561313722B731B1BEB7E23666FE5219C0009E5CDF31FD1D1D1D1AF67A9 +:2021C000CDFA0219EBE1732372C37522219C00095E235613722B731BD521A500095E235699 +:2021E0001313722B731B1BEB7E23666FEBE17321A100095E23561B722B73C37522219E00ED +:20220000096E7DB7C2102221A3000936C823360021A500095E23561313722B731B1BEB7E80 +:2022200023666FEB21020009732372CD9001026E7DB7CA7522CD9001A37CB5CA7522219CD4 +:2022400000095E235613722B731BD5210200095E235613722B731BEB6EEBE17321A30009E5 +:202260005E23561B722B7321A100095E23561B722B73C32B22CD90019C360021060009EB34 +:20228000219C0009732372219F00096E7DB7C2E32221A100095E23561B722B731321FFFF3F +:2022A000197C17DAE322CD9001ADE5CD9001AFE521A000096E7DB7CAC022213000C3C322A0 +:2022C000212000E521D122E5210600397E23666FE9D1D1D1237CB5C2E02221FFFFC3E023B0 +:2022E000C39122CD90019C6E7DB7CA2723CD9001ADE5CD9001AFE5219C00095E23561372B4 +:202300002B731BEB6E2600E5211523E5210600397E23666FE9D1D1D1237CB5C2242321FFB3 +:20232000FFC3E023C3E322219F00096E7DB7CA732321A100095E23561B722B731321FFFF46 +:20234000197C17DA7323CD9001ADE5CD9001AFE5212000E5216123E5210600397E23666FF9 +:20236000E9D1D1D1237CB5C2702321FFFFC3E023C33123C3A823210000C3E023CD9001ADDC +:20238000E5CD9001AFE560696E2600E5219923E5210600397E23666FE9D1D1D1237CB5C21A +:2023A000A82321FFFFC3E023C3D723CD9001ADE5CD9001AFE560696E2600E521C823E5217A +:2023C0000600397E23666FE9D1D1D1237CB5C2D72321FFFFC3E023C32E20210000C3E023FF +:2023E000EB21A70039F9EBC1C9C3EF23C3E923C521FFFF39F9444DCD900107E5CD90010987 +:20240000D1CDEC01D23D24CD9001055E235613722B731BD5CD90010711F6FF19DA2A24CD38 +:2024200090010711300019C33224CD90010711370019EBE1732101002600C38824CD900177 +:2024400009E5CD900107E5CD900109D1CD8902E5CD900105E5CDEC23D1D1D1EB606973CD44 +:20246000900109E5CD900107E5CD900109D1CD2902E5CD900105E5CDEC23D1D1D160696EB0 +:202480002600232600C38824EB21010039F9EBC1C9C521000039F9444D210400096E26003F +:2024A00011D0FF197C17CDAF01DABC24210400096E260011C6FF197C17CDA901C1C9C1C98A +:2024C000C3C624C39124C521FEFF39F9444D6069AF772377CD9001067E23666F6E2600E555 +:2024E000CDC324D17DB7CA1325CD900100110A00CD3F02E5CD9001065E235613722B731B3C +:20250000EB6ED1AF671911D0FF19EB6069732372C3D424CD900100C31A25EB21020039F952 +:20252000EBC1C9C32925C35D25C521000039F9444D210400096E2600E5CD2625D17CB5CA9C +:202540005025210400096E260011E0FF19C35725210400096E26002600C1C9C1C9C521001A +:202560000039F9444D210400096E2600119FFF197C17CDAF01DA8825210400096E260011A4 +:2025800085FF197C17CDA901C1C9C1C9CD37032A54067CB5C8C5444D2A5206EB2A5006CDEC +:2025A000DD02DABB253E023CEAAF25EDB0C1C97E1223130B78B1C2AF25C1C90B09EB09EB14 +:2025C000033E023CEACB25EDB8C1C97E122B1B0B78B1C2CB25C1C97CBAC07DBBC9CD37032F +:2025E000C52A01002B2B2B3A50064787805F160019E52A5206444D21FC25E3E96F2600C1A2 +:20260000C9CD0A03C50E02FE0AC215261E0DCD05000E023E0A5FCD05000E0BCD0500B7C253 +:202620002426C1C90E01CD0500FE03CA2001C1C9C33626C3E80DCD0A03E5CD3326E1C521EC +:202640007856E50E0BCD0500E1232323B7CA4226224806224A06C1C92A4806EB3E48A3CAE7 +:202660006626EA6626372A4A067C17677D176F224A067A17677B176F2248067CE67F67C9BE +:20268000170011037400230247001301710022036300320163003201360031023600310287 +:2026A000270031017200320233003300330033000F0022220F002222CE1DDF1DF01D011E96 +:2026C000121E231E341E451E561E671E781E891E9A1EAB1EBC1ECD1EDE1EEF1E001F111F00 +:2026E000221F331F441F551F661F771F881F991F0400110004001D000400050001000000B6 +:202700000000000000000000000000000000000000000100010000000000000000000000B7 +:20272000000000000000000000000100010000000000000000000000000000000000000097 +:20274000000001000100000000000000000000000000000000000000000001000100000075 +:20276000000000000000000000000000000000000000010001000000000000000000000057 +:20278000000000000000000000000100010000000000000000000000000000000000000037 +:2027A000000001000100000000000000000000000000000000000000000001000100000015 +:2027C0000000000000000000000000000000000000000100010000000000000000000000F7 +:2027E0000000000000000000000001000100000000000000000000000000000000000000D7 +:202800000000010001000000000000000000000000000000000000000000010001000000B4 +:20282000000000000000000000000000000000000000010001000000000000000000000096 +:20284000000000000000000000000100010000000000000000000000000000000000000076 +:20286000000001000100000000000000000000000000000000000000000001000100000054 +:20288000000000000000000000000000000000000000010001000000000000000000010035 +:2028A000010001000000000000000100010000000000000000000000010000000000000013 +:2028C0000000010001000100010001000100010001000100010001000100010000000000EB +:2028E000320000000000CFFF0000000000000000010001000000010000000000FFFF700067 +:10290000310028C33200CD006A00CD006A000E01FC +:00000001FF diff --git a/hex/type.hex b/hex/type.hex new file mode 100644 index 0000000..8a40c15 --- /dev/null +++ b/hex/type.hex @@ -0,0 +1,34 @@ +:020000040000FA +:20010000213601F9110000D5E9726F444F5320545950452046494C45205574696C69747942 +:20012000284329204952494D532C204D6F73636F772031393835CD59020E31116503CD051A +:20014000003D3D3260032180002263037E326203CDD202DA6E02FE20CA5001CDD202DAB7FC +:2001600001FE20C25B01CDD202DAB701FE20CA6601FE50CA9F01FE44C280013E01C39101EF +:20018000FE43C28A013E02C39101FE46C269023E03325F03CDD202DAB701FE20CA9401FE48 +:2001A00050C269023EFF325E03CDE902DAB7017DB7CAB7013260030E0F115C00CD0500FE03 +:2001C000FFCA6E022100012263033A6003326203CD2F03D8FE1AC83261035FCD84023A616E +:2001E00003FE0AC2D0013A5D03B7CA3602CDC502B7CAED01FE03CA7302FE20CAD001FE1004 +:20020000C21B020E31116903CD0500EEFF326F030E31116D03CD0500C3ED01FE0DC22C02A2 +:200220003EFF325E03AF325D03C3CA01AF325D03325E03C3D001CDC502B7CA45023EFF32EC +:200240005D03C3ED013A5E03B7CAD0013A62033D326203C2D001C33D020E0CCD0500FE2688 +:20026000DAD102FE30D2D102C91E00C375021E01C375021E02217103160019195E23560EA2 +:2002800009C305003A5F03B7CACC02FE01CAC7027BE67FFE20D2CC02FE0DCACC02FE0ACAFD +:2002A000CC02FE09CACC02FE0ECACC02FE0FCACC023A5F03FE03C8D51E5ECDCC02D17BF6F5 +:2002C000405FC3CC021EFF0E06C305000E02C30500763A6203B7C2DB023FC93D3262032AAC +:2002E0006303237E226303B7C90E0ACDD202210000D2F602B7C9FE20C8CD1103D8B93FD85C +:20030000545D6F260079CD2203E5CDD202E1C3F102DE30D8FE0ADA1E03DE07FE0AD8FE1053 +:200320003FC9B7C81FD2290319EB29EBC322032A63031100FF197CB5CC4503D82A63037E35 +:2003400023226303C91180000E1ACD0500115C000E14CD05001F218000226303C90000002C +:2003600000000000001C0000003800000038FF000077030E0418046F7B69626B61206B6FCF +:200380006D616E646E6F6A207374726F6B692E206973706F6C787A756A74650D0A54595087 +:2003A000452055464E205357495443482020200920696C690D0A545950452055464E205361 +:2003C00057495443482050200920696C690D0A545950452055464E205357495443482050E3 +:2003E000230D0A097320706572656B6C607E6174656C656D205357495443483A094E4F205C +:2004000020204420202043202020460D0A246E65742066616A6C61240D0A54595045207062 +:2004200072657277616E61241A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A38 +:200440001A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A5C +:200460001A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A3C +:20048000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5BC +:2004A000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E59C +:2004C000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E57C +:2004E000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E55C +:00000001FF diff --git a/hex/wm.hex b/hex/wm.hex new file mode 100644 index 0000000..c30ded3 --- /dev/null +++ b/hex/wm.hex @@ -0,0 +1,322 @@ +:020000040000FA +:20010000C36902C3600220434F5059524947485420284329203139373820204D4943524F4C +:2001200050524F20494E5445524E4154494F4E414C20434F52504F524154494F4E20202006 +:200140002020200D0A000D4D6963726F50726F20574F52444D41535445522072656C65619F +:20016000736520312E3037412073657269616C202320574D38383733554E2020200D0A00E5 +:200180003E1BCDEF013E36CDEF013E31CDEF01C90000000000003E1BCDEF013E35CDEF01DD +:2001A0003E2085CDEF013E2084CDEF01C900000000000000000000B82917400000000000FF +:2001C00000010101000000000000000000000000000000000000000000000000000000001C +:2001E000000000000000000000000000C34F02C39225210000228326C5D5E5CD80013AC1BD +:2002000001CD4F02E1D1C1C92A8F26AF32A126D5EB2A8326CD9F1FEBD1C8228326C5D5E510 +:20022000CD96013AC201CD4F02E1D1C1C34E23E52A832625CD0B02E1C9F53ABB01CD9B25BF +:200240003ABC01B7C49B253AC301CD4F02F1C93C3DC8F5CD4E23AF003DC25802F1C3500214 +:2002600031B6293EFFCD7402FF31B629AFCD7402CDD91F00324C2721000039226027114629 +:2002800001CD0E23110601CD0E232A0100113000197E23B7C29F027E3CCAB2022B7E23FE07 +:2002A00002C2AF027EFE64D2AF02FE01D2B2023EFFFEAF324B273ABD01B7C2C70221FDFFFC +:2002C000463EA977AE703C214927773A0300E603FE02D2D70236FFCD01192AB701EB21310C +:2002E000273E04732372233DC2E302AF1213EB2239272A3927223B27223D27223F272241C6 +:20030000271180260EB1AF12130DC20703325B00326800326B00327D002A06007DFE06CAA5 +:2003200026037CD607672B2243273AB801C60FBCDA4503CDE71F4E4F5420454E4F554748CD +:20034000204D454D007CB71F1F1F3C3CE63C47322B2707322E2778FE08D25E033E083230C2 +:20036000277CFE64210004222627DA6E03292228273E08322C27DA7A0387322D27215D0052 +:200380007E2BFE20C29703CDE71F4E4F2046494C45204E414D45007ECD52207711AB26D55E +:2003A000011000CD0C1F7EE1B7CAB003CD5220773A5C00BECABC033EFF321C277E11D126D6 +:2003C00012213B04010B0013CD0C1F3A1C27B7CAFD0311AB26CDF41FCAFD03CDE71F4649A8 +:2003E0004C4520455849535453204F4E2044455354494E4154494F4E2044534B00115C00DE +:20040000CDF41F3EFFCA0E04325B00C32104321D27CD06230A4E45572046494C450D0A0AAD +:200420000011B426D5CD061F11AB26CD2820D1214304CD091FCD4D1CC3B904574D424143C5 +:200440004B5550242424CD6804CD0520215C007E326C003AAB2677C3F202CD680411D12602 +:20046000CD28202A6027F9C9CD511D211D277EB7115C0021531FCC6D2011AB26216500C39B +:200480006D20CD9704C2B904CD052011AB26CD0820216C00C35304CD06230D0A41424F5247 +:2004A000542028592F4E293F2000CD3022CD4C06FE59C9CD9704CA63042A6027F921B904C3 +:2004C000E5CDFA23CD680621A8267EB7C2DE0435216C283600224D27CDF710CD68063E2A1D +:2004E000CDFC24CD3022224D277EB7C2F6043A6B28FE0ACA8D0747E523CDF122E1B7C21994 +:200500000578CD4C06FE48CA4604FE51CAB304FE4FCA8204FE45CA5A04CD4105C8CD06233C +:200520000D0A203F3F3F002A4D27EBCD0E23CDE324C3B904CD0912CDE324D1CD0E23C31D81 +:2005400005C5D5E5224F27CD6806213606E52A4F27CD0608CDF122224D27E5CD4906224F9F +:2005600027E1B7CA2706FE3ECA2706FE3BCA7C06FE11CA5419FE04CA2C06FE56CAF710CDD7 +:20058000B421CDF1222254272A5427CD4906225227224F27B7CA9007FE43CA2C07FE44CAB3 +:2005A0003207FE4BCA7807FE4CCA5407FE50CACD07FE54CA9A07E52A5827EB210200CD9F50 +:2005C0001FE1D2CA05FE42CA4707FE2FC2DD053EFF325E27CD4906224F27225227FE46CA00 +:2005E0003508FE4ECA3B08FE52CA4708FE53CA4108CD5506FE51CAAB06CD5F06C22706FE87 +:2006000041CAD408FE49CAD708FE5ACA0F08FE3CCA8906FE4DCA8906FE21CAF408FE57CA8F +:20062000201AFE59CADF19E1B7C3CC1F3A4C27B7CA2706C338003B3BCD6806CD2808C288D3 +:2006400005C34E057EB7C823C9CD4406FE61D8FE7BD0E6DFC9F53A5C27B7FA1D05F1C9C56D +:20066000473A5E27B778C1C9210002224527224727210000225E272D22A526C9224F27CD6A +:200680004406C8FE0DC8C37C06EBCD19072A5A27EBCD4105D8FE3ECA9E06B7C21D057AB365 +:2006A000C81B7AB3C8CDD623C39106CD4906224F27225227FE50CA5B0AFE58CADA06F5CDB4 +:2006C0001A08F1FE4CCA2E0AFE54CA3A0AFE4BCA470AFE47CA4E0AC31D05CD19072A4F271E +:2006E000E52A5427E52A5827E5CDB91E2A3327CD4105DAF806C20E07E1225827DC0608CDDA +:200700001A08C2E506E1225427E1224F27C9CD06232051583F00C3270521C4D639D8CD3490 +:2007200005535441434B204F56464C00CDA00DC3871ACDA00DFA3E07223F27C34107223D5E +:2007400027CD9B1DC38D1A3A5C272F21FFFF325C27225827CD040ECD871ACD2808C25407BB +:20076000C91101002A5827E5EBCD5107E1225827C93EFFFEAFC34E07CD040EC335072101B3 +:2007800000AF325C27AF321E27225827C9CD7E07CD5407210100AFCD8207CDE80DEBFAB36A +:2007A000072A3F27EBD2BB07CDBB073E7DCDFC24C3FC242A3D273E7BDCAD07CD0608CD9FEB +:2007C0001FC81ACDFC2413CDD623C3BE072A5827E52A5C27E5CD28082AB90126002BE5C4CF +:2007E0005107E1CD9607E1225C27E1225827CD1A08CDB51CC03A5C27B7213F27F2020821E9 +:200800003B27CDFB1EC0E5210000CD8107E1C92100A0E3E32B7CB5C21208E52A58277CB54D +:20082000CA24082B225827E1E52A58273A1E27B4B5E1C3D623CDB50CC34A08CD960CC34AE3 +:2008400008CDEB0CC34A08CDA80CD21A08CD5F06C25E08CD06232023232000C32705CD7040 +:2008600008CD0608E1B737C3CC1FCD1907CD70082A4F27CD4906224F27FE3CCA6A08FE4DD1 +:20088000CA6A08FE41CACE08FE46CACE08FE49CACE08FE4ECACE08FE52CACB08FE53CACBB3 +:2008A00008FE57CACE08FE59CACE08FE3BCC7C06CA7008FE51C2C308CD4906224F27FE4CA1 +:2008C000CACE08FE3EC8B7C8C37008CD1A09CD1A09C37008CD61072A52277EB7CACE0ACD23 +:2008E0001309CD1B0C3A6227B71143013E02CC230CC31A083A5827F5CD0608F1E67FCDACA1 +:200900000BFE1AC0CD0623205455524B4559200D0A00C9E52A5227C31E09E52A4F27C5F549 +:20092000116327D50EFFCD4406FE0EC23B093E0D0C13123E0A0C1312C32609FE19C2450903 +:200940003E1BC33509CD5B09C22609326227224F27AF12D1791213F1C1E1C90C1312FE1AF3 +:20096000C8FE1BC8B7C9C5D5E5D5AF0E1012130DC26D09D1D52A4F27CDF1223A4B27B7C278 +:200980009A09D5224F27019F01114F27CD05002A4F27D1FAAC0912C3AC09237E2BFE3AC2DD +:2009A000AC09CD120ACAAC09D6401223130E08CDF409FE2EF5E521F009C4091FE1F10E03ED +:2009C000CCF309D1131A1BFE20CADB09CDF122CD4406224F27CD5E09CACC1FCD3405494E55 +:2009E00056414C49442046494C45204E414D45004C494223CD120ACA070A12130DC2F40957 +:200A0000CD120AC2000AC9F53E2012130DC2080AF1C97ECD1D0AC823CD4C06B7C9FE2EC855 +:200A2000FE3AC8FE2AC8FE3FC8FE20D0BFC9CD430ACD1309213527C31E0C213327CD911FE6 +:200A4000C3BE07CD5F06C02A3327223527C9213327CDFB1ECD951FEBC3290CCD430A21351C +:200A600027CD680CCD040EEB2A3F27EBCD851F213527CD820ACDB91ECD8D1ACD2808C25E4D +:200A80000AC9CD8D0CC8CD680CCDA10AEB2A3F27EBCD3F0CEB223F27EBCD9B1D05C2860AE4 +:200AA000C9C5D5E5213327CDFB1E2A3127EB2A4327CD7C1FCD711F0911800DCD9F1FDACCEF +:200AC0001FCD3405514255462046554C4C00CD0608CD650CCDBE18F5DC850BF1DAD40ACDDD +:200AE000F024CDD623FE1AC8FE1BC821D40AE5FE1FCAF90AFE7FC2060BCD140CCDFC242241 +:200B00003D27CD9B1DC9FE20D2AC0BFE19C2120B3E1BFE05CAE324FE15CA210BFE18C23048 +:200B20000BCDE324CD140CFE0AC8223D27C3240BFE08C2490B3A8426B7C8CD140CFE0AC865 +:200B4000FE0DC8CDB90BC3FF0AFE1CC27D0B3A8426B7C8CD140CFE0DC8FE0AC8F5CD430BFE +:200B6000F1FE09CA4E0BFE20CA4E0B3A8426B7C8CD140CCDD70ED0CD430BC36B0BFE12C221 +:200B80009D0BCDE3242A3D272BCDEB0BDA950B7EFE0AC2880B23EB2A3D27C3BE07FE0DC217 +:200BA000AC0B3E0DCDAC0B3E0ACDFC24F5CD550CCD951FF17723C3FF0AFE09C2D60BEB2AC0 +:200BC000A72546EB04C805C8CDE00B05C2C80BEB2B22A725EBC9FE1BCAE00BFE20DCE00BC2 +:200BE000CD2F023E20CD6725C32F02EB2A3B27CD9F1FEBD0EB2A3D27CD7B1FE5CDC11C2AF6 +:200C00003D27D1F519F1C92A3D272BD5CDEB0BD1D87EB7C9CD070CD03333C9213D27116307 +:200C2000271A134F0600C32C0C213D27CD921DCD8D0CC8CD680CCD3F0C05C2330CB7C9E51D +:200C4000CD951F1AE67F7713230DC2430CEBE37323722BD1C9D52A3D27EB2A3F27CD9F1FC5 +:200C6000D1213D27D8213D27C5D5E5CDFB1E78B7C2CC1FCD951E7AB7C24C1ECD9E1AD26BE1 +:200C80000CCD34054D454D2046554C4C00CD561F040C0DC005C9CDBD0CD0CD871AD2960CDB +:200CA0003A5C27CD4B0737C9CDF30CD0CD871AD2A80CC3A00CCDBD0CD0CDAE1AD8CD13099D +:200CC0003A5C27B7FAD80C213F27CD240D2A3F27D8CD510DD8C3E50E213B27CD240D2A3D34 +:200CE00027D8CD390DCD790DC3D40CCDF30CD0CDAE1AD8CDBD0C3A6327CD1A09D8473A5CE4 +:200D000027B778FA120D2A3D27CD3C0D223D27C31B0C2A3F27CD4A0D223F27CD1B0CCD361D +:200D20000DC3E50ECDFB1E031B1A13C5477990C14F78DE0047C92A3D273A6327E5677D9485 +:200D4000E16F7CDE0067C93A6327856F7CCE0067C91AB7C8D5CD7F0EDA770D050DE5131A3D +:200D6000B7CA760DBE23CA5E0D2BCDAB0E23CA5E0DE1D1C3510DD1D1C91AB7C823D51ACD9A +:200D8000960EDA770D050DE513231AB7CA990DBECA880DCDAB0ECA880DE1D1B7C27D0DC963 +:200DA000C5D50100002A5827EB3A5C27B7FAC70D2A3F2719D2BD0D23444D21FFFFEB2A4154 +:200DC00027CDBD1FC3DF0D2A3D27CD7C1FDAD80DCD671F444D210000EB2A3B27CDAB1F09C3 +:200DE000C34C0E3EFFCD8207D52A5827E5CD040ED1D2530CF5CDAE1AD2FE0DF1D1C9F1EB31 +:200E0000225827D1C5D52A5827EB215C277AB3C2130E357EB7FA2F0ECDF81ECD951FCD7D2F +:200E20000EDA4B0E050D1B7AB3C21E0EC34B0E13213B27CDFB1E2A3D27CD4E23CD940EDA7C +:200E4000760E050D1B7AB3C2390E23EBAF321E27CDB51CC25C0E210000221E27225827EB99 +:200E60002256273A5C27B7E521FFFF19DACC1F2A1D2729C3CC1F1BEB3EFFC34D0E3E0A048B +:200E80000CC38A0EBEC4AB0E23C80DC2840E05C2840E37C93E0A040CC3A10E2BBEC4AB0EDB +:200EA000C80DC29B0E05C29B0E37C9FE13CAC70ED0FE01C8FE0FC0131A1BB7CAC50EBE3ED6 +:200EC0000FCAD00E13BFC97ECDD70E3E13D2C50EB7C9CDFA2237C8CD2922D8CD4C06FE41E4 +:200EE0003FD0FE5BC9C5D5E5EB2A3B27CD9F1FDC1D0F2A412723CD9F1FD41D0F2A3D272347 +:200F0000CD9F1FD20D0FEB113B27C3281E2A3F27CD9F1FDC1D0FEB113F27C3051ECD340580 +:200F20005055544355522045525200CDE318CD60162BA63600C2640F219E267E3600B7F539 +:200F4000C4F016F1C2570F2185267EB7F2540FAF77329B26CD74163A93262A952622932635 +:200F6000BDC458133A9B26B7C2A40FCD0215CDF2012A8526CDEA173E7BDCAD07110000CDF0 +:200F80005D10E6C0C25510CDFA17CA990FFE0AC2930F13CDFC24C37F0FEB2285263EFF32E3 +:200FA0009B261E003A9C26B7C239102A9126CD0B02CD6E18CD5D10E6E8C25510CD7F18DA19 +:200FC000D00FFE0ACAD40FCD2124CD4E23C3BC0FCD1F243A2B033A9D26B7C23910CD5D102E +:200FE000E6E8C25510D5EB2A8926CD9F1FEBD1D20610CD5D10E6D4C25510CD7F18DA0610C5 +:20100000CD2124C3E50F2A8326E5CD1F243A8326219726BECA1A10D23510218026BED23529 +:2010200010CD5D10E680E1C25510E53E0ACDFC241EFFC30A10E122972621FFFF229C261E03 +:2010400000CD080221A3267EB7C82336FF3E3CCD6725C308023E0ACDFC24C30802C5D5E559 +:20106000CD4E230106002AB725EB1B0DCA8410131A3CC27A1011B9251A3C3DCA8410CDBB97 +:2010800010C36B103AA226FE02DA92103A9F26CDBB103AA326F6F3A0473A8F26B778CAA38F +:2010A00010E6BF471F78D2B8103A8F26C604218026BE78DAB810E6C3C3CC1FFE7FC2C51040 +:2010C0003E20B047C9FE20DACC103E2021D610CD4A0D7EB047C900400080008000200008EF +:2010E00001400105302000008000000000000030018020000020082100FF22A526AF32A250 +:20110000263AB901D6023280261FB71F328526CD2514CD070CDA2511FE0DC22511CD7C18D9 +:20112000FE0ACC1612CD2B0FAF325F273A9F2621A026BEC238113EFF77212511E521A226BD +:2011400035CA4711F275113601CDB418329F26FE00C2751121A2267EF53600CD640FF121CF +:20116000A2263604FE04C26B113610FE10C272113640C3491121A4267E3600B7CAA811CD5B +:201180007C18DAA011FE0DCAA011FE09CAA011FE7FC296113E7EFE20D29D113E5EC3A211D6 +:2011A0003E20CD6725CD0802CD4E233A9F26FE08CA4814FE20D23A15F58721C511CD4A0D62 +:2011C000CD951FF1E945136D1289122C14161203133F12EC142A123A155419DD141612ABB7 +:2011E0001594150B151A15B61214142A127614BF1445130914C112CE147C13051260141AFB +:201200001546134814E1CD060821A6267EB7C8342A8026C30B02CD7413CD7518CD4C16F5B8 +:20122000CDE50EF1FE0DC0C31612CD140CCD5616CDE50ECD070CFE0DC0CD5813C32A12CDB2 +:201240007413CD6E18CD7F18DAE50ECDD70EDA4512CD4C16CD7F18DAE50ECD4C16CDFA2228 +:20126000CA54122BC3E50ECD5616CDE50ECD5813CD140CCDFA22CA6712CD5616CDE50ECD4D +:20128000140CCDD70EDA7C12C9CDF315CAAC12AF3290262A8326E5210000228326CD1618B8 +:2012A0002A5627CDE50E3A8326C32E1316003EF0329026C3F71216003A9026F6073CC3B036 +:2012C00012CDEC15F5218F268621802696DAF5123C218526BED2F5127E3DFAF512CD601601 +:2012E000CAF51221A2263601CD7C13CD2817CD0802F1C3C412F1572A8326E52E00CD7413B2 +:20130000C33213CDEC15CD58132A8326E5210000228326F56FCD16182A5627CDE50EF1471D +:20132000218526CDFC133A832690F22E13AF57210000228326CD6E18CDFE15CD1216CDE593 +:201340000EE1228326C9CDF315CA62132A8526CD7107210000228526F53A9C26B7CC001565 +:20136000F1C9D52A87262BE5CD7407D12A852619228526D13A9C26B7C0C325143AA226FEE3 +:2013800011D20114CD6016CA01143A85263DF2A213CD75183E01CDF612CD2817DC2514C318 +:2013A0008A13CD6916AF3282262A9726CD0B023A8326218D2686572A8B26CDA318CD7F189F +:2013C000DAEA13CDFC243A8326E521822686E1BADABD13CD7F18DAEA13CD6C24DAEA13FE80 +:2013E0000ACAEA13CDFC24C3D3132A8326229726CDD416CD59163A8D262193262F3C8677B2 +:20140000C9CDEC152F3CC30C14CDEC152185268677C33F14CD140C2A852623CD71072A8066 +:20142000262B228526F5AF329B26F1C9AF32A726CD75182A8526EB2A872619AFCD4E07CDE7 +:2014400025143EFF329E26C9CD140CCDFF0ACDC514CD5616CD070CFE0DCA4814C9CD4B14AF +:20146000CD140CCDFA22CA5D14CD4B14CD140CCDD70EDA6914C9CD7518CDFA22C28E14CDFC +:20148000EF14CD7518CDFA22CA7F14C3B214CDB214CD070CDA9B14CDFA22C0CD7518FE2003 +:2014A000CAA614FE09C0CDEF14C39B14CDEF14CD7518CDD70EDAAC14CDD20ED4EF14C9CD0F +:2014C0000608CD78071EFFF5AF329C26F1C9CDBF14CD0015CD7E07D5CD7807D1C9CD75185A +:2014E000FE0DC8FE0AC8CDEF14C3DD14CD7518CDC514223F27CD9B1DFE0DCAEC14FE0AC01B +:201500001EFFE5210000229C26E1C921A3267E2F77E521FFFF229926E1C9CD640FCDB418A4 +:20152000FE1AC23015CD0409CD0F08CDC5143E1AFE0DCAAB15FE0ACC2514F52A9126CD0B80 +:2015400002F1D51E00CD2124D1CDAC0B57CD7C18DA7915FE0DCA7915473AA326B778C2C7B9 +:2015600014BACA7315FE20DAEF147AFE20DCC714DAF214CDF214C383153A8326218F26BE7C +:20158000C2C714E5CD56182291262A8326228F26E1C31115CDEC15F5CDE2152A3D272B2BD6 +:2015A000CDE50EF13DC29715C30015CD4F163AA326B7CACB15CD7C18DAC215FE0DCAC215A3 +:2015C0001EFFCD1F24CDA20BC3C514CD7413CD6E18CD7F18DADF15FE0AC2D115C3E50ECDBC +:2015E000E50E3E0DCDAC0B3E0AC3AC0B21A2267E3600C921A026BEC9CD9A24CD4C163A831C +:2016000026BAD0CD7F18D8CD5D18D2F8152B03C3FE153A90263C573A8426BAD0CD7F18D88C +:20162000CD6C24DA4916FE0ACA4916FE0DCA4916CD6C24DA4716CD9A243A8426BAD24916C1 +:20164000CD7F18D8C326162B032B03C9FE0AC0E521852634E1C9FE0AC0E521852635E1C97B +:20166000219D267E2BA62BA6C93A9926B7C8C37416CD2514CD2817D22217CD5916F2A916CE +:20168000CD340546494C45204C494E45204C4F4E474552205448414E20454E5449524520A3 +:2016A0005343524E203F3F3F003A9B26218D26A6CA71163A8F2621802696DAC716C2711605 +:2016C0003A9026B7C27116CDD016CD0215C37416AF3282263E0ACDFC243A8226B7CAE81617 +:2016E00021972635F2E81634218D26BEDAD416C92185267EB7F20D17E5CD7C18E1D2051768 +:201700003600C30D17AF96CDF612C3F016CD2817D22217F53A8526B7CA8016F1CD0613C327 +:201720000D172199263600C9C5D5E52A8326E5AF328D263A85263DCD01183CDA8517210000 +:20174000002287262283262A8526CD16182291267A328D262A8326228F262A5627EB2A3D44 +:2017600027CD7C1F24224527CD8C17EB2A8326229526EBCD9E17228926CD9918228B263A54 +:201780009526CD0118E1228326C3CC1FCD6E18CD7F18D8FE0ACA4916CD9A24C38F17CD07C6 +:2017A00018DAC917CD7F18D8FE0ACCE317FE20DAC317E5218426343ABA013DBEE1D29E173F +:2017C0002B7E23CD9A24C39E17CD7F18D8CD6C24DA4916FE0ACADE17CD9A24C3C9172B0345 +:2017E000FE0AC0E521872634E1C9D5CDE30DF5EB2A3D27CD851FEBF1D1C978B1C87E230B0C +:20180000C93D328326B7F83A83263C3C573A802692D02F3C37C9CDEA173E7BDC97241600A5 +:20182000CDFA17CA5618CD9A24FE0AC220183A83265778B1CA56187E230BFE20DA5018E579 +:20184000218426343ABA013DBEE1D232182B7E23CD9A24C33218CD7C182A8326D8CD6C24CF +:20186000D0E52A83262C2602228326E137C9CDF81ECD951FC9CD7C18D03333C9CD6E187888 +:20188000B1C29518CD9918E5CD0B1CE1F5CD4E23CDA318F1D87E0B23C9D5EB2A3F27CD7B5F +:2018A0001FD1C9D5EBCDF81ECD951F1979934F789A47D1C9CDBE18D0CD2B0FC3B418C5D541 +:2018C000E53A4927B7C2DD18CDE318DACC1F16C915CAC118CD4E23CAD018CDE318D4222316 +:2018E000C3CC1F3A4927B7C03AFFF7214A27BEC83A4927B7C0CD2514CDF20121A92522A732 +:20190000253A4927B7C03AFFF7F51FF53E50D213193E2832BA01F11F3E18D21F193E0C327D +:20192000B901D6023280263E1532BB01F1324A2737C900574D202020202020484C50000020 +:201940000000000000000000000000000000000000000000CDF201CD251421321911F82626 +:20196000012100CD0C1F11F826CDF41FC2A2193E0132F82611F826CDF41FC2A219CD3405A0 +:20198000574D2E484C50204E4F5420464F554E44204F4E2044454641554C54204F522041E0 +:2019A0003A0011F82621E927CDA920DADE1911F82621E927CD8F1C21E927F57E23FE11CAAE +:2019C000CD19CDFC24F13DC2BA19C3A219CDB418FE0AC2DD19E5CDF201E1C3C519F1C911A8 +:2019E000F826CD6609CDF41FC2FD19CD340546494C45204E4F5420464F554E4400CDD6233C +:201A000011F82621E927CDA920DA1D1ACD8F1CF506004F11E927CD290CF1DAFD19C31A0814 +:201A2000CD2808CA1D0511F626AF121313CD6609110000213F27CDBC1ECD951FCD7C1FEB5A +:201A4000CD040E2A5627EBE501810009CD9F1F2BE3DA5E1A11F826CD1A21D1C3431ACD7B4A +:201A60001FC1EBCD2808CA741AE52A5627CD871AE1D2331A7BCDEB1B11F826CD3221CD0FD3 +:201A8000202A5627C3E50ECDD623CDE50ECD2808C8CDD6233A5C27B7FAC11CC34D1C3A5CAB +:201AA00027B737FC5E1BD0CDDD1AD0C35E1BCDBE1AD8CD911AD8CDBE1AD4911AB7C9C5D5F1 +:201AC000E53A5C27B7113B27FACE1A113F272A2F27EBCDFB1E6069CD9F1FC3CC1FC5D5E50F +:201AE000CD0C1BDACC1F215F273446212E27AF8605C2EF1A3DF6074F3A2D273D47CD0C1B02 +:201B000005CA081B0DC2FD1AB7C3CC1F2A3B27CD731DD8E52ACD26EB2A2027CD9F1FE111EC +:201B2000AB26D22B1BCD3521C3381BCD2F21EB2A202723222027EB0411800019223B27C998 +:201B4000C5D5E5218100224527214327CD491E2A4127CDE50ECD0C1BD2551BC3CC1FC5D547 +:201B6000E5CD7E1BDACC1F3A2D274705874F0DCD7E1B05CA7A1B0DC26F1BB7C3CC1F2A41A5 +:201B800027CDAA1CC2961B3AF52657CD3C0DE57ACDEB1BC39B1B1180FF19E5E3CD831DE3EA +:201BA000D2A51BE1C9E52A2227EBCDE31DCD9F1FE1D2BD1B115C00CD3C21C3E21BE52A2439 +:201BC00027EBCDE31DCD9F1FE111D126D2D51BCD3521C3E21BCD2F21E52A24272B222427FE +:201BE000E104CDAA1CB7E1224127C9C5D511E927D5470E82042B1B7E1223130D05C2F71B25 +:201C00003E1A12130DC2001CC3CC1FCDAA1CC8C5D5E5CD951E218000CD9F1FEB2A2827D2F2 +:201C2000291CCDDD1ADA1A1DEBEB214327CD0D1DC35C1CC5D5E5214327110078CD3D1DCD70 +:201C4000AA1CCA731C79B7C25C1CC3CC1FC5D5E5CDAA1CCA731C214327CDF31C2A4127CD1C +:201C6000761CD48F1CDA6B1C32F5262241270DC25F1CB7C3CC1FCDD62311D0261A13B73784 +:201C8000C4B020D0115B001A13B737C4A920C906807EE67F77FE1ACAA31C2305C2911C37B4 +:201CA0003E80C9CDC5203E8090C9E53A5B0021D026B637E1C93A5C27B73AAA26F4AA1CB7BD +:201CC000C9C5D5E53AAA26B737CAF01C115E1B213B27CDF61C2A3B27CDD6231180FF1911F6 +:201CE000AB26CDB020DAEF1C223B270DC2D81CB7C3CC1F11DD1AE52A2827D5CD951ECD9FBE +:201D00001FE1DCC4112A2627292424EBE1CD3D1DFE08DA181DD6044FB7C0CD34054D454D9D +:201D20002053484F52544147452C2054525920434C454152494E47205142554600CD491EF4 +:201D4000D5CD951EE1CDBD1FEB29DA4A1DEB7A4AC9CD331CCD401BCD331CD2541D213B27B1 +:201D6000CDFB1ECD951F79CDEB1B11AB26CD2F21C30F20E52A4527EB2A3D27CD7C1FEBE197 +:201D8000C39F1FE52A4727EB2A3F2719D1CD9F1FEBC9D5113D27CD9F1FD1C0C5D5E5F521A6 +:201DA0003B27CDF41D2ACD2619EB2A2027CD9F1FEBD2B71D222027213F27CDF41DCDE31D9A +:201DC000CD7C1FEB2A2227CD9F1FEBDAD11D222227EB2A2427CD9F1FEBDADF1D222427F18A +:201DE000C3CC1FD52AF326EB2A7E00CD7C1F11FF7F19D1C9CDFB1E6069295C1600D2011EA5 +:201E000014C9C5D5E5EBE5CD951FEBCD851FE1E5CD8F1FCD0C1FE32B2B73237223D17323B5 +:201E200072B7C3CC1FC5D5E5EB2323E5CD951FCD851FE323235E2356E3CD2E1FE3722B7354 +:201E4000D12B722B73B7C3CC1FC5D5E5EB213327CD9F1FDC861E214427CD9F1FD4861E2171 +:201E6000332723CD9F1F2BDA731ECDBC1ECDAC1EC3621E214127CD9F1FD2CC1FCDD81E2B84 +:201E80002B2B2BC3761ECDE71F505554484F4C452045525200C5E5110000213127CDFB1E53 +:201EA000EB09EBCDAC1ED29D1EE1C1C9D523232323114227CD9F1FD1C9213727C5D5E5CDE9 +:201EC000FB1ECD8F1FE37323722BE3CD0C1FE1E52323732372C3CC1FC5D5E5E52B2BCDFB39 +:201EE0001EE1E5CD911FEBE323722B73E3CD2E1FE12B722B73C3CC1F213F27D5E5CD911FFB +:201F0000CD851FE1D1C921531F010300CD561FCD9F1FC21C1F09EB09010000C9040CC325B5 +:201F20001F7E1223130DC2211F05C2211FC9CD561FCD9F1FC2411FCD711F09EB0901000093 +:201F4000C9040CC34A1F2B1B7E120DC2461F05C2461FC942414B78F6173CC0CD3405434F96 +:201F600050592045525200F5AF956F3E009C67F1C9F5AF914F3E009847F1C9EBD5EBCD67D2 +:201F80001FEB19D1C9E5CD7C1F444DE178B1C92B2B5E2356237E23666FC92B2BC3951FC5B2 +:201FA000477A94C2A81F7B9578C1C9CD9F1FDAB61F210000B7C9E5CD7C1FD137C9CD9F1FAD +:201FC000CAB11FDAB11FEBCD7C1F37C9E1D1C1C9D5118000CDD91F1AD1E3C54E23D5E5CD78 +:201FE0000500E1D1C1E3C9CDE324D1CD0E23CDE324C36304CDD01F0F3CE52123001936009D +:202000002B3600E1C911D1261B1B1A1313B7C8CDD01F103CC0CDE71F434C4F5345204552F0 +:20202000520011D126CD0820CDD01F131BCDC52013C3C520CD2820CDF91FCDD01F163CC032 +:20204000CDE71F4449524543544F52592046554C4C00D55F3A4B27B77BC26220CDD91F1E6C +:20206000D1C9D1B7C26C20CDD91F193CC9C5D5E5D521100019011000EBCD0C1F3600D12153 +:20208000190019EBE1E5CD091FE1D1C1CDD01F173CC03A4B27B7C0CDE71F52454E414D4578 +:2020A000204641494C55524500CDB420D43521C9CD3C21D8CD4E23AFCD6721DAC520CDD9BB +:2020C0001F14B73DC01BAF121337C9E5626B2B2B7EB7CC342036FFE1CD0A21C0F5E521D133 +:2020E00026CD9F1FE1CAF7203AD026B7D5CC2220D1F1CD0A21C0F5F1FE02C24020CD34051B +:202100004449534B2046554C4C00CD6521CDD91F15FE01C8FEFFC8FE02C9C5E5D5018000BF +:2021200011E927D5CD0C1FE1D1CD3221E1C1C9CDD623CDCB20C5010100C34021C501FFFF47 +:20214000D5E51B3EFF1221230019E5CD951F097CA53CCA5E21EBE1732372B7C3CC1FAF12EF +:2021600037E1C3CC1F3EFFC547E521220019CD951F7DE67F4F297C210C0019BECAA021E544 +:20218000F5212100197EB7C40F203600F1E177CDD01F0F3CC2A02178B737CAA921CD3A209D +:2021A0002120001971237EB077E1F5EBCDD91F1AEBF1C1C9115C27AF12CDF12223FE2BCA3B +:2021C000B921FE2DC2CD213EFF12C3B9212B11FFFFEB225A27EBCDF122FE2323CA0F222B61 +:2021E000CD2922110100D20F221B7ECD2922D20A2223E5626B19291929DA1522D6305F161E +:202200000019DA1522EBE1C3EA21EB225A27EBEB225827EBC9CD34054E554D4245522054FE +:202220004F4F204C4152474500FE303FD0FE3AC9C5D521A5267EF5AF77216C28E54F79FEB8 +:202240007FD2DA22D1D5CDBE18F5DCBE07F1DA3E22CDF024FE0DCADF22FE0ACAD522E521A1 +:202260003E22E3FE1FCA6D22FE7FC27422CDCD22C8C3FC24FE18CA7E22FE15C28322EB0E76 +:20228000003E05FE05CAE324FE08C29422CDCD22C8C3B90BFE1CC2B922CDCD22C847CDB996 +:2022A0000B78CDFA22CA9922CDCD22C847CDD70ED2CA22CDB90BC3A822FE12C2C422CDE36C +:2022C00024C3BE07FE03CAB30477230CC979B7C80D3C2B7EC9060DC3E1223E0DCDFC240697 +:2022E0000A326B28360078CDFC24E1F132A526D1C17ECDFA22C023C3F122FE09C8FE20C83E +:20230000FE0AC8FE0DC9E3F5CD1823F1E3C9F5EBE5CD1823E1EBF1C97EB7C8CDFC2423C379 +:202320001823E52AB7257EB7CA4023F53600237E3CC2372321B92522B725CD4E23F1E1C91B +:20234000E1CDB423E67FCD9C23CA4123B7C9E5CDC023CA95232AB5257EB7C28323CDB423FD +:20236000E67FC49C23CA4F2377237E3CC2722321B92522B5257EB7C28323CDC023C255230C +:20238000C391233E21CDFC243E07CD9B25AF329B26E1F601C92AB7257EB7E1C9FE16C0CDDF +:2023A000B423F5CD9B25F1FE1BC2B223CDB423CD9B25AFC93E06CDC723FE03C032A726C9F6 +:2023C0003E03CDC723B7C9C5D5E521CC1FE52A0100CD4A0D79E9F53AA526B7C2E323CD4ED0 +:2023E00023F1C9CDFA23C2EB23F1C9CD3405494E54455252555054454400CD4E23E521A745 +:20240000267E3600B7E1C8C5E521B92522B52522B7250E64AF77230DC215240DE1C1C93E66 +:202420000DFE0DCC3024CD6524D0CD3024C3FC24F51CCA3F241D0000001CFE09C262243A3A +:20244000A126FE0DCA6224CD4E233ABB01B7C43902C262243E20CD6524DA6224CD4E23C313 +:2024600054241DF1C9CD6C24D8C3FC24FE0DC8FE0AC8C5473A84264F78FE09C2832479F6BC +:20248000074F2FFE20D28E24FE1BCA8E240C0C3ABA010CB978C1C9CD9A24E5F5218426FE7E +:2024A00020DAB724343ABA01BECAAF24D2D12436022B34F1C39B24FE1BCAA424FE0ACACFA6 +:2024C00024FE0DCAD424FE09CADC2434C3A4242B34F1E1C9CD4E233600F1E1C97EF6077780 +:2024E000C3A424F53E0DCDFC243E0ACDFC24F1C9FE08C8FE7FC8FE1FC8FE1CC8F5E5FE1B68 +:20250000C205253E24FE7FC20C253E7EF5CD6C24D21B25CD06230D0A3E3E002AA725FE0D53 +:20252000C2292521A925C35B25FE09C24825237E3CC235252B36003E20CD6725343A8426FA +:20254000E607C23725C35B25FE20D25B25FE0ACA5B253E5ECD6725F1C640F522A725F1E1CA +:20256000FE09C46725F1C9F5CD9B25F1F5E5CD7425E1F1C9218426FE0ACA8625FE0DC28463 +:20258000253600C934C92B343AB9013DBED0352B34C9F5AF32A126F1C39E2532A126C54F7E +:2025A0003E09CDC723C1C9A925FF00000000000000000000FFB925B925000000000000000B +:2025C0000000000000000000000000000000000000000000000000000000000000000000FB +:2025E0000000000000000000000000000000000000000000000000000000000000000000DB +:202600000000000000000000000000000000000000000000000000000000000000FF0000BB +:2026200000000000000000000000000000000000000000000000000000000000000000009A +:2026400000000000000000000000000000000000000000000000000000000000000000007A +:2026600000000000000000000000000000000000000000000000000000000000000000005A +:20268000000000020000000000000000000000000000000000000000000000000000000038 +:2026A000000A00000000000000000000000000000000000000000000000000000000000010 +:2026C0000000000000000000000000000000000000000000000000000000000000000000FA +:2026E0000000000000000000000000000000000000000000000000000000000000000000DA +:202700000000000000000000000000000000000000000000000000000000000000000000B9 +:202720000000000000000004000800180810300018B829B829B829B829B929B929B929B932 +:2027400029B92905BA0A3E0132FF37FF000AAF32AB37C3F30AAF32A937C3F30A3E0132A9D7 +:20276000B429F30A3EFF32AA37C3F30AAF32AA37C3F30A3E0132AA37C3F30A3E01326937CA +:20278000C3F30AAF326937C3F30A3EFF327037CD5825AF3270377AB7C274043A7638FE20DF +:2027A000C07B3DF8CA7404FE10D274043C326F37AF676BC35D19CD58257AB7C274043A6AE8 +:2027C00037B7C87BB7CAD927FE0ADC74043A7638FE20C2D9277B32AD37CD7717CD1A04C389 +:2027E0009918CD080BC27404F53A6238FE08DAF627CDA4043E07215D38773A6A37B722BAF3 +:20280000370E03C4D019F1FE2CCAE227C93AA837B7C29804CD7B0B2AC1372BCDA247B7CA07 +:202820002828CD6548C3B6043D32A8372AC1377E2322C137FE21D22C28C9CD7B0BFE28C2DD +:202840007404CDDC0AFE27C27404CD080BC27404FE27C27404CDDC0AFE29C27404CDF30A97 +:202860003A6A37B7C03A6238FE06DA6F283E06116338213839477EB7C28C041A77231305A1 +:20288000C27B2870C9CDCB28CD7B0BFE2FC27404CD080BC4C328FE2FC27404CDF30ACDA8EB +:2028A0000C237EE6D0C28C04E57EF62477CDEE23E12B2255383E03324C38210000224D3817 +:2028C000C36D23F53E01326238F1C93A5E38B7C8C1C39E04CD080BC2F628F5B7CDA80CCDBC +:2028E0000529237EE664C2FC287EE603F68077F1FE2CCAD428C9CD7404C3F028F61077CD71 +:00000001FF diff --git a/main.go b/main.go index 513adde..59548ed 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,8 @@ import ( "math" "okemu/config" "okemu/debug" - "okemu/debug/listener" + "okemu/debug/dzrp" + //"okemu/debug/listener" "okemu/logger" "okemu/okean240" "okemu/z80/dis" @@ -30,11 +31,11 @@ var BuildTime = "2026-03-01" ////go:embed hex/m80.hex //var serialBytes []byte -//go:embed bin/2048.com -var ramBytes1 []byte +//go:embed bin/PIP.COM +var ramBytes []byte -//go:embed bin/JACK.COM -var ramBytes2 []byte +////go:embed bin/LINK.COM +//var ramBytes2 []byte var needReset = false @@ -81,16 +82,19 @@ func main() { computer.AutoLoadFloppy() - disasm := dis.NewDisassembler(computer) + disassm := dis.NewDisassembler(computer) w, raster, label := mainWindow(computer, conf) - go emulator(ctx, computer) + dezog := dzrp.NewDZRP(conf, debugger, disassm, computer) + + go emulator(ctx, computer, dezog) go timerClock(ctx, computer) go screen(ctx, computer, raster, label) if conf.Debugger.Enabled { - go listener.SetupTcpHandler(conf, debugger, disasm, computer) + //go listener.SetupTcpHandler(conf, debugger, disassm, computer) + go dezog.SetupTcpHandler() } (*w).ShowAndRun() @@ -124,7 +128,7 @@ func screen(ctx context.Context, computer *okean240.ComputerType, raster *canvas timerFreq = math.Round(float64(timerTicks.Load()-preTim)/period) / 1000.0 label.SetText(formatLabel(computer, cpuFreq, timerFreq)) - adjustTimers(cpuFreq, timerFreq) + adjustPeriods(cpuFreq, timerFreq) //log.Debugf("Cpu clk period: %d, Timer clock period: %d, period: %1.3f", cpuClkPeriod.Load(), timerClkPeriod.Load(), period) //pre = computer.Cycles() @@ -140,22 +144,21 @@ func screen(ctx context.Context, computer *okean240.ComputerType, raster *canvas } } -func adjustTimers(cpuFreq float64, timerFreq float64) { - // adjust cpu clock - if cpuFreq > 2.55 && cpuClkPeriod.Load() < defaultCpuClkPeriod+defaultCpuClkPeriod/2 { - cpuClkPeriod.Add(1) - // cpuTicker.Reset(time.Duration(cpuClkPeriod.Load())) - } else if cpuFreq < 2.45 && cpuClkPeriod.Load() > 3 { - cpuClkPeriod.Add(-2) - // cpuTicker.Reset(time.Duration(cpuClkPeriod.Load())) +// adjustPeriods Adjust periods for CPU and Timer clock frequencies +func adjustPeriods(cpuFreq float64, timerFreq float64) { + // adjust cpu clock if not full speed + if !fullSpeed.Load() { + if cpuFreq > okean240.CPUFrequencyHi && cpuClkPeriod.Load() < defaultCpuClkPeriod+defaultCpuClkPeriod/2 { + cpuClkPeriod.Add(1) + } else if cpuFreq < okean240.CPUFrequencyLow && cpuClkPeriod.Load() > 3 { + cpuClkPeriod.Add(-1) + } } // adjust timerClock clock - if timerFreq > 1.53 && timerClkPeriod.Load() < defaultTimerClkPeriod+defaultTimerClkPeriod/2 { + if timerFreq > okean240.TimerFrequencyHi && timerClkPeriod.Load() < defaultTimerClkPeriod+defaultTimerClkPeriod/2 { timerClkPeriod.Add(1) - //timerTicker.Reset(time.Duration(timerClkPeriod.Load())) - } else if timerFreq < 1.47 && timerClkPeriod.Load() > 3 { - timerClkPeriod.Add(-2) - //timerTicker.Reset(time.Duration(timerClkPeriod.Load())) + } else if timerFreq < okean240.TimerFrequencyLow && timerClkPeriod.Load() > 3 { + timerClkPeriod.Add(-1) } } @@ -192,7 +195,7 @@ func timerClock(ctx context.Context, computer *okean240.ComputerType) { var cpuTicks atomic.Uint64 -func emulator(ctx context.Context, computer *okean240.ComputerType) { +func emulator(ctx context.Context, computer *okean240.ComputerType, dezog *dzrp.DZRP) { cpuClkPeriod.Store(defaultCpuClkPeriod) //cpuTicker = time.NewTicker(time.Duration(cpuClkPeriod.Load()) * time.Nanosecond) //defer cpuTicker.Stop() @@ -228,7 +231,7 @@ func emulator(ctx context.Context, computer *okean240.ComputerType) { // Breakpoint hit if bp > 0 || bpType != 0 { - listener.BreakpointHit(bp, bpType) + dezog.BreakpointHit(bp, bpType) } if needReset { computer.Reset() diff --git a/okean240/computer.go b/okean240/computer.go index cae7bba..a222d1b 100644 --- a/okean240/computer.go +++ b/okean240/computer.go @@ -15,6 +15,7 @@ import ( "okemu/z80" "os" "strconv" + "sync/atomic" //"okemu/z80" "okemu/z80/c99" @@ -24,6 +25,10 @@ import ( ) const DefaultCPUFrequency = 2_500_000 +const CPUFrequencyLow float64 = 2.47 +const CPUFrequencyHi float64 = 2.53 +const TimerFrequencyLow float64 = 1.47 +const TimerFrequencyHi float64 = 1.53 type ComputerType struct { cpu *c99.Z80 @@ -49,7 +54,7 @@ type ComputerType struct { // debugger *debug.Debugger config *config.OkEmuConfig - kbAck bool + kbAck atomic.Bool } type Snapshot struct { @@ -77,7 +82,7 @@ const VidColorBit = 0x40 // SetCPUState(state *z80.CPU) //} -func (c *ComputerType) GetCPUState() *z80.CPU { +func (c *ComputerType) CPUState() *z80.CPU { return c.cpu.GetState() } @@ -120,9 +125,9 @@ func NewComputer(cfg *config.OkEmuConfig, deb *debug.Debugger) *ComputerType { //c.aOffset = 0x100 c.pit = pit.New() - c.kbAck = false + c.kbAck.Store(false) c.usart = usart.New() - c.pic = pic.New() + c.pic = pic.NewI8259() c.fdc = fdc.NewFDC(cfg) c.cpuFrequency = DefaultCPUFrequency c.debugger = deb @@ -230,7 +235,7 @@ func (c *ComputerType) GetPixel(x uint16, y uint16) color.RGBA { cl := (c.vRAM.memory[a1] >> (x & 0x07)) & 1 cl |= ((c.vRAM.memory[a2] >> (x & 0x07)) & 1) << 1 if cl == 0 { - resColor = BgColorPalette[c.bgColor] + //resColor = BgColorPalette[c.bgColor] resColor = ColorPalette[c.palette][cl] } else { resColor = ColorPalette[c.palette][cl] @@ -299,7 +304,6 @@ func (c *ComputerType) TimerClk() { // IRQ from timer if c.pit.Fired(0) { c.pic.SetIRQ(RstTimerNo) - //c.ioPorts[PIC_DD75RS] |= Rst4Mask } // clock for SIO KR580VV51 if c.pit.Fired(1) { diff --git a/okean240/constants.go b/okean240/constants.go index a222a4f..88a6d46 100644 --- a/okean240/constants.go +++ b/okean240/constants.go @@ -93,12 +93,14 @@ const TmrDd70ctr = 0x63 const RstKbdNo = 1 const RstTimerNo = 4 +const KbAckBit = 0x80 + +// const Rst0Mask = 0x01 // System interrupt +const RstKbdMask = 0x02 // Keyboard interrupt +// const Rst2Mask = 0x04 // Serial interface interrupt +// const Rst3Mask = 0x08 // Printer ready +const RstTmrMask = 0x10 -//const Rst0Mask = 0x01 // System interrupt -//const Rst1Mask = 0x02 // Keyboard interrupt -//const Rst2Mask = 0x04 // Serial interface interrupt -//const Rst3Mask = 0x08 // Printer ready -//const Rst4Mask = 0x10 //const Rst5Mask = 0x20 // Power intRq //const Rst6Mask = 0x40 // User device 1 interrupt //const Rst7Mask = 0x80 // User device 1 interrupt diff --git a/okean240/ioports.go b/okean240/ioports.go index 62d7ea5..f9978df 100644 --- a/okean240/ioports.go +++ b/okean240/ioports.go @@ -16,7 +16,8 @@ func (c *ComputerType) IORead(port uint16) byte { // PIO xx59, get IRR register irr := c.pic.IRR() // if irq from keyboard and no ACK applied, re-fire - if irr&0x10 != 0 && !c.kbAck { + if irr&RstKbdMask != 0 && !c.kbAck.Load() { + log.Tracef("KBD IRQ REFIRE PC=%04X", c.cpu.PC()) c.pic.SetIRQ(RstKbdNo) } return irr @@ -30,6 +31,7 @@ func (c *ComputerType) IORead(port uint16) byte { return c.usart.Receive() case KbdDd78pa: // Keyboard data + log.Tracef("KBD RD: %d, PC=%04X", c.ioPorts[KbdDd78pa], c.cpu.PC()) return c.ioPorts[KbdDd78pa] case KbdDd78pb: return c.ioPorts[KbdDd78pb] @@ -117,12 +119,14 @@ func (c *ComputerType) IOWrite(port uint16, val byte) { c.fdc.SetFloppy(val) case KbdDd78pc: - if val&0x80 != 0 { - c.kbAck = true + if val&KbAckBit != 0 { + c.kbAck.Store(true) + log.Trace("KBD ACK") } else { - //c.kbAck = false + if c.kbAck.Load() { + c.pic.ResetIRQ(RstKbdNo) + } } - default: //log.Debugf("OUT to Unknown port (%x), %x", bp, val) } diff --git a/okean240/keyboard.go b/okean240/keyboard.go index a2026ea..43f1686 100644 --- a/okean240/keyboard.go +++ b/okean240/keyboard.go @@ -2,27 +2,27 @@ package okean240 import ( "fyne.io/fyne/v2" + log "github.com/sirupsen/logrus" ) func (c *ComputerType) PutKey(key *fyne.KeyEvent) { code := RemapCmdKey[key.Name] if code > 0 { - //log.Debugf("PutKey keyName: %s", key.Name) + log.Tracef("PutKey keyName: %s", key.Name) c.ioPorts[KbdDd78pa] = code + c.kbAck.Store(false) c.pic.SetIRQ(RstKbdNo) - c.kbAck = false } } func (c *ComputerType) PutRune(key rune) { - - //log.Debugf("Put Rune: %c Lo: %x, Hi: %x", key, key&0xff, key>>8) - + log.Tracef("Put Rune: %c Lo: %x, Hi: %x", key, key&0xff, key>>8) c.ioPorts[KbdDd78pa] = byte(key & 0xff) + c.kbAck.Store(false) c.pic.SetIRQ(RstKbdNo) - c.kbAck = false + } /* @@ -41,7 +41,6 @@ func (c *ComputerType) PutRune(key rune) { func (c *ComputerType) PutCtrlKey(key byte) { c.ioPorts[KbdDd78pa] = key c.pic.SetIRQ(RstKbdNo) - c.kbAck = false - //c.ioPorts[PIC_DD75RS] |= Rst1Mask + c.kbAck.Store(false) c.ioPorts[KbdDd78pb] &= 0x1f | 0x20 } diff --git a/okean240/pic/pic8259.go b/okean240/pic/pic8259.go index c8723f1..7ad6f73 100644 --- a/okean240/pic/pic8259.go +++ b/okean240/pic/pic8259.go @@ -1,5 +1,7 @@ package pic +import log "github.com/sirupsen/logrus" + /* Programmable Interrupt Controller i8058, MSM82C59, КР580ВН59 @@ -19,44 +21,58 @@ type I8259Interface interface { SetCSW(val byte) } +// IRR Return value of interrupt request register func (c *I8259) IRR() byte { irr := c.irr // Reset the highest IR bit - if irr&0x80 != 0 { - c.irr &= 0x7F - } else if irr&0x40 != 0 { - c.irr &= 0x3F - } else if irr&0x20 != 0 { - c.irr &= 0x1F - } else if irr&0x08 != 0 { - c.irr &= 0x07 - } else if irr&0x04 != 0 { - c.irr &= 0x03 + if irr&0x01 != 0 { + c.irr &= 0xFE } else if irr&0x02 != 0 { - c.irr &= 0x1 - } else { - c.irr = 0 + c.irr &= 0xFD + } else if irr&0x04 != 0 { + c.irr &= 0xFB + } else if irr&0x08 != 0 { + c.irr &= 0xF7 + } else if irr&0x10 != 0 { + c.irr &= 0xEF + } else if irr&0x20 != 0 { + c.irr &= 0xDF + } else if irr&0x40 != 0 { + c.irr &= 0xBF + } else if irr&0x80 != 0 { + c.irr &= 0x7F } return irr } +// ResetIRQ Reset interrupt request flag for specified irq func (c *I8259) ResetIRQ(irq byte) { c.irr &= ^(byte(1) << (irq & 0x07)) -} -func (c *I8259) SetIRQ(irq byte) { - c.irr |= 1 << (irq & 0x07) + log.Tracef("RESET IRQ %d -> IRR: %08b", irq, c.irr) } +// SetIRQ Set interrupt request flag for specified irq +func (c *I8259) SetIRQ(irq byte) { + c.irr |= 1 << (irq & 0x07) + if irq == 1 { + log.Tracef("SET IRQ %d -> IRR: %08b", irq, c.irr) + } +} + +// CSW Return value of CSW register func (c *I8259) CSW() byte { return c.csw } +// SetCSW Set value of CSW register func (c *I8259) SetCSW(val byte) { c.csw = val } -func New() *I8259 { +// NewI8259 Create and initialize new i8259 controller +func NewI8259() *I8259 { return &I8259{ irr: 0, + csw: 0, } } diff --git a/okemu b/okemu new file mode 100755 index 0000000..1f2de70 Binary files /dev/null and b/okemu differ diff --git a/okemu.prof b/okemu.prof new file mode 100644 index 0000000..e69de29 diff --git a/rom/CPM_r7_720k.bin b/rom/CPM_r7_720k.bin new file mode 100644 index 0000000..7b1c66f Binary files /dev/null and b/rom/CPM_r7_720k.bin differ diff --git a/rom/CPM_r7_b89a7e16.bin b/rom/CPM_r7_b89a7e16.bin new file mode 100644 index 0000000..ba16f63 Binary files /dev/null and b/rom/CPM_r7_b89a7e16.bin differ diff --git a/rom/MON_r7_93bd95bd.bin b/rom/MON_r7_93bd95bd.bin new file mode 100644 index 0000000..c43d5c7 Binary files /dev/null and b/rom/MON_r7_93bd95bd.bin differ diff --git a/rom/Ocean_240_ROM_C000_CPM_with_floppy_b89a7e16.bin b/rom/Ocean_240_ROM_C000_CPM_with_floppy_b89a7e16.bin new file mode 100644 index 0000000..ba16f63 Binary files /dev/null and b/rom/Ocean_240_ROM_C000_CPM_with_floppy_b89a7e16.bin differ diff --git a/rom/Ocean_240_ROM_E000_Monitor_587799bc.bin b/rom/Ocean_240_ROM_E000_Monitor_587799bc.bin new file mode 100644 index 0000000..8b7be78 Binary files /dev/null and b/rom/Ocean_240_ROM_E000_Monitor_587799bc.bin differ