From 372367f59a897162912d0646158bdea1e07d6e66 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sat, 26 Jun 2021 20:55:36 -0700 Subject: html: better highlighting for int registers --- html/linux/405screen.mu.html | 293 +++++++++++++++++++++---------------------- 1 file changed, 146 insertions(+), 147 deletions(-) (limited to 'html/linux/405screen.mu.html') diff --git a/html/linux/405screen.mu.html b/html/linux/405screen.mu.html index 11e3f265..3a38e8bd 100644 --- a/html/linux/405screen.mu.html +++ b/html/linux/405screen.mu.html @@ -17,18 +17,17 @@ a { color:inherit; } .LineNr { } .Delimiter { color: #c000c0; } .CommentedCode { color: #8a8a8a; } -.muRegEsi { color: #87d787; } -.muRegEdi { color: #87ffd7; } +.muRegEbx { color: #5f00ff; } +.muRegEsi { color: #005faf; } +.muRegEdi { color: #00af00; } .Constant { color: #008787; } .Special { color: #ff6060; } .PreProc { color: #c000c0; } .muFunction { color: #af5f00; text-decoration: underline; } .muTest { color: #5f8700; } .muComment { color: #005faf; } -.muRegEax { color: #875f00; } -.muRegEcx { color: #af875f; } -.muRegEdx { color: #878700; } -.muRegEbx { color: #8787af; } +.muRegEcx { color: #870000; } +.muRegEdx { color: #af5f00; } --> @@ -95,7 +94,7 @@ if ('onhashchange' in window) { 29 30 fn initialize-screen screen: (addr screen), nrows: int, ncols: int { 31 var screen-addr/esi: (addr screen) <- copy screen - 32 var tmp/eax: int <- copy 0 + 32 var tmp/eax: int <- copy 0 33 var dest/edi: (addr int) <- copy 0 34 # screen->num-rows = nrows 35 dest <- get screen-addr, num-rows @@ -118,13 +117,13 @@ if ('onhashchange' in window) { 52 dest <- get screen-addr, cursor-col 53 copy-to *dest, 1 54 # screen->curr-attributes->background-color = 7 (simulate light background) - 55 var tmp2/eax: (addr screen-cell) <- get screen-addr, curr-attributes + 55 var tmp2/eax: (addr screen-cell) <- get screen-addr, curr-attributes 56 dest <- get tmp2, background-color 57 copy-to *dest, 7 58 } 59 - 60 fn screen-size screen: (addr screen) -> _/eax: int, _/ecx: int { - 61 var nrows/eax: int <- copy 0 + 60 fn screen-size screen: (addr screen) -> _/eax: int, _/ecx: int { + 61 var nrows/eax: int <- copy 0 62 var ncols/ecx: int <- copy 0 63 compare screen, 0 64 { @@ -152,7 +151,7 @@ if ('onhashchange' in window) { 86 var space/edi: grapheme <- copy 0x20 87 move-cursor screen, 1, 1 88 var screen-addr/esi: (addr screen) <- copy screen - 89 var i/eax: int <- copy 1 + 89 var i/eax: int <- copy 1 90 var nrows/ecx: (addr int) <- get screen-addr, num-rows 91 { 92 compare i, *nrows @@ -195,8 +194,8 @@ if ('onhashchange' in window) { 129 } 130 # row > num-rows saturates to num-rows 131 { - 132 var nrows-addr/eax: (addr int) <- get screen-addr, num-rows - 133 var nrows/eax: int <- copy *nrows-addr + 132 var nrows-addr/eax: (addr int) <- get screen-addr, num-rows + 133 var nrows/eax: int <- copy *nrows-addr 134 compare row, nrows 135 break-if-<= 136 copy-to row, nrows @@ -215,8 +214,8 @@ if ('onhashchange' in window) { 149 } 150 # column > num-cols saturates to num-cols+1 (so wrapping to next row) 151 { - 152 var ncols-addr/eax: (addr int) <- get screen-addr, num-cols - 153 var ncols/eax: int <- copy *ncols-addr + 152 var ncols-addr/eax: (addr int) <- get screen-addr, num-cols + 153 var ncols/eax: int <- copy *ncols-addr 154 compare column, ncols 155 break-if-<= 156 copy-to column, ncols @@ -224,7 +223,7 @@ if ('onhashchange' in window) { 158 } 159 # screen->cursor-row = row 160 var dest/edi: (addr int) <- get screen-addr, cursor-row - 161 var src/eax: int <- copy row + 161 var src/eax: int <- copy row 162 copy-to *dest, src 163 # screen->cursor-col = column 164 dest <- get screen-addr, cursor-col @@ -249,10 +248,10 @@ if ('onhashchange' in window) { 183 fn print-stream _screen: (addr screen), s: (addr stream byte) { 184 var screen/edi: (addr screen) <- copy _screen 185 { - 186 var done?/eax: boolean <- stream-empty? s + 186 var done?/eax: boolean <- stream-empty? s 187 compare done?, 0 188 break-if-!= - 189 var g/eax: grapheme <- read-grapheme s + 189 var g/eax: grapheme <- read-grapheme s 190 print-grapheme screen, g 191 loop 192 } @@ -261,7 +260,7 @@ if ('onhashchange' in window) { 195 fn print-array-of-ints-in-decimal screen: (addr screen), _a: (addr array int) { 196 var a/esi: (addr array int) <- copy _a 197 var max/ecx: int <- length a - 198 var i/eax: int <- copy 0 + 198 var i/eax: int <- copy 0 199 { 200 compare i, max 201 break-if->= @@ -299,16 +298,16 @@ if ('onhashchange' in window) { 233 var cursor-row-addr/ebx: (addr int) <- get screen-addr, cursor-row 234 increment *cursor-row-addr 235 # scroll - 236 var num-rows-addr/eax: (addr int) <- get screen-addr, num-rows - 237 var num-rows/eax: int <- copy *num-rows-addr + 236 var num-rows-addr/eax: (addr int) <- get screen-addr, num-rows + 237 var num-rows/eax: int <- copy *num-rows-addr 238 compare *cursor-row-addr, num-rows 239 break-if-<= 240 copy-to *cursor-row-addr, num-rows 241 # if (top-index > data size) top-index = 0, otherwise top-index += num-cols 242 $print-grapheme:perform-scroll: { 243 var top-index-addr/ebx: (addr int) <- get screen-addr, top-index - 244 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 245 var data/eax: (addr array screen-cell) <- lookup *data-ah + 244 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 245 var data/eax: (addr array screen-cell) <- lookup *data-ah 246 var max-index/edi: int <- length data 247 compare *top-index-addr, max-index 248 { @@ -326,13 +325,13 @@ if ('onhashchange' in window) { 260 #? print-string-to-real-screen "printing grapheme at screen index " 261 #? print-int32-hex-to-real-screen idx 262 #? print-string-to-real-screen ": " - 263 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 264 var data/eax: (addr array screen-cell) <- lookup *data-ah + 263 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 264 var data/eax: (addr array screen-cell) <- lookup *data-ah 265 var offset/ecx: (offset screen-cell) <- compute-offset data, idx 266 var dest-cell/ecx: (addr screen-cell) <- index data, offset - 267 var src-cell/eax: (addr screen-cell) <- get screen-addr, curr-attributes + 267 var src-cell/eax: (addr screen-cell) <- get screen-addr, curr-attributes 268 copy-object src-cell, dest-cell - 269 var dest/eax: (addr grapheme) <- get dest-cell, data + 269 var dest/eax: (addr grapheme) <- get dest-cell, data 270 var c2/ecx: grapheme <- copy c 271 #? print-grapheme-to-real-screen c2 272 #? print-string-to-real-screen "\n" @@ -343,26 +342,26 @@ if ('onhashchange' in window) { 277 fn current-screen-cell-index screen-on-stack: (addr screen) -> _/ecx: int { 278 var screen/esi: (addr screen) <- copy screen-on-stack 279 var cursor-row-addr/ecx: (addr int) <- get screen, cursor-row - 280 var cursor-col-addr/eax: (addr int) <- get screen, cursor-col + 280 var cursor-col-addr/eax: (addr int) <- get screen, cursor-col 281 var result/ecx: int <- screen-cell-index screen, *cursor-row-addr, *cursor-col-addr 282 return result 283 } 284 285 fn screen-cell-index screen-on-stack: (addr screen), row: int, col: int -> _/ecx: int { 286 var screen/esi: (addr screen) <- copy screen-on-stack - 287 var num-cols-addr/eax: (addr int) <- get screen, num-cols - 288 var num-cols/eax: int <- copy *num-cols-addr + 287 var num-cols-addr/eax: (addr int) <- get screen, num-cols + 288 var num-cols/eax: int <- copy *num-cols-addr 289 var result/ecx: int <- copy row 290 result <- subtract 1 291 result <- multiply num-cols 292 result <- add col 293 result <- subtract 1 294 # result = (result + top-index) % data length - 295 var top-index-addr/eax: (addr int) <- get screen, top-index + 295 var top-index-addr/eax: (addr int) <- get screen, top-index 296 result <- add *top-index-addr - 297 var data-ah/eax: (addr handle array screen-cell) <- get screen, data - 298 var data/eax: (addr array screen-cell) <- lookup *data-ah - 299 var max-index/eax: int <- length data + 297 var data-ah/eax: (addr handle array screen-cell) <- get screen, data + 298 var data/eax: (addr array screen-cell) <- lookup *data-ah + 299 var max-index/eax: int <- length data 300 compare result, max-index 301 { 302 break-if-< @@ -371,135 +370,135 @@ if ('onhashchange' in window) { 305 return result 306 } 307 - 308 fn screen-grapheme-at screen-on-stack: (addr screen), row: int, col: int -> _/eax: grapheme { + 308 fn screen-grapheme-at screen-on-stack: (addr screen), row: int, col: int -> _/eax: grapheme { 309 var screen-addr/esi: (addr screen) <- copy screen-on-stack 310 var idx/ecx: int <- screen-cell-index screen-addr, row, col - 311 var result/eax: grapheme <- screen-grapheme-at-idx screen-addr, idx + 311 var result/eax: grapheme <- screen-grapheme-at-idx screen-addr, idx 312 return result 313 } 314 - 315 fn screen-grapheme-at-idx screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: grapheme { + 315 fn screen-grapheme-at-idx screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: grapheme { 316 var screen-addr/esi: (addr screen) <- copy screen-on-stack - 317 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 318 var data/eax: (addr array screen-cell) <- lookup *data-ah + 317 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 318 var data/eax: (addr array screen-cell) <- lookup *data-ah 319 var idx/ecx: int <- copy idx-on-stack 320 var offset/ecx: (offset screen-cell) <- compute-offset data, idx - 321 var cell/eax: (addr screen-cell) <- index data, offset - 322 var src/eax: (addr grapheme) <- get cell, data + 321 var cell/eax: (addr screen-cell) <- index data, offset + 322 var src/eax: (addr grapheme) <- get cell, data 323 return *src 324 } 325 - 326 fn screen-color-at screen-on-stack: (addr screen), row: int, col: int -> _/eax: int { + 326 fn screen-color-at screen-on-stack: (addr screen), row: int, col: int -> _/eax: int { 327 var screen-addr/esi: (addr screen) <- copy screen-on-stack 328 var idx/ecx: int <- screen-cell-index screen-addr, row, col - 329 var result/eax: int <- screen-color-at-idx screen-addr, idx + 329 var result/eax: int <- screen-color-at-idx screen-addr, idx 330 return result 331 } 332 - 333 fn screen-color-at-idx screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: int { + 333 fn screen-color-at-idx screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: int { 334 var screen-addr/esi: (addr screen) <- copy screen-on-stack - 335 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 336 var data/eax: (addr array screen-cell) <- lookup *data-ah + 335 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 336 var data/eax: (addr array screen-cell) <- lookup *data-ah 337 var idx/ecx: int <- copy idx-on-stack 338 var offset/ecx: (offset screen-cell) <- compute-offset data, idx - 339 var cell/eax: (addr screen-cell) <- index data, offset - 340 var src/eax: (addr int) <- get cell, color - 341 var result/eax: int <- copy *src + 339 var cell/eax: (addr screen-cell) <- index data, offset + 340 var src/eax: (addr int) <- get cell, color + 341 var result/eax: int <- copy *src 342 return result 343 } 344 - 345 fn screen-background-color-at screen-on-stack: (addr screen), row: int, col: int -> _/eax: int { + 345 fn screen-background-color-at screen-on-stack: (addr screen), row: int, col: int -> _/eax: int { 346 var screen-addr/esi: (addr screen) <- copy screen-on-stack 347 var idx/ecx: int <- screen-cell-index screen-addr, row, col - 348 var result/eax: int <- screen-background-color-at-idx screen-addr, idx + 348 var result/eax: int <- screen-background-color-at-idx screen-addr, idx 349 return result 350 } 351 - 352 fn screen-background-color-at-idx screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: int { + 352 fn screen-background-color-at-idx screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: int { 353 var screen-addr/esi: (addr screen) <- copy screen-on-stack - 354 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 355 var data/eax: (addr array screen-cell) <- lookup *data-ah + 354 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 355 var data/eax: (addr array screen-cell) <- lookup *data-ah 356 var idx/ecx: int <- copy idx-on-stack 357 var offset/ecx: (offset screen-cell) <- compute-offset data, idx - 358 var cell/eax: (addr screen-cell) <- index data, offset - 359 var src/eax: (addr int) <- get cell, background-color + 358 var cell/eax: (addr screen-cell) <- index data, offset + 359 var src/eax: (addr int) <- get cell, background-color 360 return *src 361 } 362 - 363 fn screen-bold-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { + 363 fn screen-bold-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { 364 var screen-addr/esi: (addr screen) <- copy screen-on-stack 365 var idx/ecx: int <- screen-cell-index screen-addr, row, col - 366 var result/eax: boolean <- screen-bold-at-idx? screen-addr, idx + 366 var result/eax: boolean <- screen-bold-at-idx? screen-addr, idx 367 return result 368 } 369 - 370 fn screen-bold-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { + 370 fn screen-bold-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { 371 var screen-addr/esi: (addr screen) <- copy screen-on-stack - 372 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 373 var data/eax: (addr array screen-cell) <- lookup *data-ah + 372 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 373 var data/eax: (addr array screen-cell) <- lookup *data-ah 374 var idx/ecx: int <- copy idx-on-stack 375 var offset/ecx: (offset screen-cell) <- compute-offset data, idx - 376 var cell/eax: (addr screen-cell) <- index data, offset - 377 var src/eax: (addr boolean) <- get cell, bold? + 376 var cell/eax: (addr screen-cell) <- index data, offset + 377 var src/eax: (addr boolean) <- get cell, bold? 378 return *src 379 } 380 - 381 fn screen-underline-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { + 381 fn screen-underline-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { 382 var screen-addr/esi: (addr screen) <- copy screen-on-stack 383 var idx/ecx: int <- screen-cell-index screen-addr, row, col - 384 var result/eax: boolean <- screen-underline-at-idx? screen-addr, idx + 384 var result/eax: boolean <- screen-underline-at-idx? screen-addr, idx 385 return result 386 } 387 - 388 fn screen-underline-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { + 388 fn screen-underline-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { 389 var screen-addr/esi: (addr screen) <- copy screen-on-stack - 390 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 391 var data/eax: (addr array screen-cell) <- lookup *data-ah + 390 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 391 var data/eax: (addr array screen-cell) <- lookup *data-ah 392 var idx/ecx: int <- copy idx-on-stack 393 var offset/ecx: (offset screen-cell) <- compute-offset data, idx - 394 var cell/eax: (addr screen-cell) <- index data, offset - 395 var src/eax: (addr boolean) <- get cell, underline? + 394 var cell/eax: (addr screen-cell) <- index data, offset + 395 var src/eax: (addr boolean) <- get cell, underline? 396 return *src 397 } 398 - 399 fn screen-reverse-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { + 399 fn screen-reverse-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { 400 var screen-addr/esi: (addr screen) <- copy screen-on-stack 401 var idx/ecx: int <- screen-cell-index screen-addr, row, col - 402 var result/eax: boolean <- screen-reverse-at-idx? screen-addr, idx + 402 var result/eax: boolean <- screen-reverse-at-idx? screen-addr, idx 403 return result 404 } 405 - 406 fn screen-reverse-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { + 406 fn screen-reverse-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { 407 var screen-addr/esi: (addr screen) <- copy screen-on-stack - 408 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 409 var data/eax: (addr array screen-cell) <- lookup *data-ah + 408 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 409 var data/eax: (addr array screen-cell) <- lookup *data-ah 410 var idx/ecx: int <- copy idx-on-stack 411 var offset/ecx: (offset screen-cell) <- compute-offset data, idx - 412 var cell/eax: (addr screen-cell) <- index data, offset - 413 var src/eax: (addr boolean) <- get cell, reverse? + 412 var cell/eax: (addr screen-cell) <- index data, offset + 413 var src/eax: (addr boolean) <- get cell, reverse? 414 return *src 415 } 416 - 417 fn screen-blink-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { + 417 fn screen-blink-at? screen-on-stack: (addr screen), row: int, col: int -> _/eax: boolean { 418 var screen-addr/esi: (addr screen) <- copy screen-on-stack 419 var idx/ecx: int <- screen-cell-index screen-addr, row, col - 420 var result/eax: boolean <- screen-blink-at-idx? screen-addr, idx + 420 var result/eax: boolean <- screen-blink-at-idx? screen-addr, idx 421 return result 422 } 423 - 424 fn screen-blink-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { + 424 fn screen-blink-at-idx? screen-on-stack: (addr screen), idx-on-stack: int -> _/eax: boolean { 425 var screen-addr/esi: (addr screen) <- copy screen-on-stack - 426 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data - 427 var data/eax: (addr array screen-cell) <- lookup *data-ah + 426 var data-ah/eax: (addr handle array screen-cell) <- get screen-addr, data + 427 var data/eax: (addr array screen-cell) <- lookup *data-ah 428 var idx/ecx: int <- copy idx-on-stack 429 var offset/ecx: (offset screen-cell) <- compute-offset data, idx - 430 var cell/eax: (addr screen-cell) <- index data, offset - 431 var src/eax: (addr boolean) <- get cell, blink? + 430 var cell/eax: (addr screen-cell) <- index data, offset + 431 var src/eax: (addr boolean) <- get cell, blink? 432 return *src 433 } 434 435 fn print-code-point screen: (addr screen), c: code-point { - 436 var g/eax: grapheme <- to-grapheme c + 436 var g/eax: grapheme <- to-grapheme c 437 print-grapheme screen, g 438 } 439 @@ -516,10 +515,10 @@ if ('onhashchange' in window) { 450 write-int32-hex s2-addr, n 451 var screen-addr/edi: (addr screen) <- copy screen 452 { - 453 var done?/eax: boolean <- stream-empty? s2-addr + 453 var done?/eax: boolean <- stream-empty? s2-addr 454 compare done?, 0 455 break-if-!= - 456 var g/eax: grapheme <- read-grapheme s2-addr + 456 var g/eax: grapheme <- read-grapheme s2-addr 457 print-grapheme screen, g 458 loop 459 } @@ -538,10 +537,10 @@ if ('onhashchange' in window) { 472 write-int32-hex-bits s2-addr, n, bits 473 var screen-addr/edi: (addr screen) <- copy screen 474 { - 475 var done?/eax: boolean <- stream-empty? s2-addr + 475 var done?/eax: boolean <- stream-empty? s2-addr 476 compare done?, 0 477 break-if-!= - 478 var g/eax: grapheme <- read-grapheme s2-addr + 478 var g/eax: grapheme <- read-grapheme s2-addr 479 print-grapheme screen, g 480 loop 481 } @@ -560,10 +559,10 @@ if ('onhashchange' in window) { 494 write-int32-decimal s2-addr, n 495 var screen-addr/edi: (addr screen) <- copy screen 496 { - 497 var done?/eax: boolean <- stream-empty? s2-addr + 497 var done?/eax: boolean <- stream-empty? s2-addr 498 compare done?, 0 499 break-if-!= - 500 var g/eax: grapheme <- read-grapheme s2-addr + 500 var g/eax: grapheme <- read-grapheme s2-addr 501 print-grapheme screen, g 502 loop 503 } @@ -580,9 +579,9 @@ if ('onhashchange' in window) { 514 var screen-addr/esi: (addr screen) <- copy screen 515 var dest/ecx: (addr screen-cell) <- get screen-addr, curr-attributes 516 var default-cell: screen-cell - 517 var bg/eax: (addr int) <- get default-cell, background-color + 517 var bg/eax: (addr int) <- get default-cell, background-color 518 copy-to *bg, 7 - 519 var default-cell-addr/eax: (addr screen-cell) <- address default-cell + 519 var default-cell-addr/eax: (addr screen-cell) <- address default-cell 520 copy-object default-cell-addr, dest 521 } 522 @@ -597,10 +596,10 @@ if ('onhashchange' in window) { 531 var screen-addr/esi: (addr screen) <- copy screen 532 var attr/ecx: (addr screen-cell) <- get screen-addr, curr-attributes 533 var dest/edx: (addr int) <- get attr, color - 534 var src/eax: int <- copy fg + 534 var src/eax: int <- copy fg 535 copy-to *dest, src 536 var dest/edx: (addr int) <- get attr, background-color - 537 var src/eax: int <- copy bg + 537 var src/eax: int <- copy bg 538 copy-to *dest, src 539 } 540 @@ -702,12 +701,12 @@ if ('onhashchange' in window) { 636 var e-addr/edx: (addr stream byte) <- address e 637 write e-addr, expected 638 { - 639 var done?/eax: boolean <- stream-empty? e-addr + 639 var done?/eax: boolean <- stream-empty? e-addr 640 compare done?, 0 641 break-if-!= - 642 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx + 642 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx 643 var g/ebx: grapheme <- copy _g - 644 var expected-grapheme/eax: grapheme <- read-grapheme e-addr + 644 var expected-grapheme/eax: grapheme <- read-grapheme e-addr 645 # compare graphemes 646 $check-screen-row-from:compare-graphemes: { 647 # if expected-grapheme is space, null grapheme is also ok @@ -756,12 +755,12 @@ if ('onhashchange' in window) { 690 var e-addr/edx: (addr stream byte) <- address e 691 write e-addr, expected 692 { - 693 var done?/eax: boolean <- stream-empty? e-addr + 693 var done?/eax: boolean <- stream-empty? e-addr 694 compare done?, 0 695 break-if-!= - 696 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx + 696 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx 697 var g/ebx: grapheme <- copy _g - 698 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr + 698 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr 699 var expected-grapheme/edi: grapheme <- copy _expected-grapheme 700 $check-screen-row-in-color-from:compare-cells: { 701 # if expected-grapheme is space, null grapheme is also ok @@ -775,7 +774,7 @@ if ('onhashchange' in window) { 709 { 710 compare expected-grapheme, 0x20 711 break-if-!= - 712 var color/eax: int <- screen-color-at-idx screen, idx + 712 var color/eax: int <- screen-color-at-idx screen, idx 713 compare color, fg 714 break-if-!= $check-screen-row-in-color-from:compare-cells 715 } @@ -801,7 +800,7 @@ if ('onhashchange' in window) { 735 print-string-to-real-screen "'\n" 736 } 737 $check-screen-row-in-color-from:compare-colors: { - 738 var color/eax: int <- screen-color-at-idx screen, idx + 738 var color/eax: int <- screen-color-at-idx screen, idx 739 compare fg, color 740 { 741 break-if-!= @@ -843,12 +842,12 @@ if ('onhashchange' in window) { 777 var e-addr/edx: (addr stream byte) <- address e 778 write e-addr, expected 779 { - 780 var done?/eax: boolean <- stream-empty? e-addr + 780 var done?/eax: boolean <- stream-empty? e-addr 781 compare done?, 0 782 break-if-!= - 783 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx + 783 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx 784 var g/ebx: grapheme <- copy _g - 785 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr + 785 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr 786 var expected-grapheme/edx: grapheme <- copy _expected-grapheme 787 $check-screen-row-in-background-color-from:compare-cells: { 788 # if expected-grapheme is space, null grapheme is also ok @@ -862,7 +861,7 @@ if ('onhashchange' in window) { 796 { 797 compare expected-grapheme, 0x20 798 break-if-!= - 799 var color/eax: int <- screen-background-color-at-idx screen, idx + 799 var color/eax: int <- screen-background-color-at-idx screen, idx 800 compare color, bg 801 break-if-!= $check-screen-row-in-background-color-from:compare-cells 802 } @@ -888,7 +887,7 @@ if ('onhashchange' in window) { 822 print-string-to-real-screen "'\n" 823 } 824 $check-screen-row-in-background-color-from:compare-colors: { - 825 var color/eax: int <- screen-background-color-at-idx screen, idx + 825 var color/eax: int <- screen-background-color-at-idx screen, idx 826 compare bg, color 827 { 828 break-if-!= @@ -928,12 +927,12 @@ if ('onhashchange' in window) { 862 var e-addr/edx: (addr stream byte) <- address e 863 write e-addr, expected 864 { - 865 var done?/eax: boolean <- stream-empty? e-addr + 865 var done?/eax: boolean <- stream-empty? e-addr 866 compare done?, 0 867 break-if-!= - 868 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx + 868 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx 869 var g/ebx: grapheme <- copy _g - 870 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr + 870 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr 871 var expected-grapheme/edx: grapheme <- copy _expected-grapheme 872 $check-screen-row-in-bold-from:compare-cells: { 873 # if expected-grapheme is space, null grapheme is also ok @@ -947,7 +946,7 @@ if ('onhashchange' in window) { 881 { 882 compare expected-grapheme, 0x20 883 break-if-!= - 884 var bold?/eax: boolean <- screen-bold-at-idx? screen, idx + 884 var bold?/eax: boolean <- screen-bold-at-idx? screen, idx 885 compare bold?, 1 886 break-if-!= $check-screen-row-in-bold-from:compare-cells 887 } @@ -973,7 +972,7 @@ if ('onhashchange' in window) { 907 print-string-to-real-screen "'\n" 908 } 909 $check-screen-row-in-bold-from:compare-bold: { - 910 var bold?/eax: boolean <- screen-bold-at-idx? screen, idx + 910 var bold?/eax: boolean <- screen-bold-at-idx? screen, idx 911 compare bold?, 1 912 { 913 break-if-!= @@ -1009,12 +1008,12 @@ if ('onhashchange' in window) { 943 var e-addr/edx: (addr stream byte) <- address e 944 write e-addr, expected 945 { - 946 var done?/eax: boolean <- stream-empty? e-addr + 946 var done?/eax: boolean <- stream-empty? e-addr 947 compare done?, 0 948 break-if-!= - 949 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx + 949 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx 950 var g/ebx: grapheme <- copy _g - 951 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr + 951 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr 952 var expected-grapheme/edx: grapheme <- copy _expected-grapheme 953 $check-screen-row-in-underline-from:compare-cells: { 954 # if expected-grapheme is space, null grapheme is also ok @@ -1028,7 +1027,7 @@ if ('onhashchange' in window) { 962 { 963 compare expected-grapheme, 0x20 964 break-if-!= - 965 var underline?/eax: boolean <- screen-underline-at-idx? screen, idx + 965 var underline?/eax: boolean <- screen-underline-at-idx? screen, idx 966 compare underline?, 1 967 break-if-!= $check-screen-row-in-underline-from:compare-cells 968 } @@ -1054,7 +1053,7 @@ if ('onhashchange' in window) { 988 print-string-to-real-screen "'\n" 989 } 990 $check-screen-row-in-underline-from:compare-underline: { - 991 var underline?/eax: boolean <- screen-underline-at-idx? screen, idx + 991 var underline?/eax: boolean <- screen-underline-at-idx? screen, idx 992 compare underline?, 1 993 { 994 break-if-!= @@ -1090,12 +1089,12 @@ if ('onhashchange' in window) { 1024 var e-addr/edx: (addr stream byte) <- address e 1025 write e-addr, expected 1026 { -1027 var done?/eax: boolean <- stream-empty? e-addr +1027 var done?/eax: boolean <- stream-empty? e-addr 1028 compare done?, 0 1029 break-if-!= -1030 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx +1030 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx 1031 var g/ebx: grapheme <- copy _g -1032 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr +1032 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr 1033 var expected-grapheme/edx: grapheme <- copy _expected-grapheme 1034 $check-screen-row-in-reverse-from:compare-cells: { 1035 # if expected-grapheme is space, null grapheme is also ok @@ -1109,7 +1108,7 @@ if ('onhashchange' in window) { 1043 { 1044 compare expected-grapheme, 0x20 1045 break-if-!= -1046 var reverse?/eax: boolean <- screen-reverse-at-idx? screen, idx +1046 var reverse?/eax: boolean <- screen-reverse-at-idx? screen, idx 1047 compare reverse?, 1 1048 break-if-!= $check-screen-row-in-reverse-from:compare-cells 1049 } @@ -1135,7 +1134,7 @@ if ('onhashchange' in window) { 1069 print-string-to-real-screen "'\n" 1070 } 1071 $check-screen-row-in-reverse-from:compare-reverse: { -1072 var reverse?/eax: boolean <- screen-reverse-at-idx? screen, idx +1072 var reverse?/eax: boolean <- screen-reverse-at-idx? screen, idx 1073 compare reverse?, 1 1074 { 1075 break-if-!= @@ -1171,12 +1170,12 @@ if ('onhashchange' in window) { 1105 var e-addr/edx: (addr stream byte) <- address e 1106 write e-addr, expected 1107 { -1108 var done?/eax: boolean <- stream-empty? e-addr +1108 var done?/eax: boolean <- stream-empty? e-addr 1109 compare done?, 0 1110 break-if-!= -1111 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx +1111 var _g/eax: grapheme <- screen-grapheme-at-idx screen, idx 1112 var g/ebx: grapheme <- copy _g -1113 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr +1113 var _expected-grapheme/eax: grapheme <- read-grapheme e-addr 1114 var expected-grapheme/edx: grapheme <- copy _expected-grapheme 1115 $check-screen-row-in-blinking-from:compare-cells: { 1116 # if expected-grapheme is space, null grapheme is also ok @@ -1190,7 +1189,7 @@ if ('onhashchange' in window) { 1124 { 1125 compare expected-grapheme, 0x20 1126 break-if-!= -1127 var blinking?/eax: boolean <- screen-blink-at-idx? screen, idx +1127 var blinking?/eax: boolean <- screen-blink-at-idx? screen, idx 1128 compare blinking?, 1 1129 break-if-!= $check-screen-row-in-blinking-from:compare-cells 1130 } @@ -1216,7 +1215,7 @@ if ('onhashchange' in window) { 1150 print-string-to-real-screen "'\n" 1151 } 1152 $check-screen-row-in-blinking-from:compare-blinking: { -1153 var blinking?/eax: boolean <- screen-blink-at-idx? screen, idx +1153 var blinking?/eax: boolean <- screen-blink-at-idx? screen, idx 1154 compare blinking?, 1 1155 { 1156 break-if-!= @@ -1245,7 +1244,7 @@ if ('onhashchange' in window) { 1179 var screen-on-stack: screen 1180 var screen/esi: (addr screen) <- address screen-on-stack 1181 initialize-screen screen, 5/rows, 4/cols -1182 var c/eax: grapheme <- copy 0x61/a +1182 var c/eax: grapheme <- copy 0x61/a 1183 print-grapheme screen, c 1184 check-screen-row screen, 1/row, "a", "F - test-print-single-grapheme" # top-left corner of the screen 1185 } @@ -1263,7 +1262,7 @@ if ('onhashchange' in window) { 1197 var screen/esi: (addr screen) <- address screen-on-stack 1198 initialize-screen screen, 5/rows, 4/cols 1199 move-cursor screen, 1, 4 -1200 var c/eax: grapheme <- copy 0x61/a +1200 var c/eax: grapheme <- copy 0x61/a 1201 print-grapheme screen, c 1202 check-screen-row screen, 1/row, " a", "F - test-move-cursor" # top row 1203 } @@ -1273,7 +1272,7 @@ if ('onhashchange' in window) { 1207 var screen/esi: (addr screen) <- address screen-on-stack 1208 initialize-screen screen, 5/rows, 4/cols 1209 move-cursor screen, 0, 0 -1210 var c/eax: grapheme <- copy 0x61/a +1210 var c/eax: grapheme <- copy 0x61/a 1211 print-grapheme screen, c 1212 check-screen-row screen, 1/row, "a", "F - test-move-cursor-zeroes" # top-left corner of the screen 1213 } @@ -1283,7 +1282,7 @@ if ('onhashchange' in window) { 1217 var screen/esi: (addr screen) <- address screen-on-stack 1218 initialize-screen screen, 5/rows, 4/cols 1219 move-cursor screen, 0, 2 -1220 var c/eax: grapheme <- copy 0x61/a +1220 var c/eax: grapheme <- copy 0x61/a 1221 print-grapheme screen, c 1222 check-screen-row screen, 1/row, " a", "F - test-move-cursor-zero-row" # top row 1223 } @@ -1293,7 +1292,7 @@ if ('onhashchange' in window) { 1227 var screen/esi: (addr screen) <- address screen-on-stack 1228 initialize-screen screen, 5/rows, 4/cols 1229 move-cursor screen, 4, 0 -1230 var c/eax: grapheme <- copy 0x61/a +1230 var c/eax: grapheme <- copy 0x61/a 1231 print-grapheme screen, c 1232 check-screen-row screen, 4/row, "a", "F - test-move-cursor-zero-column" 1233 } @@ -1303,7 +1302,7 @@ if ('onhashchange' in window) { 1237 var screen/esi: (addr screen) <- address screen-on-stack 1238 initialize-screen screen, 5, 3 1239 move-cursor screen, -1/row, 2/col -1240 var c/eax: grapheme <- copy 0x61/a +1240 var c/eax: grapheme <- copy 0x61/a 1241 print-grapheme screen, c 1242 # no move 1243 check-screen-row screen, 1/row, "a", "F - test-move-cursor-negative-row" @@ -1314,7 +1313,7 @@ if ('onhashchange' in window) { 1248 var screen/esi: (addr screen) <- address screen-on-stack 1249 initialize-screen screen, 5, 3 1250 move-cursor screen, 2/row, -1/col -1251 var c/eax: grapheme <- copy 0x61/a +1251 var c/eax: grapheme <- copy 0x61/a 1252 print-grapheme screen, c 1253 # no move 1254 check-screen-row screen, 1/row, "a", "F - test-move-cursor-negative-column" @@ -1325,7 +1324,7 @@ if ('onhashchange' in window) { 1259 var screen/esi: (addr screen) <- address screen-on-stack 1260 initialize-screen screen, 5/rows, 3/cols 1261 move-cursor screen, 1/row, 4/col -1262 var c/eax: grapheme <- copy 0x61/a +1262 var c/eax: grapheme <- copy 0x61/a 1263 print-grapheme screen, c 1264 # top row is empty 1265 check-screen-row screen, 1/row, " ", "F - test-move-cursor-column-too-large" @@ -1338,7 +1337,7 @@ if ('onhashchange' in window) { 1272 var screen/esi: (addr screen) <- address screen-on-stack 1273 initialize-screen screen, 5/rows, 3/cols 1274 move-cursor screen, 1/row, 6/col -1275 var c/eax: grapheme <- copy 0x61/a +1275 var c/eax: grapheme <- copy 0x61/a 1276 print-grapheme screen, c 1277 # top row is empty 1278 check-screen-row screen, 1/row, " ", "F - test-move-cursor-column-too-large-saturates" # top-left corner of the screen @@ -1351,7 +1350,7 @@ if ('onhashchange' in window) { 1285 var screen/esi: (addr screen) <- address screen-on-stack 1286 initialize-screen screen, 5/rows, 3/cols 1287 move-cursor screen, 6/row, 2/col -1288 var c/eax: grapheme <- copy 0x61/a +1288 var c/eax: grapheme <- copy 0x61/a 1289 print-grapheme screen, c 1290 # bottom row shows the character 1291 check-screen-row screen, 5/row, " a", "F - test-move-cursor-row-too-large" @@ -1362,7 +1361,7 @@ if ('onhashchange' in window) { 1296 var screen/esi: (addr screen) <- address screen-on-stack 1297 initialize-screen screen, 5/rows, 3/cols 1298 move-cursor screen, 9/row, 2/col -1299 var c/eax: grapheme <- copy 0x61/a +1299 var c/eax: grapheme <- copy 0x61/a 1300 print-grapheme screen, c 1301 # bottom row shows the character 1302 check-screen-row screen, 5/row, " a", "F - test-move-cursor-row-too-large-saturates" @@ -1373,7 +1372,7 @@ if ('onhashchange' in window) { 1307 var screen/esi: (addr screen) <- address screen-on-stack 1308 initialize-screen screen, 5/rows, 4/cols 1309 move-cursor screen, 1, 4 -1310 var c/eax: grapheme <- copy 0x61/a +1310 var c/eax: grapheme <- copy 0x61/a 1311 print-grapheme screen, c 1312 check-screen-row screen, 1/row, " a", "F - test-check-screen-row-from/baseline" 1313 check-screen-row-from screen, 1/row, 4/col, "a", "F - test-check-screen-row-from" @@ -1394,7 +1393,7 @@ if ('onhashchange' in window) { 1328 initialize-screen screen, 5/rows, 4/cols 1329 # single character starting at bottom right 1330 move-cursor screen, 5/rows, 4/cols -1331 var c/eax: grapheme <- copy 0x61/a +1331 var c/eax: grapheme <- copy 0x61/a 1332 print-grapheme screen, c 1333 check-screen-row-from screen, 5/row, 4/col, "a", "F - test-check-screen-scrolls-on-overflow/baseline" # bottom-right corner of the screen 1334 # multiple characters starting at bottom right @@ -1414,7 +1413,7 @@ if ('onhashchange' in window) { 1348 var screen-on-stack: screen 1349 var screen/esi: (addr screen) <- address screen-on-stack 1350 initialize-screen screen, 5/rows, 4/cols -1351 var c/eax: grapheme <- copy 0x61/a +1351 var c/eax: grapheme <- copy 0x61/a 1352 print-grapheme screen, c 1353 start-color screen, 1/fg, 0/bg 1354 c <- copy 0x62/b @@ -1429,7 +1428,7 @@ if ('onhashchange' in window) { 1363 var screen-on-stack: screen 1364 var screen/esi: (addr screen) <- address screen-on-stack 1365 initialize-screen screen, 5/rows, 4/cols -1366 var c/eax: grapheme <- copy 0x61/a +1366 var c/eax: grapheme <- copy 0x61/a 1367 print-grapheme screen, c 1368 start-color screen, 0/fg, 1/bg 1369 c <- copy 0x62/b @@ -1445,7 +1444,7 @@ if ('onhashchange' in window) { 1379 var screen/esi: (addr screen) <- address screen-on-stack 1380 initialize-screen screen, 5/rows, 4/cols 1381 start-bold screen -1382 var c/eax: grapheme <- copy 0x61/a +1382 var c/eax: grapheme <- copy 0x61/a 1383 print-grapheme screen, c 1384 reset-formatting screen 1385 c <- copy 0x62/b @@ -1461,7 +1460,7 @@ if ('onhashchange' in window) { 1395 var screen/esi: (addr screen) <- address screen-on-stack 1396 initialize-screen screen, 5/rows, 4/cols 1397 start-underline screen -1398 var c/eax: grapheme <- copy 0x61/a +1398 var c/eax: grapheme <- copy 0x61/a 1399 print-grapheme screen, c 1400 reset-formatting screen 1401 c <- copy 0x62/b @@ -1477,7 +1476,7 @@ if ('onhashchange' in window) { 1411 var screen/esi: (addr screen) <- address screen-on-stack 1412 initialize-screen screen, 5/rows, 4/cols 1413 start-reverse-video screen -1414 var c/eax: grapheme <- copy 0x61/a +1414 var c/eax: grapheme <- copy 0x61/a 1415 print-grapheme screen, c 1416 reset-formatting screen 1417 c <- copy 0x62/b @@ -1493,7 +1492,7 @@ if ('onhashchange' in window) { 1427 var screen/esi: (addr screen) <- address screen-on-stack 1428 initialize-screen screen, 5/rows, 4/cols 1429 start-blinking screen -1430 var c/eax: grapheme <- copy 0x61/a +1430 var c/eax: grapheme <- copy 0x61/a 1431 print-grapheme screen, c 1432 reset-formatting screen 1433 c <- copy 0x62/b -- cgit 1.4.1-2-gfad0 ef='/akkartik/view.love/blame/text.lua?id=19615eade0106ad5a3a988b3f1f257367aceb7ec'>^
800a5c0 ^
3b36093 ^
f2299cb ^
9d792a2 ^
f2299cb ^
d58aabe ^
f2299cb ^
d58aabe ^

2ae9cac ^
f2299cb ^
91a08ee ^
2ae9cac ^
5a74b69 ^
f2299cb ^








262c078 ^
f2299cb ^





d58aabe ^

2ae9cac ^
800a5c0 ^
1d3c9f4 ^
18c62fb ^


9d792a2 ^


60f3ded ^
9d792a2 ^





a655c21 ^

348852e ^
18c62fb ^
18c62fb ^

007b965 ^
dd15f15 ^
a655c21 ^

95d88a8 ^
800a5c0 ^
18c62fb ^
72866ec ^
675d1cb ^



5a74b69 ^
72866ec ^
18c62fb ^

2ae9cac ^
62d8911 ^
007b965 ^
2ae9cac ^
18c62fb ^
62d8911 ^
9d792a2 ^


348852e ^
62d8911 ^
f91e520 ^
f2299cb ^
62d8911 ^
f2299cb ^
62d8911 ^

2ae9cac ^
62d8911 ^
18c62fb ^


f2299cb ^

62d8911 ^
1d3c9f4 ^
528c64d ^
dd15f15 ^
62d8911 ^
a655c21 ^

95d88a8 ^
62d8911 ^
8c0f54e ^
62d8911 ^
2ae9cac ^
62d8911 ^
18c62fb ^

62d8911 ^
18c62fb ^

800a5c0 ^


91a08ee ^
b49ff8d ^


2ae9cac ^
a655c21 ^
f029c71 ^
2ae9cac ^
b49ff8d ^


2ae9cac ^
6c44839 ^
18c62fb ^
800a5c0 ^
6c44839 ^

a655c21 ^
6c44839 ^

2ae9cac ^
6c44839 ^


2ae9cac ^
800a5c0 ^
6c44839 ^

007b965 ^
a655c21 ^
18c62fb ^




2ae9cac ^
6c44839 ^
18c62fb ^
a655c21 ^
6c44839 ^

a655c21 ^
6c44839 ^

5107df3 ^
6c44839 ^

5107df3 ^
a655c21 ^
6c44839 ^

a655c21 ^
18c62fb ^

222a11a ^
f029c71 ^
2ae9cac ^
4575648 ^
222a11a ^

bc2c14c ^

bc2c14c ^
007b965 ^
bc2c14c ^



2ae9cac ^
5107df3 ^

9d792a2 ^

a655c21 ^
b49ff8d ^
5107df3 ^
675d1cb ^



5a74b69 ^
9892bc5 ^


2ae9cac ^
5107df3 ^
f029c71 ^
2ae9cac ^
4575648 ^


5107df3 ^
a655c21 ^
5107df3 ^
9d792a2 ^


b49ff8d ^
9892bc5 ^

9656e13 ^
1d3c9f4 ^





1d71091 ^
c28f6ba ^

007b965 ^
c28f6ba ^

9656e13 ^










007b965 ^
9656e13 ^

9501f01 ^
f2299cb ^
262c078 ^



9501f01 ^

2ae9cac ^
6b3ddc8 ^
d61b5df ^
f7d4dee ^

6b91c06 ^

2ae9cac ^
9d792a2 ^
6b10c94 ^
2ae9cac ^
ec410d5 ^


f7d4dee ^
2ae9cac ^
528c64d ^
2ae9cac ^
528c64d ^

e7a985b ^
f2299cb ^
f7d4dee ^

0773b98 ^
ec410d5 ^
5b9d833 ^

9d792a2 ^


ec410d5 ^
9d792a2 ^
2ae9cac ^
ec410d5 ^
5b9d833 ^
f7d4dee ^

f2299cb ^
5a74b69 ^
ec410d5 ^

48b7de4 ^

d61b5df ^
69c88da ^


6b3ddc8 ^
69c88da ^
92bd683 ^

b69801b ^
2859063 ^

d61b5df ^
69c88da ^

d4daac4 ^
69c88da ^
29dac6a ^


a655c21 ^

f7d4dee ^
d4daac4 ^
8f85b29 ^


82cdd9d ^
e20935a ^
4e9298d ^
8f85b29 ^
a655c21 ^
95d88a8 ^

d4daac4 ^


007b965 ^
92bd683 ^

4ff6de9 ^

d61b5df ^
29dac6a ^
a655c21 ^
ea4aa09 ^
29dac6a ^

a655c21 ^

ea4aa09 ^
a655c21 ^
ea4aa09 ^
95d88a8 ^
ea4aa09 ^

860cd49 ^


510b0d1 ^




b163f1b ^

8801300 ^
95d88a8 ^
0218980 ^
476bbcd ^

f7ff4dc ^
95d88a8 ^
476bbcd ^
f7ff4dc ^
476bbcd ^
8efdb89 ^
84973b0 ^
839d2df ^
8efdb89 ^


84973b0 ^
8efdb89 ^
95d88a8 ^

8efdb89 ^
476bbcd ^
1fa295e ^




476bbcd ^
8efdb89 ^

839d2df ^
476bbcd ^
8efdb89 ^
476bbcd ^
8efdb89 ^
476bbcd ^

007b965 ^
476bbcd ^

efd4a8a ^

8801300 ^
95d88a8 ^
39f7178 ^
c9434e4 ^
95d88a8 ^
c9434e4 ^


a472d21 ^
c9434e4 ^

95d88a8 ^

39f7178 ^
c9434e4 ^











007b965 ^
c9434e4 ^

95d88a8 ^
e36559d ^

efd4a8a ^

95d88a8 ^
efd4a8a ^

95d88a8 ^
e2734cd ^

95d88a8 ^
e2734cd ^

9ac68d7 ^
528c64d ^
a14f109 ^
9ac68d7 ^
a14f109 ^

9ac68d7 ^
e7787b9 ^
9ac68d7 ^
e7787b9 ^
c0df6f8 ^

007b965 ^
c0df6f8 ^


9ac68d7 ^



c0df6f8 ^



73cc120 ^



b0bb105 ^



















f2299cb ^



703ed90 ^



961f296 ^
703ed90 ^
703ed90 ^


9ac68d7 ^




5b9d833 ^
9ac68d7 ^


5b9d833 ^


f2299cb ^
f2299cb ^











f7d4dee ^
2ae9cac ^
f7d4dee ^
6b3ddc8 ^
f7d4dee ^
d61b5df ^
29dac6a ^

f7d4dee ^
e839c30 ^

f7d4dee ^
e839c30 ^
29dac6a ^
f7d4dee ^

e839c30 ^
f7d4dee ^
e839c30 ^




f2299cb ^
f7d4dee ^
91a08ee ^
f2299cb ^
f029c71 ^
f2299cb ^
e839c30 ^



f2e5c4f ^
f029c71 ^
9534234 ^
f029c71 ^
f2e5c4f ^

f7d4dee ^
5a74b69 ^
0751b38 ^





d61b5df ^
29dac6a ^
d61b5df ^
9bbfc2b ^


b95206f ^
d61b5df ^
009c7ab ^
43dfa18 ^











22bf3da ^























1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992