(f)
| 363 | |
| 364 | |
| 365 | def read_multilang(f) -> Dict[str, str]: |
| 366 | def find_multilang_next(s, i): |
| 367 | i += 1 |
| 368 | while i < len(s): |
| 369 | try: |
| 370 | c = ord(s[i]) |
| 371 | except: |
| 372 | c = s[i] |
| 373 | if c & 0xC0 == 0x80: |
| 374 | break |
| 375 | if c & 0x80 == 0: |
| 376 | pass |
| 377 | elif c & 0xFE == 0xFE: |
| 378 | i += 6 |
| 379 | elif c & 0xFC == 0xFC: |
| 380 | i += 5 |
| 381 | elif c & 0xF8 == 0xF8: |
| 382 | i += 4 |
| 383 | elif c & 0xF0 == 0xF0: |
| 384 | i += 3 |
| 385 | elif c & 0xE0 == 0xE0: |
| 386 | i += 2 |
| 387 | elif c & 0xC0 == 0xC0: |
| 388 | i += 1 |
| 389 | i += 1 |
| 390 | return i |
| 391 | |
| 392 | s = read_string(f, decode=False) |
| 393 | langs = {} |
| 394 | i = 0 |
| 395 | while i < len(s): |
| 396 | n = find_multilang_next(s, i) |
| 397 | try: |
| 398 | lng = ord(s[i]) & 0x3F |
| 399 | except TypeError: |
| 400 | lng = s[i] & 0x3F |
| 401 | if lng < len(mi.LANGS): |
| 402 | try: |
| 403 | langs[mi.LANGS[lng]] = s[i + 1: n].decode("utf-8") |
| 404 | except: |
| 405 | print(s[i + 1: n]) |
| 406 | i = n |
| 407 | return langs |
| 408 | |
| 409 | |
| 410 | def mwm_unshuffle(x: int) -> int: |
no test coverage detected