diff options
author | gjb <gjb@FreeBSD.org> | 2016-04-11 15:24:59 +0000 |
---|---|---|
committer | gjb <gjb@FreeBSD.org> | 2016-04-11 15:24:59 +0000 |
commit | e0e3598ce13850597a66fd28d102b36881f7d610 (patch) | |
tree | f5194d1ce3fa45b67cf63080fc519fec83abc57a | |
parent | cbc3bd9845ba5fd58e8132f9565cfbc41433938d (diff) | |
parent | 26836fccd261358467b3d92e77ff4695af286de9 (diff) | |
download | FreeBSD-src-e0e3598ce13850597a66fd28d102b36881f7d610.zip FreeBSD-src-e0e3598ce13850597a66fd28d102b36881f7d610.tar.gz |
MFH
Sponsored by: The FreeBSD Foundation
494 files changed, 35709 insertions, 20849 deletions
diff --git a/bin/csh/config_p.h b/bin/csh/config_p.h index f2d7ebc..c25e87a 100644 --- a/bin/csh/config_p.h +++ b/bin/csh/config_p.h @@ -34,7 +34,8 @@ * Note that some machines eg. rs6000 have a vfork, but not * with the berkeley semantics, so we cannot use it there either. */ -#define VFORK +/* #define VFORK */ +#define vfork fork /* * BSDJOBS You have BSD-style job control (both process groups and @@ -80,7 +81,6 @@ /****************** local defines *********************/ #if defined(__FreeBSD__) -#define SAVESIGVEC #define NLS_BUGS #define BSD_STYLE_COLORLS /* Use LC_MESSAGES locale category to open the message catalog */ diff --git a/bin/sh/miscbltin.c b/bin/sh/miscbltin.c index 1537196..56ecae8 100644 --- a/bin/sh/miscbltin.c +++ b/bin/sh/miscbltin.c @@ -341,7 +341,7 @@ umaskcmd(int argc __unused, char **argv __unused) } else { void *set; INTOFF; - if ((set = setmode (ap)) == 0) + if ((set = setmode (ap)) == NULL) error("Illegal number: %s", ap); mask = getmode (set, ~mask & 0777); diff --git a/bin/sh/parser.c b/bin/sh/parser.c index da6defd..3f9732c 100644 --- a/bin/sh/parser.c +++ b/bin/sh/parser.c @@ -628,7 +628,7 @@ simplecmd(union node **rpp, union node *redir) /* If we don't have any redirections already, then we must reset */ /* rpp to be the address of the local redir variable. */ - if (redir == 0) + if (redir == NULL) rpp = &redir; args = NULL; diff --git a/bin/sh/tests/builtins/getopts1.0 b/bin/sh/tests/builtins/getopts1.0 index 64763bc..10d2b59 100644 --- a/bin/sh/tests/builtins/getopts1.0 +++ b/bin/sh/tests/builtins/getopts1.0 @@ -3,7 +3,7 @@ printf -- '-1-\n' set -- -abc getopts "ab:" OPTION -echo ${OPTION} +printf '%s\n' "${OPTION}" # In this case 'getopts' should realize that we have not provided the # required argument for "-b". @@ -14,12 +14,12 @@ echo ${OPTION} printf -- '-2-\n' set -- -ab getopts "ab:" OPTION -echo ${OPTION} +printf '%s\n' "${OPTION}" getopts "ab:" OPTION 3>&2 2>&1 >&3 3>&- -echo ${OPTION} +printf '%s\n' "${OPTION}" # The 'shift' is aimed at causing an error. printf -- '-3-\n' shift 1 getopts "ab:" OPTION -echo ${OPTION} +printf '%s\n' "${OPTION}" diff --git a/bin/sh/tests/builtins/getopts2.0 b/bin/sh/tests/builtins/getopts2.0 index 5a5dbe2..1bd2c32 100644 --- a/bin/sh/tests/builtins/getopts2.0 +++ b/bin/sh/tests/builtins/getopts2.0 @@ -3,4 +3,4 @@ set - -ax getopts ax option set -C getopts ax option -echo $option +printf '%s\n' "$option" diff --git a/bin/sh/tests/builtins/getopts9.0 b/bin/sh/tests/builtins/getopts9.0 index d23fc43..1c35fc6 100644 --- a/bin/sh/tests/builtins/getopts9.0 +++ b/bin/sh/tests/builtins/getopts9.0 @@ -2,8 +2,8 @@ args='-ab' getopts ab opt $args -echo $?:$opt:$OPTARG +printf '%s\n' "$?:$opt:$OPTARG" for dummy in dummy1 dummy2; do getopts ab opt $args - echo $?:$opt:$OPTARG + printf '%s\n' "$?:$opt:$OPTARG" done diff --git a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c index d8bdaa6..d065cdc 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c +++ b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c @@ -50,6 +50,9 @@ #ifdef illumos #include <libproc.h> #endif +#ifdef __FreeBSD__ +#include <spawn.h> +#endif typedef struct dtrace_cmd { void (*dc_func)(struct dtrace_cmd *); /* function to compile arg */ @@ -397,7 +400,41 @@ dof_prune(const char *fname) free(buf); } -#ifdef illumos +#ifdef __FreeBSD__ +/* + * Use nextboot(8) to tell the loader to load DTrace kernel modules during + * the next boot of the system. The nextboot(8) configuration is removed during + * boot, so it will not persist indefinitely. + */ +static void +bootdof_add(void) +{ + char * const nbargv[] = { + "nextboot", "-a", + "-e", "dtraceall_load=\"YES\"", + "-e", "dtrace_dof_load=\"YES\"", + "-e", "dtrace_dof_name=\"/boot/dtrace.dof\"", + "-e", "dtrace_dof_type=\"dtrace_dof\"", + NULL, + }; + pid_t child; + int err, status; + + err = posix_spawnp(&child, "nextboot", NULL, NULL, nbargv, + NULL); + if (err != 0) { + error("failed to execute nextboot: %s", strerror(err)); + exit(E_ERROR); + } + + if (waitpid(child, &status, 0) != child) + fatal("waiting for nextboot"); + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { + error("nextboot returned with status %d", status); + exit(E_ERROR); + } +} +#else static void etcsystem_prune(void) { @@ -508,7 +545,7 @@ etcsystem_add(void) error("added forceload directives to %s\n", g_ofile); } -#endif /* illumos */ +#endif /* !__FreeBSD__ */ static void print_probe_info(const dtrace_probeinfo_t *p) @@ -643,24 +680,24 @@ anon_prog(const dtrace_cmd_t *dcp, dof_hdr_t *dof, int n) p = (uchar_t *)dof; q = p + dof->dofh_loadsz; -#ifdef illumos - oprintf("dof-data-%d=0x%x", n, *p++); - - while (p < q) - oprintf(",0x%x", *p++); - - oprintf(";\n"); -#else +#ifdef __FreeBSD__ /* - * On FreeBSD, the DOF data is handled as a kernel environment (kenv) - * string. We use two hex characters per DOF byte. + * On FreeBSD, the DOF file is read directly during boot - just write + * two hex characters per byte. */ - oprintf("dof-data-%d=%02x", n, *p++); + oprintf("dof-data-%d=", n); while (p < q) oprintf("%02x", *p++); oprintf("\n"); +#else + oprintf("dof-data-%d=0x%x", n, *p++); + + while (p < q) + oprintf(",0x%x", *p++); + + oprintf(";\n"); #endif dtrace_dof_destroy(g_dtp, dof); @@ -1725,8 +1762,7 @@ main(int argc, char *argv[]) #else /* * On FreeBSD, anonymous DOF data is written to - * the DTrace DOF file that the boot loader will - * read if booting with the DTrace option. + * the DTrace DOF file. */ g_ofile = "/boot/dtrace.dof"; #endif @@ -1765,7 +1801,10 @@ main(int argc, char *argv[]) * that itself contains a #pragma D option quiet. */ error("saved anonymous enabling in %s\n", g_ofile); -#ifdef illumos + +#ifdef __FreeBSD__ + bootdof_add(); +#else etcsystem_add(); error("run update_drv(1M) or reboot to enable changes\n"); #endif diff --git a/cddl/contrib/opensolaris/cmd/zdb/zdb.c b/cddl/contrib/opensolaris/cmd/zdb/zdb.c index bb45b5e..64e5cbd 100644 --- a/cddl/contrib/opensolaris/cmd/zdb/zdb.c +++ b/cddl/contrib/opensolaris/cmd/zdb/zdb.c @@ -2156,10 +2156,11 @@ dump_label(const char *dev) uint64_t psize, ashift; int len = strlen(dev) + 1; - if (strncmp(dev, "/dev/dsk/", 9) == 0) { + if (strncmp(dev, ZFS_DISK_ROOTD, strlen(ZFS_DISK_ROOTD)) == 0) { len++; path = malloc(len); - (void) snprintf(path, len, "%s%s", "/dev/rdsk/", dev + 9); + (void) snprintf(path, len, "%s%s", ZFS_RDISK_ROOTD, + dev + strlen(ZFS_DISK_ROOTD)); } else { path = strdup(dev); } diff --git a/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c b/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c index b979833..ce8782f 100644 --- a/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c +++ b/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c @@ -21,12 +21,12 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2011, 2015 by Delphix. All rights reserved. * Copyright (c) 2012 by Frederik Wessels. All rights reserved. * Copyright (c) 2012 Martin Matuska <mm@FreeBSD.org>. All rights reserved. * Copyright (c) 2013 by Prasad Joshi (sTec). All rights reserved. * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>. + * Copyright 2016 Nexenta Systems, Inc. */ #include <solaris.h> @@ -626,7 +626,10 @@ zpool_do_remove(int argc, char **argv) } /* - * zpool labelclear <vdev> + * zpool labelclear [-f] <vdev> + * + * -f Force clearing the label for the vdevs which are members of + * the exported or foreign pools. * * Verifies that the vdev is not active and zeros out the label information * on the device. @@ -634,8 +637,11 @@ zpool_do_remove(int argc, char **argv) int zpool_do_labelclear(int argc, char **argv) { - char *vdev, *name; - int c, fd = -1, ret = 0; + char vdev[MAXPATHLEN]; + char *name = NULL; + struct stat st; + int c, fd, ret = 0; + nvlist_t *config; pool_state_t state; boolean_t inuse = B_FALSE; boolean_t force = B_FALSE; @@ -658,88 +664,110 @@ zpool_do_labelclear(int argc, char **argv) /* get vdev name */ if (argc < 1) { - (void) fprintf(stderr, gettext("missing vdev device name\n")); + (void) fprintf(stderr, gettext("missing vdev name\n")); usage(B_FALSE); } + if (argc > 1) { + (void) fprintf(stderr, gettext("too many arguments\n")); + usage(B_FALSE); + } + + /* + * Check if we were given absolute path and use it as is. + * Otherwise if the provided vdev name doesn't point to a file, + * try prepending dsk path and appending s0. + */ + (void) strlcpy(vdev, argv[0], sizeof (vdev)); + if (vdev[0] != '/' && stat(vdev, &st) != 0) { + char *s; + + (void) snprintf(vdev, sizeof (vdev), "%s/%s", +#ifdef illumos + ZFS_DISK_ROOT, argv[0]); + if ((s = strrchr(argv[0], 's')) == NULL || + !isdigit(*(s + 1))) + (void) strlcat(vdev, "s0", sizeof (vdev)); +#else + "/dev", argv[0]); +#endif + if (stat(vdev, &st) != 0) { + (void) fprintf(stderr, gettext( + "failed to find device %s, try specifying absolute " + "path instead\n"), argv[0]); + return (1); + } + } - vdev = argv[0]; if ((fd = open(vdev, O_RDWR)) < 0) { - (void) fprintf(stderr, gettext("Unable to open %s\n"), vdev); - return (B_FALSE); + (void) fprintf(stderr, gettext("failed to open %s: %s\n"), + vdev, strerror(errno)); + return (1); } - name = NULL; - if (zpool_in_use(g_zfs, fd, &state, &name, &inuse) != 0) { - if (force) - goto wipe_label; - + if (zpool_read_label(fd, &config) != 0 || config == NULL) { (void) fprintf(stderr, - gettext("Unable to determine pool state for %s\n" - "Use -f to force the clearing any label data\n"), vdev); - + gettext("failed to read label from %s\n"), vdev); return (1); } + nvlist_free(config); - if (inuse) { - switch (state) { - default: - case POOL_STATE_ACTIVE: - case POOL_STATE_SPARE: - case POOL_STATE_L2CACHE: - (void) fprintf(stderr, -gettext("labelclear operation failed.\n" - "\tVdev %s is a member (%s), of pool \"%s\".\n" - "\tTo remove label information from this device, export or destroy\n" - "\tthe pool, or remove %s from the configuration of this pool\n" - "\tand retry the labelclear operation\n"), - vdev, zpool_pool_state_to_name(state), name, vdev); - ret = 1; - goto errout; - - case POOL_STATE_EXPORTED: - if (force) - break; + ret = zpool_in_use(g_zfs, fd, &state, &name, &inuse); + if (ret != 0) { + (void) fprintf(stderr, + gettext("failed to check state for %s\n"), vdev); + return (1); + } - (void) fprintf(stderr, -gettext("labelclear operation failed.\n" - "\tVdev %s is a member of the exported pool \"%s\".\n" - "\tUse \"zpool labelclear -f %s\" to force the removal of label\n" - "\tinformation.\n"), - vdev, name, vdev); - ret = 1; - goto errout; + if (!inuse) + goto wipe_label; - case POOL_STATE_POTENTIALLY_ACTIVE: - if (force) - break; + switch (state) { + default: + case POOL_STATE_ACTIVE: + case POOL_STATE_SPARE: + case POOL_STATE_L2CACHE: + (void) fprintf(stderr, gettext( + "%s is a member (%s) of pool \"%s\"\n"), + vdev, zpool_pool_state_to_name(state), name); + ret = 1; + goto errout; - (void) fprintf(stderr, -gettext("labelclear operation failed.\n" - "\tVdev %s is a member of the pool \"%s\".\n" - "\tThis pool is unknown to this system, but may be active on\n" - "\tanother system. Use \'zpool labelclear -f %s\' to force the\n" - "\tremoval of label information.\n"), - vdev, name, vdev); - ret = 1; - goto errout; + case POOL_STATE_EXPORTED: + if (force) + break; + (void) fprintf(stderr, gettext( + "use '-f' to override the following error:\n" + "%s is a member of exported pool \"%s\"\n"), + vdev, name); + ret = 1; + goto errout; - case POOL_STATE_DESTROYED: - /* inuse should never be set for a destoryed pool... */ + case POOL_STATE_POTENTIALLY_ACTIVE: + if (force) break; - } + (void) fprintf(stderr, gettext( + "use '-f' to override the following error:\n" + "%s is a member of potentially active pool \"%s\"\n"), + vdev, name); + ret = 1; + goto errout; + + case POOL_STATE_DESTROYED: + /* inuse should never be set for a destroyed pool */ + assert(0); + break; } wipe_label: - if (zpool_clear_label(fd) != 0) { + ret = zpool_clear_label(fd); + if (ret != 0) { (void) fprintf(stderr, - gettext("Label clear failed on vdev %s\n"), vdev); - ret = 1; + gettext("failed to clear label for %s\n"), vdev); } errout: - close(fd); - if (name != NULL) - free(name); + free(name); + (void) close(fd); return (ret); } diff --git a/cddl/contrib/opensolaris/cmd/zpool/zpool_vdev.c b/cddl/contrib/opensolaris/cmd/zpool/zpool_vdev.c index 227d25a..14f37e1 100644 --- a/cddl/contrib/opensolaris/cmd/zpool/zpool_vdev.c +++ b/cddl/contrib/opensolaris/cmd/zpool/zpool_vdev.c @@ -79,8 +79,6 @@ #include "zpool_util.h" -#define DISK_ROOT "/dev/dsk" -#define RDISK_ROOT "/dev/rdsk" #define BACKUP_SLICE "s2" /* @@ -384,7 +382,7 @@ is_whole_disk(const char *arg) char path[MAXPATHLEN]; (void) snprintf(path, sizeof (path), "%s%s%s", - RDISK_ROOT, strrchr(arg, '/'), BACKUP_SLICE); + ZFS_RDISK_ROOT, strrchr(arg, '/'), BACKUP_SLICE); if ((fd = open(path, O_RDWR | O_NDELAY)) < 0) return (B_FALSE); if (efi_alloc_and_init(fd, EFI_NUMPAR, &label) != 0) { diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c index 133cc6f..aa2f142 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c @@ -20,10 +20,10 @@ */ /* - * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright 2015 RackTop Systems. + * Copyright 2016 Nexenta Systems, Inc. */ /* @@ -1099,9 +1099,7 @@ zpool_open_func(void *arg) } /* - * Given a file descriptor, clear (zero) the label information. This function - * is used in the appliance stack as part of the ZFS sysevent module and - * to implement the "zpool labelclear" command. + * Given a file descriptor, clear (zero) the label information. */ int zpool_clear_label(int fd) @@ -1168,7 +1166,7 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg) */ for (i = 0; i < dirs; i++) { tpool_t *t; - char *rdsk; + char rdsk[MAXPATHLEN]; int dfd; boolean_t config_failed = B_FALSE; DIR *dirp; @@ -1184,15 +1182,17 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg) *end = 0; pathleft = &path[sizeof (path)] - end; +#ifdef illumos /* * Using raw devices instead of block devices when we're * reading the labels skips a bunch of slow operations during * close(2) processing, so we replace /dev/dsk with /dev/rdsk. */ - if (strcmp(path, "/dev/dsk/") == 0) - rdsk = "/dev/"; + if (strcmp(path, ZFS_DISK_ROOTD) == 0) + (void) strlcpy(rdsk, ZFS_RDISK_ROOTD, sizeof (rdsk)); else - rdsk = path; +#endif + (void) strlcpy(rdsk, path, sizeof (rdsk)); if ((dfd = open64(rdsk, O_RDONLY)) < 0 || (dirp = fdopendir(dfd)) == NULL) { diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c index 4dc48fa..658059c 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c @@ -20,10 +20,10 @@ */ /* - * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2015 by Delphix. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright 2016 Nexenta Systems, Inc. */ #include <sys/types.h> @@ -49,8 +49,6 @@ static int read_efi_label(nvlist_t *config, diskaddr_t *sb); -#define DISK_ROOT "/dev/dsk" -#define RDISK_ROOT "/dev/rdsk" #define BACKUP_SLICE "s2" typedef struct prop_flags { @@ -2345,7 +2343,7 @@ zpool_relabel_disk(libzfs_handle_t *hdl, const char *name) "efi_use_whole_disk")) == NULL) return (-1); - (void) snprintf(path, sizeof (path), "%s/%s", RDISK_ROOT, name); + (void) snprintf(path, sizeof (path), "%s/%s", ZFS_RDISK_ROOT, name); if ((fd = open(path, O_RDWR | O_NDELAY)) < 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot " @@ -2421,7 +2419,7 @@ zpool_vdev_online(zpool_handle_t *zhp, const char *path, int flags, } if (wholedisk) { - pathname += strlen(DISK_ROOT) + 1; + pathname += strlen(ZFS_DISK_ROOT) + 1; (void) zpool_relabel_disk(hdl, pathname); } } @@ -3411,8 +3409,8 @@ zpool_vdev_name(libzfs_handle_t *hdl, zpool_handle_t *zhp, nvlist_t *nv, } #ifdef illumos - if (strncmp(path, "/dev/dsk/", 9) == 0) - path += 9; + if (strncmp(path, ZFS_DISK_ROOTD, strlen(ZFS_DISK_ROOTD)) == 0) + path += strlen(ZFS_DISK_ROOTD); if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK, &value) == 0 && value) { @@ -3846,7 +3844,7 @@ read_efi_label(nvlist_t *config, diskaddr_t *sb) if (nvlist_lookup_string(config, ZPOOL_CONFIG_PATH, &path) != 0) return (err); - (void) snprintf(diskname, sizeof (diskname), "%s%s", RDISK_ROOT, + (void) snprintf(diskname, sizeof (diskname), "%s%s", ZFS_RDISK_ROOT, strrchr(path, '/')); if ((fd = open(diskname, O_RDONLY|O_NDELAY)) >= 0) { struct dk_gpt *vtoc; @@ -3931,7 +3929,7 @@ zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, const char *name) start_block = NEW_START_BLOCK; } - (void) snprintf(path, sizeof (path), "%s/%s%s", RDISK_ROOT, name, + (void) snprintf(path, sizeof (path), "%s/%s%s", ZFS_RDISK_ROOT, name, BACKUP_SLICE); if ((fd = open(path, O_RDWR | O_NDELAY)) < 0) { diff --git a/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c b/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c index 1cf303b..4d82a26 100644 --- a/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c +++ b/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c @@ -46,9 +46,11 @@ ATF_TC_HEAD(gettimeofday_err, tc) ATF_TC_BODY(gettimeofday_err, tc) { +#ifdef __NetBSD__ errno = 0; ATF_REQUIRE_ERRNO(EFAULT, gettimeofday((void *)-1, NULL) != 0); +#endif } ATF_TC(gettimeofday_mono); diff --git a/lib/libc/aarch64/gen/Makefile.inc b/lib/libc/aarch64/gen/Makefile.inc index f138008..fe39136 100644 --- a/lib/libc/aarch64/gen/Makefile.inc +++ b/lib/libc/aarch64/gen/Makefile.inc @@ -1,5 +1,7 @@ # $FreeBSD$ +CFLAGS+= -DNO_COMPAT7 + SRCS+= _ctx_start.S \ fabs.S \ flt_rounds.c \ diff --git a/lib/libc/aarch64/sys/Makefile.inc b/lib/libc/aarch64/sys/Makefile.inc index b33b568..5a8c595 100644 --- a/lib/libc/aarch64/sys/Makefile.inc +++ b/lib/libc/aarch64/sys/Makefile.inc @@ -1,5 +1,7 @@ # $FreeBSD$ +MIASM:= ${MIASM:Nfreebsd[467]_*} + SRCS+= __vdso_gettc.c #MDASM= ptrace.S diff --git a/lib/libc/db/hash/hash.c b/lib/libc/db/hash/hash.c index 02503ee..f7b1427 100644 --- a/lib/libc/db/hash/hash.c +++ b/lib/libc/db/hash/hash.c @@ -423,7 +423,8 @@ hdestroy(HTAB *hashp) free(hashp->tmp_buf); if (hashp->fp != -1) { - (void)_fsync(hashp->fp); + if (hashp->save_file) + (void)_fsync(hashp->fp); (void)_close(hashp->fp); } @@ -770,7 +771,7 @@ next_bucket: if (__big_keydata(hashp, bufp, key, data, 1)) return (ERROR); } else { - if (hashp->cpage == 0) + if (hashp->cpage == NULL) return (ERROR); key->data = (u_char *)hashp->cpage->page + bp[ndx]; key->size = (ndx > 1 ? bp[ndx - 1] : hashp->BSIZE) - bp[ndx]; diff --git a/lib/libc/db/hash/hash_buf.c b/lib/libc/db/hash/hash_buf.c index e79e7b3..5c62a2c 100644 --- a/lib/libc/db/hash/hash_buf.c +++ b/lib/libc/db/hash/hash_buf.c @@ -245,7 +245,7 @@ newbuf(HTAB *hashp, u_int32_t addr, BUFHEAD *prev_bp) */ for (xbp = bp; xbp->ovfl;) { next_xbp = xbp->ovfl; - xbp->ovfl = 0; + xbp->ovfl = NULL; xbp = next_xbp; /* Check that ovfl pointer is up date. */ @@ -350,7 +350,7 @@ __buf_free(HTAB *hashp, int do_free, int to_disk) void __reclaim_buf(HTAB *hashp, BUFHEAD *bp) { - bp->ovfl = 0; + bp->ovfl = NULL; bp->addr = 0; bp->flags = 0; BUF_REMOVE(bp); diff --git a/lib/libc/gen/err.c b/lib/libc/gen/err.c index a536e5a..3b32c3d 100644 --- a/lib/libc/gen/err.c +++ b/lib/libc/gen/err.c @@ -96,7 +96,7 @@ errc(int eval, int code, const char *fmt, ...) void verrc(int eval, int code, const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) { @@ -121,7 +121,7 @@ errx(int eval, const char *fmt, ...) void verrx(int eval, const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) @@ -161,7 +161,7 @@ warnc(int code, const char *fmt, ...) void vwarnc(int code, const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) { @@ -183,7 +183,7 @@ warnx(const char *fmt, ...) void vwarnx(const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) diff --git a/lib/libc/gen/getmntinfo.c b/lib/libc/gen/getmntinfo.c index 99f82aa..606fea7 100644 --- a/lib/libc/gen/getmntinfo.c +++ b/lib/libc/gen/getmntinfo.c @@ -56,7 +56,7 @@ getmntinfo(struct statfs **mntbufp, int flags) if (mntbuf) free(mntbuf); bufsize = (mntsize + 1) * sizeof(struct statfs); - if ((mntbuf = (struct statfs *)malloc(bufsize)) == 0) + if ((mntbuf = malloc(bufsize)) == NULL) return (0); if ((mntsize = getfsstat(mntbuf, bufsize, flags)) < 0) return (0); diff --git a/lib/libc/gen/opendir.c b/lib/libc/gen/opendir.c index 54928e7..bf4dea3 100644 --- a/lib/libc/gen/opendir.c +++ b/lib/libc/gen/opendir.c @@ -209,7 +209,7 @@ _filldir(DIR *dirp, bool use_current_pos) * On the second pass, save pointers to each one. * Then sort the pointers and remove duplicate names. */ - for (dpv = 0;;) { + for (dpv = NULL;;) { n = 0; ddptr = buf; while (ddptr < ddeptr) { diff --git a/lib/libc/gen/semctl.c b/lib/libc/gen/semctl.c index c68734d..0e418f6 100644 --- a/lib/libc/gen/semctl.c +++ b/lib/libc/gen/semctl.c @@ -29,7 +29,9 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#ifndef NO_COMPAT7 #define _WANT_SEMUN_OLD +#endif #include <sys/types.h> #include <sys/ipc.h> @@ -38,8 +40,10 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> int __semctl(int semid, int semnum, int cmd, union semun *arg); +#ifndef NO_COMPAT7 int freebsd7___semctl(int semid, int semnum, int cmd, union semun_old *arg); int freebsd7_semctl(int semid, int semnum, int cmd, ...); +#endif int semctl(int semid, int semnum, int cmd, ...) @@ -61,6 +65,7 @@ semctl(int semid, int semnum, int cmd, ...) return (__semctl(semid, semnum, cmd, semun_ptr)); } +#ifndef NO_COMPAT7 int freebsd7_semctl(int semid, int semnum, int cmd, ...) { @@ -82,3 +87,4 @@ freebsd7_semctl(int semid, int semnum, int cmd, ...) } __sym_compat(semctl, freebsd7_semctl, FBSD_1.0); +#endif diff --git a/lib/libc/gen/tls.c b/lib/libc/gen/tls.c index 7932055..dd1e7df 100644 --- a/lib/libc/gen/tls.c +++ b/lib/libc/gen/tls.c @@ -285,7 +285,7 @@ _init_tls(void) while (*sp++ != 0) ; aux = (Elf_Auxinfo *) sp; - phdr = 0; + phdr = NULL; phent = phnum = 0; for (auxp = aux; auxp->a_type != AT_NULL; auxp++) { switch (auxp->a_type) { @@ -302,7 +302,7 @@ _init_tls(void) break; } } - if (phdr == 0 || phent != sizeof(Elf_Phdr) || phnum == 0) + if (phdr == NULL || phent != sizeof(Elf_Phdr) || phnum == 0) return; for (i = 0; (unsigned) i < phnum; i++) { diff --git a/lib/libc/include/compat.h b/lib/libc/include/compat.h index b20fac5..e83d13c 100644 --- a/lib/libc/include/compat.h +++ b/lib/libc/include/compat.h @@ -38,9 +38,11 @@ #define __sym_compat(sym,impl,verid) \ .symver impl, sym@verid +#ifndef NO_COMPAT7 __sym_compat(__semctl, freebsd7___semctl, FBSD_1.0); __sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0); __sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0); +#endif #undef __sym_compat diff --git a/lib/libc/locale/xlocale_private.h b/lib/libc/locale/xlocale_private.h index 502b548..77b9ff4 100644 --- a/lib/libc/locale/xlocale_private.h +++ b/lib/libc/locale/xlocale_private.h @@ -155,12 +155,11 @@ __attribute__((unused)) static void xlocale_release(void *val) { struct xlocale_refcounted *obj = val; - long count = atomic_fetchadd_long(&(obj->retain_count), -1) - 1; - if (count < 0) { - if (0 != obj->destructor) { - obj->destructor(obj); - } - } + long count; + + count = atomic_fetchadd_long(&(obj->retain_count), -1) - 1; + if (count < 0 && obj->destructor != NULL) + obj->destructor(obj); } /** diff --git a/lib/libc/net/base64.c b/lib/libc/net/base64.c index 8a9c59e..2c4cfe3 100644 --- a/lib/libc/net/base64.c +++ b/lib/libc/net/base64.c @@ -210,7 +210,7 @@ b64_pton(const char *src, u_char *target, size_t targsize) break; pos = strchr(Base64, ch); - if (pos == 0) /* A non-base64 character. */ + if (pos == NULL) /* A non-base64 character. */ return (-1); switch (state) { diff --git a/lib/libc/net/getifaddrs.c b/lib/libc/net/getifaddrs.c index f8633d5..4c04e9e 100644 --- a/lib/libc/net/getifaddrs.c +++ b/lib/libc/net/getifaddrs.c @@ -85,7 +85,7 @@ getifaddrs(struct ifaddrs **pif) size_t needed; char *buf; char *next; - struct ifaddrs *cif = 0; + struct ifaddrs *cif; char *p, *p0; struct rt_msghdr *rtm; struct if_msghdrl *ifm; @@ -214,6 +214,7 @@ getifaddrs(struct ifaddrs **pif) ift = ifa; idx = 0; + cif = NULL; for (next = buf; next < buf + needed; next += rtm->rtm_msglen) { rtm = (struct rt_msghdr *)(void *)next; if (rtm->rtm_version != RTM_VERSION) diff --git a/lib/libc/net/getservent.c b/lib/libc/net/getservent.c index 6a68ef5..45a5355 100644 --- a/lib/libc/net/getservent.c +++ b/lib/libc/net/getservent.c @@ -406,14 +406,14 @@ files_servent(void *retval, void *mdata, va_list ap) continue; gotname: - if (proto == 0 || strcmp(serv->s_proto, proto) == 0) + if (proto == NULL || strcmp(serv->s_proto, proto) == 0) rv = NS_SUCCESS; break; case nss_lt_id: if (port != serv->s_port) continue; - if (proto == 0 || strcmp(serv->s_proto, proto) == 0) + if (proto == NULL || strcmp(serv->s_proto, proto) == 0) rv = NS_SUCCESS; break; case nss_lt_all: diff --git a/lib/libc/net/rcmd.c b/lib/libc/net/rcmd.c index c7ca870..7b92f08 100644 --- a/lib/libc/net/rcmd.c +++ b/lib/libc/net/rcmd.c @@ -207,7 +207,7 @@ rcmd_af(char **ahost, int rport, const char *locuser, const char *remuser, } } lport--; - if (fd2p == 0) { + if (fd2p == NULL) { _write(s, "", 1); lport = 0; } else { diff --git a/lib/libc/posix1e/acl_support_nfs4.c b/lib/libc/posix1e/acl_support_nfs4.c index 1eece98..7dd7f04 100644 --- a/lib/libc/posix1e/acl_support_nfs4.c +++ b/lib/libc/posix1e/acl_support_nfs4.c @@ -81,7 +81,7 @@ static const char * format_flag(uint32_t *var, const struct flagnames_struct *flags) { - for (; flags->name != 0; flags++) { + for (; flags->name != NULL; flags++) { if ((flags->flag & *var) == 0) continue; diff --git a/lib/libc/resolv/mtctxres.c b/lib/libc/resolv/mtctxres.c index f02a7f5..c2aea38 100644 --- a/lib/libc/resolv/mtctxres.c +++ b/lib/libc/resolv/mtctxres.c @@ -75,7 +75,7 @@ __res_init_ctx(void) { return (0); } - if ((mt = malloc(sizeof (mtctxres_t))) == 0) { + if ((mt = malloc(sizeof(mtctxres_t))) == NULL) { errno = ENOMEM; return (-1); } @@ -94,10 +94,7 @@ __res_init_ctx(void) { static void __res_destroy_ctx(void *value) { - mtctxres_t *mt = (mtctxres_t *)value; - - if (mt != 0) - free(mt); + free(value); } #endif @@ -130,9 +127,9 @@ ___mtctxres(void) { * that fails return a global context. */ if (mt_key_initialized) { - if (((mt = pthread_getspecific(key)) != 0) || + if (((mt = pthread_getspecific(key)) != NULL) || (__res_init_ctx() == 0 && - (mt = pthread_getspecific(key)) != 0)) { + (mt = pthread_getspecific(key)) != NULL)) { return (mt); } } diff --git a/lib/libc/resolv/res_init.c b/lib/libc/resolv/res_init.c index 8832342..9856322 100644 --- a/lib/libc/resolv/res_init.c +++ b/lib/libc/resolv/res_init.c @@ -315,7 +315,7 @@ __res_vinit(res_state statp, int preinit) { while (*cp != '\0' && *cp != ' ' && *cp != '\t' && *cp != '\n') cp++; *cp = '\0'; - *pp++ = 0; + *pp++ = NULL; } #define MATCH(line, name) \ @@ -391,7 +391,7 @@ __res_vinit(res_state statp, int preinit) { while (*cp != '\0' && *cp != ' ' && *cp != '\t') cp++; *cp = '\0'; - *pp++ = 0; + *pp++ = NULL; havesearch = 1; continue; } diff --git a/lib/libc/resolv/res_mkupdate.c b/lib/libc/resolv/res_mkupdate.c index c076c1e5..3ebb242 100644 --- a/lib/libc/resolv/res_mkupdate.c +++ b/lib/libc/resolv/res_mkupdate.c @@ -1175,7 +1175,7 @@ res_protocolname(int num) { if (protolist == (struct valuelist *)0) res_buildprotolist(); pp = cgetprotobynumber(num); - if (pp == 0) { + if (pp == NULL) { (void) sprintf(number, "%d", num); return (number); } @@ -1190,7 +1190,7 @@ res_servicename(u_int16_t port, const char *proto) { /*%< Host byte order. */ if (servicelist == (struct valuelist *)0) res_buildservicelist(); ss = cgetservbyport(htons(port), proto); - if (ss == 0) { + if (ss == NULL) { (void) sprintf(number, "%d", port); return (number); } diff --git a/lib/libc/rpc/auth_none.c b/lib/libc/rpc/auth_none.c index 0b846eb..32bebeb 100644 --- a/lib/libc/rpc/auth_none.c +++ b/lib/libc/rpc/auth_none.c @@ -83,9 +83,9 @@ authnone_create(void) XDR *xdrs; mutex_lock(&authnone_lock); - if (ap == 0) { - ap = (struct authnone_private *)calloc(1, sizeof (*ap)); - if (ap == 0) { + if (ap == NULL) { + ap = calloc(1, sizeof (*ap)); + if (ap == NULL) { mutex_unlock(&authnone_lock); return (0); } diff --git a/lib/libc/rpc/clnt_perror.c b/lib/libc/rpc/clnt_perror.c index 15d7280..d674fbb 100644 --- a/lib/libc/rpc/clnt_perror.c +++ b/lib/libc/rpc/clnt_perror.c @@ -64,8 +64,8 @@ static char * _buf(void) { - if (buf == 0) - buf = (char *)malloc(CLNT_PERROR_BUFLEN); + if (buf == NULL) + buf = malloc(CLNT_PERROR_BUFLEN); return (buf); } @@ -85,7 +85,7 @@ clnt_sperror(CLIENT *rpch, const char *s) assert(s != NULL); str = _buf(); /* side effect: sets CLNT_PERROR_BUFLEN */ - if (str == 0) + if (str == NULL) return (0); len = CLNT_PERROR_BUFLEN; strstart = str; @@ -240,7 +240,7 @@ clnt_spcreateerror(const char *s) assert(s != NULL); str = _buf(); /* side effect: sets CLNT_PERROR_BUFLEN */ - if (str == 0) + if (str == NULL) return(0); len = CLNT_PERROR_BUFLEN; i = snprintf(str, len, "%s: ", s); diff --git a/lib/libc/rpc/mt_misc.c b/lib/libc/rpc/mt_misc.c index 0ec4d8a..a1b8057 100644 --- a/lib/libc/rpc/mt_misc.c +++ b/lib/libc/rpc/mt_misc.c @@ -95,7 +95,7 @@ rce_key_init(void) struct rpc_createerr * __rpc_createerr(void) { - struct rpc_createerr *rce_addr = 0; + struct rpc_createerr *rce_addr = NULL; if (thr_main()) return (&rpc_createerr); diff --git a/lib/libc/rpc/rpcdname.c b/lib/libc/rpc/rpcdname.c index f214b21..08b5d7d 100644 --- a/lib/libc/rpc/rpcdname.c +++ b/lib/libc/rpc/rpcdname.c @@ -43,20 +43,20 @@ __FBSDID("$FreeBSD$"); #include <string.h> #include "un-namespace.h" -static char *default_domain = 0; +static char *default_domain; static char * get_default_domain(void) { char temp[256]; - if (default_domain) + if (default_domain != NULL) return (default_domain); if (getdomainname(temp, sizeof(temp)) < 0) return (0); if ((int) strlen(temp) > 0) { - default_domain = (char *)malloc((strlen(temp)+(unsigned)1)); - if (default_domain == 0) + default_domain = malloc((strlen(temp) + (unsigned)1)); + if (default_domain == NULL) return (0); (void) strcpy(default_domain, temp); return (default_domain); @@ -73,7 +73,7 @@ get_default_domain(void) int __rpc_get_default_domain(char **domain) { - if ((*domain = get_default_domain()) != 0) + if ((*domain = get_default_domain()) != NULL) return (0); return (-1); } diff --git a/lib/libc/softfloat/timesoftfloat.c b/lib/libc/softfloat/timesoftfloat.c index 98b6ba2..b97c8b0 100644 --- a/lib/libc/softfloat/timesoftfloat.c +++ b/lib/libc/softfloat/timesoftfloat.c @@ -2068,14 +2068,14 @@ static void roundingPrecisionName = "80"; } else { - roundingPrecisionName = 0; + roundingPrecisionName = NULL; } #ifdef FLOATX80 floatx80_rounding_precision = roundingPrecision; #endif switch ( roundingMode ) { case 0: - roundingModeName = 0; + roundingModeName = NULL; roundingCode = float_round_nearest_even; break; case ROUND_NEAREST_EVEN: @@ -2098,7 +2098,7 @@ static void float_rounding_mode = roundingCode; switch ( tininessMode ) { case 0: - tininessModeName = 0; + tininessModeName = NULL; tininessCode = float_tininess_after_rounding; break; case TININESS_BEFORE_ROUNDING: diff --git a/lib/libc/uuid/uuid_to_string.c b/lib/libc/uuid/uuid_to_string.c index f816391..35f8581 100644 --- a/lib/libc/uuid/uuid_to_string.c +++ b/lib/libc/uuid/uuid_to_string.c @@ -49,7 +49,7 @@ uuid_to_string(const uuid_t *u, char **s, uint32_t *status) *status = uuid_s_ok; /* Why allow a NULL-pointer here? */ - if (s == 0) + if (s == NULL) return; if (u == NULL) { diff --git a/lib/libc/xdr/xdr_mem.c b/lib/libc/xdr/xdr_mem.c index 0455a5a..ecefb2e 100644 --- a/lib/libc/xdr/xdr_mem.c +++ b/lib/libc/xdr/xdr_mem.c @@ -215,7 +215,7 @@ xdrmem_setpos(XDR *xdrs, u_int pos) static int32_t * xdrmem_inline_aligned(XDR *xdrs, u_int len) { - int32_t *buf = 0; + int32_t *buf = NULL; if (xdrs->x_handy >= len) { xdrs->x_handy -= len; diff --git a/lib/libedit/filecomplete.c b/lib/libedit/filecomplete.c index 10d44e4..4527302 100644 --- a/lib/libedit/filecomplete.c +++ b/lib/libedit/filecomplete.c @@ -471,7 +471,7 @@ fn_complete(EditLine *el, /* these can be used by function called in completion_matches() */ /* or (*attempted_completion_function)() */ - if (point != 0) + if (point != NULL) *point = (int)(li->cursor - li->buffer); if (end != NULL) *end = (int)(li->lastchar - li->buffer); @@ -483,7 +483,7 @@ fn_complete(EditLine *el, &el->el_scratch), cur_off - (int)len, cur_off); } else - matches = 0; + matches = NULL; if (!attempted_completion_function || (over != NULL && !*over && !matches)) matches = completion_matches( diff --git a/lib/libedit/vi.c b/lib/libedit/vi.c index 0a426fd..6b0a775 100644 --- a/lib/libedit/vi.c +++ b/lib/libedit/vi.c @@ -1088,7 +1088,7 @@ vi_history_word(EditLine *el, Int c __attribute__((__unused__))) if (wp == NULL) return CC_ERROR; - wep = wsp = 0; + wep = wsp = NULL; do { while (Isspace(*wp)) wp++; @@ -1101,7 +1101,7 @@ vi_history_word(EditLine *el, Int c __attribute__((__unused__))) } while ((!el->el_state.doingarg || --el->el_state.argument > 0) && *wp != 0); - if (wsp == 0 || (el->el_state.doingarg && el->el_state.argument != 0)) + if (wsp == NULL || (el->el_state.doingarg && el->el_state.argument != 0)) return CC_ERROR; cv_undo(el); diff --git a/lib/libfetch/ftp.c b/lib/libfetch/ftp.c index 4e650b9..dd58c0d 100644 --- a/lib/libfetch/ftp.c +++ b/lib/libfetch/ftp.c @@ -929,7 +929,7 @@ ftp_authenticate(conn_t *conn, struct url *url, struct url *purl) if (*pwd == '\0') pwd = getenv("FTP_PASSWORD"); if (pwd == NULL || *pwd == '\0') { - if ((logname = getlogin()) == 0) + if ((logname = getlogin()) == NULL) logname = FTP_ANONYMOUS_USER; if ((len = snprintf(pbuf, MAXLOGNAME + 1, "%s@", logname)) < 0) len = 0; diff --git a/lib/libpam/modules/pam_krb5/pam_krb5.c b/lib/libpam/modules/pam_krb5/pam_krb5.c index 19592e3..8c72e28 100644 --- a/lib/libpam/modules/pam_krb5/pam_krb5.c +++ b/lib/libpam/modules/pam_krb5/pam_krb5.c @@ -860,7 +860,7 @@ verify_krb_v5_tgt(krb5_context context, krb5_ccache ccache, services[0] = "host"; services[1] = pam_service; services[2] = NULL; - keyblock = 0; + keyblock = NULL; retval = -1; for (service = &services[0]; *service != NULL; service++) { retval = krb5_sname_to_principal(context, NULL, *service, diff --git a/lib/libpam/modules/pam_login_access/login_access.c b/lib/libpam/modules/pam_login_access/login_access.c index dacb9d7..9b6d257 100644 --- a/lib/libpam/modules/pam_login_access/login_access.c +++ b/lib/libpam/modules/pam_login_access/login_access.c @@ -124,7 +124,7 @@ list_match(char *list, const char *item, * the match is affected by any exceptions. */ - for (tok = strtok(list, sep); tok != 0; tok = strtok((char *) 0, sep)) { + for (tok = strtok(list, sep); tok != NULL; tok = strtok((char *) 0, sep)) { if (strcasecmp(tok, "EXCEPT") == 0) /* EXCEPT: give up */ break; if ((match = (*match_fn)(tok, item)) != 0) /* YES */ @@ -135,7 +135,7 @@ list_match(char *list, const char *item, if (match != NO) { while ((tok = strtok((char *) 0, sep)) && strcasecmp(tok, "EXCEPT")) /* VOID */ ; - if (tok == 0 || list_match((char *) 0, item, match_fn) == NO) + if (tok == NULL || list_match((char *) 0, item, match_fn) == NO) return (match); } return (NO); diff --git a/lib/libthr/thread/thr_affinity.c b/lib/libthr/thread/thr_affinity.c index 7e9b0f9..e76ca2a 100644 --- a/lib/libthr/thread/thr_affinity.c +++ b/lib/libthr/thread/thr_affinity.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread_np.h> #include <sys/param.h> diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c index 0cac528..ff9eb2d5 100644 --- a/lib/libthr/thread/thr_attr.c +++ b/lib/libthr/thread/thr_attr.c @@ -89,10 +89,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_autoinit.c b/lib/libthr/thread/thr_autoinit.c index c425569..7d9e52c 100644 --- a/lib/libthr/thread/thr_autoinit.c +++ b/lib/libthr/thread/thr_autoinit.c @@ -29,10 +29,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <pthread.h> #include "thr_private.h" diff --git a/lib/libthr/thread/thr_barrier.c b/lib/libthr/thread/thr_barrier.c index 45ca41a..dd8f48e 100644 --- a/lib/libthr/thread/thr_barrier.c +++ b/lib/libthr/thread/thr_barrier.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <stdlib.h> @@ -34,6 +35,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_barrier) <= PAGE_SIZE, + "pthread_barrier is too large for off-page"); + __weak_reference(_pthread_barrier_init, pthread_barrier_init); __weak_reference(_pthread_barrier_wait, pthread_barrier_wait); __weak_reference(_pthread_barrier_destroy, pthread_barrier_destroy); diff --git a/lib/libthr/thread/thr_barrierattr.c b/lib/libthr/thread/thr_barrierattr.c index e98a66f..acaa059 100644 --- a/lib/libthr/thread/thr_barrierattr.c +++ b/lib/libthr/thread/thr_barrierattr.c @@ -24,10 +24,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <stdlib.h> diff --git a/lib/libthr/thread/thr_cancel.c b/lib/libthr/thread/thr_cancel.c index beae707..c080931 100644 --- a/lib/libthr/thread/thr_cancel.c +++ b/lib/libthr/thread/thr_cancel.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_clean.c b/lib/libthr/thread/thr_clean.c index f200726..62e3db2 100644 --- a/lib/libthr/thread/thr_clean.c +++ b/lib/libthr/thread/thr_clean.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <signal.h> #include <errno.h> diff --git a/lib/libthr/thread/thr_concurrency.c b/lib/libthr/thread/thr_concurrency.c index 61f0c4a..24714e6 100644 --- a/lib/libthr/thread/thr_concurrency.c +++ b/lib/libthr/thread/thr_concurrency.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_cond.c b/lib/libthr/thread/thr_cond.c index 934f9a0..0e37b70 100644 --- a/lib/libthr/thread/thr_cond.c +++ b/lib/libthr/thread/thr_cond.c @@ -26,10 +26,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <stdlib.h> #include <errno.h> @@ -40,6 +41,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_cond) <= PAGE_SIZE, + "pthread_cond too large"); + /* * Prototypes */ diff --git a/lib/libthr/thread/thr_condattr.c b/lib/libthr/thread/thr_condattr.c index 7ce827b..906ea77 100644 --- a/lib/libthr/thread/thr_condattr.c +++ b/lib/libthr/thread/thr_condattr.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <stdlib.h> #include <string.h> diff --git a/lib/libthr/thread/thr_create.c b/lib/libthr/thread/thr_create.c index 81a95da..ee2c727 100644 --- a/lib/libthr/thread/thr_create.c +++ b/lib/libthr/thread/thr_create.c @@ -23,10 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/types.h> #include <sys/rtprio.h> diff --git a/lib/libthr/thread/thr_detach.c b/lib/libthr/thread/thr_detach.c index c494f7c..f03731f 100644 --- a/lib/libthr/thread/thr_detach.c +++ b/lib/libthr/thread/thr_detach.c @@ -23,11 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/types.h> #include <errno.h> diff --git a/lib/libthr/thread/thr_equal.c b/lib/libthr/thread/thr_equal.c index 2f602b5..a9eed8c 100644 --- a/lib/libthr/thread/thr_equal.c +++ b/lib/libthr/thread/thr_equal.c @@ -25,9 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_event.c b/lib/libthr/thread/thr_event.c index 716d21e..982f86a 100644 --- a/lib/libthr/thread/thr_event.c +++ b/lib/libthr/thread/thr_event.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "thr_private.h" void diff --git a/lib/libthr/thread/thr_exit.c b/lib/libthr/thread/thr_exit.c index 7001311..e76623c 100644 --- a/lib/libthr/thread/thr_exit.c +++ b/lib/libthr/thread/thr_exit.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #ifdef _PTHREAD_FORCED_UNWIND diff --git a/lib/libthr/thread/thr_fork.c b/lib/libthr/thread/thr_fork.c index 531e09c..1a646b0 100644 --- a/lib/libthr/thread/thr_fork.c +++ b/lib/libthr/thread/thr_fork.c @@ -23,8 +23,6 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ /* @@ -57,6 +55,9 @@ * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/syscall.h> #include "namespace.h" #include <errno.h> diff --git a/lib/libthr/thread/thr_getcpuclockid.c b/lib/libthr/thread/thr_getcpuclockid.c index b4ec666..1ad6a08 100644 --- a/lib/libthr/thread/thr_getcpuclockid.c +++ b/lib/libthr/thread/thr_getcpuclockid.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_getprio.c b/lib/libthr/thread/thr_getprio.c index f0d1a296..033f4f5 100644 --- a/lib/libthr/thread/thr_getprio.c +++ b/lib/libthr/thread/thr_getprio.c @@ -25,9 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_getschedparam.c b/lib/libthr/thread/thr_getschedparam.c index ff6c3ab..04ff399 100644 --- a/lib/libthr/thread/thr_getschedparam.c +++ b/lib/libthr/thread/thr_getschedparam.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/types.h> #include <sys/rtprio.h> diff --git a/lib/libthr/thread/thr_getthreadid_np.c b/lib/libthr/thread/thr_getthreadid_np.c index f963a56..e7b496e 100644 --- a/lib/libthr/thread/thr_getthreadid_np.c +++ b/lib/libthr/thread/thr_getthreadid_np.c @@ -21,10 +21,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include <pthread_np.h> diff --git a/lib/libthr/thread/thr_info.c b/lib/libthr/thread/thr_info.c index 350c848..4e4f41e 100644 --- a/lib/libthr/thread/thr_info.c +++ b/lib/libthr/thread/thr_info.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <stdlib.h> #include <string.h> diff --git a/lib/libthr/thread/thr_init.c b/lib/libthr/thread/thr_init.c index c9f30ab..c852406 100644 --- a/lib/libthr/thread/thr_init.c +++ b/lib/libthr/thread/thr_init.c @@ -29,10 +29,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/types.h> #include <sys/signalvar.h> diff --git a/lib/libthr/thread/thr_join.c b/lib/libthr/thread/thr_join.c index a39ff67..42bd749 100644 --- a/lib/libthr/thread/thr_join.c +++ b/lib/libthr/thread/thr_join.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_kern.c b/lib/libthr/thread/thr_kern.c index b5a8358..6463f1d 100644 --- a/lib/libthr/thread/thr_kern.c +++ b/lib/libthr/thread/thr_kern.c @@ -23,10 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/types.h> #include <sys/signalvar.h> #include <sys/rtprio.h> diff --git a/lib/libthr/thread/thr_kill.c b/lib/libthr/thread/thr_kill.c index 8b0f683..15928b1 100644 --- a/lib/libthr/thread/thr_kill.c +++ b/lib/libthr/thread/thr_kill.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <signal.h> diff --git a/lib/libthr/thread/thr_list.c b/lib/libthr/thread/thr_list.c index d27d87d..ae1f124 100644 --- a/lib/libthr/thread/thr_list.c +++ b/lib/libthr/thread/thr_list.c @@ -23,10 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/types.h> #include <sys/queue.h> diff --git a/lib/libthr/thread/thr_main_np.c b/lib/libthr/thread/thr_main_np.c index bfa8b87..9558adf 100644 --- a/lib/libthr/thread/thr_main_np.c +++ b/lib/libthr/thread/thr_main_np.c @@ -23,10 +23,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include <pthread_np.h> @@ -37,10 +38,10 @@ __weak_reference(_pthread_main_np, pthread_main_np); /* - * Provide the equivelant to Solaris thr_main() function + * Provide the equivalent to Solaris thr_main() function. */ int -_pthread_main_np() +_pthread_main_np(void) { if (!_thr_initial) diff --git a/lib/libthr/thread/thr_multi_np.c b/lib/libthr/thread/thr_multi_np.c index 339a21d..74379f5 100644 --- a/lib/libthr/thread/thr_multi_np.c +++ b/lib/libthr/thread/thr_multi_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include <pthread_np.h> @@ -37,7 +38,7 @@ __weak_reference(_pthread_multi_np, pthread_multi_np); int -_pthread_multi_np() +_pthread_multi_np(void) { /* Return to multi-threaded scheduling mode: */ diff --git a/lib/libthr/thread/thr_mutex.c b/lib/libthr/thread/thr_mutex.c index 865e4cf..28fd9ee 100644 --- a/lib/libthr/thread/thr_mutex.c +++ b/lib/libthr/thread/thr_mutex.c @@ -34,10 +34,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <stdbool.h> #include "namespace.h" #include <stdlib.h> @@ -51,6 +52,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_mutex) <= PAGE_SIZE, + "pthread_mutex is too large for off-page"); + /* * For adaptive mutexes, how many times to spin doing trylock2 * before entering the kernel to block diff --git a/lib/libthr/thread/thr_mutexattr.c b/lib/libthr/thread/thr_mutexattr.c index fa349cf..a9e07c2 100644 --- a/lib/libthr/thread/thr_mutexattr.c +++ b/lib/libthr/thread/thr_mutexattr.c @@ -25,8 +25,6 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ /* @@ -59,6 +57,9 @@ * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <string.h> #include <stdlib.h> diff --git a/lib/libthr/thread/thr_once.c b/lib/libthr/thread/thr_once.c index 208b703..80739da 100644 --- a/lib/libthr/thread/thr_once.c +++ b/lib/libthr/thread/thr_once.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_printf.c b/lib/libthr/thread/thr_printf.c index a64b446..ed94287 100644 --- a/lib/libthr/thread/thr_printf.c +++ b/lib/libthr/thread/thr_printf.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <stdarg.h> #include <string.h> #include <unistd.h> diff --git a/lib/libthr/thread/thr_pspinlock.c b/lib/libthr/thread/thr_pspinlock.c index 1c9b412..1c83b25 100644 --- a/lib/libthr/thread/thr_pspinlock.c +++ b/lib/libthr/thread/thr_pspinlock.c @@ -26,10 +26,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <stdlib.h> @@ -38,6 +39,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_spinlock) <= PAGE_SIZE, + "pthread_spinlock is too large for off-page"); + #define SPIN_COUNT 100000 __weak_reference(_pthread_spin_init, pthread_spin_init); diff --git a/lib/libthr/thread/thr_resume_np.c b/lib/libthr/thread/thr_resume_np.c index 53377da..d11e328 100644 --- a/lib/libthr/thread/thr_resume_np.c +++ b/lib/libthr/thread/thr_resume_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_rtld.c b/lib/libthr/thread/thr_rtld.c index 6c407d1..6f5347d 100644 --- a/lib/libthr/thread/thr_rtld.c +++ b/lib/libthr/thread/thr_rtld.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + /* * A lockless rwlock for rtld. */ diff --git a/lib/libthr/thread/thr_rwlock.c b/lib/libthr/thread/thr_rwlock.c index aadd0e9..748eb52 100644 --- a/lib/libthr/thread/thr_rwlock.c +++ b/lib/libthr/thread/thr_rwlock.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <errno.h> #include <limits.h> #include <stdlib.h> @@ -35,6 +36,9 @@ #include "un-namespace.h" #include "thr_private.h" +_Static_assert(sizeof(struct pthread_rwlock) <= PAGE_SIZE, + "pthread_rwlock is too large for off-page"); + __weak_reference(_pthread_rwlock_destroy, pthread_rwlock_destroy); __weak_reference(_pthread_rwlock_init, pthread_rwlock_init); __weak_reference(_pthread_rwlock_rdlock, pthread_rwlock_rdlock); diff --git a/lib/libthr/thread/thr_rwlockattr.c b/lib/libthr/thread/thr_rwlockattr.c index b9e442e..56174ed 100644 --- a/lib/libthr/thread/thr_rwlockattr.c +++ b/lib/libthr/thread/thr_rwlockattr.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <stdlib.h> diff --git a/lib/libthr/thread/thr_self.c b/lib/libthr/thread/thr_self.c index 72cda7e..65ad631 100644 --- a/lib/libthr/thread/thr_self.c +++ b/lib/libthr/thread/thr_self.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_sem.c b/lib/libthr/thread/thr_sem.c index f20bde3..a8b02ac 100644 --- a/lib/libthr/thread/thr_sem.c +++ b/lib/libthr/thread/thr_sem.c @@ -26,10 +26,11 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/types.h> #include <sys/queue.h> diff --git a/lib/libthr/thread/thr_setprio.c b/lib/libthr/thread/thr_setprio.c index 4b7d2c0..6f8a009 100644 --- a/lib/libthr/thread/thr_setprio.c +++ b/lib/libthr/thread/thr_setprio.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_setschedparam.c b/lib/libthr/thread/thr_setschedparam.c index 6e98fb4..4db09e7 100644 --- a/lib/libthr/thread/thr_setschedparam.c +++ b/lib/libthr/thread/thr_setschedparam.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/param.h> #include <errno.h> diff --git a/lib/libthr/thread/thr_sig.c b/lib/libthr/thread/thr_sig.c index ebb6c58..ce7e70b 100644 --- a/lib/libthr/thread/thr_sig.c +++ b/lib/libthr/thread/thr_sig.c @@ -22,10 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/param.h> #include <sys/types.h> diff --git a/lib/libthr/thread/thr_single_np.c b/lib/libthr/thread/thr_single_np.c index 81bdf8c..32bc586 100644 --- a/lib/libthr/thread/thr_single_np.c +++ b/lib/libthr/thread/thr_single_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include <pthread_np.h> @@ -36,7 +37,8 @@ __weak_reference(_pthread_single_np, pthread_single_np); -int _pthread_single_np() +int +_pthread_single_np(void) { /* Enter single-threaded (non-POSIX) scheduling mode: */ diff --git a/lib/libthr/thread/thr_sleepq.c b/lib/libthr/thread/thr_sleepq.c index c5dcac5..5ecd6f9 100644 --- a/lib/libthr/thread/thr_sleepq.c +++ b/lib/libthr/thread/thr_sleepq.c @@ -22,10 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <stdlib.h> #include "thr_private.h" diff --git a/lib/libthr/thread/thr_spec.c b/lib/libthr/thread/thr_spec.c index b53c4b7..46d4ddf 100644 --- a/lib/libthr/thread/thr_spec.c +++ b/lib/libthr/thread/thr_spec.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <sys/mman.h> #include <signal.h> diff --git a/lib/libthr/thread/thr_spinlock.c b/lib/libthr/thread/thr_spinlock.c index 380d10d..6639612 100644 --- a/lib/libthr/thread/thr_spinlock.c +++ b/lib/libthr/thread/thr_spinlock.c @@ -25,11 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/types.h> #include <pthread.h> #include <libc_private.h> diff --git a/lib/libthr/thread/thr_stack.c b/lib/libthr/thread/thr_stack.c index 74e1329..3510a74 100644 --- a/lib/libthr/thread/thr_stack.c +++ b/lib/libthr/thread/thr_stack.c @@ -23,10 +23,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/types.h> #include <sys/mman.h> #include <sys/queue.h> diff --git a/lib/libthr/thread/thr_suspend_np.c b/lib/libthr/thread/thr_suspend_np.c index 284619d..48d4bc1 100644 --- a/lib/libthr/thread/thr_suspend_np.c +++ b/lib/libthr/thread/thr_suspend_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_switch_np.c b/lib/libthr/thread/thr_switch_np.c index f6ffb07..4380386 100644 --- a/lib/libthr/thread/thr_switch_np.c +++ b/lib/libthr/thread/thr_switch_np.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <errno.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_symbols.c b/lib/libthr/thread/thr_symbols.c index ea323c5..9eef8db 100644 --- a/lib/libthr/thread/thr_symbols.c +++ b/lib/libthr/thread/thr_symbols.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include <sys/types.h> #include <stddef.h> #include <pthread.h> diff --git a/lib/libthr/thread/thr_umtx.c b/lib/libthr/thread/thr_umtx.c index 37e5df1..ebf344b 100644 --- a/lib/libthr/thread/thr_umtx.c +++ b/lib/libthr/thread/thr_umtx.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "thr_private.h" #include "thr_umtx.h" diff --git a/lib/libthr/thread/thr_yield.c b/lib/libthr/thread/thr_yield.c index c3f68f2..1739495 100644 --- a/lib/libthr/thread/thr_yield.c +++ b/lib/libthr/thread/thr_yield.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include <pthread.h> #include <sched.h> diff --git a/lib/libusb/libusb20.c b/lib/libusb/libusb20.c index 1de3a26..2eb75f1 100644 --- a/lib/libusb/libusb20.c +++ b/lib/libusb/libusb20.c @@ -139,8 +139,8 @@ libusb20_tr_close(struct libusb20_transfer *xfer) free(xfer->ppBuffer); } /* reset variable fields in case the transfer is opened again */ - xfer->priv_sc0 = 0; - xfer->priv_sc1 = 0; + xfer->priv_sc0 = NULL; + xfer->priv_sc1 = NULL; xfer->is_opened = 0; xfer->is_pending = 0; xfer->is_cancel = 0; diff --git a/lib/libusbhid/descr.c b/lib/libusbhid/descr.c index 0c66342..4ca9dd7 100644 --- a/lib/libusbhid/descr.c +++ b/lib/libusbhid/descr.c @@ -159,7 +159,7 @@ hid_use_report_desc(unsigned char *data, unsigned int size) report_desc_t r; r = malloc(sizeof(*r) + size); - if (r == 0) { + if (r == NULL) { errno = ENOMEM; return (NULL); } diff --git a/lib/libusbhid/usage.c b/lib/libusbhid/usage.c index eeff818..3960dad 100644 --- a/lib/libusbhid/usage.c +++ b/lib/libusbhid/usage.c @@ -77,9 +77,9 @@ hid_init(const char *hidname) char line[100], name[100], *p, *n; int no; int lineno; - struct usage_page *curpage = 0; + struct usage_page *curpage = NULL; - if (hidname == 0) + if (hidname == NULL) hidname = _PATH_HIDTABLE; f = fopen(hidname, "r"); @@ -124,7 +124,7 @@ hid_init(const char *hidname) curpage->pagesize++; } else { if (npages >= npagesmax) { - if (pages == 0) { + if (pages == NULL) { npagesmax = 5; pages = malloc(npagesmax * sizeof (struct usage_page)); diff --git a/sbin/fsck_msdosfs/dir.c b/sbin/fsck_msdosfs/dir.c index e8d6475..d20762b 100644 --- a/sbin/fsck_msdosfs/dir.c +++ b/sbin/fsck_msdosfs/dir.c @@ -925,6 +925,7 @@ int reconnect(int dosfs, struct bootblock *boot, struct fatEntry *fat, cl_t head) { struct dosDirEntry d; + int len; u_char *p; if (!ask(1, "Reconnect")) @@ -976,14 +977,15 @@ reconnect(int dosfs, struct bootblock *boot, struct fatEntry *fat, cl_t head) boot->NumFiles++; /* Ensure uniqueness of entry here! XXX */ memset(&d, 0, sizeof d); - (void)snprintf(d.name, sizeof(d.name), "%u", head); + /* worst case -1 = 4294967295, 10 digits */ + len = snprintf(d.name, sizeof(d.name), "%u", head); d.flags = 0; d.head = head; d.size = fat[head].length * boot->ClusterSize; - memset(p, 0, 32); - memset(p, ' ', 11); - memcpy(p, d.name, strlen(d.name)); + memcpy(p, d.name, len); + memset(p + len, ' ', 11 - len); + memset(p + 11, 0, 32 - 11); p[26] = (u_char)d.head; p[27] = (u_char)(d.head >> 8); if (boot->ClustMask == CLUST32_MASK) { diff --git a/sbin/geom/class/eli/geli.8 b/sbin/geom/class/eli/geli.8 index ed425da..e8a1ef0 100644 --- a/sbin/geom/class/eli/geli.8 +++ b/sbin/geom/class/eli/geli.8 @@ -51,7 +51,7 @@ utility: .Pp .Nm .Cm init -.Op Fl bPTv +.Op Fl bgPTv .Op Fl a Ar aalgo .Op Fl B Ar backupfile .Op Fl e Ar ealgo @@ -88,7 +88,7 @@ utility: .Ar prov .Nm .Cm configure -.Op Fl bBtT +.Op Fl bBgGtT .Ar prov ... .Nm .Cm setkey @@ -293,6 +293,11 @@ The default and recommended algorithm is .Nm AES-XTS . .Nm NULL is unencrypted. +.It Fl g +Enable booting from this encrypted root filesystem. +The boot loader prompts for the passphrase and loads +.Xr loader 8 +from the encrypted partition. .It Fl i Ar iterations Number of iterations to use with PKCS#5v2 when processing User Key passphrase component. @@ -485,6 +490,13 @@ For more information, see the description of the subcommand. .It Fl B Remove the BOOT flag from the given providers. +.It Fl g +Enable booting from this encrypted root filesystem. +The boot loader prompts for the passphrase and loads +.Xr loader 8 +from the encrypted partition. +.It Fl G +Deactivate booting from this encrypted root partition. .It Fl t Enable TRIM/UNMAP passthru. For more information, see the description of the diff --git a/sbin/geom/class/eli/geom_eli.c b/sbin/geom/class/eli/geom_eli.c index 0c6ca2c..c804622 100644 --- a/sbin/geom/class/eli/geom_eli.c +++ b/sbin/geom/class/eli/geom_eli.c @@ -82,13 +82,13 @@ static int eli_backup_create(struct gctl_req *req, const char *prov, /* * Available commands: * - * init [-bhPv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-V version] prov + * init [-bgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov * label - alias for 'init' * attach [-dprv] [-j passfile] [-k keyfile] prov * detach [-fl] prov ... * stop - alias for 'detach' * onetime [-d] [-a aalgo] [-e ealgo] [-l keylen] prov - * configure [-bB] prov ... + * configure [-bBgGtT] prov ... * setkey [-pPv] [-n keyno] [-j passfile] [-J newpassfile] [-k keyfile] [-K newkeyfile] prov * delkey [-afv] [-n keyno] prov * suspend [-v] -a | prov ... @@ -108,6 +108,7 @@ struct g_command class_commands[] = { { 'b', "boot", NULL, G_TYPE_BOOL }, { 'B', "backupfile", "", G_TYPE_STRING }, { 'e', "ealgo", "", G_TYPE_STRING }, + { 'g', "geliboot", NULL, G_TYPE_BOOL }, { 'i', "iterations", "-1", G_TYPE_NUMBER }, { 'J', "newpassfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, { 'K', "newkeyfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, @@ -118,7 +119,7 @@ struct g_command class_commands[] = { { 'V', "mdversion", "-1", G_TYPE_NUMBER }, G_OPT_SENTINEL }, - "[-bPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov" + "[-bgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov" }, { "label", G_FLAG_VERBOSE, eli_main, { @@ -126,6 +127,7 @@ struct g_command class_commands[] = { { 'b', "boot", NULL, G_TYPE_BOOL }, { 'B', "backupfile", "", G_TYPE_STRING }, { 'e', "ealgo", "", G_TYPE_STRING }, + { 'g', "geliboot", NULL, G_TYPE_BOOL }, { 'i', "iterations", "-1", G_TYPE_NUMBER }, { 'J', "newpassfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, { 'K', "newkeyfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, @@ -180,11 +182,13 @@ struct g_command class_commands[] = { { { 'b', "boot", NULL, G_TYPE_BOOL }, { 'B', "noboot", NULL, G_TYPE_BOOL }, + { 'g', "geliboot", NULL, G_TYPE_BOOL }, + { 'G', "nogeliboot", NULL, G_TYPE_BOOL }, { 't', "trim", NULL, G_TYPE_BOOL }, { 'T', "notrim", NULL, G_TYPE_BOOL }, G_OPT_SENTINEL }, - "[-bBtT] prov ..." + "[-bBgGtT] prov ..." }, { "setkey", G_FLAG_VERBOSE, eli_main, { @@ -702,6 +706,8 @@ eli_init(struct gctl_req *req) md.md_flags = 0; if (gctl_get_int(req, "boot")) md.md_flags |= G_ELI_FLAG_BOOT; + if (gctl_get_int(req, "geliboot")) + md.md_flags |= G_ELI_FLAG_GELIBOOT; if (gctl_get_int(req, "notrim")) md.md_flags |= G_ELI_FLAG_NODELETE; md.md_ealgo = CRYPTO_ALGORITHM_MIN - 1; @@ -906,7 +912,7 @@ eli_attach(struct gctl_req *req) static void eli_configure_detached(struct gctl_req *req, const char *prov, int boot, - int trim) + int geliboot, int trim) { struct g_eli_metadata md; bool changed = 0; @@ -928,6 +934,20 @@ eli_configure_detached(struct gctl_req *req, const char *prov, int boot, changed = 1; } + if (geliboot == 1 && (md.md_flags & G_ELI_FLAG_GELIBOOT)) { + if (verbose) + printf("GELIBOOT flag already configured for %s.\n", prov); + } else if (geliboot == 0 && !(md.md_flags & G_ELI_FLAG_GELIBOOT)) { + if (verbose) + printf("GELIBOOT flag not configured for %s.\n", prov); + } else if (geliboot >= 0) { + if (geliboot) + md.md_flags |= G_ELI_FLAG_GELIBOOT; + else + md.md_flags &= ~G_ELI_FLAG_GELIBOOT; + changed = 1; + } + if (trim == 0 && (md.md_flags & G_ELI_FLAG_NODELETE)) { if (verbose) printf("TRIM disable flag already configured for %s.\n", prov); @@ -951,8 +971,8 @@ static void eli_configure(struct gctl_req *req) { const char *prov; - bool boot, noboot, trim, notrim; - int doboot, dotrim; + bool boot, noboot, geliboot, nogeliboot, trim, notrim; + int doboot, dogeliboot, dotrim; int i, nargs; nargs = gctl_get_int(req, "nargs"); @@ -963,6 +983,8 @@ eli_configure(struct gctl_req *req) boot = gctl_get_int(req, "boot"); noboot = gctl_get_int(req, "noboot"); + geliboot = gctl_get_int(req, "geliboot"); + nogeliboot = gctl_get_int(req, "nogeliboot"); trim = gctl_get_int(req, "trim"); notrim = gctl_get_int(req, "notrim"); @@ -976,6 +998,16 @@ eli_configure(struct gctl_req *req) else if (noboot) doboot = 0; + dogeliboot = -1; + if (geliboot && nogeliboot) { + gctl_error(req, "Options -g and -G are mutually exclusive."); + return; + } + if (geliboot) + dogeliboot = 1; + else if (nogeliboot) + dogeliboot = 0; + dotrim = -1; if (trim && notrim) { gctl_error(req, "Options -t and -T are mutually exclusive."); @@ -986,7 +1018,7 @@ eli_configure(struct gctl_req *req) else if (notrim) dotrim = 0; - if (doboot == -1 && dotrim == -1) { + if (doboot == -1 && dogeliboot == -1 && dotrim == -1) { gctl_error(req, "No option given."); return; } @@ -997,7 +1029,7 @@ eli_configure(struct gctl_req *req) for (i = 0; i < nargs; i++) { prov = gctl_get_ascii(req, "arg%d", i); if (!eli_is_attached(prov)) - eli_configure_detached(req, prov, doboot, dotrim); + eli_configure_detached(req, prov, doboot, dogeliboot, dotrim); } } diff --git a/sbin/geom/class/part/geom_part.c b/sbin/geom/class/part/geom_part.c index 44309f9..4f57f00 100644 --- a/sbin/geom/class/part/geom_part.c +++ b/sbin/geom/class/part/geom_part.c @@ -1126,6 +1126,7 @@ gpart_write_partcode(struct ggeom *gp, int idx, void *code, ssize_t size) err(EXIT_FAILURE, "%s", dsf); free(buf); close(fd); + printf("partcode written to %s\n", pp->lg_name); } else errx(EXIT_FAILURE, "invalid partition index"); } @@ -1172,6 +1173,9 @@ gpart_write_partcode_vtoc8(struct ggeom *gp, int idx, void *code) } if (installed == 0) errx(EXIT_FAILURE, "%s: no partitions", gp->lg_name); + else + printf("partcode written to %s\n", + idx != 0 ? pp->lg_name: gp->lg_name); } static void @@ -1193,10 +1197,8 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl) bootcode); if (error) errc(EXIT_FAILURE, error, "internal error"); - } else { + } else bootcode = NULL; - bootsize = 0; - } s = gctl_get_ascii(req, "class"); if (s == NULL) @@ -1220,21 +1222,23 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl) s = find_geomcfg(gp, "scheme"); if (s == NULL) errx(EXIT_FAILURE, "Scheme not found for geom %s", gp->lg_name); - vtoc8 = 0; if (strcmp(s, "VTOC8") == 0) vtoc8 = 1; + else + vtoc8 = 0; if (gctl_has_param(req, GPART_PARAM_PARTCODE)) { s = gctl_get_ascii(req, GPART_PARAM_PARTCODE); - partsize = vtoc8 != 0 ? VTOC_BOOTSIZE : bootsize * 1024; + if (vtoc8 != 0) + partsize = VTOC_BOOTSIZE; + else + partsize = 1024 * 1024; /* Arbitrary limit. */ partcode = gpart_bootfile_read(s, &partsize); error = gctl_delete_param(req, GPART_PARAM_PARTCODE); if (error) errc(EXIT_FAILURE, error, "internal error"); - } else { + } else partcode = NULL; - partsize = 0; - } if (gctl_has_param(req, GPART_PARAM_INDEX)) { if (partcode == NULL) diff --git a/sbin/reboot/nextboot.8 b/sbin/reboot/nextboot.8 index df46a0c..d006c3f 100644 --- a/sbin/reboot/nextboot.8 +++ b/sbin/reboot/nextboot.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 17, 2015 +.Dd April 9, 2016 .Dt NEXTBOOT 8 .Os .Sh NAME @@ -32,6 +32,7 @@ .Nd "specify an alternate kernel and boot flags for the next reboot" .Sh SYNOPSIS .Nm +.Op Fl a .Op Fl e Ar variable=value .Op Fl f .Op Fl k Ar kernel @@ -53,6 +54,12 @@ configuration. .Pp The options are as follows: .Bl -tag -width ".Fl o Ar options" +.It Fl a +This option causes +.Nm +to append to an existing configuration in +.Pa /boot/nextboot.conf . +By default any existing configuration is overwritten. .It Fl D Invoking .Nm diff --git a/sbin/reboot/nextboot.sh b/sbin/reboot/nextboot.sh index 655e533..a90fdeb 100644 --- a/sbin/reboot/nextboot.sh +++ b/sbin/reboot/nextboot.sh @@ -26,6 +26,7 @@ # # $FreeBSD$ +append="NO" delete="NO" kenv= force="NO" @@ -48,12 +49,17 @@ add_kenv() } display_usage() { - echo "Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options]" - echo " nextboot -D" + cat <<-EOF + Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options] + nextboot -D + EOF } -while getopts "De:fk:o:" argument ; do +while getopts "aDe:fk:o:" argument ; do case "${argument}" in + a) + append="YES" + ;; D) delete="YES" ;; @@ -106,7 +112,19 @@ df -Tn "/boot/" 2>/dev/null | while read _fs _type _other ; do EOF done -cat > ${nextboot_file} << EOF +set -e + +nextboot_tmp=$(mktemp $(dirname ${nextboot_file})/nextboot.XXXXXX) + +if [ ${append} = "YES" -a -f ${nextboot_file} ]; then + cp -f ${nextboot_file} ${nextboot_tmp} +fi + +cat >> ${nextboot_tmp} << EOF nextboot_enable="YES" $kenv EOF + +fsync ${nextboot_tmp} + +mv ${nextboot_tmp} ${nextboot_file} diff --git a/sys/amd64/cloudabi64/cloudabi64_sysvec.c b/sys/amd64/cloudabi64/cloudabi64_sysvec.c index 16d3ef9..b94c0ef 100644 --- a/sys/amd64/cloudabi64/cloudabi64_sysvec.c +++ b/sys/amd64/cloudabi64/cloudabi64_sysvec.c @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> +#include <sys/imgact.h> #include <sys/kernel.h> #include <sys/proc.h> #include <sys/sysent.h> @@ -47,6 +48,45 @@ extern const char *cloudabi64_syscallnames[]; extern struct sysent cloudabi64_sysent[]; static int +cloudabi64_fixup_tcb(register_t **stack_base, struct image_params *imgp) +{ + int error; + register_t tcbptr; + + /* Place auxiliary vector and TCB on the stack. */ + error = cloudabi64_fixup(stack_base, imgp); + if (error != 0) + return (error); + + /* + * On x86-64, the TCB is referred to by %fs:0. Take some space + * from the top of the stack to store a single element array, + * containing a pointer to the TCB. %fs base will point to this. + */ + tcbptr = (register_t)*stack_base; + return (copyout(&tcbptr, --*stack_base, sizeof(tcbptr))); +} + +static void +cloudabi64_proc_setregs(struct thread *td, struct image_params *imgp, + unsigned long stack) +{ + struct trapframe *regs; + + exec_setregs(td, imgp, stack); + + /* + * The stack now contains a pointer to the TCB, the TCB itself, + * and the auxiliary vector. Let %rdx point to the auxiliary + * vector, and set %fs base to the address of the TCB. + */ + regs = td->td_frame; + regs->tf_rdi = stack + sizeof(register_t) + + roundup(sizeof(cloudabi64_tcb_t), sizeof(register_t)); + (void)cpu_set_user_tls(td, (void *)stack); +} + +static int cloudabi64_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { struct trapframe *frame = td->td_frame; @@ -109,16 +149,29 @@ cloudabi64_schedtail(struct thread *td) frame->tf_rdx = td->td_tid; } -void +int cloudabi64_thread_setregs(struct thread *td, - const cloudabi64_threadattr_t *attr) + const cloudabi64_threadattr_t *attr, uint64_t tcb) { struct trapframe *frame; stack_t stack; + uint64_t tcbptr; + int error; + + /* + * On x86-64, the TCB is referred to by %fs:0. Take some space + * from the top of the stack to store a single element array, + * containing a pointer to the TCB. %fs base will point to this. + */ + tcbptr = rounddown(attr->stack + attr->stack_size - sizeof(tcbptr), + _Alignof(tcbptr)); + error = copyout(&tcb, (void *)tcbptr, sizeof(tcb)); + if (error != 0) + return (error); /* Perform standard register initialization. */ stack.ss_sp = (void *)attr->stack; - stack.ss_size = attr->stack_size; + stack.ss_size = tcbptr - attr->stack; cpu_set_upcall_kse(td, (void *)attr->entry_point, NULL, &stack); /* @@ -129,12 +182,14 @@ cloudabi64_thread_setregs(struct thread *td, frame = td->td_frame; frame->tf_rdi = td->td_tid; frame->tf_rsi = attr->argument; + + return (cpu_set_user_tls(td, (void *)tcbptr)); } static struct sysentvec cloudabi64_elf_sysvec = { .sv_size = CLOUDABI64_SYS_MAXSYSCALL, .sv_table = cloudabi64_sysent, - .sv_fixup = cloudabi64_fixup, + .sv_fixup = cloudabi64_fixup_tcb, .sv_name = "CloudABI ELF64", .sv_coredump = elf64_coredump, .sv_pagesize = PAGE_SIZE, @@ -143,6 +198,7 @@ static struct sysentvec cloudabi64_elf_sysvec = { .sv_usrstack = USRSTACK, .sv_stackprot = VM_PROT_READ | VM_PROT_WRITE, .sv_copyout_strings = cloudabi64_copyout_strings, + .sv_setregs = cloudabi64_proc_setregs, .sv_flags = SV_ABI_CLOUDABI | SV_CAPSICUM | SV_LP64, .sv_set_syscall_retval = cloudabi64_set_syscall_retval, .sv_fetch_syscall_args = cloudabi64_fetch_syscall_args, diff --git a/sys/amd64/vmm/amd/svm_msr.c b/sys/amd64/vmm/amd/svm_msr.c index 088751a..49208a3 100644 --- a/sys/amd64/vmm/amd/svm_msr.c +++ b/sys/amd64/vmm/amd/svm_msr.c @@ -156,6 +156,11 @@ svm_wrmsr(struct svm_softc *sc, int vcpu, u_int num, uint64_t val, bool *retu) * Ignore writes to the "Interrupt Pending Message" MSR. */ break; + case MSR_K8_UCODE_UPDATE: + /* + * Ignore writes to microcode update register. + */ + break; default: error = EINVAL; break; diff --git a/sys/arm/allwinner/a10_ahci.c b/sys/arm/allwinner/a10_ahci.c index a6c5f5d..009ef5f 100644 --- a/sys/arm/allwinner/a10_ahci.c +++ b/sys/arm/allwinner/a10_ahci.c @@ -47,7 +47,7 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/ofw_bus_subr.h> #include <dev/ahci/ahci.h> -#include <arm/allwinner/a10_clk.h> +#include <dev/extres/clk/clk.h> /* * Allwinner a1x/a2x/a8x SATA attachment. This is just the AHCI register @@ -117,6 +117,8 @@ __FBSDID("$FreeBSD$"); #define AHCI_P0PHYCR 0x0078 #define AHCI_P0PHYSR 0x007C +#define PLL_FREQ 100000000 + static void inline ahci_set(struct resource *m, bus_size_t off, uint32_t set) { @@ -295,8 +297,11 @@ ahci_a10_attach(device_t dev) { int error; struct ahci_controller *ctlr; + clk_t clk_pll, clk_gate; ctlr = device_get_softc(dev); + clk_pll = clk_gate = NULL; + ctlr->quirks = AHCI_Q_NOPMP; ctlr->vendorid = 0; ctlr->deviceid = 0; @@ -307,15 +312,36 @@ ahci_a10_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return (ENXIO); - /* Turn on the PLL for SATA */ - a10_clk_ahci_activate(); - + /* Enable clocks */ + error = clk_get_by_ofw_index(dev, 0, &clk_pll); + if (error != 0) { + device_printf(dev, "Cannot get PLL clock\n"); + goto fail; + } + error = clk_get_by_ofw_index(dev, 1, &clk_gate); + if (error != 0) { + device_printf(dev, "Cannot get gate clock\n"); + goto fail; + } + error = clk_set_freq(clk_pll, PLL_FREQ, CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(dev, "Cannot set PLL frequency\n"); + goto fail; + } + error = clk_enable(clk_pll); + if (error != 0) { + device_printf(dev, "Cannot enable PLL\n"); + goto fail; + } + error = clk_enable(clk_gate); + if (error != 0) { + device_printf(dev, "Cannot enable clk gate\n"); + goto fail; + } + /* Reset controller */ - if ((error = ahci_a10_ctlr_reset(dev)) != 0) { - bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, - ctlr->r_mem); - return (error); - }; + if ((error = ahci_a10_ctlr_reset(dev)) != 0) + goto fail; /* * No MSI registers on this platform. @@ -330,6 +356,14 @@ ahci_a10_attach(device_t dev) * Note: ahci_attach will release ctlr->r_mem on errors automatically */ return (ahci_attach(dev)); + +fail: + if (clk_gate != NULL) + clk_release(clk_gate); + if (clk_pll != NULL) + clk_release(clk_pll); + bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, ctlr->r_mem); + return (error); } static int diff --git a/sys/arm/allwinner/a10_clk.c b/sys/arm/allwinner/a10_clk.c deleted file mode 100644 index 46bd6ad..0000000 --- a/sys/arm/allwinner/a10_clk.c +++ /dev/null @@ -1,862 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* Simple clock driver for Allwinner A10 */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/malloc.h> -#include <sys/rman.h> -#include <machine/bus.h> - -#include <dev/ofw/openfirm.h> -#include <dev/ofw/ofw_bus_subr.h> - -#include "a10_clk.h" - -#define TCON_PLL_WORST 1000000 -#define TCON_PLL_N_MIN 1 -#define TCON_PLL_N_MAX 15 -#define TCON_PLL_M_MIN 9 -#define TCON_PLL_M_MAX 127 -#define TCON_PLLREF_SINGLE 3000 /* kHz */ -#define TCON_PLLREF_DOUBLE 6000 /* kHz */ -#define TCON_RATE_KHZ(rate_hz) ((rate_hz) / 1000) -#define TCON_RATE_HZ(rate_khz) ((rate_khz) * 1000) -#define HDMI_DEFAULT_RATE 297000000 -#define DEBE_DEFAULT_RATE 300000000 - -struct a10_ccm_softc { - struct resource *res; - bus_space_tag_t bst; - bus_space_handle_t bsh; - struct mtx mtx; - int pll6_enabled; - int ehci_cnt; - int ohci_cnt; - int usbphy_cnt; - int usb_cnt; -}; - -static struct a10_ccm_softc *a10_ccm_sc = NULL; - -static int a10_clk_usbphy_activate(struct a10_ccm_softc *sc); -static int a10_clk_usbphy_deactivate(struct a10_ccm_softc *sc); -static int a10_clk_usb_activate(struct a10_ccm_softc *sc); -static int a10_clk_usb_deactivate(struct a10_ccm_softc *sc); - -#define CCM_LOCK(sc) mtx_lock(&(sc)->mtx); -#define CCM_UNLOCK(sc) mtx_unlock(&(sc)->mtx); -#define CCM_LOCK_ASSERT(sc) mtx_assert(&(sc)->mtx, MA_OWNED) -#define ccm_read_4(sc, reg) \ - bus_space_read_4((sc)->bst, (sc)->bsh, (reg)) -#define ccm_write_4(sc, reg, val) \ - bus_space_write_4((sc)->bst, (sc)->bsh, (reg), (val)) - -static int -a10_ccm_probe(device_t dev) -{ - - if (!ofw_bus_status_okay(dev)) - return (ENXIO); - - if (ofw_bus_is_compatible(dev, "allwinner,sun4i-ccm")) { - device_set_desc(dev, "Allwinner Clock Control Module"); - return(BUS_PROBE_DEFAULT); - } - - return (ENXIO); -} - -static int -a10_ccm_attach(device_t dev) -{ - struct a10_ccm_softc *sc = device_get_softc(dev); - int rid = 0; - - if (a10_ccm_sc) - return (ENXIO); - - sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); - if (!sc->res) { - device_printf(dev, "could not allocate resource\n"); - return (ENXIO); - } - - sc->bst = rman_get_bustag(sc->res); - sc->bsh = rman_get_bushandle(sc->res); - - mtx_init(&sc->mtx, "a10_ccm", NULL, MTX_DEF); - - a10_ccm_sc = sc; - - return (0); -} - -static device_method_t a10_ccm_methods[] = { - DEVMETHOD(device_probe, a10_ccm_probe), - DEVMETHOD(device_attach, a10_ccm_attach), - { 0, 0 } -}; - -static driver_t a10_ccm_driver = { - "a10_ccm", - a10_ccm_methods, - sizeof(struct a10_ccm_softc), -}; - -static devclass_t a10_ccm_devclass; - -EARLY_DRIVER_MODULE(a10_ccm, simplebus, a10_ccm_driver, a10_ccm_devclass, 0, 0, - BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE); - -int -a10_clk_ehci_activate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (++sc->ehci_cnt == 1) { - /* Gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_EHCI0; /* AHB clock gate ehci0 */ - reg_value |= CCM_AHB_GATING_EHCI1; /* AHB clock gate ehci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - a10_clk_usb_activate(sc); - a10_clk_usbphy_activate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -int -a10_clk_ehci_deactivate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (--sc->ehci_cnt == 0) { - /* Disable gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value &= ~CCM_AHB_GATING_EHCI0; /* disable AHB clock gate ehci0 */ - reg_value &= ~CCM_AHB_GATING_EHCI1; /* disable AHB clock gate ehci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - a10_clk_usb_deactivate(sc); - a10_clk_usbphy_deactivate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -int -a10_clk_ohci_activate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (++sc->ohci_cnt == 1) { - /* Gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_OHCI0; /* AHB clock gate ohci0 */ - reg_value |= CCM_AHB_GATING_OHCI1; /* AHB clock gate ohci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - /* Enable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value |= CCM_SCLK_GATING_OHCI0; - reg_value |= CCM_SCLK_GATING_OHCI1; - ccm_write_4(sc, CCM_USB_CLK, reg_value); - } - - a10_clk_usb_activate(sc); - a10_clk_usbphy_activate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -int -a10_clk_ohci_deactivate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (--sc->ohci_cnt == 0) { - /* Disable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value &= ~CCM_SCLK_GATING_OHCI0; - reg_value &= ~CCM_SCLK_GATING_OHCI1; - ccm_write_4(sc, CCM_USB_CLK, reg_value); - - /* Disable gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value &= ~CCM_AHB_GATING_OHCI0; /* disable AHB clock gate ohci0 */ - reg_value &= ~CCM_AHB_GATING_OHCI1; /* disable AHB clock gate ohci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - a10_clk_usb_deactivate(sc); - a10_clk_usbphy_deactivate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -static int -a10_clk_usb_activate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (++sc->usb_cnt == 1) { - /* Gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_USB0; /* AHB clock gate usb0 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - return (0); -} - -static int -a10_clk_usb_deactivate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (--sc->usb_cnt == 0) { - /* Disable gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value &= ~CCM_AHB_GATING_USB0; /* disable AHB clock gate usb0 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - return (0); -} - -static int -a10_clk_usbphy_activate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (++sc->usbphy_cnt == 1) { - /* Enable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value |= CCM_USB_PHY; /* USBPHY */ - reg_value |= CCM_USBPHY0_RESET; /* disable reset for USBPHY0 */ - reg_value |= CCM_USBPHY1_RESET; /* disable reset for USBPHY1 */ - reg_value |= CCM_USBPHY2_RESET; /* disable reset for USBPHY2 */ - ccm_write_4(sc, CCM_USB_CLK, reg_value); - } - - return (0); -} - -static int -a10_clk_usbphy_deactivate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (--sc->usbphy_cnt == 0) { - /* Disable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value &= ~CCM_USB_PHY; /* USBPHY */ - reg_value &= ~CCM_USBPHY0_RESET; /* reset for USBPHY0 */ - reg_value &= ~CCM_USBPHY1_RESET; /* reset for USBPHY1 */ - reg_value &= ~CCM_USBPHY2_RESET; /* reset for USBPHY2 */ - ccm_write_4(sc, CCM_USB_CLK, reg_value); - } - - return (0); -} - -int -a10_clk_emac_activate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - /* Gating AHB clock for EMAC */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_EMAC; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - return (0); -} - -int -a10_clk_gmac_activate(phandle_t node) -{ - char *phy_type; - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Gating AHB clock for GMAC */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_GMAC; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - /* Set GMAC mode. */ - reg_value = CCM_GMAC_CLK_MII; - if (OF_getprop_alloc(node, "phy-mode", 1, (void **)&phy_type) > 0) { - if (strcasecmp(phy_type, "rgmii") == 0) - reg_value = CCM_GMAC_CLK_RGMII | CCM_GMAC_MODE_RGMII; - else if (strcasecmp(phy_type, "rgmii-bpi") == 0) { - reg_value = CCM_GMAC_CLK_RGMII | CCM_GMAC_MODE_RGMII; - reg_value |= (3 << CCM_GMAC_CLK_DELAY_SHIFT); - } - free(phy_type, M_OFWPROP); - } - ccm_write_4(sc, CCM_GMAC_CLK, reg_value); - - return (0); -} - -static void -a10_clk_pll6_enable(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - /* - * SATA needs PLL6 to be a 100MHz clock. - * The SATA output frequency is 24MHz * n * k / m / 6. - * To get to 100MHz, k & m must be equal and n must be 25. - * For other uses the output frequency is 24MHz * n * k / 2. - */ - sc = a10_ccm_sc; - if (sc->pll6_enabled) - return; - reg_value = ccm_read_4(sc, CCM_PLL6_CFG); - reg_value &= ~CCM_PLL_CFG_BYPASS; - reg_value &= ~(CCM_PLL_CFG_FACTOR_K | CCM_PLL_CFG_FACTOR_M | - CCM_PLL_CFG_FACTOR_N); - reg_value |= (25 << CCM_PLL_CFG_FACTOR_N_SHIFT); - reg_value |= CCM_PLL6_CFG_SATA_CLKEN; - reg_value |= CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, CCM_PLL6_CFG, reg_value); - sc->pll6_enabled = 1; -} - -static unsigned int -a10_clk_pll6_get_rate(void) -{ - struct a10_ccm_softc *sc; - uint32_t k, n, reg_value; - - sc = a10_ccm_sc; - reg_value = ccm_read_4(sc, CCM_PLL6_CFG); - n = ((reg_value & CCM_PLL_CFG_FACTOR_N) >> CCM_PLL_CFG_FACTOR_N_SHIFT); - k = ((reg_value & CCM_PLL_CFG_FACTOR_K) >> CCM_PLL_CFG_FACTOR_K_SHIFT) + - 1; - - return ((CCM_CLK_REF_FREQ * n * k) / 2); -} - -static int -a10_clk_pll2_set_rate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - unsigned int prediv, postdiv, n; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - reg_value = ccm_read_4(sc, CCM_PLL2_CFG); - reg_value &= ~(CCM_PLL2_CFG_PREDIV | CCM_PLL2_CFG_POSTDIV | - CCM_PLL_CFG_FACTOR_N); - - /* - * Audio Codec needs PLL2 to be either 24576000 Hz or 22579200 Hz - * - * PLL2 output frequency is 24MHz * n / prediv / postdiv. - * To get as close as possible to the desired rate, we use a - * pre-divider of 21 and a post-divider of 4. With these values, - * a multiplier of 86 or 79 gets us close to the target rates. - */ - prediv = 21; - postdiv = 4; - - switch (freq) { - case 24576000: - n = 86; - reg_value |= CCM_PLL_CFG_ENABLE; - break; - case 22579200: - n = 79; - reg_value |= CCM_PLL_CFG_ENABLE; - break; - case 0: - n = 1; - reg_value &= ~CCM_PLL_CFG_ENABLE; - break; - default: - return (EINVAL); - } - - reg_value |= (prediv << CCM_PLL2_CFG_PREDIV_SHIFT); - reg_value |= (postdiv << CCM_PLL2_CFG_POSTDIV_SHIFT); - reg_value |= (n << CCM_PLL_CFG_FACTOR_N_SHIFT); - ccm_write_4(sc, CCM_PLL2_CFG, reg_value); - - return (0); -} - -static int -a10_clk_pll3_set_rate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - int m; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (freq == 0) { - /* Disable PLL3 */ - ccm_write_4(sc, CCM_PLL3_CFG, 0); - return (0); - } - - m = freq / TCON_RATE_HZ(TCON_PLLREF_SINGLE); - - reg_value = CCM_PLL_CFG_ENABLE | CCM_PLL3_CFG_MODE_SEL_INT | m; - ccm_write_4(sc, CCM_PLL3_CFG, reg_value); - - return (0); -} - -static unsigned int -a10_clk_pll5x_get_rate(void) -{ - struct a10_ccm_softc *sc; - uint32_t k, n, p, reg_value; - - sc = a10_ccm_sc; - reg_value = ccm_read_4(sc, CCM_PLL5_CFG); - n = ((reg_value & CCM_PLL_CFG_FACTOR_N) >> CCM_PLL_CFG_FACTOR_N_SHIFT); - k = ((reg_value & CCM_PLL_CFG_FACTOR_K) >> CCM_PLL_CFG_FACTOR_K_SHIFT) + - 1; - p = ((reg_value & CCM_PLL5_CFG_OUT_EXT_DIV_P) >> CCM_PLL5_CFG_OUT_EXT_DIV_P_SHIFT); - - return ((CCM_CLK_REF_FREQ * n * k) >> p); -} - -int -a10_clk_ahci_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll6_enable(); - - /* Gating AHB clock for SATA */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_SATA; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - DELAY(1000); - - ccm_write_4(sc, CCM_SATA_CLK, CCM_PLL_CFG_ENABLE); - - return (0); -} - -int -a10_clk_mmc_activate(int devid) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll6_enable(); - - /* Gating AHB clock for SD/MMC */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_SDMMC0 << devid; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - return (0); -} - -int -a10_clk_mmc_cfg(int devid, int freq) -{ - struct a10_ccm_softc *sc; - uint32_t clksrc, m, n, ophase, phase, reg_value; - unsigned int pll_freq; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - freq /= 1000; - if (freq <= 400) { - pll_freq = CCM_CLK_REF_FREQ / 1000; - clksrc = CCM_SD_CLK_SRC_SEL_OSC24M; - ophase = 0; - phase = 0; - n = 2; - } else if (freq <= 25000) { - pll_freq = a10_clk_pll6_get_rate() / 1000; - clksrc = CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 0; - phase = 5; - n = 2; - } else if (freq <= 50000) { - pll_freq = a10_clk_pll6_get_rate() / 1000; - clksrc = CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 3; - phase = 5; - n = 0; - } else - return (EINVAL); - m = ((pll_freq / (1 << n)) / (freq)) - 1; - reg_value = ccm_read_4(sc, CCM_MMC0_SCLK_CFG + (devid * 4)); - reg_value &= ~CCM_SD_CLK_SRC_SEL; - reg_value |= (clksrc << CCM_SD_CLK_SRC_SEL_SHIFT); - reg_value &= ~CCM_SD_CLK_PHASE_CTR; - reg_value |= (phase << CCM_SD_CLK_PHASE_CTR_SHIFT); - reg_value &= ~CCM_SD_CLK_DIV_RATIO_N; - reg_value |= (n << CCM_SD_CLK_DIV_RATIO_N_SHIFT); - reg_value &= ~CCM_SD_CLK_OPHASE_CTR; - reg_value |= (ophase << CCM_SD_CLK_OPHASE_CTR_SHIFT); - reg_value &= ~CCM_SD_CLK_DIV_RATIO_M; - reg_value |= m; - reg_value |= CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, CCM_MMC0_SCLK_CFG + (devid * 4), reg_value); - - return (0); -} - -int -a10_clk_i2c_activate(int devid) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll6_enable(); - - /* Gating APB clock for I2C/TWI */ - reg_value = ccm_read_4(sc, CCM_APB1_GATING); - if (devid == 4) - reg_value |= CCM_APB1_GATING_TWI << 15; - else - reg_value |= CCM_APB1_GATING_TWI << devid; - ccm_write_4(sc, CCM_APB1_GATING, reg_value); - - return (0); -} - -int -a10_clk_dmac_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Gating AHB clock for DMA controller */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_DMA; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - return (0); -} - -int -a10_clk_codec_activate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll2_set_rate(freq); - - /* Gating APB clock for ADDA */ - reg_value = ccm_read_4(sc, CCM_APB0_GATING); - reg_value |= CCM_APB0_GATING_ADDA; - ccm_write_4(sc, CCM_APB0_GATING, reg_value); - - /* Enable audio codec clock */ - reg_value = ccm_read_4(sc, CCM_AUDIO_CODEC_CLK); - reg_value |= CCM_AUDIO_CODEC_ENABLE; - ccm_write_4(sc, CCM_AUDIO_CODEC_CLK, reg_value); - - return (0); -} - -static void -calc_tcon_pll(int f_ref, int f_out, int *pm, int *pn) -{ - int best, m, n, f_cur, diff; - - best = TCON_PLL_WORST; - for (n = TCON_PLL_N_MIN; n <= TCON_PLL_N_MAX; n++) { - for (m = TCON_PLL_M_MIN; m <= TCON_PLL_M_MAX; m++) { - f_cur = (m * f_ref) / n; - diff = f_out - f_cur; - if (diff > 0 && diff < best) { - best = diff; - *pm = m; - *pn = n; - } - } - } -} - -int -a10_clk_debe_activate(void) -{ - struct a10_ccm_softc *sc; - int pll_rate, clk_div; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Leave reset */ - reg_value = ccm_read_4(sc, CCM_BE0_SCLK); - reg_value |= CCM_BE_CLK_RESET; - ccm_write_4(sc, CCM_BE0_SCLK, reg_value); - - pll_rate = a10_clk_pll5x_get_rate(); - - clk_div = howmany(pll_rate, DEBE_DEFAULT_RATE); - - /* Set BE0 source to PLL5 (DDR external peripheral clock) */ - reg_value = CCM_BE_CLK_RESET; - reg_value |= (CCM_BE_CLK_SRC_SEL_PLL5 << CCM_BE_CLK_SRC_SEL_SHIFT); - reg_value |= (clk_div - 1); - ccm_write_4(sc, CCM_BE0_SCLK, reg_value); - - /* Gating AHB clock for BE0 */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_DE_BE0; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - /* Enable DRAM clock to BE0 */ - reg_value = ccm_read_4(sc, CCM_DRAM_CLK); - reg_value |= CCM_DRAM_CLK_BE0_CLK_ENABLE; - ccm_write_4(sc, CCM_DRAM_CLK, reg_value); - - /* Enable BE0 clock */ - reg_value = ccm_read_4(sc, CCM_BE0_SCLK); - reg_value |= CCM_BE_CLK_SCLK_GATING; - ccm_write_4(sc, CCM_BE0_SCLK, reg_value); - - return (0); -} - -int -a10_clk_lcd_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Clear LCD0 reset */ - reg_value = ccm_read_4(sc, CCM_LCD0_CH0_CLK); - reg_value |= CCM_LCD_CH0_RESET; - ccm_write_4(sc, CCM_LCD0_CH0_CLK, reg_value); - - /* Gating AHB clock for LCD0 */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_LCD0; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - return (0); -} - -int -a10_clk_tcon_activate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - int m, n, m2, n2, f_single, f_double, dbl, src_sel; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - m = n = m2 = n2 = 0; - dbl = 0; - - calc_tcon_pll(TCON_PLLREF_SINGLE, TCON_RATE_KHZ(freq), &m, &n); - calc_tcon_pll(TCON_PLLREF_DOUBLE, TCON_RATE_KHZ(freq), &m2, &n2); - - f_single = n ? (m * TCON_PLLREF_SINGLE) / n : 0; - f_double = n2 ? (m2 * TCON_PLLREF_DOUBLE) / n2 : 0; - - if (f_double > f_single) { - dbl = 1; - m = m2; - n = n2; - } - src_sel = dbl ? CCM_LCD_CH1_SRC_SEL_PLL3_2X : CCM_LCD_CH1_SRC_SEL_PLL3; - - if (n == 0 || m == 0) - return (EINVAL); - - /* Set PLL3 to the closest possible rate */ - a10_clk_pll3_set_rate(TCON_RATE_HZ(m * TCON_PLLREF_SINGLE)); - - /* Enable LCD0 CH1 clock */ - ccm_write_4(sc, CCM_LCD0_CH1_CLK, - CCM_LCD_CH1_SCLK2_GATING | CCM_LCD_CH1_SCLK1_GATING | - (src_sel << CCM_LCD_CH1_SRC_SEL_SHIFT) | (n - 1)); - - return (0); -} - -int -a10_clk_tcon_get_config(int *pdiv, int *pdbl) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - int src; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - reg_value = ccm_read_4(sc, CCM_LCD0_CH1_CLK); - - *pdiv = (reg_value & CCM_LCD_CH1_CLK_DIV_RATIO_M) + 1; - - src = (reg_value & CCM_LCD_CH1_SRC_SEL) >> CCM_LCD_CH1_SRC_SEL_SHIFT; - switch (src) { - case CCM_LCD_CH1_SRC_SEL_PLL3: - case CCM_LCD_CH1_SRC_SEL_PLL7: - *pdbl = 0; - break; - case CCM_LCD_CH1_SRC_SEL_PLL3_2X: - case CCM_LCD_CH1_SRC_SEL_PLL7_2X: - *pdbl = 1; - break; - } - - return (0); -} - -int -a10_clk_hdmi_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - int error; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Set PLL3 to 297MHz */ - error = a10_clk_pll3_set_rate(HDMI_DEFAULT_RATE); - if (error != 0) - return (error); - - /* Enable HDMI clock, source PLL3 */ - reg_value = ccm_read_4(sc, CCM_HDMI_CLK); - reg_value |= CCM_HDMI_CLK_SCLK_GATING; - reg_value &= ~CCM_HDMI_CLK_SRC_SEL; - reg_value |= (CCM_HDMI_CLK_SRC_SEL_PLL3 << CCM_HDMI_CLK_SRC_SEL_SHIFT); - ccm_write_4(sc, CCM_HDMI_CLK, reg_value); - - /* Gating AHB clock for HDMI */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_HDMI; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - return (0); -} diff --git a/sys/arm/allwinner/a10_clk.h b/sys/arm/allwinner/a10_clk.h deleted file mode 100644 index 6b626be..0000000 --- a/sys/arm/allwinner/a10_clk.h +++ /dev/null @@ -1,247 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#ifndef _A10_CLK_H_ -#define _A10_CLK_H_ - -#define CCM_PLL1_CFG 0x0000 -#define CCM_PLL1_TUN 0x0004 -#define CCM_PLL2_CFG 0x0008 -#define CCM_PLL2_TUN 0x000c -#define CCM_PLL3_CFG 0x0010 -#define CCM_PLL3_TUN 0x0014 -#define CCM_PLL4_CFG 0x0018 -#define CCM_PLL4_TUN 0x001c -#define CCM_PLL5_CFG 0x0020 -#define CCM_PLL5_TUN 0x0024 -#define CCM_PLL6_CFG 0x0028 -#define CCM_PLL6_TUN 0x002c -#define CCM_PLL7_CFG 0x0030 -#define CCM_PLL7_TUN 0x0034 -#define CCM_PLL1_TUN2 0x0038 -#define CCM_PLL5_TUN2 0x003c -#define CCM_PLL_LOCK_DBG 0x004c -#define CCM_OSC24M_CFG 0x0050 -#define CCM_CPU_AHB_APB0_CFG 0x0054 -#define CCM_APB1_CLK_DIV 0x0058 -#define CCM_AXI_GATING 0x005c -#define CCM_AHB_GATING0 0x0060 -#define CCM_AHB_GATING1 0x0064 -#define CCM_APB0_GATING 0x0068 -#define CCM_APB1_GATING 0x006c -#define CCM_NAND_SCLK_CFG 0x0080 -#define CCM_MS_SCLK_CFG 0x0084 -#define CCM_MMC0_SCLK_CFG 0x0088 -#define CCM_MMC1_SCLK_CFG 0x008c -#define CCM_MMC2_SCLK_CFG 0x0090 -#define CCM_MMC3_SCLK_CFG 0x0094 -#define CCM_TS_CLK 0x0098 -#define CCM_SS_CLK 0x009c -#define CCM_SPI0_CLK 0x00a0 -#define CCM_SPI1_CLK 0x00a4 -#define CCM_SPI2_CLK 0x00a8 -#define CCM_PATA_CLK 0x00ac -#define CCM_IR0_CLK 0x00b0 -#define CCM_IR1_CLK 0x00b4 -#define CCM_IIS_CLK 0x00b8 -#define CCM_AC97_CLK 0x00bc -#define CCM_SPDIF_CLK 0x00c0 -#define CCM_KEYPAD_CLK 0x00c4 -#define CCM_SATA_CLK 0x00c8 -#define CCM_USB_CLK 0x00cc -#define CCM_GPS_CLK 0x00d0 -#define CCM_SPI3_CLK 0x00d4 -#define CCM_DRAM_CLK 0x0100 -#define CCM_BE0_SCLK 0x0104 -#define CCM_BE1_SCLK 0x0108 -#define CCM_FE0_CLK 0x010c -#define CCM_FE1_CLK 0x0110 -#define CCM_MP_CLK 0x0114 -#define CCM_LCD0_CH0_CLK 0x0118 -#define CCM_LCD1_CH0_CLK 0x011c -#define CCM_CSI_ISP_CLK 0x0120 -#define CCM_TVD_CLK 0x0128 -#define CCM_LCD0_CH1_CLK 0x012c -#define CCM_LCD1_CH1_CLK 0x0130 -#define CCM_CS0_CLK 0x0134 -#define CCM_CS1_CLK 0x0138 -#define CCM_VE_CLK 0x013c -#define CCM_AUDIO_CODEC_CLK 0x0140 -#define CCM_AVS_CLK 0x0144 -#define CCM_ACE_CLK 0x0148 -#define CCM_LVDS_CLK 0x014c -#define CCM_HDMI_CLK 0x0150 -#define CCM_MALI400_CLK 0x0154 -#define CCM_GMAC_CLK 0x0164 - -#define CCM_GMAC_CLK_DELAY_SHIFT 10 -#define CCM_GMAC_CLK_MODE_MASK 0x7 -#define CCM_GMAC_MODE_RGMII (1 << 2) -#define CCM_GMAC_CLK_MII 0x0 -#define CCM_GMAC_CLK_EXT_RGMII 0x1 -#define CCM_GMAC_CLK_RGMII 0x2 - -/* APB0_GATING */ -#define CCM_APB0_GATING_ADDA (1 << 0) - -/* AHB_GATING_REG0 */ -#define CCM_AHB_GATING_USB0 (1 << 0) -#define CCM_AHB_GATING_EHCI0 (1 << 1) -#define CCM_AHB_GATING_OHCI0 (1 << 2) -#define CCM_AHB_GATING_EHCI1 (1 << 3) -#define CCM_AHB_GATING_OHCI1 (1 << 4) -#define CCM_AHB_GATING_DMA (1 << 6) -#define CCM_AHB_GATING_SDMMC0 (1 << 8) -#define CCM_AHB_GATING_EMAC (1 << 17) -#define CCM_AHB_GATING_SATA (1 << 25) - -/* AHB_GATING_REG1 */ -#define CCM_AHB_GATING_GMAC (1 << 17) -#define CCM_AHB_GATING_DE_BE1 (1 << 13) -#define CCM_AHB_GATING_DE_BE0 (1 << 12) -#define CCM_AHB_GATING_HDMI (1 << 11) -#define CCM_AHB_GATING_LCD1 (1 << 5) -#define CCM_AHB_GATING_LCD0 (1 << 4) - -/* APB1_GATING_REG */ -#define CCM_APB1_GATING_TWI (1 << 0) - -/* USB */ -#define CCM_USB_PHY (1 << 8) -#define CCM_SCLK_GATING_OHCI1 (1 << 7) -#define CCM_SCLK_GATING_OHCI0 (1 << 6) -#define CCM_USBPHY2_RESET (1 << 2) -#define CCM_USBPHY1_RESET (1 << 1) -#define CCM_USBPHY0_RESET (1 << 0) - -#define CCM_PLL_CFG_ENABLE (1U << 31) -#define CCM_PLL_CFG_BYPASS (1U << 30) -#define CCM_PLL_CFG_PLL5 (1U << 25) -#define CCM_PLL_CFG_PLL6 (1U << 24) -#define CCM_PLL_CFG_FACTOR_N 0x1f00 -#define CCM_PLL_CFG_FACTOR_N_SHIFT 8 -#define CCM_PLL_CFG_FACTOR_K 0x30 -#define CCM_PLL_CFG_FACTOR_K_SHIFT 4 -#define CCM_PLL_CFG_FACTOR_M 0x3 - -#define CCM_PLL2_CFG_POSTDIV 0x3c000000 -#define CCM_PLL2_CFG_POSTDIV_SHIFT 26 -#define CCM_PLL2_CFG_PREDIV 0x1f -#define CCM_PLL2_CFG_PREDIV_SHIFT 0 - -#define CCM_PLL3_CFG_MODE_SEL_SHIFT 15 -#define CCM_PLL3_CFG_MODE_SEL_FRACT (0 << CCM_PLL3_CFG_MODE_SEL_SHIFT) -#define CCM_PLL3_CFG_MODE_SEL_INT (1 << CCM_PLL3_CFG_MODE_SEL_SHIFT) -#define CCM_PLL3_CFG_FUNC_SET_SHIFT 14 -#define CCM_PLL3_CFG_FUNC_SET_270MHZ (0 << CCM_PLL3_CFG_FUNC_SET_SHIFT) -#define CCM_PLL3_CFG_FUNC_SET_297MHZ (1 << CCM_PLL3_CFG_FUNC_SET_SHIFT) -#define CCM_PLL3_CFG_FACTOR_M 0x7f - -#define CCM_PLL5_CFG_OUT_EXT_DIV_P 0x30000 -#define CCM_PLL5_CFG_OUT_EXT_DIV_P_SHIFT 16 - -#define CCM_PLL6_CFG_SATA_CLKEN (1U << 14) - -#define CCM_SD_CLK_SRC_SEL 0x3000000 -#define CCM_SD_CLK_SRC_SEL_SHIFT 24 -#define CCM_SD_CLK_SRC_SEL_OSC24M 0 -#define CCM_SD_CLK_SRC_SEL_PLL6 1 -#define CCM_SD_CLK_PHASE_CTR 0x700000 -#define CCM_SD_CLK_PHASE_CTR_SHIFT 20 -#define CCM_SD_CLK_DIV_RATIO_N 0x30000 -#define CCM_SD_CLK_DIV_RATIO_N_SHIFT 16 -#define CCM_SD_CLK_OPHASE_CTR 0x700 -#define CCM_SD_CLK_OPHASE_CTR_SHIFT 8 -#define CCM_SD_CLK_DIV_RATIO_M 0xf - -#define CCM_AUDIO_CODEC_ENABLE (1U << 31) - -#define CCM_LCD_CH0_SCLK_GATING (1U << 31) -#define CCM_LCD_CH0_RESET (1U << 30) -#define CCM_LCD_CH0_SRC_SEL 0x03000000 -#define CCM_LCD_CH0_SRC_SEL_SHIFT 24 -#define CCM_LCD_CH0_SRC_SEL_PLL3 0 -#define CCM_LCD_CH0_SRC_SEL_PLL7 1 -#define CCM_LCD_CH0_SRC_SEL_PLL3_2X 2 -#define CCM_LCD_CH0_SRC_SEL_PLL6_2X 3 - -#define CCM_LCD_CH1_SCLK2_GATING (1U << 31) -#define CCM_LCD_CH1_SRC_SEL 0x03000000 -#define CCM_LCD_CH1_SRC_SEL_SHIFT 24 -#define CCM_LCD_CH1_SRC_SEL_PLL3 0 -#define CCM_LCD_CH1_SRC_SEL_PLL7 1 -#define CCM_LCD_CH1_SRC_SEL_PLL3_2X 2 -#define CCM_LCD_CH1_SRC_SEL_PLL7_2X 3 -#define CCM_LCD_CH1_SCLK1_GATING (1U << 15) -#define CCM_LCD_CH1_SCLK1_SRC_SEL_SHIFT 11 -#define CCM_LCD_CH1_SCLK1_SRC_SEL_SCLK2 0 -#define CCM_LCD_CH1_SCLK1_SRC_SEL_SCLK2_DIV2 1 -#define CCM_LCD_CH1_CLK_DIV_RATIO_M 0xf - -#define CCM_DRAM_CLK_BE1_CLK_ENABLE (1U << 27) -#define CCM_DRAM_CLK_BE0_CLK_ENABLE (1U << 26) - -#define CCM_BE_CLK_SCLK_GATING (1U << 31) -#define CCM_BE_CLK_RESET (1U << 30) -#define CCM_BE_CLK_SRC_SEL 0x03000000 -#define CCM_BE_CLK_SRC_SEL_SHIFT 24 -#define CCM_BE_CLK_SRC_SEL_PLL3 0 -#define CCM_BE_CLK_SRC_SEL_PLL7 1 -#define CCM_BE_CLK_SRC_SEL_PLL5 2 -#define CCM_BE_CLK_DIV_RATIO_M 0xf - -#define CCM_HDMI_CLK_SCLK_GATING (1U << 31) -#define CCM_HDMI_CLK_SRC_SEL 0x03000000 -#define CCM_HDMI_CLK_SRC_SEL_SHIFT 24 -#define CCM_HDMI_CLK_SRC_SEL_PLL3 0 -#define CCM_HDMI_CLK_SRC_SEL_PLL7 1 -#define CCM_HDMI_CLK_SRC_SEL_PLL3_2X 2 -#define CCM_HDMI_CLK_SRC_SEL_PLL7_2X 3 -#define CCM_HDMI_CLK_DIV_RATIO_M 0xf - -#define CCM_CLK_REF_FREQ 24000000U - -int a10_clk_ehci_activate(void); -int a10_clk_ehci_deactivate(void); -int a10_clk_ohci_activate(void); -int a10_clk_ohci_deactivate(void); -int a10_clk_emac_activate(void); -int a10_clk_gmac_activate(phandle_t); -int a10_clk_ahci_activate(void); -int a10_clk_mmc_activate(int); -int a10_clk_mmc_cfg(int, int); -int a10_clk_i2c_activate(int); -int a10_clk_dmac_activate(void); -int a10_clk_codec_activate(unsigned int); -int a10_clk_debe_activate(void); -int a10_clk_lcd_activate(void); -int a10_clk_tcon_activate(unsigned int); -int a10_clk_tcon_get_config(int *, int *); -int a10_clk_hdmi_activate(void); - -#endif /* _A10_CLK_H_ */ diff --git a/sys/arm/allwinner/a10_codec.c b/sys/arm/allwinner/a10_codec.c index 6646f2d..f791b18 100644 --- a/sys/arm/allwinner/a10_codec.c +++ b/sys/arm/allwinner/a10_codec.c @@ -50,7 +50,7 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/ofw_bus.h> #include <dev/ofw/ofw_bus_subr.h> -#include <arm/allwinner/a10_clk.h> +#include <dev/extres/clk/clk.h> #include "sunxi_dma_if.h" #include "mixer_if.h" @@ -738,6 +738,7 @@ a10codec_attach(device_t dev) { struct a10codec_info *sc; char status[SND_STATUSLEN]; + clk_t clk_apb, clk_codec; uint32_t val; int error; @@ -778,6 +779,24 @@ a10codec_attach(device_t dev) goto fail; } + /* Get clocks */ + error = clk_get_by_ofw_name(dev, "apb", &clk_apb); + if (error != 0) { + device_printf(dev, "cannot find apb clock\n"); + goto fail; + } + error = clk_get_by_ofw_name(dev, "codec", &clk_codec); + if (error != 0) { + device_printf(dev, "cannot find codec clock\n"); + goto fail; + } + + /* Gating APB clock for codec */ + error = clk_enable(clk_apb); + if (error != 0) { + device_printf(dev, "cannot enable apb clock\n"); + goto fail; + } /* Activate audio codec clock. According to the A10 and A20 user * manuals, Audio_pll can be either 24.576MHz or 22.5792MHz. Most * audio sampling rates require an 24.576MHz input clock with the @@ -787,7 +806,17 @@ a10codec_attach(device_t dev) * 24.576MHz clock source and don't advertise native support for * the three sampling rates that require a 22.5792MHz input. */ - a10_clk_codec_activate(24576000); + error = clk_set_freq(clk_codec, 24576000, CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(dev, "cannot set codec clock frequency\n"); + goto fail; + } + /* Enable audio codec clock */ + error = clk_enable(clk_codec); + if (error != 0) { + device_printf(dev, "cannot enable codec clock\n"); + goto fail; + } /* Enable DAC */ val = CODEC_READ(sc, AC_DAC_DPC); diff --git a/sys/arm/allwinner/a10_dmac.c b/sys/arm/allwinner/a10_dmac.c index 65fa352..fd5aaa6 100644 --- a/sys/arm/allwinner/a10_dmac.c +++ b/sys/arm/allwinner/a10_dmac.c @@ -46,7 +46,7 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/ofw_bus_subr.h> #include <arm/allwinner/a10_dmac.h> -#include <arm/allwinner/a10_clk.h> +#include <dev/extres/clk/clk.h> #include "sunxi_dma_if.h" @@ -111,6 +111,7 @@ a10dmac_attach(device_t dev) { struct a10dmac_softc *sc; unsigned int index; + clk_t clk; int error; sc = device_get_softc(dev); @@ -123,7 +124,16 @@ a10dmac_attach(device_t dev) mtx_init(&sc->sc_mtx, "a10 dmac", NULL, MTX_SPIN); /* Activate DMA controller clock */ - a10_clk_dmac_activate(); + error = clk_get_by_ofw_index(dev, 0, &clk); + if (error != 0) { + device_printf(dev, "cannot get clock\n"); + return (error); + } + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "cannot enable clock\n"); + return (error); + } /* Disable all interrupts and clear pending status */ DMA_WRITE(sc, AWIN_DMA_IRQ_EN_REG, 0); diff --git a/sys/arm/allwinner/a10_ehci.c b/sys/arm/allwinner/a10_ehci.c index c633de2..c325d60 100644 --- a/sys/arm/allwinner/a10_ehci.c +++ b/sys/arm/allwinner/a10_ehci.c @@ -59,8 +59,8 @@ __FBSDID("$FreeBSD$"); #include <dev/usb/controller/ehcireg.h> #include <arm/allwinner/allwinner_machdep.h> -#include <arm/allwinner/a10_clk.h> -#include <arm/allwinner/a31/a31_clk.h> +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> #define EHCI_HC_DEVSTR "Allwinner Integrated USB 2.0 controller" @@ -90,25 +90,22 @@ static device_detach_t a10_ehci_detach; bs_r_1_proto(reversed); bs_w_1_proto(reversed); +struct aw_ehci_softc { + ehci_softc_t sc; + clk_t clk; + hwreset_t rst; +}; + struct aw_ehci_conf { - int (*clk_activate)(void); - int (*clk_deactivate)(void); bool sdram_init; }; static const struct aw_ehci_conf a10_ehci_conf = { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - .clk_activate = a10_clk_ehci_activate, - .clk_deactivate = a10_clk_ehci_deactivate, -#endif .sdram_init = true, }; static const struct aw_ehci_conf a31_ehci_conf = { -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - .clk_activate = a31_clk_ehci_activate, - .clk_deactivate = a31_clk_ehci_deactivate, -#endif + .sdram_init = false, }; static struct ofw_compat_data compat_data[] = { @@ -136,7 +133,8 @@ a10_ehci_probe(device_t self) static int a10_ehci_attach(device_t self) { - ehci_softc_t *sc = device_get_softc(self); + struct aw_ehci_softc *aw_sc = device_get_softc(self); + ehci_softc_t *sc = &aw_sc->sc; const struct aw_ehci_conf *conf; bus_space_handle_t bsh; int err; @@ -144,10 +142,6 @@ a10_ehci_attach(device_t self) uint32_t reg_value = 0; conf = USB_CONF(self); - if (conf->clk_activate == NULL) { - device_printf(self, "clock not supported\n"); - return (ENXIO); - } /* initialise some bus fields */ sc->sc_bus.parent = self; @@ -208,9 +202,24 @@ a10_ehci_attach(device_t self) sc->sc_flags |= EHCI_SCFLG_DONTRESET; + /* De-assert reset */ + if (hwreset_get_by_ofw_idx(self, 0, &aw_sc->rst) == 0) { + err = hwreset_deassert(aw_sc->rst); + if (err != 0) { + device_printf(self, "Could not de-assert reset\n"); + goto error; + } + } + /* Enable clock for USB */ - if (conf->clk_activate() != 0) { - device_printf(self, "Could not activate clock\n"); + err = clk_get_by_ofw_index(self, 0, &aw_sc->clk); + if (err != 0) { + device_printf(self, "Could not get clock\n"); + goto error; + } + err = clk_enable(aw_sc->clk); + if (err != 0) { + device_printf(self, "Could not enable clock\n"); goto error; } @@ -240,6 +249,8 @@ a10_ehci_attach(device_t self) return (0); error: + if (aw_sc->clk) + clk_release(aw_sc->clk); a10_ehci_detach(self); return (ENXIO); } @@ -247,7 +258,8 @@ error: static int a10_ehci_detach(device_t self) { - ehci_softc_t *sc = device_get_softc(self); + struct aw_ehci_softc *aw_sc = device_get_softc(self); + ehci_softc_t *sc = &aw_sc->sc; const struct aw_ehci_conf *conf; device_t bdev; int err; @@ -305,7 +317,14 @@ a10_ehci_detach(device_t self) A10_WRITE_4(sc, SW_USB_PMU_IRQ_ENABLE, reg_value); /* Disable clock for USB */ - conf->clk_deactivate(); + clk_disable(aw_sc->clk); + clk_release(aw_sc->clk); + + /* Assert reset */ + if (aw_sc->rst != NULL) { + hwreset_assert(aw_sc->rst); + hwreset_release(aw_sc->rst); + } return (0); } diff --git a/sys/arm/allwinner/a10_fb.c b/sys/arm/allwinner/a10_fb.c index ea033f8..cf8f167 100644 --- a/sys/arm/allwinner/a10_fb.c +++ b/sys/arm/allwinner/a10_fb.c @@ -54,7 +54,8 @@ __FBSDID("$FreeBSD$"); #include <dev/videomode/videomode.h> #include <dev/videomode/edidvar.h> -#include <arm/allwinner/a10_clk.h> +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> #include "fb_if.h" #include "hdmi_if.h" @@ -66,6 +67,7 @@ __FBSDID("$FreeBSD$"); #define FB_ALIGN 0x1000 #define HDMI_ENABLE_DELAY 20000 +#define DEBE_FREQ 300000000 #define DOT_CLOCK_TO_HZ(c) ((c) * 1000) @@ -193,18 +195,68 @@ a10fb_freefb(struct a10fb_softc *sc) kmem_free(kernel_arena, sc->vaddr, sc->fbsize); } -static void +static int a10fb_setup_debe(struct a10fb_softc *sc, const struct videomode *mode) { int width, height, interlace, reg; + clk_t clk_ahb, clk_dram, clk_debe; + hwreset_t rst; uint32_t val; + int error; interlace = !!(mode->flags & VID_INTERLACE); width = mode->hdisplay; height = mode->vdisplay << interlace; - /* Enable DEBE clocks */ - a10_clk_debe_activate(); + /* Leave reset */ + error = hwreset_get_by_ofw_name(sc->dev, "de_be", &rst); + if (error != 0) { + device_printf(sc->dev, "cannot find reset 'de_be'\n"); + return (error); + } + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(sc->dev, "couldn't de-assert reset 'de_be'\n"); + return (error); + } + /* Gating AHB clock for BE */ + error = clk_get_by_ofw_name(sc->dev, "ahb_de_be", &clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'ahb_de_be'\n"); + return (error); + } + error = clk_enable(clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'ahb_de_be'\n"); + return (error); + } + /* Enable DRAM clock to BE */ + error = clk_get_by_ofw_name(sc->dev, "dram_de_be", &clk_dram); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'dram_de_be'\n"); + return (error); + } + error = clk_enable(clk_dram); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'dram_de_be'\n"); + return (error); + } + /* Set BE clock to 300MHz and enable */ + error = clk_get_by_ofw_name(sc->dev, "de_be", &clk_debe); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'de_be'\n"); + return (error); + } + error = clk_set_freq(clk_debe, DEBE_FREQ, CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(sc->dev, "cannot set 'de_be' frequency\n"); + return (error); + } + error = clk_enable(clk_debe); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'de_be'\n"); + return (error); + } /* Initialize all registers to 0 */ for (reg = DEBE_REG_START; reg < DEBE_REG_END; reg += DEBE_REG_WIDTH) @@ -247,14 +299,55 @@ a10fb_setup_debe(struct a10fb_softc *sc, const struct videomode *mode) val = DEBE_READ(sc, DEBE_MODCTL); val |= MODCTL_START_CTL; DEBE_WRITE(sc, DEBE_MODCTL, val); + + return (0); } -static void +static int +a10fb_setup_pll(struct a10fb_softc *sc, uint64_t freq) +{ + clk_t clk_sclk1, clk_sclk2; + int error; + + error = clk_get_by_ofw_name(sc->dev, "lcd_ch1_sclk1", &clk_sclk1); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'lcd_ch1_sclk1'\n"); + return (error); + } + error = clk_get_by_ofw_name(sc->dev, "lcd_ch1_sclk2", &clk_sclk2); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'lcd_ch1_sclk2'\n"); + return (error); + } + + error = clk_set_freq(clk_sclk2, freq, 0); + if (error != 0) { + device_printf(sc->dev, "cannot set lcd ch1 frequency\n"); + return (error); + } + error = clk_enable(clk_sclk2); + if (error != 0) { + device_printf(sc->dev, "cannot enable lcd ch1 sclk2\n"); + return (error); + } + error = clk_enable(clk_sclk1); + if (error != 0) { + device_printf(sc->dev, "cannot enable lcd ch1 sclk1\n"); + return (error); + } + + return (0); +} + +static int a10fb_setup_tcon(struct a10fb_softc *sc, const struct videomode *mode) { u_int interlace, hspw, hbp, vspw, vbp, vbl, width, height, start_delay; u_int vtotal, framerate, clk; + clk_t clk_ahb; + hwreset_t rst; uint32_t val; + int error; interlace = !!(mode->flags & VID_INTERLACE); width = mode->hdisplay; @@ -266,8 +359,28 @@ a10fb_setup_tcon(struct a10fb_softc *sc, const struct videomode *mode) vbl = VBLANK_LEN(mode->vtotal, mode->vdisplay, interlace); start_delay = START_DELAY(vbl); - /* Enable LCD clocks */ - a10_clk_lcd_activate(); + /* Leave reset */ + error = hwreset_get_by_ofw_name(sc->dev, "lcd", &rst); + if (error != 0) { + device_printf(sc->dev, "cannot find reset 'lcd'\n"); + return (error); + } + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(sc->dev, "couldn't de-assert reset 'lcd'\n"); + return (error); + } + /* Gating AHB clock for LCD */ + error = clk_get_by_ofw_name(sc->dev, "ahb_lcd", &clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'ahb_lcd'\n"); + return (error); + } + error = clk_enable(clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'ahb_lcd'\n"); + return (error); + } /* Disable TCON and TCON1 */ TCON_WRITE(sc, TCON_GCTL, 0); @@ -322,7 +435,7 @@ a10fb_setup_tcon(struct a10fb_softc *sc, const struct videomode *mode) TCON_WRITE(sc, TCON1_CTL, val); /* Setup PLL */ - a10_clk_tcon_activate(DOT_CLOCK_TO_HZ(mode->dot_clock)); + return (a10fb_setup_pll(sc, DOT_CLOCK_TO_HZ(mode->dot_clock))); } static void @@ -378,10 +491,14 @@ a10fb_configure(struct a10fb_softc *sc, const struct videomode *mode) } /* Setup display backend */ - a10fb_setup_debe(sc, mode); + error = a10fb_setup_debe(sc, mode); + if (error != 0) + return (error); /* Setup display timing controller */ - a10fb_setup_tcon(sc, mode); + error = a10fb_setup_tcon(sc, mode); + if (error != 0) + return (error); /* Attach framebuffer device */ sc->info.fb_name = device_get_nameunit(sc->dev); diff --git a/sys/arm/allwinner/a10_hdmi.c b/sys/arm/allwinner/a10_hdmi.c index ff86fa0..99cbc2f 100644 --- a/sys/arm/allwinner/a10_hdmi.c +++ b/sys/arm/allwinner/a10_hdmi.c @@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$"); #include <dev/videomode/videomode.h> #include <dev/videomode/edidvar.h> -#include <arm/allwinner/a10_clk.h> +#include <dev/extres/clk/clk.h> #include "hdmi_if.h" @@ -204,6 +204,7 @@ __FBSDID("$FreeBSD$"); #define HDMI_VSDB_MINLEN 5 #define HDMI_OUI "\x03\x0c\x00" #define HDMI_OUI_LEN 3 +#define HDMI_DEFAULT_FREQ 297000000 struct a10hdmi_softc { struct resource *res; @@ -214,6 +215,10 @@ struct a10hdmi_softc { int has_hdmi; int has_audio; + + clk_t clk_ahb; + clk_t clk_hdmi; + clk_t clk_lcd; }; static struct resource_spec a10hdmi_spec[] = { @@ -287,7 +292,33 @@ a10hdmi_attach(device_t dev) return (ENXIO); } - a10_clk_hdmi_activate(); + /* Setup clocks */ + error = clk_get_by_ofw_name(dev, "ahb", &sc->clk_ahb); + if (error != 0) { + device_printf(dev, "cannot find ahb clock\n"); + return (error); + } + error = clk_get_by_ofw_name(dev, "hdmi", &sc->clk_hdmi); + if (error != 0) { + device_printf(dev, "cannot find hdmi clock\n"); + return (error); + } + error = clk_get_by_ofw_name(dev, "lcd", &sc->clk_lcd); + if (error != 0) { + device_printf(dev, "cannot find lcd clock\n"); + } + /* Enable HDMI clock */ + error = clk_enable(sc->clk_hdmi); + if (error != 0) { + device_printf(dev, "cannot enable hdmi clock\n"); + return (error); + } + /* Gating AHB clock for HDMI */ + error = clk_enable(sc->clk_ahb); + if (error != 0) { + device_printf(dev, "cannot enable ahb gate\n"); + return (error); + } a10hdmi_init(sc); @@ -527,6 +558,38 @@ a10hdmi_set_audiomode(device_t dev, const struct videomode *mode) } static int +a10hdmi_get_tcon_config(struct a10hdmi_softc *sc, int *div, int *dbl) +{ + uint64_t lcd_fin, lcd_fout; + clk_t clk_lcd_parent; + const char *pname; + int error; + + error = clk_get_parent(sc->clk_lcd, &clk_lcd_parent); + if (error != 0) + return (error); + + /* Get the LCD CH1 special clock 2 divider */ + error = clk_get_freq(sc->clk_lcd, &lcd_fout); + if (error != 0) + return (error); + error = clk_get_freq(clk_lcd_parent, &lcd_fin); + if (error != 0) + return (error); + *div = lcd_fin / lcd_fout; + + /* Detect LCD CH1 special clock using a 1X or 2X source */ + /* XXX */ + pname = clk_get_name(clk_lcd_parent); + if (strcmp(pname, "pll3-1x") == 0 || strcmp(pname, "pll7-1x") == 0) + *dbl = 0; + else + *dbl = 1; + + return (0); +} + +static int a10hdmi_set_videomode(device_t dev, const struct videomode *mode) { struct a10hdmi_softc *sc; @@ -543,9 +606,11 @@ a10hdmi_set_videomode(device_t dev, const struct videomode *mode) vspw = mode->vsync_end - mode->vsync_start; vbp = mode->vtotal - mode->vsync_start; - error = a10_clk_tcon_get_config(&clk_div, &clk_dbl); - if (error != 0) + error = a10hdmi_get_tcon_config(sc, &clk_div, &clk_dbl); + if (error != 0) { + device_printf(dev, "couldn't get tcon config: %d\n", error); return (error); + } /* Clear interrupt status */ HDMI_WRITE(sc, HDMI_INT_STATUS, HDMI_READ(sc, HDMI_INT_STATUS)); diff --git a/sys/arm/allwinner/a10_mmc.c b/sys/arm/allwinner/a10_mmc.c index dc341dd..1b89c0f 100644 --- a/sys/arm/allwinner/a10_mmc.c +++ b/sys/arm/allwinner/a10_mmc.c @@ -49,9 +49,9 @@ __FBSDID("$FreeBSD$"); #include <dev/mmc/mmcbrvar.h> #include <arm/allwinner/allwinner_machdep.h> -#include <arm/allwinner/a10_clk.h> #include <arm/allwinner/a10_mmc.h> -#include <arm/allwinner/a31/a31_clk.h> +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> #define A10_MMC_MEMRES 0 #define A10_MMC_IRQRES 1 @@ -60,6 +60,8 @@ __FBSDID("$FreeBSD$"); #define A10_MMC_DMA_MAX_SIZE 0x2000 #define A10_MMC_DMA_FTRGLEVEL 0x20070008 +#define CARD_ID_FREQUENCY 400000 + static int a10_mmc_pio_mode = 0; TUNABLE_INT("hw.a10.mmc.pio_mode", &a10_mmc_pio_mode); @@ -74,6 +76,9 @@ struct a10_mmc_softc { bus_space_handle_t a10_bsh; bus_space_tag_t a10_bst; device_t a10_dev; + clk_t a10_clk_ahb; + clk_t a10_clk_mmc; + hwreset_t a10_rst_ahb; int a10_bus_busy; int a10_id; int a10_resid; @@ -147,7 +152,7 @@ a10_mmc_attach(device_t dev) struct a10_mmc_softc *sc; struct sysctl_ctx_list *ctx; struct sysctl_oid_list *tree; - int clk; + int error; sc = device_get_softc(dev); sc->a10_dev = dev; @@ -170,6 +175,9 @@ a10_mmc_attach(device_t dev) device_printf(dev, "cannot setup interrupt handler\n"); return (ENXIO); } + mtx_init(&sc->a10_mtx, device_get_nameunit(sc->a10_dev), "a10_mmc", + MTX_DEF); + callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); /* * Later chips use a different FIFO offset. Unfortunately the FDT @@ -186,30 +194,41 @@ a10_mmc_attach(device_t dev) break; } + /* De-assert reset */ + if (hwreset_get_by_ofw_name(dev, "ahb", &sc->a10_rst_ahb) == 0) { + error = hwreset_deassert(sc->a10_rst_ahb); + if (error != 0) { + device_printf(dev, "cannot de-assert reset\n"); + return (error); + } + } + /* Activate the module clock. */ - switch (allwinner_soc_type()) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case ALLWINNERSOC_A10: - case ALLWINNERSOC_A10S: - case ALLWINNERSOC_A20: - clk = a10_clk_mmc_activate(sc->a10_id); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case ALLWINNERSOC_A31: - case ALLWINNERSOC_A31S: - clk = a31_clk_mmc_activate(sc->a10_id); - break; -#endif - default: - clk = -1; + error = clk_get_by_ofw_name(dev, "ahb", &sc->a10_clk_ahb); + if (error != 0) { + device_printf(dev, "cannot get ahb clock\n"); + goto fail; } - if (clk != 0) { - bus_teardown_intr(dev, sc->a10_res[A10_MMC_IRQRES], - sc->a10_intrhand); - bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); - device_printf(dev, "cannot activate mmc clock\n"); - return (ENXIO); + error = clk_enable(sc->a10_clk_ahb); + if (error != 0) { + device_printf(dev, "cannot enable ahb clock\n"); + goto fail; + } + error = clk_get_by_ofw_name(dev, "mmc", &sc->a10_clk_mmc); + if (error != 0) { + device_printf(dev, "cannot get mmc clock\n"); + goto fail; + } + error = clk_set_freq(sc->a10_clk_mmc, CARD_ID_FREQUENCY, + CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(dev, "cannot init mmc clock\n"); + goto fail; + } + error = clk_enable(sc->a10_clk_mmc); + if (error != 0) { + device_printf(dev, "cannot enable mmc clock\n"); + goto fail; } sc->a10_timeout = 10; @@ -217,9 +236,6 @@ a10_mmc_attach(device_t dev) tree = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); SYSCTL_ADD_INT(ctx, tree, OID_AUTO, "req_timeout", CTLFLAG_RW, &sc->a10_timeout, 0, "Request timeout in seconds"); - mtx_init(&sc->a10_mtx, device_get_nameunit(sc->a10_dev), "a10_mmc", - MTX_DEF); - callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); /* Reset controller. */ if (a10_mmc_reset(sc) != 0) { @@ -826,25 +842,14 @@ a10_mmc_update_ios(device_t bus, device_t child) return (error); /* Set the MMC clock. */ - switch (allwinner_soc_type()) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case ALLWINNERSOC_A10: - case ALLWINNERSOC_A10S: - case ALLWINNERSOC_A20: - error = a10_clk_mmc_cfg(sc->a10_id, ios->clock); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case ALLWINNERSOC_A31: - case ALLWINNERSOC_A31S: - error = a31_clk_mmc_cfg(sc->a10_id, ios->clock); - break; -#endif - default: - error = ENXIO; - } - if (error != 0) + error = clk_set_freq(sc->a10_clk_mmc, ios->clock, + CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(sc->a10_dev, + "failed to set frequency to %u Hz: %d\n", + ios->clock, error); return (error); + } /* Enable clock. */ clkcr |= A10_MMC_CARD_CLK_ON; diff --git a/sys/arm/allwinner/a10_sramc.c b/sys/arm/allwinner/a10_sramc.c index a26afbb..22ba1f7 100644 --- a/sys/arm/allwinner/a10_sramc.c +++ b/sys/arm/allwinner/a10_sramc.c @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include "a10_sramc.h" #define SRAM_CTL1_CFG 0x04 +#define CTL1_CFG_SRAMD_MAP_USB0 (1 << 0) struct a10_sramc_softc { struct resource *res; @@ -71,7 +72,7 @@ static int a10_sramc_probe(device_t dev) { - if (ofw_bus_is_compatible(dev, "allwinner,sun4i-sramc")) { + if (ofw_bus_is_compatible(dev, "allwinner,sun4i-a10-sram-controller")) { device_set_desc(dev, "Allwinner sramc module"); return (BUS_PROBE_DEFAULT); } @@ -113,7 +114,8 @@ static driver_t a10_sramc_driver = { static devclass_t a10_sramc_devclass; -DRIVER_MODULE(a10_sramc, simplebus, a10_sramc_driver, a10_sramc_devclass, 0, 0); +EARLY_DRIVER_MODULE(a10_sramc, simplebus, a10_sramc_driver, a10_sramc_devclass, + 0, 0, BUS_PASS_RESOURCE + BUS_PASS_ORDER_EARLY); int a10_map_to_emac(void) @@ -131,3 +133,20 @@ a10_map_to_emac(void) return (0); } + +int +a10_map_to_otg(void) +{ + struct a10_sramc_softc *sc = a10_sramc_sc; + uint32_t reg_value; + + if (sc == NULL) + return (ENXIO); + + /* Map SRAM to OTG */ + reg_value = sramc_read_4(sc, SRAM_CTL1_CFG); + reg_value |= CTL1_CFG_SRAMD_MAP_USB0; + sramc_write_4(sc, SRAM_CTL1_CFG, reg_value); + + return (0); +} diff --git a/sys/arm/allwinner/a10_sramc.h b/sys/arm/allwinner/a10_sramc.h index 9c906df..d66a8f2 100644 --- a/sys/arm/allwinner/a10_sramc.h +++ b/sys/arm/allwinner/a10_sramc.h @@ -30,5 +30,6 @@ #define _A10_SRAMC_H_ int a10_map_to_emac(void); +int a10_map_to_otg(void); #endif diff --git a/sys/arm/allwinner/a20/a20_if_dwc.c b/sys/arm/allwinner/a20/a20_if_dwc.c index 711873d..2f88d9d 100644 --- a/sys/arm/allwinner/a20/a20_if_dwc.c +++ b/sys/arm/allwinner/a20/a20_if_dwc.c @@ -41,8 +41,8 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/ofw_bus_subr.h> #include <arm/allwinner/allwinner_machdep.h> -#include <arm/allwinner/a10_clk.h> -#include <arm/allwinner/a31/a31_clk.h> +#include <dev/extres/clk/clk.h> +#include <dev/extres/regulator/regulator.h> #include "if_dwc_if.h" @@ -62,29 +62,49 @@ a20_if_dwc_probe(device_t dev) static int a20_if_dwc_init(device_t dev) { - int clk; - - /* Activate GMAC clock and set the pin mux to rgmii. */ - switch (allwinner_soc_type()) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case ALLWINNERSOC_A10: - case ALLWINNERSOC_A10S: - case ALLWINNERSOC_A20: - clk = a10_clk_gmac_activate(ofw_bus_get_node(dev)); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case ALLWINNERSOC_A31: - case ALLWINNERSOC_A31S: - clk = a31_clk_gmac_activate(ofw_bus_get_node(dev)); - break; -#endif - default: - clk = -1; + const char *tx_parent_name; + char *phy_type; + clk_t clk_tx, clk_tx_parent; + regulator_t reg; + phandle_t node; + int error; + + node = ofw_bus_get_node(dev); + + /* Configure PHY for MII or RGMII mode */ + if (OF_getprop_alloc(node, "phy-mode", 1, (void **)&phy_type)) { + error = clk_get_by_ofw_name(dev, "allwinner_gmac_tx", &clk_tx); + if (error != 0) { + device_printf(dev, "could not get tx clk\n"); + return (error); + } + + if (strcmp(phy_type, "rgmii") == 0) + tx_parent_name = "gmac_int_tx"; + else + tx_parent_name = "mii_phy_tx"; + + error = clk_get_by_name(dev, tx_parent_name, &clk_tx_parent); + if (error != 0) { + device_printf(dev, "could not get clock '%s'\n", + tx_parent_name); + return (error); + } + + error = clk_set_parent_by_clk(clk_tx, clk_tx_parent); + if (error != 0) { + device_printf(dev, "could not set tx clk parent\n"); + return (error); + } } - if (clk != 0) { - device_printf(dev, "could not activate gmac module\n"); - return (ENXIO); + + /* Enable PHY regulator if applicable */ + if (regulator_get_by_ofw_property(dev, "phy-supply", ®) == 0) { + error = regulator_enable(reg); + if (error != 0) { + device_printf(dev, "could not enable PHY regulator\n"); + return (error); + } } return (0); diff --git a/sys/arm/allwinner/a31/a31_clk.c b/sys/arm/allwinner/a31/a31_clk.c deleted file mode 100644 index edda8bb..0000000 --- a/sys/arm/allwinner/a31/a31_clk.c +++ /dev/null @@ -1,378 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org> - * Copyright (c) 2016 Emmanuel Vadot <manu@bidouilliste.com> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Simple clock driver for Allwinner A31 - * Adapted from a10_clk.c -*/ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/bus.h> -#include <sys/kernel.h> -#include <sys/module.h> -#include <sys/malloc.h> -#include <machine/bus.h> - -#include <dev/ofw/openfirm.h> -#include <dev/ofw/ofw_bus_subr.h> - -#include <arm/allwinner/a31/a31_clk.h> - -struct a31_ccm_softc { - struct resource *res; - struct mtx mtx; - int pll6_enabled; - int ehci_refcnt; -}; - -static struct a31_ccm_softc *a31_ccm_sc = NULL; - -#define ccm_read_4(sc, reg) \ - bus_read_4((sc)->res, (reg)) -#define ccm_write_4(sc, reg, val) \ - bus_write_4((sc)->res, (reg), (val)) - -#define CCM_LOCK(sc) mtx_lock(&(sc)->mtx) -#define CCM_UNLOCK(sc) mtx_unlock(&(sc)->mtx) - -#define PLL6_TIMEOUT 10 - -static int -a31_ccm_probe(device_t dev) -{ - - if (!ofw_bus_status_okay(dev)) - return (ENXIO); - - if (ofw_bus_is_compatible(dev, "allwinner,sun6i-a31-ccm")) { - device_set_desc(dev, "Allwinner Clock Control Module"); - return(BUS_PROBE_DEFAULT); - } - - return (ENXIO); -} - -static int -a31_ccm_attach(device_t dev) -{ - struct a31_ccm_softc *sc = device_get_softc(dev); - int rid = 0; - - if (a31_ccm_sc) - return (ENXIO); - - sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); - if (!sc->res) { - device_printf(dev, "could not allocate resource\n"); - return (ENXIO); - } - - mtx_init(&sc->mtx, "a31 ccm", NULL, MTX_DEF); - - a31_ccm_sc = sc; - - return (0); -} - -static device_method_t a31_ccm_methods[] = { - DEVMETHOD(device_probe, a31_ccm_probe), - DEVMETHOD(device_attach, a31_ccm_attach), - { 0, 0 } -}; - -static driver_t a31_ccm_driver = { - "a31_ccm", - a31_ccm_methods, - sizeof(struct a31_ccm_softc), -}; - -static devclass_t a31_ccm_devclass; - -EARLY_DRIVER_MODULE(a31_ccm, simplebus, a31_ccm_driver, a31_ccm_devclass, 0, 0, - BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE); - -static int -a31_clk_pll6_enable(void) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - int i; - - /* Datasheet recommand to use the default 600Mhz value */ - sc = a31_ccm_sc; - if (sc->pll6_enabled) - return (0); - reg_value = ccm_read_4(sc, A31_CCM_PLL6_CFG); - reg_value |= A31_CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, A31_CCM_PLL6_CFG, reg_value); - - /* Wait for PLL to be stable */ - for (i = 0; i < PLL6_TIMEOUT; i++) - if ((ccm_read_4(sc, A31_CCM_PLL6_CFG) & - A31_CCM_PLL6_CFG_REG_LOCK) == A31_CCM_PLL6_CFG_REG_LOCK) - break; - if (i == PLL6_TIMEOUT) - return (ENXIO); - sc->pll6_enabled = 1; - - return (0); -} - -static unsigned int -a31_clk_pll6_get_rate(void) -{ - struct a31_ccm_softc *sc; - uint32_t k, n, reg_value; - - sc = a31_ccm_sc; - reg_value = ccm_read_4(sc, A31_CCM_PLL6_CFG); - n = ((reg_value & A31_CCM_PLL_CFG_FACTOR_N) >> - A31_CCM_PLL_CFG_FACTOR_N_SHIFT); - k = ((reg_value & A31_CCM_PLL_CFG_FACTOR_K) >> - A31_CCM_PLL_CFG_FACTOR_K_SHIFT) + 1; - - return ((A31_CCM_CLK_REF_FREQ * n * k) / 2); -} - -int -a31_clk_gmac_activate(phandle_t node) -{ - char *phy_type; - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (a31_clk_pll6_enable()) - return (ENXIO); - - /* Gating AHB clock for GMAC */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value |= A31_CCM_AHB_GATING_GMAC; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* Set GMAC mode. */ - reg_value = A31_CCM_GMAC_CLK_MII; - if (OF_getprop_alloc(node, "phy-mode", 1, (void **)&phy_type) > 0) { - if (strcasecmp(phy_type, "rgmii") == 0) - reg_value = A31_CCM_GMAC_CLK_RGMII | - A31_CCM_GMAC_MODE_RGMII; - free(phy_type, M_OFWPROP); - } - ccm_write_4(sc, A31_CCM_GMAC_CLK, reg_value); - - /* Reset gmac */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value |= A31_CCM_AHB1_RST_REG0_GMAC; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - - return (0); -} - -int -a31_clk_mmc_activate(int devid) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (a31_clk_pll6_enable()) - return (ENXIO); - - /* Gating AHB clock for SD/MMC */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value |= A31_CCM_AHB_GATING_SDMMC0 << devid; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* Soft reset */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value |= A31_CCM_AHB1_RST_REG0_SDMMC << devid; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - - return (0); -} - -int -a31_clk_mmc_cfg(int devid, int freq) -{ - struct a31_ccm_softc *sc; - uint32_t clksrc, m, n, ophase, phase, reg_value; - unsigned int pll_freq; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - freq /= 1000; - if (freq <= 400) { - pll_freq = A31_CCM_CLK_REF_FREQ / 1000; - clksrc = A31_CCM_SD_CLK_SRC_SEL_OSC24M; - ophase = 0; - phase = 0; - n = 2; - } else if (freq <= 25000) { - pll_freq = a31_clk_pll6_get_rate() / 1000; - clksrc = A31_CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 0; - phase = 5; - n = 2; - } else if (freq <= 50000) { - pll_freq = a31_clk_pll6_get_rate() / 1000; - clksrc = A31_CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 3; - phase = 5; - n = 0; - } else - return (EINVAL); - m = ((pll_freq / (1 << n)) / (freq)) - 1; - reg_value = ccm_read_4(sc, A31_CCM_MMC0_SCLK_CFG + (devid * 4)); - reg_value &= ~A31_CCM_SD_CLK_SRC_SEL; - reg_value |= (clksrc << A31_CCM_SD_CLK_SRC_SEL_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_PHASE_CTR; - reg_value |= (phase << A31_CCM_SD_CLK_PHASE_CTR_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_DIV_RATIO_N; - reg_value |= (n << A31_CCM_SD_CLK_DIV_RATIO_N_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_OPHASE_CTR; - reg_value |= (ophase << A31_CCM_SD_CLK_OPHASE_CTR_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_DIV_RATIO_M; - reg_value |= m; - reg_value |= A31_CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, A31_CCM_MMC0_SCLK_CFG + (devid * 4), reg_value); - - return (0); -} - -int -a31_clk_i2c_activate(int devid) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (a31_clk_pll6_enable()) - return (ENXIO); - - /* Gating APB clock for I2C/TWI */ - reg_value = ccm_read_4(sc, A31_CCM_APB2_GATING); - reg_value |= A31_CCM_APB2_GATING_TWI << devid; - ccm_write_4(sc, A31_CCM_APB2_GATING, reg_value); - - /* Soft reset */ - reg_value = ccm_read_4(sc, A31_CCM_APB2_RST); - reg_value |= A31_CCM_APB2_RST_TWI << devid; - ccm_write_4(sc, A31_CCM_APB2_RST, reg_value); - - return (0); -} - -int -a31_clk_ehci_activate(void) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - if (++sc->ehci_refcnt == 1) { - /* Enable USB PHY */ - reg_value = ccm_read_4(sc, A31_CCM_USBPHY_CLK); - reg_value |= A31_CCM_USBPHY_CLK_GATING_USBPHY0; - reg_value |= A31_CCM_USBPHY_CLK_GATING_USBPHY1; - reg_value |= A31_CCM_USBPHY_CLK_GATING_USBPHY2; - reg_value |= A31_CCM_USBPHY_CLK_USBPHY1_RST; - reg_value |= A31_CCM_USBPHY_CLK_USBPHY2_RST; - ccm_write_4(sc, A31_CCM_USBPHY_CLK, reg_value); - - /* Gating AHB clock for EHCI */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value |= A31_CCM_AHB_GATING_EHCI0; - reg_value |= A31_CCM_AHB_GATING_EHCI1; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* De-assert reset */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value |= A31_CCM_AHB1_RST_REG0_EHCI0; - reg_value |= A31_CCM_AHB1_RST_REG0_EHCI1; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - } - CCM_UNLOCK(sc); - - return (0); -} - -int -a31_clk_ehci_deactivate(void) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - if (--sc->ehci_refcnt == 0) { - /* Disable USB PHY */ - reg_value = ccm_read_4(sc, A31_CCM_USBPHY_CLK); - reg_value &= ~A31_CCM_USBPHY_CLK_GATING_USBPHY0; - reg_value &= ~A31_CCM_USBPHY_CLK_GATING_USBPHY1; - reg_value &= ~A31_CCM_USBPHY_CLK_GATING_USBPHY2; - reg_value &= ~A31_CCM_USBPHY_CLK_USBPHY1_RST; - reg_value &= ~A31_CCM_USBPHY_CLK_USBPHY2_RST; - ccm_write_4(sc, A31_CCM_USBPHY_CLK, reg_value); - - /* Gating AHB clock for EHCI */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value &= ~A31_CCM_AHB_GATING_EHCI0; - reg_value &= ~A31_CCM_AHB_GATING_EHCI1; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* Assert reset */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value &= ~A31_CCM_AHB1_RST_REG0_EHCI0; - reg_value &= ~A31_CCM_AHB1_RST_REG0_EHCI1; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - } - CCM_UNLOCK(sc); - - return (0); -} diff --git a/sys/arm/allwinner/a31/a31_clk.h b/sys/arm/allwinner/a31/a31_clk.h deleted file mode 100644 index 1ec6a79..0000000 --- a/sys/arm/allwinner/a31/a31_clk.h +++ /dev/null @@ -1,213 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu <ganbold@freebsd.org> - * Copyright (c) 2016 Emmanuel Vadot <manu@bidouilliste.com> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#ifndef _A31_CLK_H_ -#define _A31_CLK_H_ - -#define A31_CCM_PLL1_CFG 0x0000 -#define A31_CCM_PLL2_CFG 0x0008 -#define A31_CCM_PLL3_CFG 0x0010 -#define A31_CCM_PLL4_CFG 0x0018 -#define A31_CCM_PLL5_CFG 0x0020 -#define A31_CCM_PLL6_CFG 0x0028 -#define A31_CCM_PLL7_CFG 0x0030 -#define A31_CCM_PLL8_CFG 0x0038 -#define A31_CCM_MIPI_PLL_CFG 0x0040 -#define A31_CCM_PLL9_CFG 0x0044 -#define A31_CCM_PLL10_CFG 0x0048 -#define A31_CCM_AXI_CFG_REG 0x0050 -#define A31_CCM_AHB1_APB1_CFG 0x0054 -#define A31_CCM_APB2_CLK_DIV 0x0058 -#define A31_CCM_AHB_GATING0 0x0060 -#define A31_CCM_AHB_GATING1 0x0064 -#define A31_CCM_APB1_GATING 0x0068 -#define A31_CCM_APB2_GATING 0x006c -#define A31_CCM_NAND0_SCLK_CFG 0x0080 -#define A31_CCM_NAND1_SCLK_CFG 0x0084 -#define A31_CCM_MMC0_SCLK_CFG 0x0088 -#define A31_CCM_MMC1_SCLK_CFG 0x008c -#define A31_CCM_MMC2_SCLK_CFG 0x0090 -#define A31_CCM_MMC3_SCLK_CFG 0x0094 -#define A31_CCM_TS_CLK 0x0098 -#define A31_CCM_SS_CLK 0x009c -#define A31_CCM_SPI0_CLK 0x00a0 -#define A31_CCM_SPI1_CLK 0x00a4 -#define A31_CCM_SPI2_CLK 0x00a8 -#define A31_CCM_SPI3_CLK 0x00ac -#define A31_CCM_DAUDIO0_CLK 0x00b0 -#define A31_CCM_DAUDIO1_CLK 0x00b4 -#define A31_CCM_USBPHY_CLK 0x00cc -#define A31_CCM_GMAC_CLK 0x00d0 -#define A31_CCM_MDFS_CLK 0x00f0 -#define A31_CCM_DRAM_CLK 0x00f4 -#define A31_CCM_DRAM_GATING 0x0100 -#define A31_CCM_BE0_SCLK 0x0104 -#define A31_CCM_BE1_SCLK 0x0108 -#define A31_CCM_FE0_CLK 0x010c -#define A31_CCM_FE1_CLK 0x0110 -#define A31_CCM_MP_CLK 0x0114 -#define A31_CCM_LCD0_CH0_CLK 0x0118 -#define A31_CCM_LCD1_CH0_CLK 0x011c -#define A31_CCM_LCD0_CH1_CLK 0x012c -#define A31_CCM_LCD1_CH1_CLK 0x0130 -#define A31_CCM_CSI0_CLK 0x0134 -#define A31_CCM_CSI1_CLK 0x0138 -#define A31_CCM_VE_CLK 0x013c -#define A31_CCM_AUDIO_CODEC_CLK 0x0140 -#define A31_CCM_AVS_CLK 0x0144 -#define A31_CCM_DIGITAL_MIC_CLK 0x0148 -#define A31_CCM_HDMI_CLK 0x0150 -#define A31_CCM_PS_CLK 0x0154 -#define A31_CCM_MBUS_SCLK_CFG0 0x015c -#define A31_CCM_MBUS_SCLK_CFG1 0x0160 -#define A31_CCM_MIPI_DSI_CLK 0x0168 -#define A31_CCM_MIPI_CSI0_CLK 0x016c -#define A31_CCM_DRC0_SCLK_CFG 0x0180 -#define A31_CCM_DRC1_SCLK_CFG 0x0184 -#define A31_CCM_DEU0_SCLK_CFG 0x0188 -#define A31_CCM_DEU1_SCLK_CFG 0x018c -#define A31_CCM_GPU_CORE_CLK 0x01a0 -#define A31_CCM_GPU_MEM_CLK 0x01a4 -#define A31_CCM_GPU_HYD_CLK 0x01a8 -#define A31_CCM_ATS_CLK 0x01b0 -#define A31_CCM_TRACE_CLK 0x01b4 -#define A31_CCM_PLL_LOCK_CFG 0x0200 -#define A31_CCM_PLL1_LOCK_CFG 0x0204 -#define A31_CCM_PLL1_BIAS 0x0220 -#define A31_CCM_PLL2_BIAS 0x0224 -#define A31_CCM_PLL3_BIAS 0x0228 -#define A31_CCM_PLL4_BIAS 0x022c -#define A31_CCM_PLL5_BIAS 0x0230 -#define A31_CCM_PLL6_BIAS 0x0234 -#define A31_CCM_PLL7_BIAS 0x0238 -#define A31_CCM_PLL8_BIAS 0x023c -#define A31_CCM_PLL9_BIAS 0x0240 -#define A31_CCM_MIPI_PLL_BIAS 0x0244 -#define A31_CCM_PLL10_BIAS 0x0248 -#define A31_CCM_PLL1_PAT_CFG 0x0280 -#define A31_CCM_PLL2_PAT_CFG 0x0284 -#define A31_CCM_PLL3_PAT_CFG 0x0288 -#define A31_CCM_PLL4_PAT_CFG 0x028c -#define A31_CCM_PLL5_PAT_CFG 0x0290 -#define A31_CCM_PLL6_PAT_CFG 0x0294 -#define A31_CCM_PLL7_PAT_CFG 0x0298 -#define A31_CCM_PLL8_PAT_CFG 0x029c -#define A31_CCM_MIPI_PLL_PAT_CFG 0x02a0 -#define A31_CCM_PLL9_PAT_CFG 0x02a4 -#define A31_CCM_PLL10_PAT_CFG 0x02a8 -#define A31_CCM_AHB1_RST_REG0 0x02c0 -#define A31_CCM_AHB1_RST_REG1 0x02c4 -#define A31_CCM_AHB1_RST_REG2 0x02c8 -#define A31_CCM_APB1_RST 0x02d0 -#define A31_CCM_APB2_RST 0x02d8 -#define A31_CCM_CLK_OUTA 0x0300 -#define A31_CCM_CLK_OUTB 0x0304 -#define A31_CCM_CLK_OUTC 0x0308 - -/* PLL6_CFG_REG */ -#define A31_CCM_PLL6_CFG_REG_LOCK (1 << 28) - -/* AHB_GATING_REG0 */ -#define A31_CCM_AHB_GATING_OHCI2 (1 << 31) -#define A31_CCM_AHB_GATING_OHCI1 (1 << 30) -#define A31_CCM_AHB_GATING_OHCI0 (1 << 29) -#define A31_CCM_AHB_GATING_EHCI1 (1 << 27) -#define A31_CCM_AHB_GATING_EHCI0 (1 << 26) -#define A31_CCM_AHB_GATING_USBDRD (1 << 24) -#define A31_CCM_AHB_GATING_GMAC (1 << 17) -#define A31_CCM_AHB_GATING_SDMMC0 (1 << 8) - -#define A31_CCM_PLL_CFG_ENABLE (1U << 31) -#define A31_CCM_PLL_CFG_BYPASS (1U << 30) -#define A31_CCM_PLL_CFG_PLL5 (1U << 25) -#define A31_CCM_PLL_CFG_PLL6 (1U << 24) -#define A31_CCM_PLL_CFG_FACTOR_N 0x1f00 -#define A31_CCM_PLL_CFG_FACTOR_N_SHIFT 8 -#define A31_CCM_PLL_CFG_FACTOR_K 0x30 -#define A31_CCM_PLL_CFG_FACTOR_K_SHIFT 4 -#define A31_CCM_PLL_CFG_FACTOR_M 0x3 - -/* APB2_GATING */ -#define A31_CCM_APB2_GATING_TWI (1 << 0) - -/* AHB1_RST_REG0 */ -#define A31_CCM_AHB1_RST_REG0_OHCI2 (1 << 31) -#define A31_CCM_AHB1_RST_REG0_OHCI1 (1 << 30) -#define A31_CCM_AHB1_RST_REG0_OHCI0 (1 << 29) -#define A31_CCM_AHB1_RST_REG0_EHCI1 (1 << 27) -#define A31_CCM_AHB1_RST_REG0_EHCI0 (1 << 26) -#define A31_CCM_AHB1_RST_REG0_GMAC (1 << 17) -#define A31_CCM_AHB1_RST_REG0_SDMMC (1 << 8) - -/* APB2_RST_REG */ -#define A31_CCM_APB2_RST_TWI (1 << 0) - - -/* GMAC */ -#define A31_CCM_GMAC_CLK_DELAY_SHIFT 10 -#define A31_CCM_GMAC_CLK_MODE_MASK 0x7 -#define A31_CCM_GMAC_MODE_RGMII (1 << 2) -#define A31_CCM_GMAC_CLK_MII 0x0 -#define A31_CCM_GMAC_CLK_EXT_RGMII 0x1 -#define A31_CCM_GMAC_CLK_RGMII 0x2 - -/* SD/MMC */ -#define A31_CCM_SD_CLK_SRC_SEL 0x3000000 -#define A31_CCM_SD_CLK_SRC_SEL_SHIFT 24 -#define A31_CCM_SD_CLK_SRC_SEL_OSC24M 0 -#define A31_CCM_SD_CLK_SRC_SEL_PLL6 1 -#define A31_CCM_SD_CLK_PHASE_CTR 0x700000 -#define A31_CCM_SD_CLK_PHASE_CTR_SHIFT 20 -#define A31_CCM_SD_CLK_DIV_RATIO_N 0x30000 -#define A31_CCM_SD_CLK_DIV_RATIO_N_SHIFT 16 -#define A31_CCM_SD_CLK_OPHASE_CTR 0x700 -#define A31_CCM_SD_CLK_OPHASE_CTR_SHIFT 8 -#define A31_CCM_SD_CLK_DIV_RATIO_M 0xf - -/* USB */ -#define A31_CCM_USBPHY_CLK_GATING_OHCI2 (1 << 18) -#define A31_CCM_USBPHY_CLK_GATING_OHCI1 (1 << 17) -#define A31_CCM_USBPHY_CLK_GATING_OHCI0 (1 << 16) -#define A31_CCM_USBPHY_CLK_GATING_USBPHY2 (1 << 10) -#define A31_CCM_USBPHY_CLK_GATING_USBPHY1 (1 << 9) -#define A31_CCM_USBPHY_CLK_GATING_USBPHY0 (1 << 8) -#define A31_CCM_USBPHY_CLK_USBPHY2_RST (1 << 2) -#define A31_CCM_USBPHY_CLK_USBPHY1_RST (1 << 1) -#define A31_CCM_USBPHY_CLK_USBPHY0_RST (1 << 0) - -#define A31_CCM_CLK_REF_FREQ 24000000U - -int a31_clk_gmac_activate(phandle_t); -int a31_clk_mmc_activate(int); -int a31_clk_mmc_cfg(int, int); -int a31_clk_i2c_activate(int); -int a31_clk_ehci_activate(void); -int a31_clk_ehci_deactivate(void); - -#endif /* _A31_CLK_H_ */ diff --git a/sys/arm/allwinner/a31/a31_padconf.c b/sys/arm/allwinner/a31/a31_padconf.c index 1a38c79..e591d57 100644 --- a/sys/arm/allwinner/a31/a31_padconf.c +++ b/sys/arm/allwinner/a31/a31_padconf.c @@ -51,19 +51,19 @@ const static struct allwinner_pins a31_pins[] = { {"PA12", 0, 12, {"gpio_in", "gpio_out", "gmac", "lcd1", "mmc3", "mmc2", NULL, NULL}}, {"PA13", 0, 13, {"gpio_in", "gpio_out", "gmac", "lcd1", "mmc3", "mmc2", NULL, NULL}}, {"PA14", 0, 14, {"gpio_in", "gpio_out", "gmac", "lcd1", "mmc3", "mmc2", NULL, NULL}}, - {"PA15", 0, 15, {"gpio_in", "gpio_out", "gmac", "lcd1", "dmic", NULL, NULL, NULL}}, + {"PA15", 0, 15, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_a", NULL, NULL, NULL}}, {"PA16", 0, 16, {"gpio_in", "gpio_out", "gmac", "lcd1", "dmic", NULL, NULL, NULL}}, - {"PA17", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_b", NULL, NULL, NULL}}, - {"PA18", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, - {"PA19", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, - {"PA20", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA21", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA22", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA23", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA24", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA25", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA26", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_c", NULL, NULL, NULL}}, - {"PA27", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", NULL, NULL, NULL, NULL}}, + {"PA17", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "dmic", NULL, NULL, NULL}}, + {"PA18", 0, 18, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_b", NULL, NULL, NULL}}, + {"PA19", 0, 19, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, + {"PA20", 0, 20, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, + {"PA21", 0, 21, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA22", 0, 22, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA23", 0, 23, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA24", 0, 24, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA25", 0, 25, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA26", 0, 26, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_c", NULL, NULL, NULL}}, + {"PA27", 0, 27, {"gpio_in", "gpio_out", "gmac", "lcd1", NULL, NULL, NULL, NULL}}, {"PB0", 1, 0, {"gpio_in", "gpio_out", "i2s0", "uart3", "csi", NULL, NULL, NULL}}, {"PB1", 1, 1, {"gpio_in", "gpio_out", "i2s0", NULL, NULL, NULL, NULL, NULL}}, @@ -144,11 +144,11 @@ const static struct allwinner_pins a31_pins[] = { {"PE9", 4, 9, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, {"PE10", 4, 10, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, {"PE11", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE12", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE13", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE14", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE15", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE16", 4, 11, {"gpio_in", "gpio_out", "csi", NULL, NULL, NULL, NULL, NULL}}, + {"PE12", 4, 12, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE13", 4, 13, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE14", 4, 14, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE15", 4, 15, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE16", 4, 16, {"gpio_in", "gpio_out", "csi", NULL, NULL, NULL, NULL, NULL}}, {"PF0", 5, 0, {"gpio_in", "gpio_out", "mmc0", NULL, "jtag", NULL, NULL, NULL}}, {"PF1", 5, 1, {"gpio_in", "gpio_out", "mmc0", NULL, "jtag", NULL, NULL, NULL}}, @@ -205,9 +205,9 @@ const static struct allwinner_pins a31_pins[] = { {"PH25", 7, 25, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, {"PH26", 7, 26, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, {"PH27", 7, 27, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, - {"PH28", 7, 27, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, - {"PH29", 7, 27, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, - {"PH30", 7, 27, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, + {"PH28", 7, 28, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, + {"PH29", 7, 29, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, + {"PH30", 7, 30, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, }; const struct allwinner_padconf a31_padconf = { diff --git a/sys/arm/allwinner/aw_ccu.c b/sys/arm/allwinner/aw_ccu.c new file mode 100644 index 0000000..d2ce774 --- /dev/null +++ b/sys/arm/allwinner/aw_ccu.c @@ -0,0 +1,224 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner oscillator clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/fdt/simplebus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <dev/extres/clk/clk.h> + +#include "clkdev_if.h" + +#define CCU_BASE 0x01c20000 +#define CCU_SIZE 0x400 + +struct aw_ccu_softc { + struct simplebus_softc sc; + bus_space_tag_t bst; + bus_space_handle_t bsh; + struct mtx mtx; +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10", 1 }, + { "allwinner,sun7i-a20", 1 }, + { "allwinner,sun6i-a31", 1 }, + { "allwinner,sun6i-a31s", 1 }, + { NULL, 0 } +}; + +static int +aw_ccu_check_addr(bus_addr_t addr) +{ + if (addr < CCU_BASE || addr >= (CCU_BASE + CCU_SIZE)) + return (EINVAL); + return (0); +} + +static int +aw_ccu_write_4(device_t dev, bus_addr_t addr, uint32_t val) +{ + struct aw_ccu_softc *sc; + + if (aw_ccu_check_addr(addr) != 0) + return (EINVAL); + + sc = device_get_softc(dev); + mtx_assert(&sc->mtx, MA_OWNED); + bus_space_write_4(sc->bst, sc->bsh, addr - CCU_BASE, val); + + return (0); +} + +static int +aw_ccu_read_4(device_t dev, bus_addr_t addr, uint32_t *val) +{ + struct aw_ccu_softc *sc; + + if (aw_ccu_check_addr(addr) != 0) + return (EINVAL); + + sc = device_get_softc(dev); + mtx_assert(&sc->mtx, MA_OWNED); + *val = bus_space_read_4(sc->bst, sc->bsh, addr - CCU_BASE); + + return (0); +} + +static int +aw_ccu_modify_4(device_t dev, bus_addr_t addr, uint32_t clr, uint32_t set) +{ + struct aw_ccu_softc *sc; + uint32_t val; + + if (aw_ccu_check_addr(addr) != 0) + return (EINVAL); + + sc = device_get_softc(dev); + mtx_assert(&sc->mtx, MA_OWNED); + val = bus_space_read_4(sc->bst, sc->bsh, addr - CCU_BASE); + val &= ~clr; + val |= set; + bus_space_write_4(sc->bst, sc->bsh, addr - CCU_BASE, val); + + return (0); +} + +static void +aw_ccu_device_lock(device_t dev) +{ + struct aw_ccu_softc *sc; + + sc = device_get_softc(dev); + mtx_lock(&sc->mtx); +} + +static void +aw_ccu_device_unlock(device_t dev) +{ + struct aw_ccu_softc *sc; + + sc = device_get_softc(dev); + mtx_unlock(&sc->mtx); +} + +static int +aw_ccu_probe(device_t dev) +{ + const char *name; + device_t pdev; + + name = ofw_bus_get_name(dev); + + if (name == NULL || strcmp(name, "clocks") != 0) + return (ENXIO); + + pdev = device_get_parent(dev); + if (ofw_bus_search_compatible(pdev, compat_data)->ocd_data == 0) + return (0); + + device_set_desc(dev, "Allwinner Clock Control Unit"); + return (BUS_PROBE_SPECIFIC); +} + +static int +aw_ccu_attach(device_t dev) +{ + struct aw_ccu_softc *sc; + phandle_t node, child; + device_t cdev; + int error; + + sc = device_get_softc(dev); + node = ofw_bus_get_node(dev); + + simplebus_init(dev, node); + + /* + * Map CCU registers. The DT doesn't have a "reg" property for the + * /clocks node and child nodes have conflicting "reg" properties. + */ + sc->bst = bus_get_bus_tag(dev); + error = bus_space_map(sc->bst, CCU_BASE, CCU_SIZE, 0, &sc->bsh); + if (error != 0) { + device_printf(dev, "couldn't map CCU: %d\n", error); + return (error); + } + + mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); + + /* Attach child devices */ + for (child = OF_child(node); child > 0; child = OF_peer(child)) { + cdev = simplebus_add_device(dev, child, 0, NULL, -1, NULL); + if (cdev != NULL) + device_probe_and_attach(cdev); + } + + return (bus_generic_attach(dev)); +} + +static device_method_t aw_ccu_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_ccu_probe), + DEVMETHOD(device_attach, aw_ccu_attach), + + /* clkdev interface */ + DEVMETHOD(clkdev_write_4, aw_ccu_write_4), + DEVMETHOD(clkdev_read_4, aw_ccu_read_4), + DEVMETHOD(clkdev_modify_4, aw_ccu_modify_4), + DEVMETHOD(clkdev_device_lock, aw_ccu_device_lock), + DEVMETHOD(clkdev_device_unlock, aw_ccu_device_unlock), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(aw_ccu, aw_ccu_driver, aw_ccu_methods, + sizeof(struct aw_ccu_softc), simplebus_driver); + +static devclass_t aw_ccu_devclass; + +EARLY_DRIVER_MODULE(aw_ccu, simplebus, aw_ccu_driver, aw_ccu_devclass, + 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + +MODULE_VERSION(aw_ccu, 1); diff --git a/sys/arm/allwinner/aw_reset.c b/sys/arm/allwinner/aw_reset.c new file mode 100644 index 0000000..3f56e9f --- /dev/null +++ b/sys/arm/allwinner/aw_reset.c @@ -0,0 +1,164 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner module software reset registers + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <dev/extres/hwreset/hwreset.h> + +#include "hwreset_if.h" + +#define RESET_OFFSET(index) ((index / 32) * 4) +#define RESET_SHIFT(index) (index % 32) + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun6i-a31-ahb1-reset", 1 }, + { "allwinner,sun6i-a31-clock-reset", 1 }, + { NULL, 0 } +}; + +struct aw_reset_softc { + struct resource *res; + struct mtx mtx; +}; + +static struct resource_spec aw_reset_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + +#define RESET_READ(sc, reg) bus_read_4((sc)->res, (reg)) +#define RESET_WRITE(sc, reg, val) bus_write_4((sc)->res, (reg), (val)) + +static int +aw_reset_assert(device_t dev, intptr_t id, bool reset) +{ + struct aw_reset_softc *sc; + uint32_t reg_value; + + sc = device_get_softc(dev); + + mtx_lock(&sc->mtx); + reg_value = RESET_READ(sc, RESET_OFFSET(id)); + if (reset) + reg_value &= ~(1 << RESET_SHIFT(id)); + else + reg_value |= (1 << RESET_SHIFT(id)); + RESET_WRITE(sc, RESET_OFFSET(id), reg_value); + mtx_unlock(&sc->mtx); + + return (0); +} + +static int +aw_reset_is_asserted(device_t dev, intptr_t id, bool *reset) +{ + struct aw_reset_softc *sc; + uint32_t reg_value; + + sc = device_get_softc(dev); + + mtx_lock(&sc->mtx); + reg_value = RESET_READ(sc, RESET_OFFSET(id)); + mtx_unlock(&sc->mtx); + + *reset = (reg_value & (1 << RESET_SHIFT(id))) != 0 ? false : true; + + return (0); +} + +static int +aw_reset_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Module Resets"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_reset_attach(device_t dev) +{ + struct aw_reset_softc *sc; + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, aw_reset_spec, &sc->res) != 0) { + device_printf(dev, "cannot allocate resources for device\n"); + return (ENXIO); + } + + mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); + + hwreset_register_ofw_provider(dev); + + return (0); +} + +static device_method_t aw_reset_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_reset_probe), + DEVMETHOD(device_attach, aw_reset_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_reset_assert), + DEVMETHOD(hwreset_is_asserted, aw_reset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_reset_driver = { + "aw_reset", + aw_reset_methods, + sizeof(struct aw_reset_softc), +}; + +static devclass_t aw_reset_devclass; + +EARLY_DRIVER_MODULE(aw_reset, simplebus, aw_reset_driver, aw_reset_devclass, + 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); +MODULE_VERSION(aw_reset, 1); diff --git a/sys/arm/allwinner/aw_usbphy.c b/sys/arm/allwinner/aw_usbphy.c index f0ee79d..25e8da0 100644 --- a/sys/arm/allwinner/aw_usbphy.c +++ b/sys/arm/allwinner/aw_usbphy.c @@ -44,10 +44,11 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/ofw_bus.h> #include <dev/ofw/ofw_bus_subr.h> -#include "gpio_if.h" +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> +#include <dev/extres/regulator/regulator.h> #define USBPHY_NUMOFF 3 -#define GPIO_POLARITY(flags) (((flags) & 1) ? GPIO_PIN_LOW : GPIO_PIN_HIGH) static struct ofw_compat_data compat_data[] = { { "allwinner,sun4i-a10-usb-phy", 1 }, @@ -58,89 +59,45 @@ static struct ofw_compat_data compat_data[] = { }; static int -awusbphy_gpio_set(device_t dev, phandle_t node, const char *pname) -{ - pcell_t gpio_prop[4]; - phandle_t gpio_node; - device_t gpio_dev; - uint32_t pin, flags; - ssize_t len; - int val; - - len = OF_getencprop(node, pname, gpio_prop, sizeof(gpio_prop)); - if (len == -1) - return (0); - - if (len != sizeof(gpio_prop)) { - device_printf(dev, "property %s length was %d, expected %d\n", - pname, len, sizeof(gpio_prop)); - return (ENXIO); - } - - gpio_node = OF_node_from_xref(gpio_prop[0]); - gpio_dev = OF_device_from_xref(gpio_prop[0]); - if (gpio_dev == NULL) { - device_printf(dev, "failed to get the GPIO device for %s\n", - pname); - return (ENOENT); - } - - if (GPIO_MAP_GPIOS(gpio_dev, node, gpio_node, - sizeof(gpio_prop) / sizeof(gpio_prop[0]) - 1, gpio_prop + 1, - &pin, &flags) != 0) { - device_printf(dev, "failed to map the GPIO pin for %s\n", - pname); - return (ENXIO); - } - - val = GPIO_POLARITY(flags); - - GPIO_PIN_SETFLAGS(gpio_dev, pin, GPIO_PIN_OUTPUT); - GPIO_PIN_SET(gpio_dev, pin, val); - - return (0); -} - -static int -awusbphy_supply_set(device_t dev, const char *pname) -{ - phandle_t node, reg_node; - pcell_t reg_xref; - - node = ofw_bus_get_node(dev); - - if (OF_getencprop(node, pname, ®_xref, sizeof(reg_xref)) == -1) - return (0); - - reg_node = OF_node_from_xref(reg_xref); - - return (awusbphy_gpio_set(dev, reg_node, "gpio")); -} - -static int awusbphy_init(device_t dev) { char pname[20]; - phandle_t node; int error, off; - - node = ofw_bus_get_node(dev); - - for (off = 0; off < USBPHY_NUMOFF; off++) { - snprintf(pname, sizeof(pname), "usb%d_id_det-gpio", off); - error = awusbphy_gpio_set(dev, node, pname); - if (error) + regulator_t reg; + hwreset_t rst; + clk_t clk; + + /* Enable clocks */ + for (off = 0; clk_get_by_ofw_index(dev, off, &clk) == 0; off++) { + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "couldn't enable clock %s\n", + clk_get_name(clk)); return (error); + } + } - snprintf(pname, sizeof(pname), "usb%d_vbus_det-gpio", off); - error = awusbphy_gpio_set(dev, node, pname); - if (error) + /* De-assert resets */ + for (off = 0; hwreset_get_by_ofw_idx(dev, off, &rst) == 0; off++) { + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(dev, "couldn't de-assert reset %d\n", + off); return (error); + } + } + /* Enable regulator(s) */ + for (off = 0; off < USBPHY_NUMOFF; off++) { snprintf(pname, sizeof(pname), "usb%d_vbus-supply", off); - error = awusbphy_supply_set(dev, pname); - if (error) + if (regulator_get_by_ofw_property(dev, pname, ®) != 0) + continue; + error = regulator_enable(reg); + if (error != 0) { + device_printf(dev, "couldn't enable regulator %s\n", + pname); return (error); + } } return (0); diff --git a/sys/arm/allwinner/clk/aw_ahbclk.c b/sys/arm/allwinner/clk/aw_ahbclk.c new file mode 100644 index 0000000..1d3b1a4 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_ahbclk.c @@ -0,0 +1,308 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner AHB clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk.h> + +#include "clkdev_if.h" + +#define A10_AHB_CLK_DIV_RATIO (0x3 << 4) +#define A10_AHB_CLK_DIV_RATIO_SHIFT 4 + +#define A13_AHB_CLK_SRC_SEL (0x3 << 6) +#define A13_AHB_CLK_SRC_SEL_MAX 3 +#define A13_AHB_CLK_SRC_SEL_SHIFT 6 + +#define A31_AHB1_PRE_DIV (0x3 << 6) +#define A31_AHB1_PRE_DIV_SHIFT 6 +#define A31_AHB1_CLK_SRC_SEL (0x3 << 12) +#define A31_AHB1_CLK_SRC_SEL_PLL6 3 +#define A31_AHB1_CLK_SRC_SEL_MAX 3 +#define A31_AHB1_CLK_SRC_SEL_SHIFT 12 + +enum aw_ahbclk_type { + AW_A10_AHB = 1, + AW_A13_AHB, + AW_A31_AHB1, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-ahb-clk", AW_A10_AHB }, + { "allwinner,sun5i-a13-ahb-clk", AW_A13_AHB }, + { "allwinner,sun6i-a31-ahb1-clk", AW_A31_AHB1 }, + { NULL, 0 } +}; + +struct aw_ahbclk_sc { + device_t clkdev; + bus_addr_t reg; + enum aw_ahbclk_type type; +}; + +#define AHBCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define AHBCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_ahbclk_init(struct clknode *clk, device_t dev) +{ + struct aw_ahbclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_A10_AHB: + index = 0; + break; + case AW_A13_AHB: + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + index = (val & A13_AHB_CLK_SRC_SEL) >> + A13_AHB_CLK_SRC_SEL_SHIFT; + break; + case AW_A31_AHB1: + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + index = (val & A31_AHB1_CLK_SRC_SEL) >> + A31_AHB1_CLK_SRC_SEL_SHIFT; + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_ahbclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_ahbclk_sc *sc; + uint32_t val, src_sel, div, pre_div; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + div = 1 << ((val & A10_AHB_CLK_DIV_RATIO) >> + A10_AHB_CLK_DIV_RATIO_SHIFT); + + switch (sc->type) { + case AW_A31_AHB1: + src_sel = (val & A31_AHB1_CLK_SRC_SEL) >> + A31_AHB1_CLK_SRC_SEL_SHIFT; + if (src_sel == A31_AHB1_CLK_SRC_SEL_PLL6) + pre_div = ((val & A31_AHB1_PRE_DIV) >> + A31_AHB1_PRE_DIV_SHIFT) + 1; + else + pre_div = 1; + break; + default: + pre_div = 1; + break; + } + + *freq = *freq / pre_div / div; + + return (0); +} + +static int +aw_ahbclk_set_mux(struct clknode *clk, int index) +{ + struct aw_ahbclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_A10_AHB: + if (index != 0) + return (ERANGE); + break; + case AW_A13_AHB: + if (index < 0 || index > A13_AHB_CLK_SRC_SEL_MAX) + return (ERANGE); + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + val &= ~A13_AHB_CLK_SRC_SEL; + val |= (index << A13_AHB_CLK_SRC_SEL_SHIFT); + AHBCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + break; + default: + return (ENXIO); + } + + return (0); +} + +static clknode_method_t aw_ahbclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_ahbclk_init), + CLKNODEMETHOD(clknode_recalc_freq, aw_ahbclk_recalc_freq), + CLKNODEMETHOD(clknode_set_mux, aw_ahbclk_set_mux), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_ahbclk_clknode, aw_ahbclk_clknode_class, + aw_ahbclk_clknode_methods, sizeof(struct aw_ahbclk_sc), clknode_class); + +static int +aw_ahbclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner AHB Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_ahbclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_ahbclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, + M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + + clk = clknode_create(clkdom, &aw_ahbclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + sc = clknode_get_softc(clk); + sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_ahbclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_ahbclk_probe), + DEVMETHOD(device_attach, aw_ahbclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_ahbclk_driver = { + "aw_ahbclk", + aw_ahbclk_methods, + 0 +}; + +static devclass_t aw_ahbclk_devclass; + +EARLY_DRIVER_MODULE(aw_ahbclk, simplebus, aw_ahbclk_driver, + aw_ahbclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_apbclk.c b/sys/arm/allwinner/clk/aw_apbclk.c new file mode 100644 index 0000000..a56387b --- /dev/null +++ b/sys/arm/allwinner/clk/aw_apbclk.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner APB clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk.h> + +#include "clkdev_if.h" + +#define APB0_CLK_RATIO (0x3 << 8) +#define APB0_CLK_RATIO_SHIFT 8 +#define APB1_CLK_SRC_SEL (0x3 << 24) +#define APB1_CLK_SRC_SEL_SHIFT 24 +#define APB1_CLK_SRC_SEL_MAX 0x3 +#define APB1_CLK_RAT_N (0x3 << 16) +#define APB1_CLK_RAT_N_SHIFT 16 +#define APB1_CLK_RAT_M (0x1f << 0) +#define APB1_CLK_RAT_M_SHIFT 0 + +enum aw_apbclk_type { + AW_A10_APB0 = 1, + AW_A10_APB1, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-apb0-clk", AW_A10_APB0 }, + { "allwinner,sun4i-a10-apb1-clk", AW_A10_APB1 }, + { NULL, 0 } +}; + +struct aw_apbclk_sc { + device_t clkdev; + bus_addr_t reg; + enum aw_apbclk_type type; +}; + +#define APBCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define APBCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_apbclk_init(struct clknode *clk, device_t dev) +{ + struct aw_apbclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_A10_APB0: + index = 0; + break; + case AW_A10_APB1: + DEVICE_LOCK(sc); + APBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + index = (val & APB1_CLK_SRC_SEL) >> APB1_CLK_SRC_SEL_SHIFT; + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_apbclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_apbclk_sc *sc; + uint32_t val, div, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + APBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + switch (sc->type) { + case AW_A10_APB0: + div = 1 << ((val & APB0_CLK_RATIO) >> APB0_CLK_RATIO_SHIFT); + if (div == 1) + div = 2; + *freq = *freq / div; + break; + case AW_A10_APB1: + n = 1 << ((val & APB1_CLK_RAT_N) >> APB1_CLK_RAT_N_SHIFT); + m = ((val & APB1_CLK_RAT_N) >> APB1_CLK_RAT_M_SHIFT) + 1; + *freq = *freq / n / m; + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +aw_apbclk_set_mux(struct clknode *clk, int index) +{ + struct aw_apbclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (sc->type != AW_A10_APB1) + return (ENXIO); + + if (index < 0 || index > APB1_CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + APBCLK_READ(sc, &val); + val &= ~APB1_CLK_SRC_SEL; + val |= (index << APB1_CLK_SRC_SEL_SHIFT); + APBCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static clknode_method_t aw_apbclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_apbclk_init), + CLKNODEMETHOD(clknode_recalc_freq, aw_apbclk_recalc_freq), + CLKNODEMETHOD(clknode_set_mux, aw_apbclk_set_mux), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_apbclk_clknode, aw_apbclk_clknode_class, + aw_apbclk_clknode_methods, sizeof(struct aw_apbclk_sc), clknode_class); + +static int +aw_apbclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner APB Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_apbclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_apbclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_apbclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_apbclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_apbclk_probe), + DEVMETHOD(device_attach, aw_apbclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_apbclk_driver = { + "aw_apbclk", + aw_apbclk_methods, + 0 +}; + +static devclass_t aw_apbclk_devclass; + +EARLY_DRIVER_MODULE(aw_apbclk, simplebus, aw_apbclk_driver, + aw_apbclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_axiclk.c b/sys/arm/allwinner/clk/aw_axiclk.c new file mode 100644 index 0000000..8f4a6d6 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_axiclk.c @@ -0,0 +1,201 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner AXI clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_mux.h> +#include <dev/extres/clk/clk_gate.h> + +#include "clkdev_if.h" + +#define AXI_CLK_DIV_RATIO (0x3 << 0) + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-axi-clk", 1 }, + { NULL, 0 } +}; + +struct aw_axiclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define AXICLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define AXICLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_axiclk_init(struct clknode *clk, device_t dev) +{ + clknode_init_parent_idx(clk, 0); + return (0); +} + +static int +aw_axiclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_axiclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + AXICLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + *freq = *freq / ((val & AXI_CLK_DIV_RATIO) + 1); + + return (0); +} + +static clknode_method_t aw_axiclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_axiclk_init), + CLKNODEMETHOD(clknode_recalc_freq, aw_axiclk_recalc_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_axiclk_clknode, aw_axiclk_clknode_class, + aw_axiclk_clknode_methods, sizeof(struct aw_axiclk_sc), clknode_class); + +static int +aw_axiclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner AXI Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_axiclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_axiclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *), M_OFWPROP, M_WAITOK); + def.parent_names[0] = clk_get_name(clk_parent); + def.parent_cnt = 1; + + clk = clknode_create(clkdom, &aw_axiclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_axiclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_axiclk_probe), + DEVMETHOD(device_attach, aw_axiclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_axiclk_driver = { + "aw_axiclk", + aw_axiclk_methods, + 0 +}; + +static devclass_t aw_axiclk_devclass; + +EARLY_DRIVER_MODULE(aw_axiclk, simplebus, aw_axiclk_driver, + aw_axiclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_codecclk.c b/sys/arm/allwinner/clk/aw_codecclk.c new file mode 100644 index 0000000..5c50f49 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_codecclk.c @@ -0,0 +1,164 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner CODEC clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_gate.h> +#include <dev/extres/hwreset/hwreset.h> + +#include "clkdev_if.h" + +#define SCLK_GATING_SHIFT 31 + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-codec-clk", 1 }, + { NULL, 0 } +}; + +static int +aw_codecclk_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + const char *parent_names[1] = { pclkname }; + struct clk_gate_def def; + + memset(&def, 0, sizeof(def)); + def.clkdef.id = index; + def.clkdef.name = clkname; + def.clkdef.parent_names = parent_names; + def.clkdef.parent_cnt = 1; + def.offset = paddr; + def.shift = SCLK_GATING_SHIFT; + def.mask = 1; + def.on_value = 1; + def.off_value = 0; + + return (clknode_gate_register(clkdom, &def)); +} + +static int +aw_codecclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner CODEC Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_codecclk_attach(device_t dev) +{ + struct clkdom *clkdom; + const char **names; + int nout, error; + uint32_t *indices; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + + node = ofw_bus_get_node(dev); + indices = NULL; + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout != 1) { + device_printf(dev, "must have exactly one output clock\n"); + error = ENOENT; + goto fail; + } + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + error = aw_codecclk_create(dev, paddr, clkdom, + clk_get_name(clk_parent), names[0], 1); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_codecclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_codecclk_probe), + DEVMETHOD(device_attach, aw_codecclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_codecclk_driver = { + "aw_codecclk", + aw_codecclk_methods, + 0 +}; + +static devclass_t aw_codecclk_devclass; + +EARLY_DRIVER_MODULE(aw_codecclk, simplebus, aw_codecclk_driver, + aw_codecclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_cpuclk.c b/sys/arm/allwinner/clk/aw_cpuclk.c new file mode 100644 index 0000000..045751b --- /dev/null +++ b/sys/arm/allwinner/clk/aw_cpuclk.c @@ -0,0 +1,161 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner CPU clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_mux.h> + +#define CPU_CLK_SRC_SEL_WIDTH 2 +#define CPU_CLK_SRC_SEL_SHIFT 16 + +static int +aw_cpuclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "allwinner,sun4i-a10-cpu-clk")) + return (ENXIO); + + device_set_desc(dev, "Allwinner CPU Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_cpuclk_attach(device_t dev) +{ + struct clk_mux_def def; + struct clkdom *clkdom; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + clk_t clk; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + def.clkdef.id = 1; + def.clkdef.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, + M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.clkdef.parent_names[i] = clk_get_name(clk); + clk_release(clk); + } + def.clkdef.parent_cnt = ncells; + def.offset = paddr; + def.shift = CPU_CLK_SRC_SEL_SHIFT; + def.width = CPU_CLK_SRC_SEL_WIDTH; + + error = clk_parse_ofw_clk_name(dev, node, &def.clkdef.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + + error = clknode_mux_register(clkdom, &def); + if (error != 0) { + device_printf(dev, "cannot register mux clock\n"); + error = ENXIO; + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + free(__DECONST(char *, def.clkdef.parent_names), M_OFWPROP); + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + return (error); +} + +static device_method_t aw_cpuclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_cpuclk_probe), + DEVMETHOD(device_attach, aw_cpuclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_cpuclk_driver = { + "aw_cpuclk", + aw_cpuclk_methods, + 0 +}; + +static devclass_t aw_cpuclk_devclass; + +EARLY_DRIVER_MODULE(aw_cpuclk, simplebus, aw_cpuclk_driver, + aw_cpuclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_debeclk.c b/sys/arm/allwinner/clk/aw_debeclk.c new file mode 100644 index 0000000..885fad8 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_debeclk.c @@ -0,0 +1,351 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner display backend clocks + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> + +#include "clkdev_if.h" +#include "hwreset_if.h" + +#define SCLK_GATING (1 << 31) +#define BE_RST (1 << 30) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 2 +#define CLK_SRC_SEL_PLL3 0 +#define CLK_SRC_SEL_PLL7 1 +#define CLK_SRC_SEL_PLL5 2 +#define CLK_RATIO_M (0xf << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0xf + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-de-be-clk", 1 }, + { NULL, 0 } +}; + +struct aw_debeclk_softc { + device_t clkdev; + bus_addr_t reg; +}; + +#define DEBECLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define DEBECLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEBECLK_MODIFY(sc, clr, set) \ + CLKDEV_MODIFY_4((sc)->clkdev, (sc)->reg, (clr), (set)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_debeclk_hwreset_assert(device_t dev, intptr_t id, bool value) +{ + struct aw_debeclk_softc *sc; + int error; + + sc = device_get_softc(dev); + + DEVICE_LOCK(sc); + error = DEBECLK_MODIFY(sc, BE_RST, value ? 0 : BE_RST); + DEVICE_UNLOCK(sc); + + return (error); +} + +static int +aw_debeclk_hwreset_is_asserted(device_t dev, intptr_t id, bool *value) +{ + struct aw_debeclk_softc *sc; + uint32_t val; + int error; + + sc = device_get_softc(dev); + + DEVICE_LOCK(sc); + error = DEBECLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + if (error) + return (error); + + *value = (val & BE_RST) != 0 ? false : true; + + return (0); +} + +static int +aw_debeclk_init(struct clknode *clk, device_t dev) +{ + struct aw_debeclk_softc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + /* Set BE source to PLL5 (DDR external peripheral clock) */ + index = CLK_SRC_SEL_PLL5; + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_debeclk_set_mux(struct clknode *clk, int index) +{ + struct aw_debeclk_softc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_debeclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_debeclk_softc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_debeclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_debeclk_softc *sc; + uint32_t val, m; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / m; + + return (0); +} + +static int +aw_debeclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_debeclk_softc *sc; + uint32_t val, m; + + sc = clknode_get_softc(clk); + + m = howmany(fin, *fout) - 1; + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + val &= ~CLK_RATIO_M; + val |= (m << CLK_RATIO_M_SHIFT); + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_debeclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_debeclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_debeclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_debeclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_debeclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_debeclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_debeclk_clknode, aw_debeclk_clknode_class, + aw_debeclk_clknode_methods, sizeof(struct aw_debeclk_softc), clknode_class); + +static int +aw_debeclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Display Engine Backend Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_debeclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_debeclk_softc *sc, *clk_sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + sc = device_get_softc(dev); + sc->clkdev = device_get_parent(dev); + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &sc->reg, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_debeclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + clk_sc = clknode_get_softc(clk); + clk_sc->reg = sc->reg; + clk_sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + hwreset_register_ofw_provider(dev); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_debeclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_debeclk_probe), + DEVMETHOD(device_attach, aw_debeclk_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_debeclk_hwreset_assert), + DEVMETHOD(hwreset_is_asserted, aw_debeclk_hwreset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_debeclk_driver = { + "aw_debeclk", + aw_debeclk_methods, + sizeof(struct aw_debeclk_softc) +}; + +static devclass_t aw_debeclk_devclass; + +EARLY_DRIVER_MODULE(aw_debeclk, simplebus, aw_debeclk_driver, + aw_debeclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_gate.c b/sys/arm/allwinner/clk/aw_gate.c new file mode 100644 index 0000000..d43d021 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_gate.c @@ -0,0 +1,198 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner clock gates + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_gate.h> + +#define GATE_OFFSET(index) ((index / 32) * 4) +#define GATE_SHIFT(index) (index % 32) + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-dram-gates-clk", + (uintptr_t)"Allwinner DRAM Clock Gates" }, + { "allwinner,sun4i-a10-ahb-gates-clk", + (uintptr_t)"Allwinner AHB Clock Gates" }, + { "allwinner,sun4i-a10-apb0-gates-clk", + (uintptr_t)"Allwinner APB0 Clock Gates" }, + { "allwinner,sun4i-a10-apb1-gates-clk", + (uintptr_t)"Allwinner APB1 Clock Gates" }, + + { "allwinner,sun7i-a20-ahb-gates-clk", + (uintptr_t)"Allwinner AHB Clock Gates" }, + { "allwinner,sun7i-a20-apb0-gates-clk", + (uintptr_t)"Allwinner APB0 Clock Gates" }, + { "allwinner,sun7i-a20-apb1-gates-clk", + (uintptr_t)"Allwinner APB1 Clock Gates" }, + + { "allwinner,sun6i-a31-ahb1-gates-clk", + (uintptr_t)"Allwinner AHB1 Clock Gates" }, + { "allwinner,sun6i-a31-apb0-gates-clk", + (uintptr_t)"Allwinner APB0 Clock Gates" }, + { "allwinner,sun6i-a31-apb1-gates-clk", + (uintptr_t)"Allwinner APB1 Clock Gates" }, + { "allwinner,sun6i-a31-apb2-gates-clk", + (uintptr_t)"Allwinner APB2 Clock Gates" }, + + { NULL, 0 } +}; + +static int +aw_gate_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + const char *parent_names[1] = { pclkname }; + struct clk_gate_def def; + + memset(&def, 0, sizeof(def)); + def.clkdef.id = index; + def.clkdef.name = clkname; + def.clkdef.parent_names = parent_names; + def.clkdef.parent_cnt = 1; + def.offset = paddr + GATE_OFFSET(index); + def.shift = GATE_SHIFT(index); + def.mask = 1; + def.on_value = 1; + def.off_value = 0; + + return (clknode_gate_register(clkdom, &def)); +} + +static int +aw_gate_probe(device_t dev) +{ + const char *d; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + d = (const char *)ofw_bus_search_compatible(dev, compat_data)->ocd_data; + if (d == NULL) + return (ENXIO); + + device_set_desc(dev, d); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_gate_attach(device_t dev) +{ + struct clkdom *clkdom; + const char **names; + int index, nout, error; + uint32_t *indices; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + + node = ofw_bus_get_node(dev); + indices = NULL; + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + error = ENOENT; + goto fail; + } + if (indices == NULL) { + device_printf(dev, "no clock-indices property\n"); + error = ENXIO; + goto fail; + } + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + for (index = 0; index < nout; index++) { + error = aw_gate_create(dev, paddr, clkdom, + clk_get_name(clk_parent), names[index], indices[index]); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_gate_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_gate_probe), + DEVMETHOD(device_attach, aw_gate_attach), + + DEVMETHOD_END +}; + +static driver_t aw_gate_driver = { + "aw_gate", + aw_gate_methods, + 0 +}; + +static devclass_t aw_gate_devclass; + +EARLY_DRIVER_MODULE(aw_gate, simplebus, aw_gate_driver, + aw_gate_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_gmacclk.c b/sys/arm/allwinner/clk/aw_gmacclk.c new file mode 100644 index 0000000..5e2f618 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_gmacclk.c @@ -0,0 +1,259 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner GMAC clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_mux.h> +#include <dev/extres/clk/clk_gate.h> + +#include "clkdev_if.h" + +#define GMAC_CLK_PIT (0x1 << 2) +#define GMAC_CLK_PIT_SHIFT 2 +#define GMAC_CLK_PIT_MII 0 +#define GMAC_CLK_PIT_RGMII 1 +#define GMAC_CLK_SRC (0x3 << 0) +#define GMAC_CLK_SRC_SHIFT 0 +#define GMAC_CLK_SRC_MII 0 +#define GMAC_CLK_SRC_EXT_RGMII 1 +#define GMAC_CLK_SRC_RGMII 2 + +#define CLK_IDX_MII 0 +#define CLK_IDX_RGMII 1 +#define CLK_IDX_COUNT 2 + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun7i-a20-gmac-clk", 1 }, + { NULL, 0 } +}; + +struct aw_gmacclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define GMACCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define GMACCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_gmacclk_init(struct clknode *clk, device_t dev) +{ + struct aw_gmacclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + GMACCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + switch ((val & GMAC_CLK_SRC) >> GMAC_CLK_SRC_SHIFT) { + case GMAC_CLK_SRC_MII: + index = CLK_IDX_MII; + break; + case GMAC_CLK_SRC_RGMII: + index = CLK_IDX_RGMII; + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_gmacclk_set_mux(struct clknode *clk, int index) +{ + struct aw_gmacclk_sc *sc; + uint32_t val, clk_src, pit; + int error; + + sc = clknode_get_softc(clk); + error = 0; + + switch (index) { + case CLK_IDX_MII: + clk_src = GMAC_CLK_SRC_MII; + pit = GMAC_CLK_PIT_MII; + break; + case CLK_IDX_RGMII: + clk_src = GMAC_CLK_SRC_RGMII; + pit = GMAC_CLK_PIT_RGMII; + break; + default: + return (ENXIO); + } + + DEVICE_LOCK(sc); + GMACCLK_READ(sc, &val); + val &= ~(GMAC_CLK_SRC | GMAC_CLK_PIT); + val |= (clk_src << GMAC_CLK_SRC_SHIFT); + val |= (pit << GMAC_CLK_PIT_SHIFT); + GMACCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static clknode_method_t aw_gmacclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_gmacclk_init), + CLKNODEMETHOD(clknode_set_mux, aw_gmacclk_set_mux), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_gmacclk_clknode, aw_gmacclk_clknode_class, + aw_gmacclk_clknode_methods, sizeof(struct aw_gmacclk_sc), clknode_class); + +static int +aw_gmacclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Module Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_gmacclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_gmacclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0 || ncells != CLK_IDX_COUNT) { + device_printf(dev, "couldn't find parent clocks\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", error); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_gmacclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_gmacclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_gmacclk_probe), + DEVMETHOD(device_attach, aw_gmacclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_gmacclk_driver = { + "aw_gmacclk", + aw_gmacclk_methods, + 0 +}; + +static devclass_t aw_gmacclk_devclass; + +EARLY_DRIVER_MODULE(aw_gmacclk, simplebus, aw_gmacclk_driver, + aw_gmacclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_hdmiclk.c b/sys/arm/allwinner/clk/aw_hdmiclk.c new file mode 100644 index 0000000..635418c --- /dev/null +++ b/sys/arm/allwinner/clk/aw_hdmiclk.c @@ -0,0 +1,315 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner HDMI clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_mux.h> +#include <dev/extres/clk/clk_gate.h> + +#include "clkdev_if.h" + +#define SCLK_GATING (1 << 31) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 0x3 +#define CLK_RATIO_N (0x3 << 16) +#define CLK_RATIO_N_SHIFT 16 +#define CLK_RATIO_N_MAX 0x3 +#define CLK_RATIO_M (0x1f << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0x1f + +#define CLK_IDX_PLL3_1X 0 + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-hdmi-clk", 1 }, + { NULL, 0 } +}; + +struct aw_hdmiclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define HDMICLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define HDMICLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_hdmiclk_init(struct clknode *clk, device_t dev) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + /* Select PLL3(1X) clock source */ + index = CLK_IDX_PLL3_1X; + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_hdmiclk_set_mux(struct clknode *clk, int index) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_hdmiclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_hdmiclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + n = 1 << ((val & CLK_RATIO_N) >> CLK_RATIO_N_SHIFT); + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / n / m; + + return (0); +} + +static int +aw_hdmiclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val, m, n, best_m, best_n; + uint64_t cur_freq; + int64_t best_diff, cur_diff; + + sc = clknode_get_softc(clk); + best_n = best_m = 0; + best_diff = (int64_t)*fout; + + for (n = 0; n <= CLK_RATIO_N_MAX; n++) + for (m = 0; m <= CLK_RATIO_M_MAX; m++) { + cur_freq = fin / (1 << n) / (m + 1); + cur_diff = (int64_t)*fout - cur_freq; + if (cur_diff >= 0 && cur_diff < best_diff) { + best_diff = cur_diff; + best_m = m; + best_n = n; + } + } + + if (best_diff == (int64_t)*fout) + return (ERANGE); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + val &= ~(CLK_RATIO_N | CLK_RATIO_M); + val |= (best_n << CLK_RATIO_N_SHIFT); + val |= (best_m << CLK_RATIO_M_SHIFT); + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (1 << best_n) / (best_m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_hdmiclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_hdmiclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_hdmiclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_hdmiclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_hdmiclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_hdmiclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_hdmiclk_clknode, aw_hdmiclk_clknode_class, + aw_hdmiclk_clknode_methods, sizeof(struct aw_hdmiclk_sc), clknode_class); + +static int +aw_hdmiclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner HDMI Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_hdmiclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_hdmiclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *), M_OFWPROP, M_WAITOK); + def.parent_names[0] = clk_get_name(clk_parent); + def.parent_cnt = 1; + + clk = clknode_create(clkdom, &aw_hdmiclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_hdmiclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_hdmiclk_probe), + DEVMETHOD(device_attach, aw_hdmiclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_hdmiclk_driver = { + "aw_hdmiclk", + aw_hdmiclk_methods, + 0 +}; + +static devclass_t aw_hdmiclk_devclass; + +EARLY_DRIVER_MODULE(aw_hdmiclk, simplebus, aw_hdmiclk_driver, + aw_hdmiclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_lcdclk.c b/sys/arm/allwinner/clk/aw_lcdclk.c new file mode 100644 index 0000000..bebee01 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_lcdclk.c @@ -0,0 +1,560 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner LCD clocks + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> + +#include "clkdev_if.h" +#include "hwreset_if.h" + +/* CH0 */ +#define CH0_SCLK_GATING (1 << 31) +#define CH0_LCD_RST (1 << 30) +#define CH0_CLK_SRC_SEL (0x3 << 24) +#define CH0_CLK_SRC_SEL_SHIFT 24 +#define CH0_CLK_SRC_SEL_PLL3_1X 0 +#define CH0_CLK_SRC_SEL_PLL7_1X 1 +#define CH0_CLK_SRC_SEL_PLL3_2X 2 +#define CH0_CLK_SRC_SEL_PLL6 3 + +/* CH1 */ +#define CH1_SCLK2_GATING (1 << 31) +#define CH1_SCLK2_SEL (0x3 << 24) +#define CH1_SCLK2_SEL_SHIFT 24 +#define CH1_SCLK2_SEL_PLL3_1X 0 +#define CH1_SCLK2_SEL_PLL7_1X 1 +#define CH1_SCLK2_SEL_PLL3_2X 2 +#define CH1_SCLK2_SEL_PLL7_2X 3 +#define CH1_SCLK1_GATING (1 << 15) +#define CH1_SCLK1_SEL (0x1 << 11) +#define CH1_SCLK1_SEL_SHIFT 11 +#define CH1_SCLK1_SEL_SCLK2 0 +#define CH1_SCLK1_SEL_SCLK2_DIV2 1 +#define CH1_CLK_DIV_RATIO_M (0x1f << 0) +#define CH1_CLK_DIV_RATIO_M_SHIFT 0 + +#define TCON_PLLREF 3000000ULL +#define TCON_PLL_M_MIN 1 +#define TCON_PLL_M_MAX 15 +#define TCON_PLL_N_MIN 9 +#define TCON_PLL_N_MAX 127 + +#define CLK_IDX_CH1_SCLK1 0 +#define CLK_IDX_CH1_SCLK2 1 + +#define CLK_IDX_ + +enum aw_lcdclk_type { + AW_LCD_CH0 = 1, + AW_LCD_CH1, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-lcd-ch0-clk", AW_LCD_CH0 }, + { "allwinner,sun4i-a10-lcd-ch1-clk", AW_LCD_CH1 }, + { NULL, 0 } +}; + +struct aw_lcdclk_softc { + enum aw_lcdclk_type type; + device_t clkdev; + bus_addr_t reg; + int id; +}; + +#define LCDCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define LCDCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define LCDCLK_MODIFY(sc, clr, set) \ + CLKDEV_MODIFY_4((sc)->clkdev, (sc)->reg, (clr), (set)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_lcdclk_hwreset_assert(device_t dev, intptr_t id, bool value) +{ + struct aw_lcdclk_softc *sc; + int error; + + sc = device_get_softc(dev); + + if (sc->type != AW_LCD_CH0) + return (ENXIO); + + DEVICE_LOCK(sc); + error = LCDCLK_MODIFY(sc, CH0_LCD_RST, value ? 0 : CH0_LCD_RST); + DEVICE_UNLOCK(sc); + + return (error); +} + +static int +aw_lcdclk_hwreset_is_asserted(device_t dev, intptr_t id, bool *value) +{ + struct aw_lcdclk_softc *sc; + uint32_t val; + int error; + + sc = device_get_softc(dev); + + if (sc->type != AW_LCD_CH0) + return (ENXIO); + + DEVICE_LOCK(sc); + error = LCDCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + if (error) + return (error); + + *value = (val & CH0_LCD_RST) != 0 ? false : true; + + return (0); +} + +static int +aw_lcdclk_init(struct clknode *clk, device_t dev) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + switch (sc->type) { + case AW_LCD_CH0: + index = (val & CH0_CLK_SRC_SEL) >> CH0_CLK_SRC_SEL_SHIFT; + break; + case AW_LCD_CH1: + switch (sc->id) { + case CLK_IDX_CH1_SCLK1: + index = 0; + break; + case CLK_IDX_CH1_SCLK2: + index = (val & CH1_SCLK2_SEL_SHIFT) >> + CH1_SCLK2_SEL_SHIFT; + break; + default: + return (ENXIO); + } + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_lcdclk_set_mux(struct clknode *clk, int index) +{ + struct aw_lcdclk_softc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_LCD_CH0: + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + val &= ~CH0_CLK_SRC_SEL; + val |= (index << CH0_CLK_SRC_SEL_SHIFT); + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + break; + case AW_LCD_CH1: + switch (sc->id) { + case CLK_IDX_CH1_SCLK2: + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + val &= ~CH1_SCLK2_SEL; + val |= (index << CH1_SCLK2_SEL_SHIFT); + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + break; + default: + return (ENXIO); + } + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +aw_lcdclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, mask; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_LCD_CH0: + mask = CH0_SCLK_GATING; + break; + case AW_LCD_CH1: + mask = (sc->id == CLK_IDX_CH1_SCLK1) ? CH1_SCLK1_GATING : + CH1_SCLK2_GATING; + break; + default: + return (ENXIO); + } + + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + if (enable) + val |= mask; + else + val &= ~mask; + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_lcdclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, m; + + sc = clknode_get_softc(clk); + + if (sc->type != AW_LCD_CH1) + return (0); + + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & CH1_CLK_DIV_RATIO_M) >> CH1_CLK_DIV_RATIO_M_SHIFT) + 1; + *freq = *freq / m; + + if (sc->id == CLK_IDX_CH1_SCLK1) { + if ((val & CH1_SCLK1_SEL) == CH1_SCLK1_SEL_SCLK2_DIV2) + *freq /= 2; + } + + return (0); +} + +static void +calc_tcon_pll(uint64_t fin, uint64_t fout, uint32_t *pm, uint32_t *pn) +{ + int64_t diff, fcur, best; + int m, n; + + best = fout; + for (m = TCON_PLL_M_MIN; m <= TCON_PLL_M_MAX; m++) { + for (n = TCON_PLL_N_MIN; n <= TCON_PLL_N_MAX; n++) { + fcur = (n * fin) / m; + diff = (int64_t)fout - fcur; + if (diff > 0 && diff < best) { + best = diff; + *pm = m; + *pn = n; + } + } + } +} + +static int +aw_lcdclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, m, m2, n, n2, src_sel; + uint64_t fsingle, fdouble; + int error; + bool dbl; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_LCD_CH0: + *stop = 0; + break; + case AW_LCD_CH1: + if (sc->id != CLK_IDX_CH1_SCLK2) + return (ENXIO); + + m = n = m2 = n2 = 0; + dbl = false; + + /* Find the frequency closes to the target dot clock, using + * both 1X and 2X PLL inputs as possible candidates. + */ + calc_tcon_pll(TCON_PLLREF, *fout, &m, &n); + calc_tcon_pll(TCON_PLLREF * 2, *fout, &m2, &n2); + + fsingle = m ? (n * TCON_PLLREF) / m : 0; + fdouble = m2 ? (n2 * TCON_PLLREF * 2) / m2 : 0; + + if (fdouble > fsingle) { + dbl = true; + m = m2; + n = n2; + } + + src_sel = dbl ? CH0_CLK_SRC_SEL_PLL3_2X : + CH0_CLK_SRC_SEL_PLL3_1X; + + /* Switch parent clock if necessary */ + if (src_sel != clknode_get_parent_idx(clk)) { + error = clknode_set_parent_by_idx(clk, src_sel); + if (error != 0) + return (error); + } + + /* Set desired parent frequency */ + fin = n * TCON_PLLREF; + + error = clknode_set_freq(clknode_get_parent(clk), fin, 0, 0); + if (error != 0) + return (error); + + error = clknode_enable(clknode_get_parent(clk)); + if (error != 0) + return (error); + + /* Fetch new input frequency */ + error = clknode_get_freq(clknode_get_parent(clk), &fin); + if (error != 0) + return (error); + + /* Set LCD divisor */ + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + val &= ~CH1_CLK_DIV_RATIO_M; + val |= ((m - 1) << CH1_CLK_DIV_RATIO_M_SHIFT); + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / m; + *stop = 1; + + break; + } + + return (0); +} + +static clknode_method_t aw_lcdclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_lcdclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_lcdclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_lcdclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_lcdclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_lcdclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_lcdclk_clknode, aw_lcdclk_clknode_class, + aw_lcdclk_clknode_methods, sizeof(struct aw_lcdclk_softc), clknode_class); + +static int +aw_lcdclk_create(device_t dev, struct clkdom *clkdom, + const char **parent_names, int parent_cnt, const char *name, int index) +{ + struct aw_lcdclk_softc *sc, *clk_sc; + struct clknode_init_def def; + struct clknode *clk; + phandle_t node; + + sc = device_get_softc(dev); + node = ofw_bus_get_node(dev); + + memset(&def, 0, sizeof(def)); + def.id = index; + def.name = name; + def.parent_names = parent_names; + def.parent_cnt = parent_cnt; + + clk = clknode_create(clkdom, &aw_lcdclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + return (ENXIO); + } + + clk_sc = clknode_get_softc(clk); + clk_sc->type = sc->type; + clk_sc->reg = sc->reg; + clk_sc->clkdev = sc->clkdev; + clk_sc->id = index; + + clknode_register(clkdom, clk); + + return (0); +} + +static int +aw_lcdclk_probe(device_t dev) +{ + enum aw_lcdclk_type type; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + switch (type) { + case AW_LCD_CH0: + device_set_desc(dev, "Allwinner LCD CH0 Clock"); + break; + case AW_LCD_CH1: + device_set_desc(dev, "Allwinner LCD CH1 Clock"); + break; + default: + return (ENXIO); + } + + return (BUS_PROBE_DEFAULT); +} + +static int +aw_lcdclk_attach(device_t dev) +{ + struct aw_lcdclk_softc *sc; + struct clkdom *clkdom; + clk_t clk_parent; + bus_size_t psize; + phandle_t node; + uint32_t *indices; + const char **parent_names; + const char **names; + int error, ncells, nout, i; + + sc = device_get_softc(dev); + sc->clkdev = device_get_parent(dev); + sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &sc->reg, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + for (i = 0; i < nout; i++) { + error = aw_lcdclk_create(dev, clkdom, parent_names, ncells, + names[i], nout == 1 ? 1 : i); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + if (sc->type == AW_LCD_CH0) + hwreset_register_ofw_provider(dev); + + free(parent_names, M_OFWPROP); + return (0); + +fail: + free(parent_names, M_OFWPROP); + return (error); +} + +static device_method_t aw_lcdclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_lcdclk_probe), + DEVMETHOD(device_attach, aw_lcdclk_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_lcdclk_hwreset_assert), + DEVMETHOD(hwreset_is_asserted, aw_lcdclk_hwreset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_lcdclk_driver = { + "aw_lcdclk", + aw_lcdclk_methods, + sizeof(struct aw_lcdclk_softc) +}; + +static devclass_t aw_lcdclk_devclass; + +EARLY_DRIVER_MODULE(aw_lcdclk, simplebus, aw_lcdclk_driver, + aw_lcdclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_mmcclk.c b/sys/arm/allwinner/clk/aw_mmcclk.c new file mode 100644 index 0000000..653afd9 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_mmcclk.c @@ -0,0 +1,351 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner MMC clocks + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_mux.h> +#include <dev/extres/clk/clk_gate.h> + +#include "clkdev_if.h" + +#define SCLK_GATING (1 << 31) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 0x3 +#define CLK_SRC_SEL_OSC24M 0 +#define CLK_SRC_SEL_PLL6 1 +#define CLK_PHASE_CTR (0x7 << 20) +#define CLK_PHASE_CTR_SHIFT 20 +#define CLK_RATIO_N (0x3 << 16) +#define CLK_RATIO_N_SHIFT 16 +#define CLK_RATIO_N_MAX 0x3 +#define OUTPUT_CLK_PHASE_CTR (0x7 << 8) +#define OUTPUT_CLK_PHASE_CTR_SHIFT 8 +#define CLK_RATIO_M (0xf << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0xf + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-mmc-clk", 1 }, + { NULL, 0 } +}; + +struct aw_mmcclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define MODCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define MODCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_mmcclk_init(struct clknode *clk, device_t dev) +{ + struct aw_mmcclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + index = (val & CLK_SRC_SEL) >> CLK_SRC_SEL_SHIFT; + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_mmcclk_set_mux(struct clknode *clk, int index) +{ + struct aw_mmcclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_mmcclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_mmcclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_mmcclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_mmcclk_sc *sc; + uint32_t val, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + n = 1 << ((val & CLK_RATIO_N) >> CLK_RATIO_N_SHIFT); + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / n / m; + + return (0); +} + +static int +aw_mmcclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_mmcclk_sc *sc; + uint32_t val, m, n, phase, ophase; + int parent_idx, error; + + sc = clknode_get_softc(clk); + + /* XXX + * The ophase/phase values should be set by the MMC driver, but + * there is currently no way to do this with the clk API + */ + if (*fout <= 400000) { + parent_idx = CLK_SRC_SEL_OSC24M; + ophase = 0; + phase = 0; + n = 2; + } else if (*fout <= 25000000) { + parent_idx = CLK_SRC_SEL_PLL6; + ophase = 0; + phase = 5; + n = 2; + } else if (*fout <= 50000000) { + parent_idx = CLK_SRC_SEL_PLL6; + ophase = 3; + phase = 5; + n = 0; + } else + return (ERANGE); + + /* Switch parent clock, if necessary */ + if (parent_idx != clknode_get_parent_idx(clk)) { + error = clknode_set_parent_by_idx(clk, parent_idx); + if (error != 0) + return (error); + + /* Fetch new input frequency */ + error = clknode_get_freq(clknode_get_parent(clk), &fin); + if (error != 0) + return (error); + } + + m = ((fin / (1 << n)) / *fout) - 1; + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~(CLK_RATIO_N | CLK_RATIO_M | CLK_PHASE_CTR | + OUTPUT_CLK_PHASE_CTR); + val |= (n << CLK_RATIO_N_SHIFT); + val |= (m << CLK_RATIO_M_SHIFT); + val |= (phase << CLK_PHASE_CTR_SHIFT); + val |= (ophase << OUTPUT_CLK_PHASE_CTR_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (1 << n) / (m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_mmcclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_mmcclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_mmcclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_mmcclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_mmcclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_mmcclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_mmcclk_clknode, aw_mmcclk_clknode_class, + aw_mmcclk_clknode_methods, sizeof(struct aw_mmcclk_sc), clknode_class); + +static int +aw_mmcclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner MMC Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_mmcclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_mmcclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + const char **names; + uint32_t *indices; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, nout, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0 || ncells == 0) { + device_printf(dev, "couldn't find parent clocks\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no output clocks found\n"); + error = ENXIO; + goto fail; + } + + memset(&def, 0, sizeof(def)); + def.name = names[0]; + def.id = 0; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + def.flags = CLK_NODE_GLITCH_FREE; + + clk = clknode_create(clkdom, &aw_mmcclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_mmcclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_mmcclk_probe), + DEVMETHOD(device_attach, aw_mmcclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_mmcclk_driver = { + "aw_mmcclk", + aw_mmcclk_methods, + 0 +}; + +static devclass_t aw_mmcclk_devclass; + +EARLY_DRIVER_MODULE(aw_mmcclk, simplebus, aw_mmcclk_driver, + aw_mmcclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_modclk.c b/sys/arm/allwinner/clk/aw_modclk.c new file mode 100644 index 0000000..f4755ea --- /dev/null +++ b/sys/arm/allwinner/clk/aw_modclk.c @@ -0,0 +1,318 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner module clocks + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_mux.h> +#include <dev/extres/clk/clk_gate.h> + +#include "clkdev_if.h" + +#define SCLK_GATING (1 << 31) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 0x3 +#define CLK_RATIO_N (0x3 << 16) +#define CLK_RATIO_N_SHIFT 16 +#define CLK_RATIO_N_MAX 0x3 +#define CLK_RATIO_M (0x1f << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0x1f + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-mod0-clk", 1 }, + { NULL, 0 } +}; + +struct aw_modclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define MODCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define MODCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_modclk_init(struct clknode *clk, device_t dev) +{ + struct aw_modclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + index = (val & CLK_SRC_SEL) >> CLK_SRC_SEL_SHIFT; + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_modclk_set_mux(struct clknode *clk, int index) +{ + struct aw_modclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_modclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_modclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_modclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_modclk_sc *sc; + uint32_t val, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + n = 1 << ((val & CLK_RATIO_N) >> CLK_RATIO_N_SHIFT); + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / n / m; + + return (0); +} + +static int +aw_modclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_modclk_sc *sc; + uint32_t val, m, n, best_m, best_n; + uint64_t cur_freq; + int64_t best_diff, cur_diff; + + sc = clknode_get_softc(clk); + best_n = best_m = 0; + best_diff = (int64_t)*fout; + + for (n = 0; n <= CLK_RATIO_N_MAX; n++) + for (m = 0; m <= CLK_RATIO_M_MAX; m++) { + cur_freq = fin / (1 << n) / (m + 1); + cur_diff = (int64_t)*fout - cur_freq; + if (cur_diff >= 0 && cur_diff < best_diff) { + best_diff = cur_diff; + best_m = m; + best_n = n; + } + } + + if (best_diff == (int64_t)*fout) + return (ERANGE); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~(CLK_RATIO_N | CLK_RATIO_M); + val |= (best_n << CLK_RATIO_N_SHIFT); + val |= (best_m << CLK_RATIO_M_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (1 << best_n) / (best_m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_modclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_modclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_modclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_modclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_modclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_modclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_modclk_clknode, aw_modclk_clknode_class, + aw_modclk_clknode_methods, sizeof(struct aw_modclk_sc), clknode_class); + +static int +aw_modclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Module Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_modclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_modclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_modclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_modclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_modclk_probe), + DEVMETHOD(device_attach, aw_modclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_modclk_driver = { + "aw_modclk", + aw_modclk_methods, + 0 +}; + +static devclass_t aw_modclk_devclass; + +EARLY_DRIVER_MODULE(aw_modclk, simplebus, aw_modclk_driver, + aw_modclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_oscclk.c b/sys/arm/allwinner/clk/aw_oscclk.c new file mode 100644 index 0000000..313111f --- /dev/null +++ b/sys/arm/allwinner/clk/aw_oscclk.c @@ -0,0 +1,132 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner oscillator clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <dev/extres/clk/clk_fixed.h> + +static int +aw_oscclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "allwinner,sun4i-a10-osc-clk")) + return (ENXIO); + + device_set_desc(dev, "Allwinner Oscillator Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_oscclk_attach(device_t dev) +{ + struct clk_fixed_def def; + struct clkdom *clkdom; + phandle_t node; + uint32_t freq; + int error; + + node = ofw_bus_get_node(dev); + + if (OF_getencprop(node, "clock-frequency", &freq, sizeof(freq)) <= 0) { + device_printf(dev, "missing clock-frequency property\n"); + error = ENXIO; + goto fail; + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + def.clkdef.id = 1; + def.freq = freq; + error = clk_parse_ofw_clk_name(dev, node, &def.clkdef.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + + error = clknode_fixed_register(clkdom, &def); + if (error != 0) { + device_printf(dev, "cannot register fixed clock\n"); + error = ENXIO; + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + + return (0); + +fail: + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + return (error); +} + +static device_method_t aw_oscclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_oscclk_probe), + DEVMETHOD(device_attach, aw_oscclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_oscclk_driver = { + "aw_oscclk", + aw_oscclk_methods, + 0, +}; + +static devclass_t aw_oscclk_devclass; + +EARLY_DRIVER_MODULE(aw_oscclk, simplebus, aw_oscclk_driver, + aw_oscclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_pll.c b/sys/arm/allwinner/clk/aw_pll.c new file mode 100644 index 0000000..2e67646 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_pll.c @@ -0,0 +1,757 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner PLL clock + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk.h> + +#include <dt-bindings/clock/sun4i-a10-pll2.h> + +#include "clkdev_if.h" + +#define AW_PLL_ENABLE (1 << 31) + +#define A10_PLL1_OUT_EXT_DIVP (0x3 << 16) +#define A10_PLL1_OUT_EXT_DIVP_SHIFT 16 +#define A10_PLL1_FACTOR_N (0x1f << 8) +#define A10_PLL1_FACTOR_N_SHIFT 8 +#define A10_PLL1_FACTOR_K (0x3 << 4) +#define A10_PLL1_FACTOR_K_SHIFT 4 +#define A10_PLL1_FACTOR_M (0x3 << 0) +#define A10_PLL1_FACTOR_M_SHIFT 0 + +#define A10_PLL2_POST_DIV (0xf << 26) +#define A10_PLL2_POST_DIV_SHIFT 26 +#define A10_PLL2_FACTOR_N (0x7f << 8) +#define A10_PLL2_FACTOR_N_SHIFT 8 +#define A10_PLL2_PRE_DIV (0x1f << 0) +#define A10_PLL2_PRE_DIV_SHIFT 0 + +#define A10_PLL3_MODE_SEL (0x1 << 15) +#define A10_PLL3_MODE_SEL_FRACT (0 << 15) +#define A10_PLL3_MODE_SEL_INT (1 << 15) +#define A10_PLL3_FUNC_SET (0x1 << 14) +#define A10_PLL3_FUNC_SET_270MHZ (0 << 14) +#define A10_PLL3_FUNC_SET_297MHZ (1 << 14) +#define A10_PLL3_FACTOR_M (0x7f << 0) +#define A10_PLL3_FACTOR_M_SHIFT 0 +#define A10_PLL3_REF_FREQ 3000000 + +#define A10_PLL5_OUT_EXT_DIVP (0x3 << 16) +#define A10_PLL5_OUT_EXT_DIVP_SHIFT 16 +#define A10_PLL5_FACTOR_N (0x1f << 8) +#define A10_PLL5_FACTOR_N_SHIFT 8 +#define A10_PLL5_FACTOR_K (0x3 << 4) +#define A10_PLL5_FACTOR_K_SHIFT 4 +#define A10_PLL5_FACTOR_M1 (0x3 << 2) +#define A10_PLL5_FACTOR_M1_SHIFT 2 +#define A10_PLL5_FACTOR_M (0x3 << 0) +#define A10_PLL5_FACTOR_M_SHIFT 0 + +#define A10_PLL6_BYPASS_EN (1 << 30) +#define A10_PLL6_SATA_CLK_EN (1 << 14) +#define A10_PLL6_FACTOR_N (0x1f << 8) +#define A10_PLL6_FACTOR_N_SHIFT 8 +#define A10_PLL6_FACTOR_K (0x3 << 4) +#define A10_PLL6_FACTOR_K_SHIFT 4 +#define A10_PLL6_FACTOR_M (0x3 << 0) +#define A10_PLL6_FACTOR_M_SHIFT 0 + +#define A10_PLL2_POST_DIV (0xf << 26) + +#define A31_PLL1_LOCK (1 << 28) +#define A31_PLL1_CPU_SIGMA_DELTA_EN (1 << 24) +#define A31_PLL1_FACTOR_N (0x1f << 8) +#define A31_PLL1_FACTOR_N_SHIFT 8 +#define A31_PLL1_FACTOR_K (0x3 << 4) +#define A31_PLL1_FACTOR_K_SHIFT 4 +#define A31_PLL1_FACTOR_M (0x3 << 0) +#define A31_PLL1_FACTOR_M_SHIFT 0 + +#define A31_PLL6_LOCK (1 << 28) +#define A31_PLL6_BYPASS_EN (1 << 25) +#define A31_PLL6_CLK_OUT_EN (1 << 24) +#define A31_PLL6_24M_OUT_EN (1 << 18) +#define A31_PLL6_24M_POST_DIV (0x3 << 16) +#define A31_PLL6_24M_POST_DIV_SHIFT 16 +#define A31_PLL6_FACTOR_N (0x1f << 8) +#define A31_PLL6_FACTOR_N_SHIFT 8 +#define A31_PLL6_FACTOR_K (0x3 << 4) +#define A31_PLL6_FACTOR_K_SHIFT 4 +#define A31_PLL6_DEFAULT_N 0x18 +#define A31_PLL6_DEFAULT_K 0x1 +#define A31_PLL6_TIMEOUT 10 + +#define CLKID_A10_PLL3_1X 0 +#define CLKID_A10_PLL3_2X 1 + +#define CLKID_A10_PLL5_DDR 0 +#define CLKID_A10_PLL5_OTHER 1 + +#define CLKID_A10_PLL6_SATA 0 +#define CLKID_A10_PLL6_OTHER 1 +#define CLKID_A10_PLL6 2 +#define CLKID_A10_PLL6_DIV_4 3 + +#define CLKID_A31_PLL6 0 +#define CLKID_A31_PLL6_X2 1 + +enum aw_pll_type { + AWPLL_A10_PLL1 = 1, + AWPLL_A10_PLL2, + AWPLL_A10_PLL3, + AWPLL_A10_PLL5, + AWPLL_A10_PLL6, + AWPLL_A31_PLL1, + AWPLL_A31_PLL6, +}; + +struct aw_pll_sc { + enum aw_pll_type type; + device_t clkdev; + bus_addr_t reg; + int id; +}; + +struct aw_pll_funcs { + int (*recalc)(struct aw_pll_sc *, uint64_t *); + int (*set_freq)(struct aw_pll_sc *, uint64_t, uint64_t *, int); + int (*init)(device_t, bus_addr_t, struct clknode_init_def *); +}; + +#define PLL_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define PLL_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +a10_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, n, k, p; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + p = 1 << ((val & A10_PLL1_OUT_EXT_DIVP) >> A10_PLL1_OUT_EXT_DIVP_SHIFT); + m = ((val & A10_PLL1_FACTOR_M) >> A10_PLL1_FACTOR_M_SHIFT) + 1; + k = ((val & A10_PLL1_FACTOR_K) >> A10_PLL1_FACTOR_K_SHIFT) + 1; + n = (val & A10_PLL1_FACTOR_N) >> A10_PLL1_FACTOR_N_SHIFT; + if (n == 0) + n = 1; + + *freq = (*freq * n * k) / (m * p); + + return (0); +} + +static int +a10_pll2_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, post_div, n, pre_div; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + post_div = (val & A10_PLL2_POST_DIV) >> A10_PLL2_POST_DIV_SHIFT; + if (post_div == 0) + post_div = 1; + n = (val & A10_PLL2_FACTOR_N) >> A10_PLL2_FACTOR_N_SHIFT; + if (n == 0) + n = 1; + pre_div = (val & A10_PLL2_PRE_DIV) >> A10_PLL2_PRE_DIV_SHIFT; + if (pre_div == 0) + pre_div = 1; + + switch (sc->id) { + case SUN4I_A10_PLL2_1X: + *freq = (*freq * 2 * n) / pre_div / post_div / 2; + break; + case SUN4I_A10_PLL2_2X: + *freq = (*freq * 2 * n) / pre_div / 4; + break; + case SUN4I_A10_PLL2_4X: + *freq = (*freq * 2 * n) / pre_div / 2; + break; + case SUN4I_A10_PLL2_8X: + *freq = (*freq * 2 * n) / pre_div; + break; + default: + return (EINVAL); + } + + return (0); +} + +static int +a10_pll2_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout, + int flags) +{ + uint32_t val, post_div, n, pre_div; + + if (sc->id != SUN4I_A10_PLL2_1X) + return (ENXIO); + + /* + * Audio Codec needs PLL2-1X to be either 24576000 or 22579200. + * + * PLL2-1X output frequency is (48MHz * n) / pre_div / post_div / 2. + * To get as close as possible to the desired rate, we use a + * pre-divider of 21 and a post-divider of 4. With these values, + * a multiplier of 86 or 79 gets us close to the target rates. + */ + if (*fout != 24576000 && *fout != 22579200) + return (EINVAL); + + pre_div = 21; + post_div = 4; + n = (*fout * pre_div * post_div * 2) / (2 * fin); + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + val &= ~(A10_PLL2_POST_DIV | A10_PLL2_FACTOR_N | A10_PLL2_PRE_DIV); + val |= (post_div << A10_PLL2_POST_DIV_SHIFT); + val |= (n << A10_PLL2_FACTOR_N_SHIFT); + val |= (pre_div << A10_PLL2_PRE_DIV_SHIFT); + PLL_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +a10_pll3_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + if ((val & A10_PLL3_MODE_SEL) == A10_PLL3_MODE_SEL_INT) { + /* In integer mode, output is 3MHz * m */ + m = (val & A10_PLL3_FACTOR_M) >> A10_PLL3_FACTOR_M_SHIFT; + *freq = A10_PLL3_REF_FREQ * m; + } else { + /* In fractional mode, output is either 270MHz or 297MHz */ + if ((val & A10_PLL3_FUNC_SET) == A10_PLL3_FUNC_SET_270MHZ) + *freq = 270000000; + else + *freq = 297000000; + } + + if (sc->id == CLKID_A10_PLL3_2X) + *freq *= 2; + + return (0); +} + +static int +a10_pll3_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout, + int flags) +{ + uint32_t val, m, mode, func; + + m = *fout / A10_PLL3_REF_FREQ; + if (sc->id == CLKID_A10_PLL3_2X) + m /= 2; + + mode = A10_PLL3_MODE_SEL_INT; + func = 0; + *fout = m * A10_PLL3_REF_FREQ; + if (sc->id == CLKID_A10_PLL3_2X) + *fout *= 2; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + val &= ~(A10_PLL3_MODE_SEL | A10_PLL3_FUNC_SET | A10_PLL3_FACTOR_M); + val |= mode; + val |= func; + val |= (m << A10_PLL3_FACTOR_M_SHIFT); + PLL_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +a10_pll3_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def) +{ + uint32_t val; + + /* Allow changing PLL frequency while enabled */ + def->flags = CLK_NODE_GLITCH_FREE; + + /* Set PLL to 297MHz */ + CLKDEV_DEVICE_LOCK(dev); + CLKDEV_READ_4(dev, reg, &val); + val &= ~(A10_PLL3_MODE_SEL | A10_PLL3_FUNC_SET | A10_PLL3_FACTOR_M); + val |= A10_PLL3_MODE_SEL_FRACT; + val |= A10_PLL3_FUNC_SET_297MHZ; + CLKDEV_WRITE_4(dev, reg, val); + CLKDEV_DEVICE_UNLOCK(dev); + + return (0); +} + +static int +a10_pll5_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, n, k, p; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + p = 1 << ((val & A10_PLL5_OUT_EXT_DIVP) >> A10_PLL5_OUT_EXT_DIVP_SHIFT); + m = ((val & A10_PLL5_FACTOR_M) >> A10_PLL5_FACTOR_M_SHIFT) + 1; + k = ((val & A10_PLL5_FACTOR_K) >> A10_PLL5_FACTOR_K_SHIFT) + 1; + n = (val & A10_PLL5_FACTOR_N) >> A10_PLL5_FACTOR_N_SHIFT; + if (n == 0) + return (ENXIO); + + switch (sc->id) { + case CLKID_A10_PLL5_DDR: + *freq = (*freq * n * k) / m; + break; + case CLKID_A10_PLL5_OTHER: + *freq = (*freq * n * k) / p; + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +a10_pll6_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def) +{ + uint32_t val, m, n, k; + + /* + * SATA needs PLL6 to be a 100MHz clock. + * + * The SATA output frequency is (24MHz * n * k) / m / 6. + * To get to 100MHz, k & m must be equal and n must be 25. + */ + m = k = 0; + n = 25; + + CLKDEV_DEVICE_LOCK(dev); + CLKDEV_READ_4(dev, reg, &val); + val &= ~(A10_PLL6_FACTOR_N | A10_PLL6_FACTOR_K | A10_PLL6_FACTOR_M); + val &= ~A10_PLL6_BYPASS_EN; + val |= A10_PLL6_SATA_CLK_EN; + val |= (n << A10_PLL6_FACTOR_N_SHIFT); + val |= (k << A10_PLL6_FACTOR_K_SHIFT); + val |= (m << A10_PLL6_FACTOR_M_SHIFT); + CLKDEV_WRITE_4(dev, reg, val); + CLKDEV_DEVICE_UNLOCK(dev); + + return (0); +} + +static int +a10_pll6_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, k, n; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & A10_PLL6_FACTOR_M) >> A10_PLL6_FACTOR_M_SHIFT) + 1; + k = ((val & A10_PLL6_FACTOR_K) >> A10_PLL6_FACTOR_K_SHIFT) + 1; + n = (val & A10_PLL6_FACTOR_N) >> A10_PLL6_FACTOR_N_SHIFT; + if (n == 0) + return (ENXIO); + + switch (sc->id) { + case CLKID_A10_PLL6_SATA: + *freq = (*freq * n * k) / m / 6; + break; + case CLKID_A10_PLL6_OTHER: + *freq = (*freq * n * k) / 2; + break; + case CLKID_A10_PLL6: + *freq = (*freq * n * k); + break; + case CLKID_A10_PLL6_DIV_4: + *freq = (*freq * n * k) / 4; + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +a10_pll6_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout, + int flags) +{ + if (sc->id != CLKID_A10_PLL6_SATA) + return (ENXIO); + + /* PLL6 SATA output has been set to 100MHz in a10_pll6_init */ + if (*fout != 100000000) + return (ERANGE); + + return (0); +} + +static int +a31_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, n, k; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & A31_PLL1_FACTOR_M) >> A31_PLL1_FACTOR_M_SHIFT) + 1; + k = ((val & A31_PLL1_FACTOR_K) >> A31_PLL1_FACTOR_K_SHIFT) + 1; + n = ((val & A31_PLL1_FACTOR_N) >> A31_PLL1_FACTOR_N_SHIFT) + 1; + + *freq = (*freq * n * k) / m; + + return (0); +} + +static int +a31_pll6_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def) +{ + uint32_t val; + int retry; + + if (def->id != CLKID_A31_PLL6) + return (0); + + /* + * The datasheet recommends that PLL6 output should be fixed to + * 600MHz. + */ + CLKDEV_DEVICE_LOCK(dev); + CLKDEV_READ_4(dev, reg, &val); + val &= ~(A31_PLL6_FACTOR_N | A31_PLL6_FACTOR_K | A31_PLL6_BYPASS_EN); + val |= (A31_PLL6_DEFAULT_N << A31_PLL6_FACTOR_N_SHIFT); + val |= (A31_PLL6_DEFAULT_K << A31_PLL6_FACTOR_K_SHIFT); + CLKDEV_WRITE_4(dev, reg, val); + + /* Wait for PLL to become stable */ + for (retry = A31_PLL6_TIMEOUT; retry > 0; retry--) { + CLKDEV_READ_4(dev, reg, &val); + if ((val & A31_PLL6_LOCK) == A31_PLL6_LOCK) + break; + DELAY(1); + } + + CLKDEV_DEVICE_UNLOCK(dev); + + if (retry == 0) + return (ETIMEDOUT); + + return (0); +} + +static int +a31_pll6_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, k, n; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + k = ((val & A10_PLL6_FACTOR_K) >> A10_PLL6_FACTOR_K_SHIFT) + 1; + n = ((val & A10_PLL6_FACTOR_N) >> A10_PLL6_FACTOR_N_SHIFT) + 1; + + switch (sc->id) { + case CLKID_A31_PLL6: + *freq = (*freq * n * k) / 2; + break; + case CLKID_A31_PLL6_X2: + *freq = *freq * n * k; + break; + default: + return (ENXIO); + } + + return (0); +} + +#define PLL(_type, _recalc, _set_freq, _init) \ + [(_type)] = { \ + .recalc = (_recalc), \ + .set_freq = (_set_freq), \ + .init = (_init) \ + } + +static struct aw_pll_funcs aw_pll_func[] = { + PLL(AWPLL_A10_PLL1, a10_pll1_recalc, NULL, NULL), + PLL(AWPLL_A10_PLL2, a10_pll2_recalc, a10_pll2_set_freq, NULL), + PLL(AWPLL_A10_PLL3, a10_pll3_recalc, a10_pll3_set_freq, a10_pll3_init), + PLL(AWPLL_A10_PLL5, a10_pll5_recalc, NULL, NULL), + PLL(AWPLL_A10_PLL6, a10_pll6_recalc, a10_pll6_set_freq, a10_pll6_init), + PLL(AWPLL_A31_PLL1, a31_pll1_recalc, NULL, NULL), + PLL(AWPLL_A31_PLL6, a31_pll6_recalc, NULL, a31_pll6_init), +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-pll1-clk", AWPLL_A10_PLL1 }, + { "allwinner,sun4i-a10-pll2-clk", AWPLL_A10_PLL2 }, + { "allwinner,sun4i-a10-pll3-clk", AWPLL_A10_PLL3 }, + { "allwinner,sun4i-a10-pll5-clk", AWPLL_A10_PLL5 }, + { "allwinner,sun4i-a10-pll6-clk", AWPLL_A10_PLL6 }, + { "allwinner,sun6i-a31-pll1-clk", AWPLL_A31_PLL1 }, + { "allwinner,sun6i-a31-pll6-clk", AWPLL_A31_PLL6 }, + { NULL, 0 } +}; + +static int +aw_pll_init(struct clknode *clk, device_t dev) +{ + clknode_init_parent_idx(clk, 0); + return (0); +} + +static int +aw_pll_set_gate(struct clknode *clk, bool enable) +{ + struct aw_pll_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + if (enable) + val |= AW_PLL_ENABLE; + else + val &= ~AW_PLL_ENABLE; + PLL_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_pll_recalc(struct clknode *clk, uint64_t *freq) +{ + struct aw_pll_sc *sc; + + sc = clknode_get_softc(clk); + + if (aw_pll_func[sc->type].recalc == NULL) + return (ENXIO); + + return (aw_pll_func[sc->type].recalc(sc, freq)); +} + +static int +aw_pll_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_pll_sc *sc; + + sc = clknode_get_softc(clk); + + *stop = 1; + + if (aw_pll_func[sc->type].set_freq == NULL) + return (ENXIO); + + return (aw_pll_func[sc->type].set_freq(sc, fin, fout, flags)); +} + +static clknode_method_t aw_pll_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_pll_init), + CLKNODEMETHOD(clknode_set_gate, aw_pll_set_gate), + CLKNODEMETHOD(clknode_recalc_freq, aw_pll_recalc), + CLKNODEMETHOD(clknode_set_freq, aw_pll_set_freq), + CLKNODEMETHOD_END +}; + +DEFINE_CLASS_1(aw_pll_clknode, aw_pll_clknode_class, aw_pll_clknode_methods, + sizeof(struct aw_pll_sc), clknode_class); + +static int +aw_pll_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + enum aw_pll_type type; + struct clknode_init_def clkdef; + struct aw_pll_sc *sc; + struct clknode *clk; + int error; + + type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + + memset(&clkdef, 0, sizeof(clkdef)); + clkdef.id = index; + clkdef.name = clkname; + if (pclkname != NULL) { + clkdef.parent_names = malloc(sizeof(char *), M_OFWPROP, + M_WAITOK); + clkdef.parent_names[0] = pclkname; + clkdef.parent_cnt = 1; + } else + clkdef.parent_cnt = 0; + + if (aw_pll_func[type].init != NULL) { + error = aw_pll_func[type].init(device_get_parent(dev), + paddr, &clkdef); + if (error != 0) { + device_printf(dev, "clock %s init failed\n", clkname); + return (error); + } + } + + clk = clknode_create(clkdom, &aw_pll_clknode_class, &clkdef); + if (clk == NULL) { + device_printf(dev, "cannot create clock node\n"); + return (ENXIO); + } + sc = clknode_get_softc(clk); + sc->clkdev = device_get_parent(dev); + sc->reg = paddr; + sc->type = type; + sc->id = clkdef.id; + + clknode_register(clkdom, clk); + + free(__DECONST(char *, clkdef.parent_names), M_OFWPROP); + + return (0); +} + +static int +aw_pll_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner PLL Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_pll_attach(device_t dev) +{ + struct clkdom *clkdom; + const char **names; + int index, nout, error; + clk_t clk_parent; + uint32_t *indices; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "couldn't parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + error = ENOENT; + goto fail; + } + + if (clk_get_by_ofw_index(dev, 0, &clk_parent) != 0) + clk_parent = NULL; + + for (index = 0; index < nout; index++) { + error = aw_pll_create(dev, paddr, clkdom, + clk_parent ? clk_get_name(clk_parent) : NULL, + names[index], nout == 1 ? 1 : index); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_pll_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_pll_probe), + DEVMETHOD(device_attach, aw_pll_attach), + + DEVMETHOD_END +}; + +static driver_t aw_pll_driver = { + "aw_pll", + aw_pll_methods, + 0, +}; + +static devclass_t aw_pll_devclass; + +EARLY_DRIVER_MODULE(aw_pll, simplebus, aw_pll_driver, + aw_pll_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_usbclk.c b/sys/arm/allwinner/clk/aw_usbclk.c new file mode 100644 index 0000000..bac9991 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_usbclk.c @@ -0,0 +1,246 @@ +/*- + * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner USB clocks + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/rman.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <machine/bus.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/ofw/ofw_subr.h> + +#include <dev/extres/clk/clk_gate.h> +#include <dev/extres/hwreset/hwreset.h> + +#include "clkdev_if.h" +#include "hwreset_if.h" + +#define A10_SCLK_GATING_USBPHY (1 << 8) +#define A10_SCLK_GATING_OHCI1 (1 << 7) +#define A10_SCLK_GATING_OHCI0 (1 << 6) + +#define USBPHY2_RST (1 << 2) +#define USBPHY1_RST (1 << 1) +#define USBPHY0_RST (1 << 0) + +enum aw_usbclk_type { + AW_A10_USBCLK = 1, + AW_A31_USBCLK, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-usb-clk", AW_A10_USBCLK }, + { "allwinner,sun6i-a31-usb-clk", AW_A31_USBCLK }, + { NULL, 0 } +}; + +/* Clock indices for A10, as there is no clock-indices property in the DT */ +static uint32_t aw_usbclk_indices_a10[] = { 6, 7, 8 }; + +struct aw_usbclk_softc { + bus_addr_t reg; +}; + +static int +aw_usbclk_hwreset_assert(device_t dev, intptr_t id, bool value) +{ + struct aw_usbclk_softc *sc; + uint32_t mask; + device_t pdev; + int error; + + sc = device_get_softc(dev); + pdev = device_get_parent(dev); + + mask = USBPHY0_RST << id; + + CLKDEV_DEVICE_LOCK(pdev); + error = CLKDEV_MODIFY_4(pdev, sc->reg, mask, value ? 0 : mask); + CLKDEV_DEVICE_UNLOCK(pdev); + + return (error); +} + +static int +aw_usbclk_hwreset_is_asserted(device_t dev, intptr_t id, bool *value) +{ + struct aw_usbclk_softc *sc; + uint32_t mask, val; + device_t pdev; + int error; + + sc = device_get_softc(dev); + pdev = device_get_parent(dev); + + mask = USBPHY0_RST << id; + + CLKDEV_DEVICE_LOCK(pdev); + error = CLKDEV_READ_4(pdev, sc->reg, &val); + CLKDEV_DEVICE_UNLOCK(pdev); + + if (error) + return (error); + + *value = (val & mask) != 0 ? false : true; + + return (0); +} + +static int +aw_usbclk_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + const char *parent_names[1] = { pclkname }; + struct clk_gate_def def; + + memset(&def, 0, sizeof(def)); + def.clkdef.id = index; + def.clkdef.name = clkname; + def.clkdef.parent_names = parent_names; + def.clkdef.parent_cnt = 1; + def.offset = paddr; + def.shift = index; + def.mask = 1; + def.on_value = 1; + def.off_value = 0; + + return (clknode_gate_register(clkdom, &def)); +} + +static int +aw_usbclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner USB Clocks"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_usbclk_attach(device_t dev) +{ + struct aw_usbclk_softc *sc; + struct clkdom *clkdom; + const char **names; + int index, nout, error; + enum aw_usbclk_type type; + uint32_t *indices; + clk_t clk_parent; + bus_size_t psize; + phandle_t node; + + sc = device_get_softc(dev); + node = ofw_bus_get_node(dev); + indices = NULL; + type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + + if (ofw_reg_to_paddr(node, 0, &sc->reg, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + error = ENOENT; + goto fail; + } + + if (indices == NULL && type == AW_A10_USBCLK) + indices = aw_usbclk_indices_a10; + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + for (index = 0; index < nout; index++) { + error = aw_usbclk_create(dev, sc->reg, clkdom, + clk_get_name(clk_parent), names[index], + indices != NULL ? indices[index] : index); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + hwreset_register_ofw_provider(dev); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_usbclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_usbclk_probe), + DEVMETHOD(device_attach, aw_usbclk_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_usbclk_hwreset_assert), + DEVMETHOD(hwreset_is_asserted, aw_usbclk_hwreset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_usbclk_driver = { + "aw_usbclk", + aw_usbclk_methods, + sizeof(struct aw_usbclk_softc) +}; + +static devclass_t aw_usbclk_devclass; + +EARLY_DRIVER_MODULE(aw_usbclk, simplebus, aw_usbclk_driver, + aw_usbclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/files.allwinner b/sys/arm/allwinner/files.allwinner index a13b637..34daf43 100644 --- a/sys/arm/allwinner/files.allwinner +++ b/sys/arm/allwinner/files.allwinner @@ -2,7 +2,6 @@ kern/kern_clocksource.c standard arm/allwinner/a10_ahci.c optional ahci -arm/allwinner/a10_clk.c standard arm/allwinner/a10_codec.c optional sound arm/allwinner/a10_common.c standard arm/allwinner/a10_dmac.c standard @@ -25,3 +24,21 @@ arm/allwinner/a10_fb.c optional vt arm/allwinner/a10_hdmi.c optional hdmi arm/allwinner/a10_hdmiaudio.c optional hdmi sound arm/arm/hdmi_if.m optional hdmi + +arm/allwinner/aw_reset.c standard +arm/allwinner/aw_ccu.c standard +arm/allwinner/clk/aw_ahbclk.c standard +arm/allwinner/clk/aw_apbclk.c standard +arm/allwinner/clk/aw_axiclk.c standard +arm/allwinner/clk/aw_codecclk.c standard +arm/allwinner/clk/aw_cpuclk.c standard +arm/allwinner/clk/aw_debeclk.c standard +arm/allwinner/clk/aw_gate.c standard +arm/allwinner/clk/aw_gmacclk.c standard +arm/allwinner/clk/aw_hdmiclk.c standard +arm/allwinner/clk/aw_lcdclk.c standard +arm/allwinner/clk/aw_modclk.c standard +arm/allwinner/clk/aw_mmcclk.c standard +arm/allwinner/clk/aw_oscclk.c standard +arm/allwinner/clk/aw_pll.c standard +arm/allwinner/clk/aw_usbclk.c standard diff --git a/sys/arm/allwinner/if_emac.c b/sys/arm/allwinner/if_emac.c index 268f5cb..cb9892f 100644 --- a/sys/arm/allwinner/if_emac.c +++ b/sys/arm/allwinner/if_emac.c @@ -78,11 +78,12 @@ __FBSDID("$FreeBSD$"); #include <arm/allwinner/if_emacreg.h> +#include <dev/extres/clk/clk.h> + #include "miibus_if.h" #include "gpio_if.h" -#include "a10_clk.h" #include "a10_sramc.h" struct emac_softc { @@ -94,6 +95,7 @@ struct emac_softc { struct resource *emac_res; struct resource *emac_irq; void *emac_intrhand; + clk_t emac_clk; int emac_if_flags; struct mtx emac_mtx; struct callout emac_tick_ch; @@ -110,7 +112,7 @@ static int emac_shutdown(device_t); static int emac_suspend(device_t); static int emac_resume(device_t); -static void emac_sys_setup(void); +static int emac_sys_setup(struct emac_softc *); static void emac_reset(struct emac_softc *); static void emac_init_locked(struct emac_softc *); @@ -138,14 +140,27 @@ static int sysctl_hw_emac_proc_limit(SYSCTL_HANDLER_ARGS); #define EMAC_WRITE_REG(sc, reg, val) \ bus_space_write_4(sc->emac_tag, sc->emac_handle, reg, val) -static void -emac_sys_setup(void) +static int +emac_sys_setup(struct emac_softc *sc) { + int error; /* Activate EMAC clock. */ - a10_clk_emac_activate(); + error = clk_get_by_ofw_index(sc->emac_dev, 0, &sc->emac_clk); + if (error != 0) { + device_printf(sc->emac_dev, "cannot get clock\n"); + return (error); + } + error = clk_enable(sc->emac_clk); + if (error != 0) { + device_printf(sc->emac_dev, "cannot enable clock\n"); + return (error); + } + /* Map sram. */ a10_map_to_emac(); + + return (0); } static void @@ -784,6 +799,9 @@ emac_detach(device_t dev) bus_generic_detach(sc->emac_dev); } + if (sc->emac_clk != NULL) + clk_disable(sc->emac_clk); + if (sc->emac_res != NULL) bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->emac_res); @@ -897,7 +915,10 @@ emac_attach(device_t dev) } } /* Setup EMAC */ - emac_sys_setup(); + error = emac_sys_setup(sc); + if (error != 0) + goto fail; + emac_reset(sc); ifp = sc->emac_ifp = if_alloc(IFT_ETHER); diff --git a/sys/arm/altera/socfpga/socfpga_rstmgr.c b/sys/arm/altera/socfpga/socfpga_rstmgr.c index 36a1d75..49db05e 100644 --- a/sys/arm/altera/socfpga/socfpga_rstmgr.c +++ b/sys/arm/altera/socfpga/socfpga_rstmgr.c @@ -145,7 +145,7 @@ rstmgr_sysctl(SYSCTL_HANDLER_ARGS) break; default: return (1); - }; + } reg = READ4(sc, RSTMGR_BRGMODRST); enable = reg & bit ? 0 : 1; diff --git a/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c b/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c index 3daa99f..75825fb 100644 --- a/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c +++ b/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c @@ -621,7 +621,7 @@ spurious: stop = 1; if ((sndr & AML_SDXC_SEND_RESP_136) != 0) { start = 1; - stop = start + 4;; + stop = start + 4; } for (i = start; i < stop; i++) { pdmar = CSR_READ_4(sc, AML_SDXC_PDMA_REG); diff --git a/sys/arm/arm/disassem.c b/sys/arm/arm/disassem.c index dbe533a..b7aa099 100644 --- a/sys/arm/arm/disassem.c +++ b/sys/arm/arm/disassem.c @@ -523,7 +523,7 @@ disasm(const disasm_interface_t *di, vm_offset_t loc, int altfmt) else di->di_printf(", "); } - }; + } di->di_printf("\n"); diff --git a/sys/arm/arm/gic.c b/sys/arm/arm/gic.c index 23b9577..5c0aece 100644 --- a/sys/arm/arm/gic.c +++ b/sys/arm/arm/gic.c @@ -256,11 +256,11 @@ static void arm_gic_init_secondary(device_t dev) { struct arm_gic_softc *sc = device_get_softc(dev); - struct intr_irqsrc *isrc; - u_int irq; + u_int irq, cpu; /* Set the mask so we can find this CPU to send it IPIs */ - arm_gic_map[PCPU_GET(cpuid)] = gic_cpu_mask(sc); + cpu = PCPU_GET(cpuid); + arm_gic_map[cpu] = gic_cpu_mask(sc); for (irq = 0; irq < sc->nirqs; irq += 4) gic_d_write_4(sc, GICD_IPRIORITYR(irq >> 2), 0); @@ -280,27 +280,14 @@ arm_gic_init_secondary(device_t dev) gic_d_write_4(sc, GICD_CTLR, 0x01); /* Unmask attached SGI interrupts. */ - for (irq = GIC_FIRST_SGI; irq <= GIC_LAST_SGI; irq++) { - isrc = GIC_INTR_ISRC(sc, irq); - if (isrc != NULL && isrc->isrc_handlers != 0) { - CPU_SET(PCPU_GET(cpuid), &isrc->isrc_cpu); + for (irq = GIC_FIRST_SGI; irq <= GIC_LAST_SGI; irq++) + if (intr_isrc_init_on_cpu(GIC_INTR_ISRC(sc, irq), cpu)) gic_irq_unmask(sc, irq); - } - } /* Unmask attached PPI interrupts. */ - for (irq = GIC_FIRST_PPI; irq <= GIC_LAST_PPI; irq++) { - isrc = GIC_INTR_ISRC(sc, irq); - if (isrc == NULL || isrc->isrc_handlers == 0) - continue; - if (isrc->isrc_flags & INTR_ISRCF_BOUND) { - if (CPU_ISSET(PCPU_GET(cpuid), &isrc->isrc_cpu)) - gic_irq_unmask(sc, irq); - } else { - CPU_SET(PCPU_GET(cpuid), &isrc->isrc_cpu); + for (irq = GIC_FIRST_PPI; irq <= GIC_LAST_PPI; irq++) + if (intr_isrc_init_on_cpu(GIC_INTR_ISRC(sc, irq), cpu)) gic_irq_unmask(sc, irq); - } - } } #else static void @@ -1016,13 +1003,18 @@ arm_gic_ipi_send(device_t dev, struct intr_irqsrc *isrc, cpuset_t cpus, static int arm_gic_ipi_setup(device_t dev, u_int ipi, struct intr_irqsrc **isrcp) { + struct intr_irqsrc *isrc; struct arm_gic_softc *sc = device_get_softc(dev); if (sgi_first_unused > GIC_LAST_SGI) return (ENOSPC); - *isrcp = GIC_INTR_ISRC(sc, sgi_first_unused); + isrc = GIC_INTR_ISRC(sc, sgi_first_unused); sgi_to_ipi[sgi_first_unused++] = ipi; + + CPU_SET(PCPU_GET(cpuid), &isrc->isrc_cpu); + + *isrcp = isrc; return (0); } #endif diff --git a/sys/arm/arm/locore.S b/sys/arm/arm/locore.S index 2aecb7e..0a6a2d3 100644 --- a/sys/arm/arm/locore.S +++ b/sys/arm/arm/locore.S @@ -1,6 +1,6 @@ /*- * Copyright (c) 2014 Ian Lepore <ian@freebsd.org> - * All rights excluded. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/sys/arm/arm/physmem.c b/sys/arm/arm/physmem.c index d023905..f6222c3 100644 --- a/sys/arm/arm/physmem.c +++ b/sys/arm/arm/physmem.c @@ -1,6 +1,6 @@ /*- * Copyright (c) 2014 Ian Lepore <ian@freebsd.org> - * All rights excluded. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/sys/arm/arm/vm_machdep.c b/sys/arm/arm/vm_machdep.c index fdab1c6..fec2ca0 100644 --- a/sys/arm/arm/vm_machdep.c +++ b/sys/arm/arm/vm_machdep.c @@ -148,7 +148,7 @@ cpu_fork(register struct thread *td1, register struct proc *p2, /* Setup to release spin count in fork_exit(). */ td2->td_md.md_spinlock_count = 1; - td2->td_md.md_saved_cspr = PSR_SVC32_MODE;; + td2->td_md.md_saved_cspr = PSR_SVC32_MODE; #if __ARM_ARCH >= 6 td2->td_md.md_tp = td1->td_md.md_tp; #else diff --git a/sys/arm/broadcom/bcm2835/bcm2836.c b/sys/arm/broadcom/bcm2835/bcm2836.c index 05e9cc6..f9a2fcc 100644 --- a/sys/arm/broadcom/bcm2835/bcm2836.c +++ b/sys/arm/broadcom/bcm2835/bcm2836.c @@ -525,40 +525,21 @@ bcm_lintc_setup_intr(device_t dev, struct intr_irqsrc *isrc, } #ifdef SMP -static bool -bcm_lint_init_on_ap(struct bcm_lintc_softc *sc, struct bcm_lintc_irqsrc *bli, - u_int cpu) -{ - struct intr_irqsrc *isrc; - - isrc = &bli->bli_isrc; - - KASSERT(isrc->isrc_flags & INTR_ISRCF_PPI, - ("%s: irq %d is not PPI", __func__, bli->bli_irq)); - - if (isrc->isrc_handlers == 0) - return (false); - if (isrc->isrc_flags & INTR_ISRCF_BOUND) - return (CPU_ISSET(cpu, &isrc->isrc_cpu)); - - CPU_SET(cpu, &isrc->isrc_cpu); - return (true); -} - static void bcm_lintc_init_rwreg_on_ap(struct bcm_lintc_softc *sc, u_int cpu, u_int irq, uint32_t reg, uint32_t mask) { - if (bcm_lint_init_on_ap(sc, &sc->bls_isrcs[irq], cpu)) + if (intr_isrc_init_on_cpu(&sc->bls_isrcs[irq].bli_isrc, cpu)) bcm_lintc_rwreg_set(sc, reg, mask); } static void bcm_lintc_init_pmu_on_ap(struct bcm_lintc_softc *sc, u_int cpu) { + struct intr_irqsrc *isrc = &sc->bls_isrcs[BCM_LINTC_PMU_IRQ].bli_isrc; - if (bcm_lint_init_on_ap(sc, &sc->bls_isrcs[BCM_LINTC_PMU_IRQ], cpu)) { + if (intr_isrc_init_on_cpu(isrc, cpu)) { /* Write-set register. */ bcm_lintc_write_4(sc, BCM_LINTC_PMU_ROUTING_SET_REG, BCM_LINTC_PIRR_IRQ_EN_CORE(cpu)); diff --git a/sys/arm/conf/A10 b/sys/arm/conf/A10 index 31a5e24..fc39be7 100644 --- a/sys/arm/conf/A10 +++ b/sys/arm/conf/A10 @@ -51,6 +51,13 @@ options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed #options BOOTP_NFSV3 #options BOOTP_WIRED_TO=emac0 +# EXT_RESOURCES pseudo devices +options EXT_RESOURCES +device clk +device phy +device hwreset +device regulator + # MMC/SD/SDIO Card slot support device mmc # mmc/sd bus device mmcsd # mmc/sd flash cards diff --git a/sys/arm/conf/A20 b/sys/arm/conf/A20 index ad3b29a..8f56523 100644 --- a/sys/arm/conf/A20 +++ b/sys/arm/conf/A20 @@ -55,6 +55,13 @@ options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed #options BOOTP_NFSV3 #options BOOTP_WIRED_TO=dwc0 +# EXT_RESOURCES pseudo devices +options EXT_RESOURCES +device clk +device phy +device hwreset +device regulator + # Interrupt controller device gic diff --git a/sys/arm/freescale/imx/imx6_sdma.c b/sys/arm/freescale/imx/imx6_sdma.c index ae9a339..4839270 100644 --- a/sys/arm/freescale/imx/imx6_sdma.c +++ b/sys/arm/freescale/imx/imx6_sdma.c @@ -444,7 +444,7 @@ boot_firmware(struct sdma_softc *sc) if (timeout-- <= 0) break; DELAY(10); - }; + } if (ret == 0) { device_printf(sc->dev, "SDMA failed to boot\n"); diff --git a/sys/arm/freescale/imx/imx6_ssi.c b/sys/arm/freescale/imx/imx6_ssi.c index 184de2a..9387aa3 100644 --- a/sys/arm/freescale/imx/imx6_ssi.c +++ b/sys/arm/freescale/imx/imx6_ssi.c @@ -463,7 +463,7 @@ find_sdma_controller(struct sc_info *sc) if (sdma_sc == NULL) { device_printf(sc->dev, "No sDMA found. Can't operate\n"); return (ENXIO); - }; + } sc->sdma_sc = sdma_sc; diff --git a/sys/arm/freescale/imx/imx_gpio.c b/sys/arm/freescale/imx/imx_gpio.c index cdff020..df0f2ad 100644 --- a/sys/arm/freescale/imx/imx_gpio.c +++ b/sys/arm/freescale/imx/imx_gpio.c @@ -157,45 +157,6 @@ static int imx51_gpio_pin_toggle(device_t, uint32_t pin); #ifdef ARM_INTRNG static int -gpio_pic_teardown_intr(device_t dev, struct intr_irqsrc *isrc, - struct resource *res, struct intr_map_data *data) -{ - struct imx51_gpio_softc *sc; - struct gpio_irqsrc *gi; - - sc = device_get_softc(dev); - if (isrc->isrc_handlers == 0) { - gi = (struct gpio_irqsrc *)isrc; - gi->gi_pol = INTR_POLARITY_CONFORM; - gi->gi_trig = INTR_TRIGGER_CONFORM; - - // XXX Not sure this is necessary - mtx_lock_spin(&sc->sc_mtx); - CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << gi->gi_irq)); - WRITE4(sc, IMX_GPIO_ISR_REG, (1U << gi->gi_irq)); - mtx_unlock_spin(&sc->sc_mtx); - } - return (0); -} - -/* - * this is mask_intr - */ -static void -gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) -{ - struct imx51_gpio_softc *sc; - u_int irq; - - sc = device_get_softc(dev); - irq = ((struct gpio_irqsrc *)isrc)->gi_irq; - - mtx_lock_spin(&sc->sc_mtx); - CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << irq)); - mtx_unlock_spin(&sc->sc_mtx); -} - -static int gpio_pic_map_fdt(device_t dev, u_int ncells, pcell_t *cells, u_int *irqp, enum intr_polarity *polp, enum intr_trigger *trigp) { @@ -279,6 +240,28 @@ gpio_pic_map_intr(device_t dev, struct intr_map_data *data, } static int +gpio_pic_teardown_intr(device_t dev, struct intr_irqsrc *isrc, + struct resource *res, struct intr_map_data *data) +{ + struct imx51_gpio_softc *sc; + struct gpio_irqsrc *gi; + + sc = device_get_softc(dev); + if (isrc->isrc_handlers == 0) { + gi = (struct gpio_irqsrc *)isrc; + gi->gi_pol = INTR_POLARITY_CONFORM; + gi->gi_trig = INTR_TRIGGER_CONFORM; + + // XXX Not sure this is necessary + mtx_lock_spin(&sc->sc_mtx); + CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << gi->gi_irq)); + WRITE4(sc, IMX_GPIO_ISR_REG, (1U << gi->gi_irq)); + mtx_unlock_spin(&sc->sc_mtx); + } + return (0); +} + +static int gpio_pic_setup_intr(device_t dev, struct intr_irqsrc *isrc, struct resource *res, struct intr_map_data *data) { @@ -345,6 +328,23 @@ gpio_pic_setup_intr(device_t dev, struct intr_irqsrc *isrc, } /* + * this is mask_intr + */ +static void +gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct imx51_gpio_softc *sc; + u_int irq; + + sc = device_get_softc(dev); + irq = ((struct gpio_irqsrc *)isrc)->gi_irq; + + mtx_lock_spin(&sc->sc_mtx); + CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << irq)); + mtx_unlock_spin(&sc->sc_mtx); +} + +/* * this is unmask_intr */ static void @@ -417,7 +417,7 @@ gpio_pic_filter(void *arg) } /* - * register our isrcs into intrng to make it known about them. + * Initialize our isrcs and register them with intrng. */ static int gpio_pic_register_isrcs(struct imx51_gpio_softc *sc) @@ -451,22 +451,27 @@ static void imx51_gpio_pin_configure(struct imx51_gpio_softc *sc, struct gpio_pin *pin, unsigned int flags) { + u_int newflags; mtx_lock_spin(&sc->sc_mtx); /* - * Manage input/output + * Manage input/output; other flags not supported yet. + * + * Note that changes to pin->gp_flags must be acccumulated in newflags + * and stored with a single writeback to gp_flags at the end, to enable + * unlocked reads of that value elsewhere. */ - if (flags & (GPIO_PIN_INPUT|GPIO_PIN_OUTPUT)) { - pin->gp_flags &= ~(GPIO_PIN_INPUT|GPIO_PIN_OUTPUT); + if (flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)) { + newflags = pin->gp_flags & ~(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); if (flags & GPIO_PIN_OUTPUT) { - pin->gp_flags |= GPIO_PIN_OUTPUT; + newflags |= GPIO_PIN_OUTPUT; SET4(sc, IMX_GPIO_OE_REG, (1U << pin->gp_pin)); - } - else { - pin->gp_flags |= GPIO_PIN_INPUT; + } else { + newflags |= GPIO_PIN_INPUT; CLEAR4(sc, IMX_GPIO_OE_REG, (1U << pin->gp_pin)); } + pin->gp_flags = newflags; } mtx_unlock_spin(&sc->sc_mtx); @@ -497,20 +502,13 @@ static int imx51_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); - mtx_lock_spin(&sc->sc_mtx); - *caps = sc->gpio_pins[i].gp_caps; - mtx_unlock_spin(&sc->sc_mtx); + *caps = sc->gpio_pins[pin].gp_caps; return (0); } @@ -519,20 +517,13 @@ static int imx51_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); - mtx_lock_spin(&sc->sc_mtx); - *flags = sc->gpio_pins[i].gp_flags; - mtx_unlock_spin(&sc->sc_mtx); + *flags = sc->gpio_pins[pin].gp_flags; return (0); } @@ -541,19 +532,13 @@ static int imx51_gpio_pin_getname(device_t dev, uint32_t pin, char *name) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); - memcpy(name, sc->gpio_pins[i].gp_name, GPIOMAXNAME); + memcpy(name, sc->gpio_pins[pin].gp_name, GPIOMAXNAME); mtx_unlock_spin(&sc->sc_mtx); return (0); @@ -563,18 +548,13 @@ static int imx51_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); - imx51_gpio_pin_configure(sc, &sc->gpio_pins[i], flags); + imx51_gpio_pin_configure(sc, &sc->gpio_pins[pin], flags); return (0); } @@ -583,22 +563,17 @@ static int imx51_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); if (value) - SET4(sc, IMX_GPIO_DR_REG, (1U << i)); + SET4(sc, IMX_GPIO_DR_REG, (1U << pin)); else - CLEAR4(sc, IMX_GPIO_DR_REG, (1U << i)); + CLEAR4(sc, IMX_GPIO_DR_REG, (1U << pin)); mtx_unlock_spin(&sc->sc_mtx); return (0); @@ -608,20 +583,13 @@ static int imx51_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); - mtx_lock_spin(&sc->sc_mtx); - *val = (READ4(sc, IMX_GPIO_DR_REG) >> i) & 1; - mtx_unlock_spin(&sc->sc_mtx); + *val = (READ4(sc, IMX_GPIO_DR_REG) >> pin) & 1; return (0); } @@ -630,20 +598,15 @@ static int imx51_gpio_pin_toggle(device_t dev, uint32_t pin) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); WRITE4(sc, IMX_GPIO_DR_REG, - (READ4(sc, IMX_GPIO_DR_REG) ^ (1U << i))); + (READ4(sc, IMX_GPIO_DR_REG) ^ (1U << pin))); mtx_unlock_spin(&sc->sc_mtx); return (0); diff --git a/sys/arm/freescale/vybrid/vf_ccm.c b/sys/arm/freescale/vybrid/vf_ccm.c index 8f8a3f0..82284d5 100644 --- a/sys/arm/freescale/vybrid/vf_ccm.c +++ b/sys/arm/freescale/vybrid/vf_ccm.c @@ -379,15 +379,15 @@ set_clock(struct ccm_softc *sc, char *name) reg &= ~(clk->sel_mask << clk->sel_shift); reg |= (clk->sel_val << clk->sel_shift); WRITE4(sc, clk->sel_reg, reg); - }; + } reg = READ4(sc, clk->reg); reg |= clk->enable_reg; reg &= ~(clk->div_mask << clk->div_shift); reg |= (clk->div_val << clk->div_shift); WRITE4(sc, clk->reg, reg); - }; - }; + } + } return (0); } @@ -425,8 +425,8 @@ ccm_fdt_set(struct ccm_softc *sc) fdt_config += strlen(name) + 1; len -= strlen(name) + 1; set_clock(sc, name); - }; - }; + } + } if (OF_peer(child) == 0) { /* No more siblings. */ diff --git a/sys/arm/freescale/vybrid/vf_edma.c b/sys/arm/freescale/vybrid/vf_edma.c index ed12072..9317921 100644 --- a/sys/arm/freescale/vybrid/vf_edma.c +++ b/sys/arm/freescale/vybrid/vf_edma.c @@ -161,7 +161,7 @@ channel_configure(struct edma_softc *sc, int mux_grp, int mux_src) } else { channel_first = 0; mux_num = sc->device_id * 2; - }; + } /* Take first unused eDMA channel */ ch = NULL; @@ -171,12 +171,12 @@ channel_configure(struct edma_softc *sc, int mux_grp, int mux_src) break; } ch = NULL; - }; + } if (ch == NULL) { /* Can't find free channel */ return (-1); - }; + } chnum = i; diff --git a/sys/arm/freescale/vybrid/vf_port.c b/sys/arm/freescale/vybrid/vf_port.c index 943ca88..6ff8bfc 100644 --- a/sys/arm/freescale/vybrid/vf_port.c +++ b/sys/arm/freescale/vybrid/vf_port.c @@ -171,7 +171,7 @@ port_setup(int pnum, enum ev_type pevt, void (*ih)(void *), void *ih_user) break; default: return (-1); - }; + } reg = READ4(sc, PORT_PCR(pnum)); reg &= ~(PCR_IRQC_M << PCR_IRQC_S); diff --git a/sys/arm/freescale/vybrid/vf_sai.c b/sys/arm/freescale/vybrid/vf_sai.c index 309d95e..83f689f 100644 --- a/sys/arm/freescale/vybrid/vf_sai.c +++ b/sys/arm/freescale/vybrid/vf_sai.c @@ -433,7 +433,7 @@ find_edma_controller(struct sc_info *sc) if ((len = OF_getproplen(edma_node, "device-id")) <= 0) { return (ENXIO); - }; + } OF_getprop(edma_node, "device-id", &dts_value, len); edma_device_id = fdt32_to_cpu(dts_value); @@ -447,16 +447,16 @@ find_edma_controller(struct sc_info *sc) if (edma_sc->device_id == edma_device_id) { /* found */ break; - }; + } edma_sc = NULL; - }; - }; + } + } if (edma_sc == NULL) { device_printf(sc->dev, "no eDMA. can't operate\n"); return (ENXIO); - }; + } sc->edma_sc = edma_sc; @@ -465,7 +465,7 @@ find_edma_controller(struct sc_info *sc) if (sc->edma_chnum < 0) { /* cant setup eDMA */ return (ENXIO); - }; + } return (0); }; diff --git a/sys/arm/mv/mv_pci.c b/sys/arm/mv/mv_pci.c index dc8b890..2ef6604 100644 --- a/sys/arm/mv/mv_pci.c +++ b/sys/arm/mv/mv_pci.c @@ -842,7 +842,7 @@ mv_pcib_alloc_resource(device_t dev, device_t child, int type, int *rid, default: return (BUS_ALLOC_RESOURCE(device_get_parent(dev), dev, type, rid, start, end, count, flags)); - }; + } if (RMAN_IS_DEFAULT_RANGE(start, end)) { start = sc->sc_mem_base; diff --git a/sys/arm/samsung/exynos/chrome_ec.c b/sys/arm/samsung/exynos/chrome_ec.c index 2c88414..8f794b7 100644 --- a/sys/arm/samsung/exynos/chrome_ec.c +++ b/sys/arm/samsung/exynos/chrome_ec.c @@ -176,7 +176,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dout_len; i++) { msg_dout[i + 3] = dout[i]; - }; + } fill_checksum(msg_dout, dout_len + 3); @@ -195,7 +195,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dinp_len; i++) { dinp[i] = msg_dinp[i + 2]; - }; + } free(msg_dout, M_DEVBUF); free(msg_dinp, M_DEVBUF); diff --git a/sys/arm/samsung/exynos/chrome_ec_spi.c b/sys/arm/samsung/exynos/chrome_ec_spi.c index a018afa..9e54969 100644 --- a/sys/arm/samsung/exynos/chrome_ec_spi.c +++ b/sys/arm/samsung/exynos/chrome_ec_spi.c @@ -143,7 +143,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dout_len; i++) { msg_dout[i + 3] = dout[i]; - }; + } fill_checksum(msg_dout, dout_len + 3); @@ -177,7 +177,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dinp_len; i++) { dinp[i] = msg_dinp[i + 2]; - }; + } free(msg_dout, M_DEVBUF); free(msg_dinp, M_DEVBUF); diff --git a/sys/arm/samsung/exynos/chrome_kb.c b/sys/arm/samsung/exynos/chrome_kb.c index b10a5ac..6965d3c 100644 --- a/sys/arm/samsung/exynos/chrome_kb.c +++ b/sys/arm/samsung/exynos/chrome_kb.c @@ -255,12 +255,12 @@ ckb_check(keyboard_t *kbd) if (sc->sc_flags & CKB_FLAG_POLLING) { return (1); - }; + } for (i = 0; i < sc->cols; i++) if (sc->scan_local[i] != sc->scan[i]) { return (1); - }; + } if (sc->sc_repeating) return (1); @@ -356,7 +356,7 @@ ckb_read_char_locked(keyboard_t *kbd, int wait) callout_reset(&sc->sc_repeat_callout, hz / 10, ckb_repeat, sc); return (sc->sc_repeat_key); - }; + } if (sc->sc_flags & CKB_FLAG_POLLING) { for (;;) { @@ -374,7 +374,7 @@ ckb_read_char_locked(keyboard_t *kbd, int wait) } DELAY(1000); } - }; + } for (i = 0; i < sc->cols; i++) { for (j = 0; j < sc->rows; j++) { @@ -387,7 +387,7 @@ ckb_read_char_locked(keyboard_t *kbd, int wait) key = keymap_read(sc, i, j); if (key == 0) { continue; - }; + } if (newbit > 0) { /* key pressed */ @@ -841,7 +841,7 @@ chrome_kb_attach(device_t dev) for (i = 0; i < sc->cols; i++) { sc->scan_local[i] = 0; sc->scan[i] = 0; - }; + } kbd_init_struct(kbd, KBD_DRIVER_NAME, KB_OTHER, device_get_unit(dev), 0, 0, 0); @@ -866,7 +866,7 @@ chrome_kb_attach(device_t dev) if (kbd_register(kbd) < 0) { return (ENXIO); - }; + } KBD_CONFIG_DONE(kbd); return (0); diff --git a/sys/arm/samsung/exynos/exynos5_i2c.c b/sys/arm/samsung/exynos/exynos5_i2c.c index d879138..756a27d 100644 --- a/sys/arm/samsung/exynos/exynos5_i2c.c +++ b/sys/arm/samsung/exynos/exynos5_i2c.c @@ -292,7 +292,7 @@ i2c_start(device_t dev, u_char slave, int timeout) mtx_unlock(&sc->mutex); return (IIC_ENOACK); - }; + } mtx_unlock(&sc->mutex); return (IIC_NOERR); @@ -387,7 +387,7 @@ i2c_read(device_t dev, char *buf, int len, reg = READ1(sc, I2CCON); reg &= ~(ACKGEN); WRITE1(sc, I2CCON, reg); - }; + } clear_ipend(sc); @@ -444,7 +444,7 @@ i2c_write(device_t dev, const char *buf, int len, int *sent, int timeout) DPRINTF("cant i2c write: no ack\n"); mtx_unlock(&sc->mutex); return (IIC_ENOACK); - }; + } (*sent)++; } diff --git a/sys/arm/samsung/exynos/exynos5_pad.c b/sys/arm/samsung/exynos/exynos5_pad.c index ea07f5d..27d0d53 100644 --- a/sys/arm/samsung/exynos/exynos5_pad.c +++ b/sys/arm/samsung/exynos/exynos5_pad.c @@ -330,10 +330,10 @@ get_bank(struct pad_softc *sc, int gpio_number, *bank = sc->gpio_map[i]; *pin_shift = (gpio_number - n); return (0); - }; + } n += ngpio; - }; + } return (-1); } @@ -516,7 +516,7 @@ pad_attach(device_t dev) break; default: goto fail; - }; + } if (bus_alloc_resources(dev, sc->pad_spec, sc->res)) { device_printf(dev, "could not allocate resources\n"); @@ -528,7 +528,7 @@ pad_attach(device_t dev) for (i = 0; i < sc->nports; i++) { sc->bst[i] = rman_get_bustag(sc->res[i]); sc->bsh[i] = rman_get_bushandle(sc->res[i]); - }; + } sc->dev = dev; diff --git a/sys/arm64/arm64/copyinout.S b/sys/arm64/arm64/copyinout.S index b99dbc2..86711fc 100644 --- a/sys/arm64/arm64/copyinout.S +++ b/sys/arm64/arm64/copyinout.S @@ -33,6 +33,8 @@ __FBSDID("$FreeBSD$"); #include <sys/errno.h> +#include <machine/vmparam.h> + #include "assym.s" /* diff --git a/sys/arm64/arm64/genassym.c b/sys/arm64/arm64/genassym.c index 26adc6d..36ad877 100644 --- a/sys/arm64/arm64/genassym.c +++ b/sys/arm64/arm64/genassym.c @@ -37,9 +37,6 @@ __FBSDID("$FreeBSD$"); #include <machine/pcb.h> #include <machine/vmparam.h> -ASSYM(KERNBASE, KERNBASE); -ASSYM(VM_MAXUSER_ADDRESS, VM_MAXUSER_ADDRESS); - ASSYM(TDF_ASTPENDING, TDF_ASTPENDING); ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED); diff --git a/sys/arm64/arm64/gic_v3_its.c b/sys/arm64/arm64/gic_v3_its.c index c847f95..aef6346 100644 --- a/sys/arm64/arm64/gic_v3_its.c +++ b/sys/arm64/arm64/gic_v3_its.c @@ -1579,9 +1579,7 @@ its_get_devid_thunder(device_t pci_dev) uint32_t bus; bus = pci_get_bus(pci_dev); - - bsf = PCI_RID(pci_get_bus(pci_dev), pci_get_slot(pci_dev), - pci_get_function(pci_dev)); + bsf = pci_get_rid(pci_dev); /* Check if accessing internal PCIe (low bus numbers) */ if (bus < GIC_V3_ITS_QUIRK_THUNDERX_PEM_BUS_OFFSET) { diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index 676c1d5..ca57cfc 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -34,6 +34,7 @@ #include <machine/hypervisor.h> #include <machine/param.h> #include <machine/pte.h> +#include <machine/vmparam.h> #define VIRT_BITS 48 @@ -377,6 +378,7 @@ create_pagetables: /* Link the l0 -> l1 table */ mov x9, x6 mov x6, x24 + mov x10, #1 bl link_l0_pagetable /* @@ -407,6 +409,7 @@ create_pagetables: /* Link the l0 -> l1 table */ mov x9, x6 mov x6, x27 + mov x10, #1 bl link_l0_pagetable /* Restore the Link register */ @@ -422,6 +425,7 @@ create_pagetables: * x6 = L0 table * x8 = Virtual Address * x9 = L1 PA (trashed) + * x10 = Entry count * x11, x12 and x13 are trashed */ link_l0_pagetable: @@ -436,11 +440,16 @@ link_l0_pagetable: mov x12, #L0_TABLE /* Only use the output address bits */ - lsr x9, x9, #12 - orr x12, x12, x9, lsl #12 + lsr x9, x9, #PAGE_SHIFT +1: orr x13, x12, x9, lsl #PAGE_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] + str x13, [x6, x11, lsl #3] + + sub x10, x10, #1 + add x11, x11, #1 + add x9, x9, #1 + cbnz x10, 1b ret @@ -467,11 +476,11 @@ link_l1_pagetable: mov x12, #L1_TABLE /* Only use the output address bits */ - lsr x9, x9, #12 - orr x12, x12, x9, lsl #12 + lsr x9, x9, #PAGE_SHIFT + orr x13, x12, x9, lsl #PAGE_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] + str x13, [x6, x11, lsl #3] ret @@ -481,7 +490,7 @@ link_l1_pagetable: * x7 = Type (0 = Device, 1 = Normal) * x8 = VA start * x9 = PA start (trashed) - * x10 = Entry count (TODO) + * x10 = Entry count * x11, x12 and x13 are trashed */ build_l1_block_pagetable: @@ -504,20 +513,17 @@ build_l1_block_pagetable: lsr x9, x9, #L1_SHIFT /* Set the physical address for this virtual address */ -1: orr x12, x12, x9, lsl #L1_SHIFT +1: orr x13, x12, x9, lsl #L1_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] - - /* Clear the address bits */ - and x12, x12, #ATTR_MASK_L + str x13, [x6, x11, lsl #3] sub x10, x10, #1 add x11, x11, #1 add x9, x9, #1 cbnz x10, 1b -2: ret + ret /* * Builds count 2 MiB page table entry @@ -525,7 +531,7 @@ build_l1_block_pagetable: * x7 = Type (0 = Device, 1 = Normal) * x8 = VA start * x9 = PA start (trashed) - * x10 = Entry count (TODO) + * x10 = Entry count * x11, x12 and x13 are trashed */ build_l2_block_pagetable: @@ -548,20 +554,17 @@ build_l2_block_pagetable: lsr x9, x9, #L2_SHIFT /* Set the physical address for this virtual address */ -1: orr x12, x12, x9, lsl #L2_SHIFT +1: orr x13, x12, x9, lsl #L2_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] - - /* Clear the address bits */ - and x12, x12, #ATTR_MASK_L + str x13, [x6, x11, lsl #3] sub x10, x10, #1 add x11, x11, #1 add x9, x9, #1 cbnz x10, 1b -2: ret + ret start_mmu: dsb sy diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 5eeccdd..ca232f0 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -3534,7 +3534,7 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, needs_mapping = FALSE; for (i = 0; i < count; i++) { paddr = VM_PAGE_TO_PHYS(page[i]); - if (__predict_false(paddr >= DMAP_MAX_PHYSADDR)) { + if (__predict_false(!PHYS_IN_DMAP(paddr))) { error = vmem_alloc(kernel_arena, PAGE_SIZE, M_BESTFIT | M_WAITOK, &vaddr[i]); KASSERT(error == 0, ("vmem_alloc failed: %d", error)); @@ -3552,7 +3552,7 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, sched_pin(); for (i = 0; i < count; i++) { paddr = VM_PAGE_TO_PHYS(page[i]); - if (paddr >= DMAP_MAX_PHYSADDR) { + if (!PHYS_IN_DMAP(paddr)) { panic( "pmap_map_io_transient: TODO: Map out of DMAP data"); } @@ -3572,7 +3572,7 @@ pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, sched_unpin(); for (i = 0; i < count; i++) { paddr = VM_PAGE_TO_PHYS(page[i]); - if (paddr >= DMAP_MAX_PHYSADDR) { + if (!PHYS_IN_DMAP(paddr)) { panic("ARM64TODO: pmap_unmap_io_transient: Unmap data"); } } diff --git a/sys/arm64/arm64/support.S b/sys/arm64/arm64/support.S index 4938240..1ca8c2b 100644 --- a/sys/arm64/arm64/support.S +++ b/sys/arm64/arm64/support.S @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include <machine/setjmp.h> #include <machine/param.h> +#include <machine/vmparam.h> #include "assym.s" diff --git a/sys/arm64/cavium/thunder_pcie_pem.c b/sys/arm64/cavium/thunder_pcie_pem.c index 8679850..09ea206 100644 --- a/sys/arm64/cavium/thunder_pcie_pem.c +++ b/sys/arm64/cavium/thunder_pcie_pem.c @@ -530,7 +530,7 @@ thunder_pem_alloc_resource(device_t dev, device_t child, int type, int *rid, parent_dev = device_get_parent(device_get_parent(dev)); return (BUS_ALLOC_RESOURCE(parent_dev, dev, type, rid, start, end, count, flags)); - }; + } if (!RMAN_IS_DEFAULT_RANGE(start, end)) { diff --git a/sys/arm64/cloudabi64/cloudabi64_sysvec.c b/sys/arm64/cloudabi64/cloudabi64_sysvec.c index a26007a..fd13db8 100644 --- a/sys/arm64/cloudabi64/cloudabi64_sysvec.c +++ b/sys/arm64/cloudabi64/cloudabi64_sysvec.c @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> +#include <sys/imgact.h> #include <sys/kernel.h> #include <sys/proc.h> #include <sys/sysent.h> @@ -46,6 +47,25 @@ __FBSDID("$FreeBSD$"); extern const char *cloudabi64_syscallnames[]; extern struct sysent cloudabi64_sysent[]; +static void +cloudabi64_proc_setregs(struct thread *td, struct image_params *imgp, + unsigned long stack) +{ + struct trapframe *regs; + + exec_setregs(td, imgp, stack); + + /* + * The stack now contains a pointer to the TCB and the auxiliary + * vector. Let x0 point to the auxiliary vector, and set + * tpidr_el0 to the TCB. + */ + regs = td->td_frame; + regs->tf_x[0] = td->td_retval[0] = + stack + roundup(sizeof(cloudabi64_tcb_t), sizeof(register_t)); + (void)cpu_set_user_tls(td, (void *)stack); +} + static int cloudabi64_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { @@ -110,9 +130,9 @@ cloudabi64_schedtail(struct thread *td) } } -void +int cloudabi64_thread_setregs(struct thread *td, - const cloudabi64_threadattr_t *attr) + const cloudabi64_threadattr_t *attr, uint64_t tcb) { struct trapframe *frame; stack_t stack; @@ -130,6 +150,9 @@ cloudabi64_thread_setregs(struct thread *td, frame = td->td_frame; frame->tf_x[0] = td->td_tid; frame->tf_x[1] = attr->argument; + + /* Set up TLS. */ + return (cpu_set_user_tls(td, (void *)tcb)); } static struct sysentvec cloudabi64_elf_sysvec = { @@ -144,6 +167,7 @@ static struct sysentvec cloudabi64_elf_sysvec = { .sv_usrstack = USRSTACK, .sv_stackprot = VM_PROT_READ | VM_PROT_WRITE, .sv_copyout_strings = cloudabi64_copyout_strings, + .sv_setregs = cloudabi64_proc_setregs, .sv_flags = SV_ABI_CLOUDABI | SV_CAPSICUM | SV_LP64, .sv_set_syscall_retval = cloudabi64_set_syscall_retval, .sv_fetch_syscall_args = cloudabi64_fetch_syscall_args, diff --git a/sys/arm64/include/frame.h b/sys/arm64/include/frame.h index 7e644d5..6d43e13 100644 --- a/sys/arm64/include/frame.h +++ b/sys/arm64/include/frame.h @@ -49,6 +49,11 @@ struct trapframe { uint64_t tf_x[30]; }; +struct arm64_frame { + struct arm64_frame *f_frame; + u_long f_retaddr; +}; + /* * Signal frame, pushedonto the user stack */ diff --git a/sys/arm64/include/vmparam.h b/sys/arm64/include/vmparam.h index cd9198e..e086422 100644 --- a/sys/arm64/include/vmparam.h +++ b/sys/arm64/include/vmparam.h @@ -160,7 +160,6 @@ #define DMAP_MIN_ADDRESS (0xffffffc000000000UL) #define DMAP_MAX_ADDRESS (0xffffffdfffffffffUL) -extern vm_paddr_t dmap_phys_base; #define DMAP_MIN_PHYSADDR (dmap_phys_base) #define DMAP_MAX_PHYSADDR (dmap_phys_base + (DMAP_MAX_ADDRESS - DMAP_MIN_ADDRESS)) @@ -229,10 +228,15 @@ extern vm_paddr_t dmap_phys_base; #define UMA_MD_SMALL_ALLOC +#ifndef LOCORE + +extern vm_paddr_t dmap_phys_base; extern u_int tsb_kernel_ldd_phys; extern vm_offset_t vm_max_kernel_address; extern vm_offset_t init_pt_va; +#endif + #define ZERO_REGION_SIZE (64 * 1024) /* 64KB */ #endif /* !_MACHINE_VMPARAM_H_ */ diff --git a/sys/boot/arm/at91/libat91/sd-card.c b/sys/boot/arm/at91/libat91/sd-card.c index 803d782..d173399 100644 --- a/sys/boot/arm/at91/libat91/sd-card.c +++ b/sys/boot/arm/at91/libat91/sd-card.c @@ -187,7 +187,7 @@ MCI_StartReadBlock(unsigned blknum, void *dataBuffer) // (PDC) Receiver Transfer Enable AT91C_BASE_PDC_MCI->PDC_PTCR = (AT91C_PDC_TXTDIS | AT91C_PDC_RXTDIS); AT91C_BASE_PDC_MCI->PDC_RPR = (unsigned int)dataBuffer; - AT91C_BASE_PDC_MCI->PDC_RCR = SD_BLOCK_SIZE / 4;; + AT91C_BASE_PDC_MCI->PDC_RCR = SD_BLOCK_SIZE / 4; AT91C_BASE_PDC_MCI->PDC_PTCR = AT91C_PDC_RXTEN; // SDHC wants block offset, non-HC wants byte offset. diff --git a/sys/boot/arm/uboot/ldscript.arm b/sys/boot/arm/uboot/ldscript.arm index 1eb10a8..8eb604c 100644 --- a/sys/boot/arm/uboot/ldscript.arm +++ b/sys/boot/arm/uboot/ldscript.arm @@ -6,6 +6,7 @@ SECTIONS { /* Read-only sections, merged into text segment: */ . = UBLDR_LOADADDR + SIZEOF_HEADERS; + . = ALIGN(8); .text : { *(.text) @@ -47,8 +48,8 @@ SECTIONS .rodata1 : { *(.rodata1) } .sdata2 : { *(.sdata2) } .sbss2 : { *(.sbss2) } - /* Adjust the address for the data segment to the next page up. */ - . = ((. + 0x1000) & ~(0x1000 - 1)); + /* Adjust the address for the data segment to the doubleword boundary. */ + . = ALIGN(8); .data : { *(.data) diff --git a/sys/boot/common/load_elf_obj.c b/sys/boot/common/load_elf_obj.c index 285a88e..a32b9fd 100644 --- a/sys/boot/common/load_elf_obj.c +++ b/sys/boot/common/load_elf_obj.c @@ -222,7 +222,7 @@ __elfN(obj_loadimage)(struct preloaded_file *fp, elf_file_t ef, u_int64_t off) case SHT_PROGBITS: case SHT_NOBITS: #if defined(__i386__) || defined(__amd64__) - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif lastaddr = roundup(lastaddr, shdr[i].sh_addralign); shdr[i].sh_addr = (Elf_Addr)lastaddr; diff --git a/sys/boot/common/part.c b/sys/boot/common/part.c index 3fad5dd..b349e96 100644 --- a/sys/boot/common/part.c +++ b/sys/boot/common/part.c @@ -514,7 +514,7 @@ vtoc8_parttype(uint16_t type) return (PART_FREEBSD_VINUM); case VTOC_TAG_FREEBSD_ZFS: return (PART_FREEBSD_ZFS); - }; + } return (PART_UNKNOWN); } diff --git a/sys/boot/fdt/dts/arm/bananapi.dts b/sys/boot/fdt/dts/arm/bananapi.dts index a101720..03a9fef 100644 --- a/sys/boot/fdt/dts/arm/bananapi.dts +++ b/sys/boot/fdt/dts/arm/bananapi.dts @@ -26,83 +26,21 @@ * $FreeBSD$ */ -/dts-v1/; - -#include "sun7i-a20.dtsi" - -#include <dt-bindings/gpio/gpio.h> +#include "sun7i-a20-bananapi.dts" +#include "sun7i-a20-hdmi.dtsi" / { - model = "LeMaker Banana Pi"; - compatible = "lemaker,bananapi", "allwinner,sun7i-a20"; - - memory { - device_type = "memory"; - reg = < 0x40000000 0x40000000 >; /* 1GB RAM */ - }; - - aliases { - soc = &SOC; - UART0 = &UART0; - }; - - SOC: a20 { - - usb1: usb@01c14000 { - status = "okay"; - }; - - usb2: usb@01c1c000 { - status = "okay"; - }; - - UART0: serial@01c28000 { - status = "okay"; - }; - - mmc0: mmc@01c0f000 { + soc@01c00000 { + hdmi@01c16000 { status = "okay"; }; - gmac@01c50000 { - phy-mode = "rgmii-bpi"; - status = "okay"; - pinctrl-names = "default"; - pinctrl-0 = <&gmac_pins_rgmii>; - }; - - ahci: sata@01c18000 { - status = "okay"; - }; - - hdmi: hdmi@01c16000 { - compatible = "allwinner,sun7i-a20-hdmi"; - reg = <0x01c16000 0x1000>; - }; - hdmiaudio { - compatible = "allwinner,sun7i-a20-hdmiaudio"; - }; - - fb: fb@01e60000 { - compatible = "allwinner,sun7i-a20-fb"; - reg = <0x01e60000 0x10000>, /* DEBE0 */ - <0x01c0c000 0x1000>; /* LCD0 */ - }; - }; - - leds { - compatible = "gpio-leds"; - - green { - label = "bananapi:green:usr"; - gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; + status = "okay"; }; }; +}; - chosen { - bootargs = "-v"; - stdin = "UART0"; - stdout = "UART0"; - }; +&mmc0_pins_a { + allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; }; diff --git a/sys/boot/fdt/dts/arm/cubieboard.dts b/sys/boot/fdt/dts/arm/cubieboard.dts index a21ea4d..a3095b9 100644 --- a/sys/boot/fdt/dts/arm/cubieboard.dts +++ b/sys/boot/fdt/dts/arm/cubieboard.dts @@ -26,56 +26,4 @@ * $FreeBSD$ */ -/dts-v1/; - -#include "sun4i-a10.dtsi" - -/ { - model = "Cubietech Cubieboard"; - - memory { - device_type = "memory"; - reg = < 0x40000000 0x40000000 >; /* 1GB RAM */ - }; - - aliases { - soc = &SOC; - UART0 = &UART0; - }; - - SOC: a10 { - - usb1: usb@01c14000 { - status = "okay"; - }; - - usb2: usb@01c1c000 { - status = "okay"; - }; - - UART0: serial@01c28000 { - status = "okay"; - }; - - mmc0: mmc@01c0f000 { - status = "okay"; - }; - - emac@01c0b000 { - status = "okay"; - pinctrl-names = "default"; - pinctrl-0 = <&emac_pins>; - }; - - ahci: sata@01c18000 { - status = "okay"; - }; - }; - - chosen { - bootargs = "-v"; - stdin = "UART0"; - stdout = "UART0"; - }; -}; - +#include "sun4i-a10-cubieboard.dts" diff --git a/sys/boot/fdt/dts/arm/cubieboard2.dts b/sys/boot/fdt/dts/arm/cubieboard2.dts index f9e1eb8..a240e84 100644 --- a/sys/boot/fdt/dts/arm/cubieboard2.dts +++ b/sys/boot/fdt/dts/arm/cubieboard2.dts @@ -32,13 +32,6 @@ / { soc@01c00000 { - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - hdmi@01c16000 { status = "okay"; }; diff --git a/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts b/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts index ffe0777..5d99f30 100644 --- a/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts +++ b/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts @@ -27,14 +27,16 @@ */ #include "sun7i-a20-olimex-som-evb.dts" +#include "sun7i-a20-hdmi.dtsi" / { soc@01c00000 { - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; + hdmi@01c16000 { + status = "okay"; + }; + + hdmiaudio { + status = "okay"; }; }; }; diff --git a/sys/boot/fdt/dts/arm/olinuxino-lime.dts b/sys/boot/fdt/dts/arm/olinuxino-lime.dts index b965788..cd39f66 100644 --- a/sys/boot/fdt/dts/arm/olinuxino-lime.dts +++ b/sys/boot/fdt/dts/arm/olinuxino-lime.dts @@ -27,14 +27,3 @@ */ #include "sun4i-a10-olinuxino-lime.dts" - -/ { - soc@01c00000 { - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - }; -}; diff --git a/sys/boot/fdt/dts/arm/sun4i-a10.dtsi b/sys/boot/fdt/dts/arm/sun4i-a10.dtsi deleted file mode 100644 index 417ea22..0000000 --- a/sys/boot/fdt/dts/arm/sun4i-a10.dtsi +++ /dev/null @@ -1,153 +0,0 @@ -/*- - * Copyright (c) 2014 Ganbold Tsagaankhuu <ganbold@freebsd.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include <dt-bindings/pinctrl/sun4i-a10.h> - -/ { - compatible = "allwinner,sun4i-a10"; - #address-cells = <1>; - #size-cells = <1>; - - interrupt-parent = <&AINTC>; - - aliases { - soc = &SOC; - }; - - SOC: a10 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "simple-bus"; - ranges; - bus-frequency = <0>; - - AINTC: interrupt-controller@01c20400 { - compatible = "allwinner,sun4i-a10-ic"; - interrupt-controller; - #address-cells = <0>; - #interrupt-cells = <1>; - reg = < 0x01c20400 0x400 >; - }; - - sramc@01c00000 { - compatible = "allwinner,sun4i-sramc"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c00000 0x1000 >; - }; - - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - - timer@01c20c00 { - compatible = "allwinner,sun4i-a10-timer"; - reg = <0x01c20c00 0x90>; - interrupts = < 22 >; - interrupt-parent = <&AINTC>; - clock-frequency = < 24000000 >; - }; - - watchdog@01c20c90 { - compatible = "allwinner,sun4i-wdt"; - reg = <0x01c20c90 0x08>; - }; - - - GPIO: gpio@01c20800 { - #gpio-cells = <3>; - compatible = "allwinner,sun4i-a10-pinctrl"; - gpio-controller; - reg =< 0x01c20800 0x400 >; - interrupts = < 28 >; - interrupt-parent = <&AINTC>; - - emac_pins: emac@0 { - allwinner,pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", - "PA7", "PA8", "PA9", "PA10", - "PA11", "PA12", "PA13", "PA14", - "PA15", "PA16"; - allwinner,function = "emac"; - allwinner,drive = <SUN4I_PINCTRL_10_MA>; - allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; - }; - }; - - usb1: usb@01c14000 { - compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; - reg = <0x01c14000 0x1000>; - interrupts = < 39 >; - interrupt-parent = <&AINTC>; - }; - - usb2: usb@01c1c000 { - compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; - reg = <0x01c1c000 0x1000>; - interrupts = < 40 >; - interrupt-parent = <&AINTC>; - }; - - mmc0: mmc@01c0f000 { - compatible = "allwinner,sun4i-a10-mmc"; - reg = <0x01c0f000 0x1000>; - interrupts = <32>; - interrupt-parent = <&AINTC>; - status = "disabled"; - }; - - sata@01c18000 { - compatible = "allwinner,sun4i-a10-ahci"; - reg = <0x01c18000 0x1000>; - interrupts = <56>; - interrupt-parent = <&AINTC>; - status = "disabled"; - }; - - UART0: serial@01c28000 { - compatible = "snps,dw-apb-uart"; - reg = <0x01c28000 0x400>; - reg-shift = <2>; - interrupts = <1>; - interrupt-parent = <&AINTC>; - current-speed = <115200>; - clock-frequency = < 24000000 >; - }; - - emac@01c0b000 { - compatible = "allwinner,sun4i-a10-emac"; - reg = <0x01c0b000 0x1000>; - interrupts = <55>; - interrupt-parent = <&AINTC>; - }; - }; -}; - diff --git a/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi b/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi index 4d4a3c5..2567be5 100644 --- a/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi +++ b/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi @@ -27,10 +27,65 @@ */ / { + clocks { + pll3: clk@01c20010 { + #clock-cells = <1>; + compatible = "allwinner,sun4i-a10-pll3-clk"; + reg = <0x01c20010 0x4>; + clock-output-names = "pll3-1x", "pll3-2x"; + }; + + pll7: clk@01c20030 { + #clock-cells = <1>; + compatible = "allwinner,sun4i-a10-pll3-clk"; + reg = <0x01c20030 0x4>; + clock-output-names = "pll7-1x", "pll7-2x"; + }; + + hdmi_clk: clk@01c20150 { + #clock-cells = <0>; + compatible = "allwinner,sun4i-a10-hdmi-clk"; + reg = <0x01c20150 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll3 1>, <&pll7 1>; + clock-output-names = "hdmi"; + }; + + lcd0_ch0_clk: clk@01c20118 { + #clock-cells = <0>; + #reset-cells = <0>; + compatible = "allwinner,sun4i-a10-lcd-ch0-clk"; + reg = <0x01c20118 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll3 1>, <&pll6 2>; + clock-output-names = "lcd0_ch0"; + }; + + lcd0_ch1_clk: clk@01c2012c { + #clock-cells = <1>; + compatible = "allwinner,sun4i-a10-lcd-ch1-clk"; + reg = <0x01c2012c 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll3 1>, <&pll7 1>; + clock-output-names = "lcd0_ch1_sclk1", + "lcd0_ch1_sclk2"; + }; + + de_be0_clk: clk@01c20104 { + #clock-cells = <0>; + #reset-cells = <0>; + compatible = "allwinner,sun4i-a10-de-be-clk"; + reg = <0x01c20104 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll5 1>; + clock-output-names = "de_be0"; + }; + }; + soc@01c00000 { hdmi: hdmi@01c16000 { compatible = "allwinner,sun7i-a20-hdmi"; reg = <0x01c16000 0x1000>; + clocks = <&ahb_gates 43>, <&hdmi_clk>, + <&lcd0_ch1_clk 1>; + clock-names = "ahb", "hdmi", + "lcd"; status = "disabled"; }; @@ -43,6 +98,14 @@ compatible = "allwinner,sun7i-a20-fb"; reg = <0x01e60000 0x10000>, /* DEBE0 */ <0x01c0c000 0x1000>; /* LCD0 */ + clocks = <&ahb_gates 44>, <&dram_gates 26>, + <&de_be0_clk>, <&ahb_gates 36>, + <&lcd0_ch1_clk 0>, <&lcd0_ch1_clk 1>; + clock-names = "ahb_de_be", "dram_de_be", + "de_be", "ahb_lcd", + "lcd_ch1_sclk1", "lcd_ch1_sclk2"; + resets = <&de_be0_clk>, <&lcd0_ch0_clk>; + reset-names = "de_be", "lcd"; }; }; }; diff --git a/sys/boot/fdt/dts/arm/sun7i-a20.dtsi b/sys/boot/fdt/dts/arm/sun7i-a20.dtsi deleted file mode 100644 index 43c6e4b..0000000 --- a/sys/boot/fdt/dts/arm/sun7i-a20.dtsi +++ /dev/null @@ -1,217 +0,0 @@ -/*- - * Copyright (c) 2014 Ganbold Tsagaankhuu <ganbold@freebsd.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include <dt-bindings/interrupt-controller/arm-gic.h> -#include <dt-bindings/pinctrl/sun4i-a10.h> - -/ { - compatible = "allwinner,sun7i-a20"; - #address-cells = <1>; - #size-cells = <1>; - - interrupt-parent = <&GIC>; - - aliases { - soc = &SOC; - }; - - timer { - compatible = "arm,armv7-timer"; - interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, - <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, - <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, - <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; - }; - - SOC: a20 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "simple-bus"; - ranges; - bus-frequency = <0>; - - GIC: interrupt-controller@01c81000 { - compatible = "arm,gic"; - reg = <0x01c81000 0x1000>, /* Distributor Registers */ - <0x01c82000 0x0100>, /* CPU Interface Registers */ - <0x01c84000 0x2000>, - <0x01c86000 0x2000>; - interrupt-controller; - #interrupt-cells = <3>; - interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; - }; - - sramc@01c00000 { - compatible = "allwinner,sun4i-sramc"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c00000 0x1000 >; - }; - - cpu-cfg@01c25c00 { - compatible = "allwinner,sun7i-cpu-cfg"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c25c00 0x400 >; - }; - - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - - timer@01c20c00 { - compatible = "allwinner,sun4i-a10-timer"; - reg = <0x01c20c00 0x90>; - interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; - interrupt-parent = <&GIC>; - clock-frequency = < 24000000 >; - }; - - watchdog@01c20c90 { - compatible = "allwinner,sun4i-a10-wdt"; - reg = <0x01c20c90 0x10>; - }; - - pio: gpio@01c20800 { - #gpio-cells = <3>; - compatible = "allwinner,sun7i-a20-pinctrl"; - gpio-controller; - reg =< 0x01c20800 0x400 >; - interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; - interrupt-controller; - #interrupt-cells = <2>; - interrupt-parent = <&GIC>; - - gmac_pins_mii: gmac_mii@0 { - allwinner,pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", - "PA7", "PA8", "PA9", "PA10", - "PA11", "PA12", "PA13", "PA14", - "PA15", "PA16"; - allwinner,function = "gmac"; - allwinner,drive = <SUN4I_PINCTRL_10_MA>; - allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; - }; - - gmac_pins_rgmii: gmac_rgmii@0 { - allwinner,pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", - "PA7", "PA8", "PA10", - "PA11", "PA12", "PA13", - "PA15", "PA16"; - allwinner,function = "gmac"; - allwinner,drive = <SUN4I_PINCTRL_40_MA>; - allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; - }; - - }; - - usb1: usb@01c14000 { - compatible = "allwinner,sun7i-a20-ehci", "generic-ehci"; - reg = <0x01c14000 0x1000>; - interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; - interrupt-parent = <&GIC>; - }; - - usb2: usb@01c1c000 { - compatible = "allwinner,sun7i-a20-ehci", "generic-ehci"; - reg = <0x01c1c000 0x1000>; - interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; - interrupt-parent = <&GIC>; - }; - - mmc0: mmc@01c0f000 { - compatible = "allwinner,sun5i-a13-mmc"; - reg = <0x01c0f000 0x1000>; - interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; - status = "disabled"; - }; - - sata@01c18000 { - compatible = "allwinner,sun4i-a10-ahci"; - reg = <0x01c18000 0x1000>; - interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; - interrupt-parent = <&GIC>; - status = "disabled"; - }; - - UART0: serial@01c28000 { - compatible = "snps,dw-apb-uart"; - reg = <0x01c28000 0x400>; - reg-shift = <2>; - interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; - current-speed = <115200>; - clock-frequency = < 24000000 >; - }; - - emac@01c0b000 { - compatible = "allwinner,sun4i-a10-emac"; - reg = <0x01c0b000 0x1000>; - interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; - interrupt-parent = <&GIC>; - status = "disabled"; - }; - - gmac@01c50000 { - compatible = "allwinner,sun7i-a20-gmac"; - reg = <0x01c50000 0x10000>; - interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; - interrupt-parent = <&GIC>; - snps,pbl = <2>; - snps,fixed-burst; - snps,force_sf_dma_mode; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; - }; - - dma: dma-controller@01c02000 { - compatible = "allwinner,sun4i-a10-dma"; - reg = <0x01c02000 0x1000>; - interrupts = <27>; - interrupt-parent = <&GIC>; - }; - - codec: codec@01c22c00 { - compatible = "allwinner,sun7i-a20-codec"; - reg = <0x01c22c00 0x40>; - interrupts = <30>; - interrupt-parent = <&GIC>; - status = "disabled"; - }; - }; -}; - diff --git a/sys/boot/forth/loader.conf.5 b/sys/boot/forth/loader.conf.5 index 0320e98..631250c 100644 --- a/sys/boot/forth/loader.conf.5 +++ b/sys/boot/forth/loader.conf.5 @@ -112,6 +112,31 @@ The name must be a subdirectory of that contains a kernel. .It Ar kernel_options Flags to be passed to the kernel. +.It Ar vfs.root.mountfrom +Specify the root partition to mount. +For example: +.Pp +.Dl vfs.root.mountfrom="ufs:/dev/da0s1a" +.Pp +.Xr loader 8 +automatically calculates the value of this tunable from +.Pa /etc/fstab +from the partition the kernel was loaded from. +The calculated value might be calculated incorrectly when +.Pa /etc/fstab +is not available during +.Xr loader 8 +startup (as during diskless booting from NFS), or if a different +device is desired by the user. +The preferred value can be set in +.Pa /loader.conf . +.Pp +The value can also be overridden from the +.Xr loader 8 +command line. +This is useful for system recovery when +.Pa /etc/fstab +is damaged, lost, or read from the wrong partition. .It Ar password Protect boot menu with a password without interrupting .Ic autoboot diff --git a/sys/boot/geli/geliboot.c b/sys/boot/geli/geliboot.c index becbc5f..df40c3b 100644 --- a/sys/boot/geli/geliboot.c +++ b/sys/boot/geli/geliboot.c @@ -73,30 +73,34 @@ geli_taste(int read_func(void *vdev, void *priv, off_t off, void *buf, size_t bytes), struct dsk *dskp, daddr_t lastsector) { struct g_eli_metadata md; - u_char buf[DEV_BSIZE]; + u_char buf[DEV_GELIBOOT_BSIZE]; int error; + off_t alignsector; - error = read_func(NULL, dskp, (off_t) lastsector * DEV_BSIZE, &buf, - (size_t) DEV_BSIZE); + alignsector = (lastsector * DEV_BSIZE) & + ~(off_t)(DEV_GELIBOOT_BSIZE - 1); + error = read_func(NULL, dskp, alignsector, &buf, DEV_GELIBOOT_BSIZE); if (error != 0) { return (error); } - error = eli_metadata_decode(buf, &md); + /* Extract the last DEV_BSIZE bytes from the block. */ + error = eli_metadata_decode(buf + (DEV_GELIBOOT_BSIZE - DEV_BSIZE), + &md); if (error != 0) { return (error); } - if ((md.md_flags & G_ELI_FLAG_ONETIME)) { - /* Swap device, skip it */ + if (!(md.md_flags & G_ELI_FLAG_GELIBOOT)) { + /* The GELIBOOT feature is not activated */ return (1); } - if (!(md.md_flags & G_ELI_FLAG_BOOT)) { - /* Disk is not GELI boot device, skip it */ + if ((md.md_flags & G_ELI_FLAG_ONETIME)) { + /* Swap device, skip it. */ return (1); } if (md.md_iterations < 0) { - /* XXX TODO: Support loading key files */ - /* Disk does not have a passphrase, skip it */ + /* XXX TODO: Support loading key files. */ + /* Disk does not have a passphrase, skip it. */ return (1); } geli_e = malloc(sizeof(struct geli_entry)); @@ -143,7 +147,7 @@ geli_attach(struct dsk *dskp, const char *passphrase) * Prepare Derived-Key from the user passphrase. */ if (geli_e->md.md_iterations < 0) { - /* XXX TODO: Support loading key files */ + /* XXX TODO: Support loading key files. */ return (1); } else if (geli_e->md.md_iterations == 0) { g_eli_crypto_hmac_update(&ctx, geli_e->md.md_salt, @@ -151,8 +155,8 @@ geli_attach(struct dsk *dskp, const char *passphrase) g_eli_crypto_hmac_update(&ctx, passphrase, strlen(passphrase)); } else if (geli_e->md.md_iterations > 0) { - printf("Calculating GELI Decryption Key disk%dp%d @ %lu " - "iterations...\n", dskp->unit, + printf("Calculating GELI Decryption Key disk%dp%d @ %lu" + " iterations...\n", dskp->unit, (dskp->slice > 0 ? dskp->slice : dskp->part), geli_e->md.md_iterations); u_char dkey[G_ELI_USERKEYLEN]; @@ -193,7 +197,7 @@ geli_attach(struct dsk *dskp, const char *passphrase) } bzero(&mkey, sizeof(mkey)); - /* Initialize the per-sector IV */ + /* Initialize the per-sector IV. */ switch (geli_e->sc.sc_ealgo) { case CRYPTO_AES_XTS: break; @@ -207,7 +211,7 @@ geli_attach(struct dsk *dskp, const char *passphrase) return (0); } - /* Disk not found */ + /* Disk not found. */ return (2); } @@ -229,35 +233,49 @@ geli_read(struct dsk *dskp, off_t offset, u_char *buf, size_t bytes) u_char iv[G_ELI_IVKEYLEN]; u_char *pbuf; int error; - off_t os; + off_t dstoff; uint64_t keyno; - size_t n, nb; + size_t n, nsec, secsize; struct g_eli_key gkey; + pbuf = buf; SLIST_FOREACH_SAFE(geli_e, &geli_head, entries, geli_e_tmp) { if (geli_same_device(geli_e, dskp) != 0) { continue; } - nb = bytes / DEV_BSIZE; - for (n = 0; n < nb; n++) { - os = offset + (n * DEV_BSIZE); - pbuf = buf + (n * DEV_BSIZE); + secsize = geli_e->sc.sc_sectorsize; + nsec = bytes / secsize; + if (nsec == 0) { + /* + * A read of less than the GELI sector size has been + * requested. The caller provided destination buffer may + * not be big enough to boost the read to a full sector, + * so just attempt to decrypt the truncated sector. + */ + secsize = bytes; + nsec = 1; + } + + for (n = 0, dstoff = offset; n < nsec; n++, dstoff += secsize) { - g_eli_crypto_ivgen(&geli_e->sc, os, iv, G_ELI_IVKEYLEN); + g_eli_crypto_ivgen(&geli_e->sc, dstoff, iv, + G_ELI_IVKEYLEN); - /* Get the key that corresponds to this offset */ - keyno = (os >> G_ELI_KEY_SHIFT) / DEV_BSIZE; + /* Get the key that corresponds to this offset. */ + keyno = (dstoff >> G_ELI_KEY_SHIFT) / secsize; g_eli_key_fill(&geli_e->sc, &gkey, keyno); error = geliboot_crypt(geli_e->sc.sc_ealgo, 0, pbuf, - DEV_BSIZE, gkey.gek_key, geli_e->sc.sc_ekeylen, iv); + secsize, gkey.gek_key, + geli_e->sc.sc_ekeylen, iv); if (error != 0) { bzero(&gkey, sizeof(gkey)); printf("Failed to decrypt in geli_read()!"); return (error); } + pbuf += secsize; } bzero(&gkey, sizeof(gkey)); return (0); diff --git a/sys/boot/geli/geliboot.h b/sys/boot/geli/geliboot.h index 36bebcc..61e64f1 100644 --- a/sys/boot/geli/geliboot.h +++ b/sys/boot/geli/geliboot.h @@ -55,6 +55,9 @@ #ifndef DEV_BSIZE #define DEV_BSIZE 512 #endif +#ifndef DEV_GELIBOOT_BSIZE +#define DEV_GELIBOOT_BSIZE 4096 +#endif #ifndef MIN #define MIN(a,b) (((a) < (b)) ? (a) : (b)) diff --git a/sys/boot/i386/libi386/biosdisk.c b/sys/boot/i386/libi386/biosdisk.c index 1c54769..38ca85d 100644 --- a/sys/boot/i386/libi386/biosdisk.c +++ b/sys/boot/i386/libi386/biosdisk.c @@ -706,15 +706,38 @@ bd_read(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest) { #ifdef LOADER_GELI_SUPPORT struct dsk dskp; - off_t p_off; - int err, n; + off_t p_off, diff; + daddr_t alignlba; + int err, n, alignblks; + char *tmpbuf; /* if we already know there is no GELI, skip the rest */ if (geli_status[dev->d_unit][dev->d_slice] != ISGELI_YES) return (bd_io(dev, dblk, blks, dest, 0)); if (geli_status[dev->d_unit][dev->d_slice] == ISGELI_YES) { - err = bd_io(dev, dblk, blks, dest, 0); + /* + * Align reads to DEV_GELIBOOT_BSIZE bytes because partial + * sectors cannot be decrypted. Round the requested LBA down to + * nearest multiple of DEV_GELIBOOT_BSIZE bytes. + */ + alignlba = dblk & + ~(daddr_t)((DEV_GELIBOOT_BSIZE / BIOSDISK_SECSIZE) - 1); + /* + * Round number of blocks to read up to nearest multiple of + * DEV_GELIBOOT_BSIZE + */ + alignblks = blks + (dblk - alignlba) + + ((DEV_GELIBOOT_BSIZE / BIOSDISK_SECSIZE) - 1) & + ~(int)((DEV_GELIBOOT_BSIZE / BIOSDISK_SECSIZE) - 1); + diff = (dblk - alignlba) * BIOSDISK_SECSIZE; + /* + * Use a temporary buffer here because the buffer provided by + * the caller may be too small. + */ + tmpbuf = alloca(alignblks * BIOSDISK_SECSIZE); + + err = bd_io(dev, alignlba, alignblks, tmpbuf, 0); if (err) return (err); @@ -726,13 +749,14 @@ bd_read(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest) dskp.start = dev->d_offset; /* GELI needs the offset relative to the partition start */ - p_off = dblk - dskp.start; + p_off = alignlba - dskp.start; - err = geli_read(&dskp, p_off * BIOSDISK_SECSIZE, dest, - blks * BIOSDISK_SECSIZE); + err = geli_read(&dskp, p_off * BIOSDISK_SECSIZE, tmpbuf, + alignblks * BIOSDISK_SECSIZE); if (err) return (err); + bcopy(tmpbuf + diff, dest, blks * BIOSDISK_SECSIZE); return (0); } #endif /* LOADER_GELI_SUPPORT */ diff --git a/sys/boot/i386/zfsboot/zfsboot.c b/sys/boot/i386/zfsboot/zfsboot.c index 4b371dc..71d6cfa 100644 --- a/sys/boot/i386/zfsboot/zfsboot.c +++ b/sys/boot/i386/zfsboot/zfsboot.c @@ -46,18 +46,20 @@ __FBSDID("$FreeBSD$"); #include "libzfs.h" -#define ARGS 0x900 -#define NOPT 14 -#define NDEV 3 +#define ARGS 0x900 +#define NOPT 14 +#define NDEV 3 -#define BIOS_NUMDRIVES 0x475 -#define DRV_HARD 0x80 -#define DRV_MASK 0x7f +#define BIOS_NUMDRIVES 0x475 +#define DRV_HARD 0x80 +#define DRV_MASK 0x7f -#define TYPE_AD 0 -#define TYPE_DA 1 -#define TYPE_MAXHARD TYPE_DA -#define TYPE_FD 2 +#define TYPE_AD 0 +#define TYPE_DA 1 +#define TYPE_MAXHARD TYPE_DA +#define TYPE_FD 2 + +#define DEV_GELIBOOT_BSIZE 4096 extern uint32_t _end; @@ -104,13 +106,13 @@ static struct bios_smap smap; /* * The minimum amount of memory to reserve in bios_extmem for the heap. */ -#define HEAP_MIN (3 * 1024 * 1024) +#define HEAP_MIN (3 * 1024 * 1024) static char *heap_next; static char *heap_end; /* Buffers that must not span a 64k boundary. */ -#define READ_BUF_SIZE 8192 +#define READ_BUF_SIZE 8192 struct dmadat { char rdbuf[READ_BUF_SIZE]; /* for reading large things */ char secbuf[READ_BUF_SIZE]; /* for MBR/disklabel */ @@ -198,8 +200,9 @@ static int vdev_read(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) { char *p; - daddr_t lba; - unsigned int nb; + daddr_t lba, alignlba; + off_t alignoff, diff; + unsigned int nb, alignnb; struct dsk *dsk = (struct dsk *) priv; if ((off & (DEV_BSIZE - 1)) || (bytes & (DEV_BSIZE - 1))) @@ -208,24 +211,52 @@ vdev_read(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) p = buf; lba = off / DEV_BSIZE; lba += dsk->start; + /* Align reads to 4k else 4k sector GELIs will not decrypt. */ + alignoff = off & ~ (off_t)(DEV_GELIBOOT_BSIZE - 1); + /* Round LBA down to nearest multiple of DEV_GELIBOOT_BSIZE bytes. */ + alignlba = alignoff / DEV_BSIZE; + /* + * The read must be aligned to DEV_GELIBOOT_BSIZE bytes relative to the + * start of the GELI partition, not the start of the actual disk. + */ + alignlba += dsk->start; + diff = (lba - alignlba) * DEV_BSIZE; + while (bytes > 0) { nb = bytes / DEV_BSIZE; if (nb > READ_BUF_SIZE / DEV_BSIZE) nb = READ_BUF_SIZE / DEV_BSIZE; - if (drvread(dsk, dmadat->rdbuf, lba, nb)) + /* + * Ensure that the read size plus the leading offset does not + * exceed the size of the read buffer. + */ + if (nb * DEV_BSIZE + diff > READ_BUF_SIZE) + nb -= diff / DEV_BSIZE; + /* + * Round the number of blocks to read up to the nearest multiple + * of DEV_GELIBOOT_BSIZE. + */ + alignnb = nb + (diff / DEV_BSIZE) + + (DEV_GELIBOOT_BSIZE / DEV_BSIZE - 1) & ~ + (unsigned int)(DEV_GELIBOOT_BSIZE / DEV_BSIZE - 1); + + if (drvread(dsk, dmadat->rdbuf, alignlba, alignnb)) return -1; #ifdef LOADER_GELI_SUPPORT /* decrypt */ if (is_geli(dsk) == 0) { - if (geli_read(dsk, ((lba - dsk->start) * DEV_BSIZE), - dmadat->rdbuf, nb * DEV_BSIZE)) - return (-1); + if (geli_read(dsk, ((alignlba - dsk->start) * + DEV_BSIZE), dmadat->rdbuf, alignnb * DEV_BSIZE)) + return (-1); } #endif - memcpy(p, dmadat->rdbuf, nb * DEV_BSIZE); + memcpy(p, dmadat->rdbuf + diff, nb * DEV_BSIZE); p += nb * DEV_BSIZE; lba += nb; + alignlba += alignnb; bytes -= nb * DEV_BSIZE; + /* Don't need the leading offset after the first block. */ + diff = 0; } return 0; diff --git a/sys/boot/userboot/test/test.c b/sys/boot/userboot/test/test.c index d5707de..bf64e90 100644 --- a/sys/boot/userboot/test/test.c +++ b/sys/boot/userboot/test/test.c @@ -273,7 +273,7 @@ test_diskioctl(void *arg, int unit, u_long cmd, void *data) break; default: return (ENOTTY); - }; + } return (0); } diff --git a/sys/boot/userboot/userboot/elf64_freebsd.c b/sys/boot/userboot/userboot/elf64_freebsd.c index 36129ef..19d369d 100644 --- a/sys/boot/userboot/userboot/elf64_freebsd.c +++ b/sys/boot/userboot/userboot/elf64_freebsd.c @@ -141,7 +141,7 @@ elf64_exec(struct preloaded_file *fp) dev_cleanup(); - stack[0] = 0; /* return address */; + stack[0] = 0; /* return address */ stack[1] = modulep; stack[2] = kernend; CALLBACK(copyin, stack, 0x1000, sizeof(stack)); diff --git a/sys/cam/ctl/ctl_ha.c b/sys/cam/ctl/ctl_ha.c index 57466ec..f1f5b8c 100644 --- a/sys/cam/ctl/ctl_ha.c +++ b/sys/cam/ctl/ctl_ha.c @@ -356,7 +356,7 @@ ctl_ha_send(struct ha_softc *softc) printf("%s: sosend() error %d\n", __func__, error); return; } - }; + } } static void diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h index f2b4b21..997a58c 100644 --- a/sys/cam/scsi/scsi_all.h +++ b/sys/cam/scsi/scsi_all.h @@ -2291,6 +2291,8 @@ struct scsi_vpd_id_descriptor #define SVPD_ID_TYPE_LUNGRP 0x06 #define SVPD_ID_TYPE_MD5_LUN_ID 0x07 #define SVPD_ID_TYPE_SCSI_NAME 0x08 +#define SVPD_ID_TYPE_PROTO 0x09 +#define SVPD_ID_TYPE_UUID 0x0a #define SVPD_ID_TYPE_MASK 0x0f u_int8_t reserved; u_int8_t length; diff --git a/sys/cam/scsi/scsi_ch.c b/sys/cam/scsi/scsi_ch.c index 8e069db..59ec6aa 100644 --- a/sys/cam/scsi/scsi_ch.c +++ b/sys/cam/scsi/scsi_ch.c @@ -648,10 +648,14 @@ chdone(struct cam_periph *periph, union ccb *done_ccb) softc->sc_counts[CHET_IE], PLURAL(softc->sc_counts[CHET_IE])); #undef PLURAL + if (announce_buf[0] != '\0') { + xpt_announce_periph(periph, announce_buf); + xpt_announce_quirks(periph, softc->quirks, + CH_Q_BIT_STRING); + } } else { int error; - announce_buf[0] = '\0'; error = cherror(done_ccb, CAM_RETRY_SELTO, SF_RETRY_UA | SF_NO_PRINT); /* @@ -715,14 +719,8 @@ chdone(struct cam_periph *periph, union ccb *done_ccb) cam_periph_invalidate(periph); - announce_buf[0] = '\0'; } } - if (announce_buf[0] != '\0') { - xpt_announce_periph(periph, announce_buf); - xpt_announce_quirks(periph, softc->quirks, - CH_Q_BIT_STRING); - } softc->state = CH_STATE_NORMAL; free(mode_header, M_SCSICH); /* diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c index 7ec7dfd..0012975 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c +++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c @@ -117,6 +117,7 @@ #include <sys/ctype.h> #include <sys/eventhandler.h> #include <sys/limits.h> +#include <sys/linker.h> #include <sys/kdb.h> #include <sys/kernel.h> #include <sys/malloc.h> @@ -11916,6 +11917,21 @@ dtrace_buffer_activate(dtrace_state_t *state) dtrace_interrupt_enable(cookie); } +#ifdef __FreeBSD__ +/* + * Activate the specified per-CPU buffer. This is used instead of + * dtrace_buffer_activate() when APs have not yet started, i.e. when + * activating anonymous state. + */ +static void +dtrace_buffer_activate_cpu(dtrace_state_t *state, int cpu) +{ + + if (state->dts_buffer[cpu].dtb_tomax != NULL) + state->dts_buffer[cpu].dtb_flags &= ~DTRACEBUF_INACTIVE; +} +#endif + static int dtrace_buffer_alloc(dtrace_buffer_t *bufs, size_t size, int flags, processorid_t cpu, int *factor) @@ -12532,9 +12548,15 @@ dtrace_enabling_dump(dtrace_enabling_t *enab) for (i = 0; i < enab->dten_ndesc; i++) { dtrace_probedesc_t *desc = &enab->dten_desc[i]->dted_probe; +#ifdef __FreeBSD__ + printf("dtrace: enabling probe %d (%s:%s:%s:%s)\n", i, + desc->dtpd_provider, desc->dtpd_mod, + desc->dtpd_func, desc->dtpd_name); +#else cmn_err(CE_NOTE, "enabling probe %d (%s:%s:%s:%s)", i, desc->dtpd_provider, desc->dtpd_mod, desc->dtpd_func, desc->dtpd_name); +#endif } } @@ -13185,19 +13207,91 @@ dtrace_dof_char(char c) return (c - 'a' + 10); } /* Should not reach here. */ - return (0); + return (UCHAR_MAX); } #endif /* __FreeBSD__ */ static dof_hdr_t * dtrace_dof_property(const char *name) { +#ifdef __FreeBSD__ + uint8_t *dofbuf; + u_char *data, *eol; + caddr_t doffile; + size_t bytes, len, i; + dof_hdr_t *dof; + u_char c1, c2; + + dof = NULL; + + doffile = preload_search_by_type("dtrace_dof"); + if (doffile == NULL) + return (NULL); + + data = preload_fetch_addr(doffile); + len = preload_fetch_size(doffile); + for (;;) { + /* Look for the end of the line. All lines end in a newline. */ + eol = memchr(data, '\n', len); + if (eol == NULL) + return (NULL); + + if (strncmp(name, data, strlen(name)) == 0) + break; + + eol++; /* skip past the newline */ + len -= eol - data; + data = eol; + } + + /* We've found the data corresponding to the specified key. */ + + data += strlen(name) + 1; /* skip past the '=' */ + len = eol - data; + bytes = len / 2; + + if (bytes < sizeof(dof_hdr_t)) { + dtrace_dof_error(NULL, "truncated header"); + goto doferr; + } + + /* + * Each byte is represented by the two ASCII characters in its hex + * representation. + */ + dofbuf = malloc(bytes, M_SOLARIS, M_WAITOK); + for (i = 0; i < bytes; i++) { + c1 = dtrace_dof_char(data[i * 2]); + c2 = dtrace_dof_char(data[i * 2 + 1]); + if (c1 == UCHAR_MAX || c2 == UCHAR_MAX) { + dtrace_dof_error(NULL, "invalid hex char in DOF"); + goto doferr; + } + dofbuf[i] = c1 * 16 + c2; + } + + dof = (dof_hdr_t *)dofbuf; + if (bytes < dof->dofh_loadsz) { + dtrace_dof_error(NULL, "truncated DOF"); + goto doferr; + } + + if (dof->dofh_loadsz >= dtrace_dof_maxsize) { + dtrace_dof_error(NULL, "oversized DOF"); + goto doferr; + } + + return (dof); + +doferr: + free(dof, M_SOLARIS); + return (NULL); +#else /* __FreeBSD__ */ uchar_t *buf; uint64_t loadsz; unsigned int len, i; dof_hdr_t *dof; -#ifdef illumos /* * Unfortunately, array of values in .conf files are always (and * only) interpreted to be integer arrays. We must read our DOF @@ -13231,49 +13325,9 @@ dtrace_dof_property(const char *name) dof = kmem_alloc(loadsz, KM_SLEEP); bcopy(buf, dof, loadsz); ddi_prop_free(buf); -#else - char *p; - char *p_env; - - if ((p_env = kern_getenv(name)) == NULL) - return (NULL); - - len = strlen(p_env) / 2; - - buf = kmem_alloc(len, KM_SLEEP); - - dof = (dof_hdr_t *) buf; - - p = p_env; - - for (i = 0; i < len; i++) { - buf[i] = (dtrace_dof_char(p[0]) << 4) | - dtrace_dof_char(p[1]); - p += 2; - } - - freeenv(p_env); - - if (len < sizeof (dof_hdr_t)) { - kmem_free(buf, 0); - dtrace_dof_error(NULL, "truncated header"); - return (NULL); - } - - if (len < (loadsz = dof->dofh_loadsz)) { - kmem_free(buf, 0); - dtrace_dof_error(NULL, "truncated DOF"); - return (NULL); - } - - if (loadsz >= dtrace_dof_maxsize) { - kmem_free(buf, 0); - dtrace_dof_error(NULL, "oversized DOF"); - return (NULL); - } -#endif return (dof); +#endif /* !__FreeBSD__ */ } static void @@ -14332,7 +14386,7 @@ static dtrace_state_t * #ifdef illumos dtrace_state_create(dev_t *devp, cred_t *cr) #else -dtrace_state_create(struct cdev *dev) +dtrace_state_create(struct cdev *dev, struct ucred *cred __unused) #endif { #ifdef illumos @@ -14945,6 +14999,18 @@ dtrace_state_go(dtrace_state_t *state, processorid_t *cpu) if (state->dts_activity == DTRACE_ACTIVITY_WARMUP) state->dts_activity = DTRACE_ACTIVITY_ACTIVE; +#ifdef __FreeBSD__ + /* + * We enable anonymous tracing before APs are started, so we must + * activate buffers using the current CPU. + */ + if (state == dtrace_anon.dta_state) + for (int i = 0; i < NCPU; i++) + dtrace_buffer_activate_cpu(state, i); + else + dtrace_xcall(DTRACE_CPUALL, + (dtrace_xcall_t)dtrace_buffer_activate, state); +#else /* * Regardless of whether or not now we're in ACTIVE or DRAINING, we * want each CPU to transition its principal buffer out of the @@ -14955,6 +15021,7 @@ dtrace_state_go(dtrace_state_t *state, processorid_t *cpu) */ dtrace_xcall(DTRACE_CPUALL, (dtrace_xcall_t)dtrace_buffer_activate, state); +#endif goto out; err: @@ -15316,11 +15383,7 @@ dtrace_anon_property(void) * If we haven't allocated an anonymous state, we'll do so now. */ if ((state = dtrace_anon.dta_state) == NULL) { -#ifdef illumos state = dtrace_state_create(NULL, NULL); -#else - state = dtrace_state_create(NULL); -#endif dtrace_anon.dta_state = state; if (state == NULL) { @@ -17001,7 +17064,7 @@ dtrace_open(struct cdev *dev, int oflags, int devtype, struct thread *td) state = dtrace_state_create(devp, cred_p); #else - state = dtrace_state_create(dev); + state = dtrace_state_create(dev, NULL); devfs_set_cdevpriv(state, dtrace_dtr); #endif diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c index f944903..534dfb2 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c @@ -132,6 +132,7 @@ #include <sys/multilist.h> #ifdef _KERNEL #include <sys/dnlc.h> +#include <sys/racct.h> #endif #include <sys/callb.h> #include <sys/kstat.h> @@ -4503,6 +4504,14 @@ top: demand, prefetch, !HDR_ISTYPE_METADATA(hdr), data, metadata, misses); #ifdef _KERNEL +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_force(curproc, RACCT_READBPS, size); + racct_add_force(curproc, RACCT_READIOPS, 1); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; #endif diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c index b60236f..af8d366 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c @@ -47,6 +47,7 @@ #include <sys/sa.h> #include <sys/zfeature.h> #ifdef _KERNEL +#include <sys/racct.h> #include <sys/vm.h> #include <sys/zfs_znode.h> #endif @@ -427,6 +428,15 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length, } dbp = kmem_zalloc(sizeof (dmu_buf_t *) * nblks, KM_SLEEP); +#if defined(_KERNEL) && defined(RACCT) + if (racct_enable && !read) { + PROC_LOCK(curproc); + racct_add_force(curproc, RACCT_WRITEBPS, length); + racct_add_force(curproc, RACCT_WRITEIOPS, nblks); + PROC_UNLOCK(curproc); + } +#endif + zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); blkid = dbuf_whichblock(dn, 0, offset); for (i = 0; i < nblks; i++) { @@ -1422,7 +1432,15 @@ dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, arc_buf_t *buf, DBUF_GET_BUFC_TYPE(db) == ARC_BUFC_DATA) { #ifdef _KERNEL curthread->td_ru.ru_oublock++; -#endif +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_force(curproc, RACCT_WRITEBPS, blksz); + racct_add_force(curproc, RACCT_WRITEIOPS, 1); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ +#endif /* _KERNEL */ dbuf_assign_arcbuf(db, buf, tx); dbuf_rele(db, FTAG); } else { diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c index 30a0710..95e741f 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c @@ -48,7 +48,7 @@ #include <sys/zil_impl.h> #include <sys/dsl_userhold.h> -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && defined(_KERNEL) #include <sys/sysctl.h> #include <sys/types.h> #endif @@ -132,7 +132,7 @@ int zfs_delay_min_dirty_percent = 60; uint64_t zfs_delay_scale = 1000 * 1000 * 1000 / 2000; -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && defined(_KERNEL) extern int zfs_vdev_async_write_active_max_dirty_percent; diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c index f69a5e7..2e039ed 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c @@ -929,7 +929,7 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) * than the other taskqs. */ if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE) - pri--; + pri++; tq = taskq_create_proc(name, value, pri, 50, INT_MAX, spa->spa_proc, flags); diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c index 6080594..63350b3 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c @@ -55,6 +55,11 @@ #include "zfs_prop.h" #include <sys/zfeature.h> +#if defined(__FreeBSD__) && defined(_KERNEL) +#include <sys/types.h> +#include <sys/sysctl.h> +#endif + /* * SPA locking * @@ -255,35 +260,6 @@ int zfs_flags = 0; * in leaked space, or worse. */ boolean_t zfs_recover = B_FALSE; -SYSCTL_DECL(_vfs_zfs); -SYSCTL_INT(_vfs_zfs, OID_AUTO, recover, CTLFLAG_RWTUN, &zfs_recover, 0, - "Try to recover from otherwise-fatal errors."); - -static int -sysctl_vfs_zfs_debug_flags(SYSCTL_HANDLER_ARGS) -{ - int err, val; - - val = zfs_flags; - err = sysctl_handle_int(oidp, &val, 0, req); - if (err != 0 || req->newptr == NULL) - return (err); - - /* - * ZFS_DEBUG_MODIFY must be enabled prior to boot so all - * arc buffers in the system have the necessary additional - * checksum data. However, it is safe to disable at any - * time. - */ - if (!(zfs_flags & ZFS_DEBUG_MODIFY)) - val &= ~ZFS_DEBUG_MODIFY; - zfs_flags = val; - - return (0); -} -SYSCTL_PROC(_vfs_zfs, OID_AUTO, debug_flags, - CTLTYPE_UINT | CTLFLAG_MPSAFE | CTLFLAG_RWTUN, 0, sizeof(int), - sysctl_vfs_zfs_debug_flags, "IU", "Debug flags for ZFS testing."); /* * If destroy encounters an EIO while reading metadata (e.g. indirect @@ -325,26 +301,18 @@ boolean_t zfs_free_leak_on_eio = B_FALSE; * in a system panic. */ uint64_t zfs_deadman_synctime_ms = 1000000ULL; -SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_synctime_ms, CTLFLAG_RDTUN, - &zfs_deadman_synctime_ms, 0, - "Stalled ZFS I/O expiration time in milliseconds"); /* * Check time in milliseconds. This defines the frequency at which we check * for hung I/O. */ uint64_t zfs_deadman_checktime_ms = 5000ULL; -SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_checktime_ms, CTLFLAG_RDTUN, - &zfs_deadman_checktime_ms, 0, - "Period of checks for stalled ZFS I/O in milliseconds"); /* * Default value of -1 for zfs_deadman_enabled is resolved in * zfs_deadman_init() */ int zfs_deadman_enabled = -1; -SYSCTL_INT(_vfs_zfs, OID_AUTO, deadman_enabled, CTLFLAG_RDTUN, - &zfs_deadman_enabled, 0, "Kernel panic on stalled ZFS I/O"); /* * The worst case is single-sector max-parity RAID-Z blocks, in which @@ -356,8 +324,50 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, deadman_enabled, CTLFLAG_RDTUN, * (VDEV_RAIDZ_MAXPARITY + 1) * SPA_DVAS_PER_BP * 2 == 24 */ int spa_asize_inflation = 24; + +#if defined(__FreeBSD__) && defined(_KERNEL) +SYSCTL_DECL(_vfs_zfs); +SYSCTL_INT(_vfs_zfs, OID_AUTO, recover, CTLFLAG_RWTUN, &zfs_recover, 0, + "Try to recover from otherwise-fatal errors."); + +static int +sysctl_vfs_zfs_debug_flags(SYSCTL_HANDLER_ARGS) +{ + int err, val; + + val = zfs_flags; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + /* + * ZFS_DEBUG_MODIFY must be enabled prior to boot so all + * arc buffers in the system have the necessary additional + * checksum data. However, it is safe to disable at any + * time. + */ + if (!(zfs_flags & ZFS_DEBUG_MODIFY)) + val &= ~ZFS_DEBUG_MODIFY; + zfs_flags = val; + + return (0); +} + +SYSCTL_PROC(_vfs_zfs, OID_AUTO, debug_flags, + CTLTYPE_UINT | CTLFLAG_MPSAFE | CTLFLAG_RWTUN, 0, sizeof(int), + sysctl_vfs_zfs_debug_flags, "IU", "Debug flags for ZFS testing."); + +SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_synctime_ms, CTLFLAG_RDTUN, + &zfs_deadman_synctime_ms, 0, + "Stalled ZFS I/O expiration time in milliseconds"); +SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_checktime_ms, CTLFLAG_RDTUN, + &zfs_deadman_checktime_ms, 0, + "Period of checks for stalled ZFS I/O in milliseconds"); +SYSCTL_INT(_vfs_zfs, OID_AUTO, deadman_enabled, CTLFLAG_RDTUN, + &zfs_deadman_enabled, 0, "Kernel panic on stalled ZFS I/O"); SYSCTL_INT(_vfs_zfs, OID_AUTO, spa_asize_inflation, CTLFLAG_RWTUN, &spa_asize_inflation, 0, "Worst case inflation factor for single sector writes"); +#endif #ifndef illumos #ifdef _KERNEL diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c index 1fd9623..f459655 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c @@ -679,7 +679,15 @@ vdev_geom_open_by_path(vdev_t *vd, int check_guid) g_topology_unlock(); vdev_geom_read_guids(cp, &pguid, &vguid); g_topology_lock(); - if (pguid != spa_guid(vd->vdev_spa) || + /* + * Check that the label's vdev guid matches the + * desired guid. If the label has a pool guid, + * check that it matches too. (Inactive spares + * and L2ARCs do not have any pool guid in the + * label.) + */ + if ((pguid != 0 && + pguid != spa_guid(vd->vdev_spa)) || vguid != vd->vdev_guid) { vdev_geom_close_locked(vd); cp = NULL; diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c index 05e16ba..6dc0ad3 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c @@ -128,11 +128,13 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, sync_pass_rewrite, CTLFLAG_RDTUN, boolean_t zio_requeue_io_start_cut_in_line = B_TRUE; +#ifdef illumos #ifdef ZFS_DEBUG int zio_buf_debug_limit = 16384; #else int zio_buf_debug_limit = 0; #endif +#endif void zio_init(void) @@ -154,7 +156,7 @@ zio_init(void) size_t size = (c + 1) << SPA_MINBLOCKSHIFT; size_t p2 = size; size_t align = 0; - size_t cflags = (size > zio_buf_debug_limit) ? KMC_NODEBUG : 0; + int cflags = zio_exclude_metadata ? KMC_NODEBUG : 0; while (!ISP2(p2)) p2 &= p2 - 1; diff --git a/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h b/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h index 3818616..7c25ddd 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h +++ b/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h @@ -785,6 +785,10 @@ typedef struct ddt_histogram { #define ZFS_DRIVER "zfs" #define ZFS_DEV_NAME "zfs" #define ZFS_DEV "/dev/" ZFS_DEV_NAME +#define ZFS_DISK_ROOT "/dev/dsk" +#define ZFS_DISK_ROOTD ZFS_DISK_ROOT "/" +#define ZFS_RDISK_ROOT "/dev/rdsk" +#define ZFS_RDISK_ROOTD ZFS_RDISK_ROOT "/" /* general zvol path */ #define ZVOL_DIR "/dev/zvol" diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c index 3d7e044..442367f 100644 --- a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c +++ b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c @@ -57,6 +57,7 @@ */ #define MAX_FUNCTION_SIZE 0x10000 #define MAX_PROLOGUE_SIZE 0x100 +#define MAX_USTACK_DEPTH 2048 uint8_t dtrace_fuword8_nocheck(void *); uint16_t dtrace_fuword16_nocheck(void *); @@ -111,11 +112,127 @@ dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes, } } +static int +dtrace_getustack_common(uint64_t *pcstack, int pcstack_limit, uintptr_t pc, + uintptr_t fp) +{ + volatile uint16_t *flags = + (volatile uint16_t *)&cpu_core[curcpu].cpuc_dtrace_flags; + int ret = 0; + uintptr_t oldfp; + + ASSERT(pcstack == NULL || pcstack_limit > 0); + + while (pc != 0) { + /* + * We limit the number of times we can go around this + * loop to account for a circular stack. + */ + if (ret++ >= MAX_USTACK_DEPTH) { + *flags |= CPU_DTRACE_BADSTACK; + cpu_core[curcpu].cpuc_dtrace_illval = fp; + break; + } + + if (pcstack != NULL) { + *pcstack++ = (uint64_t)pc; + pcstack_limit--; + if (pcstack_limit <= 0) + break; + } + + if (fp == 0) + break; + + pc = dtrace_fuword64((void *)(fp + + offsetof(struct arm64_frame, f_retaddr))); + fp = dtrace_fuword64((void *)fp); + + if (fp == oldfp) { + *flags |= CPU_DTRACE_BADSTACK; + cpu_core[curcpu].cpuc_dtrace_illval = fp; + break; + } + + /* + * ARM64TODO: + * This workaround might not be necessary. It needs to be + * revised and removed from all architectures if found + * unwanted. Leaving the original x86 comment for reference. + * + * This is totally bogus: if we faulted, we're going to clear + * the fault and break. This is to deal with the apparently + * broken Java stacks on x86. + */ + if (*flags & CPU_DTRACE_FAULT) { + *flags &= ~CPU_DTRACE_FAULT; + break; + } + } + + return (ret); +} + void dtrace_getupcstack(uint64_t *pcstack, int pcstack_limit) { + proc_t *p = curproc; + struct trapframe *tf; + uintptr_t pc, sp, fp; + volatile uint16_t *flags = + (volatile uint16_t *)&cpu_core[curcpu].cpuc_dtrace_flags; + int n; - printf("IMPLEMENT ME: %s\n", __func__); + if (*flags & CPU_DTRACE_FAULT) + return; + + if (pcstack_limit <= 0) + return; + + /* + * If there's no user context we still need to zero the stack. + */ + if (p == NULL || (tf = curthread->td_frame) == NULL) + goto zero; + + *pcstack++ = (uint64_t)p->p_pid; + pcstack_limit--; + + if (pcstack_limit <= 0) + return; + + pc = tf->tf_elr; + sp = tf->tf_sp; + fp = tf->tf_x[29]; + + if (DTRACE_CPUFLAG_ISSET(CPU_DTRACE_ENTRY)) { + /* + * In an entry probe. The frame pointer has not yet been + * pushed (that happens in the function prologue). The + * best approach is to add the current pc as a missing top + * of stack and back the pc up to the caller, which is stored + * at the current stack pointer address since the call + * instruction puts it there right before the branch. + */ + + *pcstack++ = (uint64_t)pc; + pcstack_limit--; + if (pcstack_limit <= 0) + return; + + pc = tf->tf_lr; + } + + n = dtrace_getustack_common(pcstack, pcstack_limit, pc, fp); + ASSERT(n >= 0); + ASSERT(n <= pcstack_limit); + + pcstack += n; + pcstack_limit -= n; + +zero: + while (pcstack_limit-- > 0) + *pcstack++ = 0; } int diff --git a/sys/cddl/dev/dtrace/amd64/dtrace_subr.c b/sys/cddl/dev/dtrace/amd64/dtrace_subr.c index f6577d5..2a26b65 100644 --- a/sys/cddl/dev/dtrace/amd64/dtrace_subr.c +++ b/sys/cddl/dev/dtrace/amd64/dtrace_subr.c @@ -246,24 +246,14 @@ static uint64_t nsec_scale; /* See below for the explanation of this macro. */ #define SCALE_SHIFT 28 +/* + * Get the frequency and scale factor as early as possible so that they can be + * used for boot-time tracing. + */ static void -dtrace_gethrtime_init_cpu(void *arg) -{ - uintptr_t cpu = (uintptr_t) arg; - - if (cpu == curcpu) - tgt_cpu_tsc = rdtsc(); - else - hst_cpu_tsc = rdtsc(); -} - -static void -dtrace_gethrtime_init(void *arg) +dtrace_gethrtime_init_early(void *arg) { - struct pcpu *pc; uint64_t tsc_f; - cpuset_t map; - int i; /* * Get TSC frequency known at this moment. @@ -279,7 +269,8 @@ dtrace_gethrtime_init(void *arg) * another 32-bit integer without overflowing 64-bit. * Thus minimum supported TSC frequency is 62.5MHz. */ - KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), ("TSC frequency is too low")); + KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), + ("TSC frequency is too low")); /* * We scale up NANOSEC/tsc_f ratio to preserve as much precision @@ -291,6 +282,27 @@ dtrace_gethrtime_init(void *arg) * (terahertz) values; */ nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f; +} +SYSINIT(dtrace_gethrtime_init_early, SI_SUB_CPU, SI_ORDER_ANY, + dtrace_gethrtime_init_early, NULL); + +static void +dtrace_gethrtime_init_cpu(void *arg) +{ + uintptr_t cpu = (uintptr_t) arg; + + if (cpu == curcpu) + tgt_cpu_tsc = rdtsc(); + else + hst_cpu_tsc = rdtsc(); +} + +static void +dtrace_gethrtime_init(void *arg) +{ + struct pcpu *pc; + cpuset_t map; + int i; /* The current CPU is the reference one. */ sched_pin(); @@ -311,8 +323,8 @@ dtrace_gethrtime_init(void *arg) } sched_unpin(); } - -SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, NULL); +SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, + NULL); /* * DTrace needs a high resolution time function which can diff --git a/sys/cddl/dev/dtrace/i386/dtrace_subr.c b/sys/cddl/dev/dtrace/i386/dtrace_subr.c index be5bd4b..daca7dd 100644 --- a/sys/cddl/dev/dtrace/i386/dtrace_subr.c +++ b/sys/cddl/dev/dtrace/i386/dtrace_subr.c @@ -248,24 +248,14 @@ static uint64_t nsec_scale; /* See below for the explanation of this macro. */ #define SCALE_SHIFT 28 +/* + * Get the frequency and scale factor as early as possible so that they can be + * used for boot-time tracing. + */ static void -dtrace_gethrtime_init_cpu(void *arg) -{ - uintptr_t cpu = (uintptr_t) arg; - - if (cpu == curcpu) - tgt_cpu_tsc = rdtsc(); - else - hst_cpu_tsc = rdtsc(); -} - -static void -dtrace_gethrtime_init(void *arg) +dtrace_gethrtime_init_early(void *arg) { - cpuset_t map; - struct pcpu *pc; uint64_t tsc_f; - int i; /* * Get TSC frequency known at this moment. @@ -281,7 +271,8 @@ dtrace_gethrtime_init(void *arg) * another 32-bit integer without overflowing 64-bit. * Thus minimum supported TSC frequency is 62.5MHz. */ - KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), ("TSC frequency is too low")); + KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), + ("TSC frequency is too low")); /* * We scale up NANOSEC/tsc_f ratio to preserve as much precision @@ -293,6 +284,27 @@ dtrace_gethrtime_init(void *arg) * (terahertz) values; */ nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f; +} +SYSINIT(dtrace_gethrtime_init_early, SI_SUB_CPU, SI_ORDER_ANY, + dtrace_gethrtime_init_early, NULL); + +static void +dtrace_gethrtime_init_cpu(void *arg) +{ + uintptr_t cpu = (uintptr_t) arg; + + if (cpu == curcpu) + tgt_cpu_tsc = rdtsc(); + else + hst_cpu_tsc = rdtsc(); +} + +static void +dtrace_gethrtime_init(void *arg) +{ + cpuset_t map; + struct pcpu *pc; + int i; /* The current CPU is the reference one. */ sched_pin(); @@ -313,8 +325,8 @@ dtrace_gethrtime_init(void *arg) } sched_unpin(); } - -SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, NULL); +SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, + NULL); /* * DTrace needs a high resolution time function which can diff --git a/sys/cddl/dev/sdt/sdt.c b/sys/cddl/dev/sdt/sdt.c index 4e5dd71..cef816f 100644 --- a/sys/cddl/dev/sdt/sdt.c +++ b/sys/cddl/dev/sdt/sdt.c @@ -384,28 +384,20 @@ sdt_unload() static int sdt_modevent(module_t mod __unused, int type, void *data __unused) { - int error = 0; switch (type) { case MOD_LOAD: - sdt_load(); - break; - case MOD_UNLOAD: - error = sdt_unload(); - break; - case MOD_SHUTDOWN: - break; - + return (0); default: - error = EOPNOTSUPP; - break; + return (EOPNOTSUPP); } - - return (error); } +SYSINIT(sdt_load, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, sdt_load, NULL); +SYSUNINIT(sdt_unload, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, sdt_unload, NULL); + DEV_MODULE(sdt, sdt_modevent, NULL); MODULE_VERSION(sdt, 1); MODULE_DEPEND(sdt, dtrace, 1, 1, 1); diff --git a/sys/compat/cloudabi64/cloudabi64_module.c b/sys/compat/cloudabi64/cloudabi64_module.c index de890bc..246a887 100644 --- a/sys/compat/cloudabi64/cloudabi64_module.c +++ b/sys/compat/cloudabi64/cloudabi64_module.c @@ -112,7 +112,13 @@ cloudabi64_fixup(register_t **stack_base, struct image_params *imgp) { .a_type = CLOUDABI_AT_NULL }, }; *stack_base -= howmany(sizeof(auxv), sizeof(register_t)); - return (copyout(auxv, *stack_base, sizeof(auxv))); + error = copyout(auxv, *stack_base, sizeof(auxv)); + if (error != 0) + return (error); + + /* Reserve space for storing the TCB. */ + *stack_base -= howmany(sizeof(cloudabi64_tcb_t), sizeof(register_t)); + return (0); } static int diff --git a/sys/compat/cloudabi64/cloudabi64_thread.c b/sys/compat/cloudabi64/cloudabi64_thread.c index 51961f8..429ad33 100644 --- a/sys/compat/cloudabi64/cloudabi64_thread.c +++ b/sys/compat/cloudabi64/cloudabi64_thread.c @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); struct thread_create_args { cloudabi64_threadattr_t attr; + uint64_t tcb; lwpid_t tid; }; @@ -49,8 +50,7 @@ initialize_thread(struct thread *td, void *thunk) args->tid = td->td_tid; /* Set up initial register contents. */ - cloudabi64_thread_setregs(td, &args->attr); - return (0); + return (cloudabi64_thread_setregs(td, &args->attr, args->tcb)); } int @@ -63,6 +63,12 @@ cloudabi64_sys_thread_create(struct thread *td, error = copyin(uap->attr, &args.attr, sizeof(args.attr)); if (error != 0) return (error); + + /* Remove some space on the top of the stack for the TCB. */ + args.tcb = rounddown(args.attr.stack + args.attr.stack_size - + sizeof(cloudabi64_tcb_t), _Alignof(cloudabi64_tcb_t)); + args.attr.stack_size = args.tcb - args.attr.stack; + error = thread_create(td, NULL, initialize_thread, &args); if (error != 0) return (error); diff --git a/sys/compat/cloudabi64/cloudabi64_util.h b/sys/compat/cloudabi64/cloudabi64_util.h index dcec70e..29a90d7 100644 --- a/sys/compat/cloudabi64/cloudabi64_util.h +++ b/sys/compat/cloudabi64/cloudabi64_util.h @@ -42,7 +42,7 @@ extern Elf64_Brandinfo cloudabi64_brand; register_t *cloudabi64_copyout_strings(struct image_params *); int cloudabi64_fixup(register_t **, struct image_params *); -void cloudabi64_thread_setregs(struct thread *, - const cloudabi64_threadattr_t *); +int cloudabi64_thread_setregs(struct thread *, + const cloudabi64_threadattr_t *, uint64_t); #endif diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 86c4b05..395c94f 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -640,7 +640,7 @@ linprocfs_doprocstat(PFS_FILL_ARGS) } else { startcode = 0; startdata = 0; - }; + } sbuf_printf(sb, "%d", p->p_pid); #define PS_ADD(name, fmt, arg) sbuf_printf(sb, " " fmt, arg) PS_ADD("comm", "(%s)", p->p_comm); @@ -1370,65 +1370,92 @@ linprocfs_dofdescfs(PFS_FILL_ARGS) /* * Filler function for proc/pid/limits */ - -#define RLIM_NONE -1 - -static const struct limit_info { +static const struct linux_rlimit_ident { const char *desc; const char *unit; - unsigned long long rlim_id; -} limits_info[] = { - { "Max cpu time", "seconds", RLIMIT_CPU }, - { "Max file size", "bytes", RLIMIT_FSIZE }, - { "Max data size", "bytes", RLIMIT_DATA }, - { "Max stack size", "bytes", RLIMIT_STACK }, - { "Max core file size", "bytes", RLIMIT_CORE }, - { "Max resident set", "bytes", RLIMIT_RSS }, - { "Max processes", "processes", RLIMIT_NPROC }, - { "Max open files", "files", RLIMIT_NOFILE }, - { "Max locked memory", "bytes", RLIMIT_MEMLOCK }, - { "Max address space", "bytes", RLIMIT_AS }, - { "Max file locks", "locks", RLIM_INFINITY }, - { "Max pending signals", "signals", RLIM_INFINITY }, - { "Max msgqueue size", "bytes", RLIM_NONE }, - { "Max nice priority", "", RLIM_NONE }, - { "Max realtime priority", "", RLIM_NONE }, - { "Max realtime timeout", "us", RLIM_INFINITY }, + unsigned int rlim_id; +} linux_rlimits_ident[] = { + { "Max cpu time", "seconds", RLIMIT_CPU }, + { "Max file size", "bytes", RLIMIT_FSIZE }, + { "Max data size", "bytes", RLIMIT_DATA }, + { "Max stack size", "bytes", RLIMIT_STACK }, + { "Max core file size", "bytes", RLIMIT_CORE }, + { "Max resident set", "bytes", RLIMIT_RSS }, + { "Max processes", "processes", RLIMIT_NPROC }, + { "Max open files", "files", RLIMIT_NOFILE }, + { "Max locked memory", "bytes", RLIMIT_MEMLOCK }, + { "Max address space", "bytes", RLIMIT_AS }, + { "Max file locks", "locks", LINUX_RLIMIT_LOCKS }, + { "Max pending signals", "signals", LINUX_RLIMIT_SIGPENDING }, + { "Max msgqueue size", "bytes", LINUX_RLIMIT_MSGQUEUE }, + { "Max nice priority", "", LINUX_RLIMIT_NICE }, + { "Max realtime priority", "", LINUX_RLIMIT_RTPRIO }, + { "Max realtime timeout", "us", LINUX_RLIMIT_RTTIME }, { 0, 0, 0 } }; static int linprocfs_doproclimits(PFS_FILL_ARGS) { - const struct limit_info *li; - struct rlimit li_rlimits; - struct plimit *cur_proc_lim; + const struct linux_rlimit_ident *li; + struct plimit *limp; + struct rlimit rl; + ssize_t size; + int res, error; - cur_proc_lim = lim_alloc(); - lim_copy(cur_proc_lim, p->p_limit); - sbuf_printf(sb, "%-26s%-21s%-21s%-10s\n", "Limit", "Soft Limit", + PROC_LOCK(p); + limp = lim_hold(p->p_limit); + PROC_UNLOCK(p); + size = sizeof(res); + sbuf_printf(sb, "%-26s%-21s%-21s%-21s\n", "Limit", "Soft Limit", "Hard Limit", "Units"); - for (li = limits_info; li->desc != NULL; ++li) { - if (li->rlim_id != RLIM_INFINITY && li->rlim_id != RLIM_NONE) - li_rlimits = cur_proc_lim->pl_rlimit[li->rlim_id]; - else { - li_rlimits.rlim_cur = 0; - li_rlimits.rlim_max = 0; + for (li = linux_rlimits_ident; li->desc != NULL; ++li) { + switch (li->rlim_id) + { + case LINUX_RLIMIT_LOCKS: + /* FALLTHROUGH */ + case LINUX_RLIMIT_RTTIME: + rl.rlim_cur = RLIM_INFINITY; + break; + case LINUX_RLIMIT_SIGPENDING: + error = kernel_sysctlbyname(td, + "kern.sigqueue.max_pending_per_proc", + &res, &size, 0, 0, 0, 0); + if (error != 0) + break; + rl.rlim_cur = res; + rl.rlim_max = res; + break; + case LINUX_RLIMIT_MSGQUEUE: + error = kernel_sysctlbyname(td, + "kern.ipc.msgmnb", &res, &size, 0, 0, 0, 0); + if (error != 0) + break; + rl.rlim_cur = res; + rl.rlim_max = res; + break; + case LINUX_RLIMIT_NICE: + /* FALLTHROUGH */ + case LINUX_RLIMIT_RTPRIO: + rl.rlim_cur = 0; + rl.rlim_max = 0; + break; + default: + rl = limp->pl_rlimit[li->rlim_id]; + break; } - if (li->rlim_id == RLIM_INFINITY || - li_rlimits.rlim_cur == RLIM_INFINITY) + if (rl.rlim_cur == RLIM_INFINITY) sbuf_printf(sb, "%-26s%-21s%-21s%-10s\n", li->desc, "unlimited", "unlimited", li->unit); else - sbuf_printf(sb, "%-26s%-21ld%-21ld%-10s\n", - li->desc, (long)li_rlimits.rlim_cur, - (long)li_rlimits.rlim_max, li->unit); + sbuf_printf(sb, "%-26s%-21llu%-21llu%-10s\n", + li->desc, (unsigned long long)rl.rlim_cur, + (unsigned long long)rl.rlim_max, li->unit); } - lim_free(cur_proc_lim); - return (0); + lim_free(limp); + return (error); } - /* * Filler function for proc/sys/kernel/random/uuid */ diff --git a/sys/compat/linux/linux_misc.h b/sys/compat/linux/linux_misc.h index 08bc85f..0d2d86c 100644 --- a/sys/compat/linux/linux_misc.h +++ b/sys/compat/linux/linux_misc.h @@ -143,6 +143,13 @@ extern int stclohz; #define LINUX_P_PID 1 #define LINUX_P_PGID 2 +#define LINUX_RLIMIT_LOCKS RLIM_NLIMITS + 1 +#define LINUX_RLIMIT_SIGPENDING RLIM_NLIMITS + 2 +#define LINUX_RLIMIT_MSGQUEUE RLIM_NLIMITS + 3 +#define LINUX_RLIMIT_NICE RLIM_NLIMITS + 4 +#define LINUX_RLIMIT_RTPRIO RLIM_NLIMITS + 5 +#define LINUX_RLIMIT_RTTIME RLIM_NLIMITS + 6 + #define LINUX_RLIM_INFINITY (~0UL) int linux_common_wait(struct thread *td, int pid, int *status, diff --git a/sys/conf/NOTES b/sys/conf/NOTES index c9fce2e..ec5618c 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -229,7 +229,15 @@ options MAXCPU=32 # MAXMEMDOM defines the maximum number of memory domains that can boot in the # system. A default value should already be defined by every architecture. -options MAXMEMDOM=1 +options MAXMEMDOM=2 + +# VM_NUMA_ALLOC enables use of memory domain-aware allocation in the VM +# system. +options VM_NUMA_ALLOC + +# DEVICE_NUMA enables reporting of domain affinity of I/O devices via +# bus_get_domain(), etc. +options DEVICE_NUMA # ADAPTIVE_MUTEXES changes the behavior of blocking mutexes to spin # if the thread that currently owns the mutex is executing on another @@ -1409,6 +1417,10 @@ options MSGBUF_SIZE=40960 options KBD_DISABLE_KEYMAP_LOAD # refuse to load a keymap options KBD_INSTALL_CDEV # install a CDEV entry in /dev +device kbdmux # keyboard multiplexer +options KBDMUX_DFLT_KEYMAP # specify the built-in keymap +makeoptions KBDMUX_DFLT_KEYMAP=it.iso + options FB_DEBUG # Frame buffer debugging device splash # Splash screen and screen saver support diff --git a/sys/conf/files b/sys/conf/files index e2dbc67..46e9768 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -47,6 +47,10 @@ pccarddevs.h standard \ compile-with "${AWK} -f $S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \ no-obj no-implicit-rule before-depend \ clean "pccarddevs.h" +kbdmuxmap.h optional kbdmux_dflt_keymap \ + compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${KBDMUX_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > kbdmuxmap.h" \ + no-obj no-implicit-rule before-depend \ + clean "kbdmuxmap.h" teken_state.h optional sc | vt \ dependency "$S/teken/gensequences $S/teken/sequences" \ compile-with "${AWK} -f $S/teken/gensequences $S/teken/sequences > teken_state.h" \ diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index a5d4749..b8aeea5 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -11,7 +11,7 @@ # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. -# 4. Neither the name of the University nor the names of its contributors +# 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # diff --git a/sys/conf/options b/sys/conf/options index 4df24a5..2283705 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -90,6 +90,7 @@ COMPAT_LINUXKPI opt_compat.h COMPILING_LINT opt_global.h CY_PCI_FASTINTR DEADLKRES opt_watchdog.h +DEVICE_NUMA EXT_RESOURCES opt_global.h DIRECTIO FILEMON opt_dontuse.h @@ -603,6 +604,7 @@ VM_KMEM_SIZE opt_vm.h VM_KMEM_SIZE_SCALE opt_vm.h VM_KMEM_SIZE_MAX opt_vm.h VM_NRESERVLEVEL opt_vm.h +VM_NUMA_ALLOC opt_vm.h VM_LEVEL_0_ORDER opt_vm.h NO_SWAPPING opt_vm.h MALLOC_MAKE_FAILURES opt_vm.h @@ -801,6 +803,8 @@ KBD_MAXWAIT opt_kbd.h KBD_RESETDELAY opt_kbd.h KBDIO_DEBUG opt_kbd.h +KBDMUX_DFLT_KEYMAP opt_kbdmux.h + # options for the Atheros driver ATH_DEBUG opt_ath.h ATH_TXBUF opt_ath.h diff --git a/sys/contrib/cloudabi/cloudabi64_types.h b/sys/contrib/cloudabi/cloudabi64_types.h index 88babaa..cb354d4 100644 --- a/sys/contrib/cloudabi/cloudabi64_types.h +++ b/sys/contrib/cloudabi/cloudabi64_types.h @@ -192,6 +192,13 @@ _Static_assert(offsetof(cloudabi64_subscription_t, proc_terminate.fd) == 16, "In _Static_assert(sizeof(cloudabi64_subscription_t) == 56, "Incorrect layout"); _Static_assert(_Alignof(cloudabi64_subscription_t) == 8, "Incorrect layout"); +typedef struct { + _Alignas(8) uint64_t parent; +} cloudabi64_tcb_t; +_Static_assert(offsetof(cloudabi64_tcb_t, parent) == 0, "Incorrect layout"); +_Static_assert(sizeof(cloudabi64_tcb_t) == 8, "Incorrect layout"); +_Static_assert(_Alignof(cloudabi64_tcb_t) == 8, "Incorrect layout"); + typedef void cloudabi64_threadentry_t(cloudabi_tid_t tid, uint64_t aux); typedef struct { diff --git a/sys/contrib/ipfilter/netinet/fil.c b/sys/contrib/ipfilter/netinet/fil.c index 58d9028..0aeb44b 100644 --- a/sys/contrib/ipfilter/netinet/fil.c +++ b/sys/contrib/ipfilter/netinet/fil.c @@ -629,6 +629,7 @@ ipf_pr_ipv6hdr(fin) ipf_main_softc_t *softc = fin->fin_main_soft; fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_ipv6_frag_1, fr_info_t *, fin, int, go); LBUMPD(ipf_stats[fin->fin_out], fr_v6_badfrag); LBUMP(ipf_stats[fin->fin_out].fr_v6_bad); } @@ -687,6 +688,7 @@ ipf_pr_ipv6exthdr(fin, multiple, proto) if (shift > fin->fin_dlen) { /* Nasty extension header length? */ fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_pr_ipv6exthdr_len, fr_info_t *, fin, u_short, shift, u_short, fin->fin_dlen); LBUMPD(ipf_stats[fin->fin_out], fr_v6_ext_hlen); return NULL; } @@ -708,9 +710,10 @@ ipf_pr_ipv6exthdr(fin, multiple, proto) * Most IPv6 extension headers are only allowed once. */ if ((multiple == 0) && - ((fin->fin_optmsk & ip6exthdr[i].ol_bit) != 0)) + ((fin->fin_optmsk & ip6exthdr[i].ol_bit) != 0)) { fin->fin_flx |= FI_BAD; - else + DT2(ipf_fi_bad_ipv6exthdr_once, fr_info_t *, fin, u_int, (fin->fin_optmsk & ip6exthdr[i].ol_bit)); + } else fin->fin_optmsk |= ip6exthdr[i].ol_bit; break; } @@ -790,6 +793,7 @@ ipf_pr_routing6(fin) ipf_main_softc_t *softc = fin->fin_main_soft; fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_routing6, fr_info_t *, fin); LBUMPD(ipf_stats[fin->fin_out], fr_v6_rh_bad); return IPPROTO_NONE; } @@ -852,8 +856,10 @@ ipf_pr_fragment6(fin) * Any fragment that isn't the last fragment must have its * length as a multiple of 8. */ - if ((fin->fin_plen & 7) != 0) + if ((fin->fin_plen & 7) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_frag_not_8, fr_info_t *, fin, u_int, (fin->fin_plen & 7)); + } } fin->fin_fraghdr = frag; @@ -865,8 +871,10 @@ ipf_pr_fragment6(fin) /* * Jumbograms aren't handled, so the max. length is 64k */ - if ((fin->fin_off << 3) + fin->fin_dlen > 65535) + if ((fin->fin_off << 3) + fin->fin_dlen > 65535) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_jumbogram, fr_info_t *, fin, u_int, ((fin->fin_off << 3) + fin->fin_dlen)); + } /* * We don't know where the transport layer header (or whatever is next @@ -970,8 +978,10 @@ ipf_pr_icmp6(fin) icmp6 = fin->fin_dp; ip6 = (ip6_t *)((char *)icmp6 + ICMPERR_ICMPHLEN); if (IP6_NEQ(&fin->fin_fi.fi_dst, - (i6addr_t *)&ip6->ip6_src)) + (i6addr_t *)&ip6->ip6_src)) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_icmp6, fr_info_t *, fin); + } break; default : break; @@ -1283,8 +1293,10 @@ ipf_pr_icmp(fin) case ICMP_UNREACH : #ifdef icmp_nextmtu if (icmp->icmp_code == ICMP_UNREACH_NEEDFRAG) { - if (icmp->icmp_nextmtu < softc->ipf_icmpminfragmtu) + if (icmp->icmp_nextmtu < softc->ipf_icmpminfragmtu) { fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_icmp_nextmtu, fr_info_t *, fin, u_int, icmp->icmp_nextmtu, u_int, softc->ipf_icmpminfragmtu); + } } #endif case ICMP_SOURCEQUENCH : @@ -1303,16 +1315,20 @@ ipf_pr_icmp(fin) * fragment. */ oip = (ip_t *)((char *)fin->fin_dp + ICMPERR_ICMPHLEN); - if ((ntohs(oip->ip_off) & IP_OFFMASK) != 0) + if ((ntohs(oip->ip_off) & IP_OFFMASK) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_icmp_err, fr_info_t, fin, u_int, (ntohs(oip->ip_off) & IP_OFFMASK)); + } /* * If the destination of this packet doesn't match the * source of the original packet then this packet is * not correct. */ - if (oip->ip_src.s_addr != fin->fin_daddr) + if (oip->ip_src.s_addr != fin->fin_daddr) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_src_ne_dst, fr_info_t *, fin); + } break; default : break; @@ -1372,6 +1388,7 @@ ipf_pr_tcpcommon(fin) if (tlen < sizeof(tcphdr_t)) { LBUMPD(ipf_stats[fin->fin_out], fr_tcp_small); fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_tlen, fr_info_t, fin, u_int, tlen, u_int, sizeof(tcphdr_t)); return 1; } @@ -1385,6 +1402,7 @@ ipf_pr_tcpcommon(fin) */ if ((flags & TH_URG) != 0 && (tcp->th_urp == 0)) { fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_th_urg, fr_info_t*, fin, u_int, (flags & TH_URG), u_int, tcp->th_urp); #if 0 } else if ((flags & TH_URG) == 0 && (tcp->th_urp != 0)) { /* @@ -1392,11 +1410,13 @@ ipf_pr_tcpcommon(fin) * traffic with bogus values in the urgent pointer field. */ fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_th_urg0, fr_info_t *, fin, u_int, (flags & TH_URG), u_int, tcp->th_urp); #endif } else if (((flags & (TH_SYN|TH_FIN)) != 0) && ((flags & (TH_RST|TH_ACK)) == TH_RST)) { /* TH_FIN|TH_RST|TH_ACK seems to appear "naturally" */ fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_fin_rst_ack, fr_info_t, fin); #if 1 } else if (((flags & TH_SYN) != 0) && ((flags & (TH_URG|TH_PUSH)) != 0)) { @@ -1405,6 +1425,7 @@ ipf_pr_tcpcommon(fin) * possible(?) with T/TCP...but who uses T/TCP? */ fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_syn_urg_psh, fr_info_t *, fin); #endif } else if (!(flags & TH_ACK)) { /* @@ -1423,10 +1444,13 @@ ipf_pr_tcpcommon(fin) * achieved. */ /*fin->fin_flx |= FI_BAD*/; + /*DT1(ipf_fi_bad_th_syn_ack, fr_info_t *, fin);*/ } else if (!(flags & (TH_RST|TH_SYN))) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_rst_syn, fr_info_t *, fin); } else if ((flags & (TH_URG|TH_PUSH|TH_FIN)) != 0) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_urg_push_fin, fr_info_t *, fin); } } if (fin->fin_flx & FI_BAD) { @@ -1757,6 +1781,7 @@ ipf_pr_ipv4hdr(fin) * must be an even multiple of 8. */ fi->fi_flx |= FI_BAD; + DT1(ipf_fi_bad_fragbody_gt_65535, fr_info_t *, fin); } } } @@ -1840,6 +1865,7 @@ ipf_pr_ipv4hdr(fin) case IPOPT_SECURITY : if (optmsk & op->ol_bit) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_ipopt_security, fr_info_t *, fin, u_short, (optmsk & op->ol_bit)); } else { doi = ipf_checkripso(s); secmsk = doi >> 16; @@ -1851,6 +1877,7 @@ ipf_pr_ipv4hdr(fin) if (optmsk & op->ol_bit) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_ipopt_cipso, fr_info_t *, fin, u_short, (optmsk & op->ol_bit)); } else { doi = ipf_checkcipso(fin, s, ol); @@ -1949,6 +1976,7 @@ ipf_checkcipso(fin, s, ol) if (ol < 6 || ol > 40) { LBUMPD(ipf_stats[fin->fin_out], fr_v4_cipso_bad); fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_ol, fr_info_t *, fin, u_int, ol); return 0; } @@ -1966,6 +1994,7 @@ ipf_checkcipso(fin, s, ol) if (tlen > len || tlen < 4 || tlen > 34) { LBUMPD(ipf_stats[fin->fin_out], fr_v4_cipso_tlen); fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tlen, fr_info_t *, fin, u_int, tlen); return 0; } @@ -1976,10 +2005,12 @@ ipf_checkcipso(fin, s, ol) */ if (tag == 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag, fr_info_t *, fin, u_int, tag); continue; } else if (tag == 1) { if (*(t + 2) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag1_t2, fr_info_t *, fin, u_int, (*t + 2)); continue; } sensitivity = *(t + 3); @@ -1988,6 +2019,7 @@ ipf_checkcipso(fin, s, ol) } else if (tag == 4) { if (*(t + 2) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag4_t2, fr_info_t *, fin, u_int, (*t + 2)); continue; } sensitivity = *(t + 3); @@ -1996,6 +2028,7 @@ ipf_checkcipso(fin, s, ol) } else if (tag == 5) { if (*(t + 2) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag5_t2, fr_info_t *, fin, u_int, (*t + 2)); continue; } sensitivity = *(t + 3); @@ -2006,6 +2039,7 @@ ipf_checkcipso(fin, s, ol) ; } else { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag127, fr_info_t *, fin, u_int, tag); continue; } diff --git a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c index 8a5a90d..3b74f8c 100644 --- a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c +++ b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c @@ -1091,6 +1091,7 @@ ipf_checkv4sum(fin) CSUM_IP_CHECKED) { fin->fin_cksum = FI_CK_BAD; fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_csum_ip_checked, fr_info_t *, fin, u_int, m->m_pkthdr.csum_flags & (CSUM_IP_CHECKED|CSUM_IP_VALID)); return -1; } if (m->m_pkthdr.csum_flags & CSUM_DATA_VALID) { @@ -1120,6 +1121,7 @@ ipf_checkv4sum(fin) if (sum != 0) { fin->fin_cksum = FI_CK_BAD; fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_sum, fr_info_t *, fin, u_int, sum); } else { fin->fin_cksum = FI_CK_SUMOK; return 0; @@ -1143,12 +1145,14 @@ skipauto: if (manual != 0) { if (ipf_checkl4sum(fin) == -1) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_manual, fr_info_t *, fin, u_int, manual); return -1; } } #else if (ipf_checkl4sum(fin) == -1) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_checkl4sum, fr_info_t *, fin, u_int, -1); return -1; } #endif @@ -1162,16 +1166,20 @@ ipf_checkv6sum(fin) fr_info_t *fin; { if ((fin->fin_flx & FI_NOCKSUM) != 0) + DT(ipf_checkv6sum_fi_nocksum); return 0; if ((fin->fin_flx & FI_SHORT) != 0) + DT(ipf_checkv6sum_fi_short); return 1; if (fin->fin_cksum != FI_CK_NEEDED) + DT(ipf_checkv6sum_fi_ck_needed); return (fin->fin_cksum > FI_CK_NEEDED) ? 0 : -1; if (ipf_checkl4sum(fin) == -1) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv6sum_checkl4sum, fr_info_t *, fin, u_int, -1); return -1; } return 0; diff --git a/sys/contrib/ipfilter/netinet/ip_frag.c b/sys/contrib/ipfilter/netinet/ip_frag.c index 7e3457a..e0cc5f3 100644 --- a/sys/contrib/ipfilter/netinet/ip_frag.c +++ b/sys/contrib/ipfilter/netinet/ip_frag.c @@ -719,6 +719,8 @@ ipf_frag_lookup(softc, softf, fin, table FBUMP(ifs_overlap); DT2(ifs_overlap, u_short, off, ipfr_t *, f); + DT3(ipf_fi_bad_ifs_overlap, fr_info_t *, fin, u_short, off, + ipfr_t *, f); fin->fin_flx |= FI_BAD; break; } @@ -901,6 +903,7 @@ ipf_frag_known(fin, passp) if (fin->fin_flx & FI_BAD) { fr = &ipfr_block; fin->fin_reason = FRB_BADFRAG; + DT2(ipf_frb_badfrag, fr_info_t *, fin, uint, fra); } else { fr = fra->ipfr_rule; } diff --git a/sys/contrib/ipfilter/netinet/ip_state.c b/sys/contrib/ipfilter/netinet/ip_state.c index 2ceec32..34a64f0 100644 --- a/sys/contrib/ipfilter/netinet/ip_state.c +++ b/sys/contrib/ipfilter/netinet/ip_state.c @@ -1611,8 +1611,10 @@ ipf_state_add(softc, fin, stsave, flags) TH_SYN && (TCP_OFF(tcp) > (sizeof(tcphdr_t) >> 2))) { if (ipf_tcpoptions(softs, fin, tcp, - &is->is_tcp.ts_data[0]) == -1) + &is->is_tcp.ts_data[0]) == -1) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_tcpoptions_th_fin_ack_ecnall, fr_info_t *, fin); + } } if ((fin->fin_out != 0) && (pass & FR_NEWISN) != 0) { @@ -2068,8 +2070,10 @@ ipf_state_tcp(softc, softs, fin, tcp, is) is->is_s0[!source] = ntohl(tcp->th_seq) + 1; if ((TCP_OFF(tcp) > (sizeof(tcphdr_t) >> 2))) { if (ipf_tcpoptions(softs, fin, tcp, - fdata) == -1) + fdata) == -1) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_winscale_syn_ack, fr_info_t *, fin); + } } if ((fin->fin_out != 0) && (is->is_pass & FR_NEWISN)) ipf_checknewisn(fin, is); @@ -2077,8 +2081,10 @@ ipf_state_tcp(softc, softs, fin, tcp, is) is->is_s0[source] = ntohl(tcp->th_seq) + 1; if ((TCP_OFF(tcp) > (sizeof(tcphdr_t) >> 2))) { if (ipf_tcpoptions(softs, fin, tcp, - fdata) == -1) + fdata) == -1) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_winscale_syn, fr_info_t *, fin); + } } if ((fin->fin_out != 0) && (is->is_pass & FR_NEWISN)) diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index decacb9..4028cb4 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -3762,7 +3762,7 @@ aac_get_bus_info(struct aac_softc *sc) device_printf(sc->aac_dev, "No memory to add passthrough bus %d\n", i); break; - }; + } child = device_add_child(sc->aac_dev, "aacp", -1); if (child == NULL) { diff --git a/sys/dev/aacraid/aacraid.c b/sys/dev/aacraid/aacraid.c index 26b2296..879d466 100644 --- a/sys/dev/aacraid/aacraid.c +++ b/sys/dev/aacraid/aacraid.c @@ -3550,7 +3550,7 @@ aac_container_bus(struct aac_softc *sc) device_printf(sc->aac_dev, "No memory to add container bus\n"); panic("Out of memory?!"); - }; + } child = device_add_child(sc->aac_dev, "aacraidp", -1); if (child == NULL) { device_printf(sc->aac_dev, @@ -3662,7 +3662,7 @@ aac_get_bus_info(struct aac_softc *sc) device_printf(sc->aac_dev, "No memory to add passthrough bus %d\n", i); break; - }; + } child = device_add_child(sc->aac_dev, "aacraidp", -1); if (child == NULL) { diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index 6f5a11f..32a07dd 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -31,6 +31,8 @@ __FBSDID("$FreeBSD$"); #include "opt_acpi.h" +#include "opt_device_numa.h" + #include <sys/param.h> #include <sys/kernel.h> #include <sys/proc.h> @@ -1083,7 +1085,7 @@ acpi_hint_device_unit(device_t acdev, device_t child, const char *name, int acpi_parse_pxm(device_t dev, int *domain) { -#if MAXMEMDOM > 1 +#ifdef DEVICE_NUMA ACPI_HANDLE h; int d, pxm; diff --git a/sys/dev/acpica/acpi_pci.c b/sys/dev/acpica/acpi_pci.c index 9509f82..1dee131 100644 --- a/sys/dev/acpica/acpi_pci.c +++ b/sys/dev/acpica/acpi_pci.c @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include <contrib/dev/acpica/include/accommon.h> #include <dev/acpica/acpivar.h> +#include <dev/acpica/acpi_pcivar.h> #include <sys/pciio.h> #include <dev/pci/pcireg.h> @@ -70,6 +71,7 @@ CTASSERT(ACPI_STATE_D2 == PCI_POWERSTATE_D2); CTASSERT(ACPI_STATE_D3 == PCI_POWERSTATE_D3); static int acpi_pci_attach(device_t dev); +static void acpi_pci_child_deleted(device_t dev, device_t child); static int acpi_pci_child_location_str_method(device_t cbdev, device_t child, char *buf, size_t buflen); static int acpi_pci_probe(device_t dev); @@ -97,11 +99,13 @@ static device_method_t acpi_pci_methods[] = { /* Bus interface */ DEVMETHOD(bus_read_ivar, acpi_pci_read_ivar), DEVMETHOD(bus_write_ivar, acpi_pci_write_ivar), + DEVMETHOD(bus_child_deleted, acpi_pci_child_deleted), DEVMETHOD(bus_child_location_str, acpi_pci_child_location_str_method), DEVMETHOD(bus_get_dma_tag, acpi_pci_get_dma_tag), DEVMETHOD(bus_get_domain, acpi_get_domain), /* PCI interface */ + DEVMETHOD(pci_child_added, acpi_pci_child_added), DEVMETHOD(pci_set_powerstate, acpi_pci_set_powerstate_method), #ifdef PCI_IOV DEVMETHOD(pci_create_iov_child, acpi_pci_create_iov_child), @@ -153,6 +157,16 @@ acpi_pci_write_ivar(device_t dev, device_t child, int which, uintptr_t value) return (pci_write_ivar(dev, child, which, value)); } +static void +acpi_pci_child_deleted(device_t dev, device_t child) +{ + struct acpi_pci_devinfo *dinfo = device_get_ivars(child); + + if (acpi_get_device(dinfo->ap_handle) == child) + AcpiDetachData(dinfo->ap_handle, acpi_fake_objhandler); + pci_child_deleted(dev, child); +} + static int acpi_pci_child_location_str_method(device_t cbdev, device_t child, char *buf, size_t buflen) @@ -259,31 +273,35 @@ acpi_pci_save_handle(ACPI_HANDLE handle, UINT32 level, void *context, void **status) { struct acpi_pci_devinfo *dinfo; - device_t *devlist; - int devcount, i, func, slot; + device_t child; + int func, slot; UINT32 address; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); + child = context; if (ACPI_FAILURE(acpi_GetInteger(handle, "_ADR", &address))) return_ACPI_STATUS (AE_OK); slot = ACPI_ADR_PCI_SLOT(address); func = ACPI_ADR_PCI_FUNC(address); - if (device_get_children((device_t)context, &devlist, &devcount) != 0) - return_ACPI_STATUS (AE_OK); - for (i = 0; i < devcount; i++) { - dinfo = device_get_ivars(devlist[i]); - if (dinfo->ap_dinfo.cfg.func == func && - dinfo->ap_dinfo.cfg.slot == slot) { - dinfo->ap_handle = handle; - acpi_pci_update_device(handle, devlist[i]); - break; - } + dinfo = device_get_ivars(child); + if (dinfo->ap_dinfo.cfg.func == func && + dinfo->ap_dinfo.cfg.slot == slot) { + dinfo->ap_handle = handle; + acpi_pci_update_device(handle, child); + return_ACPI_STATUS (AE_CTRL_TERMINATE); } - free(devlist, M_TEMP); return_ACPI_STATUS (AE_OK); } +void +acpi_pci_child_added(device_t dev, device_t child) +{ + + AcpiWalkNamespace(ACPI_TYPE_DEVICE, acpi_get_handle(dev), 1, + acpi_pci_save_handle, NULL, child, NULL); +} + static int acpi_pci_probe(device_t dev) { @@ -313,18 +331,18 @@ acpi_pci_attach(device_t dev) busno = pcib_get_bus(dev); /* - * First, PCI devices are added as in the normal PCI bus driver. - * Afterwards, the ACPI namespace under the bridge driver is - * walked to save ACPI handles to all the devices that appear in - * the ACPI namespace as immediate descendants of the bridge. + * PCI devices are added via the bus scan in the normal PCI + * bus driver. As each device is added, the + * acpi_pci_child_added() callback walks the ACPI namespace + * under the bridge driver to save ACPI handles to all the + * devices that appear in the ACPI namespace as immediate + * descendants of the bridge. * * XXX: Sometimes PCI devices show up in the ACPI namespace that * pci_add_children() doesn't find. We currently just ignore * these devices. */ pci_add_children(dev, domain, busno, sizeof(struct acpi_pci_devinfo)); - AcpiWalkNamespace(ACPI_TYPE_DEVICE, acpi_get_handle(dev), 1, - acpi_pci_save_handle, NULL, dev, NULL); return (bus_generic_attach(dev)); } @@ -359,17 +377,9 @@ static device_t acpi_pci_create_iov_child(device_t bus, device_t pf, uint16_t rid, uint16_t vid, uint16_t did) { - struct acpi_pci_devinfo *dinfo; - device_t vf; - - vf = pci_add_iov_child(bus, pf, sizeof(struct acpi_pci_devinfo), rid, - vid, did); - if (vf == NULL) - return (NULL); - dinfo = device_get_ivars(vf); - dinfo->ap_handle = NULL; - return (vf); + return (pci_add_iov_child(bus, pf, sizeof(struct acpi_pci_devinfo), rid, + vid, did)); } #endif diff --git a/sys/dev/acpica/acpi_pcivar.h b/sys/dev/acpica/acpi_pcivar.h new file mode 100644 index 0000000..a720cc2 --- /dev/null +++ b/sys/dev/acpica/acpi_pcivar.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2016 John Baldwin <jhb@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ACPI_PCIVAR_H_ +#define _ACPI_PCIVAR_H_ + +#ifdef _KERNEL + +void acpi_pci_child_added(device_t dev, device_t child); + +#endif + +#endif /* !_ACPI_PCIVAR_H_ */ diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 4df83d5..3ee7ab3 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -502,9 +502,7 @@ SYSCTL_DECL(_debug_acpi); * * Returns the VM domain ID if found, or -1 if not found / invalid. */ -#if MAXMEMDOM > 1 extern int acpi_map_pxm_to_vm_domainid(int pxm); -#endif extern int acpi_get_domain(device_t dev, device_t child, int *domain); extern int acpi_parse_pxm(device_t dev, int *domain); diff --git a/sys/dev/ahci/ahci_pci.c b/sys/dev/ahci/ahci_pci.c index 57f7ea9..b6a961f 100644 --- a/sys/dev/ahci/ahci_pci.c +++ b/sys/dev/ahci/ahci_pci.c @@ -491,7 +491,7 @@ ahci_pci_attach(device_t dev) if ((error = ahci_pci_ctlr_reset(dev)) != 0) { ahci_free_mem(dev); return (error); - }; + } /* Setup interrupts. */ diff --git a/sys/dev/ata/chipsets/ata-intel.c b/sys/dev/ata/chipsets/ata-intel.c index 46d0055..502a859 100644 --- a/sys/dev/ata/chipsets/ata-intel.c +++ b/sys/dev/ata/chipsets/ata-intel.c @@ -380,7 +380,7 @@ ata_intel_ch_attach(device_t dev) } else if (ata_intel_sata_sidpr_test(dev)) { ch->hw.pm_read = ata_intel_sata_sidpr_read; ch->hw.pm_write = ata_intel_sata_sidpr_write; - }; + } } if (ch->hw.pm_write != NULL) { ch->flags |= ATA_PERIODIC_POLL; diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c b/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c index edac235..9759b74 100644 --- a/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c +++ b/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c @@ -365,7 +365,7 @@ ar5416ProcessRadarEvent(struct ath_hal *ah, struct ath_rx_status *rxs, /* Cannot use ctrl channel RSSI if ext channel is stronger */ if (ext_rssi >= (rssi + 3)) { rssi = 0; - }; + } break; case EXT_CH_RADAR_FOUND: /* Radar in extended channel */ diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index 8b1580a..e2dc250 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -1073,7 +1073,6 @@ ath_attach(u_int16_t devid, struct ath_softc *sc) | IEEE80211_HTCAP_MAXAMSDU_3839 /* max A-MSDU length */ | IEEE80211_HTCAP_SMPS_OFF; /* SM power save off */ - ; /* * Enable short-GI for HT20 only if the hardware diff --git a/sys/dev/ath/if_ath_rx.c b/sys/dev/ath/if_ath_rx.c index dbdfb89..ff056ad 100644 --- a/sys/dev/ath/if_ath_rx.c +++ b/sys/dev/ath/if_ath_rx.c @@ -361,85 +361,102 @@ ath_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, ATH_VAP(vap)->av_recv_mgmt(ni, m, subtype, rxs, rssi, nf); switch (subtype) { case IEEE80211_FC0_SUBTYPE_BEACON: - /* update rssi statistics for use by the hal */ - /* XXX unlocked check against vap->iv_bss? */ - ATH_RSSI_LPF(sc->sc_halstats.ns_avgbrssi, rssi); - - tsf_beacon = ((uint64_t) LE_READ_4(ni->ni_tstamp.data + 4)) << 32; - tsf_beacon |= LE_READ_4(ni->ni_tstamp.data); - - nexttbtt = ath_hal_getnexttbtt(sc->sc_ah); /* - * Let's calculate the delta and remainder, so we can see - * if the beacon timer from the AP is varying by more than - * a few TU. (Which would be a huge, huge problem.) + * Only do the following processing if it's for + * the current BSS. + * + * In scan and IBSS mode we receive all beacons, + * which means we need to filter out stuff + * that isn't for us or we'll end up constantly + * trying to sync / merge to BSSes that aren't + * actually us. */ - tsf_delta = (long long) tsf_beacon - (long long) tsf_beacon_old; + if (IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid)) { + /* update rssi statistics for use by the hal */ + /* XXX unlocked check against vap->iv_bss? */ + ATH_RSSI_LPF(sc->sc_halstats.ns_avgbrssi, rssi); - tsf_delta_bmiss = tsf_delta / tsf_intval; - /* - * If our delta is greater than half the beacon interval, - * let's round the bmiss value up to the next beacon - * interval. Ie, we're running really, really early - * on the next beacon. - */ - if (tsf_delta % tsf_intval > (tsf_intval / 2)) - tsf_delta_bmiss ++; + tsf_beacon = ((uint64_t) LE_READ_4(ni->ni_tstamp.data + 4)) << 32; + tsf_beacon |= LE_READ_4(ni->ni_tstamp.data); - tsf_beacon_target = tsf_beacon_old + - (((unsigned long long) tsf_delta_bmiss) * (long long) tsf_intval); + nexttbtt = ath_hal_getnexttbtt(sc->sc_ah); - /* - * The remainder using '%' is between 0 .. intval-1. - * If we're actually running too fast, then the remainder - * will be some large number just under intval-1. - * So we need to look at whether we're running - * before or after the target beacon interval - * and if we are, modify how we do the remainder - * calculation. - */ - if (tsf_beacon < tsf_beacon_target) { - tsf_remainder = - -(tsf_intval - ((tsf_beacon - tsf_beacon_old) % tsf_intval)); - } else { - tsf_remainder = (tsf_beacon - tsf_beacon_old) % tsf_intval; - } + /* + * Let's calculate the delta and remainder, so we can see + * if the beacon timer from the AP is varying by more than + * a few TU. (Which would be a huge, huge problem.) + */ + tsf_delta = (long long) tsf_beacon - (long long) tsf_beacon_old; + + tsf_delta_bmiss = tsf_delta / tsf_intval; + + /* + * If our delta is greater than half the beacon interval, + * let's round the bmiss value up to the next beacon + * interval. Ie, we're running really, really early + * on the next beacon. + */ + if (tsf_delta % tsf_intval > (tsf_intval / 2)) + tsf_delta_bmiss ++; + + tsf_beacon_target = tsf_beacon_old + + (((unsigned long long) tsf_delta_bmiss) * (long long) tsf_intval); - DPRINTF(sc, ATH_DEBUG_BEACON, "%s: old_tsf=%llu, new_tsf=%llu, target_tsf=%llu, delta=%lld, bmiss=%d, remainder=%d\n", - __func__, - (unsigned long long) tsf_beacon_old, - (unsigned long long) tsf_beacon, - (unsigned long long) tsf_beacon_target, - (long long) tsf_delta, - tsf_delta_bmiss, - tsf_remainder); - - DPRINTF(sc, ATH_DEBUG_BEACON, "%s: tsf=%llu, nexttbtt=%llu, delta=%d\n", - __func__, - (unsigned long long) tsf_beacon, - (unsigned long long) nexttbtt, - (int32_t) tsf_beacon - (int32_t) nexttbtt + tsf_intval); - - if (sc->sc_syncbeacon && - ni == vap->iv_bss && - (vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP)) { - DPRINTF(sc, ATH_DEBUG_BEACON, - "%s: syncbeacon=1; syncing\n", - __func__); /* - * Resync beacon timers using the tsf of the beacon - * frame we just received. + * The remainder using '%' is between 0 .. intval-1. + * If we're actually running too fast, then the remainder + * will be some large number just under intval-1. + * So we need to look at whether we're running + * before or after the target beacon interval + * and if we are, modify how we do the remainder + * calculation. */ - ath_beacon_config(sc, vap); - sc->sc_syncbeacon = 0; + if (tsf_beacon < tsf_beacon_target) { + tsf_remainder = + -(tsf_intval - ((tsf_beacon - tsf_beacon_old) % tsf_intval)); + } else { + tsf_remainder = (tsf_beacon - tsf_beacon_old) % tsf_intval; + } + + DPRINTF(sc, ATH_DEBUG_BEACON, "%s: old_tsf=%llu, new_tsf=%llu, target_tsf=%llu, delta=%lld, bmiss=%d, remainder=%d\n", + __func__, + (unsigned long long) tsf_beacon_old, + (unsigned long long) tsf_beacon, + (unsigned long long) tsf_beacon_target, + (long long) tsf_delta, + tsf_delta_bmiss, + tsf_remainder); + + DPRINTF(sc, ATH_DEBUG_BEACON, "%s: tsf=%llu, nexttbtt=%llu, delta=%d\n", + __func__, + (unsigned long long) tsf_beacon, + (unsigned long long) nexttbtt, + (int32_t) tsf_beacon - (int32_t) nexttbtt + tsf_intval); + + /* We only do syncbeacon on STA VAPs; not on IBSS */ + if (vap->iv_opmode == IEEE80211_M_STA && + sc->sc_syncbeacon && + ni == vap->iv_bss && + (vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP)) { + DPRINTF(sc, ATH_DEBUG_BEACON, + "%s: syncbeacon=1; syncing\n", + __func__); + /* + * Resync beacon timers using the tsf of the beacon + * frame we just received. + */ + ath_beacon_config(sc, vap); + sc->sc_syncbeacon = 0; + } } /* fall thru... */ case IEEE80211_FC0_SUBTYPE_PROBE_RESP: if (vap->iv_opmode == IEEE80211_M_IBSS && - vap->iv_state == IEEE80211_S_RUN) { + vap->iv_state == IEEE80211_S_RUN && + ieee80211_ibss_merge_check(ni)) { uint32_t rstamp = sc->sc_lastrs->rs_tstamp; uint64_t tsf = ath_extend_tsf(sc, rstamp, ath_hal_gettsf64(sc->sc_ah)); diff --git a/sys/dev/bhnd/bcma/bcma_erom.c b/sys/dev/bhnd/bcma/bcma_erom.c index 2fd3275..3f9abf9 100644 --- a/sys/dev/bhnd/bcma/bcma_erom.c +++ b/sys/dev/bhnd/bcma/bcma_erom.c @@ -567,7 +567,7 @@ bcma_erom_get_core_info(struct bcma_erom *erom, for (u_int j = 0; j < i; j++) { if (buffer[i].vendor == buffer[j].vendor && buffer[i].device == buffer[j].device) - buffer[i].unit++;; + buffer[i].unit++; } } @@ -625,7 +625,7 @@ erom_corecfg_fill_port_regions(struct bcma_erom *erom, EROM_LOG(erom, "unsupported region type %hhx\n", region_type); return (EINVAL); - }; + } /* Fetch the list to be populated */ sports = bcma_corecfg_get_port_list(corecfg, port_type); diff --git a/sys/dev/bhnd/bhndb/bhndb_pci.c b/sys/dev/bhnd/bhndb/bhndb_pci.c index 03a0996..ac5409a 100644 --- a/sys/dev/bhnd/bhndb/bhndb_pci.c +++ b/sys/dev/bhnd/bhndb/bhndb_pci.c @@ -1007,7 +1007,7 @@ bhndb_pci_discover_quirks(struct bhndb_pci_softc *sc, for (qt = id->quirks; qt->quirks != 0; qt++) { if (bhnd_hwrev_matches(hwrev, &qt->hwrev)) quirks |= qt->quirks; - }; + } } diff --git a/sys/dev/bhnd/cores/chipc/chipc.c b/sys/dev/bhnd/cores/chipc/chipc.c index f47a8f2..e03ddfe 100644 --- a/sys/dev/bhnd/cores/chipc/chipc.c +++ b/sys/dev/bhnd/cores/chipc/chipc.c @@ -160,7 +160,7 @@ chipc_attach(device_t dev) for (dq = chipc_quirks; dq->quirks != 0; dq++) { if (bhnd_hwrev_matches(bhnd_get_hwrev(dev), &dq->hwrev)) sc->quirks |= dq->quirks; - }; + } // TODO switch (bhnd_chipc_nvram_src(dev)) { diff --git a/sys/dev/bhnd/siba/siba.c b/sys/dev/bhnd/siba/siba.c index 5f1410d..9e837e3f 100644 --- a/sys/dev/bhnd/siba/siba.c +++ b/sys/dev/bhnd/siba/siba.c @@ -126,7 +126,7 @@ siba_attach(device_t dev) error = ENXIO; goto cleanup; } - }; + } } cleanup: diff --git a/sys/dev/bktr/bktr_core.c b/sys/dev/bktr/bktr_core.c index c38afe5..764eda5 100644 --- a/sys/dev/bktr/bktr_core.c +++ b/sys/dev/bktr/bktr_core.c @@ -590,7 +590,7 @@ bktr_store_address(unit, BKTR_MEM_BUF, buf); bktr->id = BROOKTREE_879; break; } - }; + } bktr->clr_on_start = FALSE; @@ -3046,7 +3046,7 @@ rgb_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace ) /* sync vro */ *dma_prog++ = OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO; *dma_prog++ = 0; /* NULL WORD */ - *dma_prog++ = OP_JUMP; ; + *dma_prog++ = OP_JUMP; *dma_prog = (uint32_t ) vtophys(bktr->odd_dma_prog); break; } diff --git a/sys/dev/bktr/bktr_os.c b/sys/dev/bktr/bktr_os.c index e5ea53b..e8c0f7b 100644 --- a/sys/dev/bktr/bktr_os.c +++ b/sys/dev/bktr/bktr_os.c @@ -304,7 +304,7 @@ bktr_probe( device_t dev ) device_set_desc(dev, "BrookTree 879"); return BUS_PROBE_DEFAULT; } - }; + } return ENXIO; } diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c index 53d8e97..91a5bf3 100644 --- a/sys/dev/bxe/bxe.c +++ b/sys/dev/bxe/bxe.c @@ -1620,7 +1620,7 @@ bxe_read_dmae(struct bxe_softc *sc, /* issue the command and wait for completion */ if ((rc = bxe_issue_dmae_with_comp(sc, &dmae)) != 0) { bxe_panic(sc, ("DMAE failed (%d)\n", rc)); - }; + } } void diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c index b33f462a..e785b0f 100644 --- a/sys/dev/cardbus/cardbus.c +++ b/sys/dev/cardbus/cardbus.c @@ -226,31 +226,30 @@ cardbus_attach_card(device_t cbdev) return (ENOENT); } +static void +cardbus_child_deleted(device_t cbdev, device_t child) +{ + struct cardbus_devinfo *dinfo = device_get_ivars(child); + + if (dinfo->pci.cfg.dev != child) + device_printf(cbdev, "devinfo dev mismatch\n"); + cardbus_device_destroy(dinfo); + pci_child_deleted(cbdev, child); +} + static int cardbus_detach_card(device_t cbdev) { - int numdevs; - device_t *devlist; - int tmp; int err = 0; - if (device_get_children(cbdev, &devlist, &numdevs) != 0) - return (ENOENT); - if (numdevs == 0) { - free(devlist, M_TEMP); - return (ENOENT); - } - - for (tmp = 0; tmp < numdevs; tmp++) { - struct cardbus_devinfo *dinfo = device_get_ivars(devlist[tmp]); + err = bus_generic_detach(cbdev); + if (err) + return (err); + err = device_delete_children(cbdev); + if (err) + return (err); - if (dinfo->pci.cfg.dev != devlist[tmp]) - device_printf(cbdev, "devinfo dev mismatch\n"); - cardbus_device_destroy(dinfo); - pci_delete_child(cbdev, devlist[tmp]); - } POWER_DISABLE_SOCKET(device_get_parent(cbdev), cbdev); - free(devlist, M_TEMP); return (err); } @@ -335,6 +334,7 @@ static device_method_t cardbus_methods[] = { DEVMETHOD(device_resume, cardbus_resume), /* Bus interface */ + DEVMETHOD(bus_child_deleted, cardbus_child_deleted), DEVMETHOD(bus_get_dma_tag, bus_generic_get_dma_tag), DEVMETHOD(bus_read_ivar, cardbus_read_ivar), DEVMETHOD(bus_driver_added, cardbus_driver_added), diff --git a/sys/dev/cxgbe/firmware/t5fw_cfg.txt b/sys/dev/cxgbe/firmware/t5fw_cfg.txt index 9e16da5..721ff37 100644 --- a/sys/dev/cxgbe/firmware/t5fw_cfg.txt +++ b/sys/dev/cxgbe/firmware/t5fw_cfg.txt @@ -151,6 +151,7 @@ niqflint = 512 nethctrl = 1024 neq = 2048 + nqpcq = 8192 nexactf = 456 cmask = all pmask = all @@ -289,7 +290,7 @@ [fini] version = 0x1 - checksum = 0x2d7417e5 + checksum = 0x89c83d98 # # $FreeBSD$ # diff --git a/sys/dev/cxgbe/iw_cxgbe/mem.c b/sys/dev/cxgbe/iw_cxgbe/mem.c index e42aa1a..f7e90a5 100644 --- a/sys/dev/cxgbe/iw_cxgbe/mem.c +++ b/sys/dev/cxgbe/iw_cxgbe/mem.c @@ -796,7 +796,7 @@ struct ib_fast_reg_page_list *c4iw_alloc_fastreg_pbl(struct ib_device *device, if (c4pl) dma_addr = vtophys(c4pl); else - return ERR_PTR(-ENOMEM);; + return ERR_PTR(-ENOMEM); pci_unmap_addr_set(c4pl, mapping, dma_addr); c4pl->dma_addr = dma_addr; diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index 11d4253..e3b64b0 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -28,6 +28,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_ddb.h" #include "opt_inet.h" #include "opt_inet6.h" #include "opt_rss.h" @@ -63,6 +64,10 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/pmap.h> #endif +#ifdef DDB +#include <ddb/ddb.h> +#include <ddb/db_lex.h> +#endif #include "common/common.h" #include "common/t4_msg.h" @@ -2123,7 +2128,7 @@ rw_via_memwin(struct adapter *sc, int idx, uint32_t addr, uint32_t *val, } else { v = *val++; t4_write_reg(sc, mw->mw_base + addr - - mw->mw_curpos, htole32(v));; + mw->mw_curpos, htole32(v)); } addr += 4; len -= 4; @@ -9163,6 +9168,179 @@ tweak_tunables(void) t4_intr_types &= INTR_MSIX | INTR_MSI | INTR_INTX; } +#ifdef DDB +static void +t4_dump_tcb(struct adapter *sc, int tid) +{ + uint32_t base, i, j, off, pf, reg, save, tcb_addr, win_pos; + + reg = PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2); + save = t4_read_reg(sc, reg); + base = sc->memwin[2].mw_base; + + /* Dump TCB for the tid */ + tcb_addr = t4_read_reg(sc, A_TP_CMM_TCB_BASE); + tcb_addr += tid * TCB_SIZE; + + if (is_t4(sc)) { + pf = 0; + win_pos = tcb_addr & ~0xf; /* start must be 16B aligned */ + } else { + pf = V_PFNUM(sc->pf); + win_pos = tcb_addr & ~0x7f; /* start must be 128B aligned */ + } + t4_write_reg(sc, reg, win_pos | pf); + t4_read_reg(sc, reg); + + off = tcb_addr - win_pos; + for (i = 0; i < 4; i++) { + uint32_t buf[8]; + for (j = 0; j < 8; j++, off += 4) + buf[j] = htonl(t4_read_reg(sc, base + off)); + + db_printf("%08x %08x %08x %08x %08x %08x %08x %08x\n", + buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], + buf[7]); + } + + t4_write_reg(sc, reg, save); + t4_read_reg(sc, reg); +} + +static void +t4_dump_devlog(struct adapter *sc) +{ + struct devlog_params *dparams = &sc->params.devlog; + struct fw_devlog_e e; + int i, first, j, m, nentries, rc; + uint64_t ftstamp = UINT64_MAX; + + if (dparams->start == 0) { + db_printf("devlog params not valid\n"); + return; + } + + nentries = dparams->size / sizeof(struct fw_devlog_e); + m = fwmtype_to_hwmtype(dparams->memtype); + + /* Find the first entry. */ + first = -1; + for (i = 0; i < nentries && !db_pager_quit; i++) { + rc = -t4_mem_read(sc, m, dparams->start + i * sizeof(e), + sizeof(e), (void *)&e); + if (rc != 0) + break; + + if (e.timestamp == 0) + break; + + e.timestamp = be64toh(e.timestamp); + if (e.timestamp < ftstamp) { + ftstamp = e.timestamp; + first = i; + } + } + + if (first == -1) + return; + + i = first; + do { + rc = -t4_mem_read(sc, m, dparams->start + i * sizeof(e), + sizeof(e), (void *)&e); + if (rc != 0) + return; + + if (e.timestamp == 0) + return; + + e.timestamp = be64toh(e.timestamp); + e.seqno = be32toh(e.seqno); + for (j = 0; j < 8; j++) + e.params[j] = be32toh(e.params[j]); + + db_printf("%10d %15ju %8s %8s ", + e.seqno, e.timestamp, + (e.level < nitems(devlog_level_strings) ? + devlog_level_strings[e.level] : "UNKNOWN"), + (e.facility < nitems(devlog_facility_strings) ? + devlog_facility_strings[e.facility] : "UNKNOWN")); + db_printf(e.fmt, e.params[0], e.params[1], e.params[2], + e.params[3], e.params[4], e.params[5], e.params[6], + e.params[7]); + + if (++i == nentries) + i = 0; + } while (i != first && !db_pager_quit); +} + +static struct command_table db_t4_table = LIST_HEAD_INITIALIZER(db_t4_table); +_DB_SET(_show, t4, NULL, db_show_table, 0, &db_t4_table); + +DB_FUNC(devlog, db_show_devlog, db_t4_table, CS_OWN, NULL) +{ + device_t dev; + int t; + bool valid; + + valid = false; + t = db_read_token(); + if (t == tIDENT) { + dev = device_lookup_by_name(db_tok_string); + valid = true; + } + db_skip_to_eol(); + if (!valid) { + db_printf("usage: show t4 devlog <nexus>\n"); + return; + } + + if (dev == NULL) { + db_printf("device not found\n"); + return; + } + + t4_dump_devlog(device_get_softc(dev)); +} + +DB_FUNC(tcb, db_show_t4tcb, db_t4_table, CS_OWN, NULL) +{ + device_t dev; + int radix, tid, t; + bool valid; + + valid = false; + radix = db_radix; + db_radix = 10; + t = db_read_token(); + if (t == tIDENT) { + dev = device_lookup_by_name(db_tok_string); + t = db_read_token(); + if (t == tNUMBER) { + tid = db_tok_number; + valid = true; + } + } + db_radix = radix; + db_skip_to_eol(); + if (!valid) { + db_printf("usage: show t4 tcb <nexus> <tid>\n"); + return; + } + + if (dev == NULL) { + db_printf("device not found\n"); + return; + } + if (tid < 0) { + db_printf("invalid tid\n"); + return; + } + + t4_dump_tcb(device_get_softc(dev), tid); +} +#endif + static struct sx mlu; /* mod load unload */ SX_SYSINIT(cxgbe_mlu, &mlu, "cxgbe mod load/unload"); diff --git a/sys/dev/cxgbe/tom/t4_ddp.c b/sys/dev/cxgbe/tom/t4_ddp.c index 2df02577..2aa774d 100644 --- a/sys/dev/cxgbe/tom/t4_ddp.c +++ b/sys/dev/cxgbe/tom/t4_ddp.c @@ -80,31 +80,6 @@ static struct mbuf *get_ddp_mbuf(int len); /* XXX: must match A_ULP_RX_TDDP_PSZ */ static int t4_ddp_pgsz[] = {4096, 4096 << 2, 4096 << 4, 4096 << 6}; -#if 0 -static void -t4_dump_tcb(struct adapter *sc, int tid) -{ - uint32_t tcb_base, off, i, j; - - /* Dump TCB for the tid */ - tcb_base = t4_read_reg(sc, A_TP_CMM_TCB_BASE); - t4_write_reg(sc, PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2), - tcb_base + tid * TCB_SIZE); - t4_read_reg(sc, PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2)); - off = 0; - printf("\n"); - for (i = 0; i < 4; i++) { - uint32_t buf[8]; - for (j = 0; j < 8; j++, off += 4) - buf[j] = htonl(t4_read_reg(sc, MEMWIN2_BASE + off)); - - printf("%08x %08x %08x %08x %08x %08x %08x %08x\n", - buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], - buf[7]); - } -} -#endif - #define MAX_DDP_BUFFER_SIZE (M_TCB_RX_DDP_BUF0_LEN) static int alloc_ppods(struct tom_data *td, int n, u_int *ppod_addr) diff --git a/sys/dev/drm2/radeon/radeon_bios.c b/sys/dev/drm2/radeon/radeon_bios.c index ffb3756..78416bb 100644 --- a/sys/dev/drm2/radeon/radeon_bios.c +++ b/sys/dev/drm2/radeon/radeon_bios.c @@ -676,7 +676,7 @@ static bool radeon_acpi_vfct_bios(struct radeon_device *rdev) vhdr->DeviceID != rdev->ddev->pci_device) { DRM_INFO("ACPI VFCT table is not for this card\n"); goto out_unmap; - }; + } if (vfct->VBIOSImageOffset + sizeof(VFCT_IMAGE_HEADER) + vhdr->ImageLength > tbl_size) { DRM_ERROR("ACPI VFCT image truncated\n"); diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c index f0548d8..1984c48 100644 --- a/sys/dev/dwc/if_dwc.c +++ b/sys/dev/dwc/if_dwc.c @@ -70,6 +70,11 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/ofw_bus.h> #include <dev/ofw/ofw_bus_subr.h> +#ifdef EXT_RESOURCES +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> +#endif + #include "if_dwc_if.h" #include "gpio_if.h" #include "miibus_if.h" @@ -1068,6 +1073,36 @@ dwc_reset(device_t dev) return (0); } +#ifdef EXT_RESOURCES +static int +dwc_clock_init(device_t dev) +{ + hwreset_t rst; + clk_t clk; + int error; + + /* Enable clock */ + if (clk_get_by_ofw_name(dev, "stmmaceth", &clk) == 0) { + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "could not enable main clock\n"); + return (error); + } + } + + /* De-assert reset */ + if (hwreset_get_by_ofw_name(dev, "stmmaceth", &rst) == 0) { + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(dev, "could not de-assert reset\n"); + return (error); + } + } + + return (0); +} +#endif + static int dwc_probe(device_t dev) { @@ -1101,6 +1136,11 @@ dwc_attach(device_t dev) if (IF_DWC_INIT(dev) != 0) return (ENXIO); +#ifdef EXT_RESOURCES + if (dwc_clock_init(dev) != 0) + return (ENXIO); +#endif + if (bus_alloc_resources(dev, dwc_spec, sc->res)) { device_printf(dev, "could not allocate resources\n"); return (ENXIO); diff --git a/sys/dev/etherswitch/arswitch/arswitch.c b/sys/dev/etherswitch/arswitch/arswitch.c index 4388819..8396f8a 100644 --- a/sys/dev/etherswitch/arswitch/arswitch.c +++ b/sys/dev/etherswitch/arswitch/arswitch.c @@ -225,7 +225,7 @@ arswitch_set_vlan_mode(struct arswitch_softc *sc, uint32_t mode) break; default: sc->vlan_mode = 0; - }; + } /* Reset VLANs. */ sc->hal.arswitch_vlan_init_hw(sc); diff --git a/sys/dev/etherswitch/arswitch/arswitch_8327.c b/sys/dev/etherswitch/arswitch/arswitch_8327.c index 6e221a8..92e44fc 100644 --- a/sys/dev/etherswitch/arswitch/arswitch_8327.c +++ b/sys/dev/etherswitch/arswitch/arswitch_8327.c @@ -662,7 +662,7 @@ ar8327_hw_setup(struct arswitch_softc *sc) /* start PHY autonegotiation? */ /* XXX is this done as part of the normal PHY setup? */ - }; + } /* Let things settle */ DELAY(1000); diff --git a/sys/dev/etherswitch/ip17x/ip175c.c b/sys/dev/etherswitch/ip17x/ip175c.c index f787052..30614a4 100644 --- a/sys/dev/etherswitch/ip17x/ip175c.c +++ b/sys/dev/etherswitch/ip17x/ip175c.c @@ -210,7 +210,7 @@ ip175c_set_vlan_mode(struct ip17x_softc *sc, uint32_t mode) ip17x_updatephy(sc->sc_dev, 30, 9, 0x80, 0); sc->vlan_mode = ETHERSWITCH_VLAN_PORT; break; - }; + } /* Reset vlans. */ ip17x_reset_vlans(sc, sc->vlan_mode); diff --git a/sys/dev/etherswitch/ip17x/ip175d.c b/sys/dev/etherswitch/ip17x/ip175d.c index 4962ac2..5d43641 100644 --- a/sys/dev/etherswitch/ip17x/ip175d.c +++ b/sys/dev/etherswitch/ip17x/ip175d.c @@ -167,7 +167,7 @@ ip175d_set_vlan_mode(struct ip17x_softc *sc, uint32_t mode) ip17x_updatephy(sc->sc_dev, 22, 0, 0xbfff, 0x8000); sc->vlan_mode = 0; break; - }; + } if (sc->vlan_mode != 0) { /* diff --git a/sys/dev/gpio/gpioiic.c b/sys/dev/gpio/gpioiic.c index 15f8f18..d365eea 100644 --- a/sys/dev/gpio/gpioiic.c +++ b/sys/dev/gpio/gpioiic.c @@ -157,7 +157,7 @@ gpioiic_callback(device_t dev, int index, caddr_t data) int error, how; how = GPIOBUS_DONTWAIT; - if (data != NULL && (int)*data == IIC_WAIT) + if (data != NULL && *(int*)data == IIC_WAIT) how = GPIOBUS_WAIT; error = 0; switch (index) { diff --git a/sys/dev/hwpmc/hwpmc_e500.c b/sys/dev/hwpmc/hwpmc_e500.c index f8ae119..dbec7ae 100644 --- a/sys/dev/hwpmc/hwpmc_e500.c +++ b/sys/dev/hwpmc/hwpmc_e500.c @@ -507,6 +507,7 @@ e500_allocate_pmc(int cpu, int ri, struct pmc *pm, pe = a->pm_ev; config = PMLCax_FCS | PMLCax_FCU | PMLCax_FCM1 | PMLCax_FCM1; + if (pe < PMC_EV_E500_FIRST || pe > PMC_EV_E500_LAST) return (EINVAL); @@ -517,14 +518,14 @@ e500_allocate_pmc(int cpu, int ri, struct pmc *pm, vers = mfpvr() >> 16; switch (vers) { case FSL_E500v1: - pe_cpu_mask = ev->pe_code & PMC_PPC_E500V1; + pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V1; break; case FSL_E500v2: - pe_cpu_mask = ev->pe_code & PMC_PPC_E500V2; + pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V2; break; case FSL_E500mc: case FSL_E5500: - pe_cpu_mask = ev->pe_code & PMC_PPC_E500MC; + pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500MC; break; } if (pe_cpu_mask == 0) diff --git a/sys/dev/hwpmc/hwpmc_mips.c b/sys/dev/hwpmc/hwpmc_mips.c index 72f8e89..d9c26af 100644 --- a/sys/dev/hwpmc/hwpmc_mips.c +++ b/sys/dev/hwpmc/hwpmc_mips.c @@ -543,7 +543,7 @@ pmc_next_frame(register_t *pc, register_t *sp) case OP_SYSCALL: case OP_BREAK: more = 1; /* stop now */ - }; + } break; case OP_BCOND: @@ -564,7 +564,7 @@ pmc_next_frame(register_t *pc, register_t *sp) case OP_BCx: case OP_BCy: more = 2; /* stop after next instruction */ - }; + } break; case OP_SW: diff --git a/sys/dev/hyperv/netvsc/hv_net_vsc.c b/sys/dev/hyperv/netvsc/hv_net_vsc.c index f6d7d9e..11b3435 100644 --- a/sys/dev/hyperv/netvsc/hv_net_vsc.c +++ b/sys/dev/hyperv/netvsc/hv_net_vsc.c @@ -742,10 +742,8 @@ cleanup: * Free the packet buffers on the netvsc device packet queue. * Release other resources. */ - if (net_dev) { - sema_destroy(&net_dev->channel_init_sema); - free(net_dev, M_NETVSC); - } + sema_destroy(&net_dev->channel_init_sema); + free(net_dev, M_NETVSC); return (NULL); } diff --git a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c index acc49b4..68c301a 100644 --- a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c +++ b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c @@ -136,6 +136,8 @@ __FBSDID("$FreeBSD$"); #define HN_LROENT_CNT_DEF 128 +#define HN_RING_CNT_DEF_MAX 8 + #define HN_RNDIS_MSG_LEN \ (sizeof(rndis_msg) + \ RNDIS_HASH_PPI_SIZE + \ @@ -280,12 +282,12 @@ static int hn_use_if_start = 0; SYSCTL_INT(_hw_hn, OID_AUTO, use_if_start, CTLFLAG_RDTUN, &hn_use_if_start, 0, "Use if_start TX method"); -static int hn_chan_cnt = 1; +static int hn_chan_cnt = 0; SYSCTL_INT(_hw_hn, OID_AUTO, chan_cnt, CTLFLAG_RDTUN, &hn_chan_cnt, 0, "# of channels to use; each channel has one RX ring and one TX ring"); -static int hn_tx_ring_cnt = 1; +static int hn_tx_ring_cnt = 0; SYSCTL_INT(_hw_hn, OID_AUTO, tx_ring_cnt, CTLFLAG_RDTUN, &hn_tx_ring_cnt, 0, "# of TX rings to use"); @@ -460,8 +462,14 @@ netvsc_attach(device_t dev) * The # of RX rings to use is same as the # of channels to use. */ ring_cnt = hn_chan_cnt; - if (ring_cnt <= 0 || ring_cnt > mp_ncpus) + if (ring_cnt <= 0) { + /* Default */ + ring_cnt = mp_ncpus; + if (ring_cnt > HN_RING_CNT_DEF_MAX) + ring_cnt = HN_RING_CNT_DEF_MAX; + } else if (ring_cnt > mp_ncpus) { ring_cnt = mp_ncpus; + } tx_ring_cnt = hn_tx_ring_cnt; if (tx_ring_cnt <= 0 || tx_ring_cnt > ring_cnt) diff --git a/sys/dev/hyperv/netvsc/hv_rndis_filter.c b/sys/dev/hyperv/netvsc/hv_rndis_filter.c index 1eb24fa..19da7e5 100644 --- a/sys/dev/hyperv/netvsc/hv_rndis_filter.c +++ b/sys/dev/hyperv/netvsc/hv_rndis_filter.c @@ -405,8 +405,7 @@ hv_rf_send_offload_request(struct hv_device *device, } cleanup: - if (request) - hv_put_rndis_request(rndis_dev, request); + hv_put_rndis_request(rndis_dev, request); return (ret); } @@ -907,10 +906,8 @@ hv_rf_halt_device(rndis_device *device) } device->state = RNDIS_DEV_UNINITIALIZED; - - if (request != NULL) { - hv_put_rndis_request(device, request); - } + + hv_put_rndis_request(device, request); return (0); } diff --git a/sys/dev/hyperv/utilities/hv_heartbeat.c b/sys/dev/hyperv/utilities/hv_heartbeat.c index 09bd28b..62de10b 100644 --- a/sys/dev/hyperv/utilities/hv_heartbeat.c +++ b/sys/dev/hyperv/utilities/hv_heartbeat.c @@ -59,7 +59,7 @@ hv_heartbeat_cb(void *context) hv_util_sc *softc; softc = (hv_util_sc*)context; - buf = softc->receive_buffer;; + buf = softc->receive_buffer; channel = softc->hv_dev->channel; ret = hv_vmbus_channel_recv_packet(channel, buf, PAGE_SIZE, &recvlen, diff --git a/sys/dev/hyperv/utilities/hv_kvp.c b/sys/dev/hyperv/utilities/hv_kvp.c index d71310b..50563c4 100644 --- a/sys/dev/hyperv/utilities/hv_kvp.c +++ b/sys/dev/hyperv/utilities/hv_kvp.c @@ -619,7 +619,7 @@ hv_kvp_process_request(void *context, int pending) hv_kvp_log_info("%s: entering hv_kvp_process_request\n", __func__); sc = (hv_kvp_sc*)context; - kvp_buf = sc->util_sc.receive_buffer;; + kvp_buf = sc->util_sc.receive_buffer; channel = sc->util_sc.hv_dev->channel; ret = hv_vmbus_channel_recv_packet(channel, kvp_buf, 2 * PAGE_SIZE, diff --git a/sys/dev/hyperv/utilities/hv_shutdown.c b/sys/dev/hyperv/utilities/hv_shutdown.c index 0beed5a..b0802af 100644 --- a/sys/dev/hyperv/utilities/hv_shutdown.c +++ b/sys/dev/hyperv/utilities/hv_shutdown.c @@ -63,7 +63,7 @@ hv_shutdown_cb(void *context) hv_util_sc *softc; softc = (hv_util_sc*)context; - buf = softc->receive_buffer;; + buf = softc->receive_buffer; channel = softc->hv_dev->channel; ret = hv_vmbus_channel_recv_packet(channel, buf, PAGE_SIZE, &recv_len, &request_id); diff --git a/sys/dev/hyperv/vmbus/hv_channel.c b/sys/dev/hyperv/vmbus/hv_channel.c index 03a3457..46d15bf 100644 --- a/sys/dev/hyperv/vmbus/hv_channel.c +++ b/sys/dev/hyperv/vmbus/hv_channel.c @@ -270,12 +270,12 @@ hv_vmbus_channel_open( if (user_data_len) memcpy(open_msg->user_data, user_data, user_data_len); - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL( &hv_vmbus_g_connection.channel_msg_anchor, open_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message( open_msg, sizeof(hv_vmbus_channel_open_channel)); @@ -302,12 +302,12 @@ hv_vmbus_channel_open( } cleanup: - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE( &hv_vmbus_g_connection.channel_msg_anchor, open_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); sema_destroy(&open_info->wait_sema); free(open_info, M_DEVBUF); @@ -496,13 +496,13 @@ hv_vmbus_channel_establish_gpadl( gpadl_msg->child_rel_id = channel->offer_msg.child_rel_id; gpadl_msg->gpadl = next_gpadl_handle; - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message( gpadl_msg, @@ -541,10 +541,10 @@ hv_vmbus_channel_establish_gpadl( cleanup: - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE(&hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); sema_destroy(&msg_info->wait_sema); free(msg_info, M_DEVBUF); @@ -583,10 +583,10 @@ hv_vmbus_channel_teardown_gpdal( msg->child_rel_id = channel->offer_msg.child_rel_id; msg->gpadl = gpadl_handle; - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL(&hv_vmbus_g_connection.channel_msg_anchor, info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message(msg, sizeof(hv_vmbus_channel_gpadl_teardown)); @@ -599,10 +599,10 @@ cleanup: /* * Received a torndown response */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE(&hv_vmbus_g_connection.channel_msg_anchor, info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); sema_destroy(&info->wait_sema); free(info, M_DEVBUF); diff --git a/sys/dev/hyperv/vmbus/hv_channel_mgmt.c b/sys/dev/hyperv/vmbus/hv_channel_mgmt.c index 30f2504..42d3750 100644 --- a/sys/dev/hyperv/vmbus/hv_channel_mgmt.c +++ b/sys/dev/hyperv/vmbus/hv_channel_mgmt.c @@ -492,7 +492,7 @@ vmbus_channel_on_open_result(hv_vmbus_channel_msg_header* hdr) /* * Find the open msg, copy the result and signal/unblock the wait event */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { @@ -510,7 +510,7 @@ vmbus_channel_on_open_result(hv_vmbus_channel_msg_header* hdr) } } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } @@ -534,7 +534,7 @@ vmbus_channel_on_gpadl_created(hv_vmbus_channel_msg_header* hdr) /* Find the establish msg, copy the result and signal/unblock * the wait event */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { request_header = (hv_vmbus_channel_msg_header*) msg_info->msg; @@ -553,7 +553,7 @@ vmbus_channel_on_gpadl_created(hv_vmbus_channel_msg_header* hdr) } } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } /** @@ -578,7 +578,7 @@ vmbus_channel_on_gpadl_torndown(hv_vmbus_channel_msg_header* hdr) * wait event. */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { @@ -598,7 +598,7 @@ vmbus_channel_on_gpadl_torndown(hv_vmbus_channel_msg_header* hdr) } } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } /** @@ -618,7 +618,7 @@ vmbus_channel_on_version_response(hv_vmbus_channel_msg_header* hdr) versionResponse = (hv_vmbus_channel_version_response*)hdr; - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { requestHeader = (hv_vmbus_channel_msg_header*) msg_info->msg; @@ -632,7 +632,7 @@ vmbus_channel_on_version_response(hv_vmbus_channel_msg_header* hdr) sema_post(&msg_info->wait_sema); } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } diff --git a/sys/dev/hyperv/vmbus/hv_connection.c b/sys/dev/hyperv/vmbus/hv_connection.c index e170298..44effef 100644 --- a/sys/dev/hyperv/vmbus/hv_connection.c +++ b/sys/dev/hyperv/vmbus/hv_connection.c @@ -96,26 +96,26 @@ hv_vmbus_negotiate_version(hv_vmbus_channel_msg_info *msg_info, * Add to list before we send the request since we may receive the * response before returning from this routine */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message( msg, sizeof(hv_vmbus_channel_initiate_contact)); if (ret != 0) { - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); return (ret); } @@ -124,12 +124,12 @@ hv_vmbus_negotiate_version(hv_vmbus_channel_msg_info *msg_info, */ ret = sema_timedwait(&msg_info->wait_sema, 5 * hz); /* KYS 5 seconds */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); /** * Check if successful @@ -166,7 +166,7 @@ hv_vmbus_connect(void) { TAILQ_INIT(&hv_vmbus_g_connection.channel_msg_anchor); mtx_init(&hv_vmbus_g_connection.channel_msg_lock, "vmbus channel msg", - NULL, MTX_SPIN); + NULL, MTX_DEF); TAILQ_INIT(&hv_vmbus_g_connection.channel_anchor); mtx_init(&hv_vmbus_g_connection.channel_lock, "vmbus channel", diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index a87b5ce..b835a34 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -33,10 +33,10 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> +#include <sys/kernel.h> #include <sys/malloc.h> #include <sys/pcpu.h> #include <sys/timetc.h> -#include <sys/kernel.h> #include <machine/bus.h> #include <machine/md_var.h> #include <vm/vm.h> @@ -48,9 +48,16 @@ __FBSDID("$FreeBSD$"); #define HV_NANOSECONDS_PER_SEC 1000000000L +#define HYPERV_INTERFACE 0x31237648 /* HV#1 */ static u_int hv_get_timecount(struct timecounter *tc); +u_int hyperv_features; +u_int hyperv_recommends; + +static u_int hyperv_pm_features; +static u_int hyperv_features3; + /** * Globals */ @@ -71,47 +78,6 @@ hv_get_timecount(struct timecounter *tc) } /** - * @brief Query the cpuid for presence of windows hypervisor - */ -int -hv_vmbus_query_hypervisor_presence(void) -{ - if (vm_guest != VM_GUEST_HV) - return (0); - - return (hv_high >= HV_X64_CPUID_MIN && hv_high <= HV_X64_CPUID_MAX); -} - -/** - * @brief Get version of the windows hypervisor - */ -static int -hv_vmbus_get_hypervisor_version(void) -{ - u_int regs[4]; - unsigned int maxLeaf; - unsigned int op; - - /* - * Its assumed that this is called after confirming that - * Viridian is present - * Query id and revision. - */ - op = HV_CPU_ID_FUNCTION_HV_VENDOR_AND_MAX_FUNCTION; - do_cpuid(op, regs); - - maxLeaf = regs[0]; - op = HV_CPU_ID_FUNCTION_HV_INTERFACE; - do_cpuid(op, regs); - - if (maxLeaf >= HV_CPU_ID_FUNCTION_MS_HV_VERSION) { - op = HV_CPU_ID_FUNCTION_MS_HV_VERSION; - do_cpuid(op, regs); - } - return (maxLeaf); -} - -/** * @brief Invoke the specified hypercall */ static uint64_t @@ -160,7 +126,6 @@ hv_vmbus_do_hypercall(uint64_t control, void* input, void* output) int hv_vmbus_init(void) { - int max_leaf; hv_vmbus_x64_msr_hypercall_contents hypercall_msr; void* virt_addr = 0; @@ -177,8 +142,6 @@ hv_vmbus_init(void) if (vm_guest != VM_GUEST_HV) goto cleanup; - max_leaf = hv_vmbus_get_hypervisor_version(); - /* * Write our OS info */ @@ -436,14 +399,117 @@ void hv_vmbus_synic_cleanup(void *arg) wrmsr(HV_X64_MSR_SIEFP, siefp.as_uint64_t); } -static void -hv_tc_init(void) +static bool +hyperv_identify(void) { + u_int regs[4]; + unsigned int maxLeaf; + unsigned int op; + if (vm_guest != VM_GUEST_HV) - return; + return (false); + + op = HV_CPU_ID_FUNCTION_HV_VENDOR_AND_MAX_FUNCTION; + do_cpuid(op, regs); + maxLeaf = regs[0]; + if (maxLeaf < HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS) + return (false); + + op = HV_CPU_ID_FUNCTION_HV_INTERFACE; + do_cpuid(op, regs); + if (regs[0] != HYPERV_INTERFACE) + return (false); - /* register virtual timecounter */ - tc_init(&hv_timecounter); + op = HV_CPU_ID_FUNCTION_MS_HV_FEATURES; + do_cpuid(op, regs); + if ((regs[0] & HV_FEATURE_MSR_HYPERCALL) == 0) { + /* + * Hyper-V w/o Hypercall is impossible; someone + * is faking Hyper-V. + */ + return (false); + } + hyperv_features = regs[0]; + hyperv_pm_features = regs[2]; + hyperv_features3 = regs[3]; + + op = HV_CPU_ID_FUNCTION_MS_HV_VERSION; + do_cpuid(op, regs); + printf("Hyper-V Version: %d.%d.%d [SP%d]\n", + regs[1] >> 16, regs[1] & 0xffff, regs[0], regs[2]); + + printf(" Features=0x%b\n", hyperv_features, + "\020" + "\001VPRUNTIME" /* MSR_VP_RUNTIME */ + "\002TMREFCNT" /* MSR_TIME_REF_COUNT */ + "\003SYNIC" /* MSRs for SynIC */ + "\004SYNTM" /* MSRs for SynTimer */ + "\005APIC" /* MSR_{EOI,ICR,TPR} */ + "\006HYPERCALL" /* MSR_{GUEST_OS_ID,HYPERCALL} */ + "\007VPINDEX" /* MSR_VP_INDEX */ + "\010RESET" /* MSR_RESET */ + "\011STATS" /* MSR_STATS_ */ + "\012REFTSC" /* MSR_REFERENCE_TSC */ + "\013IDLE" /* MSR_GUEST_IDLE */ + "\014TMFREQ" /* MSR_{TSC,APIC}_FREQUENCY */ + "\015DEBUG"); /* MSR_SYNTH_DEBUG_ */ + printf(" PM Features=max C%u, 0x%b\n", + HV_PM_FEATURE_CSTATE(hyperv_pm_features), + (hyperv_pm_features & ~HV_PM_FEATURE_CSTATE_MASK), + "\020" + "\005C3HPET"); /* HPET is required for C3 state */ + printf(" Features3=0x%b\n", hyperv_features3, + "\020" + "\001MWAIT" /* MWAIT */ + "\002DEBUG" /* guest debug support */ + "\003PERFMON" /* performance monitor */ + "\004PCPUDPE" /* physical CPU dynamic partition event */ + "\005XMMHC" /* hypercall input through XMM regs */ + "\006IDLE" /* guest idle support */ + "\007SLEEP" /* hypervisor sleep support */ + "\010NUMA" /* NUMA distance query support */ + "\011TMFREQ" /* timer frequency query (TSC, LAPIC) */ + "\012SYNCMC" /* inject synthetic machine checks */ + "\013CRASH" /* MSRs for guest crash */ + "\014DEBUGMSR" /* MSRs for guest debug */ + "\015NPIEP" /* NPIEP */ + "\016HVDIS"); /* disabling hypervisor */ + + op = HV_CPU_ID_FUNCTION_MS_HV_ENLIGHTENMENT_INFORMATION; + do_cpuid(op, regs); + hyperv_recommends = regs[0]; + if (bootverbose) + printf(" Recommends: %08x %08x\n", regs[0], regs[1]); + + op = HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS; + do_cpuid(op, regs); + if (bootverbose) { + printf(" Limits: Vcpu:%d Lcpu:%d Int:%d\n", + regs[0], regs[1], regs[2]); + } + + if (maxLeaf >= HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE) { + op = HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE; + do_cpuid(op, regs); + if (bootverbose) { + printf(" HW Features: %08x AMD: %08x\n", + regs[0], regs[3]); + } + } + + return (true); } -SYSINIT(hv_tc_init, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hv_tc_init, NULL); +static void +hyperv_init(void *dummy __unused) +{ + if (!hyperv_identify()) + return; + + if (hyperv_features & HV_FEATURE_MSR_TIME_REFCNT) { + /* Register virtual timecount */ + tc_init(&hv_timecounter); + } +} +SYSINIT(hyperv_initialize, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hyperv_init, + NULL); diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c index 669a532..8a07e45 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c +++ b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c @@ -117,8 +117,12 @@ handled: * message_pending and EOMing. Otherwise, the EOMing will * not deliver any more messages * since there is no empty slot + * + * NOTE: + * mb() is used here, since atomic_thread_fence_seq_cst() + * will become compiler fence on UP kernel. */ - atomic_thread_fence_seq_cst(); + mb(); if (msg->header.message_flags.u.message_pending) { /* @@ -190,8 +194,12 @@ hv_vmbus_isr(struct trapframe *frame) * message_pending and EOMing. Otherwise, the EOMing will * not deliver any more messages * since there is no empty slot + * + * NOTE: + * mb() is used here, since atomic_thread_fence_seq_cst() + * will become compiler fence on UP kernel. */ - atomic_thread_fence_seq_cst(); + mb(); if (msg->header.message_flags.u.message_pending) { /* @@ -383,80 +391,9 @@ vmbus_probe(device_t dev) { } #ifdef HYPERV -extern inthand_t IDTVEC(rsvd), IDTVEC(hv_vmbus_callback); - -/** - * @brief Find a free IDT slot and setup the interrupt handler. - */ -static int -vmbus_vector_alloc(void) -{ - int vector; - uintptr_t func; - struct gate_descriptor *ip; - - /* - * Search backwards form the highest IDT vector available for use - * as vmbus channel callback vector. We install 'hv_vmbus_callback' - * handler at that vector and use it to interrupt vcpus. - */ - vector = APIC_SPURIOUS_INT; - while (--vector >= APIC_IPI_INTS) { - ip = &idt[vector]; - func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); - if (func == (uintptr_t)&IDTVEC(rsvd)) { -#ifdef __i386__ - setidt(vector , IDTVEC(hv_vmbus_callback), SDT_SYS386IGT, - SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); -#else - setidt(vector , IDTVEC(hv_vmbus_callback), SDT_SYSIGT, - SEL_KPL, 0); +extern inthand_t IDTVEC(hv_vmbus_callback); #endif - return (vector); - } - } - return (0); -} - -/** - * @brief Restore the IDT slot to rsvd. - */ -static void -vmbus_vector_free(int vector) -{ - uintptr_t func; - struct gate_descriptor *ip; - - if (vector == 0) - return; - - KASSERT(vector >= APIC_IPI_INTS && vector < APIC_SPURIOUS_INT, - ("invalid vector %d", vector)); - - ip = &idt[vector]; - func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); - KASSERT(func == (uintptr_t)&IDTVEC(hv_vmbus_callback), - ("invalid vector %d", vector)); - - setidt(vector, IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); -} - -#else /* HYPERV */ - -static int -vmbus_vector_alloc(void) -{ - return(0); -} - -static void -vmbus_vector_free(int vector) -{ -} - -#endif /* HYPERV */ - /** * @brief Main vmbus driver initialization routine. * @@ -489,12 +426,15 @@ vmbus_bus_init(void) return (ret); } +#ifdef HYPERV /* * Find a free IDT slot for vmbus callback. */ - hv_vmbus_g_context.hv_cb_vector = vmbus_vector_alloc(); - - if (hv_vmbus_g_context.hv_cb_vector == 0) { + hv_vmbus_g_context.hv_cb_vector = lapic_ipi_alloc(IDTVEC(hv_vmbus_callback)); +#else + hv_vmbus_g_context.hv_cb_vector = -1; +#endif + if (hv_vmbus_g_context.hv_cb_vector < 0) { if(bootverbose) printf("Error VMBUS: Cannot find free IDT slot for " "vmbus callback!\n"); @@ -587,7 +527,7 @@ vmbus_bus_init(void) } } - vmbus_vector_free(hv_vmbus_g_context.hv_cb_vector); + lapic_ipi_free(hv_vmbus_g_context.hv_cb_vector); cleanup: hv_vmbus_cleanup(); @@ -655,7 +595,7 @@ vmbus_bus_exit(void) } } - vmbus_vector_free(hv_vmbus_g_context.hv_cb_vector); + lapic_ipi_free(hv_vmbus_g_context.hv_cb_vector); return; } diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h index 1a0ed04..8410494 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h +++ b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h @@ -208,10 +208,10 @@ typedef struct { struct taskqueue *hv_msg_tq[MAXCPU]; struct task hv_msg_task[MAXCPU]; /* - * Host use this vector to intrrupt guest for vmbus channel + * Host use this vector to interrupt guest for vmbus channel * event and msg. */ - unsigned int hv_cb_vector; + int hv_cb_vector; } hv_vmbus_context; /* @@ -471,10 +471,28 @@ typedef enum { HV_CPU_ID_FUNCTION_MS_HV_VERSION = 0x40000002, HV_CPU_ID_FUNCTION_MS_HV_FEATURES = 0x40000003, HV_CPU_ID_FUNCTION_MS_HV_ENLIGHTENMENT_INFORMATION = 0x40000004, - HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS = 0x40000005 - + HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS = 0x40000005, + HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE = 0x40000006 } hv_vmbus_cpuid_function; +#define HV_FEATURE_MSR_TIME_REFCNT 0x0002 /* MSR_TIME_REF_COUNT */ +#define HV_FEATURE_MSR_SYNIC 0x0004 /* MSRs for SynIC */ +#define HV_FEATURE_MSR_SYNTIMER 0x0008 /* MSRs for SynTimer */ +#define HV_FEATURE_MSR_APIC 0x0010 /* MSR_{EOI,ICR,TPR} */ +#define HV_FEATURE_MSR_HYPERCALL 0x0020 /* MSR_{GUEST_OS_ID,HYPERCALL} */ +#define HV_FEATURE_MSR_GUEST_IDLE 0x0400 /* MSR_GUEST_IDLE */ + +#define HV_PM_FEATURE_CSTATE_MASK 0x000f +#define HV_PM_FEATURE_C3_HPET 0x0010 /* C3 requires HPET */ +#define HV_PM_FEATURE_CSTATE(f) ((f) & HV_PM_FEATURE_CSTATE_MASK) + +#define HV_FEATURE3_MWAIT 0x0001 /* MWAIT */ +#define HV_FEATURE3_XMM_HYPERCALL 0x0010 /* hypercall input through XMM regs */ +#define HV_FEATURE3_GUEST_IDLE 0x0020 /* guest idle support */ +#define HV_FEATURE3_NUMA 0x0080 /* NUMA distance query support */ +#define HV_FEATURE3_TIME_FREQ 0x0100 /* timer frequency query (TSC, LAPIC) */ +#define HV_FEATURE3_MSR_CRASH 0x0400 /* MSRs for guest crash */ + /* * Define the format of the SIMP register */ @@ -628,6 +646,9 @@ typedef enum { extern hv_vmbus_context hv_vmbus_g_context; extern hv_vmbus_connection hv_vmbus_g_connection; +extern u_int hyperv_features; +extern u_int hyperv_recommends; + typedef void (*vmbus_msg_handler)(hv_vmbus_channel_msg_header *msg); typedef struct hv_vmbus_channel_msg_table_entry { @@ -704,7 +725,6 @@ uint16_t hv_vmbus_post_msg_via_msg_ipc( uint16_t hv_vmbus_signal_event(void *con_id); void hv_vmbus_synic_init(void *irq_arg); void hv_vmbus_synic_cleanup(void *arg); -int hv_vmbus_query_hypervisor_presence(void); struct hv_device* hv_vmbus_child_device_create( hv_guid device_type, diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c index a556127..23bdb7d 100644 --- a/sys/dev/ichiic/ig4_iic.c +++ b/sys/dev/ichiic/ig4_iic.c @@ -117,7 +117,10 @@ set_controller(ig4iic_softc_t *sc, uint32_t ctl) error = 0; break; } - mtx_sleep(sc, &sc->io_lock, 0, "i2cslv", 1); + if (cold) + DELAY(1000); + else + mtx_sleep(sc, &sc->io_lock, 0, "i2cslv", 1); } return (error); } diff --git a/sys/dev/ie/if_ie_isa.c b/sys/dev/ie/if_ie_isa.c index c0403b1..73151b4 100644 --- a/sys/dev/ie/if_ie_isa.c +++ b/sys/dev/ie/if_ie_isa.c @@ -881,7 +881,7 @@ ie_modevent (mod, what, arg) break; default: break; - }; + } return (0); } diff --git a/sys/dev/iicbus/twsi/a10_twsi.c b/sys/dev/iicbus/twsi/a10_twsi.c index 6ee13ad..701153b 100644 --- a/sys/dev/iicbus/twsi/a10_twsi.c +++ b/sys/dev/iicbus/twsi/a10_twsi.c @@ -48,8 +48,8 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/ofw_bus.h> #include <dev/ofw/ofw_bus_subr.h> -#include <arm/allwinner/a10_clk.h> -#include <arm/allwinner/a31/a31_clk.h> +#include <dev/extres/clk/clk.h> +#include <dev/extres/hwreset/hwreset.h> #include "iicbus_if.h" @@ -63,21 +63,16 @@ __FBSDID("$FreeBSD$"); #define TWI_EFR 0x1C #define TWI_LCR 0x20 -#define A10_I2C 1 -#define A31_I2C 2 - static struct ofw_compat_data compat_data[] = { - {"allwinner,sun4i-a10-i2c", A10_I2C}, - {"allwinner,sun6i-a31-i2c", A31_I2C}, + {"allwinner,sun4i-a10-i2c", 1}, + {"allwinner,sun6i-a31-i2c", 1}, {NULL, 0}, }; static int a10_twsi_probe(device_t dev) { - struct twsi_softc *sc; - sc = device_get_softc(dev); if (!ofw_bus_status_okay(dev)) return (ENXIO); @@ -92,29 +87,31 @@ static int a10_twsi_attach(device_t dev) { struct twsi_softc *sc; - int clk; + clk_t clk; + hwreset_t rst; + int error; sc = device_get_softc(dev); - /* Activate clock */ - switch (ofw_bus_search_compatible(dev, compat_data)->ocd_data) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case A10_I2C: - clk = a10_clk_i2c_activate(device_get_unit(dev)); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case A31_I2C: - clk = a31_clk_i2c_activate(device_get_unit(dev)); - break; -#endif - default: - clk = -1; + /* De-assert reset */ + if (hwreset_get_by_ofw_idx(dev, 0, &rst) == 0) { + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(dev, "could not de-assert reset\n"); + return (error); + } } - if (clk != 0) { - device_printf(dev, "could not activate i2c clock\n"); - return (ENXIO); + /* Activate clock */ + error = clk_get_by_ofw_index(dev, 0, &clk); + if (error != 0) { + device_printf(dev, "could not find clock\n"); + return (error); + } + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "could not enable clock\n"); + return (error); } sc->reg_data = TWI_DATA; diff --git a/sys/dev/ioat/ioat.c b/sys/dev/ioat/ioat.c index bcc4e9a..85ceacb 100644 --- a/sys/dev/ioat/ioat.c +++ b/sys/dev/ioat/ioat.c @@ -314,6 +314,9 @@ ioat_detach(device_t device) mtx_lock(IOAT_REFLK); ioat->quiescing = TRUE; + ioat->destroying = TRUE; + wakeup(&ioat->quiescing); + ioat_channel[ioat->chan_idx] = NULL; ioat_drain_locked(ioat); @@ -739,18 +742,40 @@ ioat_reset_hw_task(void *ctx, int pending __unused) * User API functions */ bus_dmaengine_t -ioat_get_dmaengine(uint32_t index) +ioat_get_dmaengine(uint32_t index, int flags) { - struct ioat_softc *sc; + struct ioat_softc *ioat; + + KASSERT((flags & ~(M_NOWAIT | M_WAITOK)) == 0, + ("invalid flags: 0x%08x", flags)); + KASSERT((flags & (M_NOWAIT | M_WAITOK)) != (M_NOWAIT | M_WAITOK), + ("invalid wait | nowait")); if (index >= ioat_channel_index) return (NULL); - sc = ioat_channel[index]; - if (sc == NULL || sc->quiescing) + ioat = ioat_channel[index]; + if (ioat == NULL || ioat->destroying) return (NULL); - return (&ioat_get(sc, IOAT_DMAENGINE_REF)->dmaengine); + if (ioat->quiescing) { + if ((flags & M_NOWAIT) != 0) + return (NULL); + + mtx_lock(IOAT_REFLK); + while (ioat->quiescing && !ioat->destroying) + msleep(&ioat->quiescing, IOAT_REFLK, 0, "getdma", 0); + mtx_unlock(IOAT_REFLK); + + if (ioat->destroying) + return (NULL); + } + + /* + * There's a race here between the quiescing check and HW reset or + * module destroy. + */ + return (&ioat_get(ioat, IOAT_DMAENGINE_REF)->dmaengine); } void @@ -1571,6 +1596,7 @@ ioat_reset_hw(struct ioat_softc *ioat) out: mtx_lock(IOAT_REFLK); ioat->quiescing = FALSE; + wakeup(&ioat->quiescing); mtx_unlock(IOAT_REFLK); if (error == 0) diff --git a/sys/dev/ioat/ioat.h b/sys/dev/ioat/ioat.h index 3b6e094..ff05602 100644 --- a/sys/dev/ioat/ioat.h +++ b/sys/dev/ioat/ioat.h @@ -68,8 +68,10 @@ typedef void (*bus_dmaengine_callback_t)(void *arg, int error); /* * Called first to acquire a reference to the DMA channel + * + * Flags may be M_WAITOK or M_NOWAIT. */ -bus_dmaengine_t ioat_get_dmaengine(uint32_t channel_index); +bus_dmaengine_t ioat_get_dmaengine(uint32_t channel_index, int flags); /* Release the DMA channel */ void ioat_put_dmaengine(bus_dmaengine_t dmaengine); diff --git a/sys/dev/ioat/ioat_internal.h b/sys/dev/ioat/ioat_internal.h index b33faea..85b7316 100644 --- a/sys/dev/ioat/ioat_internal.h +++ b/sys/dev/ioat/ioat_internal.h @@ -410,6 +410,7 @@ struct ioat_softc { struct task reset_task; boolean_t quiescing; + boolean_t destroying; boolean_t is_resize_pending; boolean_t is_completion_pending; boolean_t is_reset_pending; diff --git a/sys/dev/ioat/ioat_test.c b/sys/dev/ioat/ioat_test.c index ee014c0..7fecd48 100644 --- a/sys/dev/ioat/ioat_test.c +++ b/sys/dev/ioat/ioat_test.c @@ -388,7 +388,7 @@ ioat_dma_test(void *arg) return; } - dmaengine = ioat_get_dmaengine(test->channel_index); + dmaengine = ioat_get_dmaengine(test->channel_index, M_NOWAIT); if (dmaengine == NULL) { ioat_test_log(0, "Couldn't acquire dmaengine\n"); test->status[IOAT_TEST_NO_DMA_ENGINE]++; diff --git a/sys/dev/isci/scil/scic_sds_controller_registers.h b/sys/dev/isci/scil/scic_sds_controller_registers.h index e4a0fb4..81a1f3f 100644 --- a/sys/dev/isci/scil/scic_sds_controller_registers.h +++ b/sys/dev/isci/scil/scic_sds_controller_registers.h @@ -586,7 +586,7 @@ extern "C" { #define SCU_PTSGRTC_READ(controller) \ scu_ptsg_register_read( \ - contoller, \ + controller, \ real_time_clock \ ) /*@}*/ diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index d5c393b..2e69855 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -126,6 +126,8 @@ static int isp_send_change_request(ispsoftc_t *, int); static int isp_register_fc4_type(ispsoftc_t *, int); static int isp_register_fc4_type_24xx(ispsoftc_t *, int); static int isp_register_fc4_features_24xx(ispsoftc_t *, int); +static int isp_register_port_name_24xx(ispsoftc_t *, int); +static int isp_register_node_name_24xx(ispsoftc_t *, int); static uint16_t isp_next_handle(ispsoftc_t *, uint16_t *); static int isp_fw_state(ispsoftc_t *, int); static void isp_mboxcmd_qnw(ispsoftc_t *, mbreg_t *, int); @@ -1970,10 +1972,12 @@ isp_fibre_init(ispsoftc_t *isp) } isp_prt(isp, ISP_LOGDEBUG0, "isp_fibre_init: fwopt 0x%x xfwopt 0x%x zfwopt 0x%x", icbp->icb_fwoptions, icbp->icb_xfwoptions, icbp->icb_zfwoptions); - if (isp->isp_dblev & ISP_LOGDEBUG1) - isp_print_bytes(isp, "isp_fibre_init", sizeof (*icbp), icbp); isp_put_icb(isp, icbp, (isp_icb_t *)fcp->isp_scratch); + if (isp->isp_dblev & ISP_LOGDEBUG1) { + isp_print_bytes(isp, "isp_fibre_init", + sizeof(*icbp), fcp->isp_scratch); + } /* * Init the firmware @@ -2238,16 +2242,16 @@ isp_fibre_init_2400(ispsoftc_t *isp) DMA_WD1(isp->isp_rquest_dma), DMA_WD0(isp->isp_rquest_dma), DMA_WD3(isp->isp_result_dma), DMA_WD2(isp->isp_result_dma), DMA_WD1(isp->isp_result_dma), DMA_WD0(isp->isp_result_dma)); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "isp_fibre_init_2400", sizeof (*icbp), icbp); - } - if (FC_SCRATCH_ACQUIRE(isp, 0)) { isp_prt(isp, ISP_LOGERR, sacq); return; } ISP_MEMZERO(fcp->isp_scratch, ISP_FC_SCRLEN); isp_put_icb_2400(isp, icbp, fcp->isp_scratch); + if (isp->isp_dblev & ISP_LOGDEBUG1) { + isp_print_bytes(isp, "isp_fibre_init_2400", + sizeof (*icbp), fcp->isp_scratch); + } /* * Now fill in information about any additional channels @@ -2393,6 +2397,8 @@ isp_fc_enable_vp(ispsoftc_t *isp, int chan) return (EIO); } isp_put_vp_modify(isp, &vp, (vp_modify_t *)reqp); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_MODIFY", QENTRY_LEN, reqp); ISP_SYNC_REQUEST(isp); if (msleep(resp, &isp->isp_lock, 0, "VP_MODIFY", 5*hz) == EWOULDBLOCK) { isp_prt(isp, ISP_LOGERR, @@ -2400,6 +2406,8 @@ isp_fc_enable_vp(ispsoftc_t *isp, int chan) isp_destroy_handle(isp, vp.vp_mod_hdl); return (EIO); } + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_MODIFY response", QENTRY_LEN, resp); isp_get_vp_modify(isp, (vp_modify_t *)resp, &vp); if (vp.vp_mod_hdr.rqs_flags != 0 || vp.vp_mod_status != VP_STS_OK) { @@ -2450,6 +2458,8 @@ isp_fc_disable_vp(ispsoftc_t *isp, int chan) return (EIO); } isp_put_vp_ctrl_info(isp, &vp, (vp_ctrl_info_t *)reqp); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_CTRL", QENTRY_LEN, reqp); ISP_SYNC_REQUEST(isp); if (msleep(resp, &isp->isp_lock, 0, "VP_CTRL", 5*hz) == EWOULDBLOCK) { isp_prt(isp, ISP_LOGERR, @@ -2457,6 +2467,8 @@ isp_fc_disable_vp(ispsoftc_t *isp, int chan) isp_destroy_handle(isp, vp.vp_ctrl_handle); return (EIO); } + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_CTRL response", QENTRY_LEN, resp); isp_get_vp_ctrl_info(isp, (vp_ctrl_info_t *)resp, &vp); if (vp.vp_ctrl_hdr.rqs_flags != 0 || vp.vp_ctrl_status != 0) { @@ -2600,9 +2612,9 @@ isp_plogx(ispsoftc_t *isp, int chan, uint16_t handle, uint32_t portid, int flags isp_destroy_handle(isp, pl.plogx_handle); return (-1); } - if (isp->isp_dblev & ISP_LOGDEBUG1) - isp_print_bytes(isp, "IOCB LOGX", QENTRY_LEN, &pl); isp_put_plogx(isp, &pl, (isp_plogx_t *)reqp); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB LOGX", QENTRY_LEN, reqp); ISP_SYNC_REQUEST(isp); if (msleep(resp, &isp->isp_lock, 0, "PLOGX", 3 * ICB_LOGIN_TOV * hz) == EWOULDBLOCK) { @@ -2611,9 +2623,9 @@ isp_plogx(ispsoftc_t *isp, int chan, uint16_t handle, uint32_t portid, int flags isp_destroy_handle(isp, pl.plogx_handle); return (-1); } - isp_get_plogx(isp, (isp_plogx_t *)resp, &pl); if (isp->isp_dblev & ISP_LOGDEBUG1) - isp_print_bytes(isp, "IOCB LOGX response", QENTRY_LEN, &pl); + isp_print_bytes(isp, "IOCB LOGX response", QENTRY_LEN, resp); + isp_get_plogx(isp, (isp_plogx_t *)resp, &pl); if (pl.plogx_status == PLOGX_STATUS_OK) { return (0); @@ -3073,6 +3085,8 @@ isp_fclink_test(ispsoftc_t *isp, int chan, int usdelay) r = isp_register_fc4_type_24xx(isp, chan); if (r == 0) isp_register_fc4_features_24xx(isp, chan); + isp_register_port_name_24xx(isp, chan); + isp_register_node_name_24xx(isp, chan); } else { fcp->isp_sns_hdl = SNS_ID; r = isp_register_fc4_type(isp, chan); @@ -3494,26 +3508,17 @@ isp_gid_ft_sns(ispsoftc_t *isp, int chan) } static int -isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) +isp_ct_passthru(ispsoftc_t *isp, int chan, uint32_t cmd_bcnt, uint32_t rsp_bcnt) { mbreg_t mbs; fcparam *fcp = FCPARAM(isp, chan); union { isp_ct_pt_t plocal; - ct_hdr_t clocal; uint8_t q[QENTRY_LEN]; } un; isp_ct_pt_t *pt; - ct_hdr_t *ct; - uint32_t *rp; uint8_t *scp = fcp->isp_scratch; - isp_prt(isp, ISP_LOGDEBUG0, "Chan %d requesting GID_FT via CT", chan); - if (FC_SCRATCH_ACQUIRE(isp, chan)) { - isp_prt(isp, ISP_LOGERR, sacq); - return (-1); - } - /* * Build a Passthrough IOCB in memory. */ @@ -3527,39 +3532,21 @@ isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) pt->ctp_vpidx = ISP_GET_VPIDX(isp, chan); pt->ctp_time = 10; pt->ctp_rsp_cnt = 1; - pt->ctp_rsp_bcnt = GIDLEN; - pt->ctp_cmd_bcnt = sizeof (*ct) + sizeof (uint32_t); + pt->ctp_rsp_bcnt = rsp_bcnt; + pt->ctp_cmd_bcnt = cmd_bcnt; pt->ctp_dataseg[0].ds_base = DMA_LO32(fcp->isp_scdma+XTXOFF); pt->ctp_dataseg[0].ds_basehi = DMA_HI32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_count = sizeof (*ct) + sizeof (uint32_t); + pt->ctp_dataseg[0].ds_count = cmd_bcnt; pt->ctp_dataseg[1].ds_base = DMA_LO32(fcp->isp_scdma); pt->ctp_dataseg[1].ds_basehi = DMA_HI32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_count = GIDLEN; - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "ct IOCB", QENTRY_LEN, pt); - } - isp_put_ct_pt(isp, pt, (isp_ct_pt_t *) &scp[CTXOFF]); + pt->ctp_dataseg[1].ds_count = rsp_bcnt; + isp_put_ct_pt(isp, pt, (isp_ct_pt_t *)&scp[CTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT IOCB request", QENTRY_LEN, &scp[CTXOFF]); /* - * Build the CT header and command in memory. - * - * Note that the CT header has to end up as Big Endian format in memory. + * Execute the Passthrough IOCB. */ - ct = &un.clocal; - ISP_MEMZERO(ct, sizeof (*ct)); - ct->ct_revision = CT_REVISION; - ct->ct_fcs_type = CT_FC_TYPE_FC; - ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; - ct->ct_cmd_resp = SNS_GID_FT; - ct->ct_bcnt_resid = (GIDLEN - 16) >> 2; - - isp_put_ct_hdr(isp, ct, (ct_hdr_t *) &scp[XTXOFF]); - rp = (uint32_t *) &scp[XTXOFF+sizeof (*ct)]; - ISP_IOZPUT_32(isp, FC4_SCSI, rp); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "CT HDR + payload after put", - sizeof (*ct) + sizeof (uint32_t), &scp[XTXOFF]); - } ISP_MEMZERO(&scp[ZTXOFF], QENTRY_LEN); MBSINIT(&mbs, MBOX_EXEC_COMMAND_IOCB_A64, MBLOGALL, MBCMD_DEFAULT_TIMEOUT + pt->ctp_time * 1000000); @@ -3574,18 +3561,56 @@ isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) return (-1); } MEMORYBARRIER(isp, SYNC_SFORCPU, 0, ISP_FC_SCRLEN, chan); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT IOCB response", QENTRY_LEN, &scp[ZTXOFF]); pt = &un.plocal; isp_get_ct_pt(isp, (isp_ct_pt_t *) &scp[ZTXOFF], pt); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB response", QENTRY_LEN, pt); - } - if (pt->ctp_status && pt->ctp_status != RQCS_DATA_UNDERRUN) { isp_prt(isp, ISP_LOGWARN, "Chan %d GID_FT CT Passthrough returned 0x%x", chan, pt->ctp_status); return (-1); } + + return (0); +} + +static int +isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) +{ + fcparam *fcp = FCPARAM(isp, chan); + ct_hdr_t ct; + uint32_t *rp; + uint8_t *scp = fcp->isp_scratch; + + isp_prt(isp, ISP_LOGDEBUG0, "Chan %d requesting GID_FT via CT", chan); + if (FC_SCRATCH_ACQUIRE(isp, chan)) { + isp_prt(isp, ISP_LOGERR, sacq); + return (-1); + } + + /* + * Build the CT header and command in memory. + */ + ISP_MEMZERO(&ct, sizeof (ct)); + ct.ct_revision = CT_REVISION; + ct.ct_fcs_type = CT_FC_TYPE_FC; + ct.ct_fcs_subtype = CT_FC_SUBTYPE_NS; + ct.ct_cmd_resp = SNS_GID_FT; + ct.ct_bcnt_resid = (GIDLEN - 16) >> 2; + isp_put_ct_hdr(isp, &ct, (ct_hdr_t *) &scp[XTXOFF]); + rp = (uint32_t *) &scp[XTXOFF + sizeof(ct)]; + ISP_IOZPUT_32(isp, FC4_SCSI, rp); + if (isp->isp_dblev & ISP_LOGDEBUG1) { + isp_print_bytes(isp, "CT request", + sizeof(ct) + sizeof(uint32_t), &scp[XTXOFF]); + } + + if (isp_ct_passthru(isp, chan, sizeof(ct) + sizeof(uint32_t), GIDLEN)) { + FC_SCRATCH_RELEASE(isp, chan); + return (-1); + } + if (isp->isp_dblev & ISP_LOGDEBUG1) isp_print_bytes(isp, "CT response", GIDLEN, scp); isp_get_gid_ft_response(isp, (sns_gid_ft_rsp_t *)scp, @@ -3957,16 +3982,9 @@ isp_register_fc4_type(ispsoftc_t *isp, int chan) static int isp_register_fc4_type_24xx(ispsoftc_t *isp, int chan) { - mbreg_t mbs; fcparam *fcp = FCPARAM(isp, chan); - union { - isp_ct_pt_t plocal; - rft_id_t clocal; - uint8_t q[QENTRY_LEN]; - } un; - isp_ct_pt_t *pt; ct_hdr_t *ct; - rft_id_t *rp; + rft_id_t rp; uint8_t *scp = fcp->isp_scratch; if (FC_SCRATCH_ACQUIRE(isp, chan)) { @@ -3975,110 +3993,48 @@ isp_register_fc4_type_24xx(ispsoftc_t *isp, int chan) } /* - * Build a Passthrough IOCB in memory. - */ - ISP_MEMZERO(un.q, QENTRY_LEN); - pt = &un.plocal; - pt->ctp_header.rqs_entry_count = 1; - pt->ctp_header.rqs_entry_type = RQSTYPE_CT_PASSTHRU; - pt->ctp_handle = 0xffffffff; - pt->ctp_nphdl = fcp->isp_sns_hdl; - pt->ctp_cmd_cnt = 1; - pt->ctp_vpidx = ISP_GET_VPIDX(isp, chan); - pt->ctp_time = 4; - pt->ctp_rsp_cnt = 1; - pt->ctp_rsp_bcnt = sizeof (ct_hdr_t); - pt->ctp_cmd_bcnt = sizeof (rft_id_t); - pt->ctp_dataseg[0].ds_base = DMA_LO32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_basehi = DMA_HI32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_count = sizeof (rft_id_t); - pt->ctp_dataseg[1].ds_base = DMA_LO32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_basehi = DMA_HI32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_count = sizeof (ct_hdr_t); - isp_put_ct_pt(isp, pt, (isp_ct_pt_t *) &scp[CTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB CT Request", QENTRY_LEN, pt); - } - - /* * Build the CT header and command in memory. - * - * Note that the CT header has to end up as Big Endian format in memory. */ - ISP_MEMZERO(&un.clocal, sizeof (un.clocal)); - ct = &un.clocal.rftid_hdr; + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rftid_hdr; ct->ct_revision = CT_REVISION; ct->ct_fcs_type = CT_FC_TYPE_FC; ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; ct->ct_cmd_resp = SNS_RFT_ID; ct->ct_bcnt_resid = (sizeof (rft_id_t) - sizeof (ct_hdr_t)) >> 2; - rp = &un.clocal; - rp->rftid_portid[0] = fcp->isp_portid >> 16; - rp->rftid_portid[1] = fcp->isp_portid >> 8; - rp->rftid_portid[2] = fcp->isp_portid; - rp->rftid_fc4types[FC4_SCSI >> 5] = 1 << (FC4_SCSI & 0x1f); - isp_put_rft_id(isp, rp, (rft_id_t *) &scp[XTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "CT Header", QENTRY_LEN, &scp[XTXOFF]); - } - - ISP_MEMZERO(&scp[ZTXOFF], sizeof (ct_hdr_t)); + rp.rftid_portid[0] = fcp->isp_portid >> 16; + rp.rftid_portid[1] = fcp->isp_portid >> 8; + rp.rftid_portid[2] = fcp->isp_portid; + rp.rftid_fc4types[FC4_SCSI >> 5] = 1 << (FC4_SCSI & 0x1f); + isp_put_rft_id(isp, &rp, (rft_id_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", sizeof(rft_id_t), &scp[XTXOFF]); - MBSINIT(&mbs, MBOX_EXEC_COMMAND_IOCB_A64, MBLOGALL, - MBCMD_DEFAULT_TIMEOUT + pt->ctp_time * 1000000); - mbs.param[1] = QENTRY_LEN; - mbs.param[2] = DMA_WD1(fcp->isp_scdma + CTXOFF); - mbs.param[3] = DMA_WD0(fcp->isp_scdma + CTXOFF); - mbs.param[6] = DMA_WD3(fcp->isp_scdma + CTXOFF); - mbs.param[7] = DMA_WD2(fcp->isp_scdma + CTXOFF); - MEMORYBARRIER(isp, SYNC_SFORDEV, XTXOFF, 2 * QENTRY_LEN, chan); - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { + if (isp_ct_passthru(isp, chan, sizeof(rft_id_t), sizeof(ct_hdr_t))) { FC_SCRATCH_RELEASE(isp, chan); return (-1); } - MEMORYBARRIER(isp, SYNC_SFORCPU, ZTXOFF, QENTRY_LEN, chan); - pt = &un.plocal; - isp_get_ct_pt(isp, (isp_ct_pt_t *) &scp[ZTXOFF], pt); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB response", QENTRY_LEN, pt); - } - if (pt->ctp_status) { - FC_SCRATCH_RELEASE(isp, chan); - isp_prt(isp, ISP_LOGWARN, - "Chan %d Register FC4 Type CT Passthrough returned 0x%x", - chan, pt->ctp_status); - return (1); - } isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); FC_SCRATCH_RELEASE(isp, chan); - if (ct->ct_cmd_resp == LS_RJT) { isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, "Chan %d Register FC4 Type rejected", chan); return (-1); } else if (ct->ct_cmd_resp == LS_ACC) { isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Register FC4 Type accepted", chan); - return (0); } else { isp_prt(isp, ISP_LOGWARN, "Chan %d Register FC4 Type: 0x%x", chan, ct->ct_cmd_resp); return (-1); } + return (0); } static int isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) { - mbreg_t mbs; fcparam *fcp = FCPARAM(isp, chan); - union { - isp_ct_pt_t plocal; - rff_id_t clocal; - uint8_t q[QENTRY_LEN]; - } un; - isp_ct_pt_t *pt; ct_hdr_t *ct; - rff_id_t *rp; + rff_id_t rp; uint8_t *scp = fcp->isp_scratch; if (FC_SCRATCH_ACQUIRE(isp, chan)) { @@ -4087,103 +4043,172 @@ isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) } /* - * Build a Passthrough IOCB in memory. - */ - ISP_MEMZERO(un.q, QENTRY_LEN); - pt = &un.plocal; - pt->ctp_header.rqs_entry_count = 1; - pt->ctp_header.rqs_entry_type = RQSTYPE_CT_PASSTHRU; - pt->ctp_handle = 0xffffffff; - pt->ctp_nphdl = fcp->isp_sns_hdl; - pt->ctp_cmd_cnt = 1; - pt->ctp_vpidx = ISP_GET_VPIDX(isp, chan); - pt->ctp_time = 4; - pt->ctp_rsp_cnt = 1; - pt->ctp_rsp_bcnt = sizeof (ct_hdr_t); - pt->ctp_cmd_bcnt = sizeof (rff_id_t); - pt->ctp_dataseg[0].ds_base = DMA_LO32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_basehi = DMA_HI32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_count = sizeof (rff_id_t); - pt->ctp_dataseg[1].ds_base = DMA_LO32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_basehi = DMA_HI32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_count = sizeof (ct_hdr_t); - isp_put_ct_pt(isp, pt, (isp_ct_pt_t *) &scp[CTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB CT Request", QENTRY_LEN, pt); - } - - /* * Build the CT header and command in memory. - * - * Note that the CT header has to end up as Big Endian format in memory. */ - ISP_MEMZERO(&un.clocal, sizeof (un.clocal)); - ct = &un.clocal.rffid_hdr; + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rffid_hdr; ct->ct_revision = CT_REVISION; ct->ct_fcs_type = CT_FC_TYPE_FC; ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; ct->ct_cmd_resp = SNS_RFF_ID; ct->ct_bcnt_resid = (sizeof (rff_id_t) - sizeof (ct_hdr_t)) >> 2; - rp = &un.clocal; - rp->rffid_portid[0] = fcp->isp_portid >> 16; - rp->rffid_portid[1] = fcp->isp_portid >> 8; - rp->rffid_portid[2] = fcp->isp_portid; - rp->rffid_fc4features = 0; + rp.rffid_portid[0] = fcp->isp_portid >> 16; + rp.rffid_portid[1] = fcp->isp_portid >> 8; + rp.rffid_portid[2] = fcp->isp_portid; + rp.rffid_fc4features = 0; if (fcp->role & ISP_ROLE_TARGET) - rp->rffid_fc4features |= 1; + rp.rffid_fc4features |= 1; if (fcp->role & ISP_ROLE_INITIATOR) - rp->rffid_fc4features |= 2; - rp->rffid_fc4type = FC4_SCSI; - isp_put_rff_id(isp, rp, (rff_id_t *) &scp[XTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "CT Header", QENTRY_LEN, &scp[XTXOFF]); + rp.rffid_fc4features |= 2; + rp.rffid_fc4type = FC4_SCSI; + isp_put_rff_id(isp, &rp, (rff_id_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", sizeof(rft_id_t), &scp[XTXOFF]); + + if (isp_ct_passthru(isp, chan, sizeof(rft_id_t), sizeof(ct_hdr_t))) { + FC_SCRATCH_RELEASE(isp, chan); + return (-1); + } + + isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); + FC_SCRATCH_RELEASE(isp, chan); + if (ct->ct_cmd_resp == LS_RJT) { + isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, + "Chan %d Register FC4 Features rejected", chan); + return (-1); + } else if (ct->ct_cmd_resp == LS_ACC) { + isp_prt(isp, ISP_LOG_SANCFG, + "Chan %d Register FC4 Features accepted", chan); + } else { + isp_prt(isp, ISP_LOGWARN, + "Chan %d Register FC4 Features: 0x%x", chan, ct->ct_cmd_resp); + return (-1); } + return (0); +} - ISP_MEMZERO(&scp[ZTXOFF], sizeof (ct_hdr_t)); +static int +isp_register_port_name_24xx(ispsoftc_t *isp, int chan) +{ + fcparam *fcp = FCPARAM(isp, chan); + ct_hdr_t *ct; + rspn_id_t rp; + uint8_t *scp = fcp->isp_scratch; + int len; - MBSINIT(&mbs, MBOX_EXEC_COMMAND_IOCB_A64, MBLOGALL, - MBCMD_DEFAULT_TIMEOUT + pt->ctp_time * 1000000); - mbs.param[1] = QENTRY_LEN; - mbs.param[2] = DMA_WD1(fcp->isp_scdma + CTXOFF); - mbs.param[3] = DMA_WD0(fcp->isp_scdma + CTXOFF); - mbs.param[6] = DMA_WD3(fcp->isp_scdma + CTXOFF); - mbs.param[7] = DMA_WD2(fcp->isp_scdma + CTXOFF); - MEMORYBARRIER(isp, SYNC_SFORDEV, XTXOFF, 2 * QENTRY_LEN, chan); - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { + if (FC_SCRATCH_ACQUIRE(isp, chan)) { + isp_prt(isp, ISP_LOGERR, sacq); + return (-1); + } + + /* + * Build the CT header and command in memory. + */ + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rspnid_hdr; + ct->ct_revision = CT_REVISION; + ct->ct_fcs_type = CT_FC_TYPE_FC; + ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; + ct->ct_cmd_resp = SNS_RSPN_ID; + rp.rspnid_portid[0] = fcp->isp_portid >> 16; + rp.rspnid_portid[1] = fcp->isp_portid >> 8; + rp.rspnid_portid[2] = fcp->isp_portid; + rp.rspnid_length = 0; + len = offsetof(rspn_id_t, rspnid_name); + mtx_lock(&prison0.pr_mtx); + rp.rspnid_length += sprintf(&scp[XTXOFF + len + rp.rspnid_length], + "%s", prison0.pr_hostname[0] ? prison0.pr_hostname : "FreeBSD"); + mtx_unlock(&prison0.pr_mtx); + rp.rspnid_length += sprintf(&scp[XTXOFF + len + rp.rspnid_length], + ":%s", device_get_nameunit(isp->isp_dev)); + if (chan != 0) { + rp.rspnid_length += sprintf(&scp[XTXOFF + len + + rp.rspnid_length], "/%d", chan); + } + len += rp.rspnid_length; + ct->ct_bcnt_resid = (len - sizeof(ct_hdr_t)) >> 2; + isp_put_rspn_id(isp, &rp, (rspn_id_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", len, &scp[XTXOFF]); + + if (isp_ct_passthru(isp, chan, len, sizeof(ct_hdr_t))) { FC_SCRATCH_RELEASE(isp, chan); return (-1); } - MEMORYBARRIER(isp, SYNC_SFORCPU, ZTXOFF, QENTRY_LEN, chan); - pt = &un.plocal; - isp_get_ct_pt(isp, (isp_ct_pt_t *) &scp[ZTXOFF], pt); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB response", QENTRY_LEN, pt); + + isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); + FC_SCRATCH_RELEASE(isp, chan); + if (ct->ct_cmd_resp == LS_RJT) { + isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, + "Chan %d Register Symbolic Port Name rejected", chan); + return (-1); + } else if (ct->ct_cmd_resp == LS_ACC) { + isp_prt(isp, ISP_LOG_SANCFG, + "Chan %d Register Symbolic Port Name accepted", chan); + } else { + isp_prt(isp, ISP_LOGWARN, + "Chan %d Register Symbolic Port Name: 0x%x", chan, ct->ct_cmd_resp); + return (-1); } - if (pt->ctp_status) { + return (0); +} + +static int +isp_register_node_name_24xx(ispsoftc_t *isp, int chan) +{ + fcparam *fcp = FCPARAM(isp, chan); + ct_hdr_t *ct; + rsnn_nn_t rp; + uint8_t *scp = fcp->isp_scratch; + int len; + + if (FC_SCRATCH_ACQUIRE(isp, chan)) { + isp_prt(isp, ISP_LOGERR, sacq); + return (-1); + } + + /* + * Build the CT header and command in memory. + */ + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rsnnnn_hdr; + ct->ct_revision = CT_REVISION; + ct->ct_fcs_type = CT_FC_TYPE_FC; + ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; + ct->ct_cmd_resp = SNS_RSNN_NN; + MAKE_NODE_NAME_FROM_WWN(rp.rsnnnn_nodename, fcp->isp_wwnn); + rp.rsnnnn_length = 0; + len = offsetof(rsnn_nn_t, rsnnnn_name); + mtx_lock(&prison0.pr_mtx); + rp.rsnnnn_length += sprintf(&scp[XTXOFF + len + rp.rsnnnn_length], + "%s", prison0.pr_hostname[0] ? prison0.pr_hostname : "FreeBSD"); + mtx_unlock(&prison0.pr_mtx); + len += rp.rsnnnn_length; + ct->ct_bcnt_resid = (len - sizeof(ct_hdr_t)) >> 2; + isp_put_rsnn_nn(isp, &rp, (rsnn_nn_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", len, &scp[XTXOFF]); + + if (isp_ct_passthru(isp, chan, len, sizeof(ct_hdr_t))) { FC_SCRATCH_RELEASE(isp, chan); - isp_prt(isp, ISP_LOGWARN, - "Chan %d Register FC4 Features CT Passthrough returned 0x%x", - chan, pt->ctp_status); - return (1); + return (-1); } isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); FC_SCRATCH_RELEASE(isp, chan); - if (ct->ct_cmd_resp == LS_RJT) { isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, - "Chan %d Register FC4 Features rejected", chan); + "Chan %d Register Symbolic Node Name rejected", chan); return (-1); } else if (ct->ct_cmd_resp == LS_ACC) { isp_prt(isp, ISP_LOG_SANCFG, - "Chan %d Register FC4 Features accepted", chan); - return (0); + "Chan %d Register Symbolic Node Name accepted", chan); } else { isp_prt(isp, ISP_LOGWARN, - "Chan %d Register FC4 Features: 0x%x", chan, ct->ct_cmd_resp); + "Chan %d Register Symbolic Node Name: 0x%x", chan, ct->ct_cmd_resp); return (-1); } + return (0); } static uint16_t @@ -5140,15 +5165,14 @@ again: * Synchronize our view of this response queue entry. */ MEMORYBARRIER(isp, SYNC_RESULT, oop, QENTRY_LEN, -1); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_qentry(isp, "Response Queue Entry", oop, hp); isp_get_hdr(isp, hp, &sp->req_header); etype = sp->req_header.rqs_entry_type; if (IS_24XX(isp) && etype == RQSTYPE_RESPONSE) { isp24xx_statusreq_t *sp2 = (isp24xx_statusreq_t *)qe; isp_get_24xx_response(isp, (isp24xx_statusreq_t *)hp, sp2); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "Response Queue Entry", QENTRY_LEN, sp2); - } scsi_status = sp2->req_scsi_status; completion_status = sp2->req_completion_status; if ((scsi_status & 0xff) != 0) @@ -5158,9 +5182,6 @@ again: resid = sp2->req_resid; } else if (etype == RQSTYPE_RESPONSE) { isp_get_response(isp, (ispstatusreq_t *) hp, sp); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "Response Queue Entry", QENTRY_LEN, sp); - } scsi_status = sp->req_scsi_status; completion_status = sp->req_completion_status; req_status_flags = sp->req_status_flags; @@ -5169,9 +5190,6 @@ again: } else if (etype == RQSTYPE_RIO1) { isp_rio1_t *rio = (isp_rio1_t *) qe; isp_get_rio1(isp, (isp_rio1_t *) hp, rio); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "Response Queue Entry", QENTRY_LEN, rio); - } for (i = 0; i < rio->req_header.rqs_seqno; i++) { isp_fastpost_complete(isp, rio->req_handles[i]); } @@ -5235,7 +5253,6 @@ again: */ if (etype != RQSTYPE_REQUEST) { isp_prt(isp, ISP_LOGERR, notresp, etype, oop, optr, nlooked); - isp_print_bytes(isp, "Request Queue Entry", QENTRY_LEN, sp); ISP_MEMZERO(hp, QENTRY_LEN); /* PERF */ last_etype = etype; continue; @@ -5250,7 +5267,8 @@ again: if (sp->req_header.rqs_flags & RQSFLAG_MASK) { if (sp->req_header.rqs_flags & RQSFLAG_CONTINUATION) { - isp_print_bytes(isp, "unexpected continuation segment", QENTRY_LEN, sp); + isp_print_qentry(isp, "unexpected continuation segment", + oop, hp); last_etype = etype; continue; } @@ -5261,19 +5279,23 @@ again: */ } if (sp->req_header.rqs_flags & RQSFLAG_BADHEADER) { - isp_print_bytes(isp, "bad header flag", QENTRY_LEN, sp); + isp_print_qentry(isp, "bad header flag", + oop, hp); buddaboom++; } if (sp->req_header.rqs_flags & RQSFLAG_BADPACKET) { - isp_print_bytes(isp, "bad request packet", QENTRY_LEN, sp); + isp_print_qentry(isp, "bad request packet", + oop, hp); buddaboom++; } if (sp->req_header.rqs_flags & RQSFLAG_BADCOUNT) { - isp_print_bytes(isp, "invalid entry count", QENTRY_LEN, sp); + isp_print_qentry(isp, "invalid entry count", + oop, hp); buddaboom++; } if (sp->req_header.rqs_flags & RQSFLAG_BADORDER) { - isp_print_bytes(isp, "invalid IOCB ordering", QENTRY_LEN, sp); + isp_print_qentry(isp, "invalid IOCB ordering", + oop, hp); last_etype = etype; continue; } @@ -5431,7 +5453,8 @@ again: XS_SAVE_SENSE(xs, snsp, totslen, slen); } else if ((req_status_flags & RQSF_GOT_STATUS) && (scsi_status & 0xff) == SCSI_CHECK && IS_FC(isp)) { isp_prt(isp, ISP_LOGWARN, "CHECK CONDITION w/o sense data for CDB=0x%x", XS_CDBP(xs)[0] & 0xff); - isp_print_bytes(isp, "CC with no Sense", QENTRY_LEN, qe); + isp_print_qentry(isp, "CC with no Sense", + oop, hp); } isp_prt(isp, ISP_LOGDEBUG2, "asked for %ld got raw resid %ld settled for %ld", (long) XS_XFRLEN(xs), resid, (long) XS_GET_RESID(xs)); break; @@ -5457,7 +5480,8 @@ again: XS_SET_RESID(xs, XS_XFRLEN(xs)); break; default: - isp_print_bytes(isp, "Unhandled Response Type", QENTRY_LEN, qe); + isp_print_qentry(isp, "Unhandled Response Type", + oop, hp); if (XS_NOERR(xs)) { XS_SETERR(xs, HBA_BOTCH); } diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h index 7702ee6..3e77077 100644 --- a/sys/dev/isp/isp_freebsd.h +++ b/sys/dev/isp/isp_freebsd.h @@ -32,6 +32,7 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/endian.h> +#include <sys/jail.h> #include <sys/lock.h> #include <sys/kernel.h> #include <sys/queue.h> diff --git a/sys/dev/isp/isp_library.c b/sys/dev/isp/isp_library.c index 78c7f6f..c7bce2d 100644 --- a/sys/dev/isp/isp_library.c +++ b/sys/dev/isp/isp_library.c @@ -180,7 +180,8 @@ isp_send_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_t to isp_put_cont_req(isp, (ispcontreq_t *)storage, qe1); } if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "additional queue entry", QENTRY_LEN, storage); + isp_print_bytes(isp, "additional queue entry", + QENTRY_LEN, qe1); } nqe++; } @@ -241,7 +242,7 @@ copy_and_sync: return (CMD_COMPLETE); } if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "first queue entry", QENTRY_LEN, fqe); + isp_print_bytes(isp, "first queue entry", QENTRY_LEN, qe0); } ISP_ADD_REQUEST(isp, nxt); return (CMD_QUEUED); @@ -1988,6 +1989,17 @@ isp_put_rft_id(ispsoftc_t *isp, rft_id_t *src, rft_id_t *dst) } void +isp_put_rspn_id(ispsoftc_t *isp, rspn_id_t *src, rspn_id_t *dst) +{ +/* int i;*/ + isp_put_ct_hdr(isp, &src->rspnid_hdr, &dst->rspnid_hdr); + ISP_IOZPUT_8(isp, src->rspnid_reserved, &dst->rspnid_reserved); + ISP_IOZPUT_8(isp, src->rspnid_length, &dst->rspnid_length); +/* for (i = 0; i < src->rspnid_length; i++) + ISP_IOZPUT_8(isp, src->rspnid_name[i], &dst->rspnid_name[i]);*/ +} + +void isp_put_rff_id(ispsoftc_t *isp, rff_id_t *src, rff_id_t *dst) { int i; @@ -2002,6 +2014,18 @@ isp_put_rff_id(ispsoftc_t *isp, rff_id_t *src, rff_id_t *dst) } void +isp_put_rsnn_nn(ispsoftc_t *isp, rsnn_nn_t *src, rsnn_nn_t *dst) +{ + int i; + isp_put_ct_hdr(isp, &src->rsnnnn_hdr, &dst->rsnnnn_hdr); + for (i = 0; i < 8; i++) + ISP_IOZPUT_8(isp, src->rsnnnn_nodename[i], &dst->rsnnnn_nodename[i]); + ISP_IOZPUT_8(isp, src->rsnnnn_length, &dst->rsnnnn_length); +/* for (i = 0; i < src->rsnnnn_length; i++) + ISP_IOZPUT_8(isp, src->rsnnnn_name[i], &dst->rsnnnn_name[i]);*/ +} + +void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *src, ct_hdr_t *dst) { ISP_IOZGET_8(isp, &src->ct_revision, dst->ct_revision); @@ -2170,7 +2194,8 @@ isp_send_tgt_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_ isp_put_cont_req(isp, (ispcontreq_t *)storage, qe1); } if (isp->isp_dblev & ISP_LOGTDEBUG1) { - isp_print_bytes(isp, "additional queue entry", QENTRY_LEN, storage); + isp_print_bytes(isp, "additional queue entry", + QENTRY_LEN, qe1); } nqe++; } @@ -2207,7 +2232,7 @@ isp_send_tgt_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_ return (CMD_COMPLETE); } if (isp->isp_dblev & ISP_LOGTDEBUG1) { - isp_print_bytes(isp, "first queue entry", QENTRY_LEN, fqe); + isp_print_bytes(isp, "first queue entry", QENTRY_LEN, qe0); } ISP_ADD_REQUEST(isp, nxt); return (CMD_QUEUED); diff --git a/sys/dev/isp/isp_library.h b/sys/dev/isp/isp_library.h index 922a98b..c70b2cc 100644 --- a/sys/dev/isp/isp_library.h +++ b/sys/dev/isp/isp_library.h @@ -144,7 +144,9 @@ void isp_get_fc_hdr(ispsoftc_t *, fc_hdr_t *, fc_hdr_t *); void isp_put_fc_hdr(ispsoftc_t *, fc_hdr_t *, fc_hdr_t *); void isp_get_fcp_cmnd_iu(ispsoftc_t *, fcp_cmnd_iu_t *, fcp_cmnd_iu_t *); void isp_put_rft_id(ispsoftc_t *, rft_id_t *, rft_id_t *); +void isp_put_rspn_id(ispsoftc_t *, rspn_id_t *, rspn_id_t *); void isp_put_rff_id(ispsoftc_t *, rff_id_t *, rff_id_t *); +void isp_put_rsnn_nn(ispsoftc_t *, rsnn_nn_t *, rsnn_nn_t *); void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *); void isp_put_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *); void isp_put_fcp_rsp_iu(ispsoftc_t *isp, fcp_rsp_iu_t *, fcp_rsp_iu_t *); diff --git a/sys/dev/isp/isp_stds.h b/sys/dev/isp/isp_stds.h index 315870e..a83f08f 100644 --- a/sys/dev/isp/isp_stds.h +++ b/sys/dev/isp/isp_stds.h @@ -139,6 +139,19 @@ typedef struct { } rft_id_t; /* + * RSPN_ID Requet CT_IU + * + * Source: INCITS 463-2010 Generic Services 6 Section 5.2.5.32 + */ +typedef struct { + ct_hdr_t rspnid_hdr; + uint8_t rspnid_reserved; + uint8_t rspnid_portid[3]; + uint8_t rspnid_length; + uint8_t rspnid_name[0]; +} rspn_id_t; + +/* * RFF_ID Requet CT_IU * * Source: INCITS 463-2010 Generic Services 6 Section 5.2.5.34 @@ -153,6 +166,18 @@ typedef struct { } rff_id_t; /* + * RSNN_NN Requet CT_IU + * + * Source: INCITS 463-2010 Generic Services 6 Section 5.2.5.35 + */ +typedef struct { + ct_hdr_t rsnnnn_hdr; + uint8_t rsnnnn_nodename[8]; + uint8_t rsnnnn_length; + uint8_t rsnnnn_name[0]; +} rsnn_nn_t; + +/* * FCP Response IU and bits of interest * Source: NCITS T10, Project 1828D, Revision 02b (aka FCP4r02b) */ diff --git a/sys/dev/isp/ispmbox.h b/sys/dev/isp/ispmbox.h index 5a1306f..8bd4d1a 100644 --- a/sys/dev/isp/ispmbox.h +++ b/sys/dev/isp/ispmbox.h @@ -1548,7 +1548,9 @@ typedef struct { #define SNS_GFF_ID 0x11F #define SNS_GID_FT 0x171 #define SNS_RFT_ID 0x217 +#define SNS_RSPN_ID 0x218 #define SNS_RFF_ID 0x21F +#define SNS_RSNN_NN 0x239 typedef struct { uint16_t snscb_rblen; /* response buffer length (words) */ uint16_t snscb_reserved0; diff --git a/sys/dev/ispfw/asm_2500.h b/sys/dev/ispfw/asm_2500.h index 1cc3c9f..92993f2 100644 --- a/sys/dev/ispfw/asm_2500.h +++ b/sys/dev/ispfw/asm_2500.h @@ -30,1158 +30,1197 @@ * * * ******************************************************************** */ /* - * Firmware Version 7.03.00 (Apr 14, 2014) + * Firmware Version 8.03.00 (2015) */ #ifdef ISP_2500 static const uint32_t isp_2500_risc_code[] = { - 0x0501f042, 0x00112000, 0x00100000, 0x0000d32a, - 0x00000007, 0x00000003, 0x00000000, 0x000090d5, + 0x0501f06b, 0x00116000, 0x00100000, 0x0000daa9, + 0x00000008, 0x00000003, 0x00000000, 0x001090d5, 0x00000004, 0x00000000, 0x20434f50, 0x59524947, - 0x48542032, 0x30303720, 0x514c4f47, 0x49432043, + 0x48542032, 0x30313520, 0x514c4f47, 0x49432043, 0x4f52504f, 0x52415449, 0x4f4e2020, 0x20495350, 0x32357878, 0x20466972, 0x6d776172, 0x65202020, - 0x56657273, 0x696f6e20, 0x2020372e, 0x30332e30, + 0x56657273, 0x696f6e20, 0x2020382e, 0x30332e30, 0x30202024, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, - 0x0000d32a, 0xffffffff, 0x00112004, 0x00020000, - 0x000011a6, 0xffffffff, 0x001131af, 0x0000c000, - 0x00000aa2, 0x00ffffff, 0x00113c51, 0x00008000, - 0x00000703, 0x00ffffff, 0x00114354, 0x0000a000, - 0x00000621, 0x00ffffff, 0x00114975, 0x0000400e, + 0x0000daa9, 0xffffffff, 0x00116004, 0x00020000, + 0x000011e7, 0xffffffff, 0x001171f0, 0x0000c000, + 0x00000adf, 0x00ffffff, 0x00117ccf, 0x00008000, + 0x0000070b, 0x00ffffff, 0x001183da, 0x0000a000, + 0x0000062a, 0x00ffffff, 0x00118a04, 0x0000400e, 0x00000808, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x4203f000, 0x00021fff, - 0x40000000, 0x4203e000, 0x90000100, 0x40000000, - 0x42000800, 0x000211a7, 0x6002f000, 0x608c00e0, - 0x50000000, 0x8c000500, 0x05020003, 0x42000800, - 0x00020000, 0x45780800, 0x80040800, 0x82040580, - 0x00022000, 0x05fe07fc, 0x4178a000, 0x4200a800, - 0x0010d32a, 0x42000800, 0x00111b00, 0x40540000, - 0x8004b480, 0x0569f852, 0x0501ffcd, 0x600c6020, - 0x50304800, 0x8c240500, 0x0500001c, 0x59e00016, - 0x8c000504, 0x05020019, 0x0569f8a9, 0x604808fa, - 0x50041000, 0x82081500, 0xfffffffc, 0x90081d43, - 0x90081540, 0x84244d00, 0x440c0800, 0x44080800, - 0x44246000, 0x64030000, 0x4203e000, 0x70000000, - 0x4203e000, 0xb0300000, 0x603ff84e, 0x59e00016, - 0x8c000504, 0x05020002, 0x05fe47fd, 0x84244d40, - 0x44246000, 0x0569f892, 0x64030000, 0x0501fde5, - 0x4803c856, 0x0509fbf8, 0x6413c020, 0x4203e000, - 0x6000000f, 0x640f70e8, 0x640f78e8, 0x640da8e8, - 0x59e00023, 0x8c000500, 0x0502002b, 0x42002800, - 0x00100022, 0x58140800, 0x4817c857, 0x4807c857, - 0x800409c0, 0x0500000a, 0x58142002, 0x4813c857, - 0x58141003, 0x4c140000, 0x0501ff8c, 0x5c002800, - 0x0502003d, 0x90142c04, 0x05fdf7f3, 0x42002800, - 0x00100022, 0x5814a000, 0x4817c857, 0x4853c857, - 0x8050a1c0, 0x05000014, 0x4c140000, 0x5814a801, - 0x4857c857, 0x40500000, 0x80540480, 0x0500000b, - 0x82540480, 0x0000400e, 0x05020005, 0x9050a404, - 0x0509ff8a, 0x05020028, 0x0501f004, 0x5814b002, - 0x485bc857, 0x0565fff6, 0x5c002800, 0x90142c04, - 0x05fdf7e9, 0x050dfdf3, 0x42001000, 0x7ff481fe, - 0x59e00002, 0x8c00051e, 0x05020003, 0x42001000, - 0x7ff480fe, 0x50081000, 0x480b5092, 0x42002800, - 0x00100022, 0x58140801, 0x4817c857, 0x4807c857, - 0x800409c0, 0x05000023, 0x58142002, 0x4813c857, - 0x58141003, 0x4c140000, 0x82040480, 0x0000400e, - 0x05020004, 0x0509ff94, 0x4803c856, 0x0501f003, - 0x0501ff52, 0x05020004, 0x5c002800, 0x90142c04, - 0x05fdf7ed, 0x4803c856, 0x4a03c020, 0x00004010, - 0x4a03c011, 0x40100011, 0x05006000, 0x4203e000, - 0x40000000, 0x59e00017, 0x60000800, 0x8c00050a, - 0x050a0df0, 0x8d0c0530, 0x050a0de3, 0x050a0de5, - 0x6403c017, 0x4203e000, 0x30000001, 0x0501f000, - 0x4803c856, 0x59e00024, 0x8c000500, 0x050a0f32, - 0x0501ffca, 0x4a03c014, 0x001c001c, 0x4817c857, - 0x0501fff8, 0x42002000, 0x00111b00, 0x0565ffc3, - 0x59a800a1, 0x800001c0, 0x0500000c, 0x59a800ca, - 0x8c000500, 0x05000005, 0x59a8000a, 0x82000480, - 0x0013ffff, 0x05001005, 0x59a820a1, 0x80102000, - 0x59a8280a, 0x0565ffb5, 0x0569f9db, 0x0569fa02, - 0x59a8280a, 0x60000812, 0x60001802, 0x4807503b, - 0x480f529c, 0x60c01000, 0x053dfe68, 0x82040c00, - 0x00111b00, 0x4807500b, 0x600400de, 0x50000000, - 0x8c000502, 0x05000004, 0x59a800ca, 0x84000540, - 0x480350ca, 0x4a03c810, 0x00100000, 0x4a03c811, - 0x0010d32a, 0x0501ff90, 0x6447c829, 0x59e40001, - 0x82000540, 0x0003401f, 0x4803c801, 0x4a03c802, - 0x00000933, 0x59e00003, 0x82000540, 0x00240000, - 0x4803c003, 0x64ffc019, 0x60701000, 0x0501fedf, - 0x4202c000, 0x00111b00, 0x59aab00b, 0x59aaa00b, - 0x59aaa80b, 0x59aac83b, 0x4967509b, 0x496754dd, - 0x59a8000b, 0x4803500c, 0x0501fffe, 0x0549fa90, - 0x0505f807, 0x0505f875, 0x0509ffb5, 0x59a80084, - 0x8c000508, 0x05000004, 0x050dfebf, 0x0525f87d, - 0x050dffef, 0x0505f9b8, 0x0505ffb0, 0x053dfe71, - 0x0501fc55, 0x0515f812, 0x0531fb18, 0x052dfc90, - 0x0539fd03, 0x0509ffe6, 0x0509fe0f, 0x4203e000, - 0xf0000001, 0x0569f9c9, 0x6403c018, 0x4203e000, - 0xa0000001, 0x59a800ca, 0x80000540, 0x05000004, - 0x4203e000, 0x20000551, 0x0501f003, 0x4203e000, - 0x20000511, 0x4203e000, 0x50010000, 0x6403c020, - 0x05027019, 0x59e00020, 0x90000582, 0x05020016, - 0x4a03c020, 0x00004000, 0x4a03c011, 0x40000010, - 0x05006000, 0x4203e000, 0x40000000, 0x4df00000, - 0x4203e000, 0x50000000, 0x59e00017, 0x60000800, - 0x8c00050a, 0x00020892, 0x8d0c0530, 0x050a0d5a, - 0x000209bc, 0x5c03e000, 0x6403c017, 0x4203e000, - 0x30000001, 0x6002d800, 0x4203e000, 0xb0600000, - 0x59a800d5, 0x4003f800, 0x0001f004, 0x4df00000, - 0x4203e000, 0x50000000, 0x416c0000, 0x90000c88, - 0x05021c5e, 0x0c01f803, 0x5c03e000, 0x0001f006, - 0x00100189, 0x0010019a, 0x001002bf, 0x00100188, - 0x001003fa, 0x00100188, 0x00100188, 0x00100592, - 0x0501fc52, 0x42000800, 0x0010dceb, 0x5804001e, - 0x8c000500, 0x0500000c, 0x84000500, 0x4800081e, - 0x6012d800, 0x0501fe6d, 0x49f3c857, 0x5c000800, - 0x5c000000, 0x82000540, 0x00007e20, 0x4c000000, - 0x4c040000, 0x1c01f000, 0x41780000, 0x800001c0, - 0x05020039, 0x59c4000d, 0x8c00051e, 0x0502001f, - 0x59a800a7, 0x8c000500, 0x05000012, 0x60300830, - 0x050dfc0d, 0x90040560, 0x60300830, 0x4c000000, - 0x050dfc0e, 0x6041d04e, 0x0539fe5b, 0x5c000000, - 0x8400050a, 0x60300830, 0x050dfc08, 0x6191d000, - 0x0539fe55, 0x59c4000d, 0x8c00051e, 0x0502000b, - 0x59c40005, 0x8c000500, 0x05020008, 0x050dff96, - 0x640b50b4, 0x64075075, 0x6012d800, 0x42000000, - 0x0010e4be, 0x0565f622, 0x0501fe39, 0x052dfeef, - 0x0500000f, 0x052dfeff, 0x05020032, 0x5994002d, - 0x82000580, 0x001051ae, 0x05020004, 0x5994002c, - 0x800001c0, 0x0502002b, 0x59c40006, 0x82000540, - 0x000000c0, 0x48038806, 0x0501f026, 0x052dfe62, - 0x916c0581, 0x050200c5, 0x59a8003f, 0x90000589, - 0x050200c2, 0x497b503d, 0x42000800, 0xffffd815, - 0x0511fcf2, 0x42024800, 0x0010e512, 0x497a4805, - 0x64078893, 0x4a038805, 0x000000f0, 0x052dfedb, - 0x59c41006, 0x05020006, 0x82081540, 0x000000f1, - 0x82081500, 0xbbffffff, 0x0501f003, 0x82081540, - 0x440000f1, 0x480b8806, 0x0539fe23, 0x0541fb6d, - 0x0501f8ab, 0x050000a9, 0x42000000, 0x0010e39b, - 0x0565fdec, 0x60c01100, 0x497b50b2, 0x0501f036, - 0x0525f9b0, 0x59c400a4, 0x9000050f, 0x90000487, - 0x0502109e, 0x0539fe14, 0x59c400a3, 0x82000500, - 0xffefffff, 0x480388a3, 0x59a800bd, 0x800001c0, - 0x05020003, 0x0525ff01, 0x0501f094, 0x59a80043, - 0x84000546, 0x48035043, 0x052dfeae, 0x59c41006, - 0x05020006, 0x82081540, 0x44000001, 0x82081500, - 0xffffff0f, 0x0501f003, 0x82081540, 0x440000f1, - 0x480b8806, 0x497b9005, 0x0501f885, 0x05000083, - 0x60000000, 0x052dfc3b, 0x4a038802, 0x0000ffff, - 0x4a0378e4, 0x00003000, 0x42007000, 0x0010e060, - 0x58380401, 0x8c000508, 0x05020003, 0x4a01a8e4, - 0x0000c000, 0x42000000, 0x0010e392, 0x0565fdb9, - 0x59a8103d, 0x600c0800, 0x0541fb1b, 0x60401100, - 0x59a81809, 0x0521fdb3, 0x59a804cc, 0x82000500, - 0xffffff40, 0x480354cc, 0x59a80249, 0x84000518, - 0x48035249, 0x59c40001, 0x82000500, 0x00018000, - 0x82000580, 0x00018000, 0x59c400a3, 0x05020004, - 0x82000540, 0x00001000, 0x0501f003, 0x82000500, - 0xffffefff, 0x480388a3, 0x59c80015, 0x84000548, - 0x48039015, 0x050dfacb, 0x59a81008, 0x84081500, - 0x480b5008, 0x850e1d0a, 0x0529fd8a, 0x052dfe67, - 0x05000007, 0x8d0c0506, 0x05000005, 0x640750b2, - 0x850e1d0e, 0x0525fa79, 0x0501f048, 0x0529fe89, - 0x05000005, 0x59c41002, 0x8408150c, 0x480b8802, - 0x0501f017, 0x052dfe59, 0x05020005, 0x59a80046, - 0x80000540, 0x05540e1d, 0x0501f011, 0x0555fe1b, - 0x59a80249, 0x8c000506, 0x0502000d, 0x59a80046, - 0x80000540, 0x05020007, 0x59a81c49, 0x820c0580, - 0x0000ffff, 0x05000006, 0x8c0c0508, 0x05000004, - 0x4a035449, 0x0000ffff, 0x0525ffb4, 0x497b504b, - 0x497b504a, 0x497b50b3, 0x052dfe40, 0x59a81249, - 0x05020009, 0x050df8bd, 0x80001580, 0x59a8004d, - 0x82000500, 0xffff0000, 0x80040d40, 0x4807504d, - 0x0501f005, 0x59a8004d, 0x82000500, 0xffff0000, - 0x4803504d, 0x599c0017, 0x8c00050a, 0x05000002, - 0x84081544, 0x480b5249, 0x052dfe2c, 0x05000003, - 0x050df8aa, 0x48078880, 0x60141000, 0x0541ffae, - 0x497b504b, 0x497b5044, 0x4a035045, 0x0000ffff, - 0x4a01a8e4, 0x000000c0, 0x600ad800, 0x052dfe1f, - 0x05000005, 0x59a80249, 0x9000050c, 0x90000584, - 0x05000002, 0x0511fa30, 0x1c01f000, 0x0521fe7f, - 0x05020026, 0x599c0019, 0x82000500, 0x0000e000, - 0x82000580, 0x00004000, 0x05020020, 0x59c40001, - 0x82000d00, 0x00018000, 0x82040580, 0x00010000, - 0x05000004, 0x82040580, 0x00008000, 0x05020017, - 0x59a800a6, 0x90000483, 0x05001003, 0x90000541, - 0x0501f012, 0x050dfe6f, 0x64075075, 0x4a035076, - 0xaabbccdd, 0x64135069, 0x6403506a, 0x6012d800, - 0x59a800a6, 0x80000000, 0x480350a6, 0x59a800a5, - 0x82000500, 0xfffffff8, 0x90000544, 0x480350a5, - 0x0501fd42, 0x80000580, 0x1c01f000, 0x0525f854, - 0x05000051, 0x59a80249, 0x90000523, 0x900005a3, - 0x0502004d, 0x0525f853, 0x0500004b, 0x4a038802, - 0x0000ffbf, 0x59a804cc, 0x8c00050c, 0x0502012e, - 0x8c000506, 0x0502000b, 0x8c000508, 0x0502012a, - 0x84000548, 0x480354cc, 0x0525f84b, 0x05000004, - 0x417a5800, 0x0559fcae, 0x0501f123, 0x0501f0ea, - 0x8c00050a, 0x05020038, 0x8400054a, 0x480354cc, - 0x497b504b, 0x497b504a, 0x497b5044, 0x4a035045, - 0x0000ffff, 0x59a80249, 0x82000500, 0xffffff7c, - 0x48035249, 0x42024800, 0x0010e512, 0x59240200, - 0x82000500, 0xffffff1f, 0x48024a00, 0x59a802cc, - 0x5924100b, 0x82081500, 0x00001fff, 0x80080580, - 0x05000012, 0x4d3c0000, 0x4d300000, 0x4d400000, - 0x60aa8000, 0x417a6000, 0x600a7800, 0x41780800, - 0x0511fc4a, 0x5c028000, 0x5c026000, 0x5c027800, - 0x59a802cc, 0x5924080b, 0x82040d00, 0xffffe000, - 0x80040540, 0x4802480b, 0x4d300000, 0x417a6000, - 0x0511fbeb, 0x5c026000, 0x4803c856, 0x5924000c, - 0x800001c0, 0x05020006, 0x0001f817, 0x050000ee, - 0x492e480c, 0x5924000b, 0x48025802, 0x0511f9b6, - 0x0501f0e9, 0x59a80045, 0x82000580, 0x0000ffff, - 0x05000003, 0x0511f9b0, 0x0501f0e3, 0x0565fdfe, - 0x05000017, 0x0565fe01, 0x05000008, 0x052dfd93, - 0x05000006, 0x59a80249, 0x8c000506, 0x0500004e, - 0x0529fdb8, 0x050200d8, 0x80000580, 0x0509ff61, - 0x600ed800, 0x4a035045, 0x0000ffff, 0x4a01a8e4, - 0x00000080, 0x4a038802, 0x0000ffff, 0x850e1d02, - 0x0541fd6a, 0x0501fcb8, 0x0501f0cb, 0x59a80249, - 0x8c00050a, 0x05020003, 0x8c000506, 0x05000037, - 0x8c000500, 0x05000035, 0x4a038802, 0x0000ffbf, - 0x8c000502, 0x05000031, 0x0521ffde, 0x05020004, - 0x599c0018, 0x8c000516, 0x05020029, 0x59a8004a, - 0x82000580, 0x0000ffff, 0x05000020, 0x0521ffd5, - 0x05000006, 0x59a804cc, 0x8c000500, 0x05000003, - 0x0511fc27, 0x0501f008, 0x41781800, 0x0565fddb, - 0x05000002, 0x60401800, 0x59a80249, 0x8c00050a, - 0x05120a8a, 0x42024800, 0x0010e512, 0x417a4000, - 0x59240200, 0x82000500, 0x000000e0, 0x82000580, - 0x000000e0, 0x050200a0, 0x050dff2c, 0x59a80249, - 0x8c000504, 0x0502009c, 0x600c1000, 0x417a5800, - 0x050dff4b, 0x0501f098, 0x59a80249, 0x8c00051c, - 0x05020003, 0x8c000504, 0x05fc07f8, 0x59a8004b, - 0x80000540, 0x05020090, 0x59a80249, 0x8c000508, - 0x05020017, 0x59a80044, 0x80000540, 0x0502008a, - 0x59a80249, 0x8c00050e, 0x0500000c, 0x8c000502, - 0x0502000a, 0x052dfd39, 0x05000083, 0x82000500, - 0xffffff77, 0x48035249, 0x4a035045, 0x0000ffff, - 0x0511f949, 0x0501f07c, 0x0565fda8, 0x0500000c, - 0x0511fcc7, 0x05020078, 0x0501f009, 0x599c1819, - 0x8c0c0510, 0x05000004, 0x8c000502, 0x0502001d, - 0x0501f071, 0x8c000516, 0x0500006f, 0x0529fd4d, - 0x0502006d, 0x0521ff8b, 0x05020004, 0x599c0018, - 0x8c000516, 0x05020003, 0x052df90d, 0x05020066, - 0x59a80006, 0x8c00051c, 0x05020004, 0x599c0017, - 0x8c00050a, 0x0500000b, 0x61c0b00f, 0x417a8800, - 0x0001fb00, 0x05020004, 0x59340200, 0x8c00051a, - 0x05020059, 0x81468800, 0x8058b040, 0x05fe07f9, - 0x0565fda3, 0x05000004, 0x4a038802, 0x0000ffbf, - 0x0501f003, 0x4a038802, 0x0000ffff, 0x42001800, - 0x0010dd46, 0x0501fd73, 0x42001800, 0x0010dd53, - 0x0501fd70, 0x850e1d02, 0x4a01a8e4, 0x00000080, - 0x600ed800, 0x4a035045, 0x0000ffff, 0x0501fc2e, - 0x80000580, 0x0509fecb, 0x497b50a6, 0x64075078, - 0x0521ff5c, 0x0502000b, 0x599c0018, 0x8c000516, - 0x05000008, 0x59a804cc, 0x8c00050e, 0x05020036, - 0x8400054e, 0x480354cc, 0x0521fcda, 0x0501f016, - 0x59a81a49, 0x59a82041, 0x82102580, 0x0000aaaa, - 0x05000004, 0x8c0c0506, 0x05020002, 0x480f5449, - 0x8c0c0508, 0x05000007, 0x599c1819, 0x8c0c0510, - 0x05000004, 0x61f8180f, 0x60102000, 0x0501f003, - 0x61fc19ff, 0x60182000, 0x60003000, 0x417a4000, - 0x0521fc6c, 0x052dfce3, 0x0500000a, 0x59c40006, - 0x052dfcce, 0x05000004, 0x82000500, 0xffffff0f, - 0x0501f003, 0x82000500, 0xfbffffff, 0x48038806, - 0x0521ff30, 0x0500000a, 0x59a804cc, 0x8c000500, - 0x05000007, 0x59c40801, 0x82040d40, 0x00004000, - 0x48078801, 0x64c378e4, 0x0501f006, 0x59c40801, - 0x82040d00, 0xffffbfff, 0x48078801, 0x648378e4, - 0x0541fc9e, 0x1c01f000, 0x4c040000, 0x4c080000, - 0x4c100000, 0x59a8006a, 0x90000c84, 0x050219db, - 0x0c01f805, 0x5c002000, 0x5c001000, 0x5c000800, - 0x1c01f000, 0x00100409, 0x001004a3, 0x001004c8, - 0x00100576, 0x60380938, 0x050df9a7, 0x90040550, - 0x82000500, 0xfffffff7, 0x60380938, 0x050df9a7, - 0x59c410a3, 0x84081518, 0x480b88a3, 0x0521fd03, - 0x05020021, 0x599c0019, 0x82000500, 0x0000e000, - 0x82000580, 0x00004000, 0x0502001b, 0x59a808a5, - 0x90040d07, 0x90040580, 0x0502000b, 0x59a80069, - 0x90000582, 0x05000011, 0x050df8ea, 0x497b5068, - 0x050dfce9, 0x640f5076, 0x640b5069, 0x64075075, - 0x0501f00a, 0x90040584, 0x05020008, 0x497b2804, - 0x497b2805, 0x050dfcef, 0x64075075, 0x4a035076, - 0xaabbccdd, 0x64135069, 0x59a800a5, 0x80000000, - 0x480350a5, 0x60000001, 0x0509fe4e, 0x0539fbd6, - 0x59c408a3, 0x82040d00, 0xfffffff7, 0x480788a3, - 0x052dfc78, 0x0500000d, 0x052dfc82, 0x0500000b, - 0x052dfc7a, 0x05020999, 0x59c400a3, 0x84000532, - 0x84000570, 0x480388a3, 0x052dffa3, 0x4a038808, - 0x00000208, 0x0501f012, 0x59c400a3, 0x84000530, - 0x82000500, 0xbf7fffff, 0x480388a3, 0x61e00801, - 0x0525fd72, 0x59c400a3, 0x82000540, 0x00018000, - 0x8400051c, 0x480388a3, 0x82000500, 0xfffeffff, - 0x480388a3, 0x4a038808, 0x00000200, 0x59c40006, - 0x82000500, 0xfbffff0e, 0x48038806, 0x497b282c, - 0x497b282d, 0x61d00803, 0x42001000, 0x00100590, - 0x0539fa3c, 0x59c40805, 0x64078805, 0x0509fefb, - 0x05020006, 0x60040000, 0x050df8db, 0x60040000, - 0x050df8a9, 0x0501f01e, 0x0509fefa, 0x05020006, - 0x41780000, 0x050df8d4, 0x41780000, 0x050df8a2, - 0x0501f017, 0x0509fef9, 0x05020006, 0x60080000, - 0x050df8cd, 0x60080000, 0x050df89b, 0x0501f010, - 0x0509fef8, 0x05020006, 0x600c0000, 0x050df8c6, - 0x600c0000, 0x050df894, 0x0501f009, 0x0509fef7, - 0x05020956, 0x59a80075, 0x800001c0, 0x05000004, - 0x0509fef7, 0x6407506a, 0x0501f018, 0x050df914, - 0x6407506a, 0x052dfc27, 0x05000008, 0x052dfc31, - 0x05000006, 0x052dfc29, 0x05020948, 0x64075042, - 0x052dfb9d, 0x0501f00d, 0x59c400a4, 0x9000050f, - 0x90000588, 0x05000003, 0x4a038805, 0x04000000, - 0x59c400a3, 0x82000540, 0x0001c000, 0x480388a3, - 0x84000520, 0x480388a3, 0x1c01f000, 0x0501f8e9, - 0x05020003, 0x640f506a, 0x0501f021, 0x0509fed3, - 0x0502000d, 0x59a80075, 0x800001c0, 0x0500000a, - 0x0509fed3, 0x59a80074, 0x8c00051e, 0x05000018, - 0x052dfc0a, 0x05020006, 0x64075042, 0x052dfb7e, - 0x0501f003, 0x050df8be, 0x05020011, 0x050df855, - 0x640b506a, 0x497b5075, 0x59c400a3, 0x84000520, - 0x480388a3, 0x052dfbfd, 0x05000009, 0x0521fc57, - 0x05000007, 0x497b282c, 0x497b282d, 0x60b40800, - 0x42001000, 0x00100590, 0x0539f9da, 0x1c01f000, - 0x0501f8c4, 0x05020003, 0x640f506a, 0x0501f0a9, - 0x4a038805, 0x000000f0, 0x050df8a5, 0x050200a0, - 0x050dfab0, 0x05000017, 0x050dfa95, 0x05020015, - 0x050dfa9e, 0x0502000a, 0x59a80076, 0x90000584, - 0x05fc07f2, 0x0509fe9b, 0x0502000e, 0x59a80076, - 0x82000580, 0xaabbccdd, 0x05fc07ec, 0x59a80076, - 0x90000580, 0x05fc07e9, 0x0509fe80, 0x05020005, - 0x59a80076, 0x82000580, 0xaabbccdd, 0x05fc07e3, - 0x59a800a7, 0x8c000500, 0x0502000b, 0x59a80884, - 0x8c04050c, 0x05020008, 0x60380938, 0x050df8c2, - 0x90040548, 0x82000500, 0xffffffef, 0x60380938, - 0x050df8c2, 0x050dfa8b, 0x05000032, 0x0521fe5a, - 0x0500000c, 0x4a03c014, 0x00200020, 0x59c40001, - 0x82000500, 0x00018000, 0x82000580, 0x00018000, - 0x05020026, 0x4a03c013, 0x00200020, 0x0501f025, - 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, + 0x00000000, 0x00000000, 0x00000009, 0x0000000c, + 0x0000000f, 0x00000012, 0x00000015, 0x00000000, + 0x00000000, 0x0000000f, 0x00000000, 0x00000000, + 0x00000000, 0x00100046, 0x00100045, 0x00000000, + 0x00100046, 0x00000000, 0x00000000, 0x00100046, + 0x00100045, 0x00100042, 0x00100046, 0x00100045, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00100046, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00100046, + 0x00100046, 0x00100046, 0x00000000, 0x00100046, + 0x00000000, 0x00000000, 0x00000000, 0x4203f000, + 0x00021fff, 0x40000000, 0x4203e000, 0x90000100, + 0x40000000, 0x42000800, 0x000211e8, 0x6002f000, + 0x608c00e0, 0x50000000, 0x8c000500, 0x05020003, + 0x42000800, 0x00020000, 0x45780800, 0x80040800, + 0x82040580, 0x00022000, 0x05fe07fc, 0x4178a000, + 0x4200a800, 0x0010daa9, 0x42000800, 0x00115aa4, + 0x40540000, 0x8004b480, 0x0569ffa4, 0x0501ffd3, + 0x600c6020, 0x50304800, 0x8c240500, 0x0500001c, + 0x59e00016, 0x8c000504, 0x05020019, 0x0569fffb, + 0x604808fa, 0x50041000, 0x82081500, 0xfffffffc, + 0x90081d43, 0x90081540, 0x84244d00, 0x440c0800, + 0x44080800, 0x44246000, 0x64030000, 0x4203e000, + 0x70000000, 0x4203e000, 0xb0300000, 0x603ff84e, + 0x59e00016, 0x8c000504, 0x05020002, 0x05fe47fd, + 0x84244d40, 0x44246000, 0x0569ffe4, 0x64030000, + 0x0501fdf7, 0x4803c856, 0x0509fc3e, 0x6413c020, + 0x4203e000, 0x6000000f, 0x640f70e8, 0x640f78e8, + 0x640da8e8, 0x59e00023, 0x8c000500, 0x0502002b, + 0x42002800, 0x00100022, 0x58140800, 0x4817c857, + 0x4807c857, 0x800409c0, 0x0500000a, 0x58142002, + 0x4813c857, 0x58141003, 0x4c140000, 0x0501ff92, + 0x5c002800, 0x0502003d, 0x90142c04, 0x05fdf7f3, + 0x42002800, 0x00100022, 0x5814a000, 0x4817c857, + 0x4853c857, 0x8050a1c0, 0x05000014, 0x4c140000, + 0x5814a801, 0x4857c857, 0x40500000, 0x80540480, + 0x0500000b, 0x82540480, 0x0000400e, 0x05020005, + 0x9050a404, 0x0509ffd2, 0x05020028, 0x0501f004, + 0x5814b002, 0x485bc857, 0x0569ff48, 0x5c002800, + 0x90142c04, 0x05fdf7e9, 0x050dfe4a, 0x42001000, + 0x7ff481fe, 0x59e00002, 0x8c00051e, 0x05020003, + 0x42001000, 0x7ff480fe, 0x50081000, 0x480b5095, + 0x42002800, 0x00100022, 0x58140801, 0x4817c857, + 0x4807c857, 0x800409c0, 0x05000023, 0x58142002, + 0x4813c857, 0x58141003, 0x4c140000, 0x82040480, + 0x0000400e, 0x05020004, 0x0509ffdc, 0x4803c856, + 0x0501f003, 0x0501ff58, 0x05020004, 0x5c002800, + 0x90142c04, 0x05fdf7ed, 0x4803c856, 0x4a03c020, + 0x00004010, 0x4a03c011, 0x40100011, 0x05006000, + 0x4203e000, 0x40000000, 0x59e00017, 0x60000800, + 0x8c00050a, 0x050a0e38, 0x8d0c0530, 0x050a0e2b, + 0x050a0e2d, 0x6403c017, 0x4203e000, 0x30000001, + 0x0501f000, 0x4803c856, 0x59e00024, 0x8c000500, + 0x050a0f7a, 0x59e00024, 0x8c00050e, 0x05000003, + 0x4a020200, 0x00003800, 0x0501ffd3, 0x4a03c014, + 0x001c001c, 0x4817c857, 0x0505f801, 0x42002000, + 0x00115aa4, 0x0569ff10, 0x59a800a4, 0x800001c0, + 0x0500000c, 0x59a800cf, 0x8c000500, 0x05000005, + 0x59a8000a, 0x82000480, 0x0013ffff, 0x05001005, + 0x59a820a4, 0x80102000, 0x59a8280a, 0x0569ff02, + 0x056df92b, 0x056df953, 0x59a8280a, 0x60800812, + 0x60001802, 0x4807503d, 0x480f529f, 0x900d0420, + 0x800404a0, 0x4803543e, 0x60c01000, 0x0541faf0, + 0x82040c00, 0x00115aa4, 0x4807500b, 0x600400de, + 0x50000000, 0x8c000502, 0x05000004, 0x59a800cf, + 0x84000540, 0x480350cf, 0x4a03c810, 0x00100000, + 0x4a03c811, 0x0010daa9, 0x0501ff96, 0x6447c829, + 0x59e40001, 0x82000540, 0x0003401f, 0x4803c801, + 0x4a03c802, 0x00000933, 0x59e00003, 0x82000540, + 0x00240000, 0x4803c003, 0x64ffc019, 0x60701000, + 0x0501fedd, 0x4202c000, 0x00115aa4, 0x42017800, + 0x00115aa4, 0x59aab00b, 0x59aaa00b, 0x59aaa80b, + 0x59aac83d, 0x4967509e, 0x496754e2, 0x59a8000b, + 0x4803500c, 0x0505f802, 0x0549ff51, 0x0505f80b, + 0x0505f898, 0x0509fff9, 0x59a80087, 0x8c000508, + 0x05000004, 0x050dff0c, 0x0525f9f0, 0x0511f83c, + 0x0505f9e7, 0x0509f81c, 0x0541faf7, 0x0501fc59, + 0x0515f887, 0x0531fdd5, 0x052dff41, 0x053df8ea, + 0x050df82a, 0x0509fe4d, 0x4203e000, 0xf0000001, + 0x056df915, 0x6403c018, 0x4203e000, 0xa0000001, + 0x59a800cf, 0x80000540, 0x05000004, 0x4203e000, + 0x20000551, 0x0501f003, 0x4203e000, 0x20000511, + 0x4203e000, 0x50010000, 0x6403c020, 0x05027019, + 0x59e00020, 0x90000582, 0x05020016, 0x4a03c020, + 0x00004000, 0x4a03c011, 0x40000010, 0x05006000, + 0x4203e000, 0x40000000, 0x4df00000, 0x4203e000, + 0x50000000, 0x59e00017, 0x60000800, 0x8c00050a, + 0x0002089a, 0x8d0c0530, 0x050a0d98, 0x000209c4, + 0x5c03e000, 0x6403c017, 0x4203e000, 0x30000001, + 0x6002d800, 0x4203e000, 0xb0600000, 0x59a800da, + 0x4003f800, 0x0001f004, 0x4df00000, 0x4203e000, + 0x50000000, 0x416c0000, 0x90000c88, 0x05021c66, + 0x0c01f803, 0x5c03e000, 0x0001f006, 0x001001bc, + 0x001001cd, 0x001002f2, 0x001001bb, 0x00100431, + 0x001001bb, 0x001001bb, 0x001005c9, 0x0501fc5a, + 0x42000800, 0x00111c71, 0x5804001e, 0x8c000500, + 0x0500000c, 0x84000500, 0x4800081e, 0x6012d800, + 0x0501fe69, 0x49f3c857, 0x5c000800, 0x5c000000, + 0x82000540, 0x00007e20, 0x4c000000, 0x4c040000, + 0x1c01f000, 0x41780000, 0x800001c0, 0x05020039, + 0x59c4000d, 0x8c00051e, 0x0502001f, 0x59a800aa, + 0x8c000500, 0x05000012, 0x60300830, 0x050dfc5a, + 0x90040560, 0x60300830, 0x4c000000, 0x050dfc5b, + 0x6041d04e, 0x053dfa93, 0x5c000000, 0x8400050a, + 0x60300830, 0x050dfc55, 0x6191d000, 0x053dfa8d, + 0x59c4000d, 0x8c00051e, 0x0502000b, 0x59c40005, + 0x8c000500, 0x05020008, 0x050dffe3, 0x640b50b9, + 0x64075078, 0x6012d800, 0x42000000, 0x00112462, + 0x0569f56a, 0x0501fe35, 0x0531f9a6, 0x0500000f, + 0x0531f9b6, 0x05020032, 0x5994002e, 0x82000580, + 0x001053a5, 0x05020004, 0x5994002d, 0x800001c0, + 0x0502002b, 0x59c40006, 0x82000540, 0x000000c0, + 0x48038806, 0x0501f026, 0x0531f913, 0x916c0581, + 0x050200c5, 0x59a80042, 0x90000589, 0x050200c2, + 0x497b5040, 0x42000800, 0xffffd815, 0x0511fd66, + 0x42024800, 0x001124b6, 0x497a4805, 0x64078893, + 0x4a038805, 0x000000f0, 0x0531f992, 0x59c41006, + 0x05020006, 0x82081540, 0x000000f1, 0x82081500, + 0xbbffffff, 0x0501f003, 0x82081540, 0x440000f1, + 0x480b8806, 0x053dfa5b, 0x0541fff8, 0x0501f8ab, + 0x050000a9, 0x42000000, 0x0011233c, 0x0569fd34, + 0x60c01100, 0x497b50b7, 0x0501f036, 0x0525fb72, + 0x59c400a4, 0x9000050f, 0x90000487, 0x0502109e, + 0x053dfa4c, 0x59c400a3, 0x82000500, 0xffefffff, + 0x480388a3, 0x59a800c2, 0x800001c0, 0x05020003, + 0x0529f8c5, 0x0501f094, 0x59a80046, 0x84000546, + 0x48035046, 0x0531f965, 0x59c41006, 0x05020006, + 0x82081540, 0x44000001, 0x82081500, 0xffffff0f, + 0x0501f003, 0x82081540, 0x440000f1, 0x480b8806, + 0x497b9005, 0x0501f885, 0x05000083, 0x60000000, + 0x052dfeec, 0x4a038802, 0x0000ffff, 0x4a0378e4, + 0x00003000, 0x42007000, 0x00111ffa, 0x58380401, + 0x8c000508, 0x05020003, 0x4a01a8e4, 0x0000c000, + 0x42000000, 0x00112333, 0x0569fd01, 0x59a81040, + 0x600c0800, 0x0541ffa6, 0x60401100, 0x59a81809, + 0x0521ff1d, 0x59a804d1, 0x82000500, 0xffffff40, + 0x480354d1, 0x59a8024c, 0x84000518, 0x4803524c, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, - 0x00018000, 0x0502000c, 0x60880801, 0x61d81000, - 0x60201800, 0x0521fe44, 0x050008c8, 0x60880801, - 0x61b81000, 0x60201800, 0x0521fe3f, 0x050008c3, - 0x0501f00b, 0x60880801, 0x61d81000, 0x60201800, - 0x0521fe47, 0x050008bd, 0x60880801, 0x61b81000, - 0x60201800, 0x0521fe42, 0x050008b8, 0x4a03c014, - 0x03800000, 0x0501f003, 0x4a03c013, 0x00200000, - 0x052dfb92, 0x0500003d, 0x59c400a4, 0x9000050f, - 0x90000588, 0x05000021, 0x59c40005, 0x8c000534, - 0x0502001e, 0x5994002e, 0x800001c0, 0x05000007, - 0x0501fae3, 0x90000402, 0x5994082c, 0x80040480, - 0x0502103c, 0x0501f004, 0x5994002c, 0x90000482, - 0x05021038, 0x052dfb83, 0x05020036, 0x4a038805, - 0x000000f0, 0x052dfbad, 0x4a035041, 0x0000aaaa, - 0x64035042, 0x59c408a3, 0x90040d48, 0x480788a3, - 0x6006d800, 0x6403506a, 0x64078805, 0x497b282c, - 0x497b282d, 0x0501f019, 0x052dfb72, 0x05020007, - 0x59a80041, 0x82000580, 0x0000aaaa, 0x05020003, - 0x4a03503d, 0x00ffffff, 0x497b5041, 0x59c40006, - 0x82000540, 0x04000001, 0x48038806, 0x8d0c0506, - 0x05020004, 0x59c408a3, 0x90040d48, 0x480788a3, - 0x6006d800, 0x6403506a, 0x64078805, 0x497b282c, - 0x497b282d, 0x0501f00f, 0x59c40005, 0x82000500, - 0x000000c0, 0x0500000b, 0x59c40006, 0x82000540, - 0x000000f1, 0x48038806, 0x05fdf7f2, 0x0509fe0b, - 0x05020004, 0x59a80075, 0x800001c0, 0x05fe0757, - 0x497b8885, 0x1c01f000, 0x4803c856, 0x0521fb9f, - 0x05020005, 0x050dfbc2, 0x42000000, 0x0010e4bf, - 0x0565fa63, 0x60000001, 0x0509fd06, 0x6403506a, - 0x0509fdfa, 0x05020009, 0x59a80068, 0x800001c0, - 0x05000004, 0x80000040, 0x48035068, 0x05020003, - 0x642b5068, 0x64075075, 0x497b8885, 0x0501f22c, - 0x5994002c, 0x5994082d, 0x80040540, 0x1c01f000, - 0x497b282d, 0x1c01f000, 0x4a038805, 0x000000f0, - 0x1c01f000, 0x641f5093, 0x640f5094, 0x64035095, - 0x4a035096, 0x000090d5, 0x052dfe64, 0x4a035449, - 0x0000ffff, 0x4a03503d, 0x00ffffff, 0x0555fad7, - 0x4a03504d, 0x20200000, 0x4a03504e, 0x88000200, - 0x4a03504f, 0x00ff001f, 0x4a035050, 0x000007d0, - 0x4a035051, 0x80000a00, 0x4a035052, 0xa0000200, - 0x4a035053, 0x00ff0004, 0x4a035054, 0x00010000, - 0x4a035055, 0x80000000, 0x4a035056, 0x00000200, - 0x4a035057, 0x00ff0000, 0x4a035058, 0x00010000, - 0x4a03505f, 0x514c4f47, 0x4a035060, 0x49432020, - 0x1c01f000, 0x4d440000, 0x417a8800, 0x4c5c0000, - 0x4178b800, 0x0001fb00, 0x05020004, 0x0529fc62, - 0x05020002, 0x805cb800, 0x81468800, 0x83440580, - 0x000007f0, 0x05fe07f8, 0x405c0800, 0x5c00b800, - 0x5c028800, 0x1c01f000, 0x4803c857, 0x5c000000, - 0x4c000000, 0x4803c857, 0x0501f808, 0x485fc857, - 0x4203e000, 0x50000000, 0x5c000000, 0x4d780000, - 0x6008b900, 0x0501f005, 0x485fc857, 0x4203e000, - 0x50000000, 0x6008b900, 0x05006000, 0x4c000000, - 0x4c040000, 0x59bc00ea, 0x4803c857, 0x90000507, - 0x90000581, 0x05020003, 0x60000800, 0x053dff51, - 0x59b800ea, 0x4803c857, 0x641370e8, 0x5c000800, - 0x4807c025, 0x80040920, 0x4807c026, 0x5c000000, - 0x4803c023, 0x80000120, 0x4803c024, 0x5c000000, - 0x4803c857, 0x4803c021, 0x80000120, 0x4803c022, - 0x41f80000, 0x4803c029, 0x80000120, 0x4803c02a, - 0x41780800, 0x4807c027, 0x59a800af, 0x8c00050a, - 0x05000005, 0x59e00027, 0x8400054a, 0x4803c857, - 0x4803c027, 0x0565fafa, 0x0500004a, 0x42000800, - 0x001105c8, 0x46000800, 0xfaceface, 0x80040800, - 0x4c080000, 0x4c0c0000, 0x600010f4, 0x58080013, - 0x44000800, 0x80040800, 0x58080022, 0x44000800, - 0x80040800, 0x58080023, 0x44000800, 0x80040800, - 0x58080024, 0x44000800, 0x80040800, 0x58080025, - 0x44000800, 0x80040800, 0x58080028, 0x44000800, - 0x80040800, 0x610010f4, 0x602c1800, 0x50080000, - 0x44000800, 0x80081000, 0x80040800, 0x800c1840, - 0x05fe07fb, 0x600c1800, 0x600010f6, 0x480c1003, - 0x58080005, 0x44000800, 0x80040800, 0x800c1840, - 0x05fe17fb, 0x600010f8, 0x58080002, 0x44000800, - 0x80040800, 0x58080003, 0x44000800, 0x80040800, - 0x58080020, 0x44000800, 0x80040800, 0x58080021, - 0x44000800, 0x80040800, 0x58080022, 0x44000800, - 0x80040800, 0x58080023, 0x44000800, 0x80040800, - 0x600010f6, 0x58080007, 0x44000800, 0x80040800, - 0x5808002b, 0x44000800, 0x80040800, 0x5808007c, - 0x44000800, 0x80040800, 0x5c001800, 0x5c001000, - 0x64030000, 0x485fc020, 0x905cb9c0, 0x905cbd52, - 0x485fc011, 0x4203e000, 0x40000000, 0x6016d800, - 0x59e00017, 0x60000800, 0x8c00050a, 0x050a0875, - 0x8d0c0530, 0x050a0868, 0x050a086a, 0x6403c017, - 0x4203e000, 0x30000001, 0x0501f956, 0x05fdf7ff, - 0x60100000, 0x0501f80c, 0x4a03c855, 0x0001eb5a, - 0x59e40001, 0x82000540, 0xff000700, 0x4803c801, - 0x42000000, 0x0010e4e5, 0x49780003, 0x49780004, - 0x1c01f000, 0x42000800, 0x0010e4e7, 0x44000800, - 0x59e40801, 0x82041500, 0x00f3c0ff, 0x480bc801, - 0x8c040524, 0x0500000b, 0x4c000000, 0x59e41052, - 0x59e40054, 0x800000d4, 0x82000400, 0x00110772, - 0x80081480, 0x480bc853, 0x6503c800, 0x5c000000, - 0x4a03c850, 0x00110772, 0x800000d4, 0x82002400, - 0x00110771, 0x4813c851, 0x4a03c853, 0x00000400, - 0x42000000, 0x00110772, 0x82001400, 0x00001000, - 0x45780000, 0x80000000, 0x80081d80, 0x05fe07fd, - 0x4807c801, 0x1c01f000, 0x42002000, 0x0010e4e5, - 0x59e41801, 0x58100c01, 0x82040500, 0x00003800, - 0x820c1d00, 0xffffc7ff, 0x800c1d40, 0x480fc801, - 0x1c01f000, 0x5c036000, 0x4db00000, 0x49b3c857, - 0x4803c857, 0x1c01f000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x8d0c052a, 0x0500002f, 0x401c0000, - 0x80040d40, 0x4004b800, 0x400cc000, 0x4018c800, - 0x0501f8d3, 0x41784000, 0x42002800, 0x0010e4e5, - 0x58142017, 0x5814000d, 0x80100400, 0x445c0000, - 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, - 0x050008a9, 0x0500001c, 0x4c000000, 0x0501f890, - 0x5c000000, 0x44080000, 0x80102000, 0x80000000, - 0x82104d00, 0x000000ff, 0x0500089f, 0x05000012, - 0x44600000, 0x80102000, 0x80000000, 0x82104d00, - 0x000000ff, 0x05000898, 0x0500000b, 0x44640000, - 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, - 0x05000891, 0x05000004, 0x48102817, 0x802041c0, - 0x05060d32, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x00018000, 0x59c400a3, 0x05020004, 0x82000540, + 0x00001000, 0x0501f003, 0x82000500, 0xffffefff, + 0x480388a3, 0x59c80015, 0x84000548, 0x48039015, + 0x050dfb18, 0x59a81008, 0x84081500, 0x480b5008, + 0x850e1d0a, 0x0529ffc1, 0x0531f91e, 0x05000007, + 0x8d0c0506, 0x05000005, 0x640750b7, 0x850e1d0e, + 0x0525fc3b, 0x0501f048, 0x052df8c8, 0x05000005, + 0x59c41002, 0x8408150c, 0x480b8802, 0x0501f017, + 0x0531f910, 0x05020005, 0x59a80049, 0x80000540, + 0x05580b82, 0x0501f011, 0x0559fb80, 0x59a8024c, + 0x8c000506, 0x0502000d, 0x59a80049, 0x80000540, + 0x05020007, 0x59a81c4c, 0x820c0580, 0x0000ffff, + 0x05000006, 0x8c0c0508, 0x05000004, 0x4a03544c, + 0x0000ffff, 0x0529f978, 0x497b504e, 0x497b504d, + 0x497b50b8, 0x0531f8f7, 0x59a8124c, 0x05020009, + 0x050df90a, 0x80001580, 0x59a80050, 0x82000500, + 0xffff0000, 0x80040d40, 0x48075050, 0x0501f005, + 0x59a80050, 0x82000500, 0xffff0000, 0x48035050, + 0x599c0017, 0x8c00050a, 0x05000002, 0x84081544, + 0x480b524c, 0x0531f8e3, 0x05000003, 0x050df8f7, + 0x48078880, 0x60141000, 0x0545fc39, 0x497b504e, + 0x497b5047, 0x4a035048, 0x0000ffff, 0x4a01a8e4, + 0x000000c0, 0x600ad800, 0x0531f8d6, 0x05000005, + 0x59a8024c, 0x9000050c, 0x90000584, 0x05000002, + 0x0511fa95, 0x1c01f000, 0x0521fff2, 0x05020026, + 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, + 0x00004000, 0x05020020, 0x59c40001, 0x82000d00, + 0x00018000, 0x82040580, 0x00010000, 0x05000004, + 0x82040580, 0x00008000, 0x05020017, 0x59a800a9, + 0x90000483, 0x05001003, 0x90000541, 0x0501f012, + 0x050dfebc, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x6413506c, 0x6403506d, 0x6012d800, 0x59a800a9, + 0x80000000, 0x480350a9, 0x59a800a8, 0x82000500, + 0xfffffff8, 0x90000544, 0x480350a8, 0x0501fd3e, + 0x80000580, 0x1c01f000, 0x0525f9c7, 0x05000051, + 0x59a8024c, 0x90000523, 0x900005a3, 0x0502004d, + 0x0525f9c6, 0x0500004b, 0x4a038802, 0x0000ffbf, + 0x59a804d1, 0x8c00050c, 0x05020132, 0x8c000506, + 0x0502000b, 0x8c000508, 0x0502012e, 0x84000548, + 0x480354d1, 0x0525f9be, 0x05000004, 0x417a5800, + 0x055dfa2c, 0x0501f127, 0x0501f0ee, 0x8c00050a, + 0x05020038, 0x8400054a, 0x480354d1, 0x497b504e, + 0x497b504d, 0x497b5047, 0x4a035048, 0x0000ffff, + 0x59a8024c, 0x82000500, 0xffffff7c, 0x4803524c, + 0x42024800, 0x001124b6, 0x59240200, 0x82000500, + 0xffffff1f, 0x48024a00, 0x59a802d1, 0x5924100b, + 0x82081500, 0x00001fff, 0x80080580, 0x05000012, + 0x4d3c0000, 0x4d300000, 0x4d400000, 0x60aa8000, + 0x417a6000, 0x600a7800, 0x41780800, 0x0511fcbe, + 0x5c028000, 0x5c026000, 0x5c027800, 0x59a802d1, + 0x5924080b, 0x82040d00, 0xffffe000, 0x80040540, + 0x4802480b, 0x4d300000, 0x417a6000, 0x0511fc5f, + 0x5c026000, 0x4803c856, 0x5924000c, 0x800001c0, + 0x05020006, 0x0001f81f, 0x050000f2, 0x492e480c, + 0x5924000b, 0x48025802, 0x0511fa1b, 0x0501f0ed, + 0x59a80048, 0x82000580, 0x0000ffff, 0x05000003, + 0x0511fa15, 0x0501f0e7, 0x0569fd46, 0x05000017, + 0x0569fd49, 0x05000008, 0x0531f84a, 0x05000006, + 0x59a8024c, 0x8c000506, 0x0500004e, 0x0529fff7, + 0x050200dc, 0x80000580, 0x0509ffae, 0x600ed800, + 0x4a035048, 0x0000ffff, 0x4a01a8e4, 0x00000080, + 0x4a038802, 0x0000ffff, 0x850e1d02, 0x0545f9f5, + 0x0501fcb4, 0x0501f0cf, 0x59a8024c, 0x8c00050a, + 0x05020003, 0x8c000506, 0x05000037, 0x8c000500, + 0x05000035, 0x4a038802, 0x0000ffbf, 0x8c000502, + 0x05000031, 0x0525f951, 0x05020004, 0x599c0018, + 0x8c000516, 0x05020029, 0x59a8004d, 0x82000580, + 0x0000ffff, 0x05000020, 0x0525f948, 0x05000006, + 0x59a804d1, 0x8c000500, 0x05000003, 0x0511fc9b, + 0x0501f008, 0x41781800, 0x0569fd23, 0x05000002, + 0x60401800, 0x59a8024c, 0x8c00050a, 0x05120af3, + 0x42024800, 0x001124b6, 0x417a4000, 0x59240200, + 0x82000500, 0x000000e0, 0x82000580, 0x000000e0, + 0x050200a4, 0x050dff8c, 0x59a8024c, 0x8c000504, + 0x050200a0, 0x600c1000, 0x417a5800, 0x050dffab, + 0x0501f09c, 0x59a8024c, 0x8c00051c, 0x05020003, + 0x8c000504, 0x05fc07f8, 0x59a8004e, 0x80000540, + 0x05020094, 0x59a8024c, 0x8c000508, 0x05020017, + 0x59a80047, 0x80000540, 0x0502008e, 0x59a8024c, + 0x8c00050e, 0x0500000c, 0x8c000502, 0x0502000a, + 0x052dfff0, 0x05000087, 0x82000500, 0xffffff77, + 0x4803524c, 0x4a035048, 0x0000ffff, 0x0511f9ae, + 0x0501f080, 0x0569fcf0, 0x0500000c, 0x0511fd3c, + 0x0502007c, 0x0501f009, 0x599c1819, 0x8c0c0510, + 0x05000004, 0x8c000502, 0x05020021, 0x0501f075, + 0x8c000516, 0x05000073, 0x0529ff8c, 0x05020071, + 0x0525f8fe, 0x05020004, 0x599c0018, 0x8c000516, + 0x05020003, 0x052dfbaf, 0x0502006a, 0x59a80006, + 0x8c00051c, 0x05020004, 0x599c0017, 0x8c00050a, + 0x0500000f, 0x59a8b0ac, 0x417a8800, 0x0001fb08, + 0x05020004, 0x59340200, 0x8c00051a, 0x0502005d, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07f5, 0x0569fce7, + 0x05000004, 0x4a038802, 0x0000ffbf, 0x0501f003, + 0x4a038802, 0x0000ffff, 0x42001800, 0x00111ce0, + 0x0501fd73, 0x42001800, 0x00111ced, 0x0501fd70, + 0x850e1d02, 0x4a01a8e4, 0x00000080, 0x600ed800, + 0x4a035048, 0x0000ffff, 0x0501fc26, 0x80000580, + 0x0509ff14, 0x497b50a9, 0x6407507b, 0x0525f8cb, + 0x0502000b, 0x599c0018, 0x8c000516, 0x05000008, + 0x59a804d1, 0x8c00050e, 0x05020036, 0x8400054e, + 0x480354d1, 0x0521fe46, 0x0501f016, 0x59a81a4c, + 0x59a82044, 0x82102580, 0x0000aaaa, 0x05000004, + 0x8c0c0506, 0x05020002, 0x480f544c, 0x8c0c0508, + 0x05000007, 0x599c1819, 0x8c0c0510, 0x05000004, + 0x61f8180f, 0x60102000, 0x0501f003, 0x61fc19ff, + 0x60182000, 0x60003000, 0x417a4000, 0x0521fdd2, + 0x052dff96, 0x0500000a, 0x59c40006, 0x052dff81, + 0x05000004, 0x82000500, 0xffffff0f, 0x0501f003, + 0x82000500, 0xfbffffff, 0x48038806, 0x0525f89f, + 0x0500000a, 0x59a804d1, 0x8c000500, 0x05000007, + 0x59c40801, 0x82040d40, 0x00004000, 0x48078801, + 0x64c378e4, 0x0501f006, 0x59c40801, 0x82040d00, + 0xffffbfff, 0x48078801, 0x648378e4, 0x0545f925, + 0x1c01f000, 0x4c040000, 0x4c080000, 0x4c100000, + 0x59a8006d, 0x90000c84, 0x050219df, 0x0c01f805, + 0x5c002000, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x00100440, 0x001004da, 0x001004ff, 0x001005ad, + 0x60380938, 0x050df9f0, 0x90040550, 0x82000500, + 0xfffffff7, 0x60380938, 0x050df9f0, 0x59c410a3, + 0x84081518, 0x480b88a3, 0x0521fe72, 0x05020021, + 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, + 0x00004000, 0x0502001b, 0x59a808a8, 0x90040d07, + 0x90040580, 0x0502000b, 0x59a8006c, 0x90000582, + 0x05000011, 0x050df933, 0x497b506b, 0x050dfd32, + 0x640f5079, 0x640b506c, 0x64075078, 0x0501f00a, + 0x90040584, 0x05020008, 0x497b2804, 0x497b2805, + 0x050dfd38, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x6413506c, 0x59a800a8, 0x80000000, 0x480350a8, + 0x60000001, 0x0509fe97, 0x053df80a, 0x59c408a3, + 0x82040d00, 0xfffffff7, 0x480788a3, 0x052dff2b, + 0x0500000d, 0x052dff35, 0x0500000b, 0x052dff2d, + 0x0502099d, 0x59c400a3, 0x84000532, 0x84000570, + 0x480388a3, 0x0531fa5c, 0x4a038808, 0x00000208, + 0x0501f012, 0x59c400a3, 0x84000530, 0x82000500, + 0xbf7fffff, 0x480388a3, 0x61e00801, 0x0525ff32, + 0x59c400a3, 0x82000540, 0x00018000, 0x8400051c, + 0x480388a3, 0x82000500, 0xfffeffff, 0x480388a3, + 0x4a038808, 0x00000200, 0x59c40006, 0x82000500, + 0xfbffff0e, 0x48038806, 0x497b282d, 0x497b282e, + 0x61d00803, 0x42001000, 0x001005c7, 0x0539fe1f, + 0x59c40805, 0x64078805, 0x0509ff44, 0x05020006, + 0x60040000, 0x050df924, 0x60040000, 0x050df8f2, + 0x0501f01e, 0x0509ff43, 0x05020006, 0x41780000, + 0x050df91d, 0x41780000, 0x050df8eb, 0x0501f017, + 0x0509ff42, 0x05020006, 0x60080000, 0x050df916, + 0x60080000, 0x050df8e4, 0x0501f010, 0x0509ff41, + 0x05020006, 0x600c0000, 0x050df90f, 0x600c0000, + 0x050df8dd, 0x0501f009, 0x0509ff40, 0x0502095a, + 0x59a80078, 0x800001c0, 0x05000004, 0x0509ff40, + 0x6407506d, 0x0501f018, 0x050df95d, 0x6407506d, + 0x052dfeda, 0x05000008, 0x052dfee4, 0x05000006, + 0x052dfedc, 0x0502094c, 0x64075045, 0x052dfe4a, + 0x0501f00d, 0x59c400a4, 0x9000050f, 0x90000588, + 0x05000003, 0x4a038805, 0x04000000, 0x59c400a3, + 0x82000540, 0x0001c000, 0x480388a3, 0x84000520, + 0x480388a3, 0x1c01f000, 0x0501f8e9, 0x05020003, + 0x640f506d, 0x0501f021, 0x0509ff1c, 0x0502000d, + 0x59a80078, 0x800001c0, 0x0500000a, 0x0509ff1c, + 0x59a80077, 0x8c00051e, 0x05000018, 0x052dfebd, + 0x05020006, 0x64075045, 0x052dfe2b, 0x0501f003, + 0x050df907, 0x05020011, 0x050df89e, 0x640b506d, + 0x497b5078, 0x59c400a3, 0x84000520, 0x480388a3, + 0x052dfeb0, 0x05000009, 0x0521fdc6, 0x05000007, + 0x497b282d, 0x497b282e, 0x60b40800, 0x42001000, + 0x001005c7, 0x0539fdbd, 0x1c01f000, 0x0501f8c4, + 0x05020003, 0x640f506d, 0x0501f0a9, 0x4a038805, + 0x000000f0, 0x050df8ee, 0x050200a0, 0x050dfaf9, + 0x05000017, 0x050dfade, 0x05020015, 0x050dfae7, + 0x0502000a, 0x59a80079, 0x90000584, 0x05fc07f2, + 0x0509fee4, 0x0502000e, 0x59a80079, 0x82000580, + 0xaabbccdd, 0x05fc07ec, 0x59a80079, 0x90000580, + 0x05fc07e9, 0x0509fec9, 0x05020005, 0x59a80079, + 0x82000580, 0xaabbccdd, 0x05fc07e3, 0x59a800aa, + 0x8c000500, 0x0502000b, 0x59a80887, 0x8c04050c, + 0x05020008, 0x60380938, 0x050df90b, 0x90040548, + 0x82000500, 0xffffffef, 0x60380938, 0x050df90b, + 0x050dfad4, 0x05000032, 0x0525f817, 0x0500000c, + 0x4a03c014, 0x00200020, 0x59c40001, 0x82000500, + 0x00018000, 0x82000580, 0x00018000, 0x05020026, + 0x4a03c013, 0x00200020, 0x0501f025, 0x4a03c013, + 0x03800300, 0x4a03c014, 0x03800380, 0x59c40001, + 0x82000500, 0x00018000, 0x82000580, 0x00018000, + 0x0502000c, 0x60880801, 0x61d81000, 0x60201800, + 0x0525f801, 0x050008cc, 0x60880801, 0x61b81000, + 0x60201800, 0x0521fffc, 0x050008c7, 0x0501f00b, + 0x60880801, 0x61d81000, 0x60201800, 0x0525f804, + 0x050008c1, 0x60880801, 0x61b81000, 0x60201800, + 0x0521ffff, 0x050008bc, 0x4a03c014, 0x03800000, + 0x0501f003, 0x4a03c013, 0x00200000, 0x052dfe45, + 0x0500003d, 0x59c400a4, 0x9000050f, 0x90000588, + 0x05000021, 0x59c40005, 0x8c000534, 0x0502001e, + 0x5994002f, 0x800001c0, 0x05000007, 0x0501fadb, + 0x90000402, 0x5994082d, 0x80040480, 0x0502103c, + 0x0501f004, 0x5994002d, 0x90000482, 0x05021038, + 0x052dfe36, 0x05020036, 0x4a038805, 0x000000f0, + 0x052dfe60, 0x4a035044, 0x0000aaaa, 0x64035045, + 0x59c408a3, 0x90040d48, 0x480788a3, 0x6006d800, + 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, + 0x0501f019, 0x052dfe25, 0x05020007, 0x59a80044, + 0x82000580, 0x0000aaaa, 0x05020003, 0x4a035040, + 0x00ffffff, 0x497b5044, 0x59c40006, 0x82000540, + 0x04000001, 0x48038806, 0x8d0c0506, 0x05020004, + 0x59c408a3, 0x90040d48, 0x480788a3, 0x6006d800, + 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, + 0x0501f00f, 0x59c40005, 0x82000500, 0x000000c0, + 0x0500000b, 0x59c40006, 0x82000540, 0x000000f1, + 0x48038806, 0x05fdf7f2, 0x0509fe54, 0x05020004, + 0x59a80078, 0x800001c0, 0x05fe0757, 0x497b8885, + 0x1c01f000, 0x4803c856, 0x0521fd0e, 0x05020005, + 0x050dfc0b, 0x42000000, 0x00112463, 0x0569f9a7, + 0x60000001, 0x0509fd4f, 0x6403506d, 0x0509fe43, + 0x05020009, 0x59a8006b, 0x800001c0, 0x05000004, + 0x80000040, 0x4803506b, 0x05020003, 0x642b506b, + 0x64075078, 0x497b8885, 0x0501f224, 0x5994002d, + 0x5994082e, 0x80040540, 0x1c01f000, 0x497b282e, + 0x1c01f000, 0x4a038805, 0x000000f0, 0x1c01f000, + 0x64235096, 0x640f5097, 0x64035098, 0x4a035099, + 0x001090d5, 0x0531f91d, 0x4a03544c, 0x0000ffff, + 0x4a035040, 0x00ffffff, 0x0559f838, 0x4a035050, + 0x20200000, 0x4a035051, 0x88000200, 0x4a035052, + 0x00ff001f, 0x4a035053, 0x000007d0, 0x4a035054, + 0x80000a00, 0x4a035055, 0xa0000200, 0x4a035056, + 0x00ff0004, 0x4a035057, 0x00010000, 0x4a035058, + 0x80000000, 0x4a035059, 0x00000200, 0x4a03505a, + 0x00ff0000, 0x4a03505b, 0x00010000, 0x4a035062, + 0x514c4f47, 0x4a035063, 0x49432020, 0x1c01f000, + 0x4d440000, 0x417a8800, 0x4c5c0000, 0x4178b800, + 0x0001fb08, 0x05020004, 0x0529fef4, 0x05020002, + 0x805cb800, 0x81468800, 0x83440580, 0x000007f0, + 0x05020002, 0x60028810, 0x59a800ad, 0x81440580, + 0x05fe07f4, 0x405c0800, 0x5c00b800, 0x5c028800, + 0x1c01f000, 0x4803c857, 0x5c000000, 0x4c000000, + 0x4803c857, 0x0501f808, 0x485fc857, 0x4203e000, + 0x50000000, 0x5c000000, 0x4d780000, 0x6008b900, + 0x0501f005, 0x485fc857, 0x4203e000, 0x50000000, + 0x6008b900, 0x05006000, 0x4c000000, 0x4c040000, + 0x59bc00ea, 0x4803c857, 0x90000507, 0x90000581, + 0x05020003, 0x60000800, 0x0541fbd4, 0x59b800ea, + 0x4803c857, 0x641370e8, 0x5c000800, 0x4807c025, + 0x80040920, 0x4807c026, 0x5c000000, 0x4803c023, + 0x80000120, 0x4803c024, 0x5c000000, 0x4803c857, + 0x4803c021, 0x80000120, 0x4803c022, 0x41f80000, + 0x4803c029, 0x80000120, 0x4803c02a, 0x41780800, + 0x4807c027, 0x59a800b4, 0x8c00050a, 0x05000005, + 0x59e00027, 0x8400054a, 0x4803c857, 0x4803c027, + 0x0569fa3a, 0x0500004a, 0x42000800, 0x0011456c, + 0x46000800, 0xfaceface, 0x80040800, 0x4c080000, + 0x4c0c0000, 0x600010f4, 0x58080013, 0x44000800, + 0x80040800, 0x58080022, 0x44000800, 0x80040800, + 0x58080023, 0x44000800, 0x80040800, 0x58080024, + 0x44000800, 0x80040800, 0x58080025, 0x44000800, + 0x80040800, 0x58080028, 0x44000800, 0x80040800, + 0x610010f4, 0x602c1800, 0x50080000, 0x44000800, + 0x80081000, 0x80040800, 0x800c1840, 0x05fe07fb, + 0x600c1800, 0x600010f6, 0x480c1003, 0x58080005, + 0x44000800, 0x80040800, 0x800c1840, 0x05fe17fb, + 0x600010f8, 0x58080002, 0x44000800, 0x80040800, + 0x58080003, 0x44000800, 0x80040800, 0x58080020, + 0x44000800, 0x80040800, 0x58080021, 0x44000800, + 0x80040800, 0x58080022, 0x44000800, 0x80040800, + 0x58080023, 0x44000800, 0x80040800, 0x600010f6, + 0x58080007, 0x44000800, 0x80040800, 0x5808002b, + 0x44000800, 0x80040800, 0x5808007c, 0x44000800, + 0x80040800, 0x5c001800, 0x5c001000, 0x64030000, + 0x485fc020, 0x905cb9c0, 0x905cbd52, 0x485fc011, + 0x4203e000, 0x40000000, 0x6016d800, 0x59e00017, + 0x60000800, 0x8c00050a, 0x050a08ab, 0x8d0c0530, + 0x050a089e, 0x050a08a0, 0x6403c017, 0x4203e000, + 0x30000001, 0x0501f94a, 0x05fdf7ff, 0x600c0000, + 0x0501f80c, 0x4a03c855, 0x0001eb5a, 0x59e40001, + 0x82000540, 0xff000700, 0x4803c801, 0x42000000, + 0x00112489, 0x49780003, 0x49780004, 0x1c01f000, + 0x42000800, 0x0011248b, 0x44000800, 0x59e40801, + 0x82041500, 0x00f3c0ff, 0x480bc801, 0x4a03c850, + 0x00114716, 0x800000d4, 0x82002400, 0x00114715, + 0x4813c851, 0x4a03c853, 0x00000400, 0x42000000, + 0x00114716, 0x82001400, 0x00000c00, 0x45780000, + 0x80000000, 0x80081d80, 0x05fe07fd, 0x4807c801, + 0x1c01f000, 0x42002000, 0x00112489, 0x59e41801, + 0x58100c01, 0x82040500, 0x00003800, 0x820c1d00, + 0xffffc7ff, 0x800c1d40, 0x480fc801, 0x1c01f000, + 0x5c036000, 0x4db00000, 0x49b3c857, 0x4803c857, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x42001000, 0x04000000, 0x41ccc800, 0x42002800, - 0x0010e4e5, 0x59a800d0, 0x82000d00, 0x000003ff, - 0x4c000000, 0x58140212, 0x0501f85d, 0x5c000000, - 0x4004b800, 0x4008c000, 0x905cbc06, 0x8c000516, - 0x05000002, 0x905cbc02, 0x0501f016, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x42002800, 0x0010e4e5, - 0x42001000, 0x03000000, 0x4000c800, 0x821c0500, - 0x00003c00, 0x80000114, 0x821c0d00, 0x000003ff, - 0x4c000000, 0x58140412, 0x0501f845, 0x5c000000, - 0x4004b800, 0x4008c000, 0x805cbc00, 0x805cb840, - 0x825c0480, 0x00000240, 0x05fe1ed0, 0x0501f878, - 0x405c0000, 0x905cbc02, 0x80600d40, 0x42002800, - 0x0010e4e5, 0x41784000, 0x58142017, 0x825c0480, - 0x00000101, 0x05021028, 0x5814000d, 0x80100400, - 0x44040000, 0x80102000, 0x80000000, 0x805cb840, - 0x82104d00, 0x000000ff, 0x05000847, 0x0500001a, - 0x4c000000, 0x0501f82e, 0x5c000000, 0x44080000, + 0x8d0c052a, 0x0500002f, 0x401c0000, 0x80040d40, + 0x4004b800, 0x400cc000, 0x4018c800, 0x0501f8d3, + 0x41784000, 0x42002800, 0x00112489, 0x58142017, + 0x5814000d, 0x80100400, 0x445c0000, 0x80102000, + 0x80000000, 0x82104d00, 0x000000ff, 0x050008a9, + 0x0500001c, 0x4c000000, 0x0501f890, 0x5c000000, + 0x44080000, 0x80102000, 0x80000000, 0x82104d00, + 0x000000ff, 0x0500089f, 0x05000012, 0x44600000, + 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, + 0x05000898, 0x0500000b, 0x44640000, 0x80102000, + 0x80000000, 0x82104d00, 0x000000ff, 0x05000891, + 0x05000004, 0x48102817, 0x802041c0, 0x05060d72, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x42001000, + 0x04000000, 0x41ccc800, 0x42002800, 0x00112489, + 0x59a800d5, 0x82000d00, 0x000003ff, 0x4c000000, + 0x58140212, 0x0501f85d, 0x5c000000, 0x4004b800, + 0x4008c000, 0x905cbc06, 0x8c000516, 0x05000002, + 0x905cbc02, 0x0501f016, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x42002800, 0x00112489, 0x42001000, + 0x03000000, 0x4000c800, 0x821c0500, 0x00003c00, + 0x80000114, 0x821c0d00, 0x000003ff, 0x4c000000, + 0x58140412, 0x0501f845, 0x5c000000, 0x4004b800, + 0x4008c000, 0x805cbc00, 0x805cb840, 0x825c0480, + 0x00000240, 0x05fe1edc, 0x0501f878, 0x405c0000, + 0x905cbc02, 0x80600d40, 0x42002800, 0x00112489, + 0x41784000, 0x58142017, 0x825c0480, 0x00000101, + 0x05021028, 0x5814000d, 0x80100400, 0x44040000, 0x80102000, 0x80000000, 0x805cb840, 0x82104d00, - 0x000000ff, 0x0500083c, 0x0500000f, 0x50641800, - 0x440c0000, 0x80000000, 0x80102000, 0x8064c800, - 0x805cb840, 0x05fe07f6, 0x82104d00, 0x000000ff, - 0x05000831, 0x05000004, 0x48102817, 0x802041c0, - 0x05060cd2, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x82100500, 0x000000ff, 0x805c0400, - 0x82000480, 0x00000200, 0x05fc17d4, 0x6108b800, - 0x82600d40, 0x00008040, 0x05fdf7d0, 0x800001c0, - 0x05000006, 0x80041c80, 0x05001004, 0x05000003, - 0x40000800, 0x8408155c, 0x1c01f000, 0x59a800ba, - 0x800018c4, 0x800010ca, 0x800000cc, 0x800c0400, - 0x80081400, 0x59940024, 0x61a01807, 0x800c1c80, - 0x05021002, 0x61a01807, 0x5994002e, 0x800c0400, - 0x82001c80, 0x000007d0, 0x05001002, 0x6140000f, - 0x4c080000, 0x0501f8b6, 0x5c001000, 0x80081400, - 0x1c01f000, 0x4813c857, 0x5c036000, 0x4db00000, - 0x49b3c857, 0x40001800, 0x58140000, 0x8c000502, - 0x05000009, 0x58140821, 0x80040800, 0x48042821, - 0x4807c857, 0x8400054a, 0x48002800, 0x80000580, - 0x0501f00e, 0x82102500, 0x000003ff, 0x80204000, - 0x58140014, 0x80000000, 0x90000503, 0x48002814, - 0x05000003, 0x400c0000, 0x0501f002, 0x5814000d, - 0x80000540, 0x4803c857, 0x1c01f000, 0x42002800, - 0x0010e4e5, 0x58140000, 0x8c00050a, 0x0500002f, - 0x8c000502, 0x0502002d, 0x4c5c0000, 0x5814b821, - 0x49782821, 0x8400050a, 0x48002800, 0x58142017, - 0x4813c857, 0x5814000d, 0x80100400, 0x41784000, - 0x42000800, 0x0b000001, 0x44040000, 0x80000000, - 0x80102000, 0x82104d00, 0x000000ff, 0x05fc0fca, - 0x05fc0e3e, 0x4c000000, 0x05fdffb1, 0x5c000000, - 0x44080000, 0x80000000, 0x80102000, 0x82104d00, - 0x000000ff, 0x05fc0fc0, 0x05fc0e34, 0x445c0000, + 0x000000ff, 0x05000847, 0x0500001a, 0x4c000000, + 0x0501f82e, 0x5c000000, 0x44080000, 0x80102000, + 0x80000000, 0x805cb840, 0x82104d00, 0x000000ff, + 0x0500083c, 0x0500000f, 0x50641800, 0x440c0000, + 0x80000000, 0x80102000, 0x8064c800, 0x805cb840, + 0x05fe07f6, 0x82104d00, 0x000000ff, 0x05000831, + 0x05000004, 0x48102817, 0x802041c0, 0x05060d12, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x82100500, 0x000000ff, 0x805c0400, 0x82000480, + 0x00000200, 0x05fc17d4, 0x6108b800, 0x82600d40, + 0x00008040, 0x05fdf7d0, 0x800001c0, 0x05000006, + 0x80041c80, 0x05001004, 0x05000003, 0x40000800, + 0x8408155c, 0x1c01f000, 0x59a800bf, 0x800018c4, + 0x800010ca, 0x800000cc, 0x800c0400, 0x80081400, + 0x59940024, 0x61a01807, 0x800c1c80, 0x05021002, + 0x61a01807, 0x5994002f, 0x800c0400, 0x82001c80, + 0x000007d0, 0x05001002, 0x6140000f, 0x4c080000, + 0x0501f8b6, 0x5c001000, 0x80081400, 0x1c01f000, + 0x4813c857, 0x5c036000, 0x4db00000, 0x49b3c857, + 0x40001800, 0x58140000, 0x8c000502, 0x05000009, + 0x58140821, 0x80040800, 0x48042821, 0x4807c857, + 0x8400054a, 0x48002800, 0x80000580, 0x0501f00e, + 0x82102500, 0x000003ff, 0x80204000, 0x58140014, + 0x80000000, 0x90000503, 0x48002814, 0x05000003, + 0x400c0000, 0x0501f002, 0x5814000d, 0x80000540, + 0x4803c857, 0x1c01f000, 0x42002800, 0x00112489, + 0x58140000, 0x8c00050a, 0x0500002f, 0x8c000502, + 0x0502002d, 0x4c5c0000, 0x5814b821, 0x49782821, + 0x8400050a, 0x48002800, 0x58142017, 0x4813c857, + 0x5814000d, 0x80100400, 0x41784000, 0x42000800, + 0x0b000001, 0x44040000, 0x80000000, 0x80102000, + 0x82104d00, 0x000000ff, 0x05fc0fca, 0x05fc0e4a, + 0x4c000000, 0x05fdffb1, 0x5c000000, 0x44080000, 0x80000000, 0x80102000, 0x82104d00, 0x000000ff, - 0x05fc0fb9, 0x05fc0e2d, 0x48102817, 0x802041c0, - 0x05060c5a, 0x405c2000, 0x600c1800, 0x60a01100, - 0x0521f828, 0x5c00b800, 0x1c01f000, 0x1c01f000, - 0x59a800b5, 0x8c000530, 0x05fe07fe, 0x4c080000, - 0x60101000, 0x0501f849, 0x5c001000, 0x4201d000, - 0x00028b0a, 0x0539f844, 0x4c080000, 0x60201000, - 0x0501f842, 0x5c001000, 0x4201d000, 0x00028b0a, - 0x0539f83d, 0x4c080000, 0x60401000, 0x0501f83b, - 0x5c001000, 0x4201d000, 0x00028b0a, 0x0539f836, - 0x05fdf7e8, 0x8c00050c, 0x59a808b5, 0x05020003, - 0x84040d30, 0x0501f005, 0x84040d70, 0x480750b5, - 0x60001000, 0x0501f02d, 0x480750b5, 0x916c0507, - 0x0c01f001, 0x00100805, 0x001007f7, 0x001007f7, - 0x001007e5, 0x001007fe, 0x001007f7, 0x001007f7, - 0x001007fe, 0x59c40801, 0x82040d00, 0x00018000, - 0x82040580, 0x00018000, 0x0500000a, 0x82040580, - 0x00010000, 0x05000004, 0x42001000, 0x42004000, - 0x0501f006, 0x42001000, 0x22002000, 0x0501f003, - 0x42001000, 0x12001000, 0x0501f015, 0x59a800b5, - 0x8c000534, 0x05020004, 0x42001000, 0x74057005, - 0x0501f80f, 0x1c01f000, 0x59a800b5, 0x8c000534, - 0x05020004, 0x42001000, 0x74057005, 0x0501f008, - 0x1c01f000, 0x1c01f000, 0x9008151c, 0x82081540, - 0x001c0000, 0x480bc013, 0x1c01f000, 0x59a800b5, - 0x8c000530, 0x05000002, 0x84081570, 0x480b50b5, - 0x8c000530, 0x05020005, 0x82081500, 0x00007000, - 0x80081114, 0x05fdfff1, 0x1c01f000, 0x40001800, - 0x800c18c2, 0x800c0400, 0x800c18c6, 0x800c0400, - 0x800c18c2, 0x800c0400, 0x800c190e, 0x800c0400, - 0x80000112, 0x1c01f000, 0x41780000, 0x50041800, - 0x800c0400, 0x80040800, 0x80102040, 0x05fe07fc, - 0x80080500, 0x80000540, 0x1c01f000, 0x6002f000, - 0x41780000, 0x41780800, 0x41781000, 0x41781800, - 0x41782000, 0x41782800, 0x41783000, 0x41783800, - 0x41784000, 0x41784800, 0x41785000, 0x41785800, - 0x41786000, 0x41786800, 0x41787000, 0x41787800, - 0x41788000, 0x41788800, 0x41789000, 0x41789800, - 0x4178a000, 0x4178a800, 0x4178b000, 0x4178b800, - 0x4178c000, 0x4178c800, 0x4178d000, 0x4178d800, - 0x4178e000, 0x4178e800, 0x4178f000, 0x4178f800, - 0x41790000, 0x41790800, 0x41791000, 0x41791800, - 0x41792000, 0x41792800, 0x41793000, 0x41793800, - 0x41794000, 0x41794800, 0x41795000, 0x41795800, - 0x41796000, 0x41796800, 0x41797000, 0x41797800, - 0x41798000, 0x41798800, 0x41799000, 0x41799800, - 0x4179a000, 0x6001a960, 0x60c9b17e, 0x4179b800, - 0x4179c800, 0x4179c000, 0x4179d000, 0x4179d800, - 0x4179e000, 0x4179e800, 0x4179f000, 0x4179f800, - 0x417a0000, 0x417a0800, 0x417a1000, 0x417a1800, + 0x05fc0fc0, 0x05fc0e40, 0x445c0000, 0x80000000, + 0x80102000, 0x82104d00, 0x000000ff, 0x05fc0fb9, + 0x05fc0e39, 0x48102817, 0x802041c0, 0x05060c9a, + 0x405c2000, 0x600c1800, 0x60a01100, 0x0521f996, + 0x5c00b800, 0x1c01f000, 0x1c01f000, 0x59a800ba, + 0x8c000530, 0x05fe07fe, 0x4c080000, 0x60101000, + 0x0501f849, 0x5c001000, 0x4201d000, 0x00028b0a, + 0x0539fc80, 0x4c080000, 0x60201000, 0x0501f842, + 0x5c001000, 0x4201d000, 0x00028b0a, 0x0539fc79, + 0x4c080000, 0x60401000, 0x0501f83b, 0x5c001000, + 0x4201d000, 0x00028b0a, 0x0539fc72, 0x05fdf7e8, + 0x8c00050c, 0x59a808ba, 0x05020003, 0x84040d30, + 0x0501f005, 0x84040d70, 0x480750ba, 0x60001000, + 0x0501f02d, 0x480750ba, 0x916c0507, 0x0c01f001, + 0x00100834, 0x00100826, 0x00100826, 0x00100814, + 0x0010082d, 0x00100826, 0x00100826, 0x0010082d, + 0x59c40801, 0x82040d00, 0x00018000, 0x82040580, + 0x00018000, 0x0500000a, 0x82040580, 0x00010000, + 0x05000004, 0x42001000, 0x42004000, 0x0501f006, + 0x42001000, 0x22002000, 0x0501f003, 0x42001000, + 0x12001000, 0x0501f015, 0x59a800ba, 0x8c000534, + 0x05020004, 0x42001000, 0x74057005, 0x0501f80f, + 0x1c01f000, 0x59a800ba, 0x8c000534, 0x05020004, + 0x42001000, 0x74057005, 0x0501f008, 0x1c01f000, + 0x1c01f000, 0x9008151c, 0x82081540, 0x001c0000, + 0x480bc013, 0x1c01f000, 0x59a800ba, 0x8c000530, + 0x05000002, 0x84081570, 0x480b50ba, 0x8c000530, + 0x05020005, 0x82081500, 0x00007000, 0x80081114, + 0x05fdfff1, 0x1c01f000, 0x40001800, 0x800c18c2, + 0x800c0400, 0x800c18c6, 0x800c0400, 0x800c18c2, + 0x800c0400, 0x800c190e, 0x800c0400, 0x80000112, + 0x1c01f000, 0x41780000, 0x50041800, 0x800c0400, + 0x80040800, 0x80102040, 0x05fe07fc, 0x80080500, + 0x80000540, 0x1c01f000, 0x6002f000, 0x41780000, + 0x41780800, 0x41781000, 0x41781800, 0x41782000, + 0x41782800, 0x41783000, 0x41783800, 0x41784000, + 0x41784800, 0x41785000, 0x41785800, 0x41786000, + 0x41786800, 0x41787000, 0x41787800, 0x41788000, + 0x41788800, 0x41789000, 0x41789800, 0x4178a000, + 0x4178a800, 0x4178b000, 0x4178b800, 0x4178c000, + 0x4178c800, 0x4178d000, 0x4178d800, 0x4178e000, + 0x4178e800, 0x4178f000, 0x4178f800, 0x41790000, + 0x41790800, 0x41791000, 0x41791800, 0x41792000, + 0x41792800, 0x41793000, 0x41793800, 0x41794000, + 0x41794800, 0x41795000, 0x41795800, 0x41796000, + 0x41796800, 0x41797000, 0x41797800, 0x41798000, + 0x41798800, 0x41799000, 0x41799800, 0x4179a000, + 0x6001a960, 0x60c9b17e, 0x4179b800, 0x4179c800, + 0x4179c000, 0x4179d000, 0x4179d800, 0x4179e000, + 0x4179e800, 0x4179f000, 0x4179f800, 0x42020000, + 0x00111cdc, 0x417a0800, 0x417a1000, 0x417a1800, 0x417a2000, 0x600228c2, 0x417a3000, 0x417a3800, 0x417a4000, 0x417a4800, 0x417a5000, 0x417a5800, 0x417a6000, 0x417a6800, 0x417a7000, 0x417a7800, 0x417a8000, 0x417a8800, 0x417a9000, 0x417a9800, 0x417ae800, 0x417af800, 0x600300f8, 0x42031000, - 0x0010e38c, 0x607f1960, 0x60df2160, 0x42032800, - 0x0010e2f9, 0x42033000, 0x000211b0, 0x42034000, - 0x0010dceb, 0x42033800, 0x0010dd0a, 0x42034800, - 0x0010e063, 0x42035000, 0x0010dc00, 0x42035800, - 0x0010d400, 0x417b6000, 0x600368de, 0x6003c860, - 0x600371fe, 0x6003797e, 0x600380ee, 0x60038880, - 0x600390c0, 0x42039800, 0x001102fe, 0x6003a0ec, - 0x6003a8e8, 0x6003b0e4, 0x6003b8e2, 0x6003c0e0, - 0x6003d000, 0x4203e800, 0x000201e5, 0x417bd800, - 0x1c01f000, 0x6407c830, 0x640fc831, 0x6413c832, - 0x6427c833, 0x6417c834, 0x641bc835, 0x641fc836, - 0x6423c837, 0x6403c838, 0x642bc839, 0x642fc83a, - 0x640bc83b, 0x1c01f000, 0x42002800, 0x00140000, - 0x59a800ca, 0x8c000500, 0x05000003, 0x42002800, - 0x0013a000, 0x46002800, 0xaaaaaaaa, 0x60283000, - 0x80183040, 0x05fe07ff, 0x50140000, 0x82000580, - 0xaaaaaaaa, 0x05020013, 0x41782000, 0x40140800, - 0x82102400, 0x00010000, 0x80042c04, 0x46002800, - 0x55555555, 0x60283000, 0x80183040, 0x05fe07ff, - 0x50140000, 0x82000580, 0x55555555, 0x05020005, - 0x50040000, 0x82000580, 0x55555555, 0x05fe07f1, - 0x59a800ca, 0x8c000500, 0x05000005, 0x82140580, - 0x0013a000, 0x05020005, 0x0501f005, 0x82140580, - 0x00140000, 0x05000002, 0x6407c820, 0x80142840, - 0x4817c857, 0x4817c861, 0x4817500a, 0x1c01f000, - 0x4817c857, 0x4c5c0000, 0x4c600000, 0x0565f814, - 0x05000030, 0x4817c857, 0x606c08f6, 0x50040800, - 0x8c04053e, 0x0500002b, 0x4817c857, 0x850e1d70, - 0x4c040000, 0x4c140000, 0x0505fdc7, 0x5c002800, - 0x5c000800, 0x59e0b81a, 0x8204b500, 0x000007ff, - 0x8058b000, 0x485b50a4, 0x600008f4, 0x58042029, - 0x5804302a, 0x82102500, 0xfffffff8, 0x82183500, - 0xfffffff8, 0x40100000, 0x8018c480, 0x8060c104, - 0x80600417, 0x4803509f, 0x497b50a3, 0x9058b41f, - 0x8058090a, 0x8004c418, 0x8060c040, 0x805cc418, - 0x485f50a0, 0x486350a1, 0x805c2840, 0x59a800ca, - 0x8c000500, 0x05000007, 0x59a8000a, 0x82000580, - 0x00139fff, 0x05020003, 0x4817500a, 0x4817c857, - 0x64030000, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x59a80847, 0x800409c0, 0x05020006, 0x49781c0c, - 0x64081a0c, 0x641c1804, 0x59a8003d, 0x48001805, - 0x4c0c0000, 0x05fdfc94, 0x5c001800, 0x800409c0, - 0x05020002, 0x80040800, 0x48041806, 0x1c01f000, - 0x61fcb001, 0x42024800, 0x0010e512, 0x42000000, - 0x0010f212, 0x48024809, 0x90000410, 0x91264c0d, - 0x8058b040, 0x05fe07fc, 0x1c01f000, 0x59a8080c, - 0x4006d000, 0x6006b800, 0x59a8180a, 0x480fc857, - 0x41783000, 0x90041418, 0x90082418, 0x40100000, - 0x800c0480, 0x05001020, 0x8d0c0530, 0x0500000b, - 0x59a800a1, 0x80000482, 0x05001008, 0x40100000, - 0x59a828a0, 0x80140480, 0x05021004, 0x59a810a1, - 0x80081000, 0x05fdf7f1, 0x801831c0, 0x0502000d, - 0x59a800ca, 0x8c000500, 0x05000006, 0x42000000, - 0x0013a000, 0x80000484, 0x0500100e, 0x0501f005, - 0x42000000, 0x00140000, 0x80000484, 0x05001009, - 0x44080800, 0x40080800, 0x40101000, 0x815eb800, - 0x05fdf7de, 0x45780800, 0x495f5048, 0x1c01f000, - 0x42001000, 0x00140000, 0x59a800ca, 0x8c000500, - 0x05000003, 0x42001000, 0x0013a000, 0x80183040, - 0x05fdf7d2, 0x835c0480, 0x00000104, 0x0500100a, - 0x496bc857, 0x815eb840, 0x416a5800, 0x592ed000, - 0x497a5800, 0x497a5801, 0x497a5808, 0x812e59c0, - 0x1c01f000, 0x42000000, 0x0010e441, 0x0561fe5d, - 0x417a5800, 0x05fdf7fa, 0x815eb840, 0x05001009, - 0x416a5800, 0x492fc857, 0x592ed000, 0x497a5800, + 0x0011232d, 0x607f1960, 0x60df2160, 0x42032800, + 0x00112293, 0x42033000, 0x000211f1, 0x42034000, + 0x00111c71, 0x42033800, 0x00111c90, 0x42034800, + 0x00111ffd, 0x42035000, 0x00111b80, 0x4a0350ac, + 0x000007f0, 0x4a0350ad, 0x00000800, 0x4a03500d, + 0x0010e380, 0x42035800, 0x0010db80, 0x41790000, + 0x417b6000, 0x600368de, 0x6003c860, 0x600371fe, + 0x6003797e, 0x600380ee, 0x60038880, 0x600390c0, + 0x42039800, 0x001142a2, 0x6003a0ec, 0x6003a8e8, + 0x6003b0e4, 0x6003b8e2, 0x6003c0e0, 0x6003d000, + 0x4203e800, 0x000201ed, 0x417bd800, 0x1c01f000, + 0x6407c830, 0x640fc831, 0x6413c832, 0x6427c833, + 0x6417c834, 0x641bc835, 0x641fc836, 0x6423c837, + 0x6403c838, 0x642bc839, 0x642fc83a, 0x640bc83b, + 0x1c01f000, 0x42002800, 0x00140000, 0x59a800cf, + 0x8c000500, 0x05000003, 0x42002800, 0x0013a000, + 0x46002800, 0xaaaaaaaa, 0x60283000, 0x80183040, + 0x05fe07ff, 0x50140000, 0x82000580, 0xaaaaaaaa, + 0x05020013, 0x41782000, 0x40140800, 0x82102400, + 0x00010000, 0x80042c04, 0x46002800, 0x55555555, + 0x60283000, 0x80183040, 0x05fe07ff, 0x50140000, + 0x82000580, 0x55555555, 0x05020005, 0x50040000, + 0x82000580, 0x55555555, 0x05fe07f1, 0x59a800cf, + 0x8c000500, 0x05000005, 0x82140580, 0x0013a000, + 0x05020005, 0x0501f005, 0x82140580, 0x00140000, + 0x05000002, 0x6407c820, 0x80142840, 0x4817c857, + 0x4817c861, 0x4817500a, 0x1c01f000, 0x4817c857, + 0x4c5c0000, 0x4c600000, 0x0565ff58, 0x05000030, + 0x4817c857, 0x606c08f6, 0x50040800, 0x8c04053e, + 0x0500002b, 0x4817c857, 0x850e1d70, 0x4c040000, + 0x4c140000, 0x0505fe01, 0x5c002800, 0x5c000800, + 0x59e0b81a, 0x8204b500, 0x000007ff, 0x8058b000, + 0x485b50a7, 0x600008f4, 0x58042029, 0x5804302a, + 0x82102500, 0xfffffff8, 0x82183500, 0xfffffff8, + 0x40100000, 0x8018c480, 0x8060c104, 0x80600417, + 0x480350a2, 0x497b50a6, 0x9058b41f, 0x8058090a, + 0x8004c418, 0x8060c040, 0x805cc418, 0x485f50a3, + 0x486350a4, 0x805c2840, 0x59a800cf, 0x8c000500, + 0x05000007, 0x59a8000a, 0x82000580, 0x00139fff, + 0x05020003, 0x4817500a, 0x4817c857, 0x64030000, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x59a8084a, + 0x800409c0, 0x05020006, 0x49781c0c, 0x64081a0c, + 0x641c1804, 0x59a80040, 0x48001805, 0x4c0c0000, + 0x05fdfc94, 0x5c001800, 0x800409c0, 0x05020002, + 0x80040800, 0x48041806, 0x1c01f000, 0x61fcb001, + 0x42024800, 0x001124b6, 0x42000000, 0x001131b6, + 0x48024809, 0x90000410, 0x91264c0d, 0x8058b040, + 0x05fe07fc, 0x1c01f000, 0x59a8080c, 0x4006d000, + 0x6006b800, 0x59a8180a, 0x480fc857, 0x41783000, + 0x90041418, 0x90082418, 0x40100000, 0x800c0480, + 0x05001020, 0x8d0c0530, 0x0500000b, 0x59a800a4, + 0x80000482, 0x05001008, 0x40100000, 0x59a828a3, + 0x80140480, 0x05021004, 0x59a810a4, 0x80081000, + 0x05fdf7f1, 0x801831c0, 0x0502000d, 0x59a800cf, + 0x8c000500, 0x05000006, 0x42000000, 0x0013a000, + 0x80000484, 0x0500100e, 0x0501f005, 0x42000000, + 0x00140000, 0x80000484, 0x05001009, 0x44080800, + 0x40080800, 0x40101000, 0x815eb800, 0x05fdf7de, + 0x45780800, 0x495f504b, 0x1c01f000, 0x42001000, + 0x00140000, 0x59a800cf, 0x8c000500, 0x05000003, + 0x42001000, 0x0013a000, 0x80183040, 0x05fdf7d2, + 0x835c0480, 0x00000104, 0x0500100a, 0x496bc857, + 0x815eb840, 0x416a5800, 0x592ed000, 0x497a5800, 0x497a5801, 0x497a5808, 0x812e59c0, 0x1c01f000, - 0x42000000, 0x0010e441, 0x0561fe4e, 0x417ab800, - 0x417a5800, 0x05fdf7f9, 0x492fc857, 0x496a5800, - 0x412ed000, 0x815eb800, 0x59c80000, 0x82000540, - 0x00001200, 0x48039000, 0x1c01f000, 0x492fc857, - 0x812e59c0, 0x05000007, 0x592c0001, 0x497a5801, - 0x4c000000, 0x05fdfff1, 0x5c025800, 0x05fdf7f9, - 0x1c01f000, 0x42000000, 0x0010e441, 0x0561fe38, - 0x80025d80, 0x1c01f000, 0x4807c856, 0x42007000, - 0x000211a7, 0x64007000, 0x59e00003, 0x82000540, - 0x00008080, 0x4803c003, 0x4a03b805, 0x90000001, - 0x59dc0006, 0x4a03b805, 0x70000000, 0x59dc0006, - 0x4a03b805, 0x30000000, 0x59dc0006, 0x4a03b805, - 0x80000000, 0x6100b000, 0x497bb807, 0x8058b040, - 0x05fe07fe, 0x4a03b805, 0x30000000, 0x59dc0006, - 0x4a03b805, 0x60000001, 0x59dc0006, 0x4a03b805, - 0x60000003, 0x59dc0006, 0x4a03b805, 0x60000005, - 0x59dc0006, 0x4a03b805, 0x60000007, 0x59dc0006, - 0x4a03b805, 0x70000001, 0x59dc0006, 0x4a03b805, - 0x30000002, 0x6100b000, 0x497bb807, 0x8058b040, - 0x05fe07fe, 0x4a03b805, 0x30000000, 0x59dc0006, - 0x4a03b805, 0x60000001, 0x4803c856, 0x05fdffa3, - 0x05fc0bfa, 0x42001000, 0x0010e387, 0x452c1000, - 0x64065801, 0x4a025802, 0x00000100, 0x4a025809, - 0x00108adc, 0x497a580a, 0x497a580b, 0x497a580c, - 0x05fdff96, 0x05fc0bed, 0x42001000, 0x0010e388, - 0x452c1000, 0x64025801, 0x4a025802, 0x00000100, - 0x4a025809, 0x001013bc, 0x497a5803, 0x497a5807, - 0x497a5808, 0x497a580a, 0x05fdff88, 0x05fc0bdf, - 0x42001000, 0x0010e389, 0x452c1000, 0x64025801, - 0x4a025802, 0x00000100, 0x4a025809, 0x001013e0, + 0x42000000, 0x001123e2, 0x0565fda1, 0x417a5800, + 0x05fdf7fa, 0x815eb840, 0x05001009, 0x416a5800, + 0x492fc857, 0x592ed000, 0x497a5800, 0x497a5801, + 0x497a5808, 0x812e59c0, 0x1c01f000, 0x42000000, + 0x001123e2, 0x0565fd92, 0x417ab800, 0x417a5800, + 0x05fdf7f9, 0x492fc857, 0x496a5800, 0x412ed000, + 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x1c01f000, 0x492fc857, 0x812e59c0, + 0x05000007, 0x592c0001, 0x497a5801, 0x4c000000, + 0x05fdfff1, 0x5c025800, 0x05fdf7f9, 0x1c01f000, + 0x42000000, 0x001123e2, 0x0565fd7c, 0x80025d80, + 0x1c01f000, 0x80040840, 0x41783000, 0x90081498, + 0x80040482, 0x05001003, 0x90041401, 0x0501f018, + 0x4c080000, 0x60043000, 0x90081c98, 0x80040483, + 0x05021006, 0x480c1000, 0x49781001, 0x400c1000, + 0x80183000, 0x05fdf7f9, 0xa01abc17, 0x59a8084b, + 0x80180c01, 0x4807504b, 0x4d2c0000, 0x400a5800, + 0x0555f86e, 0x5c025800, 0x05020002, 0x480b500c, + 0x49681000, 0x49781001, 0x5c02d000, 0x1c01f000, + 0x4807c856, 0x42007000, 0x000211e8, 0x64007000, + 0x59e00003, 0x82000540, 0x00008080, 0x4803c003, + 0x4a03b805, 0x90000001, 0x59dc0006, 0x4a03b805, + 0x70000000, 0x59dc0006, 0x4a03b805, 0x30000000, + 0x59dc0006, 0x4a03b805, 0x80000000, 0x6100b000, + 0x497bb807, 0x8058b040, 0x05fe07fe, 0x4a03b805, + 0x30000000, 0x59dc0006, 0x4a03b805, 0x60000001, + 0x59dc0006, 0x4a03b805, 0x60000003, 0x59dc0006, + 0x4a03b805, 0x60000005, 0x59dc0006, 0x4a03b805, + 0x60000007, 0x59dc0006, 0x4a03b805, 0x70000001, + 0x59dc0006, 0x4a03b805, 0x30000002, 0x6100b000, + 0x497bb807, 0x8058b040, 0x05fe07fe, 0x4a03b805, + 0x30000000, 0x59dc0006, 0x4a03b805, 0x60000001, + 0x4803c856, 0x05fdff84, 0x05fc0bdf, 0x42001000, + 0x00112322, 0x452c1000, 0x64065801, 0x4a025802, + 0x00000100, 0x4a025809, 0x00108f9a, 0x497a580a, + 0x497a580b, 0x497a580c, 0x05fdff77, 0x05fc0bd2, + 0x42001000, 0x00112323, 0x452c1000, 0x64025801, + 0x4a025802, 0x00000100, 0x4a025809, 0x0010142b, 0x497a5803, 0x497a5807, 0x497a5808, 0x497a580a, - 0x05fdff7a, 0x05fc0bd1, 0x497a5806, 0x42001000, - 0x0010dc1a, 0x452c1000, 0x64025801, 0x4a025802, - 0x00000100, 0x4a025809, 0x001078b4, 0x497a5803, - 0x497a5807, 0x497a5808, 0x497a580a, 0x05fdff6b, - 0x05fc0bc2, 0x497a5806, 0x492f500d, 0x64025801, - 0x4a025802, 0x00000100, 0x4a025809, 0x001078bf, + 0x05fdff69, 0x05fc0bc4, 0x42001000, 0x00112324, + 0x452c1000, 0x64025801, 0x4a025802, 0x00000100, + 0x4a025809, 0x0010144f, 0x497a5803, 0x497a5807, + 0x497a5808, 0x497a580a, 0x05fdff5b, 0x05fc0bb6, + 0x497a5806, 0x42001000, 0x00112325, 0x492c1001, + 0x64001000, 0x05fdff54, 0x05fc0baf, 0x497a5806, + 0x42001000, 0x00111b9c, 0x452c1000, 0x64025801, + 0x4a025802, 0x00000100, 0x4a025809, 0x00107d74, 0x497a5803, 0x497a5807, 0x497a5808, 0x497a580a, - 0x497a580b, 0x05fdff5d, 0x05fc0bb4, 0x497a5806, - 0x492f500e, 0x64025801, 0x4a025802, 0x00000100, - 0x4a025809, 0x001078bf, 0x497a5803, 0x497a5807, - 0x497a5808, 0x497a580a, 0x497a580b, 0x1c01f000, - 0x42001000, 0x00020030, 0x0535fc87, 0x0551ff0b, - 0x58380807, 0x60042000, 0x58040801, 0x800409c0, - 0x05000003, 0x80102000, 0x05fdf7fc, 0x0561f8fc, - 0x0502000c, 0x42000000, 0x0010e3a9, 0x0561fd99, - 0x0551ff09, 0x60040800, 0x42001000, 0x00020030, - 0x0535fc4a, 0x42007000, 0x000211a7, 0x0001f039, - 0x4a03b805, 0x30000002, 0x59dc0006, 0x4807b800, - 0x480bb801, 0x42007000, 0x000211a7, 0x65007002, - 0x480c7008, 0x58380007, 0x90000408, 0x48007003, - 0x640c7000, 0x4803b803, 0x0001f05a, 0x58380802, - 0x600011fe, 0x82040480, 0x0000ff00, 0x05021003, - 0x40041000, 0x80000580, 0x48007002, 0x480bb802, - 0x59dc0006, 0x4a03b805, 0x10000000, 0x1c01f000, - 0x4a03b805, 0x30000001, 0x58386001, 0x58301009, - 0x4807c857, 0x4803c857, 0x4833c857, 0x4a006002, - 0x00000200, 0x64007000, 0x800811c0, 0x00000036, - 0x0001f090, 0x4833c857, 0x4807c857, 0x5830080a, - 0x4c040000, 0x4d2c0000, 0x40325800, 0x05fdff18, - 0x5c025800, 0x5c000800, 0x4807c857, 0x0001f092, - 0x59e00017, 0x8c00050c, 0x05020028, 0x59a838a2, - 0xa01c459e, 0x05000025, 0x59a8209f, 0x59a808a3, - 0x59a848a4, 0x40245000, 0x9004051f, 0x81782800, - 0x801428c0, 0x8004010a, 0x80101400, 0x50083000, - 0x80140506, 0x0502000c, 0x80040800, 0x80244840, - 0x05000012, 0x80280581, 0x05000005, 0x80142942, - 0x9004051f, 0x05fe07f7, 0x05fdf7f3, 0x41780800, - 0x05fdf7ee, 0x59a818a0, 0x800400c4, 0x800c1c00, - 0x580c0003, 0x8c000500, 0x05000009, 0x80204040, - 0x05fe07ee, 0x80040800, 0x80280581, 0x05020002, - 0x41780800, 0x480750a3, 0x1c01f000, 0x80142880, - 0x80140506, 0x44001000, 0x80042800, 0x80280585, - 0x05020002, 0x41782800, 0x481750a3, 0x801c3840, - 0x481f50a2, 0x0001f0a3, 0x59a8189f, 0x8004110a, - 0x9004051f, 0x80081c03, 0x81782000, 0x801020c0, - 0x500c0000, 0x80100d00, 0x05020006, 0x80100540, - 0x59a808a2, 0x44001800, 0x80040800, 0x480750a2, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x835c0480, 0x00000104, 0x05fe1fb6, 0x5c03e000, - 0x1c01f000, 0x59dc0006, 0x8c000520, 0x05000009, - 0x00044e27, 0x59dc0006, 0x82000500, 0x00006000, - 0x05000004, 0x82000580, 0x00006000, 0x05fe07f9, - 0x1c01f000, 0x41781800, 0x58382005, 0x40300000, - 0x80100580, 0x05000007, 0x40101800, 0x58102000, - 0x801021c0, 0x05fe07fa, 0x4803c856, 0x0501f011, - 0x4833c857, 0x58302000, 0x49786000, 0x800c19c0, - 0x05020008, 0x801021c0, 0x05000003, 0x48107005, - 0x0501f008, 0x49787005, 0x49787004, 0x0501f005, - 0x48101800, 0x801021c0, 0x05020002, 0x480c7004, - 0x1c01f000, 0x4803c856, 0x4dc00000, 0x42007000, - 0x0010e38a, 0x64007400, 0x49787001, 0x600380ee, - 0x60080800, 0x59c00007, 0x4a038006, 0x60000001, - 0x59c00007, 0x4a038006, 0x60000003, 0x59c00007, - 0x4a038006, 0x60000005, 0x59c00007, 0x4a038006, - 0x60000007, 0x59c00007, 0x4a038006, 0x60000009, - 0x59c00007, 0x4a038006, 0x6000000b, 0x59c00007, - 0x4c040000, 0x0501f817, 0x5c000800, 0x4a038009, - 0xf4f60000, 0x91c38420, 0x80040840, 0x05fe07e6, - 0x600380ee, 0x6443c822, 0x640370e8, 0x0501f83c, - 0x4a0370ee, 0x00100000, 0x4a0370ee, 0x00080102, - 0x4a0370e9, 0x00000400, 0x4a0370e9, 0x00003a0f, - 0x640370e8, 0x640770e8, 0x5c038000, 0x1c01f000, - 0x59c00007, 0x4a038006, 0xe0000001, 0x61000800, - 0x497b8005, 0x59c00007, 0x80040840, 0x05fe07fd, - 0x4a038006, 0x30000001, 0x59c00007, 0x8c000508, - 0x05fe07fe, 0x59c00007, 0x4a038006, 0xb0000003, - 0x59c00007, 0x4a038006, 0xb0000005, 0x59c00007, - 0x4a038006, 0xb0000001, 0x59c00007, 0x4a038006, - 0xb0000009, 0x59c00007, 0x4a038006, 0xb0000007, - 0x59c00007, 0x4a038006, 0xb000000b, 0x59c00007, + 0x05fdff45, 0x05fc0ba0, 0x497a5806, 0x492f500f, + 0x64025801, 0x4a025802, 0x00000100, 0x4a025809, + 0x00107d7f, 0x497a5803, 0x497a5807, 0x497a5808, + 0x497a580a, 0x497a580b, 0x05fdff37, 0x05fc0b92, + 0x497a5806, 0x492f5010, 0x64025801, 0x4a025802, + 0x00000100, 0x4a025809, 0x00107d7f, 0x497a5803, + 0x497a5807, 0x497a5808, 0x497a580a, 0x497a580b, + 0x1c01f000, 0x42001000, 0x00020038, 0x0539f844, + 0x59a80c9f, 0x8c040502, 0x05020005, 0x0555fc43, + 0x59a80c9f, 0x84040d42, 0x4807549f, 0x58380807, + 0x60042000, 0x58040801, 0x800409c0, 0x05000003, + 0x80102000, 0x05fdf7fc, 0x0561ffe3, 0x0502000b, + 0x42000000, 0x0011234a, 0x0565fcb1, 0x60040800, + 0x42001000, 0x00020038, 0x0539f802, 0x42007000, + 0x000211e8, 0x0001f041, 0x4a03b805, 0x30000002, + 0x59dc0006, 0x4807b800, 0x480bb801, 0x42007000, + 0x000211e8, 0x65007002, 0x480c7008, 0x58380007, + 0x90000408, 0x48007003, 0x640c7000, 0x4803b803, + 0x0001f062, 0x58380802, 0x600011fe, 0x82040480, + 0x0000ff00, 0x05021003, 0x40041000, 0x80000580, + 0x48007002, 0x480bb802, 0x59dc0006, 0x4a03b805, + 0x10000000, 0x1c01f000, 0x4a03b805, 0x30000001, + 0x58386001, 0x58301009, 0x4807c857, 0x4803c857, + 0x4833c857, 0x4a006002, 0x00000200, 0x64007000, + 0x800811c0, 0x0000003e, 0x0001f098, 0x4833c857, + 0x4807c857, 0x5830080a, 0x4c040000, 0x4d2c0000, + 0x40325800, 0x05fdfeed, 0x5c025800, 0x5c000800, + 0x4807c857, 0x0001f09a, 0x59e00017, 0x8c00050c, + 0x05020028, 0x59a838a5, 0xa01c459e, 0x05000025, + 0x59a820a2, 0x59a808a6, 0x59a848a7, 0x40245000, + 0x9004051f, 0x81782800, 0x801428c0, 0x8004010a, + 0x80101400, 0x50083000, 0x80140506, 0x0502000c, + 0x80040800, 0x80244840, 0x05000012, 0x80280581, + 0x05000005, 0x80142942, 0x9004051f, 0x05fe07f7, + 0x05fdf7f3, 0x41780800, 0x05fdf7ee, 0x59a818a3, + 0x800400c4, 0x800c1c00, 0x580c0003, 0x8c000500, + 0x05000009, 0x80204040, 0x05fe07ee, 0x80040800, + 0x80280581, 0x05020002, 0x41780800, 0x480750a6, + 0x1c01f000, 0x80142880, 0x80140506, 0x44001000, + 0x80042800, 0x80280585, 0x05020002, 0x41782800, + 0x481750a6, 0x801c3840, 0x481f50a5, 0x0001f0ab, + 0x59a818a2, 0x8004110a, 0x9004051f, 0x80081c03, + 0x81782000, 0x801020c0, 0x500c0000, 0x80100d00, + 0x05020006, 0x80100540, 0x59a808a5, 0x44001800, + 0x80040800, 0x480750a5, 0x1c01f000, 0x4df00000, + 0x4203e000, 0x50000000, 0x835c0480, 0x00000104, + 0x05fe1fb6, 0x5c03e000, 0x1c01f000, 0x59dc0006, + 0x8c000520, 0x05000009, 0x00044e5d, 0x59dc0006, + 0x82000500, 0x00006000, 0x05000004, 0x82000580, + 0x00006000, 0x05fe07f9, 0x1c01f000, 0x41781800, + 0x58382005, 0x40300000, 0x80100580, 0x05000007, + 0x40101800, 0x58102000, 0x801021c0, 0x05fe07fa, + 0x4803c856, 0x0501f011, 0x4833c857, 0x58302000, + 0x49786000, 0x800c19c0, 0x05020008, 0x801021c0, + 0x05000003, 0x48107005, 0x0501f008, 0x49787005, + 0x49787004, 0x0501f005, 0x48101800, 0x801021c0, + 0x05020002, 0x480c7004, 0x1c01f000, 0x4803c856, + 0x4dc00000, 0x42007000, 0x0011232b, 0x64007400, + 0x49787001, 0x600380ee, 0x60080800, 0x59c00007, 0x4a038006, 0x60000001, 0x59c00007, 0x4a038006, 0x60000003, 0x59c00007, 0x4a038006, 0x60000005, 0x59c00007, 0x4a038006, 0x60000007, 0x59c00007, - 0x4a038006, 0xe0000000, 0x1c01f000, 0x4c5c0000, - 0x4178b800, 0x0501f809, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x905cbd41, 0x0501f803, - 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4dc00000, - 0x4c500000, 0x4c580000, 0x4c540000, 0x640370e8, - 0x805cb9c0, 0x05000009, 0x64138807, 0x4a0370f2, - 0x80000000, 0x59b800ea, 0x8c000510, 0x05000003, - 0x59b800e0, 0x05fdf7fc, 0x608380ee, 0x0501fd02, - 0x59c00007, 0x4a038006, 0x20000000, 0x59c00007, - 0x4a038006, 0x8000000a, 0x59c00007, 0x4a038006, - 0x8000000b, 0x59c00007, 0x4a038006, 0x40000001, - 0x83c00580, 0x00007700, 0x05000003, 0x600380ee, - 0x05fdf7ef, 0x608380ee, 0x60000810, 0x59c00007, - 0x8c00051e, 0x05000006, 0x4a038006, 0x90000001, - 0x80040840, 0x05fe07fa, 0x05fdfa4c, 0x83c00580, - 0x00007700, 0x05000003, 0x600380ee, 0x05fdf7f3, - 0x4178a000, 0x805cb9c0, 0x0502000f, 0x6080b000, - 0x91b8ac20, 0x0561fd16, 0x640770fb, 0x4a037020, - 0x001012ac, 0x59a8005e, 0x82000500, 0x0000ffff, - 0x48037021, 0x4a037035, 0x00110202, 0x4a037038, - 0x001012a3, 0x640770fb, 0x6080b000, 0x91b8ac00, - 0x0561fd07, 0x6100b000, 0xb1b8ac00, 0x0561fd04, - 0x805cb9c0, 0x05020006, 0x4a0370e4, 0xaaaaaaaa, - 0x4a0370e5, 0xaaaaaaaa, 0x0501f005, 0x4a0370e4, - 0x82aa2a82, 0x4a0370e5, 0xaaaaa2aa, 0x4a0370e6, - 0xaaaaaaaa, 0x640370fb, 0x4a0370e6, 0xaaaaaaaa, - 0x608380ee, 0x4a038006, 0x90000000, 0x59c00007, - 0x8c00051e, 0x05fe0a19, 0x600380ee, 0x4a038006, - 0x90000000, 0x59c00007, 0x8c00051e, 0x05fe0a13, - 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x5c038000, - 0x1c01f000, 0x4d300000, 0x4d2c0000, 0x4d340000, + 0x4a038006, 0x60000009, 0x59c00007, 0x4a038006, + 0x6000000b, 0x59c00007, 0x4c040000, 0x0501f817, + 0x5c000800, 0x4a038009, 0xf4f60000, 0x91c38420, + 0x80040840, 0x05fe07e6, 0x600380ee, 0x6443c822, + 0x640370e8, 0x0501f83c, 0x4a0370ee, 0x00100000, + 0x4a0370ee, 0x00080102, 0x4a0370e9, 0x00000400, + 0x4a0370e9, 0x00003a0f, 0x640370e8, 0x640770e8, + 0x5c038000, 0x1c01f000, 0x59c00007, 0x4a038006, + 0xe0000001, 0x61000800, 0x497b8005, 0x59c00007, + 0x80040840, 0x05fe07fd, 0x4a038006, 0x30000001, + 0x59c00007, 0x8c000508, 0x05fe07fe, 0x59c00007, + 0x4a038006, 0xb0000003, 0x59c00007, 0x4a038006, + 0xb0000005, 0x59c00007, 0x4a038006, 0xb0000001, + 0x59c00007, 0x4a038006, 0xb0000009, 0x59c00007, + 0x4a038006, 0xb0000007, 0x59c00007, 0x4a038006, + 0xb000000b, 0x59c00007, 0x4a038006, 0x60000001, + 0x59c00007, 0x4a038006, 0x60000003, 0x59c00007, + 0x4a038006, 0x60000005, 0x59c00007, 0x4a038006, + 0x60000007, 0x59c00007, 0x4a038006, 0xe0000000, + 0x1c01f000, 0x4c5c0000, 0x4178b800, 0x0501f809, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x905cbd41, 0x0501f803, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x4dc00000, 0x4c500000, 0x4c580000, + 0x4c540000, 0x640370e8, 0x805cb9c0, 0x05000009, + 0x64138807, 0x4a0370f2, 0x80000000, 0x59b800ea, + 0x8c000510, 0x05000003, 0x59b800e0, 0x05fdf7fc, + 0x608380ee, 0x0501fd3e, 0x59c00007, 0x4a038006, + 0x20000000, 0x59c00007, 0x4a038006, 0x8000000a, + 0x59c00007, 0x4a038006, 0x8000000b, 0x59c00007, + 0x4a038006, 0x40000001, 0x83c00580, 0x00007700, + 0x05000003, 0x600380ee, 0x05fdf7ef, 0x608380ee, + 0x60000810, 0x59c00007, 0x8c00051e, 0x05000006, + 0x4a038006, 0x90000001, 0x80040840, 0x05fe07fa, + 0x05fdfa25, 0x83c00580, 0x00007700, 0x05000003, + 0x600380ee, 0x05fdf7f3, 0x4178a000, 0x805cb9c0, + 0x0502000f, 0x6080b000, 0x91b8ac20, 0x0565fc2f, + 0x640770fb, 0x4a037020, 0x0010004b, 0x59a80061, + 0x82000500, 0x0000ffff, 0x48037021, 0x4a037035, + 0x001141a6, 0x4a037038, 0x00100042, 0x640770fb, + 0x6080b000, 0x91b8ac00, 0x0565fc20, 0x6100b000, + 0xb1b8ac00, 0x0565fc1d, 0x805cb9c0, 0x05020006, + 0x4a0370e4, 0xaaaaaaaa, 0x4a0370e5, 0xaaaaaaaa, + 0x0501f005, 0x4a0370e4, 0x82aa2a82, 0x4a0370e5, + 0xaaaaa2aa, 0x4a0370e6, 0xaaaaaaaa, 0x640370fb, + 0x4a0370e6, 0xaaaaaaaa, 0x608380ee, 0x4a038006, + 0x90000000, 0x59c00007, 0x8c00051e, 0x05fe09f2, + 0x600380ee, 0x4a038006, 0x90000000, 0x59c00007, + 0x8c00051e, 0x05fe09ec, 0x5c00a800, 0x5c00b000, + 0x5c00a000, 0x5c038000, 0x1c01f000, 0x4d300000, + 0x4d2c0000, 0x4d340000, 0x4d400000, 0x4cfc0000, + 0x4d380000, 0x4d3c0000, 0x4d440000, 0x4d4c0000, + 0x4d480000, 0x4c5c0000, 0x4c600000, 0x4c640000, + 0x4d040000, 0x4cf40000, 0x4cf80000, 0x0001f8d0, + 0x5c01f000, 0x5c01e800, 0x5c020800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, + 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, + 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, + 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4c540000, 0x4c500000, 0x4d240000, 0x4d200000, + 0x4d1c0000, 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000, 0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000, 0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4d040000, 0x4cf40000, - 0x4cf80000, 0x0001f8c8, 0x5c01f000, 0x5c01e800, - 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x5c029000, 0x5c029800, 0x5c028800, 0x5c027800, - 0x5c027000, 0x5c01f800, 0x5c028000, 0x5c026800, - 0x5c025800, 0x5c026000, 0x1c01f000, 0x493bc857, - 0x0001f0f5, 0x83300500, 0x000000ff, 0x90000c88, - 0x05fe19e6, 0x0c01f023, 0x1c01f000, 0x82000d00, - 0xc2000038, 0x05fe09da, 0x05fdf9e0, 0x00000000, - 0x00000048, 0x00000054, 0x00000053, 0x00100c17, - 0x00100c42, 0x00100c30, 0x00100c5c, 0x00100c21, - 0x00100c2a, 0x00100c33, 0x00100c58, 0x00100ccf, - 0x00100c17, 0x00100cd1, 0x00100c17, 0x00100c17, - 0x00100cd4, 0x00100cd8, 0x00100ce9, 0x00100cfb, - 0x00100c84, 0x00100d02, 0x00100d0c, 0x00100c17, - 0x00100c17, 0x00100c5d, 0x00100c17, 0x05fdf9c3, - 0x00100c20, 0x00100d8d, 0x00100ca1, 0x00100cc1, - 0x00100c20, 0x00100c20, 0x00100c20, 0x001010e6, - 0x05fdf9ba, 0x4803c856, 0x59300004, 0x8c00053e, - 0x05020003, 0x61567000, 0x0009f000, 0x053dfc92, - 0x05fc07fd, 0x1c01f000, 0x4803c856, 0x0501f8e3, - 0x40002800, 0x41782000, 0x615a7000, 0x0009f000, - 0x4803c856, 0x615e7000, 0x0009f000, 0x4803c856, - 0x0531ff4c, 0x4a0370e5, 0x00800000, 0x40000000, - 0x59b800e5, 0x8c00052c, 0x05000007, 0x4a0370e5, + 0x4cf80000, 0x4c580000, 0x0001f86e, 0x5c00b000, + 0x5c01f000, 0x5c01e800, 0x5c020800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, + 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, + 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, + 0x5c023800, 0x5c024000, 0x5c024800, 0x5c00a000, + 0x5c00a800, 0x1c01f000, 0x493bc857, 0x0001f0fd, + 0x83300500, 0x000000ff, 0x90000c88, 0x05fe198e, + 0x0c01f026, 0x1c01f000, 0x82000d00, 0xc2000038, + 0x05fe0982, 0x05fdf988, 0x00000000, 0x00000048, + 0x00000054, 0x00000053, 0x00100cad, 0x00100cd8, + 0x00100cc6, 0x00100cf2, 0x00100cb7, 0x00100cc0, + 0x00100cc9, 0x00100cee, 0x00100d6b, 0x00100cad, + 0x00100d6d, 0x00100cad, 0x00100cad, 0x00100d70, + 0x00100d74, 0x00100d85, 0x00100d97, 0x00100d20, + 0x00100d9e, 0x00100da8, 0x00100cad, 0x00100cad, + 0x00100cf3, 0x00100cad, 0x00100cad, 0x00100d1a, + 0x00100cad, 0x05fdf968, 0x00100cb6, 0x00100e29, + 0x00100d3d, 0x00100d5d, 0x00100cb6, 0x00100cb6, + 0x00100cb6, 0x00101181, 0x05fdf95f, 0x4803c856, + 0x59300004, 0x8c00053e, 0x05020003, 0x61567000, + 0x0009f039, 0x0541f8ba, 0x05fc07fd, 0x1c01f000, + 0x4803c856, 0x0501f8e9, 0x40002800, 0x41782000, + 0x615a7000, 0x0009f039, 0x4803c856, 0x615e7000, + 0x0009f039, 0x4803c856, 0x0535faa6, 0x4a0370e5, 0x00800000, 0x40000000, 0x59b800e5, 0x8c00052c, - 0x05fe099a, 0x1c01f000, 0x4803c856, 0x59325809, - 0x812e59c0, 0x05000012, 0x59300008, 0x8c00051a, - 0x0502000b, 0x592c040c, 0x8c00051c, 0x05020003, - 0x4a026013, 0xffffffff, 0x59300004, 0x8c00053e, - 0x05020005, 0x61227000, 0x0009f000, 0x641e5a0a, - 0x05fdf7f8, 0x053dfc64, 0x05fc07fb, 0x1c01f000, - 0x4803c856, 0x83300500, 0x00ffffff, 0x0539f306, - 0x1c01f000, 0x4178b800, 0x59300817, 0x82040580, - 0xdeaddead, 0x05000011, 0x82040580, 0x00110228, - 0x05000009, 0x48066009, 0x497a6017, 0x0001f945, - 0x59300008, 0x60840800, 0x80040540, 0x48026008, - 0x0501f014, 0x48066009, 0x42026000, 0x00111ad0, - 0x0001f945, 0x0501f00f, 0x59a800de, 0x80000d40, - 0x4807c857, 0x05fc0965, 0x58041000, 0x49780800, - 0x59a800df, 0x80040580, 0x05020004, 0x497b50de, - 0x497b50df, 0x0501f002, 0x480b50de, 0x05fdf7ee, - 0x6503900d, 0x642370e5, 0x64126203, 0x1c01f000, - 0x4803c856, 0x813261c0, 0x05fc0954, 0x0551f842, + 0x05000007, 0x4a0370e5, 0x00800000, 0x40000000, + 0x59b800e5, 0x8c00052c, 0x05fe093f, 0x1c01f000, + 0x4803c856, 0x59325809, 0x812e59c0, 0x05000012, + 0x59300008, 0x8c00051a, 0x0502000b, 0x592c040c, + 0x8c00051c, 0x05020003, 0x4a026013, 0xffffffff, + 0x59300004, 0x8c00053e, 0x05020005, 0x61227000, + 0x0009f039, 0x641e5a0a, 0x05fdf7f8, 0x0541f88c, + 0x05fc07fb, 0x1c01f000, 0x4803c856, 0x83300500, + 0x00ffffff, 0x0539f724, 0x1c01f000, 0x4178b800, + 0x59300817, 0x82040580, 0xdeaddead, 0x05000011, + 0x82040580, 0x001141cc, 0x05000009, 0x48066009, + 0x497a6017, 0x0001f94d, 0x59300008, 0x60840800, + 0x80040540, 0x48026008, 0x0501f014, 0x48066009, + 0x42026000, 0x00115a74, 0x0001f94d, 0x0501f00f, + 0x59a800e3, 0x80000d40, 0x4807c857, 0x05fc090a, + 0x58041000, 0x49780800, 0x59a800e4, 0x80040580, + 0x05020004, 0x497b50e3, 0x497b50e4, 0x0501f002, + 0x480b50e3, 0x05fdf7ee, 0x6503900d, 0x642370e5, + 0x64126203, 0x1c01f000, 0x42000000, 0x0011235f, + 0x0565fa3e, 0x42000000, 0x00112484, 0x0565f238, + 0x4803c856, 0x813261c0, 0x05fc08f3, 0x0551fd2f, 0x0500000b, 0x59325809, 0x592c020c, 0x84000552, - 0x48025a0c, 0x0505f8a4, 0x59300004, 0x8c00053e, - 0x05020004, 0x417a7800, 0x054dfb83, 0x1c01f000, - 0x053dfc25, 0x05fc07fc, 0x1c01f000, 0x4c040000, + 0x48025a0c, 0x0505f87a, 0x59300004, 0x8c00053e, + 0x05020004, 0x417a7800, 0x0551f859, 0x1c01f000, + 0x0541f847, 0x05fc07fc, 0x1c01f000, 0x4c040000, 0x59b808ea, 0x90040d07, 0x90040583, 0x05000004, 0x42000000, 0x60000000, 0x0501f894, 0x5c000800, 0x1c01f000, 0x0501f8d7, 0x05000015, 0x59325809, 0x812e59c0, 0x05000012, 0x592c0208, 0x82000500, 0x000000ff, 0x90000da9, 0x0502000d, 0x59300203, 0x90000583, 0x05000008, 0x59300808, 0x84040d26, - 0x48066008, 0x0001f945, 0x6503900d, 0x642370e5, - 0x1c01f000, 0x053dfc04, 0x05fc07f8, 0x42000000, - 0x0010e44c, 0x0561fb23, 0x59880151, 0x80000000, - 0x48031151, 0x6503900d, 0x42000000, 0xc0000000, - 0x0001f13a, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4200c800, 0x00110209, 0x6000b860, 0x6014c002, - 0x0531ffed, 0x4a0370e4, 0x02000000, 0x5c00c800, + 0x48066008, 0x0001f94d, 0x6503900d, 0x642370e5, + 0x1c01f000, 0x0541f826, 0x05fc07f8, 0x42000000, + 0x001123f0, 0x0565fa02, 0x59880154, 0x80000000, + 0x48031154, 0x6503900d, 0x42000000, 0xc0000000, + 0x0001f142, 0x4c5c0000, 0x4c600000, 0x4c640000, + 0x4200c800, 0x001141ad, 0x6000b860, 0x6014c002, + 0x0535fb41, 0x4a0370e4, 0x02000000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x0005f7dc, 0x4933c857, 0x0501fbab, 0x1c01f000, - 0x41300800, 0x800409c0, 0x05fe0904, 0x05fdf8fc, - 0x42000000, 0x0010e44c, 0x0561fb02, 0x4933c857, - 0x813261c0, 0x05fc08fd, 0x0501f830, 0x40002800, - 0x0561fa66, 0x0501f88e, 0x05000006, 0x5932680a, - 0x59340200, 0x8c00050e, 0x59300416, 0x05520ad7, - 0x1c01f000, 0x42000000, 0x0010e44c, 0x0561faf1, - 0x4933c857, 0x813261c0, 0x05fc08ec, 0x0501f880, - 0x0500000a, 0x054dffd8, 0x05000008, 0x59325809, + 0x0009f010, 0x4933c857, 0x0501fbad, 0x1c01f000, + 0x41300800, 0x800409c0, 0x05fe08a3, 0x05fdf89b, + 0x42000000, 0x001123f0, 0x0565f9e1, 0x4933c857, + 0x813261c0, 0x05fc089c, 0x0501f830, 0x40002800, + 0x0565f942, 0x0501f88e, 0x05000006, 0x5932680a, + 0x59340200, 0x8c00050e, 0x59300416, 0x05520fd3, + 0x1c01f000, 0x42000000, 0x001123f0, 0x0565f9d0, + 0x4933c857, 0x813261c0, 0x05fc088b, 0x0501f880, + 0x0500000a, 0x0551fcc5, 0x05000008, 0x59325809, 0x592c020c, 0x84000544, 0x8400054e, 0x48025a0c, - 0x417a7800, 0x054dfb1c, 0x1c01f000, 0x485fc857, + 0x417a7800, 0x054dfff2, 0x1c01f000, 0x485fc857, 0x5c000000, 0x4d780000, 0x4203e000, 0x50000000, - 0x6014b900, 0x05fdf0dd, 0x4933c857, 0x913004a0, - 0x05fe18d6, 0x83300c00, 0x0010e4c1, 0x50040000, + 0x6014b900, 0x05fdf07c, 0x4933c857, 0x913004a0, + 0x05fe1875, 0x83300c00, 0x00112465, 0x50040000, 0x80000000, 0x05001002, 0x44000800, 0x1c01f000, 0x4933c857, 0x05fdf7f6, 0x4807c856, 0x59b800ea, 0x8c000510, 0x05fc07fd, 0x59b800e0, 0x4803c857, 0x1c01f000, 0x4803c856, 0x42000000, 0x10000000, - 0x41300800, 0x0501f019, 0x8c000510, 0x00000140, + 0x41300800, 0x0501f019, 0x8c000510, 0x00000148, 0x4c040000, 0x0501f808, 0x5c000800, 0x90100488, - 0x00001140, 0x4c040000, 0x05fdfeab, 0x5c000800, - 0x0001f140, 0x59b800e2, 0x59b820e2, 0x80100580, + 0x00001148, 0x4c040000, 0x05fdfe71, 0x5c000800, + 0x0001f148, 0x59b800e2, 0x59b820e2, 0x80100580, 0x05fe07fd, 0x80102114, 0x0501f001, 0x40101800, 0x800c190a, 0x9010051f, 0x900c1d1f, 0x800c2480, 0x9010251f, 0x1c01f000, 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff, 0x80040d40, 0x4807c857, - 0x42001000, 0x0010e38b, 0x50080000, 0x80000540, + 0x42001000, 0x0011232c, 0x50080000, 0x80000540, 0x05020004, 0x640f70e5, 0x4a0370e4, 0x00000300, 0x80000000, 0x44001000, 0x60001008, 0x59b800ea, 0x8c000510, 0x0500000b, 0x05fdffdf, 0x90100488, - 0x05001007, 0x4c040000, 0x4c080000, 0x05fdfe82, + 0x05001007, 0x4c040000, 0x4c080000, 0x05fdfe48, 0x5c001000, 0x5c000800, 0x0501f01c, 0x59b800ea, 0x8c000516, 0x05020019, 0x4a0370e4, 0x00300000, 0x480770e1, 0x600011fe, 0x80081040, 0x05000010, 0x59b808e4, 0x8c040528, 0x05fe07fc, 0x42001000, - 0x0010e38b, 0x50080000, 0x80000040, 0x05020004, - 0x640b70e5, 0x4a0370e4, 0x00000200, 0x05fc1877, + 0x0011232c, 0x50080000, 0x80000040, 0x05020004, + 0x640b70e5, 0x4a0370e4, 0x00000200, 0x05fc1816, 0x44001000, 0x8c04052c, 0x1c01f000, 0x41f80000, - 0x50000000, 0x05fdf871, 0x80081040, 0x05fe07d8, - 0x41f80000, 0x50000000, 0x05fdf86c, 0x4d380000, + 0x50000000, 0x05fdf810, 0x80081040, 0x05fe07d8, + 0x41f80000, 0x50000000, 0x05fdf80b, 0x4d380000, 0x59300c07, 0x90040589, 0x05020004, 0x611e7000, - 0x0009f800, 0x80000580, 0x5c027000, 0x1c01f000, - 0x4c500000, 0x59a80249, 0x8c000518, 0x05000006, + 0x0009f839, 0x80000580, 0x5c027000, 0x1c01f000, + 0x4c500000, 0x59a8024c, 0x8c000518, 0x05000006, 0x640b900d, 0x59c8a020, 0x640f900d, 0x59c80820, 0x0501f005, 0x6407900d, 0x59c8a020, 0x640b900d, 0x59c80820, 0x8c50052e, 0x05000002, 0x900409c0, - 0x82040d00, 0x0000ffff, 0x0531fd12, 0x5c00a000, - 0x1c01f000, 0x42000000, 0x0010e43e, 0x0561fa4d, - 0x05fdffe8, 0x05000052, 0x4933c857, 0x59300407, - 0x90000580, 0x0500004e, 0x59c82021, 0x6407900d, + 0x82040d00, 0x0000ffff, 0x0535f864, 0x5c00a000, + 0x1c01f000, 0x42000000, 0x001123df, 0x0565f92c, + 0x05fdffe8, 0x05000054, 0x4933c857, 0x59300407, + 0x90000580, 0x05000050, 0x59c82021, 0x6407900d, 0x59c82821, 0x82142d00, 0x0000ffff, 0x59325809, - 0x812e59c0, 0x05000046, 0x59300008, 0x8c000536, - 0x05020043, 0x5932680a, 0x0525fb16, 0x05520a03, - 0x599c0019, 0x8c00050c, 0x0502001e, 0x0525fb11, - 0x0502001c, 0x59300813, 0x4807c857, 0x592c040c, - 0x8c00051c, 0x05020015, 0x8400055c, 0x48025c0c, - 0x42000000, 0x0010e3ba, 0x0561fa2a, 0x592c0a08, - 0x82040d00, 0x000000ff, 0xb0040588, 0x05000007, - 0x90040598, 0x05000005, 0xb00405a8, 0x05000003, - 0xb00405aa, 0x05020005, 0x59300013, 0x0555f8fb, - 0x80000d40, 0x48065806, 0x4a026013, 0x7fffffff, - 0x59300008, 0x8c000516, 0x0502001d, 0x48166015, - 0x0525faf0, 0x05000004, 0x59300416, 0x8c00051c, - 0x05000004, 0x599c0019, 0x8c00050c, 0x05000014, - 0x0501fcfc, 0x05020012, 0x0501fa0b, 0x40280000, - 0x4802600f, 0x05000005, 0x4832600d, 0x50200000, - 0x4802600c, 0x4822600e, 0x59300416, 0x8c00051c, - 0x05020004, 0x599c0019, 0x8c00050c, 0x05020871, - 0x6503900d, 0x642370e5, 0x1c01f000, 0x42000000, - 0x0010e44c, 0x0561f9f7, 0x59880153, 0x80000000, - 0x48031153, 0x6503900d, 0x42000000, 0xc0000000, - 0x0001f13a, 0x4cf80000, 0x58f40000, 0x8001f540, - 0x0501f81e, 0x41781800, 0x0501f903, 0x05020013, - 0x44140800, 0x0501f826, 0x05000010, 0x40043800, - 0x60041800, 0x40142000, 0x0501f8fb, 0x0502000b, - 0x801c3800, 0x501c0000, 0x44000800, 0x0501f80f, - 0x801c0580, 0x05000004, 0x44103800, 0x801c3840, - 0x44143800, 0x0501f816, 0x5c01f000, 0x1c01f000, - 0x80f9f1c0, 0x05020003, 0x58f41202, 0x0501f002, - 0x601c1000, 0x1c01f000, 0x80f9f1c0, 0x05020005, - 0x58f40401, 0x90000482, 0x80f40400, 0x0501f004, - 0x58f80401, 0x90000482, 0x80f80400, 0x50002800, - 0x80000000, 0x50002000, 0x1c01f000, 0x80f9f1c0, - 0x05020006, 0x58f40401, 0x90000482, 0x05f81fbb, - 0x4801ec01, 0x0501f008, 0x58f80401, 0x90000482, - 0x05f81fb6, 0x4801f401, 0x90000582, 0x05020002, - 0x0501f817, 0x58f40202, 0x80000040, 0x4801ea02, - 0x05f80fae, 0x90000581, 0x1c01f000, 0x82f40580, - 0xffffffff, 0x0500000d, 0x58f40201, 0x82000580, - 0x0000dcb3, 0x05fa0fa5, 0x58f40000, 0x8001f540, - 0x05000005, 0x58f80201, 0x82000580, 0x0000ddb9, - 0x05fa0f9e, 0x0501f809, 0x1c01f000, 0x4d2c0000, - 0x40fa5800, 0x05fdfb51, 0x4979e800, 0x4179f000, - 0x5c025800, 0x1c01f000, 0x80f5e9c0, 0x05000008, - 0x80f9f1c0, 0x05fe0ff6, 0x4d2c0000, 0x40f65800, - 0x05fdfb46, 0x4179e800, 0x5c025800, 0x1c01f000, - 0x4cf40000, 0x0525fa67, 0x0502002e, 0x59300808, - 0x82040500, 0x00003000, 0x0502002a, 0x8c040522, - 0x0500002a, 0x5930002b, 0x8001ed40, 0x05f80f7f, - 0x82000580, 0xffffffff, 0x05000022, 0x58f40201, - 0x82000580, 0x0000dcb3, 0x05fa0f78, 0x58f40a02, - 0x82040500, 0x0000fffe, 0x05000003, 0x05fdff86, - 0x58f40a02, 0x9004048f, 0x0502107a, 0x80040800, - 0x4805ea02, 0x90040588, 0x0500007d, 0x90040488, - 0x05001008, 0x58f40000, 0x8001ed40, 0x05f80f67, - 0x58f40201, 0x82000580, 0x0000ddb9, 0x05fa0f63, - 0x58f40401, 0x90000c02, 0x4805ec01, 0x80f40400, - 0x59300814, 0x44040000, 0x80000000, 0x45780000, - 0x5c01e800, 0x1c01f000, 0x60001020, 0x4203e000, - 0xb0800000, 0x4203f800, 0x0c000000, 0x40000000, - 0x80081040, 0x05f80f51, 0x05ffb7fb, 0x59300808, - 0x84040d62, 0x48066008, 0x4203f800, 0x08000000, - 0x4d2c0000, 0x05fdfae0, 0x0500004e, 0x492e602b, - 0x4a025a01, 0x0000dcb3, 0x59300009, 0x80001d40, - 0x05f80f42, 0x580c0813, 0x48065803, 0x580c0208, - 0x82000500, 0x000000ff, 0xb00005a8, 0x05000007, - 0x90000582, 0x05000005, 0x90000598, 0x05000003, - 0x90000588, 0x0502002b, 0x580c1801, 0x800c19c0, - 0x05f80f32, 0x580c0c09, 0x90040d03, 0x90040582, - 0x05020003, 0x592c0803, 0x0501f022, 0x580c2a0a, - 0x580c000b, 0x59301813, 0x800c0580, 0x05000021, - 0x90040580, 0x0500000e, 0x40140000, 0x4c080000, - 0x400c1000, 0x41780800, 0x0539f8d4, 0x800409c0, - 0x05fa0f1e, 0x90140c08, 0x0539f8b4, 0x5c001000, - 0x40041800, 0x592c0803, 0x0501f015, 0x90140408, - 0x4c080000, 0x400c1000, 0x41780800, 0x0539f8c7, - 0x800409c0, 0x05fa0f11, 0x40140800, 0x0539f8a7, - 0x5c001000, 0x40041800, 0x592c0803, 0x0501f008, - 0x59301813, 0x40040000, 0x800c0580, 0x05020004, - 0x497a5a02, 0x64125c01, 0x0501f007, 0x64065a02, - 0x641a5c01, 0x497a5804, 0x400c0000, 0x80040480, - 0x48025805, 0x412de800, 0x5c025800, 0x05fdf789, - 0x5c025800, 0x4a02602b, 0xffffffff, 0x05fdf79d, - 0x4d2c0000, 0x58f65800, 0x05fdfaac, 0x40f65800, - 0x05fdfaaa, 0x5c025800, 0x05fdf7f7, 0x4d2c0000, - 0x05fdfa85, 0x05fc07fa, 0x4a025a01, 0x0000ddb9, - 0x640a5c01, 0x492de800, 0x412de800, 0x5c025800, - 0x05fdf784, 0x05fdff13, 0x90f40404, 0x800c0400, - 0x40000800, 0x50040000, 0x80100580, 0x05000012, - 0x90040c02, 0x80081040, 0x05fe07fb, 0x80f9f1c0, - 0x0500000e, 0x58f41202, 0x90081487, 0x90f80402, - 0x800c0400, 0x40000800, 0x50040000, 0x80100580, - 0x05000005, 0x90040c02, 0x80081040, 0x05fe07fb, - 0x0501f002, 0x1c01f000, 0x90000541, 0x05fdf7fe, - 0x4cf40000, 0x4cf80000, 0x4001e800, 0x812e59c0, - 0x05000021, 0x592c0a0a, 0x800409c0, 0x0502001e, - 0x82f40580, 0xffffffff, 0x05000019, 0x58f40201, - 0x82000580, 0x0000dcb3, 0x05fa0ebc, 0x58f40000, - 0x8001f540, 0x05000005, 0x58f80201, 0x82000580, - 0x0000ddb9, 0x05fa0eb5, 0x41783800, 0x58f44003, - 0x0501f833, 0x05020009, 0x05fdff1c, 0x497a602b, - 0x59300808, 0x84040d22, 0x48066008, 0x5c01f000, - 0x5c01e800, 0x1c01f000, 0x05fdff14, 0x64465a0a, - 0x05fdf7f7, 0x05fdfefa, 0x05fdf7f5, 0x4cf40000, - 0x4cf80000, 0x4001e800, 0x90040581, 0x0502001c, - 0x82f40580, 0xffffffff, 0x05000017, 0x58f40201, - 0x82000580, 0x0000dcb3, 0x05fa0e98, 0x58f40000, - 0x8001f540, 0x05000005, 0x58f80201, 0x82000580, - 0x0000ddb9, 0x05fa0e91, 0x41783800, 0x58f44003, - 0x0501f80f, 0x05020007, 0x05fdfef8, 0x60040800, - 0x497a602b, 0x5c01f000, 0x5c01e800, 0x1c01f000, - 0x05fdfef2, 0x60440800, 0x05fdf7fa, 0x4c040000, - 0x05fdfed7, 0x5c000800, 0x05fdf7f6, 0x4803c856, - 0x401c2000, 0x41781800, 0x4c200000, 0x05fdff96, - 0x5c004000, 0x05020022, 0x40202000, 0x60041800, - 0x05fdff91, 0x0502001e, 0x05fdfea2, 0x40082800, - 0x90f43404, 0x50182000, 0x40100000, 0x801c0580, - 0x05000004, 0x60041800, 0x05fdff87, 0x05020014, - 0x90183402, 0x80142840, 0x05fe07f7, 0x80f9f1c0, - 0x0500000e, 0x58f42a02, 0x90142c87, 0x90f83402, - 0x50182000, 0x40100000, 0x801c0580, 0x05000004, - 0x60041800, 0x05fdff78, 0x05020005, 0x90183402, - 0x80142840, 0x05fe07f7, 0x1c01f000, 0x90000541, - 0x05fdf7fe, 0x05f9fe55, 0x592c020e, 0x8c000502, - 0x05fc07fd, 0x497a6014, 0x0501fdbe, 0x412c7000, - 0x59300008, 0x84000556, 0x48026008, 0x9004050f, - 0x82000c00, 0x001012ac, 0x50044000, 0x80204000, - 0x50200000, 0x80187c00, 0x583c2800, 0x583c2001, - 0x583c1002, 0x58380a0b, 0x40187000, 0x5818300b, - 0x59303808, 0x497a6015, 0x0001f183, 0x592c040e, - 0x8c000500, 0x05f80e39, 0x592c0011, 0x48026014, - 0x05fdf7e6, 0x592c040c, 0x8c000502, 0x05fc07de, - 0x592c040d, 0x80000540, 0x05fc07db, 0x90000c82, - 0x0500100e, 0x58380001, 0x80007540, 0x05f80e2b, - 0x58380208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50004000, 0x40040000, 0x800409c0, 0x05000004, - 0x90040c85, 0x05fe17f4, 0x80204400, 0x50200000, - 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002, - 0x592c0a0b, 0x592c3011, 0x59303808, 0x497a6014, - 0x497a6015, 0x48166010, 0x48126011, 0x480a6012, - 0x481a6013, 0x80040840, 0x4806600f, 0x0000018a, - 0x80204000, 0x50201800, 0x800c19c0, 0x0502000a, - 0x58380001, 0x80007540, 0x05f80e08, 0x58380208, - 0x9000050f, 0x82000400, 0x001012ac, 0x50004000, - 0x50201800, 0x483a600d, 0x480e600c, 0x4822600e, - 0x0001f18a, 0x4803c856, 0x592c020c, 0x8c00051e, - 0x05020016, 0x50200000, 0x80306c00, 0x40240000, - 0x0c01f001, 0x00100ff5, 0x00100ff5, 0x00100ffd, - 0x00100ff5, 0x00100ff5, 0x00100ff5, 0x00100ff5, - 0x00100ff5, 0x00100ffd, 0x00100ff5, 0x00100ffd, - 0x00100ff5, 0x00100ff5, 0x00100ffd, 0x00100ff5, - 0x00100ff5, 0x05f9fde5, 0x8400051e, 0x48025a0c, - 0x50200000, 0x80306c00, 0x58343801, 0x481e6011, - 0x0501f007, 0x58341802, 0x58342800, 0x58343801, - 0x480e6012, 0x48166010, 0x481e6011, 0x0501f289, - 0x4933c857, 0x5931f809, 0x59301006, 0x800811c0, - 0x05000009, 0x41780800, 0x60280000, 0x0535ff83, - 0x80080102, 0x05020002, 0x84001542, 0x80081040, - 0x4809fc0a, 0x640a6006, 0x592c040d, 0x90000508, - 0x05000008, 0x0501f834, 0x59300203, 0x90000584, - 0x05020003, 0x61227000, 0x0009f800, 0x1c01f000, - 0x4cfc0000, 0x58fc0208, 0x82000500, 0x000000ff, - 0xb0000588, 0x05000003, 0x900005a2, 0x05020009, - 0x58fc040c, 0x8c000500, 0x05000006, 0x58fc080f, - 0x8c040516, 0x0500001c, 0x58fc000b, 0x0501f00a, - 0x58fc040c, 0x8c000512, 0x05020019, 0x58fc0c0d, - 0x8c040516, 0x05020003, 0x5c01f800, 0x1c01f000, - 0x58fc000e, 0x4c000000, 0x4d2c0000, 0x40fe5800, - 0x59300013, 0x0551fe81, 0x5c025800, 0x80000d40, - 0x5c000000, 0x80040580, 0x05020007, 0x59300008, - 0x84000500, 0x48026008, 0x61227000, 0x5c01f800, - 0x0009f000, 0x5c01f800, 0x1c01f000, 0x58fdf80d, - 0x05fdf7e7, 0x5c000000, 0x4c000000, 0x4803c857, - 0x4933c857, 0x59b808ea, 0x90040d07, 0x90040580, - 0x05000021, 0x90040583, 0x0500001f, 0x59300407, - 0x4c000000, 0x64026407, 0x61043000, 0x4a0370e5, - 0x00003000, 0x42000000, 0x50000000, 0x41300800, - 0x4c180000, 0x05fdfcd5, 0x5c003000, 0x0500000d, - 0x60780000, 0x80000040, 0x05fe07ff, 0x80183040, - 0x05fe07f5, 0x42000000, 0x40000000, 0x41300800, - 0x05fdfcca, 0x5988014d, 0x80000000, 0x4803114d, - 0x4a0370e5, 0x00002000, 0x5c000000, 0x48026407, - 0x1c01f000, 0x59300008, 0x84000500, 0x48026008, - 0x05fdf7fc, 0x59c00007, 0x4a038006, 0x30000000, - 0x40000000, 0x59c00007, 0x8c00050a, 0x05fe07fe, - 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, - 0x4dc00000, 0x640370e8, 0x608380ee, 0x05fdfff2, - 0x600380ee, 0x05fdfff0, 0x0529f828, 0x05020011, - 0x4a038891, 0x0000ffff, 0x497b8880, 0x4ce80000, - 0x6059d000, 0x0531ff78, 0x497b8892, 0x6059d000, - 0x0531ff75, 0x5c01d000, 0x42000000, 0x0010e497, - 0x055dff48, 0x0501f810, 0x5c038000, 0x0529f102, - 0x0501f81f, 0x4c080000, 0x4c140000, 0x42000000, - 0x0010e498, 0x055dff3f, 0x0501f807, 0x5c002800, + 0x812e59c0, 0x05000048, 0x59300008, 0x8c000536, + 0x05020045, 0x5932680a, 0x0525fcec, 0x05520eff, + 0x0565fa96, 0x0502001e, 0x0525fce8, 0x0502001c, + 0x59300813, 0x4807c857, 0x592c040c, 0x8c00051c, + 0x05020015, 0x8400055c, 0x48025c0c, 0x42000000, + 0x0011235b, 0x0565f90a, 0x592c0a08, 0x82040d00, + 0x000000ff, 0xb0040588, 0x05000007, 0x90040598, + 0x05000005, 0xb00405a8, 0x05000003, 0xb00405aa, + 0x05020005, 0x59300013, 0x0555fe06, 0x80000d40, + 0x48065806, 0x4a026013, 0x7fffffff, 0x59300014, + 0x80000540, 0x05000004, 0x59300008, 0x8c000516, + 0x0502001d, 0x48166015, 0x0525fcc4, 0x05000004, + 0x59300416, 0x8c00051c, 0x05000005, 0x0565fa6b, + 0x05000015, 0x0525fcbd, 0x05020013, 0x0501fcd0, + 0x05020011, 0x0501fa0a, 0x40280000, 0x4802600f, + 0x05000005, 0x4832600d, 0x50200000, 0x4802600c, + 0x4822600e, 0x59300416, 0x8c00051c, 0x05020003, + 0x0565fa5a, 0x05020871, 0x6503900d, 0x642370e5, + 0x1c01f000, 0x42000000, 0x001123f0, 0x0565f8d4, + 0x59880156, 0x80000000, 0x48031156, 0x6503900d, + 0x42000000, 0xc0000000, 0x0001f142, 0x4cf80000, + 0x58f40000, 0x8001f540, 0x0501f81e, 0x41781800, + 0x0501f903, 0x05020013, 0x44140800, 0x0501f826, + 0x05000010, 0x40043800, 0x60041800, 0x40142000, + 0x0501f8fb, 0x0502000b, 0x801c3800, 0x501c0000, + 0x44000800, 0x0501f80f, 0x801c0580, 0x05000004, + 0x44103800, 0x801c3840, 0x44143800, 0x0501f816, + 0x5c01f000, 0x1c01f000, 0x80f9f1c0, 0x05020003, + 0x58f41202, 0x0501f002, 0x601c1000, 0x1c01f000, + 0x80f9f1c0, 0x05020005, 0x58f40401, 0x90000482, + 0x80f40400, 0x0501f004, 0x58f80401, 0x90000482, + 0x80f80400, 0x50002800, 0x80000000, 0x50002000, + 0x1c01f000, 0x80f9f1c0, 0x05020006, 0x58f40401, + 0x90000482, 0x05f81f58, 0x4801ec01, 0x0501f008, + 0x58f80401, 0x90000482, 0x05f81f53, 0x4801f401, + 0x90000582, 0x05020002, 0x0501f817, 0x58f40202, + 0x80000040, 0x4801ea02, 0x05f80f4b, 0x90000581, + 0x1c01f000, 0x82f40580, 0xffffffff, 0x0500000d, + 0x58f40201, 0x82000580, 0x0000dcb3, 0x05fa0f42, + 0x58f40000, 0x8001f540, 0x05000005, 0x58f80201, + 0x82000580, 0x0000ddb9, 0x05fa0f3b, 0x0501f809, + 0x1c01f000, 0x4d2c0000, 0x40fa5800, 0x05fdfaea, + 0x4979e800, 0x4179f000, 0x5c025800, 0x1c01f000, + 0x80f5e9c0, 0x05000008, 0x80f9f1c0, 0x05fe0ff6, + 0x4d2c0000, 0x40f65800, 0x05fdfadf, 0x4179e800, + 0x5c025800, 0x1c01f000, 0x4cf40000, 0x0525fc3b, + 0x0502002e, 0x59300808, 0x82040500, 0x00003000, + 0x0502002a, 0x8c040522, 0x0500002a, 0x5930002b, + 0x8001ed40, 0x05f80f1c, 0x82000580, 0xffffffff, + 0x05000022, 0x58f40201, 0x82000580, 0x0000dcb3, + 0x05fa0f15, 0x58f40a02, 0x82040500, 0x0000fffe, + 0x05000003, 0x05fdff86, 0x58f40a02, 0x9004048f, + 0x0502107a, 0x80040800, 0x4805ea02, 0x90040588, + 0x0500007d, 0x90040488, 0x05001008, 0x58f40000, + 0x8001ed40, 0x05f80f04, 0x58f40201, 0x82000580, + 0x0000ddb9, 0x05fa0f00, 0x58f40401, 0x90000c02, + 0x4805ec01, 0x80f40400, 0x59300814, 0x44040000, + 0x80000000, 0x45780000, 0x5c01e800, 0x1c01f000, + 0x60001020, 0x4203e000, 0xb0800000, 0x4203f800, + 0x0c000000, 0x40000000, 0x80081040, 0x05f80eee, + 0x05ffb7fb, 0x59300808, 0x84040d62, 0x48066008, + 0x4203f800, 0x08000000, 0x4d2c0000, 0x05fdfa79, + 0x0500004e, 0x492e602b, 0x4a025a01, 0x0000dcb3, + 0x59300009, 0x80001d40, 0x05f80edf, 0x580c0813, + 0x48065803, 0x580c0208, 0x82000500, 0x000000ff, + 0xb00005a8, 0x05000007, 0x90000582, 0x05000005, + 0x90000598, 0x05000003, 0x90000588, 0x0502002b, + 0x580c1801, 0x800c19c0, 0x05f80ecf, 0x580c0c09, + 0x90040d03, 0x90040582, 0x05020003, 0x592c0803, + 0x0501f022, 0x580c2a0a, 0x580c000b, 0x59301813, + 0x800c0580, 0x05000021, 0x90040580, 0x0500000e, + 0x40140000, 0x4c080000, 0x400c1000, 0x41780800, + 0x0539fcef, 0x800409c0, 0x05fa0ebb, 0x90140c08, + 0x0539fccf, 0x5c001000, 0x40041800, 0x592c0803, + 0x0501f015, 0x90140408, 0x4c080000, 0x400c1000, + 0x41780800, 0x0539fce2, 0x800409c0, 0x05fa0eae, + 0x40140800, 0x0539fcc2, 0x5c001000, 0x40041800, + 0x592c0803, 0x0501f008, 0x59301813, 0x40040000, + 0x800c0580, 0x05020004, 0x497a5a02, 0x64125c01, + 0x0501f007, 0x64065a02, 0x641a5c01, 0x497a5804, + 0x400c0000, 0x80040480, 0x48025805, 0x412de800, + 0x5c025800, 0x05fdf789, 0x5c025800, 0x4a02602b, + 0xffffffff, 0x05fdf79d, 0x4d2c0000, 0x58f65800, + 0x05fdfa45, 0x40f65800, 0x05fdfa43, 0x5c025800, + 0x05fdf7f7, 0x4d2c0000, 0x05fdfa1e, 0x05fc07fa, + 0x4a025a01, 0x0000ddb9, 0x640a5c01, 0x492de800, + 0x412de800, 0x5c025800, 0x05fdf784, 0x05fdff13, + 0x90f40404, 0x800c0400, 0x40000800, 0x50040000, + 0x80100580, 0x05000012, 0x90040c02, 0x80081040, + 0x05fe07fb, 0x80f9f1c0, 0x0500000e, 0x58f41202, + 0x90081487, 0x90f80402, 0x800c0400, 0x40000800, + 0x50040000, 0x80100580, 0x05000005, 0x90040c02, + 0x80081040, 0x05fe07fb, 0x0501f002, 0x1c01f000, + 0x90000541, 0x05fdf7fe, 0x4cf40000, 0x4cf80000, + 0x4001e800, 0x812e59c0, 0x05000021, 0x592c0a0a, + 0x800409c0, 0x0502001e, 0x82f40580, 0xffffffff, + 0x05000019, 0x58f40201, 0x82000580, 0x0000dcb3, + 0x05fa0e59, 0x58f40000, 0x8001f540, 0x05000005, + 0x58f80201, 0x82000580, 0x0000ddb9, 0x05fa0e52, + 0x41783800, 0x58f44003, 0x0501f833, 0x05020009, + 0x05fdff1c, 0x497a602b, 0x59300808, 0x84040d22, + 0x48066008, 0x5c01f000, 0x5c01e800, 0x1c01f000, + 0x05fdff14, 0x64465a0a, 0x05fdf7f7, 0x05fdfefa, + 0x05fdf7f5, 0x4cf40000, 0x4cf80000, 0x4001e800, + 0x90040581, 0x0502001c, 0x82f40580, 0xffffffff, + 0x05000017, 0x58f40201, 0x82000580, 0x0000dcb3, + 0x05fa0e35, 0x58f40000, 0x8001f540, 0x05000005, + 0x58f80201, 0x82000580, 0x0000ddb9, 0x05fa0e2e, + 0x41783800, 0x58f44003, 0x0501f80f, 0x05020007, + 0x05fdfef8, 0x60040800, 0x497a602b, 0x5c01f000, + 0x5c01e800, 0x1c01f000, 0x05fdfef2, 0x60440800, + 0x05fdf7fa, 0x4c040000, 0x05fdfed7, 0x5c000800, + 0x05fdf7f6, 0x4803c856, 0x401c2000, 0x41781800, + 0x4c200000, 0x05fdff96, 0x5c004000, 0x05020022, + 0x40202000, 0x60041800, 0x05fdff91, 0x0502001e, + 0x05fdfea2, 0x40082800, 0x90f43404, 0x50182000, + 0x40100000, 0x801c0580, 0x05000004, 0x60041800, + 0x05fdff87, 0x05020014, 0x90183402, 0x80142840, + 0x05fe07f7, 0x80f9f1c0, 0x0500000e, 0x58f42a02, + 0x90142c87, 0x90f83402, 0x50182000, 0x40100000, + 0x801c0580, 0x05000004, 0x60041800, 0x05fdff78, + 0x05020005, 0x90183402, 0x80142840, 0x05fe07f7, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x05f9fdf2, + 0x592c020e, 0x8c000502, 0x05fc07fd, 0x497a6014, + 0x0501fd92, 0x412c7000, 0x59300008, 0x84000556, + 0x48026008, 0x9004050f, 0x82000c00, 0x0010004b, + 0x50044000, 0x80204000, 0x50200000, 0x80187c00, + 0x583c2800, 0x583c2001, 0x583c1002, 0x58380a0b, + 0x40187000, 0x5818300b, 0x59303808, 0x497a6015, + 0x0001f18b, 0x592c040e, 0x8c000500, 0x05f80dd6, + 0x592c0011, 0x48026014, 0x05fdf7e6, 0x592c040c, + 0x8c000502, 0x05fc07de, 0x592c040d, 0x80000540, + 0x05fc07db, 0x90000c82, 0x0500100e, 0x58380001, + 0x80007540, 0x05f80dc8, 0x58380208, 0x9000050f, + 0x82000400, 0x0010004b, 0x50004000, 0x40040000, + 0x800409c0, 0x05000004, 0x90040c85, 0x05fe17f4, + 0x80204400, 0x50200000, 0x80387c00, 0x583c2800, + 0x583c2001, 0x583c1002, 0x592c0a0b, 0x592c3011, + 0x59303808, 0x497a6014, 0x497a6015, 0x48166010, + 0x48126011, 0x480a6012, 0x481a6013, 0x80040840, + 0x4806600f, 0x00000192, 0x80204000, 0x50201800, + 0x800c19c0, 0x0502000a, 0x58380001, 0x80007540, + 0x05f80da5, 0x58380208, 0x9000050f, 0x82000400, + 0x0010004b, 0x50004000, 0x50201800, 0x483a600d, + 0x480e600c, 0x4822600e, 0x0001f192, 0x4803c856, + 0x592c020c, 0x8c00051e, 0x05020016, 0x50200000, + 0x80306c00, 0x40240000, 0x0c01f001, 0x00101093, + 0x00101093, 0x0010109b, 0x00101093, 0x00101093, + 0x00101093, 0x00101093, 0x00101093, 0x0010109b, + 0x00101093, 0x0010109b, 0x00101093, 0x00101093, + 0x0010109b, 0x00101093, 0x00101093, 0x05f9fd82, + 0x8400051e, 0x48025a0c, 0x50200000, 0x80306c00, + 0x58343801, 0x481e6011, 0x0501f007, 0x58341802, + 0x58342800, 0x58343801, 0x480e6012, 0x48166010, + 0x481e6011, 0x0501f287, 0x4933c857, 0x5931f809, + 0x59301006, 0x800811c0, 0x05000009, 0x41780800, + 0x60280000, 0x0539fb9e, 0x80080102, 0x05020002, + 0x84001542, 0x80081040, 0x4809fc0a, 0x640a6006, + 0x592c040d, 0x90000508, 0x05000008, 0x0501f834, + 0x59300203, 0x90000584, 0x05020003, 0x61227000, + 0x0009f839, 0x1c01f000, 0x4cfc0000, 0x58fc0208, + 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, + 0x900005a2, 0x05020009, 0x58fc040c, 0x8c000500, + 0x05000006, 0x58fc080f, 0x8c040516, 0x0500001c, + 0x58fc000b, 0x0501f00a, 0x58fc040c, 0x8c000512, + 0x05020019, 0x58fc0c0d, 0x8c040516, 0x05020003, + 0x5c01f800, 0x1c01f000, 0x58fc000e, 0x4c000000, + 0x4d2c0000, 0x40fe5800, 0x59300013, 0x0555fb89, + 0x5c025800, 0x80000d40, 0x5c000000, 0x80040580, + 0x05020007, 0x59300008, 0x84000500, 0x48026008, + 0x61227000, 0x5c01f800, 0x0009f039, 0x5c01f800, + 0x1c01f000, 0x58fdf80d, 0x05fdf7e7, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4933c857, 0x59b808ea, + 0x90040d07, 0x90040580, 0x05000021, 0x90040583, + 0x0500001f, 0x59300407, 0x4c000000, 0x64026407, + 0x61043000, 0x4a0370e5, 0x00003000, 0x42000000, + 0x50000000, 0x41300800, 0x4c180000, 0x05fdfcd3, + 0x5c003000, 0x0500000d, 0x60780000, 0x80000040, + 0x05fe07ff, 0x80183040, 0x05fe07f5, 0x42000000, + 0x40000000, 0x41300800, 0x05fdfcc8, 0x59880150, + 0x80000000, 0x48031150, 0x4a0370e5, 0x00002000, + 0x5c000000, 0x48026407, 0x1c01f000, 0x59300008, + 0x84000500, 0x48026008, 0x05fdf7fc, 0x59c00007, + 0x4a038006, 0x30000000, 0x40000000, 0x59c00007, + 0x8c00050a, 0x05fe07fe, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4dc00000, 0x640370e8, + 0x608380ee, 0x05fdfff2, 0x600380ee, 0x05fdfff0, + 0x0529fa74, 0x05020012, 0x4a038891, 0x0000ffff, + 0x497b8880, 0x4ce80000, 0x6059d000, 0x0535fb45, + 0x497b8892, 0x6059d000, 0x0535fb42, 0x5c01d000, + 0x42000000, 0x0011243b, 0x0561fe25, 0x61fc19ff, + 0x0501f811, 0x5c038000, 0x0529f34d, 0x0501f81b, + 0x4c080000, 0x4c140000, 0x42000000, 0x0011243c, + 0x0561fe1b, 0x61fc19ff, 0x0501f807, 0x5c002800, 0x5c001000, 0x48178892, 0x480b8880, 0x5c038000, - 0x1c01f000, 0x496fc857, 0x916c0583, 0x05020008, - 0x4c080000, 0x4c0c0000, 0x61201100, 0x61fc19ff, - 0x0519ff30, 0x5c001800, 0x5c001000, 0x60f00800, - 0x0501ff46, 0x4a038891, 0x0000ffff, 0x6503900d, - 0x05fdfaa8, 0x640770e8, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x59c41080, 0x497b8880, - 0x4ce80000, 0x6059d000, 0x4c080000, 0x0531ff46, - 0x5c001000, 0x5c01d000, 0x59c42892, 0x497b8892, - 0x0525ffea, 0x05020002, 0x1c01f000, 0x61802004, - 0x59c418a4, 0x900c1d0f, 0x900c0580, 0x0500000c, - 0x59c41805, 0x900c1d01, 0x0502000b, 0x59c418a4, - 0x900c1d0f, 0x900c0487, 0x05001003, 0x900c048c, - 0x05001003, 0x80102040, 0x05fe07f2, 0x497b8891, - 0x1c01f000, 0x4c100000, 0x60642000, 0x64078805, - 0x0505fccf, 0x59c41805, 0x900c1d01, 0x05000005, - 0x80102040, 0x05fe07fa, 0x5c002000, 0x05fdf7f4, - 0x5c002000, 0x05fdf7f0, 0x60080020, 0x46000000, - 0x0162c58b, 0x59c8080b, 0x4807c857, 0x59c8103f, - 0x480bc857, 0x05f9fced, 0x4803c856, 0x1c01f000, - 0x00101100, 0x00101100, 0x00101100, 0x00101114, - 0x00101100, 0x00101100, 0x00101100, 0x00101100, - 0x00101100, 0x00101114, 0x00101100, 0x00101101, - 0x00101100, 0x00101100, 0x00101100, 0x00101100, - 0x05f9fcda, 0x900405bb, 0x05fa0cd8, 0x592c020e, - 0x8c000500, 0x0500008d, 0x592c1a0b, 0x9004050f, - 0x82000400, 0x001012ac, 0x50001000, 0x50080000, - 0x59302015, 0x4802600c, 0x492e600d, 0x480a600e, - 0x480e600f, 0x48126014, 0x5c025800, 0x1c01f000, - 0x9004050f, 0x82000400, 0x001012ac, 0x50001000, - 0x50080000, 0x592c1a0b, 0x4802600c, 0x492e600d, - 0x480a600e, 0x480e600f, 0x497a6014, 0x05fdf7f3, - 0x8c040500, 0x05020071, 0x82040d00, 0x00000080, - 0x0500006e, 0x0001f19b, 0x0501fc22, 0x843c7d4e, - 0x0001f1a8, 0x59307804, 0x823c7d00, 0x01880080, - 0x823c7d40, 0x80000005, 0x59300013, 0x82000500, - 0xffff0000, 0x05000002, 0x843c7d6a, 0x59300015, - 0x59301014, 0x80080580, 0x0502000b, 0x800811c0, - 0x05020004, 0x8c3c050e, 0x05000055, 0x0501f004, - 0x592c120c, 0x8c08051e, 0x05020051, 0x843c7d4a, - 0x0501f04f, 0x480bc857, 0x59300804, 0x82040500, - 0x00008080, 0x82000580, 0x00008080, 0x05020016, - 0x592c6001, 0x58300409, 0x90000503, 0x90000581, - 0x05020011, 0x84040d1e, 0x48066004, 0x59302015, - 0x5930001c, 0x80101480, 0x0500100b, 0x5830020a, - 0x41780800, 0x0535fe39, 0x800810c6, 0x59301814, - 0x800c0482, 0x80100580, 0x05020003, 0x48126014, - 0x05fdf7db, 0x42000000, 0x0010e43f, 0x055dfe7d, - 0x59302015, 0x59300416, 0x4803c857, 0x8c000514, - 0x0502000f, 0x599c1819, 0x8c0c0512, 0x0500000a, - 0x592c0813, 0x59300017, 0x80040c80, 0x05000005, - 0x05001004, 0x80040000, 0x80140480, 0x05001008, - 0x0541fac4, 0x900c1d41, 0x0501f01f, 0x84000514, - 0x48026416, 0x48126017, 0x4813c857, 0x4c3c0000, - 0x0501f954, 0x5c007800, 0x05020017, 0x5930500f, - 0x592c020c, 0x4803c857, 0x8c00051e, 0x05020004, - 0x903c7d60, 0x5930400e, 0x0501f004, 0x8400051e, - 0x48025a0c, 0x0501f907, 0x50201800, 0x480e600c, - 0x4832600d, 0x4822600e, 0x482a600f, 0x480fc857, - 0x4833c857, 0x4823c857, 0x482bc857, 0x80000580, - 0x483e6004, 0x1c01f000, 0x05f9fc48, 0x4933c857, - 0x4d2c0000, 0x59900005, 0x81300580, 0x05fa0c43, - 0x054dfb31, 0x05f80c41, 0x59325809, 0x4d3c0000, - 0x4d400000, 0x59300004, 0x4803c857, 0x4c000000, - 0x0539fda9, 0x0539faab, 0x5c000000, 0x8c000516, - 0x05000014, 0x82000d00, 0x01000080, 0x05020004, - 0x592c0a0e, 0x8c040506, 0x0502000e, 0x592c0013, - 0x4803c857, 0x4802580b, 0x41780800, 0x600a8000, - 0x0525fc7b, 0x4a025c0a, 0x0000ffff, 0x492fc857, - 0x0001fb82, 0x0551fcfc, 0x0541fa1a, 0x0501f01b, - 0x640a6203, 0x592c020c, 0x8c000512, 0x05020004, - 0x592c020c, 0x8400054e, 0x48025a0c, 0x59300407, - 0x90000586, 0x0502000f, 0x592c0811, 0x59140001, - 0x82000500, 0xffff0000, 0x05000004, 0x811800ca, - 0x81c80c00, 0x58040939, 0x48066017, 0x592c0011, - 0x80040480, 0x592c0813, 0x80040480, 0x4802580f, - 0x417a7800, 0x0549fe44, 0x5c028000, 0x5c027800, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, - 0x59900005, 0x81300580, 0x05fa0c00, 0x054dfaee, - 0x05f80bfe, 0x59325809, 0x592c020c, 0x84000540, - 0x48025a0c, 0x05fdf7ba, 0x491bc857, 0x4dd00000, + 0x1c01f000, 0x496fc857, 0x916c0583, 0x05020003, + 0x61201100, 0x051df830, 0x60f00800, 0x0501ff1c, + 0x4a038891, 0x0000ffff, 0x6503900d, 0x05fdfa6f, + 0x640770e8, 0x1c01f000, 0x5c000000, 0x4c000000, + 0x4803c857, 0x59c41080, 0x497b8880, 0x4ce80000, + 0x6059d000, 0x4c080000, 0x0535fb16, 0x5c001000, + 0x5c01d000, 0x59c42892, 0x497b8892, 0x0529fa39, + 0x05020002, 0x1c01f000, 0x61802004, 0x59c418a4, + 0x900c1d0f, 0x900c0580, 0x0500000c, 0x59c41805, + 0x900c1d01, 0x0502000b, 0x59c418a4, 0x900c1d0f, + 0x900c0487, 0x05001003, 0x900c048c, 0x05001003, + 0x80102040, 0x05fe07f2, 0x497b8891, 0x1c01f000, + 0x4c100000, 0x60642000, 0x64078805, 0x0505fcb4, + 0x59c41805, 0x900c1d01, 0x05000005, 0x80102040, + 0x05fe07fa, 0x5c002000, 0x05fdf7f4, 0x5c002000, + 0x05fdf7f0, 0x60080020, 0x46000000, 0x0162c58b, + 0x59c8080b, 0x4807c857, 0x59c8103f, 0x480bc857, + 0x42000000, 0x00112438, 0x0561fdcd, 0x05fdff90, + 0x1c01f000, 0x4803c856, 0x1c01f000, 0x0010119f, + 0x0010119f, 0x0010119f, 0x001011b3, 0x0010119f, + 0x0010119f, 0x0010119f, 0x0010119f, 0x0010119f, + 0x001011b3, 0x0010119f, 0x001011a0, 0x0010119f, + 0x0010119f, 0x0010119f, 0x0010119f, 0x05f9fc76, + 0x900405bb, 0x05fa0c74, 0x592c020e, 0x8c000500, + 0x0500008d, 0x592c1a0b, 0x9004050f, 0x82000400, + 0x0010004b, 0x50001000, 0x50080000, 0x59302015, + 0x4802600c, 0x492e600d, 0x480a600e, 0x480e600f, + 0x48126014, 0x5c025800, 0x1c01f000, 0x9004050f, + 0x82000400, 0x0010004b, 0x50001000, 0x50080000, + 0x592c1a0b, 0x4802600c, 0x492e600d, 0x480a600e, + 0x480e600f, 0x497a6014, 0x05fdf7f3, 0x8c040500, + 0x05020071, 0x82040d00, 0x00000080, 0x0500006e, + 0x0001f1a3, 0x0501fbf5, 0x843c7d4e, 0x0001f1b0, + 0x59307804, 0x823c7d00, 0x01880080, 0x823c7d40, + 0x80000005, 0x59300013, 0x82000500, 0xffff0000, + 0x05000002, 0x843c7d6a, 0x59300015, 0x59301014, + 0x80080580, 0x0502000b, 0x800811c0, 0x05020004, + 0x8c3c050e, 0x05000055, 0x0501f004, 0x592c120c, + 0x8c08051e, 0x05020051, 0x843c7d4a, 0x0501f04f, + 0x480bc857, 0x59300804, 0x82040500, 0x00008080, + 0x82000580, 0x00008080, 0x05020016, 0x592c6001, + 0x58300409, 0x90000503, 0x90000581, 0x05020011, + 0x84040d1e, 0x48066004, 0x59302015, 0x5930001c, + 0x80101480, 0x0500100b, 0x5830020a, 0x41780800, + 0x0539fa53, 0x800810c6, 0x59301814, 0x800c0482, + 0x80100580, 0x05020003, 0x48126014, 0x05fdf7db, + 0x42000000, 0x001123e0, 0x0561fd59, 0x59302015, + 0x59300416, 0x4803c857, 0x8c000514, 0x0502000f, + 0x599c1819, 0x8c0c0512, 0x0500000a, 0x592c0813, + 0x59300017, 0x80040c80, 0x05000005, 0x05001004, + 0x80040000, 0x80140480, 0x05001008, 0x0541ff57, + 0x900c1d41, 0x0501f01f, 0x84000514, 0x48026416, + 0x48126017, 0x4813c857, 0x4c3c0000, 0x0501f928, + 0x5c007800, 0x05020017, 0x5930500f, 0x592c020c, + 0x4803c857, 0x8c00051e, 0x05020004, 0x903c7d60, + 0x5930400e, 0x0501f004, 0x8400051e, 0x48025a0c, + 0x0501f904, 0x50201800, 0x480e600c, 0x4832600d, + 0x4822600e, 0x482a600f, 0x480fc857, 0x4833c857, + 0x4823c857, 0x482bc857, 0x80000580, 0x483e6004, + 0x1c01f000, 0x05f9fbe4, 0x4933c857, 0x4d2c0000, + 0x59900005, 0x81300580, 0x05fa0bdf, 0x0551f81b, + 0x05f80bdd, 0x59325809, 0x4d3c0000, 0x4d400000, + 0x59300004, 0x4803c857, 0x4c000000, 0x053df9c8, + 0x0539feca, 0x5c000000, 0x8c000516, 0x05000014, + 0x82000d00, 0x01000080, 0x05020004, 0x592c0a0e, + 0x8c040506, 0x0502000e, 0x592c0013, 0x4803c857, + 0x4802580b, 0x41780800, 0x600a8000, 0x0525fec0, + 0x4a025c0a, 0x0000ffff, 0x492fc857, 0x0001fba8, + 0x0555fa03, 0x0541fe90, 0x0501f01b, 0x640a6203, + 0x592c020c, 0x8c000512, 0x05020004, 0x592c020c, + 0x8400054e, 0x48025a0c, 0x59300407, 0x90000586, + 0x0502000f, 0x592c0811, 0x59140001, 0x82000500, + 0xffff0000, 0x05000004, 0x811800ca, 0x81c80c00, + 0x58040939, 0x48066017, 0x592c0011, 0x80040480, + 0x592c0813, 0x80040480, 0x4802580f, 0x417a7800, + 0x054dfb17, 0x5c028000, 0x5c027800, 0x5c025800, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x054dffdb, + 0x05f80b9d, 0x59325809, 0x592c020c, 0x84000540, + 0x48025a0c, 0x05fdf7bd, 0x491bc857, 0x4dd00000, 0x4c580000, 0x41780800, 0x8007a0ca, 0x83d3a400, 0x00007600, 0x4a03a005, 0x80000002, 0x05024004, - 0x4c040000, 0x00044e27, 0x5c000800, 0x59d01006, + 0x4c040000, 0x00044e5d, 0x5c000800, 0x59d01006, 0x82080500, 0x00006000, 0x82000580, 0x00006000, 0x05000007, 0x8c08051e, 0x05fc07f5, 0x59d01006, 0x82080500, 0x00006000, 0x05fe07f1, 0x91d3a420, @@ -1202,20 +1241,20 @@ static const uint32_t isp_2500_risc_code[] = { 0x480c2822, 0x59d0000f, 0x59d00810, 0x59d01011, 0x59d01812, 0x48002c23, 0x48042824, 0x48082825, 0x480c2826, 0x6401b006, 0x4a03a005, 0x30000000, - 0x59d00006, 0x1c01f000, 0x42000000, 0x0010e4e1, - 0x055dfd98, 0x600008ec, 0x580410a2, 0x41780800, + 0x59d00006, 0x1c01f000, 0x42000000, 0x00112485, + 0x0561fc77, 0x600008ec, 0x580410a2, 0x41780800, 0x9008050f, 0x8c000506, 0x05020003, 0x81180580, 0x05000006, 0x80040800, 0x80081108, 0x90040587, - 0x05fe07f8, 0x05f9fb89, 0x4a039040, 0x04000000, + 0x05fe07f8, 0x05f9fb28, 0x4a039040, 0x04000000, 0x59c80040, 0x8c000532, 0x05fe07fe, 0x59d0000d, 0x800000e0, 0x59d0100c, 0x82081500, 0x0000ffff, 0x80081540, 0x480b9028, 0x4d2c0000, 0x59325809, - 0x054dfa69, 0x05f80b79, 0x59d02004, 0x592c0208, + 0x054dff56, 0x05f80b18, 0x59d02004, 0x592c0208, 0x82001500, 0x000000ff, 0x9000050f, 0x90000582, 0x05000003, 0xb00805ba, 0x05020004, 0x592c0011, - 0x80102480, 0x05f81b6d, 0x5c025800, 0x9010250f, - 0x90102588, 0x05fa0b69, 0x59c80047, 0x8c000530, - 0x05fa0b66, 0x59d0000b, 0x48039029, 0x800400d6, + 0x80102480, 0x05f81b0c, 0x5c025800, 0x9010250f, + 0x90102588, 0x05fa0b08, 0x59c80047, 0x8c000530, + 0x05fa0b05, 0x59d0000b, 0x48039029, 0x800400d6, 0x40001000, 0x800400dc, 0x80081400, 0x82081540, 0x0400002f, 0x480b9047, 0x59c80047, 0x8c000532, 0x05fe07fe, 0x64079048, 0x59c80048, 0x8c000500, @@ -1224,546 +1263,539 @@ static const uint32_t isp_2500_risc_code[] = { 0x4803c856, 0x80204000, 0x50200000, 0x80000540, 0x05000003, 0x80285040, 0x1c01f000, 0x58300001, 0x80000540, 0x0500000c, 0x4802600d, 0x40006000, - 0x58300208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50004000, 0x802041c0, 0x05f80b3c, 0x80285040, - 0x1c01f000, 0x40005000, 0x1c01f000, 0x00000009, - 0x0000000c, 0x0000000f, 0x00000012, 0x00000015, - 0x00000000, 0x00000000, 0x0000000f, 0x00000000, - 0x00000000, 0x00000000, 0x001012a7, 0x001012a6, - 0x00000000, 0x001012a7, 0x00000000, 0x00000000, - 0x001012a7, 0x001012a6, 0x001012a3, 0x001012a7, - 0x001012a6, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x001012a7, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001012a7, 0x001012a7, 0x001012a7, 0x00000000, - 0x001012a7, 0x00000000, 0x00000000, 0x00000000, - 0x4813c857, 0x492fc857, 0x4933c857, 0x48126014, - 0x592c520b, 0x802851c0, 0x05000076, 0x59300008, - 0x8c000516, 0x0500001e, 0x592c0208, 0x82001500, - 0x000000ff, 0x9000050f, 0x90000582, 0x05000003, - 0xb00805ba, 0x05020003, 0x592c0011, 0x80102480, - 0x801021c0, 0x41781000, 0x0500000e, 0x592c6001, - 0x58300409, 0x58300a0a, 0x90000503, 0x90000580, - 0x05000002, 0x90040c08, 0x40040000, 0x40101000, - 0x41780800, 0x0535fca1, 0x800409c0, 0x05020059, - 0x0501fa86, 0x0500004f, 0x0501f056, 0x59300004, - 0x8c00050e, 0x0500000d, 0x0501fb13, 0x05020051, - 0x592c6001, 0x42004000, 0x001012a4, 0x58300409, - 0x8c000510, 0x0500000f, 0x5830540d, 0x42004000, - 0x001012a5, 0x0501f00b, 0x412c6000, 0x0501f847, - 0x05000008, 0x90240582, 0x05020003, 0x58300011, - 0x80102480, 0x50200000, 0x80004540, 0x0500003d, - 0x50200000, 0x80000540, 0x0500000b, 0x80301400, - 0x58080002, 0x80102480, 0x0500101d, 0x801021c0, - 0x05000009, 0x80285040, 0x05000032, 0x80204000, - 0x05fdf7f4, 0x58300001, 0x80006540, 0x0500002d, - 0x05fdf7e7, 0x80285040, 0x0500002a, 0x80204000, - 0x50200000, 0x80000540, 0x05020009, 0x58300001, - 0x80006540, 0x05000023, 0x58300208, 0x90004d0f, - 0x82244400, 0x001012ac, 0x50204000, 0x592c020c, - 0x8400051e, 0x48025a0c, 0x0501f012, 0x80102080, - 0x80102000, 0x48126012, 0x4813c857, 0x58080802, - 0x40100000, 0x80042480, 0x05f81aa4, 0x58080000, - 0x58081801, 0x80102400, 0x48126010, 0x480e6011, - 0x4813c857, 0x592c020c, 0x8400055e, 0x48025a0c, - 0x4833c857, 0x4823c857, 0x482bc857, 0x4832600d, - 0x4822600e, 0x482a600f, 0x80000580, 0x0501f002, - 0x90000541, 0x1c01f000, 0x58300208, 0x90004d0f, - 0x82244400, 0x001012ac, 0x82000500, 0x000000ff, - 0x900005a9, 0x05020016, 0x50204000, 0x592c040d, - 0x80000540, 0x05f80a85, 0x90000c82, 0x0500100e, - 0x58300001, 0x80006540, 0x05f80a80, 0x58300208, - 0x9000050f, 0x82000400, 0x001012ac, 0x50004000, - 0x40040000, 0x800409c0, 0x05000005, 0x90040c85, - 0x05fe17f4, 0x80204400, 0x80000580, 0x1c01f000, - 0x4c5c0000, 0x59e4b800, 0x485fc857, 0x905c051f, - 0x05fa0a6e, 0x825c0500, 0x000000e0, 0x05f80a6b, - 0x8c5c050e, 0x05020807, 0x8c5c050c, 0x05020809, - 0x8c5c050a, 0x05020900, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4a03c800, 0x00000080, 0x1c01f000, - 0x4d2c0000, 0x42007800, 0x0010e4e5, 0x583c0003, - 0x583c0804, 0x80040540, 0x05000037, 0x42000800, - 0x0010e388, 0x50065800, 0x592c0002, 0x90000580, - 0x05000031, 0x59e40050, 0x59e40852, 0x80040480, - 0x82000500, 0xfffffc00, 0x05020005, 0x59e40050, - 0x59e40851, 0x80040800, 0x80040480, 0x82000c80, - 0x00000400, 0x59e40050, 0x80041400, 0x480bc857, - 0x50080000, 0x58080801, 0x80040540, 0x0500001e, - 0x480bc857, 0x480a5803, 0x583c1009, 0x583c000a, - 0x80080580, 0x05020005, 0x583c0000, 0x84000550, - 0x48007800, 0x41781000, 0x82080400, 0x00001000, - 0x4803c857, 0x48007809, 0x583c0003, 0x80081400, - 0x480bc857, 0x583c0804, 0x64025801, 0x4a025809, - 0x001013bc, 0x480a5807, 0x48065808, 0x59e40053, - 0x800000c4, 0x48025805, 0x412c1000, 0x492fc857, - 0x0001f821, 0x5c025800, 0x6503c800, 0x1c01f000, - 0x42007800, 0x0010e388, 0x503c7800, 0x4a007802, - 0x00000100, 0x42007800, 0x0010e4e5, 0x583c0000, - 0x84000552, 0x48007800, 0x583c100c, 0x480bc857, - 0x80081000, 0x4808780c, 0x583c180b, 0x800c19c0, - 0x05000013, 0x90080503, 0x05020011, 0x583c0007, - 0x4803c857, 0x583c2008, 0x4813c857, 0x80102000, - 0x80100580, 0x05020002, 0x41782000, 0x48107808, - 0x400c0000, 0x80080580, 0x05020005, 0x4978780c, - 0x60041800, 0x60a01100, 0x0519fbfe, 0x1c01f000, - 0x42007800, 0x0010e4e5, 0x4d2c0000, 0x4c5c0000, - 0x4c600000, 0x4030b800, 0x583cc000, 0x4a00b802, - 0x00000100, 0x583c2015, 0x80100800, 0x583c0013, - 0x80040580, 0x05020003, 0x8460c554, 0x41780800, - 0x48047815, 0x8c600502, 0x05f809e8, 0x8460c502, - 0x48607800, 0x42000000, 0x0010e389, 0x50000000, - 0x80300580, 0x05fa09e1, 0x583c081e, 0x800409c0, - 0x05000008, 0x583c001f, 0x80040580, 0x05020005, - 0x4978781f, 0x60081800, 0x60a01100, 0x0519fbd9, - 0x8c600508, 0x050e0c69, 0x5c00c000, 0x5c00b800, - 0x5c025800, 0x1c01f000, 0x4d2c0000, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x42000800, 0x0010e389, - 0x50065800, 0x4a025809, 0x001013e0, 0x6000c002, - 0x4200b800, 0x0010e4e5, 0x585cc800, 0x4867c857, - 0x8d0c052a, 0x0502000f, 0x40ee5800, 0x492fc857, - 0x4a025802, 0x00000100, 0x585c0014, 0x80000000, - 0x90000503, 0x4800b814, 0x4a025809, 0x0010306e, - 0x585cc017, 0x8260c500, 0x000000ff, 0x05f809b3, - 0x4c580000, 0x61e8b001, 0x8058b040, 0x05f809af, - 0x8c640502, 0x0500000b, 0x8d0c052a, 0x05fa09ab, - 0x4c580000, 0x4c600000, 0x0001f9b8, 0x585cc800, - 0x5c00c000, 0x5c00b000, 0x485bc857, 0x05fdf7f3, - 0x5c00b000, 0x4200b800, 0x0010e4e5, 0x8464cd42, - 0x4864b800, 0x592c0002, 0x90000580, 0x05f8099b, - 0x585c100d, 0x585c0018, 0x80081400, 0x80600400, - 0x4800b818, 0x585c0014, 0x800001c0, 0x05020002, - 0x4978b818, 0x8060c0c4, 0x492fc857, 0x480bc857, - 0x4863c857, 0x480a5803, 0x585c001d, 0x4803c857, - 0x585c180e, 0x800c1400, 0x480a5807, 0x4808b81b, - 0x80600400, 0x4800b81d, 0x4803c857, 0x800c0400, - 0x4800b819, 0x585c0810, 0x4807c857, 0x4803c857, - 0x80040d80, 0x05020004, 0x4978b81d, 0x585c080e, - 0x4804b819, 0x585c080e, 0x80040580, 0x82000500, - 0x000003ff, 0x05020004, 0x585c001f, 0x80000000, - 0x4800b81f, 0x585c080f, 0x48065808, 0x4807c857, - 0x64025801, 0x48625805, 0x412c1000, 0x0001f821, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c025800, - 0x1c01f000, 0x6483c800, 0x055dfb5f, 0x59e40000, - 0x1c01f000, 0x60001020, 0x80081040, 0x05000022, - 0x055dfc83, 0x05fc07fd, 0x59800801, 0x82040d00, - 0xfff006ff, 0x82040d40, 0x000ff900, 0x48070001, - 0x59e00002, 0x8c00051e, 0x05020016, 0x605c00f4, - 0x50001000, 0x82081500, 0x03f00000, 0x82080580, - 0x00800000, 0x0500000f, 0x61901000, 0x80081040, - 0x0500000c, 0x59800881, 0x8c040514, 0x05fc07fc, - 0x82040500, 0x00000180, 0x82000580, 0x00000180, - 0x05020004, 0x59800080, 0x84000540, 0x48030080, - 0x90000541, 0x64030000, 0x1c01f000, 0x61880809, - 0x055dfc68, 0x05020003, 0x4803c856, 0x055dfc6c, - 0x59800802, 0x4807c857, 0x8c040520, 0x05000007, - 0x64030000, 0x60101020, 0x50080000, 0x8400054c, - 0x44001000, 0x0501f000, 0x82040500, 0x00001084, - 0x05fa092a, 0x8c040510, 0x05000006, 0x42000000, - 0x0010e4e2, 0x055dfb27, 0x4a030002, 0x00000100, - 0x8c040522, 0x0500002d, 0x59e00002, 0x8c00051e, - 0x0502002a, 0x601c20f6, 0x50102800, 0x4817c857, - 0x605c00f4, 0x50003000, 0x82180500, 0x000f0000, - 0x40003800, 0x40144000, 0x821c0580, 0x00020000, - 0x05020002, 0x902041c0, 0x8c18050c, 0x05000002, - 0x842041c0, 0x82204500, 0x000000ff, 0x90204401, - 0x8c200510, 0x05000005, 0x42000000, 0x0010e4e3, - 0x055dfb08, 0x61fc4001, 0x42001800, 0xffffff00, - 0x8c18050c, 0x05000003, 0x840c19c0, 0x842041c0, - 0x821c0580, 0x00020000, 0x05020003, 0x900c19c0, - 0x902041c0, 0x800c0505, 0x80200540, 0x44002000, - 0x4a030002, 0x00020000, 0x64030000, 0x1c01f000, - 0x4d2c0000, 0x64007000, 0x82040d00, 0x43200f80, - 0x05fa08ee, 0x58380008, 0x4803c00f, 0x583a5807, - 0x592c0801, 0x800409c0, 0x0500000e, 0x592c0000, - 0x48000800, 0x58380006, 0x812c0580, 0x05020002, - 0x48047006, 0x48047007, 0x60042000, 0x0559fe40, - 0x05f808de, 0x05f9fc95, 0x5c025800, 0x05f9f54d, - 0x4a0370e4, 0x00003000, 0x054dfc4b, 0x583a5807, - 0x592c0000, 0x48007007, 0x800001c0, 0x05020002, - 0x49787006, 0x05f9fc89, 0x5c025800, 0x42007000, - 0x000211a7, 0x0001f036, 0x4803c856, 0x4c3c0000, - 0x4d2c0000, 0x4d300000, 0x5830000a, 0x80025d40, - 0x0500001a, 0x592e600c, 0x4c300000, 0x054dfc4b, - 0x5c006000, 0x05f808c1, 0x58300002, 0x82000580, - 0x00000100, 0x05000003, 0x640a5a0a, 0x492fc857, - 0x4c300000, 0x0001fb82, 0x5c025800, 0x05f9fc6f, - 0x0005ffdc, 0x59c80000, 0x82000540, 0x00001200, - 0x48039000, 0x850e1d1c, 0x5c026000, 0x5c025800, - 0x5c007800, 0x1c01f000, 0x40325800, 0x05f9fc63, - 0x05fdf7fa, 0x59300025, 0x48025814, 0x59300026, - 0x48025815, 0x59300a23, 0x8c04050c, 0x05020007, - 0x59300020, 0x59300a21, 0x800408e0, 0x80040540, - 0x5930081f, 0x0501f006, 0x59300820, 0x59300221, - 0x800408e0, 0x80040d40, 0x5930001f, 0x9c0001c0, - 0x9c0409c0, 0x48025816, 0x48065817, 0x1c01f000, - 0x592c0001, 0x80003540, 0x05f80890, 0x58180a08, - 0x82040d00, 0x000000ff, 0xb004058a, 0x05fa088b, - 0x592c1015, 0x592c1a16, 0x58182209, 0x592c2c16, - 0x592c0017, 0x800000e0, 0x80142d40, 0x592c0017, - 0x80003920, 0x58184409, 0x5818020a, 0x8c20050e, - 0x05fa087e, 0x800048e0, 0x80244d40, 0x5818000b, - 0x4802602c, 0x8c20050c, 0x05020009, 0x901c51c0, - 0x841401c0, 0x82003d00, 0x0000ffff, 0x80140120, - 0x80280540, 0x9c0029c0, 0x0501f003, 0x9c1429c0, - 0x841c39c0, 0x480a601f, 0x480e6020, 0x48126421, - 0x48126221, 0x48166022, 0x481e6423, 0x48226223, - 0x48266024, 0x1c01f000, 0x4c5c0000, 0x592c0001, - 0x80006540, 0x05f80861, 0x58300a08, 0x82040d00, - 0x000000ff, 0xb004058a, 0x05fa085c, 0x58302c09, - 0x8c140506, 0x58300209, 0x05000002, 0x80080400, - 0x48026421, 0x48026221, 0x5830020a, 0x800008e0, - 0x80040540, 0x48026024, 0x8c14050a, 0x05020004, - 0x592c0015, 0x80080400, 0x4802601f, 0x5830320a, - 0x8c140510, 0x0502000c, 0x90142d03, 0x90140582, - 0x0500000e, 0x90140581, 0x05000007, 0x40080800, - 0x90180408, 0x40001000, 0x0535f9d8, 0x40042000, - 0x0501f006, 0x40080800, 0x40181000, 0x4004b800, - 0x0535f9d2, 0x40042000, 0x4c100000, 0x05fdfda7, - 0x05f80836, 0x5c002000, 0x50200000, 0x80004540, - 0x0500005e, 0x58300a08, 0x82040d00, 0x000000ff, - 0xb004058a, 0x05020006, 0x80204000, 0x58300409, - 0x8c000510, 0x05000002, 0x80204000, 0x50200000, + 0x58300208, 0x9000050f, 0x82000400, 0x0010004b, + 0x50004000, 0x802041c0, 0x05f80adb, 0x80285040, + 0x1c01f000, 0x40005000, 0x1c01f000, 0x4813c857, + 0x492fc857, 0x4933c857, 0x48126014, 0x592c520b, + 0x802851c0, 0x05000076, 0x59300008, 0x8c000516, + 0x0500001e, 0x592c0208, 0x82001500, 0x000000ff, + 0x9000050f, 0x90000582, 0x05000003, 0xb00805ba, + 0x05020003, 0x592c0011, 0x80102480, 0x801021c0, + 0x41781000, 0x0500000e, 0x592c6001, 0x58300409, + 0x58300a0a, 0x90000503, 0x90000580, 0x05000002, + 0x90040c08, 0x40040000, 0x40101000, 0x41780800, + 0x0539f8e7, 0x800409c0, 0x05020059, 0x0501fa85, + 0x0500004f, 0x0501f056, 0x59300004, 0x8c00050e, + 0x0500000d, 0x0501fb11, 0x05020051, 0x592c6001, + 0x42004000, 0x00100043, 0x58300409, 0x8c000510, + 0x0500000f, 0x5830540d, 0x42004000, 0x00100044, + 0x0501f00b, 0x412c6000, 0x0501f847, 0x05000008, + 0x90240582, 0x05020003, 0x58300011, 0x80102480, + 0x50200000, 0x80004540, 0x0500003d, 0x50200000, 0x80000540, 0x0500000b, 0x80301400, 0x58080002, 0x80102480, 0x0500101d, 0x801021c0, 0x05000009, - 0x80285040, 0x05000049, 0x80204000, 0x05fdf7f4, - 0x58300001, 0x80006540, 0x05000044, 0x05fdf7df, - 0x80285040, 0x05000041, 0x80204000, 0x50200000, + 0x80285040, 0x05000032, 0x80204000, 0x05fdf7f4, + 0x58300001, 0x80006540, 0x0500002d, 0x05fdf7e7, + 0x80285040, 0x0500002a, 0x80204000, 0x50200000, 0x80000540, 0x05020009, 0x58300001, 0x80006540, - 0x0500003a, 0x58300208, 0x90004d0f, 0x82244400, - 0x001012ac, 0x50204000, 0x592c020c, 0x8400051e, - 0x48025a0c, 0x0501f010, 0x80102080, 0x80102000, + 0x05000023, 0x58300208, 0x90004d0f, 0x82244400, + 0x0010004b, 0x50204000, 0x592c020c, 0x8400051e, + 0x48025a0c, 0x0501f012, 0x80102080, 0x80102000, 0x48126012, 0x4813c857, 0x58080802, 0x40100000, - 0x80042480, 0x05f41ffd, 0x58080000, 0x80102400, - 0x48126010, 0x4813c857, 0x592c020c, 0x8400055e, - 0x48025a0c, 0x59300008, 0x8400052c, 0x48026008, - 0x592c1001, 0x58080409, 0x90000503, 0x90000581, - 0x05020012, 0x599c0019, 0x8c00050c, 0x0502000f, - 0x90280581, 0x05020003, 0x59300812, 0x0501f007, - 0x80280840, 0x5808020a, 0x40001000, 0x0535f97b, - 0x59300012, 0x80040c00, 0x48066013, 0x59300008, - 0x8400056c, 0x48026008, 0x592c1001, 0x58080409, - 0x8c000510, 0x05000003, 0x0501f822, 0x05000003, - 0x80000580, 0x0501f002, 0x90000541, 0x5c00b800, - 0x1c01f000, 0x592c6801, 0x803469c0, 0x05000017, - 0x58347805, 0x58347409, 0x90380503, 0x8c380510, - 0x0c020006, 0x0c01f001, 0x0010161d, 0x0010161a, - 0x00101620, 0x00101622, 0x00101622, 0x00101622, - 0x0010161d, 0x0010161d, 0x803c00c6, 0x80102400, - 0x0501f004, 0x803c00c6, 0x80102480, 0x05001003, - 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x4c040000, 0x4c080000, 0x4c600000, 0x592c0208, - 0x82000500, 0x000000ff, 0xb00005a8, 0x05000007, - 0x90000582, 0x05000005, 0x90000598, 0x05000003, - 0x90000588, 0x05020037, 0x592c6801, 0x803469c0, - 0x05000034, 0x58340208, 0x82000500, 0x000000ff, - 0xb000058a, 0x0502002f, 0x5834740d, 0x592cc20b, - 0x40380000, 0x8060c480, 0x42007800, 0x001012a5, - 0x0501f82a, 0x05fe07ff, 0x40607000, 0x503c0000, - 0x80341400, 0x805c00c6, 0x58088002, 0x80408480, - 0x0500101b, 0x0500001a, 0x58088800, 0x80448c00, - 0x58089001, 0x90489440, 0x59300827, 0x800409c0, - 0x05000018, 0x4844080d, 0x4848080e, 0x4840080f, - 0x4978080c, 0x80380040, 0x05000003, 0x05020813, - 0x4838080c, 0x59300827, 0x4834080a, 0x483c080b, - 0x503c0000, 0x48000809, 0x90000541, 0x5c00c000, - 0x5c001000, 0x5c000800, 0x1c01f000, 0x58088002, - 0x80400106, 0x805cbc80, 0x0501f804, 0x05fe07dc, - 0x80000580, 0x05fdf7f6, 0x4803c856, 0x803c7800, - 0x503c0000, 0x80000540, 0x05000003, 0x80387040, - 0x1c01f000, 0x58340001, 0x80006d40, 0x0500000a, - 0x58340208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50007800, 0x803c79c0, 0x05f40f60, 0x80387040, - 0x1c01f000, 0x40007000, 0x1c01f000, 0x802850c6, - 0x59306827, 0x58340009, 0x5834100a, 0x5834180b, - 0x5834200c, 0x58344810, 0x80087c00, 0x583c0002, - 0x80284480, 0x0500100f, 0x80102040, 0x0500001f, - 0x80244c80, 0x0500001d, 0x40205000, 0x800c1800, - 0x500c0000, 0x80000d40, 0x05fe07f4, 0x58081001, - 0x42001800, 0x001012a3, 0x60240000, 0x05fdf7ef, - 0x80204080, 0x80204000, 0x4810680c, 0x583c0000, - 0x80282c00, 0x583c3001, 0x90183440, 0x500c0800, - 0x48046809, 0x4808680a, 0x480c680b, 0x4810680c, - 0x4814680d, 0x4818680e, 0x4820680f, 0x48246810, - 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x4d2c0000, 0x0001f817, 0x05f40f2c, 0x412c1000, - 0x5c025800, 0x4a001009, 0x000201cd, 0x9008040a, - 0x48001003, 0x0001f1c3, 0x4d2c0000, 0x40325800, - 0x05f9fadb, 0x5c025800, 0x1c01f000, 0x4807c857, - 0x05f5ff1e, 0x42001000, 0x001105e7, 0x4a001003, - 0x001105f1, 0x4a001009, 0x000201cd, 0x4978100a, - 0x1c01f000, 0x59e00017, 0x8c000500, 0x1c01f000, - 0x0001f9d6, 0x4d040000, 0x4c640000, 0x4c600000, - 0x40120800, 0x400cc800, 0x4014c000, 0x0501f01a, - 0x59e00017, 0x8c00050c, 0x05020005, 0x59a808a0, - 0x58040003, 0x8c000500, 0x0500000d, 0x4c080000, - 0x59a8109f, 0x50080000, 0x84000542, 0x44001000, - 0x5c001000, 0x59e00017, 0x8c00050c, 0x05fe07fe, - 0x58040003, 0x8c000500, 0x05fe07fb, 0x4d040000, - 0x4c640000, 0x4c600000, 0x5804c800, 0x58060801, - 0x5804c002, 0x4a03b805, 0x20000000, 0x59dc0006, + 0x80042480, 0x05f81a6c, 0x58080000, 0x58081801, + 0x80102400, 0x48126010, 0x480e6011, 0x4813c857, + 0x592c020c, 0x8400055e, 0x48025a0c, 0x4833c857, + 0x4823c857, 0x482bc857, 0x4832600d, 0x4822600e, + 0x482a600f, 0x80000580, 0x0501f002, 0x90000541, + 0x1c01f000, 0x58300208, 0x90004d0f, 0x82244400, + 0x0010004b, 0x82000500, 0x000000ff, 0x900005a9, + 0x05020016, 0x50204000, 0x592c040d, 0x80000540, + 0x05f80a4d, 0x90000c82, 0x0500100e, 0x58300001, + 0x80006540, 0x05f80a48, 0x58300208, 0x9000050f, + 0x82000400, 0x0010004b, 0x50004000, 0x40040000, + 0x800409c0, 0x05000005, 0x90040c85, 0x05fe17f4, + 0x80204400, 0x80000580, 0x1c01f000, 0x4c5c0000, + 0x59e4b800, 0x485fc857, 0x905c051f, 0x05fa0a36, + 0x825c0500, 0x000000e0, 0x05f80a33, 0x8c5c050e, + 0x05020807, 0x8c5c050c, 0x05020809, 0x8c5c050a, + 0x050208fc, 0x5c00b800, 0x1c01f000, 0x4803c856, + 0x4a03c800, 0x00000080, 0x1c01f000, 0x4d2c0000, + 0x42007800, 0x00112489, 0x583c0003, 0x583c0804, + 0x80040540, 0x05000033, 0x42000800, 0x00112323, + 0x50065800, 0x592c0002, 0x90000580, 0x0500002d, + 0x59e40050, 0x59e40852, 0x80040480, 0x82000500, + 0xfffffc00, 0x05020005, 0x59e40050, 0x59e40851, + 0x80040800, 0x80040480, 0x82000c80, 0x00000400, + 0x59e40050, 0x80041400, 0x480bc857, 0x480bc857, + 0x480a5803, 0x583c1009, 0x583c000a, 0x80080580, + 0x05020005, 0x583c0000, 0x84000550, 0x48007800, + 0x41781000, 0x82080400, 0x00001000, 0x4803c857, + 0x48007809, 0x583c0003, 0x80081400, 0x480bc857, + 0x583c0804, 0x64025801, 0x4a025809, 0x0010142b, + 0x480a5807, 0x48065808, 0x59e40053, 0x800000c4, + 0x48025805, 0x412c1000, 0x492fc857, 0x0001f829, + 0x5c025800, 0x6503c800, 0x1c01f000, 0x42007800, + 0x00112323, 0x503c7800, 0x4a007802, 0x00000100, + 0x42007800, 0x00112489, 0x583c0000, 0x84000552, + 0x48007800, 0x583c100c, 0x480bc857, 0x80081000, + 0x4808780c, 0x583c180b, 0x800c19c0, 0x05000013, + 0x90080503, 0x05020011, 0x583c0007, 0x4803c857, + 0x583c2008, 0x4813c857, 0x80102000, 0x80100580, + 0x05020002, 0x41782000, 0x48107808, 0x400c0000, + 0x80080580, 0x05020005, 0x4978780c, 0x60041800, + 0x60a01100, 0x0519fd2c, 0x1c01f000, 0x42007800, + 0x00112489, 0x4d2c0000, 0x4c5c0000, 0x4c600000, + 0x4030b800, 0x583cc000, 0x4a00b802, 0x00000100, + 0x583c2015, 0x80100800, 0x583c0013, 0x80040580, + 0x05020003, 0x8460c554, 0x41780800, 0x48047815, + 0x8c600502, 0x05f809b4, 0x8460c502, 0x48607800, + 0x42000000, 0x00112324, 0x50000000, 0x80300580, + 0x05fa09ad, 0x583c081e, 0x800409c0, 0x05000008, + 0x583c001f, 0x80040580, 0x05020005, 0x4978781f, + 0x60081800, 0x60a01100, 0x0519fd07, 0x8c600508, + 0x050e0ca2, 0x5c00c000, 0x5c00b800, 0x5c025800, + 0x1c01f000, 0x4d2c0000, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x42000800, 0x00112324, 0x50065800, + 0x4a025809, 0x0010144f, 0x6000c002, 0x4200b800, + 0x00112489, 0x585cc800, 0x4867c857, 0x8d0c052a, + 0x0502000f, 0x40ee5800, 0x492fc857, 0x4a025802, + 0x00000100, 0x585c0014, 0x80000000, 0x90000503, + 0x4800b814, 0x4a025809, 0x00103116, 0x585cc017, + 0x8260c500, 0x000000ff, 0x05f8097f, 0x4c580000, + 0x61e8b001, 0x8058b040, 0x05f8097b, 0x8c640502, + 0x0500000b, 0x8d0c052a, 0x05fa0977, 0x4c580000, + 0x4c600000, 0x0001f9c0, 0x585cc800, 0x5c00c000, + 0x5c00b000, 0x485bc857, 0x05fdf7f3, 0x5c00b000, + 0x4200b800, 0x00112489, 0x8464cd42, 0x4864b800, + 0x592c0002, 0x90000580, 0x05f80967, 0x585c100d, + 0x585c0018, 0x80081400, 0x80600400, 0x4800b818, + 0x585c0014, 0x800001c0, 0x05020002, 0x4978b818, + 0x8060c0c4, 0x492fc857, 0x480bc857, 0x4863c857, + 0x480a5803, 0x585c001d, 0x4803c857, 0x585c180e, + 0x800c1400, 0x480a5807, 0x4808b81b, 0x80600400, + 0x4800b81d, 0x4803c857, 0x800c0400, 0x4800b819, + 0x585c0810, 0x4807c857, 0x4803c857, 0x80040d80, + 0x05020004, 0x4978b81d, 0x585c080e, 0x4804b819, + 0x585c080e, 0x80040580, 0x82000500, 0x000003ff, + 0x05020004, 0x585c001f, 0x80000000, 0x4800b81f, + 0x585c080f, 0x48065808, 0x4807c857, 0x64025801, + 0x48625805, 0x412c1000, 0x0001f829, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c025800, 0x1c01f000, + 0x6483c800, 0x0561fa6b, 0x59e40000, 0x1c01f000, + 0x60001020, 0x80081040, 0x05000022, 0x0561fb8f, + 0x05fc07fd, 0x59800801, 0x82040d00, 0xfff006ff, + 0x82040d40, 0x000ff900, 0x48070001, 0x59e00002, + 0x8c00051e, 0x05020016, 0x605c00f4, 0x50001000, + 0x82081500, 0x03f00000, 0x82080580, 0x00800000, + 0x0500000f, 0x61901000, 0x80081040, 0x0500000c, + 0x59800881, 0x8c040514, 0x05fc07fc, 0x82040500, + 0x00000180, 0x82000580, 0x00000180, 0x05020004, + 0x59800080, 0x84000540, 0x48030080, 0x90000541, + 0x64030000, 0x1c01f000, 0x61880809, 0x0561fb74, + 0x05020003, 0x4803c856, 0x0561fb78, 0x59800802, + 0x4807c857, 0x8c040520, 0x05000007, 0x64030000, + 0x60101020, 0x50080000, 0x8400054c, 0x44001000, + 0x0501f000, 0x82040500, 0x00001084, 0x05fa08f6, + 0x8c040510, 0x05000006, 0x42000000, 0x00112486, + 0x0561fa33, 0x4a030002, 0x00000100, 0x8c040522, + 0x0500002d, 0x59e00002, 0x8c00051e, 0x0502002a, + 0x601c20f6, 0x50102800, 0x4817c857, 0x605c00f4, + 0x50003000, 0x82180500, 0x000f0000, 0x40003800, + 0x40144000, 0x821c0580, 0x00020000, 0x05020002, + 0x902041c0, 0x8c18050c, 0x05000002, 0x842041c0, + 0x82204500, 0x000000ff, 0x90204401, 0x8c200510, + 0x05000005, 0x42000000, 0x00112487, 0x0561fa14, + 0x61fc4001, 0x42001800, 0xffffff00, 0x8c18050c, + 0x05000003, 0x840c19c0, 0x842041c0, 0x821c0580, + 0x00020000, 0x05020003, 0x900c19c0, 0x902041c0, + 0x800c0505, 0x80200540, 0x44002000, 0x4a030002, + 0x00020000, 0x64030000, 0x1c01f000, 0x4d2c0000, + 0x64007000, 0x82040d00, 0x43200f80, 0x05fa08ba, + 0x58380008, 0x4803c00f, 0x583a5807, 0x592c0801, + 0x800409c0, 0x0500000e, 0x592c0000, 0x48000800, + 0x58380006, 0x812c0580, 0x05020002, 0x48047006, + 0x48047007, 0x60042000, 0x055dfd1b, 0x05f808aa, + 0x05f9fc5d, 0x5c025800, 0x05f9f540, 0x4a0370e4, + 0x00003000, 0x0551f978, 0x59a8049f, 0x84000502, + 0x4803549f, 0x583a5807, 0x592c0000, 0x48007007, + 0x800001c0, 0x05020002, 0x49787006, 0x05f9fc4e, + 0x5c025800, 0x42007000, 0x000211e8, 0x0001f03e, + 0x4803c856, 0x4c3c0000, 0x4d2c0000, 0x4d300000, + 0x5830000a, 0x80025d40, 0x0500001a, 0x592e600c, + 0x4c300000, 0x0551f975, 0x5c006000, 0x05f8088a, + 0x58300002, 0x82000580, 0x00000100, 0x05000003, + 0x640a5a0a, 0x492fc857, 0x4c300000, 0x0001fba8, + 0x5c025800, 0x05f9fc34, 0x0009f810, 0x59c80000, + 0x82000540, 0x00001200, 0x48039000, 0x850e1d1c, + 0x5c026000, 0x5c025800, 0x5c007800, 0x1c01f000, + 0x40325800, 0x05f9fc28, 0x05fdf7fa, 0x59300025, + 0x48025814, 0x59300026, 0x48025815, 0x59300a23, + 0x8c04050c, 0x05020007, 0x59300020, 0x59300a21, + 0x800408e0, 0x80040540, 0x5930081f, 0x0501f006, + 0x59300820, 0x59300221, 0x800408e0, 0x80040d40, + 0x5930001f, 0x9c0001c0, 0x9c0409c0, 0x48025816, + 0x48065817, 0x1c01f000, 0x592c0001, 0x80003540, + 0x05f80859, 0x58180a08, 0x82040d00, 0x000000ff, + 0xb004058a, 0x05fa0854, 0x592c1015, 0x592c1a16, + 0x58182209, 0x592c2c16, 0x592c0017, 0x800000e0, + 0x80142d40, 0x592c0017, 0x80003920, 0x58184409, + 0x5818020a, 0x8c20050e, 0x05fa0847, 0x800048e0, + 0x80244d40, 0x5818000b, 0x4802602c, 0x8c20050c, + 0x05020009, 0x901c51c0, 0x841401c0, 0x82003d00, + 0x0000ffff, 0x80140120, 0x80280540, 0x9c0029c0, + 0x0501f003, 0x9c1429c0, 0x841c39c0, 0x480a601f, + 0x480e6020, 0x48126421, 0x48126221, 0x48166022, + 0x481e6423, 0x48226223, 0x48266024, 0x1c01f000, + 0x4c5c0000, 0x592c0001, 0x80006540, 0x05f8082a, + 0x58300a08, 0x82040d00, 0x000000ff, 0xb004058a, + 0x05fa0825, 0x58302c09, 0x8c140506, 0x58300209, + 0x05000002, 0x80080400, 0x48026421, 0x48026221, + 0x5830020a, 0x800008e0, 0x80040540, 0x48026024, + 0x8c14050a, 0x05020004, 0x592c0015, 0x80080400, + 0x4802601f, 0x5830320a, 0x8c140510, 0x0502000c, + 0x90142d03, 0x90140582, 0x0500000e, 0x90140581, + 0x05000007, 0x40080800, 0x90180408, 0x40001000, + 0x0535fe1f, 0x40042000, 0x0501f006, 0x40080800, + 0x40181000, 0x4004b800, 0x0535fe19, 0x40042000, + 0x4c100000, 0x05fdfda8, 0x05f40fff, 0x5c002000, + 0x50200000, 0x80004540, 0x0500005d, 0x58300a08, + 0x82040d00, 0x000000ff, 0xb004058a, 0x05020006, + 0x80204000, 0x58300409, 0x8c000510, 0x05000002, + 0x80204000, 0x50200000, 0x80000540, 0x0500000b, + 0x80301400, 0x58080002, 0x80102480, 0x0500101d, + 0x801021c0, 0x05000009, 0x80285040, 0x05000048, + 0x80204000, 0x05fdf7f4, 0x58300001, 0x80006540, + 0x05000043, 0x05fdf7df, 0x80285040, 0x05000040, + 0x80204000, 0x50200000, 0x80000540, 0x05020009, + 0x58300001, 0x80006540, 0x05000039, 0x58300208, + 0x90004d0f, 0x82244400, 0x0010004b, 0x50204000, + 0x592c020c, 0x8400051e, 0x48025a0c, 0x0501f010, + 0x80102080, 0x80102000, 0x48126012, 0x4813c857, + 0x58080802, 0x40100000, 0x80042480, 0x05f41fc6, + 0x58080000, 0x80102400, 0x48126010, 0x4813c857, + 0x592c020c, 0x8400055e, 0x48025a0c, 0x59300008, + 0x8400052c, 0x48026008, 0x592c1001, 0x58080409, + 0x90000503, 0x90000581, 0x05020011, 0x0561fa77, + 0x0502000f, 0x90280581, 0x05020003, 0x59300812, + 0x0501f007, 0x80280840, 0x5808020a, 0x40001000, + 0x0535fdc3, 0x59300012, 0x80040c00, 0x48066013, + 0x59300008, 0x8400056c, 0x48026008, 0x592c1001, + 0x58080409, 0x8c000510, 0x05000003, 0x0501f822, + 0x05000003, 0x80000580, 0x0501f002, 0x90000541, + 0x5c00b800, 0x1c01f000, 0x592c6801, 0x803469c0, + 0x05000017, 0x58347805, 0x58347409, 0x90380503, + 0x8c380510, 0x0c020006, 0x0c01f001, 0x0010168e, + 0x0010168b, 0x00101691, 0x00101693, 0x00101693, + 0x00101693, 0x0010168e, 0x0010168e, 0x803c00c6, + 0x80102400, 0x0501f004, 0x803c00c6, 0x80102480, + 0x05001003, 0x80000580, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x4c040000, 0x4c080000, 0x4c600000, + 0x592c0208, 0x82000500, 0x000000ff, 0xb00005a8, + 0x05000007, 0x90000582, 0x05000005, 0x90000598, + 0x05000003, 0x90000588, 0x05020037, 0x592c6801, + 0x803469c0, 0x05000034, 0x58340208, 0x82000500, + 0x000000ff, 0xb000058a, 0x0502002f, 0x5834740d, + 0x592cc20b, 0x40380000, 0x8060c480, 0x42007800, + 0x00100044, 0x0501f82a, 0x05fe07ff, 0x40607000, + 0x503c0000, 0x80341400, 0x805c00c6, 0x58088002, + 0x80408480, 0x0500101b, 0x0500001a, 0x58088800, + 0x80448c00, 0x58089001, 0x90489440, 0x59300827, + 0x800409c0, 0x05000018, 0x4844080d, 0x4848080e, + 0x4840080f, 0x4978080c, 0x80380040, 0x05000003, + 0x05020813, 0x4838080c, 0x59300827, 0x4834080a, + 0x483c080b, 0x503c0000, 0x48000809, 0x90000541, + 0x5c00c000, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x58088002, 0x80400106, 0x805cbc80, 0x0501f804, + 0x05fe07dc, 0x80000580, 0x05fdf7f6, 0x4803c856, + 0x803c7800, 0x503c0000, 0x80000540, 0x05000003, + 0x80387040, 0x1c01f000, 0x58340001, 0x80006d40, + 0x0500000a, 0x58340208, 0x9000050f, 0x82000400, + 0x0010004b, 0x50007800, 0x803c79c0, 0x05f40f2a, + 0x80387040, 0x1c01f000, 0x40007000, 0x1c01f000, + 0x802850c6, 0x59306827, 0x58340009, 0x5834100a, + 0x5834180b, 0x5834200c, 0x58344810, 0x80087c00, + 0x583c0002, 0x80284480, 0x0500100f, 0x80102040, + 0x0500001f, 0x80244c80, 0x0500001d, 0x40205000, + 0x800c1800, 0x500c0000, 0x80000d40, 0x05fe07f4, + 0x58081001, 0x42001800, 0x00100042, 0x60240000, + 0x05fdf7ef, 0x80204080, 0x80204000, 0x4810680c, + 0x583c0000, 0x80282c00, 0x583c3001, 0x90183440, + 0x500c0800, 0x48046809, 0x4808680a, 0x480c680b, + 0x4810680c, 0x4814680d, 0x4818680e, 0x4820680f, + 0x48246810, 0x80000580, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x4d2c0000, 0x0001f81f, 0x05f40ef6, + 0x412c1000, 0x5c025800, 0x4a001009, 0x000201d5, + 0x9008040a, 0x48001003, 0x0001f1cb, 0x4d2c0000, + 0x40325800, 0x05f9faa1, 0x5c025800, 0x1c01f000, + 0x4807c857, 0x05f5fee8, 0x42001000, 0x0011458b, + 0x4a001003, 0x00114595, 0x4a001009, 0x000201d5, + 0x4978100a, 0x1c01f000, 0x59e00017, 0x8c000500, + 0x1c01f000, 0x0001f9de, 0x4d040000, 0x4c640000, + 0x4c600000, 0x40120800, 0x400cc800, 0x4014c000, + 0x0501f01a, 0x59e00017, 0x8c00050c, 0x05020005, + 0x59a808a3, 0x58040003, 0x8c000500, 0x0500000d, + 0x4c080000, 0x59a810a2, 0x50080000, 0x84000542, + 0x44001000, 0x5c001000, 0x59e00017, 0x8c00050c, + 0x05fe07fe, 0x58040003, 0x8c000500, 0x05fe07fb, + 0x4d040000, 0x4c640000, 0x4c600000, 0x5804c800, + 0x58060801, 0x5804c002, 0x4a03b805, 0x20000000, + 0x59dc0006, 0x4a03b805, 0x30000000, 0x59dc0006, + 0x4a03b805, 0x70000000, 0x59dc0006, 0x4867b800, + 0x4907b801, 0x6413b802, 0x601c00e2, 0x44600000, 0x4a03b805, 0x30000000, 0x59dc0006, 0x4a03b805, - 0x70000000, 0x59dc0006, 0x4867b800, 0x4907b801, - 0x6413b802, 0x601c00e2, 0x44600000, 0x4a03b805, - 0x30000000, 0x59dc0006, 0x4a03b805, 0x10000003, - 0x59dc0006, 0x8c00053e, 0x05fc07fe, 0x4a03b805, - 0x20000000, 0x59dc0006, 0x5c00c000, 0x5c00c800, - 0x5c020800, 0x1c01f000, 0x4803c856, 0x055dfa08, - 0x0001f1df, 0x59300c03, 0xb0040592, 0x05020037, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x850e1d1c, 0x4d2c0000, 0x59325809, 0x42007000, - 0x000211a7, 0x58380800, 0x90040582, 0x0502000c, - 0x58386001, 0x58300009, 0x82000580, 0x0010150e, - 0x05020007, 0x5830000a, 0x812c0580, 0x05020004, - 0x4933c857, 0x4978600a, 0x0501f01e, 0x58386005, - 0x40305000, 0x803061c0, 0x0500001a, 0x58300009, - 0x82000580, 0x0010150e, 0x05020004, 0x5830000a, - 0x812c0580, 0x05000004, 0x40305000, 0x58306000, - 0x05fdf7f5, 0x4933c856, 0x8030058a, 0x58300000, - 0x05000006, 0x48005000, 0x800001c0, 0x05020007, - 0x48287004, 0x0501f005, 0x800001c0, 0x05020002, - 0x48007004, 0x48007005, 0x40325800, 0x05f9fa53, - 0x5c025800, 0x0501f010, 0x59300a03, 0x90040581, - 0x0502000d, 0x42001000, 0x0010e387, 0x50081000, - 0x58080002, 0x82000580, 0x00000100, 0x05000006, - 0x5808000c, 0x81300580, 0x05020003, 0x4933c856, - 0x4978100c, 0x59300004, 0x84000520, 0x48026004, - 0x1c01f000, 0x4803c856, 0x60f00800, 0x48079000, - 0x59c80000, 0x80040500, 0x05fe07fe, 0x497b9005, - 0x4a039035, 0x00880400, 0x59a8003b, 0x800000e0, - 0x4803900e, 0x64c39011, 0x4a03900f, 0x00111b00, - 0x4a039010, 0x00111b00, 0x65db9015, 0x4a039003, - 0x00001f07, 0x6503900d, 0x4a039000, 0x00001600, - 0x1c01f000, 0x59c80007, 0x8c000508, 0x05020885, - 0x59c80800, 0x8c040516, 0x05020003, 0x90000506, - 0x0c01f004, 0x4807c857, 0x9000050e, 0x0c01f001, - 0x00101789, 0x00101788, 0x00106d20, 0x00101788, - 0x0010178b, 0x00101788, 0x0010178b, 0x0010178b, - 0x00101788, 0x00101788, 0x00101788, 0x00101788, - 0x0010178b, 0x00101788, 0x0010178b, 0x00101788, - 0x05f5fe52, 0x4803c857, 0x1c01f000, 0x59c8080c, - 0x4807c857, 0x82040500, 0x00006000, 0x05000003, - 0x055df808, 0x0501f005, 0x82040500, 0x007f0000, - 0x05000004, 0x0559ffd5, 0x0539f899, 0x0501f02c, - 0x90040514, 0x0500000d, 0x055df82d, 0x916c0583, - 0x05000008, 0x0525f911, 0x05000003, 0x051df94c, - 0x0501f004, 0x64075042, 0x6006d800, 0x0525f88e, - 0x0501f820, 0x0501f01e, 0x82040500, 0x00001c00, - 0x05000004, 0x0559fffd, 0x0501f81a, 0x0501f018, - 0x82040500, 0x00000140, 0x05000004, 0x055df80a, - 0x0501f814, 0x0501f012, 0x82040500, 0x00008000, - 0x0500000f, 0x0525f8f9, 0x0500000b, 0x59c400a4, - 0x9000050f, 0x9000058b, 0x05020007, 0x4c040000, - 0x051df946, 0x60780000, 0x80000040, 0x05fe07ff, - 0x5c000800, 0x0559ffd0, 0x0501f802, 0x1c01f000, - 0x4c0c0000, 0x4c100000, 0x4c140000, 0x05fdf8b6, - 0x5c002800, 0x5c002000, 0x5c001800, 0x1c01f000, - 0x4803c856, 0x59a80804, 0x59a8004e, 0x82000500, - 0xfffff000, 0x80040540, 0x4803504e, 0x59a80052, - 0x82000500, 0xfffff000, 0x80040540, 0x48035052, - 0x59a80056, 0x82000500, 0xfffff000, 0x80040540, - 0x48035056, 0x48078882, 0x82040480, 0x00000204, - 0x05021004, 0x42001000, 0x00240f00, 0x0501f00f, - 0x82040480, 0x00000404, 0x05021004, 0x42001000, - 0x00440800, 0x0501f009, 0x82040480, 0x00000804, - 0x05021004, 0x42001000, 0x00840400, 0x0501f003, - 0x42001000, 0x00880400, 0x480b9035, 0x0501f350, - 0x59c80815, 0x05f5fdde, 0x4807c857, 0xb0040d3c, + 0x10000003, 0x59dc0006, 0x8c00053e, 0x05fc07fe, + 0x4a03b805, 0x20000000, 0x59dc0006, 0x5c00c000, + 0x5c00c800, 0x5c020800, 0x1c01f000, 0x4803c856, + 0x0561f912, 0x0001f1e7, 0x59300c03, 0xb0040592, + 0x05020037, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x850e1d1c, 0x4d2c0000, 0x59325809, + 0x42007000, 0x000211e8, 0x58380800, 0x90040582, + 0x0502000c, 0x58386001, 0x58300009, 0x82000580, + 0x00101580, 0x05020007, 0x5830000a, 0x812c0580, + 0x05020004, 0x4933c857, 0x4978600a, 0x0501f01e, + 0x58386005, 0x40305000, 0x803061c0, 0x0500001a, + 0x58300009, 0x82000580, 0x00101580, 0x05020004, + 0x5830000a, 0x812c0580, 0x05000004, 0x40305000, + 0x58306000, 0x05fdf7f5, 0x4933c856, 0x8030058a, + 0x58300000, 0x05000006, 0x48005000, 0x800001c0, + 0x05020007, 0x48287004, 0x0501f005, 0x800001c0, + 0x05020002, 0x48007004, 0x48007005, 0x40325800, + 0x05f9fa19, 0x5c025800, 0x0501f010, 0x59300a03, + 0x90040581, 0x0502000d, 0x42001000, 0x00112322, + 0x50081000, 0x58080002, 0x82000580, 0x00000100, + 0x05000006, 0x5808000c, 0x81300580, 0x05020003, + 0x4933c856, 0x4978100c, 0x59300004, 0x84000520, + 0x48026004, 0x1c01f000, 0x4803c856, 0x60f00800, 0x48079000, 0x59c80000, 0x80040500, 0x05fe07fe, - 0x8c040504, 0x0500001b, 0x59c80035, 0x48039035, - 0x59a800ca, 0x80000540, 0x05000016, 0x4c300000, - 0x600060de, 0x58300801, 0x82040d00, 0xffc00000, - 0x8004090c, 0x58300000, 0x90000541, 0x48006000, - 0x58300000, 0x8c000500, 0x05fe07fe, 0x82000500, - 0xfc00ffff, 0x80040540, 0x84000574, 0x48006000, - 0x58300000, 0x8c000534, 0x05fe07fe, 0x5c006000, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x1c01f000, 0x60100020, 0x50000000, 0x8c000520, - 0x05020006, 0x42006000, 0x7ff4c000, 0x58300003, - 0x8c000502, 0x0502000a, 0x600060de, 0x64686000, - 0x58300000, 0x8c000504, 0x05fe07fe, 0x641c6002, - 0x59a800ca, 0x84000540, 0x480350ca, 0x1c01f000, - 0x600060de, 0x58300801, 0x9004050c, 0x05f60da7, - 0x60f00800, 0x05fdf7c1, 0x4853c857, 0x497b8801, - 0x850e1d1a, 0x5050b000, 0x485bc857, 0x8058b1c0, - 0x0500089d, 0x82580480, 0x00000804, 0x0502189a, - 0x60040000, 0x61000801, 0x0501fd74, 0x40582000, - 0x8050a000, 0x50500000, 0x80102400, 0x9058b483, - 0x8050a000, 0x485bc857, 0x4853c857, 0x50501000, - 0x80082404, 0x60101800, 0x82080500, 0x000000ff, - 0x61000821, 0x0501fd65, 0x80081110, 0x800c1840, - 0x05fe07fa, 0x8050a000, 0x8058b040, 0x05fe07f4, - 0x4803c856, 0x41780000, 0x61000801, 0x0501fd5b, - 0x50501000, 0x80082404, 0x0502087b, 0x4803c856, - 0x1c01f000, 0x4a035076, 0xaabbccdd, 0x600c0000, - 0x0501fcb1, 0x600c0000, 0x0501fcdf, 0x60300868, - 0x0501fd49, 0x90040541, 0x60300868, 0x0501fd4b, - 0x60480888, 0x0501fd44, 0x90040548, 0x60480888, - 0x0501fd46, 0x60180818, 0x0501fd3f, 0x82040540, - 0x00000080, 0x60180818, 0x0501fd40, 0x60480828, - 0x0501fd39, 0x90040541, 0x60480828, 0x0501fd3b, - 0x59a80084, 0x8c00050e, 0x05000006, 0x4803c857, - 0x82000500, 0x0000ff00, 0x80000110, 0x0501f002, - 0x60e00001, 0x60300800, 0x0501fd30, 0x60380940, - 0x0501fd29, 0x82040500, 0xffffff0f, 0x0501fef5, - 0x05020003, 0x90000540, 0x0501f002, 0x90000550, - 0x60380940, 0x0501fd25, 0x60380938, 0x0501fd1e, - 0x90040550, 0x60380938, 0x0501fd20, 0x60800000, - 0x61000859, 0x0501fd1d, 0x61000000, 0x61000851, - 0x0501fd1a, 0x60300000, 0x61800861, 0x0501fd17, - 0x60840000, 0x61800821, 0x0501fd14, 0x59c40001, - 0x84000574, 0x48038801, 0x850e1d5a, 0x61602004, - 0x6029d000, 0x0501f83c, 0x4813c857, 0x61000849, - 0x0501fd05, 0x4807c857, 0x82041500, 0x000000c0, - 0x82081580, 0x000000c0, 0x05000004, 0x80102040, - 0x05000825, 0x05fdf7f3, 0x4803c856, 0x60c82000, - 0x6029d000, 0x0501f82c, 0x60380878, 0x0501fcf6, - 0x90040d01, 0x05020004, 0x80102040, 0x0500081a, - 0x05fdf7f8, 0x4803c856, 0x61702001, 0x6029d000, - 0x052dff41, 0x60380818, 0x0501fceb, 0x90040d10, - 0x05020004, 0x80102040, 0x05f40d10, 0x05fdf7f8, - 0x4803c856, 0x60a02000, 0x6029d000, 0x052dff36, - 0x603808b8, 0x0501fce0, 0x90040d04, 0x05000004, - 0x80102040, 0x05f40d05, 0x05fdf7f8, 0x4803c856, - 0x1c01f000, 0x4803c856, 0x4a03c020, 0x00004010, - 0x4a03c011, 0x40100011, 0x05006000, 0x4203e000, - 0x40000000, 0x4203e000, 0x30000001, 0x4803c856, - 0x0501f000, 0x61201801, 0x800c1840, 0x05fe07ff, - 0x80e9d040, 0x05fe07fc, 0x1c01f000, 0x4803c856, - 0x497b88a9, 0x64078807, 0x497b8807, 0x59c40005, - 0x48038805, 0x0501fde0, 0x0501fe23, 0x0501f9f6, - 0x4a0388a7, 0x0000f7f7, 0x4a0388a3, 0x8000403c, - 0x4a0388ae, 0x000061a8, 0x59c40001, 0x82000500, - 0xfffe7fff, 0x82000540, 0x005fe063, 0x48038801, - 0x4a038810, 0x00410108, 0x4a038811, 0x00520608, - 0x4a038812, 0x00450320, 0x4a038813, 0x00440405, - 0x4a03881c, 0x004132e1, 0x4a038850, 0x80000108, - 0x64238860, 0x64238870, 0x4a038851, 0x80000508, - 0x4a038861, 0x00800000, 0x4a038871, 0x00800000, - 0x4a038852, 0x80000708, 0x4a038862, 0x00800000, - 0x4a038872, 0x00800000, 0x4a038853, 0x80000608, - 0x497b8863, 0x4a038873, 0x00800000, 0x4a038882, - 0x00000840, 0x4a0388a5, 0x000000fe, 0x647b88a6, - 0x4a0388b0, 0x00007530, 0x4a038802, 0x0000ffff, - 0x4a038806, 0xc0e80b00, 0x1c01f000, 0x850e1d4e, - 0x1c01f000, 0x59c40805, 0x59c40006, 0x80040d00, - 0x05f40caa, 0x82040500, 0x00e80b00, 0x05020004, - 0x8c04053e, 0x050208c9, 0x0501f005, 0x82040500, - 0x00880b00, 0x05f60c9a, 0x05f5fca0, 0x4c5c0000, - 0x4c600000, 0x59c4b805, 0x485fc857, 0x59c410a3, - 0x84081518, 0x825c0500, 0x04000000, 0x05020d5c, - 0x59c40006, 0x8c000500, 0x05000003, 0x8c5c0500, - 0x05020080, 0x0521ff65, 0x0500001c, 0x0521ff6f, - 0x0500001a, 0x59c40005, 0x82000500, 0x000000c0, - 0x05000042, 0x0521ff6f, 0x05020040, 0x59c40006, - 0x82000500, 0x000000f0, 0x05020004, 0x4a038805, - 0x000000c0, 0x0501f039, 0x59a80043, 0x84000506, - 0x48035043, 0x42006000, 0xff203fff, 0x42006800, - 0x40000000, 0x051df8f6, 0x60400800, 0x42001000, - 0x001051b3, 0x052dfe99, 0x8c5c0534, 0x0502002b, - 0x4a035041, 0x0000aaaa, 0x59c40005, 0x8c00050c, - 0x0502000f, 0x8c00050e, 0x05020015, 0x8c00050a, - 0x0502001b, 0x8c000508, 0x05000008, 0x59a8003f, - 0x90000589, 0x05020005, 0x42000000, 0x0010e3a4, - 0x0559fe64, 0x0525f8e2, 0x0501f04c, 0x42000000, - 0x0010e3b2, 0x0559fe5f, 0x41781800, 0x60042000, - 0x0501fd13, 0x64035042, 0x0501f00e, 0x42000000, - 0x0010e3b3, 0x0559fe57, 0x41781800, 0x60082000, - 0x0501fd0b, 0x640b5042, 0x0501f006, 0x42000000, - 0x0010e3a6, 0x0559fe4f, 0x0525f873, 0x0501f037, - 0x0525f91f, 0x0501f035, 0x8c5c0534, 0x05000031, - 0x59c40005, 0x8c00053a, 0x05020004, 0x42000000, - 0x0010e39a, 0x0559fe43, 0x4a038805, 0x20000000, - 0x0521ff12, 0x0502000e, 0x4a038805, 0x04000000, - 0x59c418a8, 0x60002000, 0x0501fcf1, 0x0521ff17, - 0x05020005, 0x64075042, 0x6006d800, 0x0521fe8a, - 0x0501f053, 0x41780000, 0x0521fedd, 0x0501fce1, - 0x4000c000, 0x0501fc28, 0x916c1584, 0x0502000b, + 0x497b9005, 0x4a039035, 0x00880400, 0x59a8003d, + 0x800000e0, 0x4803900e, 0x64c39011, 0x4a03900f, + 0x00115aa4, 0x4a039010, 0x00115aa4, 0x65db9015, + 0x4a039003, 0x00001f07, 0x6503900d, 0x4a039000, + 0x00001600, 0x1c01f000, 0x59c80007, 0x8c000508, + 0x05020885, 0x59c80800, 0x8c040516, 0x05020003, + 0x90000506, 0x0c01f004, 0x4807c857, 0x9000050e, + 0x0c01f001, 0x001017fa, 0x001017f9, 0x001070b1, + 0x001017f9, 0x001017fc, 0x001017f9, 0x001017fc, + 0x001017fc, 0x001017f9, 0x001017f9, 0x001017f9, + 0x001017f9, 0x001017fc, 0x001017f9, 0x001017fc, + 0x001017f9, 0x05f5fe1c, 0x4803c857, 0x1c01f000, + 0x59c8080c, 0x4807c857, 0x82040500, 0x00006000, + 0x05000003, 0x055dff12, 0x0501f005, 0x82040500, + 0x007f0000, 0x05000004, 0x055dfedf, 0x0539fce6, + 0x0501f02c, 0x90040514, 0x0500000d, 0x055dff37, + 0x916c0583, 0x05000008, 0x0525fb8a, 0x05000003, + 0x051dfad2, 0x0501f004, 0x64075045, 0x6006d800, + 0x0525fb01, 0x0501f820, 0x0501f01e, 0x82040500, + 0x00001c00, 0x05000004, 0x055dff07, 0x0501f81a, + 0x0501f018, 0x82040500, 0x00000140, 0x05000004, + 0x055dff14, 0x0501f814, 0x0501f012, 0x82040500, + 0x00008000, 0x0500000f, 0x0525fb72, 0x0500000b, + 0x59c400a4, 0x9000050f, 0x9000058b, 0x05020007, + 0x4c040000, 0x051dfacc, 0x60780000, 0x80000040, + 0x05fe07ff, 0x5c000800, 0x055dfeda, 0x0501f802, + 0x1c01f000, 0x4c0c0000, 0x4c100000, 0x4c140000, + 0x05fdf8e3, 0x5c002800, 0x5c002000, 0x5c001800, + 0x1c01f000, 0x4803c856, 0x59a80804, 0x59a80051, + 0x82000500, 0xfffff000, 0x80040540, 0x48035051, + 0x59a80055, 0x82000500, 0xfffff000, 0x80040540, + 0x48035055, 0x59a80059, 0x82000500, 0xfffff000, + 0x80040540, 0x48035059, 0x48078882, 0x82040480, + 0x00000204, 0x05021004, 0x42001000, 0x00240f00, + 0x0501f00f, 0x82040480, 0x00000404, 0x05021004, + 0x42001000, 0x00440800, 0x0501f009, 0x82040480, + 0x00000804, 0x05021004, 0x42001000, 0x00840400, + 0x0501f003, 0x42001000, 0x00880400, 0x480b9035, + 0x0501f35f, 0x59c80815, 0x05f5fda8, 0x4807c857, + 0xb0040d3c, 0x48079000, 0x59c80000, 0x80040500, + 0x05fe07fe, 0x8c040504, 0x0500001b, 0x59c80035, + 0x48039035, 0x59a800cf, 0x80000540, 0x05000016, + 0x4c300000, 0x600060de, 0x58300801, 0x82040d00, + 0xffc00000, 0x8004090c, 0x58300000, 0x90000541, + 0x48006000, 0x58300000, 0x8c000500, 0x05fe07fe, + 0x82000500, 0xfc00ffff, 0x80040540, 0x84000574, + 0x48006000, 0x58300000, 0x8c000534, 0x05fe07fe, + 0x5c006000, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x1c01f000, 0x60100020, 0x50000000, + 0x8c000520, 0x05020006, 0x42006000, 0x7ff4c000, + 0x58300003, 0x8c000502, 0x0502000a, 0x600060de, + 0x64686000, 0x58300000, 0x8c000504, 0x05fe07fe, + 0x641c6002, 0x59a800cf, 0x84000540, 0x480350cf, + 0x1c01f000, 0x600060de, 0x58300801, 0x9004050c, + 0x05f60d71, 0x60f00800, 0x05fdf7c1, 0x4853c857, + 0x497b8801, 0x850e1d1a, 0x5050b000, 0x485bc857, + 0x8058b1c0, 0x050008a3, 0x82580480, 0x00000804, + 0x050218a0, 0x60040000, 0x61000801, 0x0501fd83, + 0x40582000, 0x8050a000, 0x50500000, 0x80102400, + 0x9058b483, 0x8050a000, 0x485bc857, 0x4853c857, + 0x50501000, 0x80082404, 0x60101800, 0x82080500, + 0x000000ff, 0x61000821, 0x0501fd74, 0x80081110, + 0x800c1840, 0x05fe07fa, 0x8050a000, 0x8058b040, + 0x05fe07f4, 0x4803c856, 0x41780000, 0x61000801, + 0x0501fd6a, 0x50501000, 0x80082404, 0x05020881, + 0x4803c856, 0x1c01f000, 0x4a035079, 0xaabbccdd, + 0x600c0000, 0x0501fcc0, 0x600c0000, 0x0501fcee, + 0x60300868, 0x0501fd58, 0x90040541, 0x60300868, + 0x0501fd5a, 0x60480888, 0x0501fd53, 0x90040548, + 0x60480888, 0x0501fd55, 0x60180818, 0x0501fd4e, + 0x82040540, 0x00000080, 0x60180818, 0x0501fd4f, + 0x60480828, 0x0501fd48, 0x90040541, 0x60480828, + 0x0501fd4a, 0x60300830, 0x0501fd43, 0x82040540, + 0x00000080, 0x60300830, 0x0501fd44, 0x59a80087, + 0x8c00050e, 0x05000006, 0x4803c857, 0x82000500, + 0x0000ff00, 0x80000110, 0x0501f002, 0x60e00001, + 0x60300800, 0x0501fd39, 0x60380940, 0x0501fd32, + 0x82040500, 0xffffff0f, 0x0501fefe, 0x05020003, + 0x90000540, 0x0501f002, 0x90000550, 0x60380940, + 0x0501fd2e, 0x60380938, 0x0501fd27, 0x90040550, + 0x60380938, 0x0501fd29, 0x60800000, 0x61000859, + 0x0501fd26, 0x61000000, 0x61000851, 0x0501fd23, + 0x60300000, 0x61800861, 0x0501fd20, 0x60840000, + 0x61800821, 0x0501fd1d, 0x59c40001, 0x84000574, + 0x48038801, 0x850e1d5a, 0x61602004, 0x6029d000, + 0x0501f83c, 0x4813c857, 0x61000849, 0x0501fd0e, + 0x4807c857, 0x82041500, 0x000000c0, 0x82081580, + 0x000000c0, 0x05000004, 0x80102040, 0x05000825, + 0x05fdf7f3, 0x4803c856, 0x60c82000, 0x6029d000, + 0x0501f82c, 0x60380878, 0x0501fcff, 0x90040d01, + 0x05020004, 0x80102040, 0x0500081a, 0x05fdf7f8, + 0x4803c856, 0x61702001, 0x6029d000, 0x0531fb35, + 0x60380818, 0x0501fcf4, 0x90040d10, 0x05020004, + 0x80102040, 0x05f40cd4, 0x05fdf7f8, 0x4803c856, + 0x60a02000, 0x6029d000, 0x0531fb2a, 0x603808b8, + 0x0501fce9, 0x90040d04, 0x05000004, 0x80102040, + 0x05f40cc9, 0x05fdf7f8, 0x4803c856, 0x1c01f000, + 0x4803c856, 0x4a03c020, 0x00004010, 0x4a03c011, + 0x40100011, 0x05006000, 0x4203e000, 0x40000000, + 0x4203e000, 0x30000001, 0x4803c856, 0x0501f000, + 0x61201801, 0x800c1840, 0x05fe07ff, 0x80e9d040, + 0x05fe07fc, 0x1c01f000, 0x4803c856, 0x497b88a9, + 0x64078807, 0x497b8807, 0x59c40005, 0x48038805, + 0x0501fde9, 0x0501fe2c, 0x0501f9ff, 0x4a0388a7, + 0x0000f7f7, 0x4a0388a3, 0x8000403c, 0x4a0388ae, + 0x000061a8, 0x59c40001, 0x82000500, 0xfffe7fff, + 0x82000540, 0x005fe063, 0x48038801, 0x4a038810, + 0x00410108, 0x4a038811, 0x00520608, 0x4a038812, + 0x00450320, 0x4a038813, 0x00440405, 0x4a03881c, + 0x004132e1, 0x4a038850, 0x80000108, 0x64238860, + 0x64238870, 0x4a038851, 0x80000508, 0x4a038861, + 0x00800000, 0x4a038871, 0x00800000, 0x4a038852, + 0x80000708, 0x4a038862, 0x00800000, 0x4a038872, + 0x00800000, 0x4a038853, 0x80000608, 0x497b8863, + 0x4a038873, 0x00800000, 0x4a038882, 0x00000840, + 0x4a0388a5, 0x000000fe, 0x647b88a6, 0x4a0388b0, + 0x00007530, 0x4a038802, 0x0000ffff, 0x4a038806, + 0xc0e80b00, 0x1c01f000, 0x850e1d4e, 0x1c01f000, + 0x59c40805, 0x59c40006, 0x80040d00, 0x05f40c6e, + 0x82040500, 0x00e80b00, 0x05020004, 0x8c04053e, + 0x050208d2, 0x0501f005, 0x82040500, 0x00880b00, + 0x05f60c5e, 0x05f5fc64, 0x4c5c0000, 0x4c600000, + 0x59c4b805, 0x485fc857, 0x59c410a3, 0x84081518, + 0x825c0500, 0x04000000, 0x05020d65, 0x59c40006, + 0x8c000500, 0x05000003, 0x8c5c0500, 0x05020089, + 0x0525f9d8, 0x0500001c, 0x0525f9e2, 0x0500001a, + 0x59c40005, 0x82000500, 0x000000c0, 0x05000042, + 0x0525f9e2, 0x05020040, 0x59c40006, 0x82000500, + 0x000000f0, 0x05020004, 0x4a038805, 0x000000c0, + 0x0501f039, 0x59a80046, 0x84000506, 0x48035046, + 0x42006000, 0xff203fff, 0x42006800, 0x40000000, + 0x051dfa76, 0x60400800, 0x42001000, 0x001053aa, + 0x0531fa8d, 0x8c5c0534, 0x0502002b, 0x4a035044, + 0x0000aaaa, 0x59c40005, 0x8c00050c, 0x0502000f, + 0x8c00050e, 0x05020015, 0x8c00050a, 0x0502001b, + 0x8c000508, 0x05000008, 0x59a80042, 0x90000589, + 0x05020005, 0x42000000, 0x00112345, 0x055dfd68, + 0x0525fb59, 0x0501f055, 0x42000000, 0x00112353, + 0x055dfd63, 0x41781800, 0x60042000, 0x0501fd1c, + 0x64035045, 0x0501f00e, 0x42000000, 0x00112354, + 0x055dfd5b, 0x41781800, 0x60082000, 0x0501fd14, + 0x640b5045, 0x0501f006, 0x42000000, 0x00112347, + 0x055dfd53, 0x0525fae8, 0x0501f040, 0x0525fb97, + 0x0501f03e, 0x8c5c0534, 0x0500003a, 0x59c40005, + 0x8c00053a, 0x05020004, 0x42000000, 0x0011233b, + 0x055dfd47, 0x4a038805, 0x20000000, 0x0525f985, + 0x0502000e, 0x4a038805, 0x04000000, 0x59c418a8, + 0x60002000, 0x0501fcfa, 0x0525f98a, 0x05020005, + 0x64075045, 0x6006d800, 0x0525f8f7, 0x0501f05c, + 0x41780000, 0x0525f94a, 0x0501fcea, 0x4000c000, + 0x59c400a2, 0x82000500, 0x0000ffff, 0x59881023, + 0x80081400, 0x05021002, 0x81781040, 0x480b1023, + 0x0505f8a7, 0x0501fc28, 0x916c1584, 0x0502000b, 0x8c5c0500, 0x05020013, 0x8d0c0506, 0x05020004, 0x59c410a3, 0x90081548, 0x480b88a3, 0x59c41006, 0x84081540, 0x480b8806, 0x4a038805, 0x04000000, - 0x6006d800, 0x497b503e, 0x8d0c0518, 0x05020004, - 0x4803c856, 0x850e1d06, 0x0519ff45, 0x0519f9e1, + 0x6006d800, 0x497b5041, 0x8d0c0518, 0x05020004, + 0x4803c856, 0x850e1d06, 0x051df8bc, 0x0519fb56, 0x8c5c053c, 0x05020852, 0x8c5c0500, 0x05000031, - 0x42000000, 0x0010e4bc, 0x0559fe12, 0x64078805, - 0x6148b006, 0x6191d000, 0x4c580000, 0x052dfe36, + 0x42000000, 0x00112460, 0x055dfd0d, 0x64078805, + 0x6148b006, 0x6191d000, 0x4c580000, 0x0531fa21, 0x0501fba3, 0x5c00b000, 0x05000004, 0x8058b040, 0x05fe07f9, 0x0501f004, 0x485bc857, 0x64078805, 0x0501f020, 0x485bc857, 0x59c40006, 0x84000500, - 0x48038806, 0x0535fe78, 0x497b8880, 0x0501fda1, + 0x48038806, 0x0539fab6, 0x497b8880, 0x0501fda1, 0x05000008, 0x60000818, 0x0501fbcf, 0x8c040500, - 0x05000004, 0x60142000, 0x0525f908, 0x0501f003, - 0x60182000, 0x0525f905, 0x59c400a3, 0x82000500, - 0xfcf8ffff, 0x480388a3, 0x640b50b4, 0x6012d800, - 0x6403506a, 0x64078805, 0x05f5fe0c, 0x0501fb19, - 0x497b5068, 0x64075075, 0x497b50a6, 0x05f5fa03, + 0x05000004, 0x60142000, 0x0525fb78, 0x0501f003, + 0x60182000, 0x0525fb75, 0x59c400a3, 0x82000500, + 0xfcf8ffff, 0x480388a3, 0x640b50b9, 0x6012d800, + 0x6403506d, 0x64078805, 0x05f5fdbb, 0x0501fb19, + 0x497b506b, 0x64075078, 0x497b50a9, 0x05f5f9ba, 0x825cbd00, 0xbbfffffe, 0x485f8805, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4d180000, 0x59c41004, 0x480bc857, 0x8c080500, 0x05000006, 0x4803c856, - 0x4a01a8e5, 0x00000800, 0x0535fefb, 0x0501f007, + 0x4a01a8e5, 0x00000800, 0x0539fb39, 0x0501f007, 0x82080500, 0x000001f0, 0x05000004, 0x4803c856, - 0x0539f820, 0x05360f13, 0x4a038805, 0x80000000, + 0x0539fc5e, 0x053a0b51, 0x4a038805, 0x80000000, 0x5c023000, 0x1c01f000, 0x59c408a3, 0x4807c857, 0x84040d40, 0x480788a3, 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x4a038805, 0x40000000, 0x42000000, 0x0010e3ac, - 0x0559fdbc, 0x0535faf2, 0x59c41004, 0x8c080500, + 0x4a038805, 0x40000000, 0x42000000, 0x0011234d, + 0x055dfcb7, 0x0535ff30, 0x59c41004, 0x8c080500, 0x05000040, 0x598e600b, 0x4a01a8e5, 0x00000800, 0x813261c0, 0x05000024, 0x59300403, 0x900005b2, 0x05020021, 0x5930001e, 0x48038833, 0x4a038807, - 0x00018000, 0x6009d000, 0x052dfdd3, 0x497b8807, - 0x6009d000, 0x052dfdd0, 0x0535fd6c, 0x60c1d0ea, - 0x052dfdcd, 0x59c408a4, 0x90040d0f, 0x90040d80, + 0x00018000, 0x6009d000, 0x0531f9be, 0x497b8807, + 0x6009d000, 0x0531f9bb, 0x0539f9aa, 0x60c1d0ea, + 0x0531f9b8, 0x59c408a4, 0x90040d0f, 0x90040d80, 0x05000004, 0x42000000, 0x00200000, 0x0501fb7c, - 0x0535fa29, 0x59300009, 0x80000540, 0x05f40b97, + 0x0535fe67, 0x59300009, 0x80000540, 0x05f40b52, 0x40025800, 0x4a025a08, 0x00000103, 0x5931d82d, - 0x58ef400b, 0x58ec0009, 0x0801f800, 0x0005ffdc, + 0x58ef400b, 0x58ec0009, 0x0801f800, 0x0009f810, 0x0501f032, 0x598c000d, 0x82001c80, 0x000000c8, 0x0502100c, 0x80000000, 0x4803180d, 0x59c400a4, 0x9000050f, 0x90000582, 0x05020004, 0x42000000, - 0x00200000, 0x0501fb62, 0x052dfd59, 0x0501f023, - 0x4933c857, 0x0535fd45, 0x813261c0, 0x0500001f, - 0x64066203, 0x609e7000, 0x0009f800, 0x0501f01b, - 0x0535ffc8, 0x05000019, 0x0535ffee, 0x052dfd74, + 0x00200000, 0x0501fb62, 0x0531f93d, 0x0501f023, + 0x4933c857, 0x0539f983, 0x813261c0, 0x0500001f, + 0x64066203, 0x609e7000, 0x0009f839, 0x0501f01b, + 0x0539fc06, 0x05000019, 0x0539fc2c, 0x0531f958, 0x59926005, 0x813261c0, 0x0500000d, 0x61201801, - 0x0535ffb7, 0x0502000a, 0x59c400a4, 0x9000050f, + 0x0539fbf5, 0x0502000a, 0x59c400a4, 0x9000050f, 0x90000582, 0x05020004, 0x42000000, 0x00200000, - 0x0501fb47, 0x052dfd44, 0x0501f008, 0x4933c857, - 0x0535fcd1, 0x813261c0, 0x05000004, 0x613e7000, - 0x640e6203, 0x0009f800, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x0535f281, + 0x0501fb47, 0x0531f928, 0x0501f008, 0x4933c857, + 0x0539f90f, 0x813261c0, 0x05000004, 0x613e7000, + 0x640e6203, 0x0009f839, 0x5c01b000, 0x5c022800, + 0x5c034800, 0x5c03a000, 0x5c032000, 0x0535f6bf, 0x810c0d80, 0x8c04050e, 0x05000055, 0x4803c857, - 0x8d0c050e, 0x05000021, 0x850e1d0e, 0x497b50b4, - 0x42000000, 0x0010e393, 0x0559fd4e, 0x0559fdfa, - 0x0001ff09, 0x60441100, 0x497b50a8, 0x59c40001, + 0x8d0c050e, 0x05000021, 0x850e1d0e, 0x497b50b9, + 0x42000000, 0x00112334, 0x055dfc49, 0x055dfcf5, + 0x0001ff2f, 0x60441100, 0x497b50ab, 0x59c40001, 0x82000500, 0x00018000, 0x90001d80, 0x0500000b, 0x82001d80, 0x00008000, 0x0500000a, 0x82001d80, 0x00010000, 0x05000009, 0x82001d80, 0x00018000, - 0x05000008, 0x05f5fb39, 0x60001800, 0x0501f006, + 0x05000008, 0x05f5faf4, 0x60001800, 0x0501f006, 0x60041800, 0x0501f004, 0x600c1800, 0x0501f002, - 0x60101800, 0x0515f533, 0x850e1d4e, 0x59a808b4, + 0x60101800, 0x0515f650, 0x850e1d4e, 0x59a808b9, 0x800409c0, 0x05020006, 0x59c4000d, 0x8c000520, 0x05000003, 0x600c1800, 0x0501f002, 0x40041800, - 0x0559fdbd, 0x4c0c0000, 0x4c0c0000, 0x41782000, + 0x055dfcb8, 0x4c0c0000, 0x4c0c0000, 0x41782000, 0x0501fcc8, 0x0500000f, 0x0501fcad, 0x60042000, 0x0502000c, 0x0501fcb5, 0x05020006, 0x60082000, 0x0501f8b4, 0x05020007, 0x60102000, 0x0501f005, 0x600c2000, 0x0501f89d, 0x05020002, 0x60142000, - 0x5c001800, 0x60481100, 0x5c001800, 0x0515fd11, - 0x05f5fd32, 0x0559fe1f, 0x0502000c, 0x4d200000, + 0x5c001800, 0x60481100, 0x5c001800, 0x0515fe2e, + 0x05f5fce1, 0x055dfd1a, 0x0502000c, 0x4d200000, 0x61fe4001, 0x0501f857, 0x5c024000, 0x4d400000, - 0x4d3c0000, 0x60a28000, 0x60227800, 0x0501fffb, + 0x4d3c0000, 0x60a28000, 0x60227800, 0x0505f80e, 0x5c027800, 0x5c028000, 0x1c01f000, 0x80000540, - 0x05fc07fe, 0x4d3c0000, 0x60067800, 0x054dfb48, + 0x05fc07fe, 0x4d3c0000, 0x60067800, 0x0551f86f, 0x5c027800, 0x1c01f000, 0x4803c857, 0x82000400, - 0x00102853, 0x50000800, 0x82040d00, 0x000000ff, + 0x001028fb, 0x50000800, 0x82040d00, 0x000000ff, 0x1c01f000, 0x4803c856, 0x4c580000, 0x6040b000, 0x497b88ac, 0x497b88ad, 0x8058b040, 0x05fe07fe, 0x5c00b000, 0x1c01f000, 0x4807c857, 0x80041908, - 0x480f88ac, 0x9004250f, 0x82102400, 0x0010d15b, + 0x480f88ac, 0x9004250f, 0x82102400, 0x0010d8d9, 0x50102000, 0x59c400ad, 0x80100540, 0x480f88ac, - 0x480388ad, 0x0559fe18, 0x05000002, 0x4807503d, + 0x480388ad, 0x055dfd13, 0x05000002, 0x48075040, 0x1c01f000, 0x4807c857, 0x80041908, 0x480f88ac, - 0x9004250f, 0x82102400, 0x0010d15b, 0x50102000, + 0x9004250f, 0x82102400, 0x0010d8d9, 0x50102000, 0x59c400ad, 0x80101500, 0x05000004, 0x80100580, 0x480f88ac, 0x480388ad, 0x1c01f000, 0x4803c857, 0x4c080000, 0x4c040000, 0x4c000000, 0x59c40892, @@ -1773,12 +1805,12 @@ static const uint32_t isp_2500_risc_code[] = { 0x48038886, 0x8058b040, 0x05fe07fe, 0x497b8886, 0x5c000000, 0x5c000800, 0x5c001000, 0x1c01f000, 0x4803c856, 0x8d0c0520, 0x05000003, 0x60ba8000, - 0x0555f47d, 0x1c01f000, 0x59a800ca, 0x80000540, - 0x05000008, 0x0521fd7d, 0x60280800, 0x0502000e, + 0x0559f344, 0x1c01f000, 0x59a800cf, 0x80000540, + 0x05000008, 0x0521ffe7, 0x60280800, 0x0502000e, 0x600008de, 0x58040001, 0x8000092c, 0x0501f00a, 0x59c80835, 0x82040d00, 0x00001f00, 0x80040910, - 0x80040800, 0x59a800ca, 0x80000540, 0x05000002, - 0x61680804, 0x4807c857, 0x1c01f000, 0x59a800ca, + 0x80040800, 0x59a800cf, 0x80000540, 0x05000002, + 0x61680804, 0x4807c857, 0x1c01f000, 0x59a800cf, 0x80000540, 0x0500001c, 0x599c1a01, 0x60a80801, 0x820c0480, 0x00000204, 0x0500100a, 0x61680800, 0x820c0480, 0x00000404, 0x05001006, 0x60b80800, @@ -1786,116 +1818,116 @@ static const uint32_t isp_2500_risc_code[] = { 0x4c300000, 0x600060de, 0x58301000, 0x82081500, 0xfc00ffff, 0x800400e0, 0x80080540, 0x84000574, 0x48006000, 0x58300000, 0x8c000534, 0x05fe07fe, - 0x5c006000, 0x1c01f000, 0x4c000000, 0x59a80069, + 0x5c006000, 0x1c01f000, 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000580, 0x5c000000, 0x1c01f000, - 0x4c000000, 0x59a80069, 0x4803c857, 0x90000581, - 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a80069, + 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000581, + 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000583, 0x5c000000, 0x1c01f000, - 0x4c000000, 0x59a80069, 0x4803c857, 0x90000584, - 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a80069, + 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000584, + 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a8006c, 0x90000582, 0x5c000000, 0x1c01f000, 0x4c000000, - 0x4c040000, 0x4c080000, 0x4c380000, 0x59a8006c, - 0x90000c87, 0x05f61a55, 0x0c01f806, 0x5c007000, + 0x4c040000, 0x4c080000, 0x4c380000, 0x59a8006f, + 0x90000c87, 0x05f61a10, 0x0c01f806, 0x5c007000, 0x5c001000, 0x5c000800, 0x5c000000, 0x1c01f000, - 0x00101b93, 0x00101ba0, 0x00101bad, 0x00101bae, - 0x00101bcc, 0x00101bcd, 0x00101bce, 0x4803c856, - 0x6403506e, 0x600c0000, 0x0501f9af, 0x600c0000, - 0x0501f97d, 0x0501fa06, 0x4803c856, 0x641b506c, - 0x60740800, 0x42001000, 0x00101bcf, 0x052df449, - 0x497b5071, 0x64db5066, 0x64ab5065, 0x4803c856, - 0x6407506e, 0x600c0000, 0x0501f96f, 0x4803c856, - 0x641b506c, 0x60740800, 0x42001000, 0x00101bcf, - 0x052df43c, 0x05f5fa2d, 0x64db5066, 0x4803c856, - 0x640f506e, 0x60000800, 0x0501f9ff, 0x90040d1c, + 0x00101c13, 0x00101c20, 0x00101c2d, 0x00101c2e, + 0x00101c4c, 0x00101c4d, 0x00101c4e, 0x4803c856, + 0x64035071, 0x600c0000, 0x0501f9af, 0x600c0000, + 0x0501f97d, 0x0501fa06, 0x4803c856, 0x641b506f, + 0x60740800, 0x42001000, 0x00101c4f, 0x0531f02d, + 0x497b5074, 0x64db5069, 0x64ab5068, 0x4803c856, + 0x64075071, 0x600c0000, 0x0501f96f, 0x4803c856, + 0x641b506f, 0x60740800, 0x42001000, 0x00101c4f, + 0x0531f020, 0x05f5f9e8, 0x64db5069, 0x4803c856, + 0x640f5071, 0x60000800, 0x0501f9ff, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x05000008, 0x90040594, 0x05000008, 0x90040590, 0x05000008, - 0x05f5fa1e, 0x60040000, 0x0501f006, 0x60000000, + 0x05f5f9d9, 0x60040000, 0x0501f006, 0x60000000, 0x0501f004, 0x60080000, 0x0501f002, 0x600c0000, - 0x0501f951, 0x497b5072, 0x4803c856, 0x641b506c, - 0x60740800, 0x42001000, 0x00101bcf, 0x052df41d, - 0x05f5fa0e, 0x05f5fa0d, 0x1c01f000, 0x4c000000, - 0x4c040000, 0x4c080000, 0x4c380000, 0x59a8006e, - 0x90000c87, 0x05f61a05, 0x0c01f806, 0x5c007000, + 0x0501f951, 0x497b5075, 0x4803c856, 0x641b506f, + 0x60740800, 0x42001000, 0x00101c4f, 0x0531f001, + 0x05f5f9c9, 0x05f5f9c8, 0x1c01f000, 0x4c000000, + 0x4c040000, 0x4c080000, 0x4c380000, 0x59a80071, + 0x90000c87, 0x05f619c0, 0x0c01f806, 0x5c007000, 0x5c001000, 0x5c000800, 0x5c000000, 0x1c01f000, - 0x00101be3, 0x00101bff, 0x00101c50, 0x00101c65, - 0x00101c79, 0x00101c82, 0x00101c83, 0x0501f990, - 0x05020018, 0x59a81074, 0x60000800, 0x0501f9ca, + 0x00101c63, 0x00101c7f, 0x00101cd0, 0x00101ce5, + 0x00101cf9, 0x00101d02, 0x00101d03, 0x0501f990, + 0x05020018, 0x59a81077, 0x60000800, 0x0501f9ca, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x05000008, 0x90040594, 0x05000008, 0x90040590, - 0x05000008, 0x05f5f9e9, 0x84081540, 0x0501f006, + 0x05000008, 0x05f5f9a4, 0x84081540, 0x0501f006, 0x84081542, 0x0501f004, 0x84081544, 0x0501f002, - 0x84081546, 0x480b5074, 0x6407506c, 0x0501f003, + 0x84081546, 0x480b5077, 0x6407506f, 0x0501f003, 0x0501f8be, 0x05fdff9d, 0x1c01f000, 0x0501f885, 0x0500004f, 0x0501f972, 0x05020029, 0x60000800, 0x0501f9ad, 0x59c41001, 0x82081500, 0x00018000, 0x90040d1c, 0x90040590, 0x05000042, 0x90040594, 0x05000006, 0x90040598, 0x0500000a, 0x9004059c, - 0x0500000a, 0x05f5f9c9, 0x90080580, 0x05000039, + 0x0500000a, 0x05f5f984, 0x90080580, 0x05000039, 0x82080580, 0x00008000, 0x05000036, 0x0501f003, 0x90080580, 0x05000033, 0x60000800, 0x0501f996, - 0x59a80074, 0x90040d1c, 0x90041594, 0x05000006, + 0x59a80077, 0x90040d1c, 0x90041594, 0x05000006, 0x90041598, 0x05000006, 0x9004159c, 0x05000006, - 0x05f609b6, 0x84000544, 0x0501f004, 0x84000542, - 0x0501f002, 0x84000540, 0x48035074, 0x59a80071, - 0x80000000, 0x48035071, 0x90000585, 0x05000003, - 0x0501f859, 0x0501f01d, 0x497b5071, 0x59c40801, + 0x05f60971, 0x84000544, 0x0501f004, 0x84000542, + 0x0501f002, 0x84000540, 0x48035077, 0x59a80074, + 0x80000000, 0x48035074, 0x90000585, 0x05000003, + 0x0501f859, 0x0501f01d, 0x497b5074, 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, 0x0500000b, 0x82040580, 0x00008000, 0x0500000a, 0x82040580, 0x00010000, 0x05000009, 0x82040580, 0x00018000, - 0x05000008, 0x05f5f999, 0x60040000, 0x0501f006, + 0x05000008, 0x05f5f954, 0x60040000, 0x0501f006, 0x60000000, 0x0501f004, 0x60080000, 0x0501f002, - 0x600c0000, 0x0501f8fc, 0x640b506e, 0x0501f003, - 0x640f506c, 0x0501f002, 0x05fdff59, 0x1c01f000, - 0x0501f834, 0x05000013, 0x59a80065, 0x80000040, - 0x48035065, 0x0501f91e, 0x05020004, 0x640f506c, - 0x497b506d, 0x0501f00b, 0x59a80065, 0x80000540, + 0x600c0000, 0x0501f8fc, 0x640b5071, 0x0501f003, + 0x640f506f, 0x0501f002, 0x05fdff59, 0x1c01f000, + 0x0501f834, 0x05000013, 0x59a80068, 0x80000040, + 0x48035068, 0x0501f91e, 0x05020004, 0x640f506f, + 0x497b5070, 0x0501f00b, 0x59a80068, 0x80000540, 0x05020003, 0x0501f891, 0x0501f002, 0x0501f841, - 0x0501f829, 0x497b5071, 0x6407506e, 0x05fdff44, + 0x0501f829, 0x497b5074, 0x64075071, 0x05fdff44, 0x1c01f000, 0x0501f81f, 0x05000012, 0x0501f90c, - 0x0502000d, 0x59a80072, 0x80000000, 0x48035072, - 0x90000587, 0x0502000a, 0x642b5068, 0x497b5075, - 0x59a80074, 0x8400055e, 0x48035074, 0x4803c857, - 0x0501f004, 0x0501f814, 0x6413506e, 0x05fdff4f, + 0x0502000d, 0x59a80075, 0x80000000, 0x48035075, + 0x90000587, 0x0502000a, 0x642b506b, 0x497b5078, + 0x59a80077, 0x8400055e, 0x48035077, 0x4803c857, + 0x0501f004, 0x0501f814, 0x64135071, 0x05fdff4f, 0x1c01f000, 0x0501f80b, 0x05000007, 0x0501f8f8, 0x05020003, 0x05fdff32, 0x0501f003, 0x0501f80a, - 0x05fdff46, 0x1c01f000, 0x05f5f958, 0x05f5f957, - 0x59a80066, 0x80000040, 0x48035066, 0x05000885, + 0x05fdff46, 0x1c01f000, 0x05f5f913, 0x05f5f912, + 0x59a80069, 0x80000040, 0x48035069, 0x05000885, 0x1c01f000, 0x4c040000, 0x60000800, 0x0501f926, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x0500000a, 0x90040594, 0x0500000a, 0x90040590, - 0x05000004, 0x05f5f945, 0x600c0000, 0x0501f006, + 0x05000004, 0x05f5f900, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f8a8, 0x5c000800, 0x1c01f000, 0x4c040000, 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, 0x0500000b, 0x82040580, 0x00008000, 0x0500000c, 0x82040580, 0x00010000, 0x0500000b, - 0x82040580, 0x00018000, 0x05000004, 0x05f5f92b, + 0x82040580, 0x00018000, 0x05000004, 0x05f5f8e6, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f85e, - 0x5c000800, 0x1c01f000, 0x4c040000, 0x59a80071, - 0x80000000, 0x48035071, 0x90000585, 0x05020019, - 0x497b5071, 0x59c40801, 0x82040d00, 0x00018000, + 0x5c000800, 0x1c01f000, 0x4c040000, 0x59a80074, + 0x80000000, 0x48035074, 0x90000585, 0x05020019, + 0x497b5074, 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, 0x0500000b, 0x82040580, 0x00008000, 0x0500000c, 0x82040580, 0x00010000, 0x0500000b, - 0x82040580, 0x00018000, 0x05000004, 0x05f5f90b, + 0x82040580, 0x00018000, 0x05000004, 0x05f5f8c6, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f83e, 0x60000800, 0x0501f8d8, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x0500000a, 0x90040594, - 0x0500000a, 0x90040590, 0x05000004, 0x05f5f8f7, + 0x0500000a, 0x90040590, 0x05000004, 0x05f5f8b2, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f85a, - 0x5c000800, 0x1c01f000, 0x4c200000, 0x59a80074, - 0x82000500, 0x00007fff, 0x05f408e8, 0x59a84073, - 0x80204102, 0x05f418e5, 0x48235073, 0x80204500, + 0x5c000800, 0x1c01f000, 0x4c200000, 0x59a80077, + 0x82000500, 0x00007fff, 0x05f408a3, 0x59a84076, + 0x80204102, 0x05f418a0, 0x48235076, 0x80204500, 0x05fc07fb, 0x8c000506, 0x05020008, 0x8c000504, 0x05020008, 0x8c000502, 0x05020008, 0x8c000500, - 0x05020008, 0x05f5f8d9, 0x600c0000, 0x0501f006, + 0x05020008, 0x05f5f894, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60000000, 0x0501f002, 0x60040000, 0x0501f80c, 0x5c004000, 0x1c01f000, - 0x05011000, 0x4a03c840, 0x0010dc6c, 0x6427c842, - 0x40000000, 0x05fd17ff, 0x64235073, 0x6403506a, - 0x1c01f000, 0x4c000000, 0x59a800a7, 0x8c000500, + 0x05011000, 0x4a03c840, 0x00111bef, 0x6427c842, + 0x40000000, 0x05fd17ff, 0x64235076, 0x6403506d, + 0x1c01f000, 0x4c000000, 0x59a800aa, 0x8c000500, 0x05020002, 0x0501f960, 0x5c000000, 0x0501fa6b, 0x60080800, 0x0501f894, 0x82041500, 0xffffffe3, 0x59c41801, 0x820c1d00, 0xfffe7fff, 0x800001c0, @@ -1904,8 +1936,8 @@ static const uint32_t isp_2500_risc_code[] = { 0x820c1d40, 0x00008000, 0x840c1d32, 0x0501f00d, 0x90000d82, 0x05020006, 0x90080554, 0x820c1d40, 0x00010000, 0x840c1d32, 0x0501f006, 0x90000d83, - 0x05f608a2, 0x90080550, 0x820c1d40, 0x02018000, - 0x60080800, 0x0501f879, 0x480f8801, 0x59a800a7, + 0x05f6085d, 0x90080550, 0x820c1d40, 0x02018000, + 0x60080800, 0x0501f879, 0x480f8801, 0x59a800aa, 0x8c000500, 0x05020002, 0x0501f13c, 0x1c01f000, 0x1c01f000, 0x4c000000, 0x0501f92e, 0x5c000000, 0x0501fa3e, 0x60000800, 0x0501f867, 0x82041500, @@ -1913,7 +1945,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x90000d81, 0x05020007, 0x9008055c, 0x840c1d30, 0x0501f00d, 0x90080558, 0x840c1d30, 0x0501f00a, 0x90000d82, 0x05020004, 0x90080554, 0x840c1d30, - 0x0501f005, 0x90000d83, 0x05f6087c, 0x90080550, + 0x0501f005, 0x90000d83, 0x05f60837, 0x90080550, 0x840c1d70, 0x480f8801, 0x60000800, 0x0501f853, 0x0501fa1c, 0x0500000d, 0x4a03c014, 0x00200020, 0x60000800, 0x0501f848, 0x90040d1c, 0x90040590, @@ -1944,18 +1976,18 @@ static const uint32_t isp_2500_risc_code[] = { 0x480388a3, 0x480788a3, 0x1c01f000, 0x59c400a3, 0x84000556, 0x480388a3, 0x84000516, 0x480388a3, 0x1c01f000, 0x485fc857, 0x4863c857, 0x4c640000, - 0x4d3c0000, 0x4d400000, 0x0535fa7b, 0x48635009, + 0x4d3c0000, 0x4d400000, 0x0535feb9, 0x48635009, 0x40601800, 0x60002000, 0x0501f8b5, 0x42000000, - 0x0010e3b1, 0x0559f9fb, 0x82600500, 0x0000ff00, + 0x00112352, 0x055df8f6, 0x82600500, 0x0000ff00, 0x82000580, 0x0000f700, 0x05020004, 0x42000000, - 0x0010e399, 0x0559f9f3, 0x0559fb02, 0x05020084, + 0x0011233a, 0x055df8ee, 0x055df9fd, 0x05020084, 0x82600d00, 0x0000ff00, 0x61fe41ff, 0x800409c0, 0x0500001b, 0x82041580, 0x0000f700, 0x05000013, 0x82041580, 0x0000f800, 0x05000010, 0x82041580, 0x0000ff00, 0x6000c800, 0x05000029, 0x840439c0, - 0x0505f82c, 0x05020019, 0x83200400, 0x0010d17b, + 0x0505f848, 0x05020019, 0x83200400, 0x0010d8f9, 0x50024800, 0x59240200, 0x8c000500, 0x05000013, - 0x6004c800, 0x0501f01e, 0x42024800, 0x0010e512, + 0x6004c800, 0x0501f01e, 0x42024800, 0x001124b6, 0x59240200, 0x8c000502, 0x0500000c, 0x59c410a3, 0x82081500, 0x00008000, 0x05000008, 0x59c410a7, 0x82081500, 0x0000ff00, 0x82081580, 0x0000ff00, @@ -1965,23 +1997,23 @@ static const uint32_t isp_2500_risc_code[] = { 0x60128000, 0x60227800, 0x0501f004, 0x850e1d40, 0x60128000, 0x417a7800, 0x59a80005, 0x8c000502, 0x05020004, 0x8d0c050a, 0x05020045, 0x850e1d4a, - 0x42000000, 0x0010e398, 0x0559f9ae, 0x59a81809, - 0x604c1100, 0x0515f9ab, 0x83200580, 0x0000ffff, + 0x42000000, 0x00112339, 0x055df8a9, 0x59a81809, + 0x604c1100, 0x0515fac8, 0x83200580, 0x0000ffff, 0x05000018, 0x59240400, 0x8c000508, 0x05000009, - 0x417a7800, 0x4d300000, 0x417a6000, 0x0505f82a, + 0x417a7800, 0x4d300000, 0x417a6000, 0x0505f850, 0x5c026000, 0x59240400, 0x8c00050a, 0x05020030, 0x4d400000, 0x82600500, 0x000000ff, 0x61fe89ff, - 0x40643000, 0x603a8000, 0x0555f960, 0x60040800, - 0x60001002, 0x0531f8fb, 0x5c028000, 0x0501f024, + 0x40643000, 0x603a8000, 0x0559f827, 0x60040800, + 0x60001002, 0x0531fd2f, 0x5c028000, 0x0501f024, 0x8d0c0520, 0x05000018, 0x4c580000, 0x42024800, - 0x0010e512, 0x0559faa3, 0x4d400000, 0x59240200, + 0x001124b6, 0x055df99e, 0x4d400000, 0x59240200, 0x8c000500, 0x05000004, 0x60040800, 0x60001002, - 0x0531f8ec, 0x91264c0d, 0x8058b040, 0x05fe07f8, - 0x603a8000, 0x61fe89ff, 0x40643000, 0x0555f947, + 0x0531fd20, 0x91264c0d, 0x8058b040, 0x05fe07f8, + 0x603a8000, 0x61fe89ff, 0x40643000, 0x0559f80e, 0x5c028000, 0x5c00b000, 0x599c0817, 0x8c04050a, - 0x0502000b, 0x493fc857, 0x4943c857, 0x0501fc6b, + 0x0502000b, 0x493fc857, 0x4943c857, 0x0501fc7e, 0x0501f007, 0x8d0c0520, 0x05000005, 0x603e8000, - 0x61fe89ff, 0x60003000, 0x0555f93b, 0x497b8880, + 0x61fe89ff, 0x60003000, 0x0559f802, 0x497b8880, 0x5c028000, 0x5c027800, 0x5c00c800, 0x1c01f000, 0x60000800, 0x05fdff3c, 0x90040542, 0x60000800, 0x05fdf73e, 0x60080800, 0x05fdff37, 0x90040542, @@ -1993,20 +2025,20 @@ static const uint32_t isp_2500_risc_code[] = { 0x80040d80, 0x05fe07fb, 0x1c01f000, 0x59a80005, 0x8c000500, 0x05000008, 0x59a80008, 0x8c000500, 0x05020005, 0x84000540, 0x48035008, 0x60581100, - 0x0515f940, 0x1c01f000, 0x1c01f000, 0x59c40801, + 0x0515fa5d, 0x1c01f000, 0x1c01f000, 0x59c40801, 0x82040d00, 0x00018000, 0x82040d80, 0x00018000, 0x05000002, 0x84081518, 0x480b88a3, 0x1c01f000, 0x42000800, 0x7ff4818e, 0x59e00002, 0x8c00051e, 0x05020003, 0x42000800, 0x7ff4808e, 0x58041800, - 0x480f5084, 0x8c0c0500, 0x05020007, 0x8c0c0502, + 0x480f5087, 0x8c0c0500, 0x05020007, 0x8c0c0502, 0x05000005, 0x58044001, 0x58042002, 0x58041003, 0x0501f007, 0x42004000, 0x0003c014, 0x42002000, - 0x0003c014, 0x42001000, 0x0002e014, 0x480b507e, - 0x4813507f, 0x48235080, 0x8c0c0500, 0x05020007, + 0x0003c014, 0x42001000, 0x0002e014, 0x480b5081, + 0x48135082, 0x48235083, 0x8c0c0500, 0x05020007, 0x8c0c0504, 0x05000005, 0x58044004, 0x58042005, 0x58041006, 0x0501f004, 0x60c8400d, 0x60c8200d, - 0x60c8100d, 0x480b5081, 0x48135082, 0x48235083, - 0x1c01f000, 0x59a81081, 0x59a82082, 0x59a84083, + 0x60c8100d, 0x480b5084, 0x48135085, 0x48235086, + 0x1c01f000, 0x59a81084, 0x59a82085, 0x59a84086, 0x60380840, 0x05fdfedc, 0x82040d00, 0xffffffc0, 0x82200500, 0x003f0000, 0x80000120, 0x80040540, 0x60380840, 0x05fdfed9, 0x60380848, 0x05fdfed2, @@ -2023,7 +2055,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x0000fc00, 0x80000114, 0x60380920, 0x05fdfeab, 0x82080500, 0x000003e0, 0x8000010a, 0x603808e8, 0x05fdfea6, 0x9008051f, 0x60380900, 0x05fdfea3, - 0x1c01f000, 0x59a8107e, 0x59a8207f, 0x59a84080, + 0x1c01f000, 0x59a81081, 0x59a82082, 0x59a84083, 0x9020051f, 0x800000c2, 0x84000540, 0x60480800, 0x05fdfe9a, 0x82200500, 0x000001e0, 0x80000908, 0x84040d40, 0x82200500, 0x00000600, 0x80000106, @@ -2044,32 +2076,32 @@ static const uint32_t isp_2500_risc_code[] = { 0x82080500, 0x00001800, 0x80000916, 0x82080500, 0x0003e000, 0x80000114, 0x84000544, 0x80040540, 0x60480858, 0x05fdfe51, 0x1c01f000, 0x4c000000, - 0x0515fbe9, 0x05000007, 0x0515f99d, 0x05020003, + 0x0515fd5d, 0x05000007, 0x0515fac3, 0x05020003, 0x90000541, 0x0501f003, 0x59e00013, 0x8c00050e, 0x5c000000, 0x1c01f000, 0x4c140000, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x60800801, - 0x60281000, 0x0509faf3, 0x05000002, 0x8c14050c, + 0x60281000, 0x0509fb25, 0x05000002, 0x8c14050c, 0x4a03c014, 0x03800000, 0x5c002800, 0x1c01f000, - 0x4c000000, 0x59a80084, 0x90000510, 0x90000590, + 0x4c000000, 0x59a80087, 0x90000510, 0x90000590, 0x5c000000, 0x1c01f000, 0x4c5c0000, 0x4000b800, - 0x59a80076, 0x82000d80, 0xaabbccdd, 0x0500000f, - 0x90000c85, 0x05f21e4d, 0x4c000000, 0x0515f95b, + 0x59a80079, 0x82000d80, 0xaabbccdd, 0x0500000f, + 0x90000c85, 0x05f21e08, 0x4c000000, 0x0515fa81, 0x5c000000, 0x05020003, 0x0c01f81a, 0x0501f016, - 0x4c000000, 0x0515f96c, 0x5c000000, 0x05fc07fb, + 0x4c000000, 0x0515fa92, 0x5c000000, 0x05fc07fb, 0x0c01f819, 0x0501f010, 0x05fdffe6, 0x0500000e, 0x8d0c051a, 0x0500000c, 0x05fdffc9, 0x0502000a, 0x05fdffd2, 0x05020005, 0x905c0d83, 0x05020006, 0x6008b800, 0x0501f004, 0x905c0d81, 0x05020002, 0x600cb800, 0x405c0000, 0x5c00b800, 0x1c01f000, - 0x00101fb6, 0x00101fb7, 0x00101fb8, 0x00101fb9, - 0x00101fbd, 0x00101fbe, 0x00101fc0, 0x00101fd0, - 0x00101fde, 0x00101fee, 0x1c01f000, 0x1c01f000, + 0x00102036, 0x00102037, 0x00102038, 0x00102039, + 0x0010203d, 0x0010203e, 0x00102040, 0x00102050, + 0x0010205e, 0x0010206e, 0x1c01f000, 0x1c01f000, 0x1c01f000, 0x905c0d83, 0x05020002, 0x6008b800, 0x1c01f000, 0x1c01f000, 0x6004b800, 0x1c01f000, 0x05fdffc0, 0x05000007, 0x05fdffa5, 0x05020005, 0x05fdffae, 0x05000003, 0x6000b800, 0x0501f008, 0x905c0d83, 0x05020003, 0x6000b800, 0x0501f004, - 0x905c0d82, 0x05020002, 0x05f1fe0c, 0x1c01f000, + 0x905c0d82, 0x05020002, 0x05f1fdc7, 0x1c01f000, 0x05fdffb0, 0x0500000c, 0x05fdff95, 0x0502000a, 0x05fdff9e, 0x05020005, 0x905c0d83, 0x05020006, 0x6008b800, 0x0501f004, 0x905c0d81, 0x05020002, @@ -2081,31 +2113,31 @@ static const uint32_t isp_2500_risc_code[] = { 0x05fdff77, 0x05020004, 0x05fdff80, 0x05020002, 0x0501f004, 0x905c0d81, 0x05020002, 0x600cb800, 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x4c580000, 0x497b5086, 0x4200c000, - 0x7ff52000, 0x0515f906, 0x05020031, 0x4803c856, - 0x0515f91b, 0x05020029, 0x4803c856, 0x4a03c014, + 0x4c640000, 0x4c580000, 0x497b5089, 0x4200c000, + 0x7ff52000, 0x0515fa2c, 0x05020031, 0x4803c856, + 0x0515fa41, 0x05020029, 0x4803c856, 0x4a03c014, 0x07030701, 0x0501f965, 0x4a03c013, 0x07010701, 0x0501f9ef, 0x0501fa1f, 0x0501f981, 0x4201d000, - 0x000f4240, 0x0529fff4, 0x0501f95c, 0x0501f9e8, + 0x000f4240, 0x052dfbdf, 0x0501f95c, 0x0501f9e8, 0x0501fa23, 0x61800801, 0x600c1000, 0x60801801, - 0x0509fa1e, 0x05f00dc1, 0x61800801, 0x60001000, - 0x0509fa50, 0x05f00dbd, 0x4817c857, 0x90141d50, - 0x61800801, 0x60041000, 0x0509fa14, 0x05f00db7, - 0x0501f9df, 0x6140b801, 0x0509fa37, 0x05f00db3, + 0x0509fa4e, 0x05f00d7c, 0x61800801, 0x60001000, + 0x0509fa82, 0x05f00d78, 0x4817c857, 0x90141d50, + 0x61800801, 0x60041000, 0x0509fa44, 0x05f00d72, + 0x0501f9df, 0x6140b801, 0x0509fa68, 0x05f00d6e, 0x4867c857, 0x4c640000, 0x0501f96b, 0x0501f964, 0x5c00c800, 0x0501f01c, 0x4a03c014, 0x07e30000, - 0x59e0c813, 0x0501f8be, 0x0501f017, 0x59a80092, + 0x59e0c813, 0x0501f8be, 0x0501f017, 0x59a80095, 0x82000d80, 0x3261103c, 0x05000004, 0x82000d80, 0x338e103c, 0x050200b1, 0x4803c856, 0x42000800, 0x7ff481e6, 0x59e06802, 0x8c34051e, 0x05020003, 0x42000800, 0x7ff480e6, 0x50040000, 0x4803c857, - 0x4803508d, 0x8c00051e, 0x050000a4, 0x8200cd00, - 0x000000ff, 0x4867c857, 0x48675087, 0x50600800, - 0x48075088, 0x4807c857, 0x82040d80, 0x53434651, - 0x05020098, 0x8060c000, 0x50600800, 0x48075089, - 0x8060c000, 0x50600800, 0x4807508a, 0x8060c000, - 0x50600800, 0x4807508b, 0x8060c000, 0x50600800, - 0x82040d00, 0x0000ffff, 0x4807508c, 0x4200c000, + 0x48035090, 0x8c00051e, 0x050000a4, 0x8200cd00, + 0x000000ff, 0x4867c857, 0x4867508a, 0x50600800, + 0x4807508b, 0x4807c857, 0x82040d80, 0x53434651, + 0x05020098, 0x8060c000, 0x50600800, 0x4807508c, + 0x8060c000, 0x50600800, 0x4807508d, 0x8060c000, + 0x50600800, 0x4807508e, 0x8060c000, 0x50600800, + 0x82040d00, 0x0000ffff, 0x4807508f, 0x4200c000, 0x7ff52002, 0x5060b800, 0x825cbd00, 0xffff0000, 0x805cb920, 0x805cb800, 0x05001082, 0x8c5c051e, 0x05020080, 0x59e06802, 0x8c34051e, 0x0502006a, @@ -2115,23 +2147,23 @@ static const uint32_t isp_2500_risc_code[] = { 0xffff0000, 0x80000120, 0x82100d00, 0x0000ffff, 0x4803c857, 0x4807c857, 0x4c180000, 0x05fdfd37, 0x5c003000, 0x80183040, 0x05fe07f3, 0x41780800, - 0x40641000, 0x60100000, 0x052dff08, 0x59e06802, + 0x40641000, 0x60100000, 0x0531fb41, 0x59e06802, 0x8c34051e, 0x05020057, 0x4200c000, 0x7ff52005, 0x8008c418, 0x5060c800, 0x800409c0, 0x0500000a, 0x90041581, 0x05020003, 0x8064c910, 0x0501f006, 0x90041582, 0x05020003, 0x8064c920, 0x0501f002, 0x8064c930, 0x8264cd00, 0x000000ff, 0x4867c857, - 0x4867508e, 0x42001000, 0x7ff52002, 0x50080000, + 0x48675091, 0x42001000, 0x7ff52002, 0x50080000, 0x82000500, 0x0000ffff, 0x4803c857, 0x8c00051e, 0x05020044, 0x80640480, 0x05021042, 0x40640800, - 0x405c1000, 0x052dfec9, 0x4803c857, 0x800001c0, + 0x405c1000, 0x0531fb02, 0x4803c857, 0x800001c0, 0x0502003c, 0x59e06802, 0x8c34051e, 0x05020034, 0x4200c000, 0x7ff52045, 0x805cc418, 0x8004c418, 0x05001034, 0x05000033, 0x4863c857, 0x50600000, - 0x82000500, 0x0000ffff, 0x4803508f, 0x8c00051e, + 0x82000500, 0x0000ffff, 0x48035092, 0x8c00051e, 0x0502002c, 0x4803c857, 0x80000c97, 0x05021029, - 0x40601000, 0x80081000, 0x50080800, 0x48075090, - 0x80081000, 0x50080800, 0x48075091, 0x4000b800, + 0x40601000, 0x80081000, 0x50080800, 0x48075093, + 0x80081000, 0x50080800, 0x48075094, 0x4000b800, 0x8060c000, 0x50602000, 0x82100500, 0xffff0000, 0x80000120, 0x82100d00, 0x0000ffff, 0x4803c857, 0x4807c857, 0x05fdfce5, 0x805cb840, 0x05fe07f5, @@ -2140,7 +2172,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x8258c400, 0x7ff52000, 0xb060c400, 0x05fdf790, 0x8258c400, 0x7ff52000, 0x05fdf7aa, 0x8258c400, 0x7ff52000, 0xb060c400, 0x805cc418, 0x05fdf7cc, - 0x4a035086, 0xdeaddead, 0x5c00b000, 0x5c00c800, + 0x4a035089, 0xdeaddead, 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4867c857, 0x90640d20, 0x8004690a, 0x82640d00, 0x00000400, 0x80040912, 0x80046d4d, 0x90640d01, 0x800408c4, @@ -2149,307 +2181,314 @@ static const uint32_t isp_2500_risc_code[] = { 0x82640d00, 0x00000080, 0x80040904, 0x80046d4d, 0xb0640d00, 0x80046d4d, 0x82640d00, 0x00000200, 0x80040904, 0x80046d4d, 0x8234cd00, 0x000000ff, - 0x1c01f000, 0x0515f809, 0x0502000d, 0x4803c856, + 0x1c01f000, 0x0515f92f, 0x0502000d, 0x4803c856, 0x4a03c014, 0x18001800, 0x4a03c013, 0x18000800, 0x05fdfc97, 0x4a03c013, 0x18000000, 0x61a1d007, - 0x0529feed, 0x4a03c013, 0x18000800, 0x1c01f000, - 0x0511fffa, 0x0502000d, 0x4803c856, 0x4a03c014, + 0x052dfad8, 0x4a03c013, 0x18000800, 0x1c01f000, + 0x0515f920, 0x0502000d, 0x4803c856, 0x4a03c014, 0x18001800, 0x4a03c013, 0x18001800, 0x05fdfc88, - 0x4a03c013, 0x18001000, 0x61a1d007, 0x0529fede, - 0x4a03c013, 0x18001800, 0x1c01f000, 0x0511ffeb, + 0x4a03c013, 0x18001000, 0x61a1d007, 0x052dfac9, + 0x4a03c013, 0x18001800, 0x1c01f000, 0x0515f911, 0x0502000e, 0x0501f831, 0x60041800, 0x42001000, - 0x0010dc87, 0x60900800, 0x60002180, 0x50080000, - 0x82000500, 0x000000ff, 0x4803c857, 0x0515f8cb, - 0x05f00ca2, 0x0501f82d, 0x1c01f000, 0x0501f823, + 0x00111c0a, 0x60900800, 0x60002180, 0x50080000, + 0x82000500, 0x000000ff, 0x4803c857, 0x0515f9f1, + 0x05f00c5d, 0x0501f82d, 0x1c01f000, 0x0501f823, 0x59e00802, 0x8c04051e, 0x05000004, 0x4807c856, 0x60a00800, 0x0501f002, 0x609c0800, 0x4807c857, - 0x60041800, 0x42001000, 0x0010dc85, 0x60002180, - 0x64041000, 0x0515f8b9, 0x05f00c90, 0x0501f81b, - 0x1c01f000, 0x0511ffc9, 0x0502000f, 0x59c40001, + 0x60041800, 0x42001000, 0x00111c08, 0x60002180, + 0x64041000, 0x0515f9df, 0x05f00c4b, 0x0501f81b, + 0x1c01f000, 0x0515f8ef, 0x0502000f, 0x59c40001, 0x82000500, 0x00018000, 0x82000d80, 0x00008000, 0x05000006, 0x82000d80, 0x00010000, 0x05000003, - 0x497b50a6, 0x0501f004, 0x59a800a6, 0x90000c82, + 0x497b50a9, 0x0501f004, 0x59a800a9, 0x90000c82, 0x05fc17fc, 0x1c01f000, 0x42000800, 0x00895440, - 0x0555ff9f, 0x05020004, 0x80040840, 0x05fe07fd, - 0x0555ffab, 0x1c01f000, 0x64030000, 0x1c01f000, + 0x0559fe9a, 0x05020004, 0x80040840, 0x05fe07fd, + 0x0559fea6, 0x1c01f000, 0x64030000, 0x1c01f000, 0x4c5c0000, 0x59e0b802, 0x8c5c051e, 0x05000001, 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x6110b813, 0x4a03c016, 0x00010001, 0x59e00016, 0x8c000500, 0x05000010, 0x8c00051e, 0x05020002, 0x0501f014, 0x4a03c016, 0x00010000, 0x6140c00f, - 0x61a1d007, 0x0529fe88, 0x59e00016, 0x8c00051e, + 0x61a1d007, 0x052dfa73, 0x59e00016, 0x8c00051e, 0x05fc07f1, 0x8060c040, 0x05fe07fa, 0x4a03c016, - 0x80000000, 0x61a1d007, 0x0529fe7f, 0x805cb840, + 0x80000000, 0x61a1d007, 0x052dfa6a, 0x805cb840, 0x05fe07e9, 0x4803c856, 0x4a03c016, 0x80008000, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4a03c013, 0x04010401, 0x4a03c016, 0x80010000, 0x05fdfc18, 0x1c01f000, 0x60800801, 0x61d0100d, 0x8408157e, - 0x0509f8d4, 0x05f00c41, 0x48175079, 0x4817c857, - 0x60800801, 0x61c0100d, 0x8408157e, 0x0509f8cd, - 0x05f00c3a, 0x4817507a, 0x4817c857, 0x60800801, - 0x61e0100d, 0x8408157e, 0x0509f8c6, 0x05f00c33, - 0x4817507b, 0x4817c857, 0x641f507c, 0x617c1800, + 0x0509f906, 0x05f00bfc, 0x4817507c, 0x4817c857, + 0x60800801, 0x61c0100d, 0x8408157e, 0x0509f8ff, + 0x05f00bf5, 0x4817507d, 0x4817c857, 0x60800801, + 0x61e0100d, 0x8408157e, 0x0509f8f8, 0x05f00bee, + 0x4817507e, 0x4817c857, 0x641f507f, 0x617c1800, 0x0501f833, 0x0501f84e, 0x60600801, 0x60001000, - 0x0509f8bc, 0x05020004, 0x0501f859, 0x60600801, - 0x05f1fc1f, 0x0501f864, 0x4817c857, 0x59a8207c, - 0x59a80079, 0x80140480, 0x0502101c, 0x59a8007a, - 0x80140480, 0x05021012, 0x59a8007b, 0x80140480, + 0x0509f8ee, 0x05020004, 0x0501f859, 0x60600801, + 0x05f1fbda, 0x0501f864, 0x4817c857, 0x59a8207f, + 0x59a8007c, 0x80140480, 0x0502101c, 0x59a8007d, + 0x80140480, 0x05021012, 0x59a8007e, 0x80140480, 0x05021008, 0x601c1800, 0x90100583, 0x05020014, - 0x90142c05, 0x59a8007b, 0x80140480, 0x05001010, + 0x90142c05, 0x59a8007e, 0x80140480, 0x05001010, 0x600c1800, 0x90100582, 0x0502000d, 0x90142c05, - 0x59a8007a, 0x80140480, 0x05001009, 0x60081800, - 0x90100580, 0x05020006, 0x90142c05, 0x59a80079, + 0x59a8007d, 0x80140480, 0x05001009, 0x60081800, + 0x90100580, 0x05020006, 0x90142c05, 0x59a8007c, 0x80140480, 0x05001002, 0x60001800, 0x80102583, - 0x480f507c, 0x480fc857, 0x05000003, 0xb00c1d58, - 0x0501f803, 0x65935078, 0x1c01f000, 0x59a80a77, + 0x480f507f, 0x480fc857, 0x05000003, 0xb00c1d58, + 0x0501f803, 0x6593507b, 0x1c01f000, 0x59a80a7a, 0x8c040500, 0x05000003, 0x820c1d00, 0xfffffff7, - 0x0501f817, 0x61800801, 0x60041000, 0x0509f84f, - 0x05f00bf2, 0x1c01f000, 0x4c580000, 0x0501f810, - 0x6140b00f, 0x61800801, 0x60001000, 0x0509f87d, - 0x05f00bea, 0x4817c857, 0x82140d00, 0x000000a0, + 0x0501f817, 0x61800801, 0x60041000, 0x0509f87f, + 0x05f00bad, 0x1c01f000, 0x4c580000, 0x0501f810, + 0x6140b00f, 0x61800801, 0x60001000, 0x0509f8af, + 0x05f00ba5, 0x4817c857, 0x82140d00, 0x000000a0, 0x90040da0, 0x05000004, 0x8058b040, 0x05fe07f6, 0x90000541, 0x5c00b000, 0x1c01f000, 0x05fdff6d, 0x05000004, 0x4a03c013, 0x04010401, 0x0501f003, 0x4a03c013, 0x04010400, 0x05fdf3a9, 0x05fdff65, 0x05000004, 0x4a03c013, 0x04010001, 0x0501f003, - 0x4a03c013, 0x04010000, 0x05fdf3a1, 0x59a80a77, - 0x84040d40, 0x4807c857, 0x48075277, 0x61800801, - 0x60001000, 0x0509f85b, 0x05f00bc8, 0x4817c857, + 0x4a03c013, 0x04010000, 0x05fdf3a1, 0x59a80a7a, + 0x84040d40, 0x4807c857, 0x4807527a, 0x61800801, + 0x60001000, 0x0509f88d, 0x05f00b83, 0x4817c857, 0x82142d00, 0xfffffff7, 0xb0142d40, 0x40141800, - 0x05fdf7c7, 0xb0142c80, 0x05001010, 0x59a80084, - 0x8c000520, 0x0500000a, 0x59a8087d, 0x9004050f, + 0x05fdf7c7, 0xb0142c80, 0x05001010, 0x59a80087, + 0x8c000520, 0x0500000a, 0x59a80880, 0x9004050f, 0x05020007, 0x80040910, 0x82040d00, 0x000000ff, 0x4807c857, 0x80142c01, 0x0501f002, 0x90142c05, 0x4817c857, 0x1c01f000, 0x41782800, 0x05fdf7fd, - 0x60600801, 0x60241000, 0x60101800, 0x0509f807, - 0x05f00baa, 0x60600801, 0x60281000, 0x601c1800, - 0x0509f802, 0x05f00ba5, 0x1c01f000, 0x42000800, + 0x60600801, 0x60241000, 0x60101800, 0x0509f837, + 0x05f00b65, 0x60600801, 0x60281000, 0x601c1800, + 0x0509f832, 0x05f00b60, 0x1c01f000, 0x42000800, 0x7ff481f4, 0x59e00002, 0x8c00051e, 0x05020003, 0x42000800, 0x7ff480f4, 0x4807c857, 0x50040000, - 0x4803c857, 0x4803507d, 0x1c01f000, 0x59c468a4, + 0x4803c857, 0x48035080, 0x1c01f000, 0x59c468a4, + 0x90346d0f, 0x90346d8a, 0x1c01f000, 0x59c468a4, 0x90346d0f, 0x90346d82, 0x1c01f000, 0x59c468a4, 0x90346d0f, 0x90346d81, 0x1c01f000, 0x59c468a4, - 0x90346d0f, 0x90346d80, 0x1c01f000, 0x59a80006, - 0x8c00051c, 0x05020016, 0x4937c857, 0x0539f9b0, - 0x05000013, 0x4926601d, 0x4936600a, 0x0545fe38, - 0x64066407, 0x417a7800, 0x0519fa89, 0x59a80044, - 0x80000000, 0x48035044, 0x60127000, 0x599c0019, - 0x8c00050e, 0x05000002, 0x60027000, 0x599c0208, - 0x48026c12, 0x0009f800, 0x90000541, 0x1c01f000, - 0x4937c857, 0x0539f99a, 0x0500001b, 0x4926601d, - 0x4936600a, 0x59340403, 0x82000580, 0x000007fe, - 0x05000005, 0x4d3c0000, 0x417a7800, 0x0501f8b9, - 0x5c027800, 0x0545fe1a, 0x64066407, 0x417a7800, - 0x0519fa6b, 0x600c0800, 0x0519fa73, 0x0555fe9a, - 0x05020004, 0x59a80044, 0x80000000, 0x48035044, - 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f800, - 0x90000541, 0x1c01f000, 0x4803c856, 0x59a80006, - 0x8c00051e, 0x05020008, 0x61f2880f, 0x42003000, - 0x00fffffc, 0x0519fa87, 0x05020007, 0x0501f808, - 0x05000005, 0x4a03504a, 0x0000ffff, 0x90000541, - 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x4937c857, - 0x0539f96b, 0x05000011, 0x4926601d, 0x4936600a, - 0x0545fdf3, 0x64066407, 0x417a7800, 0x0519fa44, - 0x600c0800, 0x0519fa4c, 0x59a8004b, 0x80000000, - 0x4803504b, 0x599c0208, 0x48026c12, 0x600a7000, - 0x0009f800, 0x90000541, 0x1c01f000, 0x480bc857, - 0x492fc857, 0x4923c857, 0x4927c857, 0x4c5c0000, - 0x4008b800, 0x61f6880f, 0x42003000, 0x00fffffd, - 0x0519fa60, 0x0502001b, 0x5934000a, 0x84000544, - 0x4802680a, 0x0539f94a, 0x05000016, 0x4926601d, - 0x4936600a, 0x812e59c0, 0x05000006, 0x592c0408, - 0x8c00051e, 0x05000003, 0x48ee602d, 0x0501f004, - 0x59a80249, 0x8400055c, 0x48035249, 0x492e6009, - 0x64066407, 0x485e601e, 0x0545fdc5, 0x608a7000, - 0x0009f800, 0x90000541, 0x5c00b800, 0x1c01f000, - 0x80000580, 0x05fdf7fd, 0x5c000000, 0x4c000000, - 0x4803c857, 0x4943c857, 0x493fc857, 0x4d340000, - 0x4d440000, 0x4c580000, 0x4d2c0000, 0x4c5c0000, - 0x0531fa37, 0x4df00000, 0x833c0500, 0x00001800, - 0x05000003, 0x8d3c0516, 0x052c0f54, 0x0531f81d, - 0x0531f8a9, 0x052dfd9f, 0x053dfcb0, 0x5c03e000, - 0x05300a1c, 0x61c0b00f, 0x417a8800, 0x0001fb00, - 0x05020025, 0x8d3c0506, 0x05000004, 0x59340200, - 0x8c00050e, 0x05020020, 0x0519fccf, 0x497a6c0b, - 0x8d3c0518, 0x05000017, 0x5934b80f, 0x805cb9c0, - 0x0500000a, 0x405e5800, 0x49425a0a, 0x492fc857, - 0x592cb800, 0x0001fb82, 0x805cb9c0, 0x05fe07fa, - 0x497a680f, 0x497a6810, 0x4937c857, 0x4a026c00, - 0x00000707, 0x497a6a03, 0x497a6811, 0x59340402, - 0x82000500, 0x000000ff, 0x48026c02, 0x0501f006, - 0x4937c857, 0x4a026c00, 0x00000707, 0x8d0c0520, - 0x05140f78, 0x81468800, 0x8058b040, 0x05fe07d8, - 0x8d3c0502, 0x05000011, 0x497b5046, 0x61c2880f, - 0x6040b000, 0x0001fb00, 0x05020009, 0x4937c857, - 0x5934b80f, 0x5934000c, 0x4a026c00, 0x00000707, - 0x805c0540, 0x05020002, 0x0515ff66, 0x81468800, - 0x8058b040, 0x05fe07f4, 0x5c00b800, 0x5c025800, - 0x5c00b000, 0x5c028800, 0x5c026800, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4933c857, - 0x493fc857, 0x4927c857, 0x4d340000, 0x4d400000, - 0x4d440000, 0x4d2c0000, 0x4c5c0000, 0x0531f9dc, - 0x4df00000, 0x5932680a, 0x813669c0, 0x05000030, - 0x59368c03, 0x60a68000, 0x833c0500, 0x00001800, - 0x05000003, 0x8d3c0516, 0x052c0f03, 0x0531f808, - 0x0531f851, 0x052dfdd7, 0x0551fb2b, 0x4937c857, + 0x90346d0f, 0x90346d80, 0x1c01f000, 0x59c40007, + 0x84000568, 0x48038807, 0x1c01f000, 0x42006000, + 0xfc18ffff, 0x42006800, 0x01000000, 0x0519f973, + 0x05fdfb4f, 0x59c408a4, 0x90040d0f, 0x90040d8c, + 0x052208f8, 0x1c01f000, 0x59a80006, 0x8c00051c, + 0x05020016, 0x4937c857, 0x0539fe32, 0x05000013, + 0x4926601d, 0x4936600a, 0x0549fb3d, 0x64066407, + 0x417a7800, 0x0519fc09, 0x59a80047, 0x80000000, + 0x48035047, 0x60127000, 0x599c0019, 0x8c00050e, + 0x05000002, 0x60027000, 0x599c0208, 0x48026c12, + 0x0009f839, 0x90000541, 0x1c01f000, 0x4937c857, + 0x0539fe1c, 0x0500001b, 0x4926601d, 0x4936600a, + 0x59340403, 0x82000580, 0x000007fe, 0x05000005, + 0x4d3c0000, 0x417a7800, 0x0501f8bd, 0x5c027800, + 0x0549fb1f, 0x64066407, 0x417a7800, 0x0519fbeb, + 0x600c0800, 0x0519fbf3, 0x0559fd82, 0x05020004, + 0x59a80047, 0x80000000, 0x48035047, 0x599c0208, + 0x48026c12, 0x600a7000, 0x0009f839, 0x90000541, + 0x1c01f000, 0x4803c856, 0x59a80006, 0x8c00051e, + 0x05020008, 0x61f2880f, 0x42003000, 0x00fffffc, + 0x0519fc0f, 0x05020007, 0x0501f808, 0x05000005, + 0x4a03504d, 0x0000ffff, 0x90000541, 0x1c01f000, + 0x80000580, 0x05fdf7fe, 0x4937c857, 0x0539fded, + 0x05000011, 0x4926601d, 0x4936600a, 0x0549faf8, + 0x64066407, 0x417a7800, 0x0519fbc4, 0x600c0800, + 0x0519fbcc, 0x59a8004e, 0x80000000, 0x4803504e, + 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f839, + 0x90000541, 0x1c01f000, 0x480bc857, 0x492fc857, + 0x4923c857, 0x4927c857, 0x4c5c0000, 0x4008b800, + 0x61f6880f, 0x42003000, 0x00fffffd, 0x0519fbe8, + 0x0502001b, 0x5934000a, 0x84000544, 0x4802680a, + 0x0539fdcc, 0x05000016, 0x4926601d, 0x4936600a, + 0x812e59c0, 0x05000006, 0x592c0408, 0x8c00051e, + 0x05000003, 0x48ee602d, 0x0501f004, 0x59a8024c, + 0x8400055c, 0x4803524c, 0x492e6009, 0x64066407, + 0x485e601e, 0x0549faca, 0x608a7000, 0x0009f839, + 0x90000541, 0x5c00b800, 0x1c01f000, 0x80000580, + 0x05fdf7fd, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4943c857, 0x493fc857, 0x4d340000, 0x4d440000, + 0x4c580000, 0x4d2c0000, 0x4c5c0000, 0x0531fe62, + 0x4df00000, 0x833c0500, 0x00001800, 0x05000003, + 0x8d3c0516, 0x05300b7a, 0x0531fc49, 0x0531fcd5, + 0x0531f9c5, 0x0541f964, 0x5c03e000, 0x05300e47, + 0x59a8b0ac, 0x417a8800, 0x0001fb08, 0x05020025, 0x8d3c0506, 0x05000004, 0x59340200, 0x8c00050e, - 0x0502001f, 0x0519fc74, 0x497a6c0b, 0x8d3c0518, + 0x05020020, 0x0519fea6, 0x497a6c0b, 0x8d3c0518, 0x05000017, 0x5934b80f, 0x805cb9c0, 0x0500000a, 0x405e5800, 0x49425a0a, 0x492fc857, 0x592cb800, - 0x0001fb82, 0x805cb9c0, 0x05fe07fa, 0x497a680f, + 0x0001fba8, 0x805cb9c0, 0x05fe07fa, 0x497a680f, 0x497a6810, 0x4937c857, 0x4a026c00, 0x00000707, 0x497a6a03, 0x497a6811, 0x59340402, 0x82000500, - 0x000000ff, 0x48026c02, 0x0501f005, 0x4a026c00, - 0x00000707, 0x8d0c0520, 0x05140f1e, 0x5c03e000, - 0x05300998, 0x5c00b800, 0x5c025800, 0x5c028800, - 0x5c028000, 0x5c026800, 0x1c01f000, 0x4933c857, - 0x59a80249, 0x8c000508, 0x05020013, 0x5930500a, - 0x482bc857, 0x916c0582, 0x0502000f, 0x0501f81a, - 0x0502000d, 0x58280403, 0x82004d80, 0x000007fc, - 0x0500000a, 0x82004d80, 0x000007fd, 0x05000006, - 0x59a80044, 0x80000040, 0x4803c857, 0x05f01a53, - 0x48035044, 0x1c01f000, 0x59300429, 0x90004da1, - 0x05fc07f8, 0xb0000591, 0x05fc07fb, 0x59a8004b, - 0x80000040, 0x4803c857, 0x05fc17f7, 0x4803504b, - 0x1c01f000, 0x59300009, 0x800001c0, 0x05020007, - 0x59300403, 0x90000581, 0x05020003, 0x90000541, - 0x0501f002, 0x80000580, 0x1c01f000, 0x4937c857, - 0x59340200, 0x84000502, 0x48026a00, 0x1c01f000, - 0x4933c857, 0x493fc857, 0x4947c857, 0x4927c857, - 0x4d400000, 0x4d340000, 0x4d440000, 0x4c580000, - 0x0531f967, 0x4df00000, 0x8060c1c0, 0x05020003, - 0x6004b000, 0x0501f003, 0x61c0b00f, 0x417a8800, - 0x41440000, 0x81ac0400, 0x50000000, 0x80026d40, - 0x05000018, 0x59245005, 0x59340013, 0x82000500, + 0x000000ff, 0x48026c02, 0x0501f006, 0x4937c857, + 0x4a026c00, 0x00000707, 0x8d0c0520, 0x051808dc, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07d4, 0x8d3c0502, + 0x05000011, 0x497b5049, 0x61c2880f, 0x6040b000, + 0x0001fb08, 0x05020009, 0x4937c857, 0x5934b80f, + 0x5934000c, 0x4a026c00, 0x00000707, 0x805c0540, + 0x05020002, 0x0519f8c6, 0x81468800, 0x8058b040, + 0x05fe07f4, 0x5c00b800, 0x5c025800, 0x5c00b000, + 0x5c028800, 0x5c026800, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4933c857, 0x493fc857, + 0x4927c857, 0x4d340000, 0x4d400000, 0x4d440000, + 0x4d2c0000, 0x4c5c0000, 0x0531fe03, 0x4df00000, + 0x5932680a, 0x813669c0, 0x05000030, 0x59368c03, + 0x60a68000, 0x833c0500, 0x00001800, 0x05000003, + 0x8d3c0516, 0x05300b25, 0x0531fc30, 0x0531fc79, + 0x0531f9f9, 0x0555f9ab, 0x4937c857, 0x8d3c0506, + 0x05000004, 0x59340200, 0x8c00050e, 0x0502001f, + 0x0519fe47, 0x497a6c0b, 0x8d3c0518, 0x05000017, + 0x5934b80f, 0x805cb9c0, 0x0500000a, 0x405e5800, + 0x49425a0a, 0x492fc857, 0x592cb800, 0x0001fba8, + 0x805cb9c0, 0x05fe07fa, 0x497a680f, 0x497a6810, + 0x4937c857, 0x4a026c00, 0x00000707, 0x497a6a03, + 0x497a6811, 0x59340402, 0x82000500, 0x000000ff, + 0x48026c02, 0x0501f005, 0x4a026c00, 0x00000707, + 0x8d0c0520, 0x0518087e, 0x5c03e000, 0x05300dbf, + 0x5c00b800, 0x5c025800, 0x5c028800, 0x5c028000, + 0x5c026800, 0x1c01f000, 0x4933c857, 0x59a8024c, + 0x8c000508, 0x05020013, 0x5930500a, 0x482bc857, + 0x916c0582, 0x0502000f, 0x0501f81a, 0x0502000d, + 0x58280403, 0x82004d80, 0x000007fc, 0x0500000a, + 0x82004d80, 0x000007fd, 0x05000006, 0x59a80047, + 0x80000040, 0x4803c857, 0x05f019f7, 0x48035047, + 0x1c01f000, 0x59300429, 0x90004da1, 0x05fc07f8, + 0xb0000591, 0x05fc07fb, 0x59a8004e, 0x80000040, + 0x4803c857, 0x05fc17f7, 0x4803504e, 0x1c01f000, + 0x59300009, 0x800001c0, 0x05020007, 0x59300403, + 0x90000581, 0x05020003, 0x90000541, 0x0501f002, + 0x80000580, 0x1c01f000, 0x4937c857, 0x59340200, + 0x84000502, 0x48026a00, 0x1c01f000, 0x4933c857, + 0x493fc857, 0x4947c857, 0x4927c857, 0x4d400000, + 0x4d340000, 0x4d440000, 0x4c580000, 0x0531fd8e, + 0x4df00000, 0x8060c1c0, 0x05020003, 0x6004b000, + 0x0501f003, 0x59a8b0ac, 0x417a8800, 0x0001fb08, + 0x05020018, 0x59245005, 0x59340013, 0x82000500, 0x00ffffff, 0x80280580, 0x05020012, 0x4d3c0000, - 0x60067800, 0x0519fd32, 0x5c027800, 0x60a68000, - 0x052dff87, 0x052dffd0, 0x052dfd56, 0x0519fe5e, + 0x60067800, 0x0519ff10, 0x5c027800, 0x60a68000, + 0x0531fbb2, 0x0531fbfb, 0x0531f97b, 0x051df893, 0x05020005, 0x4937c857, 0x4a026c00, 0x00000404, - 0x0501f002, 0x0519fe83, 0x0551faa3, 0x0519fbf2, - 0x81468800, 0x8058b040, 0x05fe07e2, 0x5c03e000, - 0x05300930, 0x5c00b000, 0x5c028800, 0x5c026800, + 0x0501f002, 0x051df8b8, 0x0555f926, 0x0519fdc8, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07e1, 0x5c03e000, + 0x05300d56, 0x5c00b000, 0x5c028800, 0x5c026800, 0x5c028000, 0x1c01f000, 0x4937c857, 0x4947c857, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x59a800b2, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x59a800b7, 0x8c000500, 0x0500001d, 0x599c0017, 0x8c00050a, 0x0502001a, 0x5934ba02, 0x825cbd00, 0x000000ff, 0x485fc857, 0x4178c000, 0x4178c800, 0x82600400, - 0x00110258, 0x50002000, 0x8060c1c0, 0x05000008, + 0x001141fc, 0x50002000, 0x8060c1c0, 0x05000008, 0x82100500, 0x000000ff, 0x82002d80, 0x000000ff, 0x0500000a, 0x805c0580, 0x0500000a, 0x80102110, 0x8064c800, 0x90640584, 0x05fe07f6, 0x8060c000, 0x906005a0, 0x05fe07ed, 0x4813c857, 0x90000541, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x59a80249, 0x8c000512, 0x05f20a9b, 0x1c01f000, + 0x59a8024c, 0x8c000512, 0x05f20a32, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c500000, - 0x6004b000, 0x42024800, 0x0010e512, 0x417a4000, - 0x61fa880f, 0x0555fd04, 0x05000020, 0x0555fce1, - 0x5924ba00, 0x8c5c0500, 0x0500007c, 0x59a8a249, + 0x6004b000, 0x42024800, 0x001124b6, 0x417a4000, + 0x61fa880f, 0x0559fbe7, 0x05000020, 0x0559fbc4, + 0x5924ba00, 0x8c5c0500, 0x0500007c, 0x59a8a24c, 0x8c500506, 0x0500000d, 0x825c0500, 0x000000e0, 0x82000580, 0x000000e0, 0x05000074, 0x0501f881, - 0x59a80044, 0x4923c857, 0x4803c857, 0x80000000, - 0x48035044, 0x0501f06d, 0x8c5c051e, 0x0500006b, + 0x59a80047, 0x4923c857, 0x4803c857, 0x80000000, + 0x48035047, 0x0501f06d, 0x8c5c051e, 0x0500006b, 0x4927c856, 0x6004b000, 0x825c0500, 0x000000e1, 0x48024a00, 0x485fc857, 0x825cc500, 0x000000e0, - 0x0502001f, 0x0501f018, 0x051dfc7c, 0x05000002, - 0x0555fcc4, 0x5924ba00, 0x8c5c0500, 0x0500005b, - 0x0555fcdd, 0x05000005, 0x59a80249, 0x8c00050e, - 0x05020013, 0x0501f004, 0x83240d80, 0x0010e512, + 0x0502001f, 0x0501f018, 0x051dfece, 0x05000002, + 0x0559fba7, 0x5924ba00, 0x8c5c0500, 0x0500005b, + 0x0559fbc0, 0x05000005, 0x59a8024c, 0x8c00050e, + 0x05020013, 0x0501f004, 0x83240d80, 0x001124b6, 0x0502000f, 0x825cc500, 0x000000e0, 0x0502000c, - 0x051dfc6a, 0x05000004, 0x42000800, 0xffffff1d, - 0x0501fa82, 0x59a80249, 0x82000500, 0xffffdafc, - 0x8400054e, 0x48035249, 0x0501f006, 0x82600580, + 0x051dfebc, 0x05000004, 0x42000800, 0xffffff1d, + 0x0501fa91, 0x59a8024c, 0x82000500, 0xffffdafc, + 0x8400054e, 0x4803524c, 0x0501f006, 0x82600580, 0x000000e0, 0x0502004a, 0x8c5c050e, 0x0502003f, 0x5924c809, 0x9064040e, 0x50000000, 0x4803c857, - 0x80026d40, 0x05000011, 0x051dfc54, 0x05000013, + 0x80026d40, 0x05000011, 0x051dfea6, 0x05000013, 0x59340200, 0x8c00051a, 0x05020034, 0x59240805, - 0x80040910, 0x0500000d, 0x59a80046, 0x4803c857, + 0x80040910, 0x0500000d, 0x59a80049, 0x4803c857, 0x4807c857, 0x80040580, 0x05000008, 0x4a026806, 0xdeaddead, 0x0501f005, 0x42003000, 0x00fffffe, - 0x0519f8a8, 0x0502002e, 0x0535ff95, 0x0500002c, + 0x0519fa2b, 0x0502002e, 0x0539fc12, 0x0500002c, 0x4936600a, 0x4926601d, 0x64066407, 0x417a7800, - 0x0519f86f, 0x05fdff2a, 0x600c0800, 0x0519f876, - 0x0545fc17, 0x49235045, 0x4923c857, 0x59240005, + 0x0519f9ea, 0x05fdff29, 0x600c0800, 0x0519f9f1, + 0x0549f917, 0x49235048, 0x4923c857, 0x59240005, 0x82000500, 0x000000ff, 0x48024805, 0x916c0583, - 0x05000004, 0x59a80044, 0x80000000, 0x48035044, - 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f800, + 0x05000004, 0x59a80047, 0x80000000, 0x48035047, + 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f839, 0x59240200, 0x82000500, 0xffffff9d, 0x8400054e, - 0x8400055e, 0x59a80ccc, 0x8c04050a, 0x05000002, + 0x8400055e, 0x59a80cd1, 0x8c04050a, 0x05000002, 0x8400055e, 0x48024a00, 0x81224000, 0x91264c0d, - 0x8058b040, 0x05000004, 0x0555fc7f, 0x05fe077d, - 0x05fdf79d, 0x4a035045, 0x0000ffff, 0x5c00a000, + 0x8058b040, 0x05000004, 0x0559fb62, 0x05fe077d, + 0x05fdf79d, 0x4a035048, 0x0000ffff, 0x5c00a000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4d300000, 0x4d440000, 0x4d340000, 0x61fa880f, - 0x42003000, 0x00fffffe, 0x0519f86e, 0x0502001c, - 0x0535ff5b, 0x0500001a, 0x4927c857, 0x4923c857, + 0x42003000, 0x00fffffe, 0x0519f9f1, 0x0502001c, + 0x0539fbd8, 0x0500001a, 0x4927c857, 0x4923c857, 0x497a6009, 0x4936600a, 0x4926601d, 0x64066407, - 0x600c0800, 0x0519f83c, 0x599c0208, 0x48026c12, - 0x600a7000, 0x0009f800, 0x59a80a49, 0x8c040506, + 0x600c0800, 0x0519f9b7, 0x599c0208, 0x48026c12, + 0x600a7000, 0x0009f839, 0x59a80a4c, 0x8c040506, 0x05020002, 0x497a4805, 0x59240200, 0x82000500, 0xffffff9d, 0x8400054e, 0x48024a00, 0x5c026800, 0x5c028800, 0x5c026000, 0x1c01f000, 0x80000580, 0x05fdf7fb, 0x4d200000, 0x4d240000, 0x4c580000, 0x4d340000, 0x4d300000, 0x4d3c0000, 0x4d380000, - 0x4d440000, 0x0519fc0b, 0x05020009, 0x051dfbdf, - 0x05000004, 0x59a81249, 0x8c080506, 0x05000003, + 0x4d440000, 0x0519fde5, 0x05020009, 0x051dfe31, + 0x05000004, 0x59a8124c, 0x8c080506, 0x05000003, 0x05fdff34, 0x0501f002, 0x0501f80a, 0x5c028800, 0x5c027000, 0x5c027800, 0x5c026000, 0x5c026800, 0x5c00b000, 0x5c024800, 0x5c024000, 0x1c01f000, - 0x4803c856, 0x4c600000, 0x0555fc16, 0x4200c000, - 0x0010e510, 0x50600000, 0x82024580, 0x0000ffff, - 0x05020004, 0x42024800, 0x0010e512, 0x0501f008, + 0x4803c856, 0x4c600000, 0x0559faf9, 0x4200c000, + 0x001124b4, 0x50600000, 0x82024580, 0x0000ffff, + 0x05020004, 0x42024800, 0x001124b6, 0x0501f008, 0x8058b480, 0x05000026, 0x05001025, 0x40024000, - 0x82000400, 0x0010d17b, 0x50024800, 0x4520c000, + 0x82000400, 0x0010d8f9, 0x50024800, 0x4520c000, 0x59240005, 0x82000500, 0x000000ff, 0x48024805, 0x59240200, 0x90000503, 0x90000583, 0x0502000e, - 0x59240400, 0x8c000508, 0x0500000b, 0x59a800b2, + 0x59240400, 0x8c000508, 0x0500000b, 0x59a800b7, 0x8c000500, 0x05000003, 0x0501f813, 0x0501f002, - 0x0501f85e, 0x59a80045, 0x82000580, 0x0000ffff, + 0x0501f85e, 0x59a80048, 0x82000580, 0x0000ffff, 0x0502000b, 0x81224000, 0x91264c0d, 0x8058b040, 0x05fe07e7, 0x599c0019, 0x8c00050e, 0x05020004, - 0x59a800b2, 0x8c000500, 0x05020881, 0x5c00c000, + 0x59a800b7, 0x8c000500, 0x05020881, 0x5c00c000, 0x1c01f000, 0x4927c857, 0x4923c857, 0x4c580000, 0x4c100000, 0x4c0c0000, 0x4c080000, 0x4c040000, - 0x4d240000, 0x59243c08, 0x59a81845, 0x820c1580, + 0x4d240000, 0x59243c08, 0x59a81848, 0x820c1580, 0x0000ffff, 0x05020002, 0x60041800, 0x800c1104, - 0x82082400, 0x00110258, 0x50102000, 0x900c0503, - 0x0c01f001, 0x0010252d, 0x0010252f, 0x00102531, - 0x00102533, 0x40101000, 0x0501f006, 0x80101110, + 0x82082400, 0x001141fc, 0x50102000, 0x900c0503, + 0x0c01f001, 0x001025c5, 0x001025c7, 0x001025c9, + 0x001025cb, 0x40101000, 0x0501f006, 0x80101110, 0x0501f004, 0x80101120, 0x0501f002, 0x80101130, 0x4c0c0000, 0x82080500, 0x000000ff, 0x801c0d80, 0x05000019, 0x800001c0, 0x05000017, 0x40000800, - 0x82000580, 0x000000ff, 0x05000017, 0x0501f916, - 0x05000011, 0x40040000, 0x0525fb8c, 0x0502001c, - 0x0519f84b, 0x05000004, 0x05fdfd09, 0x05000018, + 0x82000580, 0x000000ff, 0x05000017, 0x0501f924, + 0x05000011, 0x40040000, 0x0525fea0, 0x0502001c, + 0x0519f9f0, 0x05000004, 0x05fdfd04, 0x05000018, 0x0501f009, 0x599c0019, 0x8c00050e, 0x05020006, - 0x0515ffc8, 0x05020012, 0x05fdfe51, 0x05fdfd19, - 0x0500000f, 0x5c001800, 0x480f5045, 0x800c1800, - 0x05fdf7cf, 0x5c001800, 0x4a035045, 0x0000ffff, + 0x0519f94b, 0x05020012, 0x05fdfe50, 0x05fdfd14, + 0x0500000f, 0x5c001800, 0x480f5048, 0x800c1800, + 0x05fdf7cf, 0x5c001800, 0x4a035048, 0x0000ffff, 0x5c024800, 0x5c000800, 0x5c001000, 0x5c001800, 0x5c002000, 0x5c00b000, 0x1c01f000, 0x5c001800, - 0x480f5045, 0x05fdf7f7, 0x4927c857, 0x4c5c0000, + 0x480f5048, 0x05fdf7f7, 0x4927c857, 0x4c5c0000, 0x4c580000, 0x4c540000, 0x61f8b000, 0x59243c08, - 0x59a80045, 0x82001580, 0x0000ffff, 0x05020003, + 0x59a80048, 0x82001580, 0x0000ffff, 0x05020003, 0x4178a800, 0x0501f004, 0x8058b480, 0x0500101e, - 0x4000a800, 0x48575045, 0x8254bc00, 0x00102853, + 0x4000a800, 0x48575048, 0x8254bc00, 0x001028fb, 0x505cb800, 0x825cbd00, 0x000000ff, 0x405c0800, - 0x0501f8dd, 0x05000011, 0x405c0000, 0x0525fb53, - 0x05020013, 0x0519f812, 0x05000004, 0x05fdfcd0, + 0x0501f8eb, 0x05000011, 0x405c0000, 0x0525fe67, + 0x05020013, 0x0519f9b7, 0x05000004, 0x05fdfccb, 0x0500000f, 0x0501f009, 0x599c0019, 0x8c00050e, - 0x05020006, 0x0515ff8f, 0x05020009, 0x05fdfe18, - 0x05fdfce0, 0x05000006, 0x8054a800, 0x8058b040, - 0x05fe07e5, 0x4a035045, 0x0000ffff, 0x5c00a800, + 0x05020006, 0x0519f912, 0x05020009, 0x05fdfe17, + 0x05fdfcdb, 0x05000006, 0x8054a800, 0x8058b040, + 0x05fe07e5, 0x4a035048, 0x0000ffff, 0x5c00a800, 0x5c00b000, 0x5c00b800, 0x1c01f000, 0x4c580000, - 0x4d440000, 0x61c0b00f, 0x80028d80, 0x0001fb00, + 0x4d440000, 0x59a8b0ac, 0x80028d80, 0x0001fb08, 0x05020018, 0x05fdfe41, 0x05000016, 0x4937c857, - 0x0519fcd5, 0x42026000, 0x00111a70, 0x4936600a, - 0x497a6009, 0x4926601d, 0x417a7800, 0x05fdfd89, - 0x42000000, 0x0010e454, 0x0555fa36, 0x59240400, + 0x0519ff06, 0x42026000, 0x00115a14, 0x4936600a, + 0x497a6009, 0x4926601d, 0x417a7800, 0x05fdfd88, + 0x42000000, 0x001123f8, 0x0559f919, 0x59240400, 0x8c00050a, 0x05020007, 0x41782800, 0x60203000, - 0x4d400000, 0x60a68000, 0x0551f9f8, 0x5c028000, - 0x81468800, 0x8058b040, 0x05fe07e5, 0x5c028800, + 0x4d400000, 0x60a68000, 0x0555f8a7, 0x5c028000, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07e1, 0x5c028800, 0x5c00b000, 0x1c01f000, 0x4927c857, 0x4c5c0000, 0x400cb800, 0x4d200000, 0x4d240000, 0x4c580000, - 0x0555fb38, 0x417a4000, 0x42024800, 0x0010e512, + 0x0559fa17, 0x417a4000, 0x42024800, 0x001124b6, 0x59240200, 0x8c000500, 0x0500000f, 0x8c5c0508, 0x05000004, 0x8400055a, 0x48024a00, 0x0501f00a, 0x82000500, 0x000000e0, 0x82000580, 0x000000e0, @@ -2458,10 +2497,10 @@ static const uint32_t isp_2500_risc_code[] = { 0x05fe07ec, 0x5c00b000, 0x5c024800, 0x5c024000, 0x5c00b800, 0x1c01f000, 0x4d200000, 0x4d240000, 0x4c580000, 0x4c5c0000, 0x400cb800, 0x485fc857, - 0x0555fb14, 0x8058b040, 0x0500001f, 0x60064000, - 0x42024800, 0x0010e51f, 0x59a80249, 0x8c000514, + 0x0559f9f3, 0x8058b040, 0x0500001f, 0x60064000, + 0x42024800, 0x001124c3, 0x59a8024c, 0x8c000514, 0x0500001e, 0x59241200, 0x8c080510, 0x05020012, - 0x8c080500, 0x05000010, 0x59a80acc, 0x5924000b, + 0x8c080500, 0x05000010, 0x59a80ad1, 0x5924000b, 0x82000500, 0x00001fff, 0x80040580, 0x0502000a, 0x8c08051e, 0x05020008, 0x8c5c0508, 0x05000004, 0x8408155a, 0x480a4a00, 0x0501f003, 0x0501f813, @@ -2470,149 +2509,152 @@ static const uint32_t isp_2500_risc_code[] = { 0x5c024000, 0x1c01f000, 0x497a4805, 0x59240200, 0x90000501, 0x48024a00, 0x91264c0d, 0x8058b040, 0x05fe07fa, 0x05fdf7f4, 0x4927c857, 0x4923c857, - 0x59a80249, 0x8c000514, 0x05000003, 0x0501f9e6, + 0x59a8024c, 0x8c000514, 0x05000003, 0x0501f9f1, 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x4c580000, - 0x0555fadc, 0x417a4000, 0x42000800, 0x0010e512, + 0x0559f9bb, 0x417a4000, 0x42000800, 0x001124b6, 0x5930001d, 0x80040580, 0x05000006, 0x81224000, - 0x90040c0d, 0x8058b040, 0x05fe07fa, 0x05edffb7, + 0x90040c0d, 0x8058b040, 0x05fe07fa, 0x05edff56, 0x4933c857, 0x4923c857, 0x5c00b000, 0x1c01f000, - 0x4c580000, 0x0555facb, 0x417a4000, 0x42024800, - 0x0010e512, 0x59a81249, 0x8c080508, 0x0500000a, - 0x821c0d80, 0x00fffffe, 0x05000020, 0x8c08050c, - 0x0500001e, 0x59240005, 0x801c0580, 0x0500001b, - 0x0501f017, 0x90080528, 0x05020005, 0x59240005, - 0x82000500, 0x000000ff, 0x0501f008, 0x821c0580, - 0x00fffff0, 0x05000011, 0x59240200, 0x8c000500, - 0x05000004, 0x59240005, 0x801c0580, 0x0500000b, - 0x81224000, 0x91264c0d, 0x8058b040, 0x05000004, - 0x90080528, 0x05fe07f2, 0x05fdf7ed, 0x61fe41ff, - 0x90000541, 0x481fc856, 0x4923c857, 0x5c00b000, - 0x1c01f000, 0x4807c857, 0x4c580000, 0x0555fa9d, - 0x42006800, 0x0010e512, 0x58340005, 0x82000500, - 0x000000ff, 0x80040580, 0x05000005, 0x90346c0d, - 0x8058b040, 0x05fe07f9, 0x90000541, 0x5c00b000, - 0x1c01f000, 0x4923c857, 0x493fc857, 0x4c580000, - 0x4d400000, 0x4d440000, 0x4d340000, 0x4c5c0000, - 0x052dfea7, 0x4df00000, 0x61c0b00f, 0x417a8800, - 0x83440400, 0x0010d400, 0x50000000, 0x80026d40, - 0x0500001f, 0x59340013, 0x80000130, 0x81200580, - 0x0502001b, 0x60a68000, 0x833c0500, 0x00004000, - 0x052e0bc9, 0x052dfcce, 0x052dfd17, 0x052dfa9d, - 0x054dfff1, 0x8d3c051c, 0x05000004, 0x41240800, - 0x0519fc0c, 0x0501f00e, 0x8d3c0506, 0x05000004, - 0x59340200, 0x8c00050e, 0x05020009, 0x4937c857, - 0x0519f935, 0x497a6c0b, 0x4a026c00, 0x00000707, - 0x59240400, 0x8c00050a, 0x05160bf6, 0x81468800, - 0x8058b040, 0x05fe07db, 0x8d3c0502, 0x0500001f, - 0x6040b000, 0x5924b809, 0x505c0000, 0x80026d40, - 0x05000017, 0x59368c03, 0x833c0500, 0x00004000, - 0x052e0ba5, 0x052dfcaa, 0x052dfcf3, 0x052dfa79, - 0x054dffcd, 0x8d3c051c, 0x0502000b, 0x83440580, - 0x000007fe, 0x05020006, 0x59340813, 0x82040d00, - 0xff000000, 0x48066813, 0x0501f005, 0x0515fbd9, - 0x0501f003, 0x41240800, 0x0519fbde, 0x805cb800, - 0x8058b040, 0x05fe07e5, 0x4d300000, 0x61fe89ff, - 0x42026000, 0x00111a70, 0x4a02600a, 0x00110210, - 0x0519feee, 0x4926601d, 0x60a68000, 0x052dfc8c, - 0x054dffb1, 0x5c026000, 0x5c03e000, 0x052c0e41, - 0x5c00b800, 0x5c026800, 0x5c028800, 0x5c028000, - 0x5c00b000, 0x1c01f000, 0x4807c857, 0x4c580000, - 0x0555fa28, 0x42001000, 0x0010e512, 0x58080200, - 0x80040500, 0x48001200, 0x9008140d, 0x8058b040, - 0x05fe07fb, 0x5c00b000, 0x1c01f000, 0x4803c856, - 0x4d440000, 0x4d340000, 0x4c580000, 0x4c5c0000, - 0x6040b000, 0x61c2880f, 0x5924b809, 0x83440580, - 0x000007fe, 0x05000005, 0x505e6800, 0x813669c0, - 0x05000002, 0x0515fba3, 0x81468800, 0x805cb800, - 0x8058b040, 0x05fe07f6, 0x5c00b800, 0x5c00b000, - 0x5c026800, 0x5c028800, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x4c5c0000, 0x4c600000, - 0x4c580000, 0x4d240000, 0x4d200000, 0x4178c000, - 0x59a804cc, 0x4803c857, 0x8c00050c, 0x0502001c, - 0x0555f9f8, 0x417a4000, 0x42024800, 0x0010e512, - 0x5924b80b, 0x825cbd00, 0x00001fff, 0x805cb9c0, - 0x0500000f, 0x405c1000, 0x0501f827, 0x05000017, - 0x916c0583, 0x0502000a, 0x59240200, 0x8c000500, - 0x05000007, 0x8c000502, 0x05020005, 0x8c00051e, - 0x05000003, 0x41780800, 0x0501f87f, 0x81224000, - 0x91264c0d, 0x8058b040, 0x05fe07ea, 0x8060c1c0, - 0x5c024000, 0x5c024800, 0x5c00b000, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x405c1000, 0x480bc856, - 0x4d3c0000, 0x4d400000, 0x60aa8000, 0x600a7800, - 0x41780800, 0x813261c0, 0x05000002, 0x60400800, - 0x0501f81a, 0x5c028000, 0x5c027800, 0x8060c000, - 0x05fdf7e7, 0x5c000000, 0x4c000000, 0x4803c857, - 0x480bc857, 0x41780800, 0x60800000, 0x052df85b, - 0x4807c857, 0x607c1800, 0x40040000, 0x800c0480, - 0x82000c00, 0x0010d15b, 0x50040800, 0x4807c857, - 0x82080400, 0x00110672, 0x50000000, 0x4803c857, - 0x80040500, 0x1c01f000, 0x480bc857, 0x4d200000, - 0x4d240000, 0x4c580000, 0x4c5c0000, 0x4c600000, - 0x4008c000, 0x4004b800, 0x0555f9aa, 0x417a4000, - 0x42024800, 0x0010e512, 0x5924000b, 0x82000500, - 0x00001fff, 0x80600580, 0x05020013, 0x8c5c0506, - 0x0502000a, 0x05fdff10, 0x497a4805, 0x8c5c0508, - 0x0500000d, 0x60643000, 0x61fc19ff, 0x601c2000, - 0x0511f8ec, 0x0501f008, 0x8c640502, 0x05020005, - 0x05fdff05, 0x497a4805, 0x497a480b, 0x0501f002, - 0x0521fa84, 0x81224000, 0x91264c0d, 0x8058b040, - 0x05fe07e6, 0x5c00c000, 0x5c00b800, 0x5c00b000, - 0x5c024800, 0x5c024000, 0x1c01f000, 0x4803c856, - 0x4c580000, 0x4d240000, 0x4d200000, 0x59a804cc, - 0x8c00050c, 0x05020018, 0x0555f97e, 0x8058b040, - 0x05000015, 0x60064000, 0x42024800, 0x0010e51f, - 0x59240200, 0x8c00051e, 0x0500000b, 0x8c00050e, - 0x05020009, 0x59a802cc, 0x5924080b, 0x82040d00, - 0x00001fff, 0x80040580, 0x05000003, 0x41780800, - 0x0501f809, 0x91264c0d, 0x81224000, 0x8058b040, - 0x05fe07f0, 0x5c024000, 0x5c024800, 0x5c00b000, - 0x1c01f000, 0x4d300000, 0x4d440000, 0x4c040000, - 0x61fa880f, 0x42003000, 0x00fffffe, 0x0515fd7d, - 0x05020018, 0x0535fc6a, 0x05000016, 0x5c000800, - 0x48066009, 0x4936600a, 0x4926601d, 0x64066407, - 0x600c0800, 0x0515fd4c, 0x599c0208, 0x48026c12, - 0x600a7000, 0x0009f800, 0x497a4805, 0x59240200, - 0x82000500, 0xffffff9d, 0x82000540, 0x00008080, - 0x48024a00, 0x5c028800, 0x5c026000, 0x1c01f000, - 0x5c000800, 0x05fdf7fc, 0x480bc857, 0x4c5c0000, - 0x4c580000, 0x4d200000, 0x4d240000, 0x0555f93d, - 0x8058b040, 0x0500001c, 0x4008b800, 0x60064000, - 0x42024800, 0x0010e51f, 0x59240200, 0x8c000500, - 0x05000011, 0x82000500, 0x00008100, 0x0502000e, - 0x5924000b, 0x82000500, 0x00001fff, 0x05000005, - 0x805c0580, 0x05020008, 0x0501f82f, 0x0501f006, - 0x42001000, 0x0010e512, 0x5808000b, 0x4802480b, - 0x0501f829, 0x81224000, 0x91264c0d, 0x8058b040, - 0x05fe07ea, 0x5c024800, 0x5c024000, 0x5c00b000, - 0x5c00b800, 0x1c01f000, 0x480bc857, 0x4c580000, - 0x4c600000, 0x4008c000, 0x0555f916, 0x42001800, - 0x0010e512, 0x580c000b, 0x82000500, 0x00001fff, - 0x80600580, 0x0502000e, 0x81240583, 0x0500000c, - 0x580c0a00, 0x90040503, 0x90000583, 0x05020008, - 0x82040d40, 0x000080e0, 0x48041a00, 0x5924080c, - 0x497a480c, 0x4804180c, 0x0501f004, 0x900c1c0d, - 0x8058b040, 0x05fe07ec, 0x5c00c000, 0x5c00b000, - 0x1c01f000, 0x4923c857, 0x61fa880f, 0x42003000, - 0x00fffffe, 0x0515fd17, 0x05020011, 0x599c0208, - 0x48026c12, 0x4d2c0000, 0x417a5800, 0x0545fa54, - 0x5c025800, 0x0500000a, 0x59a800bb, 0x80000000, - 0x480350bb, 0x59240200, 0x84000550, 0x84000512, + 0x4c580000, 0x0559f9aa, 0x417a4000, 0x42024800, + 0x001124b6, 0x59a8124c, 0x8c080508, 0x05000013, + 0x821c0d80, 0x00fffffe, 0x0502000a, 0x0559f9c1, + 0x05000028, 0x60040900, 0x0501fa0b, 0x05000022, + 0x40124800, 0x40164000, 0x80000580, 0x0501f021, + 0x8c08050c, 0x0500001f, 0x59240005, 0x801c0580, + 0x0500001c, 0x0501f018, 0x90080528, 0x05020005, + 0x59240005, 0x82000500, 0x000000ff, 0x0501f009, + 0x821c0580, 0x00fffff0, 0x05000012, 0x59240200, + 0x90000503, 0x90000583, 0x05020004, 0x59240005, + 0x801c0580, 0x0500000b, 0x81224000, 0x91264c0d, + 0x8058b040, 0x05000004, 0x90080528, 0x05fe07f1, + 0x05fdf7ec, 0x61fe41ff, 0x90000541, 0x481fc856, + 0x4923c857, 0x5c00b000, 0x1c01f000, 0x4807c857, + 0x4c580000, 0x0559f972, 0x42006800, 0x001124b6, + 0x58340005, 0x82000500, 0x000000ff, 0x80040580, + 0x05000005, 0x90346c0d, 0x8058b040, 0x05fe07f9, + 0x90000541, 0x5c00b000, 0x1c01f000, 0x4923c857, + 0x493fc857, 0x4c580000, 0x4d400000, 0x4d440000, + 0x4d340000, 0x4c5c0000, 0x0531fabf, 0x4df00000, + 0x59a8b0ac, 0x417a8800, 0x0001fb08, 0x0502001f, + 0x59340013, 0x80000130, 0x81200580, 0x0502001b, + 0x60a68000, 0x833c0500, 0x00004000, 0x052e0fdf, + 0x0531f8ea, 0x0531f933, 0x052dfeb3, 0x0551fe65, + 0x8d3c051c, 0x05000004, 0x41240800, 0x0519fe38, + 0x0501f00e, 0x8d3c0506, 0x05000004, 0x59340200, + 0x8c00050e, 0x05020009, 0x4937c857, 0x0519fafc, + 0x497a6c0b, 0x4a026c00, 0x00000707, 0x59240400, + 0x8c00050a, 0x05160d4a, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07da, 0x8d3c0502, 0x0500001f, 0x6040b000, + 0x5924b809, 0x505c0000, 0x80026d40, 0x05000017, + 0x59368c03, 0x833c0500, 0x00004000, 0x052e0fb7, + 0x0531f8c2, 0x0531f90b, 0x052dfe8b, 0x0551fe3d, + 0x8d3c051c, 0x0502000b, 0x83440580, 0x000007fe, + 0x05020006, 0x59340813, 0x82040d00, 0xff000000, + 0x48066813, 0x0501f005, 0x0515fd29, 0x0501f003, + 0x41240800, 0x0519fe06, 0x805cb800, 0x8058b040, + 0x05fe07e5, 0x4d300000, 0x61fe89ff, 0x42026000, + 0x00115a14, 0x4a02600a, 0x001141b4, 0x051df91c, + 0x4926601d, 0x60a68000, 0x0531f8a4, 0x0551fe21, + 0x5c026000, 0x5c03e000, 0x05300a58, 0x5c00b800, + 0x5c026800, 0x5c028800, 0x5c028000, 0x5c00b000, + 0x1c01f000, 0x4807c857, 0x4c580000, 0x0559f8fc, + 0x42001000, 0x001124b6, 0x58080200, 0x80040500, + 0x48001200, 0x9008140d, 0x8058b040, 0x05fe07fb, + 0x5c00b000, 0x1c01f000, 0x4803c856, 0x4d440000, + 0x4d340000, 0x4c580000, 0x4c5c0000, 0x6040b000, + 0x61c2880f, 0x5924b809, 0x83440580, 0x000007fe, + 0x05000005, 0x505e6800, 0x813669c0, 0x05000002, + 0x0515fcf3, 0x81468800, 0x805cb800, 0x8058b040, + 0x05fe07f6, 0x5c00b800, 0x5c00b000, 0x5c026800, + 0x5c028800, 0x1c01f000, 0x5c000000, 0x4c000000, + 0x4803c857, 0x4c5c0000, 0x4c600000, 0x4c580000, + 0x4d240000, 0x4d200000, 0x4178c000, 0x59a804d1, + 0x4803c857, 0x8c00050c, 0x0502001c, 0x0559f8cc, + 0x417a4000, 0x42024800, 0x001124b6, 0x5924b80b, + 0x825cbd00, 0x00001fff, 0x805cb9c0, 0x0500000f, + 0x405c1000, 0x0501f827, 0x05000017, 0x916c0583, + 0x0502000a, 0x59240200, 0x8c000500, 0x05000007, + 0x8c000502, 0x05020005, 0x8c00051e, 0x05000003, + 0x41780800, 0x0501f87f, 0x81224000, 0x91264c0d, + 0x8058b040, 0x05fe07ea, 0x8060c1c0, 0x5c024000, + 0x5c024800, 0x5c00b000, 0x5c00c000, 0x5c00b800, + 0x1c01f000, 0x405c1000, 0x480bc856, 0x4d3c0000, + 0x4d400000, 0x60aa8000, 0x600a7800, 0x41780800, + 0x813261c0, 0x05000002, 0x60400800, 0x0501f81a, + 0x5c028000, 0x5c027800, 0x8060c000, 0x05fdf7e7, + 0x5c000000, 0x4c000000, 0x4803c857, 0x480bc857, + 0x41780800, 0x60800000, 0x052dfc6d, 0x4807c857, + 0x607c1800, 0x40040000, 0x800c0480, 0x82000c00, + 0x0010d8d9, 0x50040800, 0x4807c857, 0x82080400, + 0x00114616, 0x50000000, 0x4803c857, 0x80040500, + 0x1c01f000, 0x480bc857, 0x4d200000, 0x4d240000, + 0x4c580000, 0x4c5c0000, 0x4c600000, 0x4008c000, + 0x4004b800, 0x0559f87e, 0x417a4000, 0x42024800, + 0x001124b6, 0x5924000b, 0x82000500, 0x00001fff, + 0x80600580, 0x05020013, 0x8c5c0506, 0x0502000a, + 0x05fdff0f, 0x497a4805, 0x8c5c0508, 0x0500000d, + 0x60643000, 0x61fc19ff, 0x601c2000, 0x0511f9e2, + 0x0501f008, 0x8c640502, 0x05020005, 0x05fdff04, + 0x497a4805, 0x497a480b, 0x0501f002, 0x0521fd19, + 0x81224000, 0x91264c0d, 0x8058b040, 0x05fe07e6, + 0x5c00c000, 0x5c00b800, 0x5c00b000, 0x5c024800, + 0x5c024000, 0x1c01f000, 0x4803c856, 0x4c580000, + 0x4d240000, 0x4d200000, 0x59a804d1, 0x8c00050c, + 0x05020018, 0x0559f852, 0x8058b040, 0x05000015, + 0x60064000, 0x42024800, 0x001124c3, 0x59240200, + 0x8c00051e, 0x0500000b, 0x8c00050e, 0x05020009, + 0x59a802d1, 0x5924080b, 0x82040d00, 0x00001fff, + 0x80040580, 0x05000003, 0x41780800, 0x0501f809, + 0x91264c0d, 0x81224000, 0x8058b040, 0x05fe07f0, + 0x5c024000, 0x5c024800, 0x5c00b000, 0x1c01f000, + 0x4d300000, 0x4d440000, 0x4c040000, 0x61fa880f, + 0x42003000, 0x00fffffe, 0x0515fef1, 0x05020018, + 0x0539f8d8, 0x05000016, 0x5c000800, 0x48066009, + 0x4936600a, 0x4926601d, 0x64066407, 0x600c0800, + 0x0515feb8, 0x599c0208, 0x48026c12, 0x600a7000, + 0x0009f839, 0x497a4805, 0x59240200, 0x82000500, + 0xffffff9d, 0x82000540, 0x00008080, 0x48024a00, + 0x5c028800, 0x5c026000, 0x1c01f000, 0x5c000800, + 0x05fdf7fc, 0x480bc857, 0x4c5c0000, 0x4c580000, + 0x4d200000, 0x4d240000, 0x0559f811, 0x8058b040, + 0x0500001c, 0x4008b800, 0x60064000, 0x42024800, + 0x001124c3, 0x59240200, 0x8c000500, 0x05000011, + 0x82000500, 0x00008100, 0x0502000e, 0x5924000b, + 0x82000500, 0x00001fff, 0x05000005, 0x805c0580, + 0x05020008, 0x0501f82f, 0x0501f006, 0x42001000, + 0x001124b6, 0x5808000b, 0x4802480b, 0x0501f829, + 0x81224000, 0x91264c0d, 0x8058b040, 0x05fe07ea, + 0x5c024800, 0x5c024000, 0x5c00b000, 0x5c00b800, + 0x1c01f000, 0x480bc857, 0x4c580000, 0x4c600000, + 0x4008c000, 0x0555ffea, 0x42001800, 0x001124b6, + 0x580c000b, 0x82000500, 0x00001fff, 0x80600580, + 0x0502000e, 0x81240583, 0x0500000c, 0x580c0a00, + 0x90040503, 0x90000583, 0x05020008, 0x82040d40, + 0x000080e0, 0x48041a00, 0x5924080c, 0x497a480c, + 0x4804180c, 0x0501f004, 0x900c1c0d, 0x8058b040, + 0x05fe07ec, 0x5c00c000, 0x5c00b000, 0x1c01f000, + 0x4923c857, 0x61fa880f, 0x42003000, 0x00fffffe, + 0x0515fe8b, 0x05020012, 0x599c0208, 0x48026c12, + 0x4d2c0000, 0x417a5800, 0x0545ff4c, 0x5c025800, + 0x0500000b, 0x59a800c0, 0x80000000, 0x480350c0, + 0x59240200, 0x82000500, 0xfffffd1d, 0x84000550, 0x48024a00, 0x90000541, 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x4923c857, 0x4d300000, 0x4d440000, - 0x61fa880f, 0x42003000, 0x00fffffe, 0x0515fcfd, - 0x0502001b, 0x0535fbea, 0x05000019, 0x497a6009, + 0x61fa880f, 0x42003000, 0x00fffffe, 0x0515fe70, + 0x0502001b, 0x0539f857, 0x05000019, 0x497a6009, 0x4936600a, 0x4926601d, 0x64066407, 0x600c0800, - 0x0515fccd, 0x599c0208, 0x48026c12, 0x600a7000, - 0x0009f800, 0x59240200, 0x4927c857, 0x82000500, - 0xffffff9d, 0x8400054e, 0x48024a00, 0x59a80249, - 0x82000500, 0xffffdafc, 0x8400054e, 0x48035249, + 0x0515fe38, 0x599c0208, 0x48026c12, 0x600a7000, + 0x0009f839, 0x59240200, 0x4927c857, 0x82000500, + 0xffffff9d, 0x8400054e, 0x48024a00, 0x59a8024c, + 0x82000500, 0xffffdafc, 0x8400054e, 0x4803524c, 0x5c028800, 0x5c026000, 0x1c01f000, 0x80000580, - 0x05fdf7fc, 0x4c580000, 0x4807c857, 0x0555f8bd, - 0x41782800, 0x42002000, 0x0010e512, 0x58100200, + 0x05fdf7fc, 0x4c580000, 0x4807c857, 0x0555ff90, + 0x41782800, 0x42002000, 0x001124b6, 0x58100200, 0x80040500, 0x80040580, 0x05000007, 0x80142800, 0x9010240d, 0x8058b040, 0x05fe07f9, 0x5c00b000, 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x4c580000, - 0x0555f8ac, 0x42001000, 0x0010e512, 0x58080200, + 0x0555ff7f, 0x42001000, 0x001124b6, 0x58080200, 0x8c00051a, 0x05020004, 0x9008140d, 0x8058b040, 0x05fe07fb, 0x5c00b000, 0x1c01f000, 0x00007eef, 0x00007de8, 0x00007ce4, 0x000080e2, 0x00007be1, @@ -2678,74 +2720,74 @@ static const uint32_t isp_2500_risc_code[] = { 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, - 0x00008000, 0x00008000, 0x00008000, 0x05f1f81e, - 0x05ec0c86, 0x492f4017, 0x1c01f000, 0x91a0ac07, - 0x83a00580, 0x0010dceb, 0x05000008, 0x492fc857, - 0x812e59c0, 0x05ec0c7d, 0x912ca40a, 0x6034b000, - 0x0551ff47, 0x0501f00d, 0x6040b000, 0x91e0a420, + 0x00008000, 0x00008000, 0x00008000, 0x05edffad, + 0x05ec0c19, 0x492f4017, 0x1c01f000, 0x91a0ac07, + 0x83a00580, 0x00111c71, 0x05000008, 0x492fc857, + 0x812e59c0, 0x05ec0c10, 0x912ca40a, 0x6034b000, + 0x0555fe1a, 0x0501f00d, 0x6040b000, 0x91e0a420, 0x50500000, 0x8050a000, 0x50500800, 0x900409c0, 0x80040540, 0x4400a800, 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07f7, 0x1c01f000, 0x42000000, - 0x0010e3bc, 0x0551fe6e, 0x59a00207, 0xb0000cbf, - 0x050210ba, 0x0c01f001, 0x001029f8, 0x00102a2e, - 0x00102a2e, 0x00102a7a, 0x00102a8f, 0x00102a2e, - 0x001029f8, 0x00102aa6, 0x00102ab7, 0x00102a2e, - 0x00102a2e, 0x00102ad0, 0x00102aef, 0x00102b0e, - 0x00102a2e, 0x00102b2b, 0x00102a2e, 0x00102a2e, - 0x00102b4b, 0x00102a2e, 0x00102c08, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x00102c2f, - 0x00102c8a, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102cd8, 0x00102cf9, 0x00102f40, 0x00102a2e, - 0x00102f8d, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102f92, 0x00103094, 0x00102a2e, - 0x0010309b, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x0010309c, 0x0010315f, - 0x00103360, 0x0010336c, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x0010337f, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x001033a8, 0x001033ea, - 0x00103432, 0x00103449, 0x00103461, 0x001036ae, - 0x00103a28, 0x00102a2e, 0x00103f5d, 0x00103b98, - 0x00103bcd, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00103be8, 0x00103c39, 0x00102a2e, - 0x00102a2e, 0x00103c8d, 0x00102a2e, 0x00103d05, - 0x00103dba, 0x00103e61, 0x00102a2e, 0x00103e8f, - 0x00103f19, 0x00102a2e, 0x00103f5d, 0x001042c2, - 0x00102a2e, 0x001042d1, 0x0010434b, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x001043a8, - 0x001043c2, 0x001043db, 0x00102a2e, 0x0010444d, - 0x00102a2e, 0x00102a2e, 0x00104491, 0x00102a2e, - 0x001044b5, 0x00102a2e, 0x00102a2e, 0x0010450c, - 0x00104639, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x0010467b, 0x001046fa, - 0x00102a2e, 0x48efc857, 0x0509fc65, 0x0500003b, - 0x48efc857, 0x4a034207, 0x00004000, 0x050dfdb6, - 0x83a00580, 0x0010dceb, 0x0500000b, 0x58ee580a, - 0x4d2c0000, 0x0501f852, 0x41a25800, 0x05edff8f, - 0x40ee5800, 0x05edff8d, 0x5c025800, 0x492fc857, - 0x0001f382, 0x05026007, 0x59a0001e, 0x84000542, - 0x4803401e, 0x4a01d809, 0x00102a09, 0x1c01f000, + 0x0011235d, 0x0555fd41, 0x59a00207, 0xb0000cbf, + 0x050210ba, 0x0c01f001, 0x00102aa0, 0x00102ad6, + 0x00102ad6, 0x00102b22, 0x00102b37, 0x00102ad6, + 0x00102aa0, 0x00102b4e, 0x00102b5f, 0x00102ad6, + 0x00102ad6, 0x00102b79, 0x00102b98, 0x00102bb7, + 0x00102ad6, 0x00102bd4, 0x00102ad6, 0x00102ad6, + 0x00102bf4, 0x00102ad6, 0x00102cb0, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x00102cd7, + 0x00102d32, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102d80, 0x00102da1, 0x00102feb, 0x00102ad6, + 0x00103038, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x0010303d, 0x0010313c, 0x00102ad6, + 0x00103143, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00103144, 0x00103207, + 0x0010348c, 0x00103498, 0x00104cec, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x001034ab, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x001034f5, 0x00103537, + 0x0010357f, 0x00103594, 0x001035ac, 0x001037f9, + 0x00103b9b, 0x00102ad6, 0x001040d3, 0x00103d0b, + 0x00103d40, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00103d5b, 0x00103dac, 0x00102ad6, + 0x00102ad6, 0x00103e00, 0x00102ad6, 0x00103e78, + 0x00103f2d, 0x00103fd7, 0x00102ad6, 0x00104005, + 0x0010408f, 0x00102ad6, 0x001040d3, 0x00104441, + 0x00102ad6, 0x00104450, 0x001044cc, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x0010452c, + 0x00104546, 0x0010455f, 0x00102ad6, 0x001045d1, + 0x00102ad6, 0x00102ad6, 0x00104621, 0x00102ad6, + 0x00104645, 0x00102ad6, 0x00102ad6, 0x0010469c, + 0x001047db, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x0010481d, 0x0010489c, + 0x00102ad6, 0x48efc857, 0x0509fd33, 0x0500003b, + 0x48efc857, 0x4a034207, 0x00004000, 0x050dfeb0, + 0x83a00580, 0x00111c71, 0x0500000b, 0x58ee580a, + 0x4d2c0000, 0x0501f852, 0x41a25800, 0x05edff1e, + 0x40ee5800, 0x05edff1c, 0x5c025800, 0x492fc857, + 0x0001f3a8, 0x05026007, 0x59a0001e, 0x84000542, + 0x4803401e, 0x4a01d809, 0x00102ab1, 0x1c01f000, 0x59a00207, 0x82000d80, 0x00004000, 0x05000005, 0x900001c0, 0x90000551, 0x4803c011, 0x0501f004, 0x900001c0, 0x90000550, 0x4803c011, 0x0501f846, - 0x59e00017, 0x8c00050a, 0x60000800, 0x00020892, - 0x8d0c0530, 0x05f60ca4, 0x000209bc, 0x6403c017, + 0x59e00017, 0x8c00050a, 0x60000800, 0x0002089a, + 0x8d0c0530, 0x05f60c6d, 0x000209c4, 0x6403c017, 0x4203e000, 0x30000001, 0x4203e000, 0x40000000, - 0x40ee5800, 0x05edff69, 0x59a0001e, 0x84000504, + 0x40ee5800, 0x05edfef8, 0x59a0001e, 0x84000504, 0x4803401e, 0x1c01f000, 0x4803c856, 0x4a034207, 0x00004001, 0x05fdf7ca, 0x4803c856, 0x4a034207, 0x00004002, 0x05fdf7c6, 0x4803c856, 0x4a034207, - 0x00004003, 0x05fdf7c2, 0x05f9ff55, 0x4803c856, - 0x4a034207, 0x00004005, 0x05fdf7bd, 0x05f9ff50, + 0x00004003, 0x05fdf7c2, 0x05f9ff2d, 0x4803c856, + 0x4a034207, 0x00004005, 0x05fdf7bd, 0x05f9ff28, 0x4803c856, 0x4a034207, 0x00004006, 0x05fdf7b8, 0x4803c856, 0x4a034207, 0x0000400b, 0x05fdf7b4, 0x4803c856, 0x4a034207, 0x0000400c, 0x05fdf7b0, 0x4803c856, 0x4a034207, 0x0000400c, 0x05fdf7ac, 0x4a034207, 0x00004020, 0x05fdf7a9, 0x4c580000, 0x4c500000, 0x4c540000, 0x58eca80a, 0x8054a9c0, - 0x05ec0b82, 0x91a0a407, 0x9054ac0a, 0x6034b000, - 0x0551fe4b, 0x5c00a800, 0x5c00a000, 0x5c00b000, + 0x05ec0b15, 0x91a0a407, 0x9054ac0a, 0x6034b000, + 0x0555fd1e, 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x1c01f000, 0x4c580000, 0x4c500000, 0x4c540000, 0x59a00007, 0x4803c857, 0x59a00008, 0x4803c857, 0x59a00009, 0x4803c857, 0x91e0ac20, 0x91a0a407, @@ -2755,11 +2797,11 @@ static const uint32_t isp_2500_risc_code[] = { 0x5c00b000, 0x1c01f000, 0x59a00407, 0x800000c2, 0x59a00a08, 0x900409c0, 0x80040540, 0x84000540, 0x59a00c08, 0x8c040500, 0x0500000b, 0x4c000000, - 0x0551fe7b, 0x5c000000, 0x05000004, 0x48030004, + 0x0555fd4e, 0x5c000000, 0x05000004, 0x48030004, 0x64030000, 0x05fdf76f, 0x64030000, 0x64134407, 0x05fc07af, 0x4803880e, 0x05fdf76a, 0x59a00407, 0x800000c2, 0x59a00c08, 0x8c040500, 0x0500000d, - 0x4c000000, 0x0551fe6a, 0x5c000000, 0x05000006, + 0x4c000000, 0x0555fd3d, 0x5c000000, 0x05000006, 0x48030004, 0x59800805, 0x48074407, 0x64030000, 0x05fdf75c, 0x64030000, 0x64134407, 0x05fc079c, 0x4803880e, 0x59c4080f, 0x48074407, 0x900409c0, @@ -2767,103 +2809,103 @@ static const uint32_t isp_2500_risc_code[] = { 0x900c19c0, 0x800c1d40, 0x580c0803, 0x80000580, 0x500c1000, 0x80080400, 0x800c1800, 0x80040840, 0x05fe07fc, 0x48034407, 0x900001c0, 0x48034208, - 0x800001c0, 0x05fc0743, 0x05fdf780, 0x641f4407, + 0x800001c0, 0x05fc0743, 0x05fdf780, 0x64234407, 0x640f4208, 0x64034408, 0x59a8000a, 0x82000c80, 0x00140000, 0x05021004, 0x42000000, 0x0013ffff, - 0x0501f006, 0x59a808ca, 0x8c040500, 0x05000003, + 0x0501f006, 0x59a808cf, 0x8c040500, 0x05000003, 0x82000400, 0x00006000, 0x48034209, 0x900001c0, - 0x48034409, 0x61540121, 0x4803420a, 0x900001c0, - 0x4803440e, 0x60000000, 0x4803400f, 0x05fdf729, + 0x48034409, 0x42000000, 0x001090d5, 0x4803420a, + 0x900001c0, 0x4803440e, 0x60000000, 0x4803400f, + 0x05fdf728, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x59a00a09, 0x59a00409, 0x900409c0, + 0x80040d40, 0x59a0020b, 0x59a02407, 0x900001c0, + 0x80100540, 0x82002480, 0x00100000, 0x05fc175d, + 0x59a8280a, 0x80142480, 0x050e15d3, 0x42002800, + 0x7fefffff, 0x80142480, 0x05fe1756, 0x42002800, + 0x7ffd0000, 0x80142480, 0x05fc1752, 0x050df5ca, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x59a00a09, 0x59a00409, 0x900409c0, 0x80040d40, 0x59a0020b, 0x59a02407, 0x900001c0, 0x80100540, - 0x82002480, 0x00100000, 0x05fc175e, 0x59a8280a, - 0x80142480, 0x050e14da, 0x42002800, 0x7fefffff, - 0x80142480, 0x05fe1757, 0x42002800, 0x7ffd0000, - 0x80142480, 0x05fc1753, 0x050df4d1, 0x59a00408, - 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, - 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x59a00a09, - 0x59a00409, 0x900409c0, 0x80040d40, 0x59a0020b, - 0x59a02407, 0x900001c0, 0x80100540, 0x82002480, - 0x00100000, 0x05fc173f, 0x59a8280a, 0x80142480, - 0x050e14c4, 0x42002800, 0x7fefffff, 0x80142480, - 0x05fe1738, 0x42002800, 0x7ffd0000, 0x80142480, - 0x05fc1734, 0x050df4bb, 0x59a02408, 0x59a00208, - 0x901021c0, 0x80102540, 0x59a01a0b, 0x59a00407, - 0x900c19c0, 0x800c1d40, 0x41781000, 0x820c0580, - 0x00007c00, 0x0500000a, 0x820c0480, 0x00007a00, - 0x05001007, 0x820c0480, 0x00007cff, 0x05021004, - 0x0551fddf, 0x05000007, 0x80081000, 0x44101800, - 0x800811c0, 0x05fc06d3, 0x64030000, 0x05fdf6d1, - 0x64030000, 0x64134407, 0x05fdf711, 0x59a01a0b, + 0x82002480, 0x00100000, 0x05fc173e, 0x59a8280a, + 0x80142480, 0x050e15bd, 0x42002800, 0x7fefffff, + 0x80142480, 0x05fe1737, 0x42002800, 0x7ffd0000, + 0x80142480, 0x05fc1733, 0x050df5b4, 0x59a02408, + 0x59a00208, 0x901021c0, 0x80102540, 0x59a01a0b, 0x59a00407, 0x900c19c0, 0x800c1d40, 0x41781000, 0x820c0580, 0x00007c00, 0x0500000a, 0x820c0480, 0x00007a00, 0x05001007, 0x820c0480, 0x00007cff, - 0x05021004, 0x0551fdc6, 0x0500000e, 0x80081000, - 0x500c0000, 0x82000d00, 0x0000ffff, 0x48074208, - 0x82000d00, 0xffff0000, 0x900409c0, 0x48074408, - 0x800811c0, 0x05fc06b3, 0x64030000, 0x05fdf6b1, - 0x64030000, 0x64134407, 0x05fdf6f1, 0x4d2c0000, - 0x4d340000, 0x4d300000, 0x4d440000, 0x050dfd36, - 0x05020006, 0x4923c857, 0x4927c857, 0x59a28c07, - 0x0515ff25, 0x05000006, 0x5c028800, 0x5c026000, - 0x5c026800, 0x5c025800, 0x05fdf6e6, 0x4937c857, - 0x59a04408, 0x59a00208, 0x900001c0, 0x80204540, - 0x4823c857, 0x59a04a0b, 0x0501f877, 0x05000008, - 0x64074209, 0x4a034407, 0x0000ffff, 0x4a034208, - 0x0000ffff, 0x497b4408, 0x0501f03d, 0x497b4407, - 0x0501f87e, 0x0500003f, 0x59300402, 0x48034407, - 0x59300202, 0x48034208, 0x59300006, 0x48034408, - 0x59a0020c, 0x8c000500, 0x05000030, 0x4933c857, - 0x0515feb9, 0x05000003, 0x64274407, 0x0501f031, - 0x8d0c050e, 0x05000003, 0x64074407, 0x0501f02d, - 0x916c0583, 0x05000003, 0x641f4407, 0x0501f029, - 0x59340200, 0x8c00050e, 0x05000003, 0x64834407, - 0x0501f024, 0x59300407, 0x90000d83, 0x05020007, - 0x59300804, 0x9004051f, 0x90000584, 0x05020003, - 0x8c04053e, 0x05020015, 0x050dfc0d, 0x05020003, - 0x640b4407, 0x0501f017, 0x492fc857, 0x4a025c08, - 0x00008000, 0x497a5a08, 0x497a5809, 0x0545fb53, - 0x05020003, 0x640f4407, 0x0501f00e, 0x4a01d809, - 0x00102bb1, 0x5c028800, 0x5c026000, 0x5c026800, - 0x5c025800, 0x1c01f000, 0x640b4209, 0x5c028800, - 0x5c026000, 0x5c026800, 0x5c025800, 0x05fdf64d, + 0x05021004, 0x0555fcb1, 0x05000007, 0x80081000, + 0x44101800, 0x800811c0, 0x05fc06d2, 0x64030000, + 0x05fdf6d0, 0x64030000, 0x64134407, 0x05fdf710, + 0x59a01a0b, 0x59a00407, 0x900c19c0, 0x800c1d40, + 0x41781000, 0x820c0580, 0x00007c00, 0x0500000a, + 0x820c0480, 0x00007a00, 0x05001007, 0x820c0480, + 0x00007cff, 0x05021004, 0x0555fc98, 0x0500000e, + 0x80081000, 0x500c0000, 0x82000d00, 0x0000ffff, + 0x48074208, 0x82000d00, 0xffff0000, 0x900409c0, + 0x48074408, 0x800811c0, 0x05fc06b2, 0x64030000, + 0x05fdf6b0, 0x64030000, 0x64134407, 0x05fdf6f0, + 0x4d2c0000, 0x4d340000, 0x4d300000, 0x4d440000, + 0x050dfe2a, 0x05020006, 0x4923c857, 0x4927c857, + 0x59a28c07, 0x0519f945, 0x05000006, 0x5c028800, + 0x5c026000, 0x5c026800, 0x5c025800, 0x05fdf6e5, + 0x4937c857, 0x59a04408, 0x59a00208, 0x900001c0, + 0x80204540, 0x4823c857, 0x59a04a0b, 0x0501f877, + 0x05000008, 0x64074209, 0x4a034407, 0x0000ffff, + 0x4a034208, 0x0000ffff, 0x497b4408, 0x0501f03d, + 0x497b4407, 0x0501f87e, 0x0500003f, 0x59300402, + 0x48034407, 0x59300202, 0x48034208, 0x59300006, + 0x48034408, 0x59a0020c, 0x8c000500, 0x05000030, + 0x4933c857, 0x0519f8d9, 0x05000003, 0x64274407, + 0x0501f031, 0x8d0c050e, 0x05000003, 0x64074407, + 0x0501f02d, 0x916c0583, 0x05000003, 0x641f4407, + 0x0501f029, 0x59340200, 0x8c00050e, 0x05000003, + 0x64834407, 0x0501f024, 0x59300407, 0x90000d83, + 0x05020007, 0x59300804, 0x9004051f, 0x90000584, + 0x05020003, 0x8c04053e, 0x05020015, 0x050dfd06, + 0x05020003, 0x640b4407, 0x0501f017, 0x492fc857, + 0x4a025c08, 0x00008000, 0x497a5a08, 0x497a5809, + 0x0549f85b, 0x05020003, 0x640f4407, 0x0501f00e, + 0x4a01d809, 0x00102c5a, 0x5c028800, 0x5c026000, + 0x5c026800, 0x5c025800, 0x1c01f000, 0x640b4209, 0x5c028800, 0x5c026000, 0x5c026800, 0x5c025800, - 0x05fdf68b, 0x492fc857, 0x4933c857, 0x497a602a, - 0x592c0009, 0x82000580, 0x01000000, 0x05020003, - 0x64134407, 0x05fdf682, 0x4d2c0000, 0x912e5c0a, - 0x592c0000, 0x82000580, 0x02000000, 0x05020011, - 0x4803c856, 0x64134209, 0x592c0804, 0x82040500, - 0x0000ffff, 0x48034409, 0x80040920, 0x4807420a, - 0x592c0805, 0x82040500, 0x0000ffff, 0x4803440a, - 0x80040920, 0x4807420b, 0x5c025800, 0x05fdf629, - 0x4803c856, 0x64174209, 0x592c0801, 0x82040500, - 0x0000ffff, 0x48034409, 0x80040920, 0x4807420a, - 0x05fdf7f6, 0x4937c857, 0x4823c857, 0x4827c857, - 0x5934000f, 0x80001d40, 0x05000009, 0x580c0009, - 0x80200580, 0x05020007, 0x580c0003, 0x58000211, - 0x80240580, 0x05020003, 0x81780000, 0x1c01f000, - 0x580c0000, 0x05fdf7f4, 0x4823c857, 0x4d2c0000, - 0x42026000, 0x00111b00, 0x59300407, 0x90000d83, + 0x05fdf64c, 0x5c028800, 0x5c026000, 0x5c026800, + 0x5c025800, 0x05fdf68a, 0x492fc857, 0x4933c857, + 0x497a602a, 0x592c0009, 0x82000580, 0x01000000, + 0x05020003, 0x64134407, 0x05fdf681, 0x4d2c0000, + 0x912e5c0a, 0x592c0000, 0x82000580, 0x02000000, + 0x05020011, 0x4803c856, 0x64134209, 0x592c0804, + 0x82040500, 0x0000ffff, 0x48034409, 0x80040920, + 0x4807420a, 0x592c0805, 0x82040500, 0x0000ffff, + 0x4803440a, 0x80040920, 0x4807420b, 0x5c025800, + 0x05fdf628, 0x4803c856, 0x64174209, 0x592c0801, + 0x82040500, 0x0000ffff, 0x48034409, 0x80040920, + 0x4807420a, 0x05fdf7f6, 0x4937c857, 0x4823c857, + 0x4827c857, 0x5934000f, 0x80001d40, 0x05000009, + 0x580c0009, 0x80200580, 0x05020007, 0x580c0003, + 0x58000211, 0x80240580, 0x05020003, 0x81780000, + 0x1c01f000, 0x580c0000, 0x05fdf7f4, 0x4823c857, + 0x4d2c0000, 0x40be6000, 0x59300407, 0x90000d83, 0x05000003, 0x90000d86, 0x0502000b, 0x59325809, 0x812e59c0, 0x05000008, 0x592c0003, 0x58000211, 0x80240580, 0x05020004, 0x592c0009, 0x80200580, 0x05000009, 0x91326430, 0x59a8000b, 0x81300480, 0x05fc17ee, 0x417a6000, 0x80000580, 0x5c025800, 0x1c01f000, 0x90000541, 0x5c025800, 0x1c01f000, - 0x83a00580, 0x0010dceb, 0x050e076a, 0x64030000, + 0x83a00580, 0x00111c71, 0x051200b6, 0x64030000, 0x4a034207, 0x00004000, 0x4a03c011, 0x40000010, 0x05fdfe51, 0x59e00017, 0x8c00050a, 0x60000800, - 0x00020892, 0x8d0c0530, 0x05f60aaf, 0x000209bc, + 0x0002089a, 0x8d0c0530, 0x05f60a78, 0x000209c4, 0x6403c017, 0x4203e000, 0x30000001, 0x4203e000, 0x40000000, 0x4203e000, 0xb0100000, 0x41fc0000, - 0x8c00050a, 0x05fc07fc, 0x0551fcdd, 0x05fc07ff, + 0x8c00050a, 0x05fc07fc, 0x0555fbb0, 0x05fc07ff, 0x59800802, 0x8c040520, 0x05020003, 0x64030000, 0x05fdf7f5, 0x60101020, 0x50080000, 0x8400054c, 0x44001000, 0x64030000, 0x0501f000, 0x59a00c07, 0x800409c0, 0x05000005, 0x916c0580, 0x05000003, - 0x646b4407, 0x05fdf606, 0x42007000, 0x0010e060, + 0x646b4407, 0x05fdf606, 0x42007000, 0x00111ffa, 0x58381c01, 0x58382201, 0x58383202, 0x8c040500, 0x0500000b, 0x59a01208, 0x82080500, 0x0000f003, 0x05fe0600, 0x82080480, 0x00000841, 0x05fe15fd, @@ -2878,15 +2920,15 @@ static const uint32_t isp_2500_risc_code[] = { 0xd0000000, 0x40040000, 0x800c0540, 0x48007401, 0x8c040500, 0x05000002, 0x48087201, 0x8c04050a, 0x0500001a, 0x481c7202, 0x4c0c0000, 0x4c100000, - 0x4c180000, 0x052df8a2, 0x4df00000, 0x58383a02, + 0x4c180000, 0x052dfcb8, 0x4df00000, 0x58383a02, 0x481fc857, 0x41780000, 0x801c3840, 0x800010c8, 0x82081400, 0x0000b037, 0x64001002, 0x801c1c80, 0x05021002, 0x64081002, 0x80000000, 0x90001c85, - 0x05fc17f7, 0x5c03e000, 0x052c0882, 0x5c003000, + 0x05fc17f7, 0x5c03e000, 0x052c0c98, 0x5c003000, 0x5c002000, 0x5c001800, 0x480f4407, 0x48134208, 0x481b4408, 0x05fdf56f, 0x4d440000, 0x4d340000, - 0x59a28c07, 0x050dfbf8, 0x05020009, 0x0515fdea, - 0x05020007, 0x0515fda0, 0x05000008, 0x64274407, + 0x59a28c07, 0x050dfced, 0x05020009, 0x0519f80b, + 0x05020007, 0x0515ffc1, 0x05000008, 0x64274407, 0x5c026800, 0x5c028800, 0x05fdf5a5, 0x5c026800, 0x5c028800, 0x05fdf5a7, 0x59a01208, 0x59a01c08, 0x5934400a, 0x82203d00, 0x0002e000, 0x801c391a, @@ -2896,7 +2938,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000005, 0x90040585, 0x05000003, 0x4937c857, 0x60100800, 0x82204500, 0xfffd1fff, 0x800400da, 0x80200540, 0x4802680a, 0x4c080000, 0x4c1c0000, - 0x052df85b, 0x0519f815, 0x052df84a, 0x5c003800, + 0x052dfc71, 0x0519fa42, 0x052dfc60, 0x5c003800, 0x5c001000, 0x481f4408, 0x5934400a, 0x82203d00, 0x0f000000, 0x801c3930, 0x8c080504, 0x05020011, 0x8c080502, 0x0500000b, 0x4823c857, 0x82204500, @@ -2906,234 +2948,234 @@ static const uint32_t isp_2500_risc_code[] = { 0x82204500, 0xf07fffff, 0x4822680a, 0x05fdf7f9, 0x59a02c07, 0x8c140502, 0x05020005, 0x59a00a09, 0x82040480, 0x00000100, 0x05021019, 0x82041400, - 0x0010de60, 0x50080000, 0x80025d40, 0x05000014, + 0x00111dfa, 0x50080000, 0x80025d40, 0x05000014, 0x4178b000, 0x592c0005, 0x80000d40, 0x05000004, 0x8058b000, 0x58040000, 0x05fdf7fc, 0x485b4209, 0x592c1408, 0x592c0c09, 0x58080100, 0x80040c80, 0x05021003, 0x592c0208, 0x80040c00, 0x48074407, 0x497b4408, 0x497b4208, 0x05fdf502, 0x64774407, - 0x05fdf543, 0x916c2d80, 0x050c0678, 0x83a00580, - 0x0010dceb, 0x050e0677, 0x59a02c07, 0x4817c857, + 0x05fdf543, 0x916c2d80, 0x050c07c4, 0x83a00580, + 0x00111c71, 0x050e07c3, 0x59a02c07, 0x4817c857, 0x8c140516, 0x0502003a, 0x82140500, 0x00000408, 0x050200a3, 0x8c140500, 0x050200af, 0x8d0c0516, 0x05000003, 0x64874407, 0x05fdf531, 0x59a00a09, - 0x82040480, 0x00000100, 0x050211a2, 0x8c140502, - 0x05020004, 0x82041400, 0x0010dd60, 0x0501f007, + 0x82040480, 0x00000100, 0x050211a4, 0x8c140502, + 0x05020004, 0x82041400, 0x00111cfa, 0x0501f007, 0x59a0020e, 0x82000480, 0x00000100, 0x05fe1529, - 0x82041400, 0x0010de60, 0x50080000, 0x80000540, - 0x05020192, 0x4c040000, 0x4c080000, 0x05edfc52, - 0x5c001000, 0x5c000800, 0x0500018a, 0x05011000, + 0x82041400, 0x00111dfa, 0x50080000, 0x80000540, + 0x05020194, 0x4c040000, 0x4c080000, 0x05edfbe1, + 0x5c001000, 0x5c000800, 0x0500018c, 0x05011000, 0x492fc840, 0x6463c842, 0x05011000, 0x8c140502, - 0x05020007, 0x4c080000, 0x0501f9a4, 0x5c001000, + 0x05020007, 0x4c080000, 0x0501f9a7, 0x5c001000, 0x05fe050f, 0x452c1000, 0x05fdf4ca, 0x4c080000, - 0x0501f9d7, 0x5c001000, 0x05fe0509, 0x452c1000, + 0x0501f9da, 0x5c001000, 0x05fe0509, 0x452c1000, 0x05fdf4c4, 0x592c000e, 0x48034407, 0x80000120, 0x48034208, 0x497a580e, 0x05fdf4be, 0x59a00a09, - 0x82040480, 0x00000100, 0x05021172, 0x8d0c0516, + 0x82040480, 0x00000100, 0x05021174, 0x8d0c0516, 0x05000003, 0x64874407, 0x05fdf4f9, 0x8c140502, - 0x0502002e, 0x82041400, 0x0010dd60, 0x50080000, - 0x80025d40, 0x05000167, 0x592c1a00, 0x580c0000, - 0x592c1a0c, 0x800c0580, 0x05020160, 0x91701d82, - 0x0500015e, 0x412c1800, 0x59980002, 0x90000482, + 0x0502002e, 0x82041400, 0x00111cfa, 0x50080000, + 0x80025d40, 0x05000169, 0x592c1a00, 0x580c0000, + 0x592c1a0c, 0x800c0580, 0x05020162, 0x91701d82, + 0x05000160, 0x412c1800, 0x59980002, 0x90000482, 0x05021004, 0x4a03b004, 0x10000000, 0x0501f005, - 0x4c0c0000, 0x80f01d83, 0x05180f10, 0x5c001800, + 0x4c0c0000, 0x80f01d83, 0x051c0958, 0x5c001800, 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, 0x48001808, 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, 0x48001809, 0x59a00a09, 0x59a0140b, 0x82040400, 0x00005c00, 0x48080100, 0x480a5a0c, 0x59980002, 0x90000482, 0x05fe148a, 0x4a03b004, - 0x10000001, 0x05fdf487, 0x82041400, 0x0010de60, - 0x50080000, 0x80025d40, 0x0500013a, 0x592c0005, - 0x80000540, 0x05020135, 0x592c1c08, 0x592c0409, - 0x580c0900, 0x80040580, 0x05020130, 0x412c1800, + 0x10000001, 0x05fdf487, 0x82041400, 0x00111dfa, + 0x50080000, 0x80025d40, 0x0500013c, 0x592c0005, + 0x80000540, 0x05020137, 0x592c1c08, 0x592c0409, + 0x580c0900, 0x80040580, 0x05020132, 0x412c1800, 0x412c0000, 0x81740580, 0x0502000f, 0x59d80106, - 0x80000540, 0x05020129, 0x8d0c0524, 0x05020127, + 0x80000540, 0x0502012b, 0x8d0c0524, 0x05020129, 0x59980008, 0x90000482, 0x05021004, 0x4a03b104, - 0x10000000, 0x0501f004, 0x4c0c0000, 0x0519f8bb, + 0x10000000, 0x0501f004, 0x4c0c0000, 0x0519faf7, 0x5c001800, 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, 0x48001806, 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, 0x48001807, 0x59a00a09, 0x59a0120b, 0x82040400, 0x00005e00, 0x48080000, 0x48081c09, 0x59980008, 0x90000482, 0x05fe1455, 0x4a03b104, 0x10000001, 0x05fdf452, 0x59a00a09, - 0x82040480, 0x00000100, 0x05021106, 0x82041400, - 0x0010dd60, 0x50080000, 0x80025d40, 0x05000101, - 0x8c140514, 0x05fe0784, 0x41780000, 0x0501f8ff, + 0x82040480, 0x00000100, 0x05021108, 0x82041400, + 0x00111cfa, 0x50080000, 0x80025d40, 0x05000103, + 0x8c140514, 0x05fe0784, 0x41780000, 0x0501f901, 0x05fdf444, 0x8c140512, 0x05000003, 0x8d0c0520, - 0x050200f8, 0x59a00a09, 0x82040480, 0x00000100, - 0x050210f4, 0x800409c0, 0x050000f2, 0x8c140502, - 0x05020087, 0x82041400, 0x0010dd60, 0x50080000, - 0x80025d40, 0x050000eb, 0x592c1a00, 0x580c0000, - 0x592c1a0c, 0x800c0580, 0x05000003, 0x0501f96c, - 0x050200e2, 0x592c1a00, 0x580c0000, 0x48025a0c, - 0x4d340000, 0x4d440000, 0x4c080000, 0x61c2880f, - 0x59a04a09, 0x41440000, 0x81ac0400, 0x50026800, - 0x813669c0, 0x05000020, 0x5934000f, 0x40002000, - 0x80001d40, 0x0500001c, 0x580c0003, 0x58000211, - 0x80240580, 0x05000004, 0x580c0000, 0x400c2000, - 0x05fdf7f8, 0x4937c857, 0x4947c857, 0x480fc857, - 0x0501f94f, 0x0502001c, 0x4d2c0000, 0x400e5800, - 0x592c0800, 0x05edfbae, 0x5c025800, 0x40040000, - 0x5934100f, 0x800c1582, 0x0500000b, 0x4807c857, - 0x4813c857, 0x48042000, 0x800409c0, 0x05fe07e5, - 0x48126810, 0x814689c0, 0x0500000f, 0x81468840, - 0x05fdf7d9, 0x800409c0, 0x05020004, 0x497a680f, - 0x497a6810, 0x05fdf7f8, 0x4806680f, 0x40042000, - 0x05fdf7d8, 0x5c001000, 0x5c028800, 0x5c026800, - 0x0501f0a6, 0x5c001000, 0x5c028800, 0x5c026800, - 0x4d300000, 0x4d2c0000, 0x42026000, 0x00111b00, - 0x59325809, 0x812e59c0, 0x05000018, 0x592c0003, - 0x58000211, 0x80240580, 0x05020014, 0x0501f920, - 0x0502000f, 0x492fc857, 0x4d2c0000, 0x4c140000, - 0x4c080000, 0x053df9f8, 0x5c001000, 0x5c002800, - 0x5c025800, 0x05020009, 0x4c080000, 0x0005ffdc, - 0x05edfb77, 0x5c001000, 0x0501f004, 0x5c025800, - 0x5c026000, 0x0501f085, 0x91326430, 0x59a8000b, - 0x81300480, 0x05fc17e3, 0x5c025800, 0x5c026000, - 0x59980802, 0x80040840, 0x48073002, 0x45781000, - 0x59a00a09, 0x4807c857, 0x40f01000, 0x58080801, - 0x412c0000, 0x80040580, 0x05000004, 0x40041000, - 0x58040801, 0x05fdf7fb, 0x58040801, 0x48041001, - 0x4d2c0000, 0x412c0000, 0x80f00580, 0x05180e27, - 0x5c025800, 0x05edfb4d, 0x05fdf3b2, 0x82041400, - 0x0010de60, 0x50080000, 0x80025d40, 0x05000065, - 0x592c0005, 0x80000540, 0x05000012, 0x0501f8e8, - 0x0502005e, 0x592c0805, 0x4d2c0000, 0x40065800, - 0x58040000, 0x4c080000, 0x4c000000, 0x05edfb44, - 0x5c000000, 0x5c001000, 0x80000d40, 0x05fe07f8, - 0x5c025800, 0x48025804, 0x48025805, 0x850e1d26, - 0x592c1c08, 0x592c0409, 0x580c0900, 0x80040580, - 0x05000003, 0x0501f8d2, 0x05020048, 0x412c0000, - 0x81740580, 0x05020019, 0x59d80106, 0x80000540, - 0x05000011, 0x0501f8ca, 0x05020040, 0x42000800, - 0x000fffff, 0x59d80106, 0x80000540, 0x0500000a, - 0x0502e005, 0x59da5908, 0x4c080000, 0x05edfb1b, - 0x5c001000, 0x80040840, 0x05fe07f7, 0x4803c857, - 0x0501f032, 0x8d0c0524, 0x05000004, 0x0501f8b8, - 0x0502002e, 0x850e1d24, 0x60000802, 0x80040840, - 0x0500100a, 0x82040400, 0x0010dd60, 0x50000000, - 0x80000540, 0x05fc07fa, 0x58000012, 0x812c0580, - 0x05000010, 0x05fdf7f6, 0x59980808, 0x80040840, - 0x48073008, 0x45781000, 0x59a00a09, 0x4807c857, - 0x41741000, 0x58080800, 0x412c0000, 0x80040580, - 0x05000006, 0x40041000, 0x58040800, 0x05fdf7fb, - 0x492fc857, 0x0501f011, 0x58040800, 0x48041000, - 0x4d2c0000, 0x412c0000, 0x81740580, 0x05140fa7, - 0x5c025800, 0x592c0209, 0xb000053f, 0x82000400, - 0x0010df60, 0x45780000, 0x05edfae8, 0x05fdf34d, - 0x640b4407, 0x05fdf38e, 0x647b4407, 0x05fdf38c, - 0x64774407, 0x05fdf38a, 0x59a00c07, 0x8c040510, - 0x0500000a, 0x64065a0a, 0x59a0020d, 0x48025c11, - 0x0001ff16, 0x42000000, 0x00102ecb, 0x50000000, - 0x48025a10, 0x1c01f000, 0x59a00a0d, 0x90040486, - 0x05001002, 0x60040800, 0x82040c00, 0x00102ec8, - 0x50040000, 0x48025a10, 0x64025a0a, 0x1c01f000, - 0x00000002, 0x00000002, 0x00000005, 0x0000000a, - 0x00000014, 0x000000ff, 0x8c14050e, 0x05020008, - 0x59a0020c, 0x82000400, 0x0010de60, 0x50000000, - 0x80000540, 0x0500002d, 0x48025812, 0x48065a11, - 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, - 0x48025808, 0x59a0120a, 0x800810e0, 0x59a0040a, - 0x80080540, 0x48025809, 0x59a00409, 0x48025c0a, - 0x64065c10, 0x59980002, 0x80000000, 0x48033002, - 0x58f01001, 0x492de001, 0x480a5801, 0x82040400, - 0x00005c00, 0x59a0140b, 0x48080100, 0x480a5a0c, - 0x48025a00, 0x05fdffc1, 0x59a0140d, 0x8c140508, - 0x05000002, 0x8408157e, 0x8c14050a, 0x05000002, - 0x8408157c, 0x8c140504, 0x05000003, 0x82081540, - 0x20000000, 0x480a580b, 0x59a0040c, 0x48025c0c, - 0x80000580, 0x1c01f000, 0x45781000, 0x05edfa8f, - 0x647f4407, 0x90000541, 0x1c01f000, 0x4a025803, - 0xffff0000, 0x48065a02, 0x59a0020e, 0x48025a09, - 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, - 0x48025806, 0x59a0120a, 0x800810e0, 0x59a0040a, - 0x80080540, 0x48025807, 0x59a00409, 0x48025a08, - 0x59980008, 0x80000000, 0x48033008, 0x59741000, - 0x492ee800, 0x480a5800, 0x82040400, 0x00005e00, - 0x59a0120b, 0x48080000, 0x480a5c09, 0x48025c08, - 0x59a00c07, 0x59a0140d, 0x8c040508, 0x05000002, - 0x8408157e, 0x8c04050a, 0x05000002, 0x8408157c, - 0x8c040504, 0x05000003, 0x82081540, 0x20000000, - 0x480a5801, 0x59a0020e, 0x82000400, 0x0010df60, - 0x44080000, 0x80000580, 0x1c01f000, 0x8c140512, - 0x05000005, 0x8d0c0520, 0x05020003, 0x80000580, - 0x0501f002, 0x90000541, 0x4803c857, 0x1c01f000, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05fdf2f8, - 0x916c0583, 0x05020014, 0x050df93f, 0x05fe02f9, - 0x59240200, 0x8c000502, 0x05000041, 0x59240005, - 0x497b4407, 0x0519f961, 0x0500000e, 0x82000d00, - 0x00ffff00, 0x0502000b, 0x82000c00, 0x00102853, - 0x50040800, 0x80040910, 0x82041580, 0x00000080, - 0x05020003, 0x641f4407, 0x05fdf2e1, 0x48074407, - 0x82000d00, 0x0000ffff, 0x48074208, 0x80000120, - 0x48034408, 0x59a80249, 0x82001500, 0x00003500, - 0x480b440a, 0x5924100b, 0x82081500, 0x00001fff, - 0x480b420b, 0x480b420b, 0x8c000502, 0x05000016, - 0x8c000506, 0x05000006, 0x90000d0a, 0x90040d8a, - 0x05020003, 0x6407420a, 0x0501f018, 0x8c00050a, - 0x05000006, 0x90000d22, 0x90040da2, 0x05020003, - 0x640f420a, 0x0501f011, 0x8c000508, 0x05000006, - 0x90000d12, 0x90040d92, 0x05020003, 0x640b420a, - 0x0501f00a, 0x0519f92d, 0x05020003, 0x6413420a, - 0x05fdf274, 0x8c000506, 0x05000003, 0x64174407, - 0x05fdf2b3, 0x6403420a, 0x05fdf26e, 0x646f4407, - 0x05fdf2af, 0x59a8005c, 0x48034408, 0x59a8005d, - 0x4803420a, 0x05fdf267, 0x42007800, 0x0010e4e5, - 0x59a00407, 0x4803c857, 0x90000c8c, 0x05fe12a9, - 0x0c01f001, 0x0010300c, 0x00102fac, 0x00102fb9, - 0x00102fc9, 0x00102fe8, 0x0010300d, 0x00102fa5, - 0x00102fa5, 0x00103019, 0x00103054, 0x00102fa6, - 0x00103067, 0x05fdf29b, 0x59a00208, 0x48007c01, - 0x59a00408, 0x48007a01, 0x05e9feec, 0x0501f061, - 0x916c0580, 0x05fc028e, 0x59a00a08, 0x59a00408, - 0x900001c0, 0x80040d40, 0x4807c857, 0x59a00a09, - 0x59a00409, 0x900001c0, 0x80040d40, 0x4807c857, - 0x0501f054, 0x916c0580, 0x05fc0281, 0x59a00408, - 0x59a01208, 0x900001c0, 0x80081540, 0x59a00409, - 0x59a01a09, 0x900001c0, 0x800c1d40, 0x42000000, - 0x00110772, 0x480fc857, 0x480bc857, 0x60000820, - 0x050df000, 0x59a00a08, 0x59a00408, 0x900001c0, - 0x80041d40, 0x820c0c80, 0x0010d32a, 0x05fe1271, - 0x820c0c80, 0x00100000, 0x05fc126e, 0x480fc857, - 0x903c7c22, 0x503c0800, 0x800409c0, 0x05000005, - 0x903c05a6, 0x05fc0267, 0x803c7800, 0x05fdf7fa, - 0x59e41001, 0x82080d00, 0xfffeffcf, 0x4807c801, - 0x440c7800, 0x46001800, 0x0201f800, 0x800c1800, - 0x46001800, 0x001005ce, 0x480bc801, 0x0501f025, - 0x59a01a08, 0x59a00408, 0x900001c0, 0x800c1d40, - 0x480c7803, 0x59a02209, 0x59a00409, 0x900001c0, - 0x80102540, 0x48107804, 0x59a0020a, 0x40001000, - 0x48007807, 0x80000040, 0x05fc124a, 0x48007808, - 0x60000880, 0x0525ff79, 0x80000540, 0x05000002, - 0x05fdf244, 0x40040000, 0x800c1c00, 0x05fc1241, - 0x4800780a, 0x480c7805, 0x48107806, 0x4978780c, - 0x59a0040a, 0x800000c4, 0x4800780b, 0x59e40001, - 0x4803c857, 0x82000540, 0x00040000, 0x4803c801, - 0x05fdf1ec, 0x49787803, 0x49787804, 0x49787808, - 0x49787807, 0x49787803, 0x49787805, 0x49787806, - 0x4978780c, 0x4978780b, 0x59e40001, 0x84000524, - 0x05fdf7f3, 0x4978781f, 0x49787814, 0x49787815, - 0x4978781d, 0x49787817, 0x49787818, 0x59a01a08, - 0x59a00408, 0x900001c0, 0x800c1d40, 0x480c780e, - 0x480c7819, 0x480c781b, 0x59a02209, 0x59a00409, - 0x900001c0, 0x80102540, 0x4810780f, 0x4810781a, - 0x4810781c, 0x59a0020a, 0x80000540, 0x05fc0211, - 0x48007813, 0x60000808, 0x40001000, 0x0525ff3f, - 0x80000540, 0x05fe020b, 0x40040000, 0x800c1c00, - 0x05fc1208, 0x480c7810, 0x48107811, 0x4a03420a, - 0x00000400, 0x59a0040a, 0x4800781e, 0x850e1d6a, - 0x59a0040b, 0x48007a12, 0x59a0020c, 0x48007c12, - 0x600c0000, 0x05e9fe2c, 0x80102000, 0x4810780d, - 0x48134209, 0x901021c0, 0x48134409, 0x59e40052, - 0x4803c857, 0x4a007816, 0x00000400, 0x903c0416, + 0x050200fa, 0x59a00a09, 0x82040480, 0x00000100, + 0x050210f6, 0x800409c0, 0x050000f4, 0x8c140502, + 0x05020089, 0x82041400, 0x00111cfa, 0x50080000, + 0x80025d40, 0x050000ed, 0x592c1a00, 0x580c0000, + 0x592c1a0c, 0x800c0580, 0x05000003, 0x0501f96f, + 0x050200e4, 0x592c1a00, 0x580c0000, 0x48025a0c, + 0x4d340000, 0x4d440000, 0x4c080000, 0x59aa88ac, + 0x81468840, 0x59a04a09, 0x0001fb08, 0x05020020, + 0x5934000f, 0x40002000, 0x80001d40, 0x0500001c, + 0x580c0003, 0x58000211, 0x80240580, 0x05000004, + 0x580c0000, 0x400c2000, 0x05fdf7f8, 0x4937c857, + 0x4947c857, 0x480fc857, 0x0501f954, 0x05020020, + 0x4d2c0000, 0x400e5800, 0x592c0800, 0x05edfb3f, + 0x5c025800, 0x40040000, 0x5934100f, 0x800c1582, + 0x0500000f, 0x4807c857, 0x4813c857, 0x48042000, + 0x800409c0, 0x05fe07e5, 0x48126810, 0x814689c0, + 0x05000013, 0x81468840, 0x83440580, 0x000007ff, + 0x05fe07da, 0x61be887f, 0x05fdf7d8, 0x800409c0, + 0x05020004, 0x497a680f, 0x497a6810, 0x05fdf7f4, + 0x4806680f, 0x40042000, 0x05fdf7d4, 0x5c001000, + 0x5c028800, 0x5c026800, 0x0501f0a6, 0x5c001000, + 0x5c028800, 0x5c026800, 0x4d300000, 0x4d2c0000, + 0x42026000, 0x00115aa4, 0x59325809, 0x812e59c0, + 0x05000018, 0x592c0003, 0x58000211, 0x80240580, + 0x05020014, 0x0501f921, 0x0502000f, 0x492fc857, + 0x4d2c0000, 0x4c140000, 0x4c080000, 0x053dfec0, + 0x5c001000, 0x5c002800, 0x5c025800, 0x05020009, + 0x4c080000, 0x0009f810, 0x05edfb04, 0x5c001000, + 0x0501f004, 0x5c025800, 0x5c026000, 0x0501f085, + 0x91326430, 0x59a8000b, 0x81300480, 0x05fc17e3, + 0x5c025800, 0x5c026000, 0x59980802, 0x80040840, + 0x48073002, 0x45781000, 0x59a00a09, 0x4807c857, + 0x40f01000, 0x58080801, 0x412c0000, 0x80040580, + 0x05000004, 0x40041000, 0x58040801, 0x05fdf7fb, + 0x58040801, 0x48041001, 0x4d2c0000, 0x412c0000, + 0x80f00580, 0x051c086d, 0x5c025800, 0x05edfada, + 0x05fdf3b0, 0x82041400, 0x00111dfa, 0x50080000, + 0x80025d40, 0x05000065, 0x592c0005, 0x80000540, + 0x05000012, 0x0501f8e9, 0x0502005e, 0x592c0805, + 0x4d2c0000, 0x40065800, 0x58040000, 0x4c080000, + 0x4c000000, 0x05edfad1, 0x5c000000, 0x5c001000, + 0x80000d40, 0x05fe07f8, 0x5c025800, 0x48025804, + 0x48025805, 0x850e1d26, 0x592c1c08, 0x592c0409, + 0x580c0900, 0x80040580, 0x05000003, 0x0501f8d3, + 0x05020048, 0x412c0000, 0x81740580, 0x05020019, + 0x59d80106, 0x80000540, 0x05000011, 0x0501f8cb, + 0x05020040, 0x42000800, 0x000fffff, 0x59d80106, + 0x80000540, 0x0500000a, 0x0502e005, 0x59da5908, + 0x4c080000, 0x05edfaa8, 0x5c001000, 0x80040840, + 0x05fe07f7, 0x4803c857, 0x0501f032, 0x8d0c0524, + 0x05000004, 0x0501f8b9, 0x0502002e, 0x850e1d24, + 0x60000802, 0x80040840, 0x0500100a, 0x82040400, + 0x00111cfa, 0x50000000, 0x80000540, 0x05fc07fa, + 0x58000012, 0x812c0580, 0x05000010, 0x05fdf7f6, + 0x59980808, 0x80040840, 0x48073008, 0x45781000, + 0x59a00a09, 0x4807c857, 0x41741000, 0x58080800, + 0x412c0000, 0x80040580, 0x05000006, 0x40041000, + 0x58040800, 0x05fdf7fb, 0x492fc857, 0x0501f011, + 0x58040800, 0x48041000, 0x4d2c0000, 0x412c0000, + 0x81740580, 0x051809e1, 0x5c025800, 0x592c0209, + 0xb000053f, 0x82000400, 0x00111efa, 0x45780000, + 0x05edfa75, 0x05fdf34b, 0x640b4407, 0x05fdf38c, + 0x647b4407, 0x05fdf38a, 0x64774407, 0x05fdf388, + 0x59a00c07, 0x8c040510, 0x0500000b, 0x64065a0a, + 0x497a580d, 0x59a0020d, 0x48025c11, 0x0001ff3c, + 0x42000000, 0x00102f76, 0x50000000, 0x48025a10, + 0x1c01f000, 0x59a00a0d, 0x90040486, 0x05001002, + 0x60040800, 0x82040c00, 0x00102f73, 0x50040000, + 0x48025a10, 0x64025a0a, 0x1c01f000, 0x00000002, + 0x00000002, 0x00000005, 0x0000000a, 0x00000014, + 0x000000ff, 0x8c14050e, 0x05020008, 0x59a0020c, + 0x82000400, 0x00111dfa, 0x50000000, 0x80000540, + 0x0500002d, 0x48025812, 0x48065a11, 0x59a01208, + 0x800810e0, 0x59a00408, 0x80080540, 0x48025808, + 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, + 0x48025809, 0x59a00409, 0x48025c0a, 0x64065c10, + 0x59980002, 0x80000000, 0x48033002, 0x58f01001, + 0x492de001, 0x480a5801, 0x82040400, 0x00005c00, + 0x59a0140b, 0x48080100, 0x480a5a0c, 0x48025a00, + 0x05fdffc0, 0x59a0140d, 0x8c140508, 0x05000002, + 0x8408157e, 0x8c14050a, 0x05000002, 0x8408157c, + 0x8c140504, 0x05000003, 0x82081540, 0x20000000, + 0x480a580b, 0x59a0040c, 0x48025c0c, 0x80000580, + 0x1c01f000, 0x45781000, 0x05edfa1b, 0x647f4407, + 0x90000541, 0x1c01f000, 0x4a025803, 0xffff0000, + 0x48065a02, 0x59a0020e, 0x48025a09, 0x59a01208, + 0x800810e0, 0x59a00408, 0x80080540, 0x48025806, + 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, + 0x48025807, 0x59a00409, 0x48025a08, 0x59980008, + 0x80000000, 0x48033008, 0x59741000, 0x492ee800, + 0x480a5800, 0x82040400, 0x00005e00, 0x59a0120b, + 0x48080000, 0x480a5c09, 0x48025c08, 0x59a00c07, + 0x59a0140d, 0x8c040508, 0x05000002, 0x8408157e, + 0x8c04050a, 0x05000002, 0x8408157c, 0x8c040504, + 0x05000003, 0x82081540, 0x20000000, 0x480a5801, + 0x59a0020e, 0x82000400, 0x00111efa, 0x44080000, + 0x80000580, 0x1c01f000, 0x8c140512, 0x05000005, + 0x8d0c0520, 0x05020003, 0x80000580, 0x0501f002, + 0x90000541, 0x4803c857, 0x1c01f000, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05fdf2f5, 0x916c0583, + 0x05020014, 0x050dfa31, 0x05fe02f6, 0x59240200, + 0x8c000502, 0x05000041, 0x59240005, 0x497b4407, + 0x0519fba0, 0x0500000e, 0x82000d00, 0x00ffff00, + 0x0502000b, 0x82000c00, 0x001028fb, 0x50040800, + 0x80040910, 0x82041580, 0x00000080, 0x05020003, + 0x641f4407, 0x05fdf2de, 0x48074407, 0x82000d00, + 0x0000ffff, 0x48074208, 0x80000120, 0x48034408, + 0x59a8024c, 0x82001500, 0x00003500, 0x480b440a, + 0x5924100b, 0x82081500, 0x00001fff, 0x480b420b, + 0x480b420b, 0x8c000502, 0x05000016, 0x8c000506, + 0x05000006, 0x90000d0a, 0x90040d8a, 0x05020003, + 0x6407420a, 0x0501f018, 0x8c00050a, 0x05000006, + 0x90000d22, 0x90040da2, 0x05020003, 0x640f420a, + 0x0501f011, 0x8c000508, 0x05000006, 0x90000d12, + 0x90040d92, 0x05020003, 0x640b420a, 0x0501f00a, + 0x0519fb6c, 0x05020003, 0x6413420a, 0x05fdf271, + 0x8c000506, 0x05000003, 0x64174407, 0x05fdf2b0, + 0x6403420a, 0x05fdf26b, 0x646f4407, 0x05fdf2ac, + 0x59a8005f, 0x48034408, 0x59a80060, 0x4803420a, + 0x05fdf264, 0x42007800, 0x00112489, 0x59a00407, + 0x4803c857, 0x90000c8c, 0x05fe12a6, 0x0c01f001, + 0x001030b7, 0x00103057, 0x00103064, 0x00103074, + 0x00103093, 0x001030b8, 0x00103050, 0x00103050, + 0x001030c4, 0x001030fc, 0x00103051, 0x0010310f, + 0x05fdf298, 0x59a00208, 0x48007c01, 0x59a00408, + 0x48007a01, 0x05e9fe70, 0x0501f061, 0x916c0580, + 0x05fc028b, 0x59a00a08, 0x59a00408, 0x900001c0, + 0x80040d40, 0x4807c857, 0x59a00a09, 0x59a00409, + 0x900001c0, 0x80040d40, 0x4807c857, 0x0501f054, + 0x916c0580, 0x05fc027e, 0x59a00408, 0x59a01208, + 0x900001c0, 0x80081540, 0x59a00409, 0x59a01a09, + 0x900001c0, 0x800c1d40, 0x42000000, 0x00114716, + 0x480fc857, 0x480bc857, 0x60000820, 0x050df0f7, + 0x59a00a08, 0x59a00408, 0x900001c0, 0x80041d40, + 0x820c0c80, 0x0010daa9, 0x05fe126e, 0x820c0c80, + 0x00100000, 0x05fc126b, 0x480fc857, 0x903c7c22, + 0x503c0800, 0x800409c0, 0x05000005, 0x903c05a6, + 0x05fc0264, 0x803c7800, 0x05fdf7fa, 0x59e41001, + 0x82080d00, 0xfffeffcf, 0x4807c801, 0x440c7800, + 0x46001800, 0x0201f800, 0x800c1800, 0x46001800, + 0x00100609, 0x480bc801, 0x0501f025, 0x59a01a08, + 0x59a00408, 0x900001c0, 0x800c1d40, 0x480c7803, + 0x59a02209, 0x59a00409, 0x900001c0, 0x80102540, + 0x48107804, 0x59a0020a, 0x40001000, 0x48007807, + 0x80000040, 0x05fc1247, 0x48007808, 0x60000880, + 0x0529fb87, 0x80000540, 0x05000002, 0x05fdf241, + 0x40040000, 0x800c1c00, 0x05fc123e, 0x4800780a, + 0x480c7805, 0x48107806, 0x4978780c, 0x59a0040a, + 0x800000c4, 0x4800780b, 0x59e40001, 0x4803c857, + 0x82000540, 0x00040000, 0x4803c801, 0x05fdf1e9, + 0x49787803, 0x49787804, 0x49787808, 0x49787807, + 0x49787803, 0x49787805, 0x49787806, 0x4978780c, + 0x4978780b, 0x59e40001, 0x84000524, 0x05fdf7f3, + 0x4978781f, 0x49787814, 0x49787815, 0x4978781d, + 0x49787817, 0x49787818, 0x59a01a08, 0x59a00408, + 0x900001c0, 0x800c1d40, 0x480c780e, 0x480c7819, + 0x480c781b, 0x59a02209, 0x59a00409, 0x900001c0, + 0x80102540, 0x4810780f, 0x4810781a, 0x4810781c, + 0x59a0020a, 0x80000540, 0x05fc020e, 0x48007813, + 0x60000808, 0x40001000, 0x0529fb4d, 0x80000540, + 0x05fe0208, 0x40040000, 0x800c1c00, 0x05fc1205, + 0x480c7810, 0x48107811, 0x4a03420a, 0x00000400, + 0x59a0040a, 0x4800781e, 0x850e1d6a, 0x59a0040b, + 0x48007a12, 0x59a0020c, 0x48007c12, 0x59e42051, + 0x80102000, 0x4810780d, 0x48134209, 0x901021c0, + 0x48134409, 0x4a007816, 0x00000400, 0x903c0416, 0x48034208, 0x900001c0, 0x48034408, 0x05fdf1a5, 0x583c0800, 0x830e1d00, 0xffcfffff, 0x48ec7820, 0x4a01d802, 0x00000100, 0x583c0017, 0x82000500, 0x000000ff, 0x05020008, 0x4807c857, 0x8c040502, 0x05000004, 0x84040d48, 0x48047800, 0x1c01f000, - 0x0501f00a, 0x05f1fba5, 0x1c01f000, 0x916c0580, - 0x05fc01d3, 0x05e9fee6, 0x900801c0, 0x480b4407, - 0x48034208, 0x05fdf18b, 0x42007800, 0x0010e4e5, + 0x0501f00a, 0x05f1fb6c, 0x1c01f000, 0x916c0580, + 0x05fc01d3, 0x05e9fe6d, 0x900801c0, 0x480b4407, + 0x48034208, 0x05fdf18b, 0x42007800, 0x00112489, 0x583dd820, 0x58ef400b, 0x40ec6000, 0x583c0000, 0x48efc857, 0x49a3c857, 0x4803c857, 0x82000500, 0x0000ffc0, 0x48007800, 0x583c001d, 0x4803c857, @@ -3144,2901 +3186,3044 @@ static const uint32_t isp_2500_risc_code[] = { 0x4807440b, 0x49787818, 0x583c0017, 0x49787817, 0x82000500, 0x000000ff, 0x05fe0163, 0x05fdf165, 0x59a80005, 0x48034407, 0x59a80006, 0x48034208, - 0x59a80007, 0x48034408, 0x05fdf15e, 0x05e9fd3f, + 0x59a80007, 0x48034408, 0x05fdf15e, 0x05e9fcd2, 0x4803c856, 0x59a0020c, 0x4803c857, 0x8c00051e, - 0x050e00de, 0x8c00051a, 0x05000005, 0x050df87c, - 0x05000018, 0x65034407, 0x05fdf195, 0x05f5fed9, - 0x05000003, 0x05f5febe, 0x05000003, 0x648b4407, + 0x050e01dc, 0x8c00051a, 0x05000005, 0x050df97a, + 0x05000018, 0x65034407, 0x05fdf195, 0x05f5feb1, + 0x05000003, 0x05f5fe96, 0x05000003, 0x648b4407, 0x05fdf18f, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x59a00c07, 0x82040580, 0x000000a0, 0x05000004, 0x82040580, 0x000000a2, 0x0502001e, 0x59a0140b, 0x82080480, 0x00000100, 0x0502101a, - 0x050df869, 0x05fe0183, 0x59a0020c, 0x8c000500, + 0x050df967, 0x05fe0183, 0x59a0020c, 0x8c000500, 0x0502001b, 0x59a00a0b, 0x800409c0, 0x05000012, - 0xb0040481, 0x05021010, 0x0509fed9, 0x0500000a, + 0xb0040481, 0x05021010, 0x0509ffd3, 0x0500000a, 0x59a01008, 0x900811c0, 0x59a0180a, 0x900c19c0, - 0x59a00a0b, 0x0509fef4, 0x4a01d809, 0x001030d8, + 0x59a00a0b, 0x0509ffee, 0x4a01d809, 0x00103180, 0x1c01f000, 0x640b4407, 0x4a03c014, 0x03800000, 0x05fdf167, 0x4a03c014, 0x03800000, 0x05fdf169, - 0x0505fd83, 0x05fc0159, 0x58ee580d, 0x59a00c07, + 0x0505fe51, 0x05fc0159, 0x58ee580d, 0x59a00c07, 0x59a0140b, 0x59a0020c, 0x8c000500, 0x0502004e, - 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x050df853, - 0x05000009, 0x05f9f889, 0x05f9f904, 0x05000003, - 0x65074407, 0x05fdf151, 0x05f9f919, 0x59a00c07, + 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x050df951, + 0x05000009, 0x05f9f861, 0x05f9f8dc, 0x05000003, + 0x65074407, 0x05fdf151, 0x05f9f8f1, 0x59a00c07, 0x59a0140b, 0x40600000, 0x812c0400, 0x5000c800, 0x82641d00, 0x000000ff, 0x4c040000, 0x4c080000, - 0x050df842, 0x05000002, 0x8408157e, 0x0501f93f, + 0x050df940, 0x05000002, 0x8408157e, 0x0501f947, 0x5c001000, 0x5c000800, 0x0500005f, 0x805cb840, 0x05000058, 0x80081000, 0x82641d00, 0x0000ff00, - 0x800c1910, 0x4c040000, 0x4c080000, 0x050df833, - 0x05000002, 0x8408157e, 0x0501f930, 0x5c001000, + 0x800c1910, 0x4c040000, 0x4c080000, 0x050df931, + 0x05000002, 0x8408157e, 0x0501f938, 0x5c001000, 0x5c000800, 0x05000050, 0x805cb840, 0x05000049, 0x80081000, 0x82641d00, 0x00ff0000, 0x800c1920, - 0x4c040000, 0x4c080000, 0x050df824, 0x05000002, - 0x8408157e, 0x0501f921, 0x5c001000, 0x5c000800, + 0x4c040000, 0x4c080000, 0x050df922, 0x05000002, + 0x8408157e, 0x0501f929, 0x5c001000, 0x5c000800, 0x05000041, 0x805cb840, 0x0500003a, 0x80081000, 0x82641d00, 0xff000000, 0x800c1930, 0x4c040000, - 0x4c080000, 0x050df815, 0x05000002, 0x8408157e, - 0x0501f912, 0x5c001000, 0x5c000800, 0x05000032, + 0x4c080000, 0x050df913, 0x05000002, 0x8408157e, + 0x0501f91a, 0x5c001000, 0x5c000800, 0x05000032, 0x805cb840, 0x0500002b, 0x80081000, 0x8060c000, 0x05fdf7c1, 0x59a0020b, 0x82000500, 0x000000ff, - 0x40001800, 0x050df805, 0x05000020, 0x4c0c0000, - 0x05f9f83a, 0x5c001800, 0x05f9f8c5, 0x59a00c07, + 0x40001800, 0x050df903, 0x05000020, 0x4c0c0000, + 0x05f9f812, 0x5c001800, 0x05f9f89d, 0x59a00c07, 0x59a0140b, 0x82040580, 0x000000e0, 0x05000013, - 0x05f9f8c7, 0x82040580, 0x000000a0, 0x05000007, + 0x05f9f89f, 0x82040580, 0x000000a0, 0x05000007, 0x82040580, 0x000000d0, 0x05fe00fd, 0x4807c857, - 0x8408157c, 0x0501f009, 0x05f9f8a4, 0x05000003, - 0x65074407, 0x05fdf0f1, 0x05f9f8b9, 0x59a00c07, - 0x59a0140b, 0x8408157e, 0x0501f8e8, 0x0500000a, - 0x4817c857, 0x0501f003, 0x0501f8e4, 0x05000006, - 0x0509ffe2, 0x05fa083a, 0x4a03c014, 0x03800000, - 0x05fdf0a0, 0x0509ffdd, 0x05fa0835, 0x4a03c014, + 0x8408157c, 0x0501f009, 0x05f9f87c, 0x05000003, + 0x65074407, 0x05fdf0f1, 0x05f9f891, 0x59a00c07, + 0x59a0140b, 0x8408157e, 0x0501f8f0, 0x0500000a, + 0x4817c857, 0x0501f003, 0x0501f8ec, 0x05000006, + 0x050df8e0, 0x05fa0812, 0x4a03c014, 0x03800000, + 0x05fdf0a0, 0x050df8db, 0x05fa080d, 0x4a03c014, 0x03800000, 0x64134407, 0x05fdf0dd, 0x4803c856, - 0x59a0020c, 0x4803c857, 0x8c00051e, 0x050a07d6, - 0x8c00051a, 0x05000005, 0x0509ffb9, 0x05000018, - 0x65034407, 0x05fdf0d2, 0x05f5fe16, 0x05000003, - 0x05f5fdfb, 0x05000003, 0x648b4407, 0x05fdf0cc, + 0x59a0020c, 0x4803c857, 0x8c00051e, 0x050e00d4, + 0x8c00051a, 0x05000005, 0x050df8b7, 0x05000018, + 0x65034407, 0x05fdf0d2, 0x05f5fdee, 0x05000003, + 0x05f5fdd3, 0x05000003, 0x648b4407, 0x05fdf0cc, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x59a00c07, 0x82040580, 0x000000a0, 0x05000004, - 0x82040580, 0x000000a2, 0x050200b9, 0x59a0140b, - 0x82080480, 0x00000100, 0x050210b5, 0x0509ffa6, + 0x82040580, 0x000000a2, 0x050200c1, 0x59a0140b, + 0x82080480, 0x00000100, 0x050210bd, 0x050df8a4, 0x05fe00c0, 0x59a00c07, 0x59a0140b, 0x4807c857, - 0x480bc857, 0x59a0020c, 0x8c000500, 0x05020068, - 0x59a01a0b, 0x800c19c0, 0x050000a9, 0xb00c0481, - 0x050210a7, 0x0509fe12, 0x05020006, 0x640b4407, + 0x480bc857, 0x59a0020c, 0x8c000500, 0x05020070, + 0x59a01a0b, 0x800c19c0, 0x050000b1, 0xb00c0481, + 0x050210af, 0x0509ff0c, 0x05020006, 0x640b4407, 0x4a03c014, 0x03800000, 0x4803c857, 0x05fdf0a8, - 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x0509ff9f, - 0x05000007, 0x05f5ffd5, 0x05f9f850, 0x05000003, - 0x65074407, 0x05fdf09d, 0x05f9f865, 0x59a00c07, + 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x59a0020c, + 0x8c00051a, 0x05020006, 0x8c000502, 0x0500000e, + 0x0501f8ff, 0x0502004f, 0x0501f097, 0x050df895, + 0x05000007, 0x05f5ffa5, 0x05f9f820, 0x05000003, + 0x65074407, 0x05fdf095, 0x05f9f835, 0x59a00c07, 0x59a0140b, 0x4803c857, 0x40600000, 0x812c0400, - 0x4000c800, 0x4c040000, 0x4c080000, 0x0509ff8f, - 0x05000002, 0x8408157e, 0x0501f8c2, 0x5c001000, + 0x4000c800, 0x4c040000, 0x4c080000, 0x050df885, + 0x05000002, 0x8408157e, 0x0501f8c4, 0x5c001000, 0x5c000800, 0x05000080, 0x4414c800, 0x805cb840, 0x05000034, 0x80081000, 0x4c040000, 0x4c080000, - 0x0509ff82, 0x05000002, 0x8408157e, 0x0501f8b5, + 0x050df878, 0x05000002, 0x8408157e, 0x0501f8b7, 0x5c001000, 0x5c000800, 0x05000073, 0x50640000, 0x801428d0, 0x80140540, 0x4400c800, 0x805cb840, 0x05000024, 0x80081000, 0x4c040000, 0x4c080000, - 0x0509ff72, 0x05000002, 0x8408157e, 0x0501f8a5, + 0x050df868, 0x05000002, 0x8408157e, 0x0501f8a7, 0x5c001000, 0x5c000800, 0x05000063, 0x50640000, 0x801428e0, 0x80140540, 0x4400c800, 0x805cb840, 0x05000014, 0x80081000, 0x4c040000, 0x4c080000, - 0x0509ff62, 0x05000002, 0x8408157e, 0x0501f895, + 0x050df858, 0x05000002, 0x8408157e, 0x0501f897, 0x5c001000, 0x5c000800, 0x05000053, 0x50640000, 0x801428f0, 0x80140540, 0x4400c800, 0x805cb840, 0x05000004, 0x80081000, 0x8060c000, 0x05fdf7be, - 0x0509ff52, 0x05f60faa, 0x59a00a0b, 0x59a01008, + 0x050df848, 0x05f60f7a, 0x59a00a0b, 0x59a01008, 0x900811c0, 0x59a0180a, 0x900c19c0, 0x4a03c014, - 0x03800000, 0x412c0000, 0x0509f5d5, 0x4803c857, - 0x0509ff46, 0x05000036, 0x05f5ff7c, 0x05f9f808, + 0x03800000, 0x412c0000, 0x0509f6c7, 0x4803c857, + 0x050df83c, 0x05000036, 0x05f5ff4c, 0x05f5ffd8, 0x59a00c07, 0x59a0140b, 0x82040580, 0x00000098, - 0x0502000d, 0x59a80084, 0x8c000520, 0x05000006, - 0x59a8287d, 0x9014050f, 0x05020003, 0x8c140508, + 0x0502000d, 0x59a80087, 0x8c000520, 0x05000006, + 0x59a82880, 0x9014050f, 0x05020003, 0x8c140508, 0x0500001c, 0x90080581, 0x0502001a, 0x60001000, 0x0501f018, 0x82040580, 0x000000e0, 0x05000015, - 0x05f5fffb, 0x82040580, 0x000000a0, 0x05000009, - 0x82040580, 0x000000d0, 0x05fe0031, 0x4807c857, - 0x6140b801, 0x0501f84c, 0x40642800, 0x0501f011, - 0x05f5ffd6, 0x05000003, 0x65074407, 0x05fdf023, - 0x05f5ffeb, 0x59a00c07, 0x59a0140b, 0x8408157e, - 0x0501f850, 0x05020003, 0x65074407, 0x05fdf01b, - 0x59a00c07, 0x82040580, 0x00000098, 0x05f40ff6, - 0x4817c857, 0x05f5ff6a, 0x0501f003, 0x0501f845, + 0x05f5ffcb, 0x82040580, 0x000000a0, 0x05000009, + 0x82040580, 0x000000d0, 0x05fe0029, 0x4807c857, + 0x6140b801, 0x0501f84d, 0x40642800, 0x0501f011, + 0x05f5ffa6, 0x05000003, 0x65074407, 0x05fdf01b, + 0x05f5ffbb, 0x59a00c07, 0x59a0140b, 0x8408157e, + 0x0501f852, 0x05020003, 0x65074407, 0x05fdf013, + 0x59a00c07, 0x82040580, 0x00000098, 0x05f40fc6, + 0x4817c857, 0x05f5ff3a, 0x0501f003, 0x0501f847, 0x05000005, 0x48174407, 0x4a03c014, 0x03800000, - 0x05f9f7cc, 0x0509ff09, 0x05f60f61, 0x4a03c014, - 0x03800000, 0x64134407, 0x05fdf009, 0x4a03c014, - 0x03800000, 0x05fdf00b, 0x4c5c0000, 0x4c600000, + 0x05f9f7c4, 0x0509ffff, 0x05f60f31, 0x4a03c014, + 0x03800000, 0x64134407, 0x05fdf001, 0x4a03c014, + 0x03800000, 0x05fdf003, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4004b800, 0x4008c000, 0x400cc800, - 0x0501f877, 0x05000019, 0x0501f8a3, 0x0502001b, + 0x0501f8e7, 0x05000019, 0x0501f913, 0x0502001b, 0x8c60053c, 0x0502000c, 0x8c60053e, 0x05000007, 0x4060b800, 0x825cbd00, 0x0000ff00, 0x805cb910, - 0x0501f899, 0x05020011, 0x4060b800, 0x0501f896, - 0x0502000e, 0x4064b800, 0x0501f893, 0x0502000b, - 0x0501f882, 0x4ce80000, 0x6021d027, 0x0521fdb2, + 0x0501f909, 0x05020011, 0x4060b800, 0x0501f906, + 0x0502000e, 0x4064b800, 0x0501f903, 0x0502000b, + 0x0501f8f2, 0x4ce80000, 0x6021d027, 0x0525f96d, 0x5c01d000, 0x90000541, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x0501f878, 0x80000580, - 0x05fdf7fa, 0x4c5c0000, 0x0501f855, 0x05000008, - 0x905cbd41, 0x0501f880, 0x05020007, 0x0501f8ba, - 0x0501f8ec, 0x0501f86d, 0x90000541, 0x5c00b800, - 0x1c01f000, 0x0501f869, 0x80000580, 0x05fdf7fc, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4004b800, - 0x4008c000, 0x0501f842, 0x05000016, 0x0501f86e, - 0x05020019, 0x8c60053e, 0x05000009, 0x4c5c0000, - 0x4060b800, 0x825cbd00, 0x0000ff00, 0x805cb910, - 0x0501f865, 0x5c00b800, 0x0502000f, 0x4c5c0000, - 0x4060b800, 0x0501f860, 0x5c00b800, 0x0502000a, - 0x05fdffd9, 0x05000003, 0x0501f84c, 0x90000541, - 0x40642800, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x0501f845, 0x80000580, 0x05fdf7f9, - 0x4ce80000, 0x4c580000, 0x4803c856, 0x6030b000, - 0x6029d000, 0x0521fd70, 0x4a03c013, 0x02000200, - 0x6029d000, 0x0521fd6c, 0x4a03c013, 0x02000000, - 0x8058b040, 0x05fe07f7, 0x61a00807, 0x4a03c013, - 0x03800300, 0x80040840, 0x0500000f, 0x4a03c014, - 0x03800000, 0x59e00013, 0x4a03c014, 0x03800380, - 0x82000500, 0x00000300, 0x82000580, 0x00000300, - 0x05fe07f3, 0x90000541, 0x5c00b000, 0x5c01d000, - 0x1c01f000, 0x80000580, 0x05fdf7fc, 0x4ce80000, + 0x5c00b800, 0x1c01f000, 0x0501f8e8, 0x80000580, + 0x4803c856, 0x05fdf7f9, 0x4c5c0000, 0x0501f8c4, + 0x05000008, 0x905cbd41, 0x0501f8ef, 0x05020007, + 0x0501f929, 0x0501f959, 0x0501f8dc, 0x90000541, + 0x5c00b800, 0x1c01f000, 0x0501f8d8, 0x80000580, + 0x485fc857, 0x05fdf7fb, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4004b800, 0x4008c000, 0x0501f8b0, + 0x05000016, 0x0501f8dc, 0x05020019, 0x8c60053e, + 0x05000009, 0x4c5c0000, 0x4060b800, 0x825cbd00, + 0x0000ff00, 0x805cb910, 0x0501f8d3, 0x5c00b800, + 0x0502000f, 0x4c5c0000, 0x4060b800, 0x0501f8ce, + 0x5c00b800, 0x0502000a, 0x05fdffd8, 0x05000003, + 0x0501f8ba, 0x90000541, 0x40642800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x0501f8b3, + 0x80000580, 0x4867c857, 0x05fdf7f8, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4d040000, 0x4c500000, + 0x4c540000, 0x4c580000, 0x4004a000, 0x4008a800, + 0x400cb000, 0x412e0800, 0x40500800, 0x40541000, + 0x4004b800, 0x4008c000, 0x0501f881, 0x0500004f, + 0x0501f8ad, 0x05020056, 0x8c60053e, 0x05000009, + 0x4c5c0000, 0x4060b800, 0x825cbd00, 0x0000ff00, + 0x805cb910, 0x0501f8a4, 0x5c00b800, 0x0502004c, + 0x4c5c0000, 0x4060b800, 0x0501f89f, 0x5c00b800, + 0x05020047, 0x0501f86e, 0x0500003c, 0x905cbd41, + 0x0501f899, 0x05020042, 0x40581800, 0x900c1c88, + 0x05001004, 0x400cb000, 0x6020b800, 0x0501f003, + 0x4058b800, 0x4178b000, 0x0501f8cb, 0x82642d00, + 0x000000ff, 0x805cb840, 0x05000020, 0x0501f906, + 0x0501f8c5, 0x8064c8d0, 0x82640500, 0x0000ff00, + 0x80142d40, 0x805cb840, 0x05000018, 0x0501f8fe, + 0x0501f8bd, 0x8064c8e0, 0x82640500, 0x00ff0000, + 0x80142d40, 0x805cb840, 0x05000010, 0x0501f8f6, + 0x0501f8b5, 0x8064c8f0, 0x82640500, 0xff000000, + 0x80142d40, 0x805cb840, 0x05000008, 0x0501f8ee, + 0x44160800, 0x81060800, 0x40541800, 0x900c1c04, + 0x400ca800, 0x05fdf7dd, 0x44160800, 0x0501f8d7, + 0x0501f85a, 0x40581800, 0x90000541, 0x800c19c0, + 0x05000006, 0x81060800, 0x40541800, 0x900c1c04, + 0x400ca800, 0x05fdf7ad, 0x90000541, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c020800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x0501f847, + 0x80000580, 0x4867c857, 0x05fdf7f5, 0x4ce80000, + 0x4c580000, 0x4803c856, 0x6030b000, 0x6029d000, + 0x0525f8bc, 0x4a03c013, 0x02000200, 0x6029d000, + 0x0525f8b8, 0x4a03c013, 0x02000000, 0x8058b040, + 0x05fe07f7, 0x61a00807, 0x4a03c013, 0x03800300, + 0x80040840, 0x0500000f, 0x4a03c014, 0x03800000, + 0x59e00013, 0x4a03c014, 0x03800380, 0x82000500, + 0x00000300, 0x82000580, 0x00000300, 0x05fe07f3, + 0x90000541, 0x5c00b000, 0x5c01d000, 0x1c01f000, + 0x4803c856, 0x80000580, 0x05fdf7fb, 0x4ce80000, 0x61a00807, 0x4a03c013, 0x03800300, 0x80040840, 0x05000016, 0x4a03c014, 0x03800000, 0x59e00013, 0x4a03c014, 0x03800380, 0x82000500, 0x00000300, - 0x82000580, 0x00000300, 0x05fe07f3, 0x6029d000, - 0x0521fd41, 0x4a03c013, 0x01000000, 0x6029d000, - 0x0521fd3d, 0x4a03c013, 0x02000000, 0x90000541, - 0x5c01d000, 0x1c01f000, 0x4803c857, 0x05fdffc1, + 0x82000580, 0x00000300, 0x05fe07f3, 0x6055d000, + 0x0525f88c, 0x4a03c013, 0x01000000, 0x6029d000, + 0x0525f888, 0x4a03c013, 0x02000000, 0x90000541, + 0x5c01d000, 0x1c01f000, 0x4803c856, 0x05fdffc0, 0x05fe07f3, 0x05fdf7fb, 0x4a03c013, 0x01000000, - 0x4ce80000, 0x6029d000, 0x0521fd2f, 0x5c01d000, + 0x4ce80000, 0x6029d000, 0x0525f87a, 0x5c01d000, 0x4a03c013, 0x02000200, 0x4ce80000, 0x6029d000, - 0x0521fd29, 0x5c01d000, 0x4a03c013, 0x01000100, + 0x0525f874, 0x5c01d000, 0x4a03c013, 0x01000100, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x6020c000, 0x825c0500, 0x00000080, 0x800000c2, 0x82000540, 0x01000000, 0x4803c013, 0x4ce80000, 0x6029d000, - 0x0521fd19, 0x5c01d000, 0x4a03c013, 0x02000200, - 0x4ce80000, 0x6029d000, 0x0521fd13, 0x5c01d000, + 0x0525f864, 0x5c01d000, 0x4a03c013, 0x02000200, + 0x4ce80000, 0x6029d000, 0x0525f85e, 0x5c01d000, 0x4a03c013, 0x02000000, 0x805cb8c2, 0x8060c040, 0x05fe07ec, 0x4a03c013, 0x01000100, 0x4ce80000, - 0x6029d000, 0x0521fd08, 0x5c01d000, 0x4a03c013, - 0x02000200, 0x4ce80000, 0x6029d000, 0x0521fd02, + 0x6029d000, 0x0525f853, 0x5c01d000, 0x4a03c013, + 0x02000200, 0x4ce80000, 0x6029d000, 0x0525f84d, 0x5c01d000, 0x4a03c014, 0x03800000, 0x61a00807, 0x59e0b813, 0x825cbd00, 0x00000100, 0x80040840, 0x05000004, 0x405c0000, 0x80000540, 0x05fe07f9, 0x4a03c014, 0x03800380, 0x4a03c013, 0x02000000, - 0x4ce80000, 0x6029d000, 0x0521fcef, 0x5c01d000, + 0x4ce80000, 0x6029d000, 0x0525f83a, 0x5c01d000, 0x405c0000, 0x80000540, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x4c600000, 0x4803c856, 0x4a03c013, - 0x01000100, 0x6020c000, 0x61a0c807, 0x4ce80000, - 0x6029d000, 0x0521fce0, 0x5c01d000, 0x4a03c013, - 0x02000200, 0x4a03c014, 0x03800000, 0x59e00013, - 0x4a03c014, 0x03800380, 0x82000500, 0x00000200, - 0x05020003, 0x8064c840, 0x05fe07f7, 0x4178c800, - 0x0501f007, 0x4ce80000, 0x6029d000, 0x0521fcce, - 0x5c01d000, 0x4a03c013, 0x02000200, 0x4ce80000, - 0x6029d000, 0x0521fcc8, 0x5c01d000, 0x4a03c014, - 0x03800000, 0x59e00013, 0x4a03c014, 0x03800380, - 0x82000500, 0x00000100, 0x80000110, 0x8064c8c2, - 0x8064cd40, 0x4a03c013, 0x02000000, 0x8060c040, - 0x05fe07e9, 0x4867c857, 0x5c00c000, 0x1c01f000, - 0x4803c856, 0x4a03c013, 0x01000100, 0x4ce80000, - 0x6029d000, 0x0521fcb0, 0x5c01d000, 0x4a03c013, - 0x02000200, 0x4ce80000, 0x6029d000, 0x0521fcaa, + 0x1c01f000, 0x4c600000, 0x4a03c013, 0x01000100, + 0x6020c000, 0x61a0c807, 0x4ce80000, 0x6029d000, + 0x0525f82c, 0x5c01d000, 0x4a03c013, 0x02000200, + 0x4a03c014, 0x03800000, 0x59e00013, 0x4a03c014, + 0x03800380, 0x82000500, 0x00000200, 0x05020003, + 0x8064c840, 0x05fe07f7, 0x4178c800, 0x0501f007, + 0x4ce80000, 0x6029d000, 0x0525f81a, 0x5c01d000, + 0x4a03c013, 0x02000200, 0x4ce80000, 0x6029d000, + 0x0525f814, 0x5c01d000, 0x4a03c014, 0x03800000, + 0x59e00013, 0x4a03c014, 0x03800380, 0x82000500, + 0x00000100, 0x80000110, 0x8064c8c2, 0x8064cd40, + 0x4a03c013, 0x02000000, 0x8060c040, 0x05fe07e9, + 0x5c00c000, 0x1c01f000, 0x4a03c013, 0x01000100, + 0x4ce80000, 0x6029d000, 0x0521fffe, 0x5c01d000, + 0x4a03c013, 0x02000200, 0x4ce80000, 0x6029d000, + 0x0521fff8, 0x5c01d000, 0x4a03c013, 0x02000000, + 0x1c01f000, 0x4a03c013, 0x01000000, 0x4ce80000, + 0x6029d000, 0x0521ffef, 0x5c01d000, 0x4a03c013, + 0x02000200, 0x4ce80000, 0x6029d000, 0x0521ffe9, 0x5c01d000, 0x4a03c013, 0x02000000, 0x1c01f000, - 0x59a00408, 0x59a8085c, 0x4803505c, 0x48074408, - 0x59a00a0a, 0x90040494, 0x05021002, 0x6140080f, - 0x59a8005d, 0x4807505d, 0x4803420a, 0x05f9f68d, + 0x59a00408, 0x59a8085f, 0x4803505f, 0x48074408, + 0x59a00a0a, 0x90040494, 0x05021002, 0x60500800, + 0x59a80060, 0x48075060, 0x4803420a, 0x05f9f609, 0x59a00407, 0x59a00a08, 0x900409c0, 0x80040d40, 0x59a00408, 0x59a01209, 0x900811c0, 0x80081540, 0x59a00409, 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x59a0040a, 0x59a0220b, 0x901021c0, 0x80102540, - 0x054dfeff, 0x05f8067b, 0x05f9f6d2, 0x916c0580, + 0x0551fd51, 0x05f805f7, 0x05f9f64e, 0x916c0580, 0x0500000a, 0x59a80005, 0x59a00c07, 0x80041580, - 0xb0081500, 0x05f80673, 0x80080580, 0x48035005, - 0x05e9fc49, 0x05f9f66f, 0x59a00407, 0x59a80805, + 0xb0081500, 0x05f805ef, 0x80080580, 0x48035005, + 0x05e9fb4c, 0x05f9f5eb, 0x59a00407, 0x59a80805, 0x48035005, 0x80040d80, 0x8c040512, 0x05000004, 0x59c40001, 0x84000544, 0x48038801, 0x8c04050c, - 0x05ea0c3d, 0x59a00208, 0x599c0818, 0x8c040510, - 0x05000002, 0x8400054a, 0x48035006, 0x59a00408, - 0x8c00051a, 0x05000009, 0x600018ec, 0x60140800, - 0x580c1006, 0x4a001805, 0x70000005, 0x900c1c20, - 0x80040840, 0x05fe07fb, 0x48035007, 0x05f9f651, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05f9f690, - 0x0515fd02, 0x05020003, 0x645b4407, 0x05f9f68c, - 0x916c0583, 0x05000003, 0x641f4407, 0x05f9f688, - 0x59a00c07, 0x82040500, 0xffffff00, 0x05fa0689, - 0x82041580, 0x000000ff, 0x05020007, 0x59a8003d, - 0x82000500, 0x000000ff, 0x82001540, 0x0000ff00, - 0x0501f00f, 0x82040400, 0x00102853, 0x50000000, - 0x80000110, 0x82000580, 0x00000080, 0x05f80679, - 0x59a8003d, 0x82000500, 0x000000ff, 0x80041580, - 0x05f80674, 0x840409c0, 0x80041540, 0x4c080000, - 0x0531f833, 0x5c001000, 0x05020003, 0x640f4407, - 0x05f9f667, 0x48ee602d, 0x480a621e, 0x4a02641e, - 0x0000bc09, 0x64066407, 0x0509fbc5, 0x05020004, - 0x0005ffdc, 0x640b4407, 0x05f9f65d, 0x497a5a08, - 0x4a02601d, 0x0010e512, 0x497a5809, 0x4a025c08, - 0x00008000, 0x4a01d809, 0x0010342c, 0x492e6009, - 0x60ca7000, 0x0009f000, 0x8d0c050e, 0x05000003, - 0x64074407, 0x05f9f64e, 0x0515fcc0, 0x05020003, - 0x645b4407, 0x05f9f64a, 0x916c0583, 0x05000003, - 0x641f4407, 0x05f9f646, 0x59a00c07, 0x82040500, - 0xffffff00, 0x05fa0647, 0x82041580, 0x000000ff, - 0x05020007, 0x59a8003d, 0x82000500, 0x000000ff, - 0x82001540, 0x0000ff00, 0x0501f00f, 0x82040400, - 0x00102853, 0x50000000, 0x80000110, 0x82000580, - 0x00000080, 0x05f80637, 0x59a8003d, 0x82000500, - 0x000000ff, 0x80041580, 0x05f80632, 0x840409c0, - 0x80041540, 0x4c080000, 0x052dfff1, 0x5c001000, - 0x05020003, 0x640f4407, 0x05f9f625, 0x48ee602d, - 0x480a621e, 0x4a02641e, 0x0000bc05, 0x64066407, - 0x0509fb83, 0x05020004, 0x0005ffdc, 0x640b4407, - 0x05f9f61b, 0x497a5a08, 0x4a02601d, 0x0010e512, - 0x497a5809, 0x4a025c08, 0x00008000, 0x4a01d809, - 0x0010342c, 0x492e6009, 0x60ca7000, 0x0009f000, - 0x592c0009, 0x82000580, 0x01000000, 0x05fa05c9, - 0x64134407, 0x05f9f60a, 0x497b4407, 0x497b4208, - 0x8d0c0520, 0x05000008, 0x59a80098, 0x59a80899, - 0x80040480, 0x59a8089a, 0x48074407, 0x80041480, - 0x480b4208, 0x0509fc8f, 0x48034408, 0x59a8103b, - 0x59a8029c, 0x80080480, 0x4803420a, 0x495f440a, - 0x59a80048, 0x4803420c, 0x4a03440c, 0x000000fe, - 0x05f9f5b0, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f9f5ef, 0x59a00407, 0x8c000500, 0x0502000d, - 0x59a8009b, 0x81640480, 0x05001008, 0x59a8000b, - 0x81500580, 0x05000007, 0x59a80099, 0x59a81098, - 0x80080580, 0x05000003, 0x64634407, 0x05f9f5e0, - 0x850e1d58, 0x4803c856, 0x850e1d46, 0x050df867, - 0x05f9f598, 0x4803c856, 0x8d0c050e, 0x05fa05e1, - 0x59a00407, 0x8c00051e, 0x05000007, 0x4803c856, - 0x59a0020c, 0x82000480, 0x00000800, 0x0500100f, - 0x05f9f5d4, 0x4803c856, 0x59a0020c, 0x599c0a01, - 0x80040480, 0x05021002, 0x05f9f5ce, 0x59a8003b, - 0x81640580, 0x05000005, 0x64634407, 0x05f9f5c4, - 0x64174407, 0x05f9f5c2, 0x59a80249, 0x8c00050a, - 0x05fc07fc, 0x59a00407, 0x8c00051e, 0x05000033, - 0x052dff83, 0x05020003, 0x640f4407, 0x05f9f5b8, - 0x0509fb1b, 0x05020004, 0x0005ffdc, 0x640b4407, - 0x05f9f5b3, 0x497a5a08, 0x59a00407, 0x4802620c, - 0x59a0020a, 0x4802640c, 0x59a0040a, 0x4802620d, - 0x59a0020e, 0x4802620e, 0x59a0040e, 0x4802640e, - 0x59a0020f, 0x4802620f, 0x59a0040f, 0x4802640f, - 0x59a00211, 0x48026210, 0x59a00411, 0x48026410, - 0x59a0020c, 0x4802640d, 0x0501f9f9, 0x05fc07e7, - 0x48ee602d, 0x58ee580d, 0x59300210, 0x59301c10, - 0x900c19c0, 0x800c1d40, 0x5930020e, 0x5930140e, - 0x900811c0, 0x80081540, 0x592c0a09, 0x912c040a, - 0x0509fb15, 0x4a01d809, 0x00103637, 0x64074000, - 0x49334001, 0x1c01f000, 0x0509fe75, 0x05fa0595, - 0x0529f85f, 0x598e600b, 0x0529fb5a, 0x0529f85c, - 0x417a3000, 0x0529fd9b, 0x59926005, 0x813261c0, - 0x05000007, 0x0529fa8c, 0x0529f825, 0x0529f82a, - 0x60027820, 0x60ba8000, 0x0525fede, 0x811a3000, - 0x91180485, 0x05fc17f4, 0x05e9ffd1, 0x0501f88f, - 0x497b50be, 0x64034408, 0x4201d000, 0x003d0900, - 0x0521fb63, 0x59c40880, 0x4c040000, 0x59c408a3, - 0x4c040000, 0x497b4002, 0x0501f892, 0x0501f8ac, - 0x4a03a005, 0x10000000, 0x4a038805, 0x000000f0, - 0x0501f8c6, 0x0501f916, 0x0500006c, 0x59dc0806, - 0x82040500, 0x43200f80, 0x05000007, 0x82040500, - 0x80000000, 0x05000004, 0x4a034408, 0x0000dddd, - 0x0501f062, 0x59d00806, 0x82040500, 0x43dc0700, - 0x05000007, 0x82040500, 0x80000000, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f058, 0x59c80001, - 0x800001c0, 0x05fc07e8, 0x59c80018, 0x82000500, - 0xf0000000, 0x59c00808, 0x82040d00, 0x0fffffff, - 0x80040540, 0x48038008, 0x05edfb7b, 0x59c00006, - 0x4a038006, 0x10000000, 0x59c00009, 0x82000d00, - 0x00e00000, 0x05020020, 0x6403900d, 0x59c80020, - 0x82000500, 0xff000000, 0x82000580, 0x32000000, - 0x05020019, 0x6407900d, 0x59c80020, 0x82000500, - 0xff000000, 0x82000580, 0xe1000000, 0x05020012, - 0x6403900d, 0x59c80020, 0x82000500, 0x00ffffff, - 0x6403900d, 0x59c80821, 0x82040d00, 0x00ffffff, - 0x80040580, 0x05020008, 0x59a8003d, 0x80040580, - 0x05020005, 0x59c40005, 0x82000500, 0x000000f0, - 0x05000005, 0x4803c856, 0x0501f8da, 0x640750be, - 0x0501f002, 0x0501f8e5, 0x61900000, 0x80000040, - 0x0502001a, 0x05f5f84a, 0x0502000c, 0x59c40005, - 0x82000500, 0x000000f0, 0x0502000b, 0x0501f8c0, - 0x0500000c, 0x59c00007, 0x82000500, 0x000501c0, - 0x0502000b, 0x497b4408, 0x4a034408, 0x0000aaaa, - 0x0501f00e, 0x4a034408, 0x0000bbbb, 0x0501f00b, - 0x4a034408, 0x0000cccc, 0x0501f008, 0x4a034408, - 0x0000dddd, 0x0501f005, 0x59c00807, 0x90040d0c, - 0x05fc07e3, 0x0501f002, 0x640750be, 0x0501f8c8, - 0x0509fdf6, 0x0529fb4d, 0x0501f813, 0x4201d000, - 0x000186a0, 0x0521fae2, 0x5c000800, 0x480788a3, - 0x5c000800, 0x48078880, 0x59a800be, 0x800001c0, - 0x05f804a4, 0x05f9f4f3, 0x599c0201, 0x480350bf, - 0x41780800, 0x60401076, 0x0525fa34, 0x480b50c0, - 0x1c01f000, 0x0525ffa7, 0x59b800ea, 0x90000507, - 0x90000583, 0x05020002, 0x640770e8, 0x1c01f000, - 0x600380ee, 0x4a038006, 0x30000000, 0x59c00007, - 0x8c00050a, 0x05fe07fe, 0x59c00006, 0x59a0020a, - 0x59a00c0a, 0x900409c0, 0x80040d40, 0x48078001, - 0x59a0020f, 0x59a00c0f, 0x900409c0, 0x80040d40, - 0x48078000, 0x59a0020c, 0x48038002, 0x48038003, - 0x48038005, 0x497b9009, 0x59e00003, 0x82000540, - 0x00008060, 0x4803c003, 0x1c01f000, 0x41780800, - 0x8007a0ca, 0x83d3a400, 0x00007600, 0x61000800, - 0x05f1fa72, 0x6407a00a, 0x4a03a005, 0x20000000, - 0x59d00006, 0x4a03a005, 0x30000000, 0x59d00006, - 0x8c00050a, 0x05fe07fe, 0x59d00005, 0x59a00211, - 0x59a00c11, 0x900409c0, 0x80040d40, 0x4807a001, - 0x59a0020e, 0x59a00c0e, 0x900409c0, 0x80040d40, - 0x4807a000, 0x59a0020c, 0x4803a003, 0x4803a002, - 0x4803a008, 0x1c01f000, 0x59a00002, 0x4803c857, - 0x800001c0, 0x0502004d, 0x59a800ca, 0x8c000500, - 0x05020003, 0x59a800c0, 0x48038880, 0x59c400a3, - 0x82000540, 0x00002008, 0x8400053a, 0x480388a3, - 0x59c40008, 0x82000500, 0xffffffe1, 0x82000540, - 0x00000280, 0x48038808, 0x59c80040, 0x84000534, - 0x48039040, 0x0501f8f6, 0x05020012, 0x59a8003d, - 0x800000d0, 0x90000551, 0x48039120, 0x59a8003d, - 0x82000500, 0x00ffffff, 0x82000540, 0x32000000, - 0x48039121, 0x4a039123, 0xe1290008, 0x59a8003d, - 0x82000500, 0x00ffffff, 0x48039122, 0x0501f015, - 0x59a8003d, 0x82000500, 0x000000ff, 0x900009c0, - 0x840001c0, 0x80040540, 0x90000540, 0x48039120, - 0x59a8003d, 0x82000500, 0x000000ff, 0x82000540, - 0x01000000, 0x48039121, 0x4a039123, 0x08210008, - 0x59a8003d, 0x82000500, 0x000000ff, 0x48039122, - 0x497b9124, 0x59a80cc1, 0x80040800, 0x480754c1, - 0x900409c0, 0x82040540, 0x0000aaaa, 0x48039125, - 0x497b9126, 0x497b9127, 0x59c80101, 0x0501f8c4, - 0x05020004, 0x4a039100, 0x0000e980, 0x0501f003, - 0x4a039100, 0x0000e9a0, 0x1c01f000, 0x90000541, - 0x0502500b, 0x4203e000, 0x80000000, 0x40e81000, - 0x41780800, 0x61900000, 0x0525f998, 0x5994002e, - 0x80080400, 0x4803282e, 0x80000580, 0x1c01f000, - 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, - 0x4cd80000, 0x417a3000, 0x0529fc52, 0x0529f946, - 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x1c01f000, 0x59c80007, 0x8c000500, - 0x05000002, 0x64c3900d, 0x1c01f000, 0x4a038805, - 0x00020000, 0x60f00800, 0x05f1f9e4, 0x4a038891, - 0x0000ffff, 0x59c80035, 0x48039035, 0x6503900d, - 0x600380ee, 0x05edfa5c, 0x4a038006, 0x20000000, - 0x608380ee, 0x05edfa58, 0x4a038006, 0x20000000, - 0x4a03a005, 0x20000000, 0x59d00006, 0x4a03a005, - 0x30000000, 0x59a00207, 0xb0000585, 0x05020004, - 0x59a0000d, 0x800001c0, 0x05000009, 0x4a03b805, - 0x30000001, 0x59dc0006, 0x4a03b805, 0x20000000, - 0x59dc0806, 0x8c04050a, 0x05fe07fe, 0x59d00806, - 0x8c04050a, 0x05fe07fe, 0x1c01f000, 0x0505f824, - 0x05f803fa, 0x58ee580d, 0x4d300000, 0x59a26001, - 0x59a00000, 0x4000b000, 0x80000000, 0x48034000, - 0x592c0001, 0x80000540, 0x0500001a, 0x40025800, - 0x8058b040, 0x05fe07fb, 0x58ec1007, 0x58ec1808, - 0x592c0a09, 0x4d2c0000, 0x58ec000d, 0x40025800, - 0x592c0208, 0x5c025800, 0x82000580, 0x00000103, - 0x05000006, 0x912c040a, 0x0509f96f, 0x4a01d809, - 0x00103637, 0x0501f005, 0x912c040a, 0x0509f96c, - 0x4a01d809, 0x00103637, 0x5c026000, 0x1c01f000, - 0x58ec000d, 0x40025800, 0x592c0208, 0x82000580, - 0x00000103, 0x05020004, 0x0005ffdc, 0x5c026000, - 0x05f9f394, 0x58ec000d, 0x40025800, 0x592c0408, - 0x8400055e, 0x48025c08, 0x61f6880f, 0x42003000, - 0x00fffffd, 0x050dfea7, 0x59a26001, 0x05000005, - 0x0005ffdc, 0x497b4407, 0x5c026000, 0x05f9f3c8, - 0x053dfa6a, 0x05fc07fb, 0x4a01d809, 0x00103679, - 0x05fdf7e2, 0x592c0009, 0x82000580, 0x01000000, - 0x05000013, 0x4d300000, 0x59a26001, 0x5930020d, - 0x59301c0c, 0x900001c0, 0x800c1d40, 0x5930040f, - 0x5930120f, 0x900001c0, 0x80081540, 0x592c0a09, - 0x912c040a, 0x0509f93a, 0x4a01d809, 0x00103637, - 0x64074000, 0x5c026000, 0x1c01f000, 0x4d300000, - 0x59a26001, 0x4a034408, 0x0000cccc, 0x4933c857, - 0x052dfd3c, 0x5c026000, 0x05f9f3b2, 0x4933c857, - 0x4c300000, 0x5930040d, 0x90000cb8, 0x05001003, - 0x64e25a09, 0x0501f003, 0x48025a09, 0x0501f009, - 0x800409c0, 0x05000007, 0x4c040000, 0x0509f8fc, - 0x5c000800, 0x05000004, 0x40040000, 0x05fdf7f3, - 0x90000541, 0x5c006000, 0x1c01f000, 0x59a00207, - 0xb0000584, 0x1c01f000, 0x490fc857, 0x8d0c050e, - 0x05000007, 0x05f1fcc9, 0x05020005, 0x600c0000, - 0x05f1fe91, 0x600c0000, 0x05f1fe5f, 0x59a00407, - 0x90000507, 0x0c01f001, 0x001036c3, 0x001036ca, - 0x001036e2, 0x001036c2, 0x001036c2, 0x001036c2, - 0x001036c2, 0x001036c2, 0x05f9f37e, 0x0509fcb3, - 0x60080810, 0x05f1feec, 0x90040542, 0x60080810, - 0x05f1feee, 0x0501f00e, 0x0509fcac, 0x60080810, - 0x05f1fee5, 0x90040541, 0x60080810, 0x05f1fee7, - 0x60300848, 0x05f1fee0, 0x82040540, 0x00000080, - 0x60300848, 0x05f1fee1, 0x0501f001, 0x59c80040, - 0x4c000000, 0x59a8003d, 0x4c000000, 0x59c400a3, - 0x4c000000, 0x59c40008, 0x4c000000, 0x0501f929, - 0x0500003a, 0x05e5fef9, 0x8d0c050e, 0x05000023, - 0x59c40006, 0x84000500, 0x48038806, 0x0529f96e, - 0x497b8880, 0x59c400a3, 0x82000500, 0xfcf8ffff, - 0x480388a3, 0x6012d800, 0x64078805, 0x05e9f90f, - 0x05f1fe1c, 0x497b5068, 0x64075075, 0x59a800a7, - 0x84000540, 0x480350a7, 0x4803c857, 0x4a01d809, - 0x001036fb, 0x64535078, 0x1c01f000, 0x42000000, - 0x0010dd09, 0x50000800, 0x84040d08, 0x44040000, - 0x59a800a7, 0x84000500, 0x480350a7, 0x4803c857, - 0x8d0c050e, 0x05fa033f, 0x0515f9a8, 0x05020003, - 0x645b4407, 0x05f9f332, 0x916c0583, 0x05fa0339, - 0x59c408a4, 0x90040d0f, 0x90040580, 0x05fa0335, - 0x0509fc17, 0x05fa033b, 0x59c80040, 0x4c000000, - 0x59a8003d, 0x4c000000, 0x59c400a3, 0x4c000000, - 0x59c40008, 0x4c000000, 0x59c40080, 0x4c000000, - 0x59a00210, 0x59a0bc10, 0x905cb9c0, 0x805cbd40, - 0x41784800, 0x41785000, 0x41785800, 0x41789000, - 0x41789800, 0x05fdfe31, 0x64034408, 0x0525fdec, - 0x598e600b, 0x0529f8e7, 0x0525fde9, 0x417a3000, - 0x0529fb28, 0x59926005, 0x813261c0, 0x05000007, - 0x0529f819, 0x0525fdb2, 0x0525fdb7, 0x60027820, - 0x60ba8000, 0x0525fc6b, 0x811a3000, 0x91180485, - 0x05fc17f4, 0x05e9fd5e, 0x4178c000, 0x497b4002, - 0x0501f936, 0x59a00408, 0x82000580, 0x0000dddd, - 0x05000072, 0x0501f976, 0x59a00408, 0x82000580, - 0x0000dddd, 0x0500006d, 0x59a0020d, 0x59a00c0d, - 0x80040d40, 0x05000002, 0x0501f9b8, 0x0501f9b7, - 0x05fdfe52, 0x8060c1c0, 0x05020014, 0x0501fa49, - 0x59a00408, 0x82000580, 0x0000dddd, 0x0500005f, - 0x05fdfe9b, 0x0502000a, 0x05f1fe1d, 0x05020006, - 0x645f4407, 0x05f9fae2, 0x4203e000, 0x50000000, - 0x0501f000, 0x60a85955, 0x0501f059, 0x59c80001, - 0x800001c0, 0x05fc07ee, 0x59c80801, 0x800409c0, - 0x05000006, 0x0501fa21, 0x40240000, 0x80280540, - 0x802c0540, 0x0502004e, 0x59a00002, 0x82000580, - 0xfeedbeef, 0x05000004, 0x42008800, 0x10000000, - 0x0501f003, 0x42008800, 0x10000004, 0x0501f9cf, - 0x4a034002, 0xfeedbeef, 0x0501fa22, 0x59a00408, - 0x82000580, 0x0000dddd, 0x05000038, 0x0501fa4e, - 0x59a00408, 0x82000580, 0x0000dddd, 0x05000033, - 0x05fdfe8a, 0x59c40005, 0x8c000534, 0x05000003, - 0x60ec5977, 0x0501f032, 0x05fdfe69, 0x05020006, - 0x61305999, 0x485f4210, 0x905cb9c0, 0x485f4410, - 0x0501f02b, 0x59a0040d, 0x800001c0, 0x0500000e, - 0x59a26000, 0x5930000f, 0x800001c0, 0x05fe07b8, - 0x59a26001, 0x5930080f, 0x800409c0, 0x05fe07b4, - 0x804891c0, 0x05fe07b2, 0x804c99c0, 0x05fe07b0, - 0x0501f85f, 0x805cb840, 0x05000005, 0x40240000, - 0x80280540, 0x802c0540, 0x05020015, 0x42000000, - 0x00030d40, 0x80000040, 0x0502000e, 0x59c00007, - 0x82000500, 0x000501c0, 0x05020008, 0x05f1fdc8, - 0x05020006, 0x645f4407, 0x05f9fa8d, 0x4203e000, - 0x50000000, 0x0501f000, 0x617459bb, 0x0501f004, - 0x59c00807, 0x90040d0c, 0x05fc07ef, 0x05fdfe45, - 0x59a0040d, 0x800001c0, 0x05000002, 0x0501f840, - 0x05fdfe53, 0x40240000, 0x80280540, 0x802c0540, - 0x05020003, 0x805cb9c0, 0x05fe0778, 0x0509fb7b, - 0x0529f8d2, 0x05fdfd98, 0x4201d000, 0x000186a0, - 0x0521f867, 0x5c000800, 0x48078880, 0x5c000800, - 0x48078808, 0x5c000800, 0x480788a3, 0x5c000800, - 0x4807503d, 0x5c000800, 0x48079040, 0x05e9fb22, - 0x59a00407, 0x90000503, 0x90000582, 0x0500001c, - 0x60080810, 0x05f1fdd8, 0x82040500, 0xfffffffc, - 0x60080810, 0x05f1fdd9, 0x60300848, 0x05f1fdd2, - 0x82040500, 0xffffff7f, 0x60300848, 0x05f1fdd3, - 0x0515f8d6, 0x05020003, 0x0515fc70, 0x0501f00c, - 0x4a0388a7, 0x0000f7f7, 0x42006000, 0xbeffffff, - 0x42006800, 0x80018000, 0x050dfa69, 0x42006000, - 0xfffeffff, 0x41786800, 0x050dfa65, 0x402c0000, - 0x80280540, 0x80240540, 0x05f80202, 0x48274407, - 0x482b4208, 0x482f4408, 0x05f9f252, 0x59a26000, - 0x813261c0, 0x0500000a, 0x59325809, 0x812e59c0, - 0x05000007, 0x0005ffdc, 0x05e9f999, 0x59a26001, - 0x59325809, 0x0005ffdc, 0x05e9f995, 0x1c01f000, - 0x61bc0801, 0x05f1fae9, 0x4a03503d, 0x000000ef, - 0x59c400a3, 0x8400055a, 0x8400053a, 0x480388a3, - 0x05f1fb52, 0x05020006, 0x60040000, 0x05f1fd32, - 0x60040000, 0x05f1fd00, 0x0501f013, 0x05f1fb51, - 0x05020006, 0x60000000, 0x05f1fd2b, 0x60000000, - 0x05f1fcf9, 0x0501f00c, 0x05f1fb50, 0x05020006, - 0x60080000, 0x05f1fd24, 0x60080000, 0x05f1fcf2, - 0x0501f005, 0x600c0000, 0x05f1fd1f, 0x600c0000, - 0x05f1fced, 0x6051d000, 0x051dffdb, 0x59c40008, + 0x05ea0b40, 0x59a00208, 0x599c0818, 0x8c040510, + 0x05000002, 0x8400054a, 0x48035006, 0x59a8103f, + 0x4c000000, 0x8c000510, 0x0502000e, 0x800811c0, + 0x0500001b, 0x497b503f, 0x497b523e, 0x42017800, + 0x00115aa4, 0x40bec000, 0x59a80a9f, 0x90050420, + 0x59a8003d, 0x8006cc00, 0x4967503d, 0x0501f010, + 0x800811c0, 0x0502000e, 0x59a80a9f, 0x4807523e, + 0x4a03503f, 0x00115aa4, 0x60c01000, 0x0525ff4c, + 0x82057c00, 0x00115aa4, 0x40bec000, 0x60810000, + 0x59aacc3e, 0x9166cc20, 0x4967503d, 0x5c000000, + 0x59a00408, 0x8c00051a, 0x05000009, 0x600018ec, + 0x60140800, 0x580c1006, 0x4a001805, 0x70000005, + 0x900c1c20, 0x80040840, 0x05fe07fb, 0x48035007, + 0x05f9f5ac, 0x8d0c050e, 0x05000003, 0x64074407, + 0x05f9f5eb, 0x0515fe9f, 0x05020003, 0x645b4407, + 0x05f9f5e7, 0x916c0583, 0x05000003, 0x641f4407, + 0x05f9f5e3, 0x59a00c07, 0x82040500, 0xffffff00, + 0x05fa05e4, 0x82041580, 0x000000ff, 0x05020007, + 0x59a80040, 0x82000500, 0x000000ff, 0x82001540, + 0x0000ff00, 0x0501f00f, 0x82040400, 0x001028fb, + 0x50000000, 0x80000110, 0x82000580, 0x00000080, + 0x05f805d4, 0x59a80040, 0x82000500, 0x000000ff, + 0x80041580, 0x05f805cf, 0x840409c0, 0x80041540, + 0x4c080000, 0x0531fbfb, 0x5c001000, 0x05020003, + 0x640f4407, 0x05f9f5c2, 0x48ee602d, 0x480a621e, + 0x4a02641e, 0x0000bc09, 0x64066407, 0x0509fc1a, + 0x05020004, 0x0009f810, 0x640b4407, 0x05f9f5b8, + 0x497a5a08, 0x4a02601d, 0x001124b6, 0x497a5809, + 0x4a025c08, 0x00008000, 0x4a01d809, 0x00103579, + 0x492e6009, 0x60ca7000, 0x0009f039, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05f9f5a9, 0x0515fe5d, + 0x05020003, 0x645b4407, 0x05f9f5a5, 0x916c0583, + 0x05000003, 0x641f4407, 0x05f9f5a1, 0x59a00c07, + 0x82040500, 0xffffff00, 0x05fa05a2, 0x82041580, + 0x000000ff, 0x05020007, 0x59a80040, 0x82000500, + 0x000000ff, 0x82001540, 0x0000ff00, 0x0501f00f, + 0x82040400, 0x001028fb, 0x50000000, 0x80000110, + 0x82000580, 0x00000080, 0x05f80592, 0x59a80040, + 0x82000500, 0x000000ff, 0x80041580, 0x05f8058d, + 0x840409c0, 0x80041540, 0x4c080000, 0x0531fbb9, + 0x5c001000, 0x05020003, 0x640f4407, 0x05f9f580, + 0x48ee602d, 0x480a621e, 0x4a02641e, 0x0000bc05, + 0x64066407, 0x0509fbd8, 0x05020004, 0x0009f810, + 0x640b4407, 0x05f9f576, 0x497a5a08, 0x4a02601d, + 0x001124b6, 0x497a5809, 0x4a025c08, 0x00008000, + 0x4a01d809, 0x00103579, 0x492e6009, 0x60ca7000, + 0x0009f039, 0x592c0009, 0x82000580, 0x01000000, + 0x05fa0524, 0x64134407, 0x05f9f565, 0x497b4407, + 0x497b4208, 0x8d0c0520, 0x05000008, 0x59a8009b, + 0x59a8089c, 0x80040480, 0x59a8089d, 0x48074407, + 0x80041480, 0x480b4208, 0x0509fce5, 0x48034408, + 0x59a8043e, 0x4803420a, 0x495f440a, 0x59a8004b, + 0x4803420c, 0x4a03440c, 0x000000fe, 0x05f9f50d, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f9f54c, + 0x59a00407, 0x8c000500, 0x0502000d, 0x59a8009e, + 0x81640480, 0x05001008, 0x59a8000b, 0x81500580, + 0x05000007, 0x59a8009c, 0x59a8109b, 0x80080580, + 0x05000003, 0x64634407, 0x05f9f53d, 0x850e1d58, + 0x4803c856, 0x850e1d46, 0x050df911, 0x05f9f4f5, + 0x4803c856, 0x8d0c050e, 0x05fa053e, 0x59a00407, + 0x8c00051e, 0x05000007, 0x4803c856, 0x59a0020c, + 0x82000480, 0x00000800, 0x0500100f, 0x05f9f531, + 0x4803c856, 0x59a0020c, 0x599c0a01, 0x80040480, + 0x05021002, 0x05f9f52b, 0x59a8003d, 0x81640580, + 0x05000005, 0x64634407, 0x05f9f521, 0x64174407, + 0x05f9f51f, 0x59a8024c, 0x8c00050a, 0x05fc07fc, + 0x59a00407, 0x8c00051e, 0x05000033, 0x0531fb4d, + 0x05020003, 0x640f4407, 0x05f9f515, 0x0509fb72, + 0x05020004, 0x0009f810, 0x640b4407, 0x05f9f510, + 0x497a5a08, 0x59a00407, 0x4802620c, 0x59a0020a, + 0x4802640c, 0x59a0040a, 0x4802620d, 0x59a0020e, + 0x4802620e, 0x59a0040e, 0x4802640e, 0x59a0020f, + 0x4802620f, 0x59a0040f, 0x4802640f, 0x59a00211, + 0x48026210, 0x59a00411, 0x48026410, 0x59a0020c, + 0x4802640d, 0x0501f9f9, 0x05fc07e7, 0x48ee602d, + 0x58ee580d, 0x59300210, 0x59301c10, 0x900c19c0, + 0x800c1d40, 0x5930020e, 0x5930140e, 0x900811c0, + 0x80081540, 0x592c0a09, 0x912c040a, 0x0509fb6c, + 0x4a01d809, 0x00103782, 0x64074000, 0x49334001, + 0x1c01f000, 0x0509fecd, 0x05fa04f2, 0x0529fbd2, + 0x598e600b, 0x0529fecd, 0x0529fbcf, 0x417a3000, + 0x052df90e, 0x59926005, 0x813261c0, 0x05000007, + 0x0529fdff, 0x0529fb98, 0x0529fb9d, 0x60027820, + 0x60ba8000, 0x0529fa52, 0x811a3000, 0x91180485, + 0x05fc17f4, 0x05e9ff22, 0x0501f88f, 0x497b50c3, + 0x64034408, 0x4201d000, 0x003d0900, 0x0521fe83, + 0x59c40880, 0x4c040000, 0x59c408a3, 0x4c040000, + 0x497b4002, 0x0501f892, 0x0501f8ac, 0x4a03a005, + 0x10000000, 0x4a038805, 0x000000f0, 0x0501f8c6, + 0x0501f916, 0x0500006c, 0x59dc0806, 0x82040500, + 0x43200f80, 0x05000007, 0x82040500, 0x80000000, + 0x05000004, 0x4a034408, 0x0000dddd, 0x0501f062, + 0x59d00806, 0x82040500, 0x43dc0700, 0x05000007, + 0x82040500, 0x80000000, 0x05000004, 0x4a034408, + 0x0000dddd, 0x0501f058, 0x59c80001, 0x800001c0, + 0x05fc07e8, 0x59c80018, 0x82000500, 0xf0000000, + 0x59c00808, 0x82040d00, 0x0fffffff, 0x80040540, + 0x48038008, 0x05edface, 0x59c00006, 0x4a038006, + 0x10000000, 0x59c00009, 0x82000d00, 0x00e00000, + 0x05020020, 0x6403900d, 0x59c80020, 0x82000500, + 0xff000000, 0x82000580, 0x32000000, 0x05020019, + 0x6407900d, 0x59c80020, 0x82000500, 0xff000000, + 0x82000580, 0xe1000000, 0x05020012, 0x6403900d, + 0x59c80020, 0x82000500, 0x00ffffff, 0x6403900d, + 0x59c80821, 0x82040d00, 0x00ffffff, 0x80040580, + 0x05020008, 0x59a80040, 0x80040580, 0x05020005, + 0x59c40005, 0x82000500, 0x000000f0, 0x05000005, + 0x4803c856, 0x0501f8da, 0x640750c3, 0x0501f002, + 0x0501f8e5, 0x61900000, 0x80000040, 0x0502001a, + 0x05f1ff7f, 0x0502000c, 0x59c40005, 0x82000500, + 0x000000f0, 0x0502000b, 0x0501f8c0, 0x0500000c, + 0x59c00007, 0x82000500, 0x000501c0, 0x0502000b, + 0x497b4408, 0x4a034408, 0x0000aaaa, 0x0501f00e, + 0x4a034408, 0x0000bbbb, 0x0501f00b, 0x4a034408, + 0x0000cccc, 0x0501f008, 0x4a034408, 0x0000dddd, + 0x0501f005, 0x59c00807, 0x90040d0c, 0x05fc07e3, + 0x0501f002, 0x640750c3, 0x0501f8c8, 0x0509fe4e, + 0x0529fec0, 0x0501f813, 0x4201d000, 0x000186a0, + 0x0521fe02, 0x5c000800, 0x480788a3, 0x5c000800, + 0x48078880, 0x59a800c3, 0x800001c0, 0x05f80401, + 0x05f9f450, 0x599c0201, 0x480350c4, 0x41780800, + 0x60401076, 0x0525fda2, 0x480b50c5, 0x1c01f000, + 0x0529fb1a, 0x59b800ea, 0x90000507, 0x90000583, + 0x05020002, 0x640770e8, 0x1c01f000, 0x600380ee, + 0x4a038006, 0x30000000, 0x59c00007, 0x8c00050a, + 0x05fe07fe, 0x59c00006, 0x59a0020a, 0x59a00c0a, + 0x900409c0, 0x80040d40, 0x48078001, 0x59a0020f, + 0x59a00c0f, 0x900409c0, 0x80040d40, 0x48078000, + 0x59a0020c, 0x48038002, 0x48038003, 0x48038005, + 0x497b9009, 0x59e00003, 0x82000540, 0x00008060, + 0x4803c003, 0x1c01f000, 0x41780800, 0x8007a0ca, + 0x83d3a400, 0x00007600, 0x61000800, 0x05f1f998, + 0x6407a00a, 0x4a03a005, 0x20000000, 0x59d00006, + 0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a, + 0x05fe07fe, 0x59d00005, 0x59a00211, 0x59a00c11, + 0x900409c0, 0x80040d40, 0x4807a001, 0x59a0020e, + 0x59a00c0e, 0x900409c0, 0x80040d40, 0x4807a000, + 0x59a0020c, 0x4803a003, 0x4803a002, 0x4803a008, + 0x1c01f000, 0x59a00002, 0x4803c857, 0x800001c0, + 0x0502004d, 0x59a800cf, 0x8c000500, 0x05020003, + 0x59a800c5, 0x48038880, 0x59c400a3, 0x82000540, + 0x00002008, 0x8400053a, 0x480388a3, 0x59c40008, 0x82000500, 0xffffffe1, 0x82000540, 0x00000280, - 0x48038808, 0x4a0388a7, 0x0000f8f7, 0x4a038805, - 0x04000001, 0x42006000, 0xbe20bfff, 0x42006800, - 0x80018000, 0x050dfa1e, 0x42006000, 0xfffeffff, - 0x41786800, 0x050dfa1a, 0x6020b027, 0x6051d000, - 0x4c580000, 0x051dffc4, 0x05f1fd31, 0x5c00b000, - 0x05000004, 0x8058b040, 0x05fe07f9, 0x0501f029, - 0x59c40005, 0x8c000534, 0x05020005, 0x59c400a4, - 0x9000050f, 0x90000588, 0x05020022, 0x42006000, - 0x00020000, 0x050dfa0b, 0x6191d000, 0x051dffb2, - 0x42006000, 0xfeffffff, 0x42006800, 0x02000000, - 0x050df9ff, 0x42006000, 0xfdffffff, 0x41786800, - 0x050df9fb, 0x59c40001, 0x82000500, 0x00018000, - 0x82000580, 0x00018000, 0x59c400a3, 0x05020004, - 0x82000540, 0x00001000, 0x0501f003, 0x82000500, - 0xffffefff, 0x480388a3, 0x4a038805, 0x04000001, - 0x59c400a4, 0x9000050f, 0x90000580, 0x05000002, - 0x90000541, 0x1c01f000, 0x4803c856, 0x600380ee, - 0x05edf801, 0x59c00006, 0x59a0040d, 0x800001c0, - 0x05000037, 0x59a03c0d, 0x59a0020a, 0x59a01c0a, - 0x900c19c0, 0x800c1d40, 0x59a0020f, 0x59a0240f, - 0x901021c0, 0x80102540, 0x59a0020c, 0x82000500, - 0x0000fffc, 0x59a0140c, 0x900811c0, 0x80081540, - 0x480b8003, 0x052dfb7a, 0x05e40d50, 0x49334000, - 0x05e9f8f6, 0x64625a08, 0x4a025809, 0x00abcdef, - 0x492e6009, 0x492e600d, 0x481e600f, 0x6412600e, - 0x912c0415, 0x4802600c, 0x60301000, 0x901c0d81, - 0x05000008, 0x801c3840, 0x0501f963, 0x59a00408, - 0x82000580, 0x0000dddd, 0x05000011, 0x0501f004, - 0x41783800, 0x0501f95c, 0x0501f00d, 0x901c0c85, - 0x05001004, 0x40043800, 0x60f01000, 0x0501f005, - 0x80001580, 0x9008140c, 0x801c3840, 0x05fe07fe, - 0x912c0409, 0x0501f950, 0x05fe07f5, 0x497b9009, - 0x59e00003, 0x82000540, 0x00008060, 0x4803c003, - 0x4a038009, 0x00e00000, 0x1c01f000, 0x4803c856, - 0x41780800, 0x8007a0ca, 0x83d3a400, 0x00007600, - 0x61000800, 0x05edff39, 0x6407a00a, 0x4a03a005, + 0x48038808, 0x59c80040, 0x84000534, 0x48039040, + 0x0501f8f6, 0x05020012, 0x59a80040, 0x800000d0, + 0x90000551, 0x48039120, 0x59a80040, 0x82000500, + 0x00ffffff, 0x82000540, 0x32000000, 0x48039121, + 0x4a039123, 0xe1290008, 0x59a80040, 0x82000500, + 0x00ffffff, 0x48039122, 0x0501f015, 0x59a80040, + 0x82000500, 0x000000ff, 0x900009c0, 0x840001c0, + 0x80040540, 0x90000540, 0x48039120, 0x59a80040, + 0x82000500, 0x000000ff, 0x82000540, 0x01000000, + 0x48039121, 0x4a039123, 0x08210008, 0x59a80040, + 0x82000500, 0x000000ff, 0x48039122, 0x497b9124, + 0x59a80cc6, 0x80040800, 0x480754c6, 0x900409c0, + 0x82040540, 0x0000aaaa, 0x48039125, 0x497b9126, + 0x497b9127, 0x59c80101, 0x0501f8c4, 0x05020004, + 0x4a039100, 0x0000e980, 0x0501f003, 0x4a039100, + 0x0000e9a0, 0x1c01f000, 0x90000541, 0x0502500b, + 0x4203e000, 0x80000000, 0x40e81000, 0x41780800, + 0x61900000, 0x0525fd06, 0x5994002f, 0x80080400, + 0x4803282f, 0x80000580, 0x1c01f000, 0x4d900000, + 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, + 0x417a3000, 0x0529ffc5, 0x0529fcb9, 0x5c01b000, + 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, + 0x1c01f000, 0x59c80007, 0x8c000500, 0x05000002, + 0x64c3900d, 0x1c01f000, 0x4a038805, 0x00020000, + 0x60f00800, 0x05f1f90a, 0x4a038891, 0x0000ffff, + 0x59c80035, 0x48039035, 0x6503900d, 0x600380ee, + 0x05edf9af, 0x4a038006, 0x20000000, 0x608380ee, + 0x05edf9ab, 0x4a038006, 0x20000000, 0x4a03a005, 0x20000000, 0x59d00006, 0x4a03a005, 0x30000000, - 0x59d00006, 0x8c00050a, 0x05fe07fe, 0x59d00005, - 0x59a0020d, 0x800001c0, 0x05000037, 0x59a03a0d, - 0x59a00211, 0x59a01c11, 0x900c19c0, 0x800c1d40, - 0x59a0020e, 0x59a0240e, 0x901021c0, 0x80102540, - 0x59a0120c, 0x82081500, 0x0000fffc, 0x59a0040c, - 0x900001c0, 0x80081540, 0x480ba003, 0x052dfb28, - 0x05e40cfe, 0x49334001, 0x05e9f8a4, 0x64625a08, - 0x4a025809, 0x00abcdef, 0x492e6009, 0x492e600d, - 0x481e600f, 0x6412600e, 0x912c0415, 0x4802600c, - 0x60301000, 0x901c0d81, 0x05000008, 0x801c3840, - 0x0501f911, 0x59a00408, 0x82000580, 0x0000dddd, - 0x05000011, 0x0501f004, 0x41783800, 0x0501f90a, - 0x0501f00d, 0x901c0c85, 0x05001004, 0x40043800, - 0x60f01000, 0x0501f005, 0x80001580, 0x9008140c, - 0x801c3840, 0x05fe07fe, 0x912c0409, 0x0501f8fe, - 0x05fe07f5, 0x1c01f000, 0x4803c856, 0x59a0020d, - 0x800001c0, 0x05000020, 0x904c0582, 0x0500003a, - 0x59a26001, 0x5930380f, 0x801c39c0, 0x05000036, - 0x801c3840, 0x481e600f, 0x5932580d, 0x5930080c, - 0x50042000, 0x58041801, 0x58041002, 0x82081500, - 0xfffffffc, 0x5930000e, 0x80000000, 0x90000d85, - 0x05020008, 0x497a600e, 0x592e5801, 0x812e59c0, - 0x05000018, 0x492e600d, 0x912c0c09, 0x0501f004, - 0x4802600e, 0x5930080c, 0x90040c03, 0x4806600c, - 0x0501f010, 0x59a0120c, 0x82081500, 0x0000fffc, + 0x59a00207, 0xb0000585, 0x05020004, 0x59a0000d, + 0x800001c0, 0x05000009, 0x4a03b805, 0x30000001, + 0x59dc0006, 0x4a03b805, 0x20000000, 0x59dc0806, + 0x8c04050a, 0x05fe07fe, 0x59d00806, 0x8c04050a, + 0x05fe07fe, 0x1c01f000, 0x0505f84f, 0x05f80357, + 0x58ee580d, 0x4d300000, 0x59a26001, 0x59a00000, + 0x4000b000, 0x80000000, 0x48034000, 0x592c0001, + 0x80000540, 0x0500001a, 0x40025800, 0x8058b040, + 0x05fe07fb, 0x58ec1007, 0x58ec1808, 0x592c0a09, + 0x4d2c0000, 0x58ec000d, 0x40025800, 0x592c0208, + 0x5c025800, 0x82000580, 0x00000103, 0x05000006, + 0x912c040a, 0x0509f9c6, 0x4a01d809, 0x00103782, + 0x0501f005, 0x912c040a, 0x0509f9c3, 0x4a01d809, + 0x00103782, 0x5c026000, 0x1c01f000, 0x58ec000d, + 0x40025800, 0x592c0208, 0x82000580, 0x00000103, + 0x05020004, 0x0009f810, 0x5c026000, 0x05f9f2f1, + 0x58ec000d, 0x40025800, 0x592c0408, 0x8400055e, + 0x48025c08, 0x61f6880f, 0x42003000, 0x00fffffd, + 0x050dff77, 0x59a26001, 0x05000005, 0x0009f810, + 0x497b4407, 0x5c026000, 0x05f9f325, 0x053dfeb7, + 0x05fc07fb, 0x4a01d809, 0x001037c4, 0x05fdf7e2, + 0x592c0009, 0x82000580, 0x01000000, 0x05000013, + 0x4d300000, 0x59a26001, 0x5930020d, 0x59301c0c, + 0x900001c0, 0x800c1d40, 0x5930040f, 0x5930120f, + 0x900001c0, 0x80081540, 0x592c0a09, 0x912c040a, + 0x0509f991, 0x4a01d809, 0x00103782, 0x64074000, + 0x5c026000, 0x1c01f000, 0x4d300000, 0x59a26001, + 0x4a034408, 0x0000cccc, 0x4933c857, 0x0531f906, + 0x5c026000, 0x05f9f30f, 0x4933c857, 0x4c300000, + 0x5930040d, 0x90000cb8, 0x05001003, 0x64e25a09, + 0x0501f003, 0x48025a09, 0x0501f009, 0x800409c0, + 0x05000007, 0x4c040000, 0x0509f953, 0x5c000800, + 0x05000004, 0x40040000, 0x05fdf7f3, 0x90000541, + 0x5c006000, 0x1c01f000, 0x59a00207, 0xb0000584, + 0x1c01f000, 0x490fc857, 0x8d0c050e, 0x05000007, + 0x05f1fbfe, 0x05020005, 0x600c0000, 0x05f1fdc6, + 0x600c0000, 0x05f1fd94, 0x59a00407, 0x90000507, + 0x0c01f001, 0x0010380e, 0x00103815, 0x0010383c, + 0x0010380d, 0x0010380d, 0x0010380d, 0x0010380d, + 0x0010380d, 0x05f9f2db, 0x0509fd5c, 0x60080810, + 0x05f1fe21, 0x90040542, 0x60080810, 0x05f1fe23, + 0x0501f00d, 0x60080810, 0x05f1fe1b, 0x90040541, + 0x60080810, 0x05f1fe1d, 0x60300848, 0x05f1fe16, + 0x82040540, 0x00000080, 0x60300848, 0x05f1fe17, + 0x0501f001, 0x0509fd49, 0x59c80040, 0x4c000000, + 0x59a80040, 0x4c000000, 0x59c400a3, 0x4c000000, + 0x59c40008, 0x4c000000, 0x0501f948, 0x05000049, + 0x0515fbac, 0x42006000, 0xfeffffff, 0x42006800, + 0x02000000, 0x050dfc1d, 0x42006000, 0xfdffffff, + 0x41786800, 0x050dfc19, 0x05f1fdf5, 0x59c408a4, + 0x90040d0f, 0x90040d80, 0x0500003a, 0x05e5fdda, + 0x8d0c050e, 0x05000023, 0x59c40006, 0x84000500, + 0x48038806, 0x0529fcd2, 0x497b8880, 0x59c400a3, + 0x82000500, 0xfcf8ffff, 0x480388a3, 0x6012d800, + 0x64078805, 0x05e5ffe4, 0x05f1fd42, 0x497b506b, + 0x64075078, 0x59a800aa, 0x84000540, 0x480350aa, + 0x4803c857, 0x4a01d809, 0x00103855, 0x6453507b, + 0x1c01f000, 0x42000000, 0x00111c8f, 0x50000800, + 0x84040d08, 0x44040000, 0x59a800aa, 0x84000500, + 0x480350aa, 0x4803c857, 0x8d0c050e, 0x05fa028d, + 0x0515fb38, 0x05020003, 0x645b4407, 0x05f9f280, + 0x916c0583, 0x05fa0287, 0x59c408a4, 0x90040d0f, + 0x90040580, 0x05fa0283, 0x0509fc60, 0x05fa0289, + 0x59c80040, 0x4c000000, 0x59a80040, 0x4c000000, + 0x59c400a3, 0x4c000000, 0x59c40008, 0x4c000000, + 0x59c40080, 0x4c000000, 0x59a00210, 0x59a0bc10, + 0x905cb9c0, 0x805cbd40, 0x41784800, 0x41785000, + 0x41785800, 0x41789000, 0x41789800, 0x05fdfe22, + 0x64034408, 0x0529f950, 0x598e600b, 0x0529fc4b, + 0x0529f94d, 0x417a3000, 0x0529fe8c, 0x59926005, + 0x813261c0, 0x05000007, 0x0529fb7d, 0x0529f916, + 0x0529f91b, 0x60027820, 0x60ba8000, 0x0525ffd0, + 0x811a3000, 0x91180485, 0x05fc17f4, 0x05e9fca0, + 0x4178c000, 0x497b4002, 0x0501f94d, 0x59a00408, + 0x82000580, 0x0000dddd, 0x05000082, 0x0501f98d, + 0x59a00408, 0x82000580, 0x0000dddd, 0x0500007d, + 0x59a0020d, 0x59a00c0d, 0x80040d40, 0x05000002, + 0x0501f9cf, 0x0501f9ce, 0x05fdfe43, 0x8060c1c0, + 0x0502001c, 0x0501fa62, 0x59a00408, 0x82000580, + 0x0000dddd, 0x0500006f, 0x05fdfe8c, 0x05020012, + 0x05f1fd43, 0x0502000e, 0x59c40004, 0x48034409, + 0x59c400a4, 0x4803420a, 0x59c40005, 0x4803440a, + 0x4a034209, 0x00000555, 0x645f4407, 0x05f9fa28, + 0x4203e000, 0x50000000, 0x0501f000, 0x60a85955, + 0x0501f061, 0x59c80001, 0x800001c0, 0x05fc07e6, + 0x59c80801, 0x800409c0, 0x05000006, 0x0501fa32, + 0x40240000, 0x80280540, 0x802c0540, 0x05020056, + 0x59a00002, 0x82000580, 0xfeedbeef, 0x05000004, + 0x42008800, 0x10000000, 0x0501f003, 0x42008800, + 0x10000004, 0x0501f9df, 0x4a034002, 0xfeedbeef, + 0x0501fa33, 0x59a00408, 0x82000580, 0x0000dddd, + 0x05000040, 0x0501fa5f, 0x59a00408, 0x82000580, + 0x0000dddd, 0x0500003b, 0x05fdfe73, 0x59c40005, + 0x8c000534, 0x05000003, 0x60ec5977, 0x0501f03a, + 0x05fdfe52, 0x05020006, 0x61305999, 0x485f4210, + 0x905cb9c0, 0x485f4410, 0x0501f033, 0x59a0040d, + 0x800001c0, 0x0500000e, 0x59a26000, 0x5930000f, + 0x800001c0, 0x05fe07b0, 0x59a26001, 0x5930080f, + 0x800409c0, 0x05fe07ac, 0x804891c0, 0x05fe07aa, + 0x804c99c0, 0x05fe07a8, 0x0501f867, 0x805cb840, + 0x05000005, 0x40240000, 0x80280540, 0x802c0540, + 0x0502001d, 0x42000000, 0x00030d40, 0x80000040, + 0x05020016, 0x59c00007, 0x82000500, 0x000501c0, + 0x05020010, 0x05f1fce6, 0x0502000e, 0x59c40004, + 0x48034409, 0x59c400a4, 0x4803420a, 0x59c40005, + 0x4803440a, 0x4a034209, 0x00000666, 0x645f4407, + 0x05f9f9cb, 0x4203e000, 0x50000000, 0x0501f000, + 0x617459bb, 0x0501f004, 0x59c00807, 0x90040d0c, + 0x05fc07e7, 0x05fdfe26, 0x59a0040d, 0x800001c0, + 0x05000002, 0x0501f840, 0x05fdfe34, 0x40240000, + 0x80280540, 0x802c0540, 0x05020003, 0x805cb9c0, + 0x05fe0768, 0x0509fbb4, 0x0529fc26, 0x05fdfd79, + 0x4201d000, 0x000186a0, 0x0521fb68, 0x5c000800, + 0x48078880, 0x5c000800, 0x48078808, 0x5c000800, + 0x480788a3, 0x5c000800, 0x48075040, 0x5c000800, + 0x48079040, 0x05e9fa1a, 0x59a00407, 0x90000503, + 0x90000582, 0x0500001c, 0x60080810, 0x05f1fcee, + 0x82040500, 0xfffffffc, 0x60080810, 0x05f1fcef, + 0x60300848, 0x05f1fce8, 0x82040500, 0xffffff7f, + 0x60300848, 0x05f1fce9, 0x0515fa56, 0x05020003, + 0x0515fdf6, 0x0501f00c, 0x4a0388a7, 0x0000f7f7, + 0x42006000, 0xbeffffff, 0x42006800, 0x80018000, + 0x050dfaf6, 0x42006000, 0xfffeffff, 0x41786800, + 0x050dfaf2, 0x402c0000, 0x80280540, 0x80240540, + 0x05f80140, 0x48274407, 0x482b4208, 0x482f4408, + 0x05f9f190, 0x59a26000, 0x813261c0, 0x0500000a, + 0x59325809, 0x812e59c0, 0x05000007, 0x0009f810, + 0x05e9f866, 0x59a26001, 0x59325809, 0x0009f810, + 0x05e9f862, 0x1c01f000, 0x61bc0801, 0x05f1f9ff, + 0x4a035040, 0x000000ef, 0x59c400a3, 0x8400055a, + 0x8400053a, 0x480388a3, 0x05f1fa68, 0x05020006, + 0x60040000, 0x05f1fc48, 0x60040000, 0x05f1fc16, + 0x0501f013, 0x05f1fa67, 0x05020006, 0x60000000, + 0x05f1fc41, 0x60000000, 0x05f1fc0f, 0x0501f00c, + 0x05f1fa66, 0x05020006, 0x60080000, 0x05f1fc3a, + 0x60080000, 0x05f1fc08, 0x0501f005, 0x600c0000, + 0x05f1fc35, 0x600c0000, 0x05f1fc03, 0x6051d000, + 0x0521fadc, 0x59c40008, 0x82000500, 0xffffffe1, + 0x82000540, 0x00000280, 0x48038808, 0x4a0388a7, + 0x0000f8f7, 0x4a038805, 0x04000001, 0x42006000, + 0xbe20bfff, 0x42006800, 0x80018000, 0x050dfaab, + 0x42006000, 0xfffeffff, 0x41786800, 0x050dfaa7, + 0x6020b027, 0x6051d000, 0x4c580000, 0x0521fac5, + 0x05f1fc47, 0x5c00b000, 0x05000006, 0x8058b040, + 0x05fe07f9, 0x4a034209, 0x00000111, 0x0501f02e, + 0x59c40005, 0x8c000534, 0x05020008, 0x4a034209, + 0x00000222, 0x59c400a4, 0x9000050f, 0x90000588, + 0x05020025, 0x497b4209, 0x42006000, 0x00020000, + 0x050dfa93, 0x6191d000, 0x0521faae, 0x42006000, + 0xfeffffff, 0x42006800, 0x02000000, 0x050dfa87, + 0x42006000, 0xfdffffff, 0x41786800, 0x050dfa83, + 0x59c40001, 0x82000500, 0x00018000, 0x82000580, + 0x00018000, 0x59c400a3, 0x05020004, 0x82000540, + 0x00001000, 0x0501f003, 0x82000500, 0xffffefff, + 0x480388a3, 0x4a038805, 0x04000001, 0x59c400a4, + 0x9000050f, 0x90000580, 0x05000004, 0x4a034209, + 0x00000333, 0x90000541, 0x1c01f000, 0x4803c856, + 0x600380ee, 0x05e9ff2e, 0x59c00006, 0x59a0040d, + 0x800001c0, 0x05000037, 0x59a03c0d, 0x59a0020a, + 0x59a01c0a, 0x900c19c0, 0x800c1d40, 0x59a0020f, + 0x59a0240f, 0x901021c0, 0x80102540, 0x59a0020c, + 0x82000500, 0x0000fffc, 0x59a0140c, 0x900811c0, + 0x80081540, 0x480b8003, 0x052dff1e, 0x05e40c1a, + 0x49334000, 0x05e5ffbc, 0x64625a08, 0x4a025809, + 0x00abcdef, 0x492e6009, 0x492e600d, 0x481e600f, + 0x6412600e, 0x912c0415, 0x4802600c, 0x60301000, + 0x901c0d81, 0x05000008, 0x801c3840, 0x0501f965, + 0x59a00408, 0x82000580, 0x0000dddd, 0x05000011, + 0x0501f004, 0x41783800, 0x0501f95e, 0x0501f00d, + 0x901c0c85, 0x05001004, 0x40043800, 0x60f01000, + 0x0501f005, 0x80001580, 0x9008140c, 0x801c3840, + 0x05fe07fe, 0x912c0409, 0x0501f952, 0x05fe07f5, + 0x497b9009, 0x59e00003, 0x82000540, 0x00008060, + 0x4803c003, 0x4a038009, 0x00e00000, 0x1c01f000, + 0x4803c856, 0x41780800, 0x8007a0ca, 0x83d3a400, + 0x00007600, 0x61000800, 0x05edfe39, 0x6407a00a, + 0x4a03a005, 0x20000000, 0x59d00006, 0x4a03a005, + 0x30000000, 0x59d00006, 0x8c00050a, 0x05fe07fe, + 0x59d00005, 0x59a0020d, 0x800001c0, 0x05000037, + 0x59a03a0d, 0x59a00211, 0x59a01c11, 0x900c19c0, + 0x800c1d40, 0x59a0020e, 0x59a0240e, 0x901021c0, + 0x80102540, 0x59a0120c, 0x82081500, 0x0000fffc, 0x59a0040c, 0x900001c0, 0x80081540, 0x480ba003, - 0x59a0020e, 0x59a0240e, 0x901021c0, 0x80102540, - 0x59a00211, 0x59a01c11, 0x900c19c0, 0x800c1d40, - 0x6061d075, 0x051dfefa, 0x6423a00a, 0x480ba002, - 0x59a800bf, 0x4803a008, 0x4813a000, 0x480fa001, - 0x4a03a005, 0x10000000, 0x05e45c9c, 0x804c9800, - 0x90000541, 0x1c01f000, 0x4847c857, 0x59a0040d, - 0x800001c0, 0x05000020, 0x90480582, 0x0500003e, - 0x59a26000, 0x5930380f, 0x801c39c0, 0x0500003a, - 0x801c3840, 0x481e600f, 0x5932580d, 0x5930080c, - 0x50042000, 0x58041801, 0x58041002, 0x82081500, - 0xfffffffc, 0x5930000e, 0x80000000, 0x90000d85, - 0x05020008, 0x497a600e, 0x592e5801, 0x812e59c0, - 0x0500001b, 0x492e600d, 0x912c0c09, 0x0501f004, - 0x4802600e, 0x5930080c, 0x90040c03, 0x4806600c, - 0x0501f013, 0x82440580, 0x10000000, 0x0502001e, - 0x59a0020f, 0x59a0240f, 0x901021c0, 0x80102540, - 0x59a0020a, 0x59a01c0a, 0x900c19c0, 0x800c1d40, - 0x59a0020c, 0x82000500, 0x0000fffc, 0x59a0140c, - 0x900811c0, 0x80081540, 0x480b8003, 0x48138000, - 0x480f8001, 0x480b8002, 0x59c80018, 0x82000500, - 0xf0000000, 0x59c02008, 0x82102500, 0x0fffffff, - 0x80100540, 0x48038008, 0x48478006, 0x80489000, - 0x9060c541, 0x1c01f000, 0x59c00009, 0x4803c857, - 0x82000d00, 0x00e00000, 0x0500000d, 0x485f4210, - 0x905cb9c0, 0x485f4410, 0x8c00052e, 0x05000002, - 0x80285000, 0x8c00052c, 0x05000002, 0x80244800, - 0x8c00052a, 0x05000002, 0x802c5800, 0x1c01f000, - 0x59d00806, 0x82040500, 0x43dc0700, 0x05000007, + 0x052dfecc, 0x05e40bc8, 0x49334001, 0x05e5ff6a, + 0x64625a08, 0x4a025809, 0x00abcdef, 0x492e6009, + 0x492e600d, 0x481e600f, 0x6412600e, 0x912c0415, + 0x4802600c, 0x60301000, 0x901c0d81, 0x05000008, + 0x801c3840, 0x0501f913, 0x59a00408, 0x82000580, + 0x0000dddd, 0x05000011, 0x0501f004, 0x41783800, + 0x0501f90c, 0x0501f00d, 0x901c0c85, 0x05001004, + 0x40043800, 0x60f01000, 0x0501f005, 0x80001580, + 0x9008140c, 0x801c3840, 0x05fe07fe, 0x912c0409, + 0x0501f900, 0x05fe07f5, 0x1c01f000, 0x4803c856, + 0x59a0020d, 0x800001c0, 0x05000020, 0x904c0582, + 0x0500003b, 0x59a26001, 0x5930380f, 0x801c39c0, + 0x05000037, 0x801c3840, 0x481e600f, 0x5932580d, + 0x5930080c, 0x50042000, 0x58041801, 0x58041002, + 0x82081500, 0xfffffffc, 0x5930000e, 0x80000000, + 0x90000d85, 0x05020008, 0x497a600e, 0x592e5801, + 0x812e59c0, 0x05000018, 0x492e600d, 0x912c0c09, + 0x0501f004, 0x4802600e, 0x5930080c, 0x90040c03, + 0x4806600c, 0x0501f010, 0x59a0120c, 0x82081500, + 0x0000fffc, 0x59a0040c, 0x900001c0, 0x80081540, + 0x480ba003, 0x59a0020e, 0x59a0240e, 0x901021c0, + 0x80102540, 0x59a00211, 0x59a01c11, 0x900c19c0, + 0x800c1d40, 0x6061d075, 0x0521f9f4, 0x6423a00a, + 0x480ba002, 0x59a800c4, 0x4803a008, 0x4813a000, + 0x480fa001, 0x59d00805, 0x4a03a005, 0x10000000, + 0x05e45b65, 0x804c9800, 0x90000541, 0x1c01f000, + 0x4847c857, 0x59a0040d, 0x800001c0, 0x05000020, + 0x90480582, 0x0500003f, 0x59a26000, 0x5930380f, + 0x801c39c0, 0x0500003b, 0x801c3840, 0x481e600f, + 0x5932580d, 0x5930080c, 0x50042000, 0x58041801, + 0x58041002, 0x82081500, 0xfffffffc, 0x5930000e, + 0x80000000, 0x90000d85, 0x05020008, 0x497a600e, + 0x592e5801, 0x812e59c0, 0x0500001b, 0x492e600d, + 0x912c0c09, 0x0501f004, 0x4802600e, 0x5930080c, + 0x90040c03, 0x4806600c, 0x0501f013, 0x82440580, + 0x10000000, 0x0502001f, 0x59a0020f, 0x59a0240f, + 0x901021c0, 0x80102540, 0x59a0020a, 0x59a01c0a, + 0x900c19c0, 0x800c1d40, 0x59a0020c, 0x82000500, + 0x0000fffc, 0x59a0140c, 0x900811c0, 0x80081540, + 0x480b8003, 0x48138000, 0x480f8001, 0x480b8002, + 0x59c80018, 0x82000500, 0xf0000000, 0x59c02008, + 0x82102500, 0x0fffffff, 0x80100540, 0x48038008, + 0x59c00806, 0x48478006, 0x80489000, 0x9060c541, + 0x1c01f000, 0x59c00009, 0x4803c857, 0x82000d00, + 0x00e00000, 0x0500000d, 0x485f4210, 0x905cb9c0, + 0x485f4410, 0x8c00052e, 0x05000002, 0x80285000, + 0x8c00052c, 0x05000002, 0x80244800, 0x8c00052a, + 0x05000002, 0x802c5800, 0x1c01f000, 0x59d00806, + 0x82040500, 0x43dc0700, 0x05000007, 0x82040500, + 0x80000000, 0x05000004, 0x4a034408, 0x0000dddd, + 0x0501f027, 0x59a0020d, 0x800001c0, 0x05000024, + 0x59d00806, 0x4807c857, 0x8c04053e, 0x05000020, + 0x8c040504, 0x0500001e, 0x4a03a005, 0x20000000, + 0x82040d00, 0x43dc0700, 0x05000004, 0x4a034408, + 0x0000dddd, 0x0501f016, 0x904c0483, 0x05e61aee, + 0x404c0000, 0x0c01f001, 0x00103b2d, 0x00103b2e, + 0x00103b34, 0x05e5fae8, 0x80000040, 0x40009800, + 0x05fdff43, 0x0500000a, 0x05fdff41, 0x0501f008, + 0x80000040, 0x40009800, 0x59d00806, 0x4807c857, + 0x8c04053e, 0x05fe07e5, 0x05fdff39, 0x1c01f000, + 0x59c00807, 0x82040500, 0x00f507c0, 0x05000007, 0x82040500, 0x80000000, 0x05000004, 0x4a034408, - 0x0000dddd, 0x0501f027, 0x59a0020d, 0x800001c0, - 0x05000024, 0x59d00806, 0x4807c857, 0x8c04053e, - 0x05000020, 0x8c040504, 0x0500001e, 0x4a03a005, - 0x20000000, 0x82040d00, 0x43dc0700, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f016, 0x904c0483, - 0x05e61c26, 0x404c0000, 0x0c01f001, 0x001039ba, - 0x001039bb, 0x001039c1, 0x05e5fc20, 0x80000040, - 0x40009800, 0x05fdff45, 0x0500000a, 0x05fdff43, - 0x0501f008, 0x80000040, 0x40009800, 0x59d00806, - 0x4807c857, 0x8c04053e, 0x05fe07e5, 0x05fdff3b, - 0x1c01f000, 0x59c00807, 0x82040500, 0x00f507c0, - 0x05000007, 0x82040500, 0x80000000, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f02a, 0x59a0040d, - 0x800001c0, 0x05000027, 0x59c00807, 0x4807c857, - 0x8c04053e, 0x05000023, 0x59c00807, 0x4a038006, - 0x20000000, 0x82040d00, 0x00f507c0, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f01a, 0x90480483, - 0x05e61bf6, 0x40480000, 0x0c01f001, 0x001039ea, - 0x001039eb, 0x001039f3, 0x05e5fbf0, 0x80000040, - 0x40009000, 0x42008800, 0x10000004, 0x05fdff53, - 0x0500000c, 0x05fdff51, 0x0501f00a, 0x80000040, - 0x40009000, 0x59c00807, 0x4807c857, 0x8c04053e, - 0x05fe07e2, 0x42008800, 0x10000004, 0x05fdff47, - 0x1c01f000, 0x492fc857, 0x4000a800, 0x4a03b805, - 0x20000000, 0x59dc0006, 0x4a03b805, 0x30000000, - 0x4813b800, 0x480fb801, 0x480bb802, 0x4857b803, - 0x4a03b805, 0x30000002, 0x59dc0006, 0x4a03b805, - 0x70000001, 0x59dc0006, 0x4a03b805, 0x10000000, - 0x59dc0006, 0x8c00053e, 0x05fc07fe, 0x4a03b805, - 0x20000000, 0x59dc0006, 0x82000500, 0x43200f80, - 0x05000005, 0x4a034408, 0x0000dddd, 0x80000580, - 0x0501f00b, 0x59dc2000, 0x59dc1801, 0x801c39c0, - 0x05000007, 0x4d2c0000, 0x05e5ff60, 0x5c000800, - 0x05e40bb6, 0x642a5a08, 0x492c0801, 0x1c01f000, - 0x49cbc857, 0x59c80003, 0x82000500, 0xffffe0ff, - 0x48039003, 0x61f00800, 0x05edfdc8, 0x4a03902c, - 0x00200000, 0x61d0b003, 0x59c8002c, 0x8c00052c, - 0x05000006, 0x8058b040, 0x05fe07fc, 0x600c0080, - 0x41781000, 0x0501f148, 0x640b50c8, 0x42006000, - 0x00103b96, 0x50301000, 0x480bc857, 0x41784800, - 0x4a03902d, 0x00008000, 0x61d0b003, 0x59c8002c, - 0x8c000534, 0x05000006, 0x8058b040, 0x05fe07fc, - 0x600c0080, 0x41781000, 0x0501f137, 0x0501f8ab, - 0x80244800, 0x82081400, 0x02020202, 0x82240580, - 0x000003b1, 0x05fe07fa, 0x0501f93f, 0x41784800, - 0x50301000, 0x0501f8cc, 0x80244800, 0x82081400, - 0x02020202, 0x82240580, 0x000003b1, 0x05fe07fa, - 0x80306000, 0x82300580, 0x00103b98, 0x05fe07de, - 0x59a808c7, 0x800409c0, 0x05000005, 0x60100080, - 0x60081000, 0x59a818c6, 0x0501f11b, 0x42006000, - 0x00103b96, 0x644350c8, 0x50301000, 0x480bc857, - 0x41784800, 0x4a03902d, 0x00000800, 0x0501f887, - 0x80244800, 0x82081400, 0x02020202, 0x90240598, - 0x05fe07fb, 0x0501f91c, 0x41784800, 0x50301000, - 0x0501f8a9, 0x80244800, 0x82081400, 0x02020202, - 0x90240598, 0x05fe07fb, 0x80306000, 0x82300580, - 0x00103b98, 0x05fe07e9, 0x59a808c7, 0x800409c0, - 0x05000005, 0x60100080, 0x60401000, 0x59a818c6, - 0x0501f0f9, 0x42006000, 0x00103b96, 0x642350c8, - 0x50301000, 0x480bc857, 0x41784800, 0x4a03902d, - 0x00000400, 0x0501f865, 0x80244800, 0x82081400, - 0x03030303, 0x82240580, 0x00000088, 0x05fe07fa, - 0x0501f8f9, 0x41784800, 0x50301000, 0x0501f886, - 0x80244800, 0x82081400, 0x03030303, 0x82240580, - 0x00000088, 0x05fe07fa, 0x80306000, 0x82300580, - 0x00103b98, 0x05fe07e7, 0x59a808c7, 0x800409c0, - 0x05000005, 0x60100080, 0x60201000, 0x59a818c6, - 0x0501f0d5, 0x42006000, 0x00103b96, 0x648350c8, + 0x0000dddd, 0x0501f02a, 0x59a0040d, 0x800001c0, + 0x05000027, 0x59c00807, 0x4807c857, 0x8c04053e, + 0x05000023, 0x59c00807, 0x4a038006, 0x20000000, + 0x82040d00, 0x00f507c0, 0x05000004, 0x4a034408, + 0x0000dddd, 0x0501f01a, 0x90480483, 0x05e61abe, + 0x40480000, 0x0c01f001, 0x00103b5d, 0x00103b5e, + 0x00103b66, 0x05e5fab8, 0x80000040, 0x40009000, + 0x42008800, 0x10000004, 0x05fdff52, 0x0500000c, + 0x05fdff50, 0x0501f00a, 0x80000040, 0x40009000, + 0x59c00807, 0x4807c857, 0x8c04053e, 0x05fe07e2, + 0x42008800, 0x10000004, 0x05fdff46, 0x1c01f000, + 0x492fc857, 0x4000a800, 0x4a03b805, 0x20000000, + 0x59dc0006, 0x4a03b805, 0x30000000, 0x4813b800, + 0x480fb801, 0x480bb802, 0x4857b803, 0x4a03b805, + 0x30000002, 0x59dc0006, 0x4a03b805, 0x70000001, + 0x59dc0006, 0x4a03b805, 0x10000000, 0x59dc0006, + 0x8c00053e, 0x05fc07fe, 0x4a03b805, 0x20000000, + 0x59dc0006, 0x82000500, 0x43200f80, 0x05000005, + 0x4a034408, 0x0000dddd, 0x80000580, 0x0501f00b, + 0x59dc2000, 0x59dc1801, 0x801c39c0, 0x05000007, + 0x4d2c0000, 0x05e5fe24, 0x5c000800, 0x05e40a7e, + 0x642a5a08, 0x492c0801, 0x1c01f000, 0x49cbc857, + 0x59c80003, 0x82000500, 0xffffe0ff, 0x48039003, + 0x61f00800, 0x05edfcc6, 0x4a03902c, 0x00200000, + 0x61d0b003, 0x59c8002c, 0x8c00052c, 0x05000006, + 0x8058b040, 0x05fe07fc, 0x600c0080, 0x41781000, + 0x0501f148, 0x640b50cd, 0x42006000, 0x00103d09, 0x50301000, 0x480bc857, 0x41784800, 0x4a03902d, - 0x00002000, 0x61d0b003, 0x59c8002c, 0x8c000530, + 0x00008000, 0x61d0b003, 0x59c8002c, 0x8c000534, 0x05000006, 0x8058b040, 0x05fe07fc, 0x600c0080, - 0x41781000, 0x0501f0c4, 0x59c8002c, 0x82000500, - 0xffe0ffff, 0x82080d00, 0x001f0000, 0x80040540, - 0x4803902c, 0x0501f831, 0x80244800, 0x82081400, - 0x02020202, 0x82240580, 0x00000110, 0x05fe07fa, - 0x0501f8c5, 0x41784800, 0x50301000, 0x0501f852, - 0x59c80034, 0x82080d00, 0x001f0000, 0x82000500, - 0x001f0000, 0x80040580, 0x05000006, 0x59a800c7, - 0x80000000, 0x480350c7, 0x40240000, 0x480350c6, - 0x80244800, 0x82081400, 0x02020202, 0x82240580, - 0x00000110, 0x05fe07ee, 0x80306000, 0x82300580, - 0x00103b98, 0x05fe07cb, 0x59a808c7, 0x800409c0, - 0x05000004, 0x60100080, 0x60801000, 0x59a818c6, - 0x59c80803, 0x82040d40, 0x00001f00, 0x48079003, - 0x59c8002c, 0x8400052a, 0x4803902c, 0x61f00800, - 0x05edfd02, 0x05f5f703, 0x59c8002c, 0x82000500, - 0xffff0000, 0x82080d00, 0x0000ffff, 0x80040540, - 0x4803902c, 0x480b9028, 0x480b9029, 0x59a800c8, - 0x90004584, 0x05000007, 0x90000590, 0x05020003, - 0x80080920, 0x4807903a, 0x480b902a, 0x480b902b, - 0x59c8002d, 0x82000500, 0xfffffc00, 0x80240540, - 0x4803902d, 0x61d0b003, 0x59c8002c, 0x82000500, - 0x18000000, 0x05000006, 0x8058b040, 0x05fe07fb, - 0x600c0080, 0x41781000, 0x0501f06b, 0x6407902e, - 0x61d0b003, 0x59c8002e, 0x8c000500, 0x05000005, - 0x8058b040, 0x05fe07fc, 0x600c0080, 0x0501f062, - 0x1c01f000, 0x41783800, 0x59c8002d, 0x82000500, - 0xfffffc00, 0x80240d40, 0x4807902d, 0x61d0b003, - 0x59c8002c, 0x82000500, 0x18000000, 0x05000006, - 0x8058b040, 0x05fe07fb, 0x600c0080, 0x41781000, - 0x0501f051, 0x59c81830, 0x59c80030, 0x800c0d80, - 0x05fe07fd, 0x80080d80, 0x05000005, 0x4803c857, - 0x480bc857, 0x4827c857, 0x801c3800, 0x59c82031, - 0x59c80031, 0x80100d80, 0x05fe07fd, 0x80080d80, - 0x05000005, 0x4803c857, 0x480bc857, 0x4827c857, - 0x801c3800, 0x59a800c8, 0x90004584, 0x05000027, - 0x61fc41ff, 0x90000590, 0x05020003, 0x42004000, - 0x7f7f7f7f, 0x59c82832, 0x59c80032, 0x80140d80, - 0x05fe07fd, 0x80080d80, 0x05000005, 0x4803c857, - 0x480bc857, 0x4827c857, 0x801c3800, 0x59c83033, - 0x59c80033, 0x80180d80, 0x05fe07fd, 0x80080d80, + 0x41781000, 0x0501f137, 0x0501f8ab, 0x80244800, + 0x82081400, 0x02020202, 0x82240580, 0x000003b1, + 0x05fe07fa, 0x0501f93f, 0x41784800, 0x50301000, + 0x0501f8cc, 0x80244800, 0x82081400, 0x02020202, + 0x82240580, 0x000003b1, 0x05fe07fa, 0x80306000, + 0x82300580, 0x00103d0b, 0x05fe07de, 0x59a808cc, + 0x800409c0, 0x05000005, 0x60100080, 0x60081000, + 0x59a818cb, 0x0501f11b, 0x42006000, 0x00103d09, + 0x644350cd, 0x50301000, 0x480bc857, 0x41784800, + 0x4a03902d, 0x00000800, 0x0501f887, 0x80244800, + 0x82081400, 0x02020202, 0x90240598, 0x05fe07fb, + 0x0501f91c, 0x41784800, 0x50301000, 0x0501f8a9, + 0x80244800, 0x82081400, 0x02020202, 0x90240598, + 0x05fe07fb, 0x80306000, 0x82300580, 0x00103d0b, + 0x05fe07e9, 0x59a808cc, 0x800409c0, 0x05000005, + 0x60100080, 0x60401000, 0x59a818cb, 0x0501f0f9, + 0x42006000, 0x00103d09, 0x642350cd, 0x50301000, + 0x480bc857, 0x41784800, 0x4a03902d, 0x00000400, + 0x0501f865, 0x80244800, 0x82081400, 0x03030303, + 0x82240580, 0x00000088, 0x05fe07fa, 0x0501f8f9, + 0x41784800, 0x50301000, 0x0501f886, 0x80244800, + 0x82081400, 0x03030303, 0x82240580, 0x00000088, + 0x05fe07fa, 0x80306000, 0x82300580, 0x00103d0b, + 0x05fe07e7, 0x59a808cc, 0x800409c0, 0x05000005, + 0x60100080, 0x60201000, 0x59a818cb, 0x0501f0d5, + 0x42006000, 0x00103d09, 0x648350cd, 0x50301000, + 0x480bc857, 0x41784800, 0x4a03902d, 0x00002000, + 0x61d0b003, 0x59c8002c, 0x8c000530, 0x05000006, + 0x8058b040, 0x05fe07fc, 0x600c0080, 0x41781000, + 0x0501f0c4, 0x59c8002c, 0x82000500, 0xffe0ffff, + 0x82080d00, 0x001f0000, 0x80040540, 0x4803902c, + 0x0501f831, 0x80244800, 0x82081400, 0x02020202, + 0x82240580, 0x00000110, 0x05fe07fa, 0x0501f8c5, + 0x41784800, 0x50301000, 0x0501f852, 0x59c80034, + 0x82080d00, 0x001f0000, 0x82000500, 0x001f0000, + 0x80040580, 0x05000006, 0x59a800cc, 0x80000000, + 0x480350cc, 0x40240000, 0x480350cb, 0x80244800, + 0x82081400, 0x02020202, 0x82240580, 0x00000110, + 0x05fe07ee, 0x80306000, 0x82300580, 0x00103d0b, + 0x05fe07cb, 0x59a808cc, 0x800409c0, 0x05000004, + 0x60100080, 0x60801000, 0x59a818cb, 0x59c80803, + 0x82040d40, 0x00001f00, 0x48079003, 0x59c8002c, + 0x8400052a, 0x4803902c, 0x61f00800, 0x05edfc00, + 0x05f5f638, 0x59c8002c, 0x82000500, 0xffff0000, + 0x82080d00, 0x0000ffff, 0x80040540, 0x4803902c, + 0x480b9028, 0x480b9029, 0x59a800cd, 0x90004584, + 0x05000007, 0x90000590, 0x05020003, 0x80080920, + 0x4807903a, 0x480b902a, 0x480b902b, 0x59c8002d, + 0x82000500, 0xfffffc00, 0x80240540, 0x4803902d, + 0x61d0b003, 0x59c8002c, 0x82000500, 0x18000000, + 0x05000006, 0x8058b040, 0x05fe07fb, 0x600c0080, + 0x41781000, 0x0501f06b, 0x6407902e, 0x61d0b003, + 0x59c8002e, 0x8c000500, 0x05000005, 0x8058b040, + 0x05fe07fc, 0x600c0080, 0x0501f062, 0x1c01f000, + 0x41783800, 0x59c8002d, 0x82000500, 0xfffffc00, + 0x80240d40, 0x4807902d, 0x61d0b003, 0x59c8002c, + 0x82000500, 0x18000000, 0x05000006, 0x8058b040, + 0x05fe07fb, 0x600c0080, 0x41781000, 0x0501f051, + 0x59c81830, 0x59c80030, 0x800c0d80, 0x05fe07fd, + 0x80080d80, 0x05000005, 0x4803c857, 0x480bc857, + 0x4827c857, 0x801c3800, 0x59c82031, 0x59c80031, + 0x80100d80, 0x05fe07fd, 0x80080d80, 0x05000005, + 0x4803c857, 0x480bc857, 0x4827c857, 0x801c3800, + 0x59a800cd, 0x90004584, 0x05000027, 0x61fc41ff, + 0x90000590, 0x05020003, 0x42004000, 0x7f7f7f7f, + 0x59c82832, 0x59c80032, 0x80140d80, 0x05fe07fd, + 0x80080d80, 0x05000005, 0x4803c857, 0x480bc857, + 0x4827c857, 0x801c3800, 0x59c83033, 0x59c80033, + 0x80180d80, 0x05fe07fd, 0x80080d80, 0x05000005, + 0x4803c857, 0x480bc857, 0x4827c857, 0x801c3800, + 0x59c80034, 0x59c80834, 0x80040d80, 0x05fe07fd, + 0x80080d80, 0x40200000, 0x80040d00, 0x05000012, + 0x4803c857, 0x480bc857, 0x4827c857, 0x801c3800, + 0x0501f00d, 0x59c80034, 0x59c80834, 0x80040d80, + 0x05fe07fd, 0x80080d80, 0x82040d00, 0x000000ff, 0x05000005, 0x4803c857, 0x480bc857, 0x4827c857, - 0x801c3800, 0x59c80034, 0x59c80834, 0x80040d80, - 0x05fe07fd, 0x80080d80, 0x40200000, 0x80040d00, - 0x05000012, 0x4803c857, 0x480bc857, 0x4827c857, - 0x801c3800, 0x0501f00d, 0x59c80034, 0x59c80834, - 0x80040d80, 0x05fe07fd, 0x80080d80, 0x82040d00, - 0x000000ff, 0x05000005, 0x4803c857, 0x480bc857, - 0x4827c857, 0x801c3800, 0x801c39c0, 0x05000005, - 0x59a800c7, 0x801c0400, 0x480350c7, 0x482750c6, - 0x1c01f000, 0x48034207, 0x48074407, 0x480b4208, - 0x480f4408, 0x48134209, 0x48174409, 0x59c80003, - 0x82000540, 0x00001f00, 0x48039003, 0x59c8002c, - 0x8400052a, 0x4803902c, 0x61f00800, 0x05edfc67, - 0x05f5f66b, 0x42000000, 0x00600000, 0x80000040, - 0x05fe07ff, 0x1c01f000, 0x11121111, 0x44454442, - 0x0505fc07, 0x05020003, 0x640b4407, 0x05f5f6a0, - 0x42005000, 0x0010e511, 0x50285000, 0x482b4000, - 0x4200a000, 0x0010e512, 0x59a00408, 0x59a01208, - 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, - 0x900c19c0, 0x800c1d40, 0x42024800, 0x0010e512, - 0x912cac08, 0x6018b000, 0x9050040d, 0x48034001, - 0x0549fcf7, 0x60180800, 0x800400c4, 0x80080c00, - 0x48074002, 0x900c0c40, 0x48074003, 0x60180800, - 0x912c0408, 0x0505fc0f, 0x4a01d809, 0x00103bbd, - 0x1c01f000, 0x0501fa9e, 0x05f40674, 0x59a0a001, - 0x59a01000, 0x80081040, 0x480b4000, 0x05000005, - 0x59a01002, 0x59a01803, 0x58ee580d, 0x05fdf7e5, - 0x42000800, 0x0010e511, 0x50040800, 0x48074407, - 0x05f5f62c, 0x0505fbd2, 0x05020003, 0x640b4407, - 0x05f5f66b, 0x59a00c0b, 0x42000000, 0x0010e511, - 0x50000000, 0x80040480, 0x05f6166a, 0x8204a400, - 0x0010d17b, 0x5050a000, 0x912cac08, 0x6018b000, - 0x0549fccb, 0x59a00408, 0x59a01208, 0x900811c0, + 0x801c3800, 0x801c39c0, 0x05000005, 0x59a800cc, + 0x801c0400, 0x480350cc, 0x482750cb, 0x1c01f000, + 0x48034207, 0x48074407, 0x480b4208, 0x480f4408, + 0x48134209, 0x48174409, 0x59c80003, 0x82000540, + 0x00001f00, 0x48039003, 0x59c8002c, 0x8400052a, + 0x4803902c, 0x61f00800, 0x05edfb65, 0x05f5f5a0, + 0x42000000, 0x00600000, 0x80000040, 0x05fe07ff, + 0x1c01f000, 0x11121111, 0x44454442, 0x0505fc36, + 0x05020003, 0x640b4407, 0x05f5f5d5, 0x42005000, + 0x001124b5, 0x50285000, 0x482b4000, 0x4200a000, + 0x001124b6, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, - 0x800c1d40, 0x60180800, 0x912c0408, 0x0505f3e1, - 0x59a00c0b, 0x800409c0, 0x05f40656, 0x900404a1, - 0x05f61654, 0x90040491, 0x05001002, 0x60400800, + 0x800c1d40, 0x42024800, 0x001124b6, 0x912cac08, + 0x6018b000, 0x9050040d, 0x48034001, 0x054dfaff, + 0x60180800, 0x800400c4, 0x80080c00, 0x48074002, + 0x900c0c40, 0x48074003, 0x60180800, 0x912c0408, + 0x0505fc3e, 0x4a01d809, 0x00103d30, 0x1c01f000, + 0x0501faa1, 0x05f405a9, 0x59a0a001, 0x59a01000, + 0x80081040, 0x480b4000, 0x05000005, 0x59a01002, + 0x59a01803, 0x58ee580d, 0x05fdf7e5, 0x42000800, + 0x001124b5, 0x50040800, 0x48074407, 0x05f5f561, + 0x0505fc01, 0x05020003, 0x640b4407, 0x05f5f5a0, + 0x59a00c0b, 0x42000000, 0x001124b5, 0x50000000, + 0x80040480, 0x05f6159f, 0x8204a400, 0x0010d8f9, + 0x5050a000, 0x912cac08, 0x6018b000, 0x054dfad3, + 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, + 0x59a0040a, 0x59a01a0a, 0x900c19c0, 0x800c1d40, + 0x60180800, 0x912c0408, 0x0505f410, 0x59a00c0b, + 0x800409c0, 0x05f4058b, 0x900404a1, 0x05f61589, + 0x90040491, 0x05001002, 0x60400800, 0x59a00209, + 0x59a01408, 0x900811c0, 0x80081540, 0x59a00208, + 0x59a01c07, 0x900c19c0, 0x800c1d40, 0x0505fbd6, + 0x05000005, 0x0505fbf4, 0x4a01d809, 0x00103d73, + 0x1c01f000, 0x640b4407, 0x05f5f571, 0x0501fa5e, + 0x05f40566, 0x59a00c0b, 0x90040491, 0x05001002, + 0x60400800, 0x59a0040c, 0x59a0120c, 0x900811c0, + 0x80081540, 0x59a0020a, 0x59a01c09, 0x900c19c0, + 0x800c1d40, 0x58ec0003, 0x0505fbe8, 0x4a01d809, + 0x00103d86, 0x1c01f000, 0x0501fa4b, 0x05f40553, + 0x59a00c0b, 0x90040491, 0x05f41516, 0x90040c90, 0x59a00209, 0x59a01408, 0x900811c0, 0x80081540, 0x59a00208, 0x59a01c07, 0x900c19c0, 0x800c1d40, - 0x0505fba7, 0x05000005, 0x0505fbc5, 0x4a01d809, - 0x00103c00, 0x1c01f000, 0x640b4407, 0x05f5f63c, - 0x0501fa5b, 0x05f40631, 0x59a00c0b, 0x90040491, - 0x05001002, 0x60400800, 0x59a0040c, 0x59a0120c, + 0xb0081400, 0x58ec0003, 0x0505fbcb, 0x4a01d809, + 0x00103d9a, 0x1c01f000, 0x0501fa37, 0x05f4053f, + 0x59a0040b, 0x90000c90, 0x59a0040c, 0x59a0120c, 0x900811c0, 0x80081540, 0x59a0020a, 0x59a01c09, - 0x900c19c0, 0x800c1d40, 0x58ec0003, 0x0505fbb9, - 0x4a01d809, 0x00103c13, 0x1c01f000, 0x0501fa48, - 0x05f4061e, 0x59a00c0b, 0x90040491, 0x05f415e1, - 0x90040c90, 0x59a00209, 0x59a01408, 0x900811c0, - 0x80081540, 0x59a00208, 0x59a01c07, 0x900c19c0, - 0x800c1d40, 0xb0081400, 0x58ec0003, 0x0505fb9c, - 0x4a01d809, 0x00103c27, 0x1c01f000, 0x0501fa34, - 0x05f4060a, 0x59a0040b, 0x90000c90, 0x59a0040c, - 0x59a0120c, 0x900811c0, 0x80081540, 0x59a0020a, - 0x59a01c09, 0x900c19c0, 0x800c1d40, 0xb0081400, - 0x58ec0003, 0x0505fb93, 0x4a01d809, 0x001029f5, - 0x1c01f000, 0x48efc857, 0x59a00208, 0x59a01408, - 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, - 0x900001c0, 0x800c1d40, 0x59a00407, 0x48034000, - 0x480b4001, 0x480f4002, 0x0505fb59, 0x05020003, - 0x640b4407, 0x05f5f5f2, 0x60400800, 0x0505fb74, - 0x4a01d809, 0x00103c4f, 0x1c01f000, 0x0501fa0c, - 0x05f405e2, 0x58ee580d, 0x48efc857, 0x49a3c857, - 0x492fc857, 0x592c0a08, 0x80040910, 0x05020003, - 0x64674407, 0x05f5f5e2, 0x4805d80c, 0x0501f005, - 0x0501f9ff, 0x05f405d5, 0x48efc857, 0x49a3c857, - 0x48efc857, 0x49a3c857, 0x58ec000c, 0x80000040, - 0x0500000d, 0x4801d80c, 0x0505fb39, 0x05020003, - 0x640b4407, 0x05f5f5d2, 0x60400800, 0x58ec1007, - 0x58ec1808, 0x0505fb52, 0x4a01d809, 0x00103c5c, - 0x1c01f000, 0x58ee580d, 0x48efc857, 0x49a3c857, - 0x492fc857, 0x492f3000, 0x592c0408, 0x8400055e, - 0x48025c08, 0x4a01d809, 0x00103c7c, 0x1c01f000, - 0x4d2c0000, 0x58ee580d, 0x48efc857, 0x49a3c857, - 0x492fc857, 0x592c0408, 0x8400051e, 0x48025c08, - 0x59a00000, 0x59a01001, 0x59a01802, 0x80081400, - 0x900c1c40, 0x912c0408, 0x60400800, 0x5c025800, - 0x0505f33c, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f5f5ab, 0x916c0583, 0x05000003, 0x641f4407, - 0x05f5f5a7, 0x59a0320c, 0x82183500, 0x000000ff, - 0x59a28c07, 0x0505fbec, 0x05f605a6, 0x050dfdde, - 0x05f605a4, 0x83440580, 0x000007fd, 0x05000005, - 0x050dfd85, 0x05000003, 0x64274407, 0x05f5f598, - 0x0505fafb, 0x05020003, 0x640b4407, 0x05f5f594, - 0x801831c0, 0x05000007, 0x412c0800, 0x0505faf4, - 0x05020003, 0x640b4407, 0x05f5f58d, 0x40065800, - 0x4a025c08, 0x00008000, 0x497a5a08, 0x0539f8cf, - 0x05020003, 0x640f4407, 0x05f5f585, 0x4a01d809, - 0x00103cba, 0x1c01f000, 0x592c0009, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f5f57c, - 0x592c040a, 0x82002d00, 0x0000ff00, 0x82000500, - 0x000000ff, 0x80000904, 0x80040800, 0x90040486, - 0x05001002, 0x60140800, 0x4c500000, 0x4c540000, - 0x4c580000, 0x912ca40a, 0x4050a800, 0x4004b000, - 0x0549fc12, 0x59a00408, 0x59a01208, 0x900811c0, - 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, - 0x800c1d40, 0x912c040a, 0x4c140000, 0x0505faed, - 0x5c002800, 0x801429c0, 0x05000003, 0x4a01d809, - 0x00103ce5, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x1c01f000, 0x0501f976, 0x05f4054c, 0x58ee580d, - 0x812e59c0, 0x05e408f1, 0x592c000a, 0x82000500, - 0xff000000, 0x80000904, 0x800409c0, 0x05f40509, - 0x4807c857, 0x9004048e, 0x05001002, 0x60340800, - 0x592e5801, 0x812e59c0, 0x05e408e4, 0x4c500000, - 0x4c540000, 0x4c580000, 0x912ca409, 0x4050a800, - 0x4004b000, 0x0549fbe5, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x58ec1007, 0x58ec1808, 0x912c0409, - 0x0505f2c4, 0x0505fa9a, 0x05020003, 0x640b4407, - 0x05f5f533, 0x59a00c07, 0x82040500, 0x0000ff00, - 0x840001c0, 0x9000148e, 0x05f61532, 0x0c01f001, - 0x00103d1e, 0x00103d24, 0x00103d2a, 0x00103d2b, - 0x00103d2f, 0x00103d49, 0x00103d4d, 0x00103d36, - 0x00103d3b, 0x00103d41, 0x00103d2a, 0x00103d2a, - 0x00103d2a, 0x00103d2a, 0x60340800, 0x42003800, - 0x00103d76, 0x4a034000, 0x0010dd46, 0x0501f02d, - 0x60340800, 0x42003800, 0x00103d76, 0x4a034000, - 0x0010dd53, 0x0501f027, 0x05f5f516, 0x0505fc9e, - 0x05f60514, 0x497b501c, 0x05f5f4ca, 0x0505fc9a, - 0x05f60510, 0x59a8101b, 0x800811c0, 0x05f404c5, - 0x480b501c, 0x05f5f4c3, 0x0505fc93, 0x05f60509, - 0x497b500f, 0x497b5010, 0x05f5f4be, 0x0505fc8e, - 0x05f60504, 0x6403500f, 0x4a035010, 0x000927c0, - 0x05f5f4b8, 0x59a00c07, 0x82040d00, 0x000000ff, - 0x05f404fc, 0x48074000, 0x42003800, 0x00103d57, - 0x0501f008, 0x60200800, 0x42003800, 0x00103d7f, - 0x0501f004, 0x60100800, 0x42003800, 0x00103db0, - 0x0501f902, 0x912c0409, 0x4c1c0000, 0x0505fa6c, - 0x5c003800, 0x481dd809, 0x1c01f000, 0x0501f904, - 0x05f404da, 0x58ee580d, 0x59a0b000, 0x912ca409, - 0x50500800, 0x82040580, 0x00110307, 0x0502000f, - 0x82041500, 0x000000ff, 0x90080488, 0x0502100b, - 0x4200a800, 0x0010dc14, 0x80081840, 0x8050a000, - 0x50500000, 0x4400a800, 0x8054a800, 0x800c1840, - 0x05fe07fb, 0x0501f005, 0x48074407, 0x900409c0, - 0x48074208, 0x05f5f4cf, 0x8050a000, 0x8058b482, - 0x05fe07e8, 0x05f5f483, 0x0501f8e5, 0x05f404bb, - 0x58ee580d, 0x64075047, 0x6034b000, 0x59a0a800, - 0x912ca409, 0x0549fb65, 0x05f5f47a, 0x0501f8dc, - 0x05f404b2, 0x58ee580d, 0x912ca409, 0x50500000, - 0x82001500, 0x000c0016, 0x05f604ba, 0x90500c03, - 0x50040000, 0x90001501, 0x05f604b6, 0x50500000, - 0x90001528, 0x05000015, 0x900815a8, 0x05f604b1, - 0x80500800, 0x50040000, 0x90001513, 0x90081593, - 0x05f604ac, 0x80040800, 0x50040000, 0x82001500, - 0x00050000, 0x82081580, 0x00050000, 0x05f604a5, - 0x916c0580, 0x0500000e, 0x599c0019, 0x8c00050e, - 0x0502000b, 0x05f5f49f, 0x80500800, 0x50040000, - 0x90001513, 0x05f6049b, 0x80040800, 0x50040000, - 0x82001500, 0x00050000, 0x05f60496, 0x6020b000, - 0x4200a800, 0x0010dd3e, 0x0549faf9, 0x05f5f449, - 0x0501f8ab, 0x05f40481, 0x58ee580d, 0x6010b000, - 0x4200a800, 0x0010e50c, 0x912ca409, 0x0549faf0, - 0x850e1d50, 0x05f5f43f, 0x0505f9e5, 0x05020003, - 0x640b4407, 0x05f5f47e, 0x912cac09, 0x59a00c07, - 0x82040500, 0x0000ff00, 0x840001c0, 0x9000148e, - 0x05f6147c, 0x0c01f001, 0x00103dd4, 0x00103dd7, - 0x00103dda, 0x00103ddb, 0x00103dee, 0x00103e10, - 0x00103dda, 0x00103e16, 0x00103df5, 0x00103e06, - 0x00103dda, 0x00103dda, 0x00103dda, 0x00103dda, - 0x4200a000, 0x0010dd46, 0x0501f06e, 0x4200a000, - 0x0010dd53, 0x0501f06b, 0x05f5f466, 0x0505fbee, - 0x05f60464, 0x59a8041d, 0x48034407, 0x59a8021d, - 0x48034208, 0x59a8041e, 0x48034408, 0x59a8021e, - 0x4803420a, 0x59a8041b, 0x4803440a, 0x59a8021b, - 0x4803420b, 0x59a8041c, 0x4803440b, 0x59a8021c, - 0x4803420c, 0x05f5f40b, 0x0505fbdb, 0x05f60451, - 0x0501f862, 0x60600800, 0x42000000, 0x0010dc23, - 0x0505f1d4, 0x0505fbd4, 0x05000002, 0x05f5f449, - 0x59a80411, 0x48034407, 0x59a80211, 0x48034208, - 0x59a80412, 0x48034408, 0x59a80212, 0x4803420a, - 0x6403440a, 0x6403420b, 0x6427440b, 0x4a03420c, - 0x000027c0, 0x05f5f3f3, 0x0505fbc3, 0x05000002, - 0x05f40438, 0x0501f849, 0x61ec0801, 0x800400c4, - 0x48034407, 0x42000000, 0x00107dd1, 0x0505f1b9, - 0x6020b000, 0x40580800, 0x4200a000, 0x0010dd3e, - 0x0549fa93, 0x0501f032, 0x59a00a0b, 0x6473420b, - 0x9004049c, 0x05f41427, 0x603cb000, 0x4178a000, - 0x0549fa93, 0x912cac09, 0x6010b000, 0xb1a8a40d, - 0x0549fa87, 0x916c0580, 0x05000004, 0x6010b000, - 0x91a8a400, 0x0549fa82, 0x912cac15, 0x600cb000, - 0xb1a8a411, 0x0549fa7e, 0x492f4000, 0x0505f974, - 0x05020003, 0x640b4407, 0x05f5f40d, 0x912cac09, - 0x603cb000, 0x4178a000, 0x0549fa7d, 0x912cac09, - 0x6004b000, 0xb1a8a414, 0x0549fa71, 0x912cac0a, - 0x6010b000, 0xb1a8a415, 0x0549fa6d, 0x0501f817, - 0x492f4001, 0x59a25800, 0x912c0409, 0x603c0800, - 0x0505f988, 0x4a01d809, 0x00103e4a, 0x1c01f000, - 0x6034b000, 0x40580800, 0x0549fa9c, 0x0501f80b, - 0x912c0409, 0x0505f17f, 0x0501f811, 0x05f403e7, - 0x59a25801, 0x58ec1007, 0x58ec1808, 0x912c0409, - 0x60340800, 0x0505f177, 0x59a00208, 0x59a01408, - 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, - 0x900001c0, 0x800c1d40, 0x1c01f000, 0x4031d800, - 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200, - 0x1c01f000, 0x59a00407, 0x80000d40, 0x05020003, - 0x48072832, 0x05f5f393, 0x8d0c050e, 0x05020007, - 0x4c000000, 0x0511fa45, 0x5c000000, 0x05000003, - 0x645b4407, 0x05f5f3ce, 0x82000c80, 0x00001000, - 0x05f613d0, 0x90000c82, 0x05f413ce, 0x800008c6, - 0x80040c00, 0x80040c00, 0x48072832, 0x59a800af, - 0x84000500, 0x59a00a08, 0x8c040500, 0x05000002, - 0x84000540, 0x480350af, 0x05f5f37a, 0x8d0c050e, - 0x05020003, 0x0511fa2d, 0x0502000c, 0x59a800af, - 0x8c000500, 0x05020005, 0x4a03c014, 0x00400040, - 0x4a03c013, 0x00400040, 0x59a800af, 0x8400054a, - 0x480350af, 0x05e1ff4d, 0x1c01f000, 0x916c0580, - 0x05020003, 0x641f4407, 0x05f5f3a9, 0x59a01407, - 0x800811c0, 0x0502002a, 0x497b4208, 0x05f1f8e9, - 0x05000011, 0x05f1f8ce, 0x64074208, 0x0502000e, - 0x4c080000, 0x05f1f8d5, 0x5c001000, 0x05020006, - 0x640b4208, 0x05edfcd3, 0x05020007, 0x64134208, - 0x0501f005, 0x640f4208, 0x05edfcbc, 0x05020002, - 0x64174208, 0x59c40801, 0x82040d00, 0x00018000, - 0x90040580, 0x05020003, 0x64034407, 0x0501f069, - 0x82040580, 0x00008000, 0x05020003, 0x64074407, - 0x0501f064, 0x82040580, 0x00010000, 0x05020003, - 0x640f4407, 0x0501f05f, 0x82040580, 0x00018000, - 0x05e20f1e, 0x64134407, 0x0501f05a, 0x59a800d1, - 0x8c000502, 0x05000004, 0x60080000, 0x40000800, - 0x0501f012, 0x59a00208, 0x4c000000, 0x0505fa23, - 0x5c000000, 0x05000005, 0x4c000000, 0x0505fa36, - 0x5c000000, 0x05020007, 0x90000d84, 0x05000003, - 0x90000d82, 0x05020003, 0x600c0000, 0x600c1000, - 0x48034002, 0x59a80869, 0x48035069, 0x599c7819, - 0x823c7d00, 0xffff1fff, 0x800000da, 0x803c7d40, - 0x483f3819, 0x497b4208, 0x05f1f8a2, 0x05000013, - 0x05f1f887, 0x64074208, 0x05020010, 0x4c040000, - 0x4c080000, 0x05f1f88d, 0x5c001000, 0x5c000800, - 0x05020006, 0x640b4208, 0x05edfc8a, 0x05020007, - 0x64134208, 0x0501f005, 0x640f4208, 0x05edfc73, - 0x05020002, 0x64174208, 0x05edfc88, 0x0500000b, - 0x05edfc6e, 0x05000009, 0x05edfc72, 0x05000007, - 0x05edfc76, 0x05000005, 0x05edfc7a, 0x05000003, - 0x48075069, 0x05f5f343, 0x90080583, 0x05020005, - 0x59a00002, 0x48035076, 0x640b5069, 0x0501f005, - 0x4a035076, 0xaabbccdd, 0x90080582, 0x05020011, - 0x59c40006, 0x84000500, 0x48038806, 0x0525f94a, - 0x497b8880, 0x42000000, 0x0010e4bc, 0x0549f8cd, - 0x4803c856, 0x850e1d48, 0x4a038808, 0x00000200, - 0x6012d800, 0x64078805, 0x64075075, 0x05e5f8e7, - 0x05f5f2e0, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f5f31f, 0x916c0583, 0x05000003, 0x641f4407, - 0x05f5f31b, 0x59a28c07, 0x59a0320c, 0x82183500, - 0x000000ff, 0x0505f960, 0x05f6031a, 0x050dfb52, - 0x05f60318, 0x83440580, 0x000007fd, 0x05000005, - 0x050dfaf9, 0x05000003, 0x60240800, 0x05f5f30c, - 0x0505f86f, 0x05020003, 0x640b4407, 0x05f5f308, - 0x497a5a08, 0x4a025c08, 0x00008000, 0x0535fe5e, - 0x05020003, 0x640f4407, 0x05f5f301, 0x4a01d809, - 0x00103f3e, 0x1c01f000, 0x592c0009, 0x82000d00, - 0x0000ffff, 0x82000500, 0xffff0000, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f5f2f4, - 0x80040904, 0x4c500000, 0x4c540000, 0x4c580000, - 0x912ca409, 0x4050a800, 0x4004b000, 0x0549f993, - 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x59a00208, - 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, - 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x912c0409, - 0x0505f06c, 0x60000020, 0x50000000, 0x82000480, - 0x25320001, 0x0502000a, 0x599c1019, 0x8c08053c, - 0x05020005, 0x4a03c014, 0x00400040, 0x4a03c013, - 0x00400000, 0x6041d04e, 0x051df89b, 0x496fc857, - 0x916c0580, 0x05000003, 0x646b4407, 0x05f5f2cc, - 0x0511f93e, 0x050a0996, 0x60800800, 0x59a00408, - 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, - 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x419c0000, - 0x49a3c857, 0x0505f842, 0x4a01d809, 0x00103f81, - 0x1c01f000, 0x4833c857, 0x05fdfed9, 0x05f402af, - 0x59a00407, 0x8c000500, 0x05000061, 0x59a0020e, - 0x80000104, 0x05f402b7, 0x90000c95, 0x05f612b5, - 0x40000800, 0x59a0040c, 0x59a0120c, 0x900811c0, - 0x80081540, 0x59a0040d, 0x59a01a0d, 0x900c19c0, - 0x800c1d40, 0x42000000, 0x0010dd2a, 0x49a3c857, - 0x0505f827, 0x4a01d809, 0x00103f9c, 0x1c01f000, - 0x05fdfebf, 0x05f40295, 0x42000800, 0x0010dd2a, - 0x58040200, 0x800001c0, 0x05f4029e, 0x599c0017, - 0x8c000508, 0x05000042, 0x58040204, 0x8c000500, - 0x0500003f, 0x599c0202, 0x800001c0, 0x05f40295, - 0x599c141e, 0x80000000, 0x80080480, 0x05f61291, - 0x42001000, 0x00110228, 0x4a001008, 0x00000112, - 0x6428120b, 0x4978140b, 0x49781011, 0x4a00140e, - 0x00000101, 0x58040005, 0x48001015, 0x4a00120a, - 0x0000ffff, 0x4a00100d, 0x00111ad0, 0x58040006, - 0x48001016, 0x58040007, 0x48001017, 0x4a001013, - 0xdeadbeff, 0x4a001001, 0x00110240, 0x42001000, - 0x00110240, 0x48081000, 0x48081001, 0x64281208, - 0x58040005, 0x48001009, 0x4800100c, 0x4800100f, - 0x48001012, 0x48001015, 0x58040006, 0x4800100a, - 0x4800100d, 0x48001010, 0x48001013, 0x48001016, - 0x58040007, 0x4800100b, 0x4800100e, 0x48001011, - 0x48001014, 0x48001017, 0x42001000, 0x00111ad0, - 0x4a001009, 0x00110228, 0x4a001013, 0xdeadbeff, - 0x64841008, 0x64101203, 0x64181407, 0x599c0200, - 0x800001c0, 0x05f40257, 0x59a800d1, 0x8c000502, - 0x05000011, 0x599c0017, 0x84000508, 0x48033817, - 0x599c0019, 0x82000500, 0xffff1fff, 0x82000540, - 0x00004000, 0x48033819, 0x599c0018, 0x84000510, - 0x84000516, 0x82000500, 0xffffffcf, 0x90000560, - 0x0501f004, 0x8c000504, 0x05000004, 0x599c0018, - 0x84000514, 0x48033818, 0x0539fd97, 0x850e1d20, - 0x599c0017, 0x8c000508, 0x05000003, 0x850e1d60, - 0x0501f006, 0x8c00050a, 0x05f60236, 0x59a80806, - 0x8c040516, 0x05f60233, 0x42024800, 0x0010e512, - 0x64124a00, 0x42000800, 0x0010e511, 0x64040800, - 0x42000800, 0x0010e510, 0x46000800, 0x0000ffff, - 0x59240c00, 0x84040d46, 0x599c1017, 0x8c08050a, - 0x05020002, 0x84040d48, 0x8c080508, 0x05020002, - 0x84040d4a, 0x84040d4c, 0x48064c00, 0x59240a00, - 0x84040d40, 0x48064a00, 0x0505faed, 0x05000017, - 0x59c40801, 0x82040d40, 0x00004000, 0x48078801, - 0x64c378e4, 0x640752cd, 0x640752cc, 0x640b50ce, - 0x4a02480b, 0x0f000001, 0x4c000000, 0x4c500000, - 0x60000001, 0x4200a000, 0x001105f2, 0x4600a000, - 0xffffffff, 0x8050a000, 0x80000040, 0x05fe07fc, - 0x5c00a000, 0x5c000000, 0x4803c857, 0x8c000504, - 0x05020004, 0x59c408a3, 0x84040d7a, 0x480788a3, - 0x8c000502, 0x05020004, 0x59c408a3, 0x84040d08, - 0x480788a3, 0x599c0c02, 0x8c000500, 0x0502000b, - 0x8c000516, 0x0500001f, 0x4c000000, 0x59240400, - 0x84000542, 0x840411c0, 0x80081540, 0x480a4c00, - 0x5c000000, 0x0501f008, 0x4c000000, 0x59240400, - 0x84000540, 0x840411c0, 0x80081540, 0x480a4c00, - 0x5c000000, 0xb00414bf, 0x05f611e2, 0x82041400, - 0x00102853, 0x50081000, 0x82081500, 0x000000ff, - 0x48064a08, 0x480a4805, 0x480a4c08, 0x8c000500, - 0x05020004, 0x480b503d, 0x600c0800, 0x0521fcd6, - 0x0501ffeb, 0x05000004, 0x59240400, 0x84000544, - 0x48024c00, 0x599c0019, 0x8c000506, 0x05000003, - 0x4a03b805, 0x90000000, 0x8c00050e, 0x05020005, - 0x4c000000, 0x0505fad0, 0x5c000000, 0x05f601c5, - 0x90000530, 0x05000003, 0x80000108, 0x0501f002, - 0x60080000, 0x48039040, 0x60080800, 0x82000400, - 0x001042be, 0x50001000, 0x0521fcbb, 0x599c0201, - 0x82000c80, 0x00000100, 0x05f411b6, 0x82000c80, - 0x00000841, 0x05f611b3, 0x90000507, 0x05f601b1, - 0x599c0401, 0x80000540, 0x05f401ae, 0x59a808d1, - 0x8c040502, 0x05000005, 0x90000c90, 0x05001003, - 0x60400000, 0x48033c01, 0x850e1d52, 0x82000580, - 0x0000ffff, 0x05000002, 0x850e1d12, 0x599c0409, - 0x599c0c07, 0x80040c80, 0x05f6119e, 0x80000040, - 0x05f4019c, 0x599c0209, 0x599c0a07, 0x80040c80, - 0x05f61198, 0x80000040, 0x05f40196, 0xb1a81411, - 0x599c0818, 0x8c040510, 0x05020005, 0x50080000, - 0x8400053e, 0x44001000, 0x0501f00b, 0x59a80006, - 0x8400054a, 0x48035006, 0x4a0370e4, 0x0000c000, - 0x4c040000, 0x59c408a3, 0x84040d3a, 0x480788a3, - 0x5c000800, 0x8c040512, 0x05020009, 0x50080000, - 0x82000500, 0xfffff5ff, 0x44001000, 0x80081000, - 0x50080000, 0x8400053e, 0x44001000, 0x59e00002, - 0x84000568, 0x4803c002, 0x05e5f8a7, 0x42000000, - 0x0010dd60, 0x452c0000, 0x64073002, 0x412de000, - 0x492fc840, 0x644fc842, 0x05011000, 0x599c0018, - 0x8c00052e, 0x05000012, 0x850e1d16, 0x59a810d2, - 0x90081493, 0x0500100c, 0x0500000b, 0x480b50d2, - 0x480b50d3, 0x59a810d4, 0x9008148a, 0x05001004, - 0x05000003, 0x480b50d4, 0x0501f005, 0x60041000, - 0x05fdf7fd, 0x60041000, 0x05fdf7f5, 0x600000b8, - 0x599c1407, 0x48080100, 0x480a5a0c, 0x48025a00, - 0x492e5801, 0x599c000b, 0x48025808, 0x599c000c, - 0x48025809, 0x64065c10, 0x599c0409, 0x48025c0a, - 0x05e5f87d, 0x42000000, 0x0010de60, 0x452c0000, - 0x64073008, 0x492fc840, 0x642bc842, 0x05011000, - 0x412ee800, 0x492e5800, 0x492de012, 0x4a025803, - 0xffff0000, 0x60040000, 0x8d0c0516, 0x05020006, - 0x599c0211, 0x82001480, 0x00000100, 0x05f61139, - 0x599c1018, 0x48025a09, 0x600000bc, 0x599c1207, - 0x48080000, 0x480a5c09, 0x48025c08, 0x599c000d, - 0x48025806, 0x599c000e, 0x48025807, 0x599c0209, - 0x48025a08, 0x599c0818, 0x8c040532, 0x05000009, - 0x6405e20a, 0x599c021a, 0x4801e411, 0x42000000, - 0x00102ecb, 0x50000000, 0x4801e210, 0x0501f009, - 0x599c0a1a, 0x90040486, 0x05001002, 0x60040800, - 0x82040c00, 0x00102ec8, 0x50040000, 0x4801e210, - 0x599c0818, 0x599c141a, 0x8c040526, 0x05000002, - 0x8408157e, 0x8c040524, 0x05000002, 0x8408157c, - 0x8c040528, 0x05000003, 0x82081540, 0x20000000, - 0x4809e00b, 0x480a5801, 0x480bb01f, 0x480bb11f, - 0x599c0211, 0x82000400, 0x0010df60, 0x44080000, - 0x42000000, 0x0010e389, 0x50000000, 0x48080006, - 0x42000000, 0x0010e388, 0x50000000, 0x48080006, - 0x0511fb2e, 0x050dfca4, 0x599c0201, 0x48035004, - 0x05e9fe84, 0x599c020a, 0x800001c0, 0x05000003, - 0x48035063, 0x0501f003, 0x4a035063, 0x000000c8, - 0x8d0c0520, 0x05000006, 0x599c0413, 0x90000c82, - 0x05f410ec, 0x051dfd7e, 0x417a5000, 0x599c0003, - 0x599c0804, 0x9c0001c0, 0x9c0409c0, 0x48024801, - 0x48064802, 0x48035002, 0x48075003, 0x599c1017, - 0x8c08051c, 0x05000006, 0x599c0005, 0x599c0806, - 0x9c0001c0, 0x9c0409c0, 0x0501f003, 0x82000500, - 0xf0ffffff, 0x48024803, 0x48064804, 0x48035000, - 0x48075001, 0x42001000, 0x0010dd46, 0x48001000, - 0x48041001, 0x42001000, 0x0010dd53, 0x48001000, - 0x48041001, 0x59a00207, 0xb0000588, 0x050200b0, - 0x0501fe27, 0x05020003, 0x640b4407, 0x05f5f0c0, - 0x60400800, 0x59a00208, 0x59a01408, 0x900001c0, + 0x900c19c0, 0x800c1d40, 0xb0081400, 0x58ec0003, + 0x0505fbc2, 0x4a01d809, 0x00102a9d, 0x1c01f000, + 0x48efc857, 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, - 0x800c1d40, 0x82081400, 0x00000080, 0xb0083400, - 0x481b4002, 0x900c3440, 0x481b4003, 0x912c0408, - 0x0501fe33, 0x4a01d809, 0x00104190, 0x1c01f000, - 0x05fdfccb, 0x05f400a1, 0x58ee580d, 0x592c1008, - 0x480bc857, 0x80080120, 0x42024800, 0x0010e512, - 0x48024c06, 0x82081500, 0x0000ffff, 0x599c0818, - 0x90040d30, 0x90040580, 0x05020004, 0xb00804be, - 0x05f610a0, 0x0501f001, 0x0545ff73, 0x05000014, - 0x82080480, 0x00000100, 0x05f6109a, 0x42000000, - 0x0010e511, 0x44080000, 0x800811c0, 0x05f40095, - 0x40080800, 0x42024800, 0x0010e512, 0x912e5c09, - 0x592c0400, 0x8c000506, 0x05020012, 0x59240200, - 0x84000500, 0x48024a00, 0x0501f00e, 0x82080480, - 0x000000ff, 0x05f61087, 0x80080800, 0x42000000, - 0x0010e511, 0x44040000, 0x800811c0, 0x05000068, - 0x42024800, 0x0010e51f, 0x80040840, 0x912e5c09, - 0x600c4000, 0x592c0400, 0x8c000506, 0x05000012, - 0x59a810d1, 0x90081506, 0x05f60076, 0x8c00050a, - 0x05020003, 0x8d0c0520, 0x05f40072, 0x64164a00, - 0x90001503, 0x05000006, 0x840011c0, 0x82081500, - 0x000000ff, 0x480a4a08, 0x0501f003, 0x82000500, - 0x000000ff, 0x48024c00, 0x592c0001, 0x592c1002, - 0x9c0001c0, 0x9c0811c0, 0x48024801, 0x480a4802, - 0x599c1817, 0x8c0c051c, 0x05000006, 0x592c0003, - 0x592c1004, 0x9c0001c0, 0x9c0811c0, 0x0501f003, - 0x82000500, 0xf0ffffff, 0x48024803, 0x480a4804, - 0x912e5c05, 0x91264c0d, 0x80040840, 0x05000019, - 0x80204040, 0x05fe07d4, 0x48074000, 0x49274001, - 0x603c0800, 0x59a01002, 0x59a01803, 0x9008343c, - 0x481b4002, 0x900c3440, 0x481b4003, 0x58ee580d, - 0x912c0408, 0x0501fdc2, 0x4a01d809, 0x00104201, - 0x1c01f000, 0x05fdfc5a, 0x05f40030, 0x58ee580d, - 0x912e5c08, 0x59a00800, 0x59a24801, 0x05fdf7bd, - 0x0545ff0d, 0x05000010, 0x42006800, 0x0010e512, - 0x4200b000, 0x0010e511, 0x5058b000, 0x58340400, - 0x8c000506, 0x05000005, 0x58340200, 0x8400055e, - 0x48006a00, 0x0501f004, 0x90346c0d, 0x8058b040, - 0x05fe07f7, 0x42006800, 0x0010e512, 0x4200b000, - 0x0010e511, 0x5058b000, 0x8058b040, 0x05000008, - 0x42024800, 0x0010e51f, 0x58340206, 0x48024a06, - 0x91264c0d, 0x8058b040, 0x05fe07fc, 0x599c1019, - 0x82081500, 0x0000e000, 0x497b4208, 0x05edfd55, - 0x05000012, 0x05edfd3a, 0x64074208, 0x0502000f, - 0x4c080000, 0x05edfd41, 0x5c001000, 0x05020007, - 0x640b4208, 0x82080580, 0x00008000, 0x05020007, - 0x64134208, 0x0501f005, 0x640f4208, 0x90080580, - 0x05020002, 0x64174208, 0x90080580, 0x05020007, - 0x64035069, 0x60040000, 0x05edfb03, 0x60040000, - 0x05edfad1, 0x0501f02b, 0x82080580, 0x00002000, - 0x05020008, 0x64075069, 0x60000000, 0x05edfafa, - 0x60000000, 0x05edfac8, 0x05edfebf, 0x0501f021, - 0x82080580, 0x00004000, 0x05020004, 0x640b5069, - 0x64075075, 0x05fdf7f9, 0x82080580, 0x00006000, - 0x0502000f, 0x59a80892, 0x82040d80, 0x01391077, - 0x05020004, 0x59e00813, 0x8c040500, 0x05f207e1, - 0x640f5069, 0x60080000, 0x05edfae3, 0x60080000, - 0x05edfab1, 0x05fdf7e9, 0x0501f00a, 0x82080580, - 0x00008000, 0x05f207d7, 0x05edfeb2, 0x64135069, - 0x600c0000, 0x05edfad8, 0x600c0000, 0x05edfaa6, - 0x599c1019, 0x82081500, 0x0000e000, 0x4c080000, - 0x0501fea2, 0x5c001000, 0x05020004, 0x82080580, - 0x00004000, 0x0500000b, 0x0501fe70, 0x05000003, - 0x0501fe85, 0x05020009, 0x82080580, 0x00008000, - 0x05000004, 0x82080580, 0x00004000, 0x05020003, - 0x600010c0, 0x0501f004, 0x599c0019, 0x8c000518, - 0x05000005, 0x8008111a, 0x480b5076, 0x640b5069, - 0x64075075, 0x599c0019, 0x8c000520, 0x05000001, - 0x4a035041, 0x0000aaaa, 0x599c1018, 0x90081530, - 0x90080d80, 0x05000005, 0x90080d90, 0x05000008, - 0x90080da0, 0x05020002, 0x48075041, 0x0501fdb7, - 0x05000007, 0x4803c856, 0x850e1d46, 0x05edf88f, - 0x59a8004d, 0x80040540, 0x4803504d, 0x49f3c857, - 0x42001000, 0x00106004, 0x0519fc0f, 0x42001000, - 0x00105ff7, 0x0519fd4d, 0x4a038805, 0xffffffff, - 0x0501fe5b, 0x05000008, 0x599c1019, 0x8c08053c, - 0x05020005, 0x4a03c014, 0x00400040, 0x4a03c013, - 0x00400000, 0x59a0001e, 0x84000540, 0x4803401e, - 0x49f3c857, 0x59a802dd, 0x48034209, 0x59a804dd, - 0x48034409, 0x05f1f73b, 0x00000018, 0x0000000c, - 0x00000018, 0x00000020, 0x916c0580, 0x05020003, - 0x601c0800, 0x05f1f776, 0x60800800, 0x59a00408, - 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, - 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x419c0000, - 0x0501f4f8, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f1f767, 0x050dfdd9, 0x05020003, 0x645b4407, - 0x05f1f763, 0x59a800b2, 0x8c000500, 0x0500000e, - 0x64034407, 0x60800800, 0x59a00408, 0x59a01208, - 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, - 0x900c19c0, 0x800c1d40, 0x42000000, 0x00110258, - 0x0501f4e0, 0x64074407, 0x6080b000, 0x4200a800, - 0x00110258, 0x4200a000, 0xffffffff, 0x4450a800, - 0x8054a800, 0x8058b040, 0x05fe07fd, 0x4d440000, - 0x4d340000, 0x42028800, 0xffffffff, 0x42002000, - 0xffffffff, 0x60043000, 0x60043800, 0x42001800, - 0x00110258, 0x59a8103d, 0x82081500, 0x000000ff, - 0x40180000, 0x0c01f001, 0x00104306, 0x00104309, - 0x0010430d, 0x00104311, 0x82102500, 0xffffff00, - 0x0501f014, 0x82102500, 0xffff00ff, 0x840811c0, - 0x0501f010, 0x82102500, 0xff00ffff, 0x900811c0, - 0x0501f00c, 0x82102500, 0x00ffffff, 0x9c0801c0, - 0x80102540, 0x44101800, 0x42003000, 0xffffffff, - 0x42002000, 0xffffffff, 0x800c1800, 0x0501f003, - 0x40080000, 0x80102540, 0x81468800, 0xb1442cbf, - 0x05021012, 0x4c080000, 0x4c0c0000, 0x4c180000, - 0x4c1c0000, 0x0001fb00, 0x5c003800, 0x5c003000, - 0x5c001800, 0x5c001000, 0x05fe07f4, 0x0509ff06, - 0x05fe07f2, 0x80183000, 0x801c3800, 0x59341202, - 0x40180000, 0x0c01f7d1, 0x82100580, 0xffffffff, - 0x05000002, 0x44101800, 0x42001800, 0x00110258, - 0x500c0000, 0x82000500, 0xffffff00, 0x801c0540, - 0x44001800, 0x5c026800, 0x5c028800, 0x60800800, + 0x800c1d40, 0x59a00407, 0x48034000, 0x480b4001, + 0x480f4002, 0x0505fb88, 0x05020003, 0x640b4407, + 0x05f5f527, 0x60400800, 0x0505fba3, 0x4a01d809, + 0x00103dc2, 0x1c01f000, 0x0501fa0f, 0x05f40517, + 0x58ee580d, 0x48efc857, 0x49a3c857, 0x492fc857, + 0x592c0a08, 0x80040910, 0x05020003, 0x64674407, + 0x05f5f517, 0x4805d80c, 0x0501f005, 0x0501fa02, + 0x05f4050a, 0x48efc857, 0x49a3c857, 0x48efc857, + 0x49a3c857, 0x58ec000c, 0x80000040, 0x0500000d, + 0x4801d80c, 0x0505fb68, 0x05020003, 0x640b4407, + 0x05f5f507, 0x60400800, 0x58ec1007, 0x58ec1808, + 0x0505fb81, 0x4a01d809, 0x00103dcf, 0x1c01f000, + 0x58ee580d, 0x48efc857, 0x49a3c857, 0x492fc857, + 0x492f3000, 0x592c0408, 0x8400055e, 0x48025c08, + 0x4a01d809, 0x00103def, 0x1c01f000, 0x4d2c0000, + 0x58ee580d, 0x48efc857, 0x49a3c857, 0x492fc857, + 0x592c0408, 0x8400051e, 0x48025c08, 0x59a00000, + 0x59a01001, 0x59a01802, 0x80081400, 0x900c1c40, + 0x912c0408, 0x60400800, 0x5c025800, 0x0505f36b, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f5f4e0, + 0x916c0583, 0x05000003, 0x641f4407, 0x05f5f4dc, + 0x59a0320c, 0x82183500, 0x000000ff, 0x59a28c07, + 0x0505fc16, 0x05f604db, 0x050dff34, 0x05f604d9, + 0x83440580, 0x000007fd, 0x05000005, 0x050dfedb, + 0x05000003, 0x64274407, 0x05f5f4cd, 0x0505fb2a, + 0x05020003, 0x640b4407, 0x05f5f4c9, 0x801831c0, + 0x05000007, 0x412c0800, 0x0505fb23, 0x05020003, + 0x640b4407, 0x05f5f4c2, 0x40065800, 0x4a025c08, + 0x00008000, 0x497a5a08, 0x0539fcf5, 0x05020003, + 0x640f4407, 0x05f5f4ba, 0x4a01d809, 0x00103e2d, + 0x1c01f000, 0x592c0009, 0x82000580, 0x01000000, + 0x05020003, 0x64134407, 0x05f5f4b1, 0x592c040a, + 0x82002d00, 0x0000ff00, 0x82000500, 0x000000ff, + 0x80000904, 0x80040800, 0x90040486, 0x05001002, + 0x60140800, 0x4c500000, 0x4c540000, 0x4c580000, + 0x912ca40a, 0x4050a800, 0x4004b000, 0x054dfa1a, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, 0x800c1d40, - 0x42000000, 0x00110258, 0x0501f47e, 0x59a28c07, - 0x0501fd39, 0x05f206f3, 0x59a0020c, 0x8c000500, - 0x0500000c, 0x59a01209, 0x59a00409, 0x82000500, - 0x000000ff, 0x900001c0, 0x80081540, 0x41784000, - 0x0509fdb5, 0x05000005, 0x48034407, 0x05f1f6e5, - 0x0509ff1d, 0x05f206e3, 0x0501fc41, 0x05020003, - 0x640b4407, 0x05f1f6da, 0x59a0020c, 0x8c000500, - 0x05000003, 0x0509fecc, 0x050204f6, 0x59a0020c, - 0x8c000502, 0x05000015, 0x83440480, 0x000007f0, - 0x05021012, 0x0509fecd, 0x05020010, 0x497a5a08, - 0x4a025c08, 0x00008000, 0x59a24805, 0x0535f9f8, - 0x05020003, 0x640f4407, 0x05f1f6c5, 0x4a01d809, - 0x0010437a, 0x1c01f000, 0x59a28c07, 0x59a2440b, - 0x0509fefd, 0x05f206c3, 0x4c580000, 0x4c500000, + 0x912c040a, 0x4c140000, 0x0505fb1c, 0x5c002800, + 0x801429c0, 0x05000003, 0x4a01d809, 0x00103e58, + 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x1c01f000, + 0x0501f979, 0x05f40481, 0x58ee580d, 0x812e59c0, + 0x05e00fb9, 0x592c000a, 0x82000500, 0xff000000, + 0x80000904, 0x800409c0, 0x05f4043e, 0x4807c857, + 0x9004048e, 0x05001002, 0x60340800, 0x592e5801, + 0x812e59c0, 0x05e00fac, 0x4c500000, 0x4c540000, + 0x4c580000, 0x912ca409, 0x4050a800, 0x4004b000, + 0x054df9ed, 0x5c00b000, 0x5c00a800, 0x5c00a000, + 0x58ec1007, 0x58ec1808, 0x912c0409, 0x0505f2f3, + 0x0505fac9, 0x05020003, 0x640b4407, 0x05f5f468, + 0x59a00c07, 0x82040500, 0x0000ff00, 0x840001c0, + 0x9000148e, 0x05f61467, 0x0c01f001, 0x00103e91, + 0x00103e97, 0x00103e9d, 0x00103e9e, 0x00103ea2, + 0x00103ebc, 0x00103ec0, 0x00103ea9, 0x00103eae, + 0x00103eb4, 0x00103e9d, 0x00103e9d, 0x00103e9d, + 0x00103e9d, 0x60340800, 0x42003800, 0x00103ee9, + 0x4a034000, 0x00111ce0, 0x0501f02d, 0x60340800, + 0x42003800, 0x00103ee9, 0x4a034000, 0x00111ced, + 0x0501f027, 0x05f5f44b, 0x0505fcd1, 0x05f60449, + 0x497b501e, 0x05f5f3ff, 0x0505fccd, 0x05f60445, + 0x59a8101d, 0x800811c0, 0x05f403fa, 0x480b501e, + 0x05f5f3f8, 0x0505fcc6, 0x05f6043e, 0x497b5011, + 0x497b5012, 0x05f5f3f3, 0x0505fcc1, 0x05f60439, + 0x64035011, 0x4a035012, 0x000927c0, 0x05f5f3ed, + 0x59a00c07, 0x82040d00, 0x000000ff, 0x05f40431, + 0x48074000, 0x42003800, 0x00103eca, 0x0501f008, + 0x60200800, 0x42003800, 0x00103ef2, 0x0501f004, + 0x60100800, 0x42003800, 0x00103f23, 0x0501f905, + 0x912c0409, 0x4c1c0000, 0x0505fa9b, 0x5c003800, + 0x481dd809, 0x1c01f000, 0x0501f907, 0x05f4040f, + 0x58ee580d, 0x59a0b000, 0x912ca409, 0x50500800, + 0x82040580, 0x00110307, 0x0502000f, 0x82041500, + 0x000000ff, 0x90080488, 0x0502100b, 0x4200a800, + 0x00111b96, 0x80081840, 0x8050a000, 0x50500000, + 0x4400a800, 0x8054a800, 0x800c1840, 0x05fe07fb, + 0x0501f005, 0x48074407, 0x900409c0, 0x48074208, + 0x05f5f404, 0x8050a000, 0x8058b482, 0x05fe07e8, + 0x05f5f3b8, 0x0501f8e8, 0x05f403f0, 0x58ee580d, + 0x6407504a, 0x6034b000, 0x59a0a800, 0x912ca409, + 0x054df96d, 0x05f5f3af, 0x0501f8df, 0x05f403e7, + 0x58ee580d, 0x912ca409, 0x50500000, 0x82001500, + 0x000c0016, 0x05f603ef, 0x90500c03, 0x50040000, + 0x90001501, 0x05f603eb, 0x50500000, 0x90001528, + 0x05000015, 0x900815a8, 0x05f603e6, 0x80500800, + 0x50040000, 0x90001513, 0x90081593, 0x05f603e1, + 0x80040800, 0x50040000, 0x82001500, 0x00050000, + 0x82081580, 0x00050000, 0x05f603da, 0x916c0580, + 0x0500000e, 0x599c0019, 0x8c00050e, 0x0502000b, + 0x05f5f3d4, 0x80500800, 0x50040000, 0x90001513, + 0x05f603d0, 0x80040800, 0x50040000, 0x82001500, + 0x00050000, 0x05f603cb, 0x6020b000, 0x4200a800, + 0x00111cc4, 0x054df901, 0x05f5f37e, 0x0501f8ae, + 0x05f403b6, 0x58ee580d, 0x6010b000, 0x4200a800, + 0x001124b0, 0x912ca409, 0x054df8f8, 0x850e1d50, + 0x05f5f374, 0x0505fa14, 0x05020003, 0x640b4407, + 0x05f5f3b3, 0x912cac09, 0x59a00c07, 0x82040500, + 0x0000ff00, 0x840001c0, 0x9000148e, 0x05f613b1, + 0x0c01f001, 0x00103f47, 0x00103f4a, 0x00103f4d, + 0x00103f4e, 0x00103f61, 0x00103f83, 0x00103f4d, + 0x00103f89, 0x00103f68, 0x00103f79, 0x00103f4d, + 0x00103f4d, 0x00103f4d, 0x00103f4d, 0x4200a000, + 0x00111ce0, 0x0501f071, 0x4200a000, 0x00111ced, + 0x0501f06e, 0x05f5f39b, 0x0505fc21, 0x05f60399, + 0x59a8041f, 0x48034407, 0x59a8021f, 0x48034208, + 0x59a80420, 0x48034408, 0x59a80220, 0x4803420a, + 0x59a8041d, 0x4803440a, 0x59a8021d, 0x4803420b, + 0x59a8041e, 0x4803440b, 0x59a8021e, 0x4803420c, + 0x05f5f340, 0x0505fc0e, 0x05f60386, 0x0501f865, + 0x60600800, 0x42000000, 0x00111ba5, 0x0505f203, + 0x0505fc07, 0x05000002, 0x05f5f37e, 0x59a80413, + 0x48034407, 0x59a80213, 0x48034208, 0x59a80414, + 0x48034408, 0x59a80214, 0x4803420a, 0x6403440a, + 0x6403420b, 0x6427440b, 0x4a03420c, 0x000027c0, + 0x05f5f328, 0x0505fbf6, 0x05000002, 0x05f4036d, + 0x0501f84c, 0x61ec0801, 0x800400c4, 0x48034407, + 0x42000000, 0x00108288, 0x0505f1e8, 0x6020b000, + 0x40580800, 0x4200a000, 0x00111cc4, 0x054df89b, + 0x0501f035, 0x59a00a0b, 0x6473420b, 0x9004049c, + 0x05f4135c, 0x603cb000, 0x4178a000, 0x054df89b, + 0x912cac09, 0x6010b000, 0xb1a8a410, 0x054df88f, + 0x916c0580, 0x05000007, 0x6008b000, 0x91a8a402, + 0x054df88a, 0x6008b000, 0x91a8a400, 0x054df887, + 0x912cac15, 0x600cb000, 0xb1a8a414, 0x054df883, + 0x492f4000, 0x0505f9a0, 0x05020003, 0x640b4407, + 0x05f5f33f, 0x912cac09, 0x603cb000, 0x4178a000, + 0x054df882, 0x912cac09, 0x6004b000, 0xb1a8a417, + 0x054df876, 0x912cac0a, 0x6010b000, 0xb1a8a418, + 0x054df872, 0x0501f817, 0x492f4001, 0x59a25800, + 0x912c0409, 0x603c0800, 0x0505f9b4, 0x4a01d809, + 0x00103fc0, 0x1c01f000, 0x6034b000, 0x40580800, + 0x054df8a1, 0x0501f80b, 0x912c0409, 0x0505f1ab, + 0x0501f811, 0x05f40319, 0x59a25801, 0x58ec1007, + 0x58ec1808, 0x912c0409, 0x60340800, 0x0505f1a3, + 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, + 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, + 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ec0002, + 0x82000580, 0x00000200, 0x1c01f000, 0x59a00407, + 0x80000d40, 0x05020003, 0x48072833, 0x05f5f2c5, + 0x8d0c050e, 0x05020007, 0x4c000000, 0x0511fbb9, + 0x5c000000, 0x05000003, 0x645b4407, 0x05f5f300, + 0x82000c80, 0x00001000, 0x05f61302, 0x90000c82, + 0x05f41300, 0x800008c6, 0x80040c00, 0x80040c00, + 0x48072833, 0x59a800b4, 0x84000500, 0x59a00a08, + 0x8c040500, 0x05000002, 0x84000540, 0x480350b4, + 0x05f5f2ac, 0x8d0c050e, 0x05020003, 0x0511fba1, + 0x0502000c, 0x59a800b4, 0x8c000500, 0x05020005, + 0x4a03c014, 0x00400040, 0x4a03c013, 0x00400040, + 0x59a800b4, 0x8400054a, 0x480350b4, 0x05e1fe12, + 0x1c01f000, 0x916c0580, 0x05020003, 0x641f4407, + 0x05f5f2db, 0x59a01407, 0x800811c0, 0x0502002a, + 0x497b4208, 0x05edfff3, 0x05000011, 0x05edffd8, + 0x64074208, 0x0502000e, 0x4c080000, 0x05edffdf, + 0x5c001000, 0x05020006, 0x640b4208, 0x05edfbdd, + 0x05020007, 0x64134208, 0x0501f005, 0x640f4208, + 0x05edfbc6, 0x05020002, 0x64174208, 0x59c40801, + 0x82040d00, 0x00018000, 0x90040580, 0x05020003, + 0x64034407, 0x0501f069, 0x82040580, 0x00008000, + 0x05020003, 0x64074407, 0x0501f064, 0x82040580, + 0x00010000, 0x05020003, 0x640f4407, 0x0501f05f, + 0x82040580, 0x00018000, 0x05e20de3, 0x64134407, + 0x0501f05a, 0x59a800d6, 0x8c000502, 0x05000004, + 0x60080000, 0x40000800, 0x0501f012, 0x59a00208, + 0x4c000000, 0x0505fa53, 0x5c000000, 0x05000005, + 0x4c000000, 0x0505fa66, 0x5c000000, 0x05020007, + 0x90000d84, 0x05000003, 0x90000d82, 0x05020003, + 0x600c0000, 0x600c1000, 0x48034002, 0x59a8086c, + 0x4803506c, 0x599c7819, 0x823c7d00, 0xffff1fff, + 0x800000da, 0x803c7d40, 0x483f3819, 0x497b4208, + 0x05edffac, 0x05000013, 0x05edff91, 0x64074208, + 0x05020010, 0x4c040000, 0x4c080000, 0x05edff97, + 0x5c001000, 0x5c000800, 0x05020006, 0x640b4208, + 0x05edfb94, 0x05020007, 0x64134208, 0x0501f005, + 0x640f4208, 0x05edfb7d, 0x05020002, 0x64174208, + 0x05edfb92, 0x0500000b, 0x05edfb78, 0x05000009, + 0x05edfb7c, 0x05000007, 0x05edfb80, 0x05000005, + 0x05edfb84, 0x05000003, 0x4807506c, 0x05f5f275, + 0x90080583, 0x05020005, 0x59a00002, 0x48035079, + 0x640b506c, 0x0501f005, 0x4a035079, 0xaabbccdd, + 0x90080582, 0x05020011, 0x59c40006, 0x84000500, + 0x48038806, 0x0525fc92, 0x497b8880, 0x42000000, + 0x00112460, 0x0549fed2, 0x4803c856, 0x850e1d48, + 0x4a038808, 0x00000200, 0x6012d800, 0x64078805, + 0x64075078, 0x05e1ffa0, 0x05f5f212, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05f5f251, 0x916c0583, + 0x05000003, 0x641f4407, 0x05f5f24d, 0x59a28c07, + 0x59a0320c, 0x82183500, 0x000000ff, 0x0505f987, + 0x05f6024c, 0x050dfca5, 0x05f6024a, 0x83440580, + 0x000007fd, 0x05000005, 0x050dfc4c, 0x05000003, + 0x60240800, 0x05f5f23e, 0x0505f89b, 0x05020003, + 0x640b4407, 0x05f5f23a, 0x497a5a08, 0x4a025c08, + 0x00008000, 0x0539fa81, 0x05020003, 0x640f4407, + 0x05f5f233, 0x4a01d809, 0x001040b4, 0x1c01f000, + 0x592c0009, 0x82000d00, 0x0000ffff, 0x82000500, + 0xffff0000, 0x82000580, 0x01000000, 0x05020003, + 0x64134407, 0x05f5f226, 0x80040904, 0x4c500000, + 0x4c540000, 0x4c580000, 0x912ca409, 0x4050a800, + 0x4004b000, 0x0549ff98, 0x5c00b000, 0x5c00a800, + 0x5c00a000, 0x59a00208, 0x59a01408, 0x900001c0, + 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, + 0x800c1d40, 0x912c0409, 0x0505f098, 0x60000020, + 0x50000000, 0x82000480, 0x25320001, 0x0502000a, + 0x599c1019, 0x8c08053c, 0x05020005, 0x4a03c014, + 0x00400040, 0x4a03c013, 0x00400000, 0x6041d04e, + 0x051dfb90, 0x496fc857, 0x916c0580, 0x05000003, + 0x646b4407, 0x05f5f1fe, 0x0511fab2, 0x050a0a17, + 0x60800800, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x419c0000, 0x49a3c857, 0x0505f86e, + 0x4a01d809, 0x001040f7, 0x1c01f000, 0x4833c857, + 0x05fdfed9, 0x05f401e1, 0x59a00407, 0x8c000500, + 0x05000061, 0x59a0020e, 0x80000104, 0x05f401e9, + 0x90000c95, 0x05f611e7, 0x40000800, 0x59a0040c, + 0x59a0120c, 0x900811c0, 0x80081540, 0x59a0040d, + 0x59a01a0d, 0x900c19c0, 0x800c1d40, 0x42000000, + 0x00111cb0, 0x49a3c857, 0x0505f853, 0x4a01d809, + 0x00104112, 0x1c01f000, 0x05fdfebf, 0x05f401c7, + 0x42000800, 0x00111cb0, 0x58040200, 0x800001c0, + 0x05f401d0, 0x599c0017, 0x8c000508, 0x05000042, + 0x58040204, 0x8c000500, 0x0500003f, 0x599c0202, + 0x800001c0, 0x05f401c7, 0x599c141e, 0x80000000, + 0x80080480, 0x05f611c3, 0x42001000, 0x001141cc, + 0x4a001008, 0x00000112, 0x6428120b, 0x4978140b, + 0x49781011, 0x4a00140e, 0x00000101, 0x58040005, + 0x48001015, 0x4a00120a, 0x0000ffff, 0x4a00100d, + 0x00115a74, 0x58040006, 0x48001016, 0x58040007, + 0x48001017, 0x4a001013, 0xdeadbeff, 0x4a001001, + 0x001141e4, 0x42001000, 0x001141e4, 0x48081000, + 0x48081001, 0x64281208, 0x58040005, 0x48001009, + 0x4800100c, 0x4800100f, 0x48001012, 0x48001015, + 0x58040006, 0x4800100a, 0x4800100d, 0x48001010, + 0x48001013, 0x48001016, 0x58040007, 0x4800100b, + 0x4800100e, 0x48001011, 0x48001014, 0x48001017, + 0x42001000, 0x00115a74, 0x4a001009, 0x001141cc, + 0x4a001013, 0xdeadbeff, 0x64841008, 0x64101203, + 0x64181407, 0x599c0200, 0x800001c0, 0x05f40189, + 0x59a800d6, 0x8c000502, 0x05000011, 0x599c0017, + 0x84000508, 0x48033817, 0x599c0019, 0x82000500, + 0xffff1fff, 0x82000540, 0x00004000, 0x48033819, + 0x599c0018, 0x84000510, 0x84000516, 0x82000500, + 0xffffffcf, 0x90000560, 0x0501f004, 0x8c000504, + 0x05000004, 0x599c0018, 0x84000514, 0x48033818, + 0x053df9c8, 0x850e1d20, 0x599c0017, 0x8c000508, + 0x05000003, 0x850e1d60, 0x0501f006, 0x8c00050a, + 0x05f60168, 0x59a80806, 0x8c040516, 0x05f60165, + 0x42024800, 0x001124b6, 0x64124a00, 0x42000800, + 0x001124b5, 0x64040800, 0x42000800, 0x001124b4, + 0x46000800, 0x0000ffff, 0x59240c00, 0x84040d46, + 0x599c1017, 0x8c08050a, 0x05020002, 0x84040d48, + 0x8c080508, 0x05020002, 0x84040d4a, 0x84040d4c, + 0x48064c00, 0x59240a00, 0x84040d40, 0x48064a00, + 0x0505fb1d, 0x05000017, 0x59c40801, 0x82040d40, + 0x00004000, 0x48078801, 0x64c378e4, 0x640752d2, + 0x640752d1, 0x640b50d3, 0x4a02480b, 0x0f000001, + 0x4c000000, 0x4c500000, 0x60000001, 0x4200a000, + 0x00114596, 0x4600a000, 0xffffffff, 0x8050a000, + 0x80000040, 0x05fe07fc, 0x5c00a000, 0x5c000000, + 0x4803c857, 0x8c000504, 0x05020004, 0x59c408a3, + 0x84040d7a, 0x480788a3, 0x8c000502, 0x05020004, + 0x59c408a3, 0x84040d08, 0x480788a3, 0x599c0c02, + 0x8c000500, 0x0502000b, 0x8c000516, 0x0500001f, + 0x4c000000, 0x59240400, 0x84000542, 0x840411c0, + 0x80081540, 0x480a4c00, 0x5c000000, 0x0501f008, + 0x4c000000, 0x59240400, 0x84000540, 0x840411c0, + 0x80081540, 0x480a4c00, 0x5c000000, 0xb00414bf, + 0x05f61114, 0x82041400, 0x001028fb, 0x50081000, + 0x82081500, 0x000000ff, 0x48064a08, 0x480a4805, + 0x480a4c08, 0x8c000500, 0x05020004, 0x480b5040, + 0x600c0800, 0x0525f81e, 0x0505f812, 0x05000004, + 0x59240400, 0x84000544, 0x48024c00, 0x599c0019, + 0x8c000506, 0x05000003, 0x4a03b805, 0x90000000, + 0x8c00050e, 0x05020005, 0x4c000000, 0x0505fb4e, + 0x5c000000, 0x05f600f7, 0x90000530, 0x05000003, + 0x80000108, 0x0501f002, 0x60080000, 0x48039040, + 0x60080800, 0x82000400, 0x0010443d, 0x50001000, + 0x0525f803, 0x599c0201, 0x82000c80, 0x00000100, + 0x05f410e8, 0x82000c80, 0x00000841, 0x05f610e5, + 0x90000507, 0x05f600e3, 0x599c0401, 0x80000540, + 0x05f400e0, 0x59a808d6, 0x8c040502, 0x05000005, + 0x90000c90, 0x05001003, 0x60400000, 0x48033c01, + 0x850e1d52, 0x82000580, 0x0000ffff, 0x05000002, + 0x850e1d12, 0x599c0409, 0x599c0c07, 0x80040c80, + 0x05f610d0, 0x80000040, 0x05f400ce, 0x599c0209, + 0x599c0a07, 0x80040c80, 0x05f610ca, 0x80000040, + 0x05f400c8, 0xb1a81414, 0x599c0818, 0x8c040510, + 0x05020005, 0x50080000, 0x8400053e, 0x44001000, + 0x0501f00b, 0x59a80006, 0x8400054a, 0x48035006, + 0x4a0370e4, 0x0000c000, 0x4c040000, 0x59c408a3, + 0x84040d3a, 0x480788a3, 0x5c000800, 0x8c040512, + 0x05020009, 0x50080000, 0x82000500, 0xfffff5ff, + 0x44001000, 0x80081000, 0x50080000, 0x8400053e, + 0x44001000, 0x59e00002, 0x84000568, 0x4803c002, + 0x05e1ff68, 0x42000000, 0x00111cfa, 0x452c0000, + 0x64073002, 0x412de000, 0x492fc840, 0x644fc842, + 0x05011000, 0x599c0018, 0x8c00052e, 0x05000012, + 0x850e1d16, 0x59a810d7, 0x90081493, 0x0500100c, + 0x0500000b, 0x480b50d7, 0x480b50d8, 0x59a810d9, + 0x9008148a, 0x05001004, 0x05000003, 0x480b50d9, + 0x0501f005, 0x60041000, 0x05fdf7fd, 0x60041000, + 0x05fdf7f5, 0x600000b8, 0x599c1407, 0x48080100, + 0x480a5a0c, 0x48025a00, 0x492e5801, 0x599c100b, + 0x480a5808, 0x599c180c, 0x480e5809, 0x64065c10, + 0x599c0c09, 0x48065c0a, 0x05e1ff3e, 0x42000000, + 0x00111dfa, 0x452c0000, 0x64073008, 0x492fc840, + 0x642bc842, 0x05011000, 0x412ee800, 0x492e5800, + 0x492de012, 0x4a025803, 0xffff0000, 0x60040000, + 0x8d0c0516, 0x05020006, 0x599c0211, 0x82001480, + 0x00000100, 0x05f6106b, 0x599c1018, 0x48025a09, + 0x600000bc, 0x599c1207, 0x48080000, 0x480a5c09, + 0x48025c08, 0x599c100d, 0x480a5806, 0x599c180e, + 0x480e5807, 0x599c0a09, 0x48065a08, 0x599c0818, + 0x8c040532, 0x05000009, 0x6405e20a, 0x599c021a, + 0x4801e411, 0x42000000, 0x00102f76, 0x50000000, + 0x4801e210, 0x0501f009, 0x599c0a1a, 0x90040486, + 0x05001002, 0x60040800, 0x82040c00, 0x00102f73, + 0x50040000, 0x4801e210, 0x599c0818, 0x599c141a, + 0x8c040526, 0x05000002, 0x8408157e, 0x8c040524, + 0x05000002, 0x8408157c, 0x8c040528, 0x05000003, + 0x82081540, 0x20000000, 0x4809e00b, 0x480a5801, + 0x480bb01f, 0x480bb11f, 0x599c0211, 0x82000400, + 0x00111efa, 0x44080000, 0x42000000, 0x00112324, + 0x50000000, 0x48080006, 0x42000000, 0x00112323, + 0x50000000, 0x48080006, 0x0511fca8, 0x050dfe12, + 0x599c0201, 0x48035004, 0x05e9fd7f, 0x599c020a, + 0x800001c0, 0x05000003, 0x48035066, 0x0501f003, + 0x4a035066, 0x000000c8, 0x8d0c0520, 0x05000006, + 0x599c0413, 0x90000c82, 0x05f4101e, 0x0521f8bf, + 0x417a5000, 0x599c0003, 0x599c0804, 0x9c0001c0, + 0x9c0409c0, 0x48024801, 0x48064802, 0x48035002, + 0x48075003, 0x599c1017, 0x8c08051c, 0x05000006, + 0x599c0005, 0x599c0806, 0x9c0001c0, 0x9c0409c0, + 0x0501f003, 0x82000500, 0xf0ffffff, 0x48024803, + 0x48064804, 0x48035000, 0x48075001, 0x42001000, + 0x00111ce0, 0x48001000, 0x48041001, 0x42001000, + 0x00111ced, 0x48001000, 0x48041001, 0x59a00207, + 0xb0000588, 0x050200b0, 0x0501fe53, 0x05020003, + 0x640b4407, 0x05f1f7f2, 0x60400800, 0x59a00208, + 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, + 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x82081400, + 0x00000080, 0xb0083400, 0x481b4002, 0x900c3440, + 0x481b4003, 0x912c0408, 0x0501fe5f, 0x4a01d809, + 0x00104306, 0x1c01f000, 0x05fdfccb, 0x05f007d3, + 0x58ee580d, 0x592c1008, 0x480bc857, 0x80080120, + 0x42024800, 0x001124b6, 0x48024c06, 0x82081500, + 0x0000ffff, 0x599c0818, 0x90040d30, 0x90040580, + 0x05020004, 0xb00804be, 0x05f217d2, 0x0501f001, + 0x0549fd78, 0x05000014, 0x82080480, 0x00000100, + 0x05f217cc, 0x42000000, 0x001124b5, 0x44080000, + 0x800811c0, 0x05f007c7, 0x40080800, 0x42024800, + 0x001124b6, 0x912e5c09, 0x592c0400, 0x8c000506, + 0x05020012, 0x59240200, 0x84000500, 0x48024a00, + 0x0501f00e, 0x82080480, 0x000000ff, 0x05f217b9, + 0x80080800, 0x42000000, 0x001124b5, 0x44040000, + 0x800811c0, 0x05000068, 0x42024800, 0x001124c3, + 0x80040840, 0x912e5c09, 0x600c4000, 0x592c0400, + 0x8c000506, 0x05000012, 0x59a810d6, 0x90081506, + 0x05f207a8, 0x8c00050a, 0x05020003, 0x8d0c0520, + 0x05f007a4, 0x64164a00, 0x90001503, 0x05000006, + 0x840011c0, 0x82081500, 0x000000ff, 0x480a4a08, + 0x0501f003, 0x82000500, 0x000000ff, 0x48024c00, + 0x592c0001, 0x592c1002, 0x9c0001c0, 0x9c0811c0, + 0x48024801, 0x480a4802, 0x599c1817, 0x8c0c051c, + 0x05000006, 0x592c0003, 0x592c1004, 0x9c0001c0, + 0x9c0811c0, 0x0501f003, 0x82000500, 0xf0ffffff, + 0x48024803, 0x480a4804, 0x912e5c05, 0x91264c0d, + 0x80040840, 0x05000019, 0x80204040, 0x05fe07d4, + 0x48074000, 0x49274001, 0x603c0800, 0x59a01002, + 0x59a01803, 0x9008343c, 0x481b4002, 0x900c3440, + 0x481b4003, 0x58ee580d, 0x912c0408, 0x0501fdee, + 0x4a01d809, 0x00104377, 0x1c01f000, 0x05fdfc5a, + 0x05f00762, 0x58ee580d, 0x912e5c08, 0x59a00800, + 0x59a24801, 0x05fdf7bd, 0x0549fd12, 0x05000010, + 0x42006800, 0x001124b6, 0x4200b000, 0x001124b5, + 0x5058b000, 0x58340400, 0x8c000506, 0x05000005, + 0x58340200, 0x8400055e, 0x48006a00, 0x0501f004, + 0x90346c0d, 0x8058b040, 0x05fe07f7, 0x42006800, + 0x001124b6, 0x4200b000, 0x001124b5, 0x5058b000, + 0x8058b040, 0x05000008, 0x42024800, 0x001124c3, + 0x58340206, 0x48024a06, 0x91264c0d, 0x8058b040, + 0x05fe07fc, 0x599c1019, 0x82081500, 0x0000e000, + 0x497b4208, 0x05edfc5f, 0x05000012, 0x05edfc44, + 0x64074208, 0x0502000f, 0x4c080000, 0x05edfc4b, + 0x5c001000, 0x05020007, 0x640b4208, 0x82080580, + 0x00008000, 0x05020007, 0x64134208, 0x0501f005, + 0x640f4208, 0x90080580, 0x05020002, 0x64174208, + 0x90080580, 0x05020007, 0x6403506c, 0x60040000, + 0x05edfa0d, 0x60040000, 0x05edf9db, 0x0501f02b, + 0x82080580, 0x00002000, 0x05020008, 0x6407506c, + 0x60000000, 0x05edfa04, 0x60000000, 0x05edf9d2, + 0x05edfdc9, 0x0501f021, 0x82080580, 0x00004000, + 0x05020004, 0x640b506c, 0x64075078, 0x05fdf7f9, + 0x82080580, 0x00006000, 0x0502000f, 0x59a80895, + 0x82040d80, 0x01391077, 0x05020004, 0x59e00813, + 0x8c040500, 0x05f20713, 0x640f506c, 0x60080000, + 0x05edf9ed, 0x60080000, 0x05edf9bb, 0x05fdf7e9, + 0x0501f00a, 0x82080580, 0x00008000, 0x05f20709, + 0x05edfdbc, 0x6413506c, 0x600c0000, 0x05edf9e2, + 0x600c0000, 0x05edf9b0, 0x599c1019, 0x82081500, + 0x0000e000, 0x4c080000, 0x0501fed2, 0x5c001000, + 0x05020004, 0x82080580, 0x00004000, 0x0500000b, + 0x0501fea0, 0x05000003, 0x0501feb5, 0x05020009, + 0x82080580, 0x00008000, 0x05000004, 0x82080580, + 0x00004000, 0x05020003, 0x600010c0, 0x0501f004, + 0x599c0019, 0x8c000518, 0x05000005, 0x8008111a, + 0x480b5079, 0x640b506c, 0x64075078, 0x599c0019, + 0x8c000520, 0x05000001, 0x4a035044, 0x0000aaaa, + 0x599c1018, 0x90081530, 0x90080d80, 0x05000005, + 0x90080d90, 0x05000008, 0x90080da0, 0x05020002, + 0x48075044, 0x0501fdde, 0x05000007, 0x4803c856, + 0x850e1d46, 0x05e9ff99, 0x59a80050, 0x80040540, + 0x48035050, 0x49f3c857, 0x42001000, 0x001062e8, + 0x0519feb3, 0x42001000, 0x001062db, 0x051df83b, + 0x4a038805, 0xffffffff, 0x0501fe8b, 0x05000008, + 0x599c1019, 0x8c08053c, 0x05020005, 0x4a03c014, + 0x00400040, 0x4a03c013, 0x00400000, 0x59a0001e, + 0x84000540, 0x4803401e, 0x8d0c0538, 0x05020008, + 0x42000800, 0x0010e380, 0x82041400, 0x00003800, + 0x05e1fdad, 0x480b500d, 0x481b500e, 0x49f3c857, + 0x59a802e2, 0x48034209, 0x59a804e2, 0x48034409, + 0x05f1f664, 0x00000018, 0x0000000c, 0x00000018, + 0x00000020, 0x916c0580, 0x05020003, 0x601c0800, + 0x05f1f69f, 0x60800800, 0x59a00408, 0x59a01208, + 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, + 0x900c19c0, 0x800c1d40, 0x419c0000, 0x0501f51b, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f690, + 0x050dff44, 0x05020003, 0x645b4407, 0x05f1f68c, + 0x59a800b7, 0x8c000500, 0x0500000e, 0x64034407, + 0x60800800, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x42000000, 0x001141fc, 0x0501f503, + 0x64074407, 0x6080b000, 0x4200a800, 0x001141fc, + 0x4200a000, 0xffffffff, 0x4450a800, 0x8054a800, + 0x8058b040, 0x05fe07fd, 0x4d440000, 0x4d340000, + 0x42028800, 0xffffffff, 0x42002000, 0xffffffff, + 0x60043000, 0x60043800, 0x42001800, 0x001141fc, + 0x59a81040, 0x82081500, 0x000000ff, 0x40180000, + 0x0c01f001, 0x00104485, 0x00104488, 0x0010448c, + 0x00104490, 0x82102500, 0xffffff00, 0x0501f014, + 0x82102500, 0xffff00ff, 0x840811c0, 0x0501f010, + 0x82102500, 0xff00ffff, 0x900811c0, 0x0501f00c, + 0x82102500, 0x00ffffff, 0x9c0801c0, 0x80102540, + 0x44101800, 0x42003000, 0xffffffff, 0x42002000, + 0xffffffff, 0x800c1800, 0x0501f003, 0x40080000, + 0x80102540, 0x81468800, 0xb1442cbf, 0x05021014, + 0x4c100000, 0x4c080000, 0x4c0c0000, 0x4c180000, + 0x4c1c0000, 0x0001fb08, 0x5c003800, 0x5c003000, + 0x5c001800, 0x5c001000, 0x5c002000, 0x05fe07f2, + 0x050df84e, 0x05fe07f0, 0x80183000, 0x801c3800, + 0x59341202, 0x40180000, 0x0c01f7cf, 0x82100580, + 0xffffffff, 0x05000002, 0x44101800, 0x42001800, + 0x001141fc, 0x500c0000, 0x82000500, 0xffffff00, + 0x801c0540, 0x44001800, 0x5c026800, 0x5c028800, + 0x60800800, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x42000000, 0x001141fc, 0x0501f49f, + 0x59a28c07, 0x0501fd55, 0x05f2061a, 0x59a0020c, + 0x8c000500, 0x0500000c, 0x59a01209, 0x59a00409, + 0x82000500, 0x000000ff, 0x900001c0, 0x80081540, + 0x41784000, 0x0509fea6, 0x05000005, 0x48034407, + 0x05f1f60c, 0x050df865, 0x05f2060a, 0x0501fc62, + 0x05020003, 0x640b4407, 0x05f1f601, 0x59a0020c, + 0x8c000500, 0x05000003, 0x050df814, 0x05020512, + 0x59a0020c, 0x8c000502, 0x05000018, 0x83440480, + 0x000007f0, 0x05001004, 0x83440480, 0x00000800, + 0x05001012, 0x050df812, 0x05020010, 0x497a5a08, + 0x4a025c08, 0x00008000, 0x59a24805, 0x0535fe0d, + 0x05020003, 0x640f4407, 0x05f1f5e9, 0x4a01d809, + 0x001044fe, 0x1c01f000, 0x59a28c07, 0x59a2440b, + 0x050df842, 0x05f205e7, 0x4c580000, 0x4c500000, 0x4c540000, 0x6028b000, 0x4134a000, 0x912e5c05, - 0x412ca800, 0x0545fd22, 0x912cac06, 0x4054a000, - 0x6010b000, 0x0545fd59, 0x5c00a800, 0x5c00a000, + 0x412ca800, 0x0549fb19, 0x912cac06, 0x4054a000, + 0x6010b000, 0x0549fb50, 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x592c0802, 0x82040500, 0x00ff00ff, 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540, 0x48025802, 0x592c0801, 0x82040500, 0x00ff00ff, 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540, 0x48025801, 0x60280800, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, - 0x900c19c0, 0x800c1d40, 0x412c0000, 0x0501f421, - 0x496fc857, 0x496f4407, 0x497b4208, 0x05edfbd5, - 0x05000015, 0x05edfbba, 0x64074208, 0x05020012, - 0x4c080000, 0x05edfbc1, 0x5c001000, 0x05020008, - 0x640b4208, 0x916c0580, 0x0500000b, 0x05e9ffbd, + 0x900c19c0, 0x800c1d40, 0x412c0000, 0x0501f43f, + 0x496fc857, 0x496f4407, 0x497b4208, 0x05edfad1, + 0x05000015, 0x05edfab6, 0x64074208, 0x05020012, + 0x4c080000, 0x05edfabd, 0x5c001000, 0x05020008, + 0x640b4208, 0x916c0580, 0x0500000b, 0x05e9feb9, 0x05020009, 0x64134208, 0x0501f007, 0x640f4208, - 0x916c0580, 0x05000004, 0x05e9ffa4, 0x05020002, - 0x64174208, 0x05f1f637, 0x59a28c07, 0x0501fcc2, - 0x05f2067c, 0x0509feb4, 0x05f2067a, 0x916c0583, - 0x05000003, 0x641f4407, 0x05f1f671, 0x91340c06, + 0x916c0580, 0x05000004, 0x05e9fea0, 0x05020002, + 0x64174208, 0x05f1f55b, 0x59a28c07, 0x0501fcdb, + 0x05f205a0, 0x0509fff9, 0x05f2059e, 0x916c0583, + 0x05000003, 0x641f4407, 0x05f1f595, 0x91340c06, 0x59a0020c, 0x8c000500, 0x05000002, 0x91340c08, 0x58040001, 0x4803440a, 0x900001c0, 0x4803420a, 0x50040000, 0x48034408, 0x900001c0, 0x48034208, - 0x59340200, 0x48034407, 0x05f1f61e, 0x8d0c050e, - 0x05000003, 0x64074407, 0x05f1f65d, 0x59a0220c, + 0x59340200, 0x48034407, 0x05f1f542, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05f1f581, 0x59a0220c, 0x8c100500, 0x05020021, 0x8c100506, 0x05020004, - 0x59a03209, 0x90180483, 0x05f2165a, 0x59a28c07, - 0x0001fb00, 0x05f20657, 0x0509fe3b, 0x05000003, - 0x64274407, 0x05f1f64e, 0x0501fbb1, 0x05020003, - 0x640b4407, 0x05f1f64a, 0x59a0220c, 0x8c100506, + 0x59a03209, 0x90180483, 0x05f2157e, 0x59a28c07, + 0x0001fb08, 0x05f2057b, 0x0509ff80, 0x05000003, + 0x64274407, 0x05f1f572, 0x0501fbcf, 0x05020003, + 0x640b4407, 0x05f1f56e, 0x59a0220c, 0x8c100506, 0x05000004, 0x59343002, 0x82183500, 0x00ffffff, - 0x497a5a08, 0x4a025c08, 0x00008000, 0x0535f938, - 0x05020003, 0x640f4407, 0x05f1f63d, 0x4a01d809, - 0x0010443c, 0x1c01f000, 0x59a28c07, 0x0001fb00, - 0x05f2063c, 0x0509fe20, 0x05000003, 0x64274407, - 0x05f1f633, 0x0501fb96, 0x05020003, 0x640b4407, - 0x05f1f62f, 0x497a5a08, 0x4a025c08, 0x00008000, - 0x0501fb8f, 0x05020003, 0x640b4407, 0x05f1f628, - 0x592e5800, 0x0535f931, 0x05020003, 0x640f4407, - 0x05f1f623, 0x4a01d809, 0x0010441c, 0x1c01f000, + 0x497a5a08, 0x4a025c08, 0x00008000, 0x0535fd4d, + 0x05020003, 0x640f4407, 0x05f1f561, 0x4a01d809, + 0x001045c0, 0x1c01f000, 0x59a28c07, 0x0001fb08, + 0x05f20560, 0x0509ff65, 0x05000003, 0x64274407, + 0x05f1f557, 0x0501fbb4, 0x05020003, 0x640b4407, + 0x05f1f553, 0x497a5a08, 0x4a025c08, 0x00008000, + 0x0501fbad, 0x05020003, 0x640b4407, 0x05f1f54c, + 0x592e5800, 0x0535fd46, 0x05020003, 0x640f4407, + 0x05f1f547, 0x4a01d809, 0x001045a0, 0x1c01f000, 0x592c2809, 0x82140d80, 0x01000000, 0x05020003, - 0x64134407, 0x05f1f61a, 0x60200800, 0x59a00208, + 0x64134407, 0x05f1f53e, 0x60200800, 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x912c0409, - 0x0501fb9c, 0x8c140500, 0x05000003, 0x4a01d809, - 0x00104432, 0x1c01f000, 0x05fdfa29, 0x05f005ff, - 0x58ee580e, 0x812e59c0, 0x05e009a4, 0x60200800, - 0x912c0409, 0x58ec1007, 0x58ec1808, 0x0501f38d, + 0x0501fbba, 0x8c140500, 0x05000003, 0x4a01d809, + 0x001045b6, 0x1c01f000, 0x05fdfa1b, 0x05f00523, + 0x58ee580e, 0x812e59c0, 0x05e0085b, 0x60200800, + 0x912c0409, 0x58ec1007, 0x58ec1808, 0x0501f3ab, 0x592c0009, 0x82000580, 0x01000000, 0x05020003, - 0x64134407, 0x05f1f5fa, 0x59a00208, 0x59a01408, + 0x64134407, 0x05f1f51e, 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x60180800, 0x912c040a, - 0x0501f37c, 0x59a00a0b, 0x800409c0, 0x05f005f1, + 0x0501f39a, 0x59a00a0b, 0x800409c0, 0x05f00515, 0x82040480, 0x00000081, 0x05001002, 0x60000801, 0x59c40085, 0x59881004, 0x80081400, 0x480b1004, - 0x497b8885, 0x59c400b1, 0x59a810a9, 0x80080400, - 0x48031022, 0x59c400b2, 0x59a810aa, 0x80080400, + 0x497b8885, 0x59c400b1, 0x59a810ae, 0x80080400, + 0x48031022, 0x59c400b2, 0x59a810af, 0x80080400, 0x48031021, 0x59c400a2, 0x82000500, 0x0000ffff, - 0x48031023, 0x598810bc, 0x598800bd, 0x80081400, - 0x598800be, 0x80081400, 0x598800bf, 0x80081400, - 0x59880122, 0x80081400, 0x598800c0, 0x80081400, - 0x5988013c, 0x80081400, 0x5988013a, 0x80081400, - 0x59880139, 0x80081400, 0x480b1024, 0x59a00208, + 0x59881023, 0x80080400, 0x05021002, 0x81780040, + 0x48031023, 0x598810bf, 0x598800c0, 0x80081400, + 0x598800c1, 0x80081400, 0x598800c2, 0x80081400, + 0x59880125, 0x80081400, 0x598800c3, 0x80081400, + 0x59880145, 0x80081400, 0x5988014b, 0x80081400, + 0x59880157, 0x80081400, 0x5988014e, 0x80081400, + 0x5988013f, 0x80081400, 0x5988013d, 0x80081400, + 0x5988013c, 0x80081400, 0x480b1024, 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x91880400, - 0x0501fb48, 0x4a01d809, 0x00104484, 0x1c01f000, - 0x05fdf9d7, 0x05f005ad, 0x59a0020c, 0x8c000500, + 0x0501fb5a, 0x4a01d809, 0x00104614, 0x1c01f000, + 0x05fdf9bd, 0x05f004c5, 0x59a0020c, 0x8c000500, 0x05000006, 0x91880400, 0x4803c840, 0x641bc842, 0x05011000, 0x497b8885, 0x4a034208, 0x00000080, - 0x05f1f568, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f1f5a7, 0x0501fbf0, 0x05f205aa, 0x0501fb08, - 0x05020003, 0x640b4407, 0x05f1f5a1, 0x497a5a08, + 0x05f1f480, 0x8d0c050e, 0x05000003, 0x64074407, + 0x05f1f4bf, 0x0501fbfd, 0x05f204c2, 0x0501fb1a, + 0x05020003, 0x640b4407, 0x05f1f4b9, 0x497a5a08, 0x4a025c08, 0x00008000, 0x59a00407, 0x800001c0, - 0x05f005a0, 0x82001580, 0x000000ff, 0x05000003, - 0x90001484, 0x05f2159b, 0x40001000, 0x59a24805, - 0x05edfe03, 0x05020003, 0x640f4407, 0x05f1f590, - 0x4a01d809, 0x001044af, 0x1c01f000, 0x592c0009, - 0x82000580, 0x01000000, 0x05f20546, 0x64134407, - 0x05f1f587, 0x59a01407, 0x8c080508, 0x05020005, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f580, - 0x59a01c08, 0x820c0480, 0x00001000, 0x05f21581, + 0x05f004b8, 0x82001580, 0x000000ff, 0x05000003, + 0x90001484, 0x05f214b3, 0x40001000, 0x59a24805, + 0x05edfd06, 0x05020003, 0x640f4407, 0x05f1f4a8, + 0x4a01d809, 0x0010463f, 0x1c01f000, 0x592c0009, + 0x82000580, 0x01000000, 0x05f2045e, 0x64134407, + 0x05f1f49f, 0x59a01407, 0x8c080508, 0x05020005, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f498, + 0x59a01c08, 0x820c0480, 0x00001000, 0x05f21499, 0x497b2804, 0x497b2805, 0x497b2826, 0x497b2827, - 0x497b2829, 0x497b282a, 0x497b282c, 0x497b282d, + 0x497b282a, 0x497b282b, 0x497b282d, 0x497b282e, 0x4803c856, 0x850e1d06, 0x8c080500, 0x05000004, 0x4803c856, 0x910e1d51, 0x0501f004, 0x8c080506, 0x05000002, 0x850e1d42, 0x850e1d0a, 0x6006d800, 0x82081500, 0x000000e0, 0x8008010a, 0x0c02002d, - 0x050dfbd6, 0x05020008, 0x64075042, 0x4a035041, - 0x0000aaaa, 0x050dfb54, 0x0501f01b, 0x64035042, - 0x05fdf7fb, 0x050dfbd9, 0x05fc07f8, 0x0505fc24, - 0x0521fb71, 0x050dfbc9, 0x05020003, 0x60000000, - 0x050dfb9f, 0x59a00a08, 0x480788a7, 0x59c400a3, + 0x050dfd30, 0x05020008, 0x64075045, 0x4a035044, + 0x0000aaaa, 0x050dfca8, 0x0501f01b, 0x64035045, + 0x05fdf7fb, 0x050dfd33, 0x05fc07f8, 0x0505fc8b, + 0x0521fe9f, 0x050dfd23, 0x05020003, 0x60000000, + 0x050dfcf3, 0x59a00a08, 0x480788a7, 0x59c400a3, 0x82000500, 0xfeffffff, 0x82000540, 0x80018000, 0x40000800, 0x84040d20, 0x480388a3, 0x480788a3, - 0x497b5064, 0x60b40800, 0x42001000, 0x00105184, - 0x0519f991, 0x59a00408, 0x800000c2, 0x800008c4, - 0x8005d400, 0x61fc01ff, 0x050dfbb0, 0x05000003, - 0x59a00208, 0x80000110, 0x0501fb98, 0x05f1f4f5, - 0x001044d8, 0x001044da, 0x001044e1, 0x00102a40, - 0x001044df, 0x00102a40, 0x00102a40, 0x00102a40, - 0x916c0583, 0x05000003, 0x641f4407, 0x05f1f52c, - 0x0501fb75, 0x05f2052f, 0x59a00408, 0x59a00a08, + 0x497b5067, 0x60b40800, 0x42001000, 0x0010537b, + 0x0519fc1b, 0x59a00408, 0x800000c2, 0x800008c4, + 0x8005d400, 0x61fc01ff, 0x050dfd0a, 0x05000003, + 0x59a00208, 0x80000110, 0x0501fba5, 0x05f1f40d, + 0x00104668, 0x0010466a, 0x00104671, 0x00102ae8, + 0x0010466f, 0x00102ae8, 0x00102ae8, 0x00102ae8, + 0x916c0583, 0x05000003, 0x641f4407, 0x05f1f444, + 0x0501fb82, 0x05f20447, 0x59a00408, 0x59a00a08, 0x900409c0, 0x80040d40, 0x4805d807, 0x59a0040a, 0x59a00a0a, 0x900409c0, 0x80040d40, 0x4805d808, - 0x6401d801, 0x0501fa82, 0x05020003, 0x640b4407, - 0x05f1f51b, 0x417a8800, 0x497b4001, 0x912c0409, - 0x48034002, 0x59a00407, 0x8c000504, 0x05020088, + 0x6401d801, 0x0501fa94, 0x05020003, 0x640b4407, + 0x05f1f433, 0x417a8800, 0x497b4001, 0x912c0409, + 0x48034002, 0x59a00407, 0x8c000504, 0x05020091, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4178b800, - 0x59a0c407, 0x59a0c802, 0x59a2440b, 0x0509fd4a, - 0x05020027, 0x0509fcf4, 0x05000003, 0x0509fb8f, + 0x59a0c407, 0x59a0c802, 0x59a2440b, 0x0509fe83, + 0x05020027, 0x0509fe2d, 0x05000003, 0x0509fc71, 0x05020023, 0x8c60053e, 0x05020020, 0x8c600500, 0x05000008, 0x59340009, 0x4400c800, 0x8064c800, 0x59340008, 0x4400c800, 0x8064c800, 0x0501f007, 0x59340007, 0x4400c800, 0x8064c800, 0x59340006, 0x4400c800, 0x8064c800, 0x83440580, 0x000007fe, 0x0500000b, 0x83440580, 0x000007fc, 0x05000008, - 0x0509fce5, 0x05000003, 0x85468d5e, 0x0501f004, - 0x0509fa7b, 0x05020002, 0x85468d5e, 0x4544c800, + 0x0509fe1e, 0x05000003, 0x85468d5e, 0x0501f004, + 0x0509fb55, 0x05020002, 0x85468d5e, 0x4544c800, 0x85468d1e, 0x8064c800, 0x905cbc0c, 0x81468800, - 0x83440480, 0x000007f0, 0x0500100c, 0x8c600506, - 0x05000025, 0x83440580, 0x000007f0, 0x05020003, - 0x61fa880f, 0x0501f005, 0x83440580, 0x000007ff, - 0x0502001d, 0x61f2880f, 0x905c05bc, 0x05fe07c8, + 0x83440480, 0x000007f0, 0x05001015, 0x83440480, + 0x00000800, 0x05001005, 0x59a800ad, 0x81440480, + 0x0500100f, 0x0501f029, 0x8c600506, 0x05000009, + 0x83440580, 0x000007f0, 0x05020003, 0x61fa880f, + 0x0501f007, 0x83440580, 0x000007ff, 0x05000003, + 0x60028810, 0x0501f002, 0x61f2880f, 0x905c05bc, + 0x05fe07bf, 0x59a00001, 0x805c0400, 0x48034001, + 0x8c60053e, 0x05020007, 0x59a00a0b, 0x800409c0, + 0x05000006, 0x80040480, 0x05021004, 0x8460c57e, + 0x4178b800, 0x05fdf7b2, 0x49474000, 0x485dd805, + 0x59a00002, 0x4801d803, 0x40ec1000, 0x0001f829, + 0x4a01d809, 0x00104744, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x8c60053e, 0x05020019, + 0x805cb9c0, 0x05000021, 0x59a00001, 0x805c0400, + 0x48034001, 0x59a00a0b, 0x800409c0, 0x05000005, + 0x80040480, 0x05021003, 0x4178b800, 0x0501f00d, + 0x59a00801, 0x48074407, 0x485dd805, 0x59a00002, + 0x4801d803, 0x4a01d809, 0x00102a9d, 0x40ec1000, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x0001f029, + 0x59a00001, 0x805c0c00, 0x59a0020b, 0x80040480, + 0x48034208, 0x642b4407, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x05f1f3a6, 0x59a00801, 0x48074407, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x05f1f35d, + 0x05fdf88d, 0x05f00395, 0x59a28800, 0x05fdf771, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4178b800, + 0x59a0c407, 0x59a0c802, 0x59a2440b, 0x0509fdf3, + 0x05020029, 0x0509fd9d, 0x05000003, 0x0509fbe1, + 0x05020025, 0x8c60053e, 0x05020022, 0x83440580, + 0x000007fe, 0x0500000f, 0x83440580, 0x000007fc, + 0x0500000c, 0x0509fd9d, 0x05000005, 0x59340403, + 0x8400055e, 0x48026c03, 0x0501f006, 0x0509fad2, + 0x05020004, 0x59340403, 0x8400055e, 0x48026c03, + 0x4134a000, 0x4064a800, 0x6018b000, 0x0549f8b7, + 0x59340007, 0x4400a800, 0x59340006, 0x4800a801, + 0x59340009, 0x4800a802, 0x59340008, 0x4800a803, + 0x59340403, 0x8400051e, 0x48026c03, 0x9064cc0a, + 0x905cbc28, 0x81468800, 0x83440480, 0x000007f0, + 0x05001015, 0x83440480, 0x00000800, 0x05001005, + 0x59a800ad, 0x81440480, 0x0500100f, 0x0501f02a, + 0x8c600506, 0x05000009, 0x83440580, 0x000007f0, + 0x05020003, 0x61fa880f, 0x0501f007, 0x83440580, + 0x000007ff, 0x05000003, 0x60028810, 0x0501f002, + 0x61f2880f, 0x905c05a8, 0x05000002, 0x05fdf7bb, 0x59a00001, 0x805c0400, 0x48034001, 0x8c60053e, 0x05020007, 0x59a00a0b, 0x800409c0, 0x05000006, 0x80040480, 0x05021004, 0x8460c57e, 0x4178b800, - 0x05fdf7bb, 0x49474000, 0x485dd805, 0x59a00002, - 0x4801d803, 0x40ec1000, 0x0001f821, 0x4a01d809, - 0x001045ab, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x05fdf7ae, 0x49474000, 0x485dd805, 0x59a00002, + 0x4801d803, 0x40ec1000, 0x0001f829, 0x4a01d809, + 0x001047d7, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x8c60053e, 0x05020019, 0x805cb9c0, 0x05000021, 0x59a00001, 0x805c0400, 0x48034001, 0x59a00a0b, 0x800409c0, 0x05000005, 0x80040480, 0x05021003, 0x4178b800, 0x0501f00d, 0x59a00801, 0x48074407, 0x485dd805, 0x59a00002, 0x4801d803, - 0x4a01d809, 0x001029f5, 0x40ec1000, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x0001f021, 0x59a00001, + 0x4a01d809, 0x00102a9d, 0x40ec1000, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x0001f029, 0x59a00001, 0x805c0c00, 0x59a0020b, 0x80040480, 0x48034208, 0x642b4407, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x05f1f497, 0x59a00801, 0x48074407, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x05f1f44e, 0x05fdf8b0, - 0x05f00486, 0x59a28800, 0x05fdf77a, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x4178b800, 0x59a0c407, - 0x59a0c802, 0x59a2440b, 0x0509fcc3, 0x05020029, - 0x0509fc6d, 0x05000003, 0x0509fb08, 0x05020025, - 0x8c60053e, 0x05020022, 0x83440580, 0x000007fe, - 0x0500000f, 0x83440580, 0x000007fc, 0x0500000c, - 0x0509fc6d, 0x05000005, 0x59340403, 0x8400055e, - 0x48026c03, 0x0501f006, 0x0509fa01, 0x05020004, - 0x59340403, 0x8400055e, 0x48026c03, 0x4134a000, - 0x4064a800, 0x6018b000, 0x0545fad5, 0x59340007, - 0x4400a800, 0x59340006, 0x4800a801, 0x59340009, - 0x4800a802, 0x59340008, 0x4800a803, 0x59340403, - 0x8400051e, 0x48026c03, 0x9064cc0a, 0x905cbc28, - 0x81468800, 0x83440480, 0x000007f0, 0x0500100c, - 0x8c600506, 0x05000026, 0x83440580, 0x000007f0, - 0x05020003, 0x61fa880f, 0x0501f005, 0x83440580, - 0x000007ff, 0x0502001e, 0x61f2880f, 0x905c05a8, - 0x05000002, 0x05fdf7c4, 0x59a00001, 0x805c0400, - 0x48034001, 0x8c60053e, 0x05020007, 0x59a00a0b, - 0x800409c0, 0x05000006, 0x80040480, 0x05021004, - 0x8460c57e, 0x4178b800, 0x05fdf7b7, 0x49474000, - 0x485dd805, 0x59a00002, 0x4801d803, 0x40ec1000, - 0x0001f821, 0x4a01d809, 0x00104635, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x8c60053e, - 0x05020019, 0x805cb9c0, 0x05000021, 0x59a00001, - 0x805c0400, 0x48034001, 0x59a00a0b, 0x800409c0, - 0x05000005, 0x80040480, 0x05021003, 0x4178b800, - 0x0501f00d, 0x59a00801, 0x48074407, 0x485dd805, - 0x59a00002, 0x4801d803, 0x4a01d809, 0x001029f5, + 0x05f1f313, 0x59a00801, 0x48074407, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x05f1f2ca, 0x05f9fffa, + 0x05f00302, 0x59a28800, 0x05fdf76e, 0x61f82800, + 0x59a00c07, 0x59a01208, 0x59a01c08, 0x59a0220a, + 0x82040500, 0x0000ff00, 0x840001c0, 0x900034a0, + 0x05f01304, 0x80140480, 0x05f01302, 0x82040500, + 0x000000ff, 0x900034a0, 0x05f012fe, 0x80140480, + 0x05f012fc, 0x82080500, 0x0000ff00, 0x840001c0, + 0x900034a0, 0x05f012f7, 0x80140480, 0x05f012f5, + 0x82080500, 0x000000ff, 0x900034a0, 0x05f012f1, + 0x80140480, 0x05f012ef, 0x820c0500, 0x0000ff00, + 0x840001c0, 0x900034a0, 0x05f012ea, 0x80140480, + 0x05f012e8, 0x820c0500, 0x000000ff, 0x900034a0, + 0x05f012e4, 0x80140480, 0x05f012e2, 0x82100500, + 0x0000ff00, 0x840001c0, 0x900034a0, 0x05f012dd, + 0x80140480, 0x05f012db, 0x82100500, 0x000000ff, + 0x900034a0, 0x05f012d7, 0x80140480, 0x05f012d5, + 0x900401c0, 0x80080d40, 0x900c01c0, 0x80101d40, + 0xb1a83422, 0x44043000, 0x80183000, 0x440c3000, + 0x05f1f284, 0x916c0583, 0x05000003, 0x641f4407, + 0x05f1f2c3, 0x0501fa01, 0x05f202c6, 0x49234003, + 0x59a00408, 0x59a00a08, 0x900409c0, 0x80040d40, + 0x4805d807, 0x59a0040a, 0x59a00a0a, 0x900409c0, + 0x80040d40, 0x4805d808, 0x6401d801, 0x0501f912, + 0x05020003, 0x640b4407, 0x05f1f2b1, 0x417a8800, + 0x497b4001, 0x912c0408, 0x48034002, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4178b800, 0x4178c800, + 0x59a0c002, 0x0509fd05, 0x0502000a, 0x0509fcaf, + 0x05020008, 0x8c64053e, 0x05020005, 0x59340002, + 0x4800c000, 0x4944c001, 0x9060c402, 0x905cbc08, + 0x81468800, 0x59a800ad, 0x81440480, 0x0502101f, + 0xb05c0480, 0x05021002, 0x05fdf7ef, 0x59a00001, + 0x805c0400, 0x48034001, 0x8c64053e, 0x05000003, + 0x4178b800, 0x05fdf7e8, 0x59a00a0b, 0x800409c0, + 0x05000006, 0x80040480, 0x05021004, 0x4178b800, + 0x8464cd7e, 0x05fdf7e0, 0x49474000, 0x485dd805, + 0x59a00002, 0x4801d803, 0x40ec1000, 0x0001f829, + 0x4a01d809, 0x00104896, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x8c64053e, 0x0502001a, + 0x805cb9c0, 0x05000022, 0x59a00001, 0x805c0400, + 0x48034001, 0x59a00a0b, 0x800409c0, 0x05000005, + 0x80040480, 0x05021003, 0x4178b800, 0x0501f00e, + 0x59a00801, 0x80040906, 0x48074407, 0x485dd805, + 0x59a00002, 0x4801d803, 0x4a01d809, 0x00102a9d, 0x40ec1000, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x0001f021, 0x59a00001, 0x805c0c00, 0x59a0020b, + 0x0001f029, 0x59a00001, 0x805c0c00, 0x59a0020b, 0x80040480, 0x48034208, 0x642b4407, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x05f1f40d, 0x59a00801, - 0x48074407, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x05f1f3c4, 0x05fdf826, 0x05f003fc, 0x59a28800, - 0x05fdf777, 0x61f82800, 0x59a00c07, 0x59a01208, - 0x59a01c08, 0x59a0220a, 0x82040500, 0x0000ff00, - 0x840001c0, 0x900034a0, 0x05f013fe, 0x80140480, - 0x05f013fc, 0x82040500, 0x000000ff, 0x900034a0, - 0x05f013f8, 0x80140480, 0x05f013f6, 0x82080500, - 0x0000ff00, 0x840001c0, 0x900034a0, 0x05f013f1, - 0x80140480, 0x05f013ef, 0x82080500, 0x000000ff, - 0x900034a0, 0x05f013eb, 0x80140480, 0x05f013e9, - 0x820c0500, 0x0000ff00, 0x840001c0, 0x900034a0, - 0x05f013e4, 0x80140480, 0x05f013e2, 0x820c0500, - 0x000000ff, 0x900034a0, 0x05f013de, 0x80140480, - 0x05f013dc, 0x82100500, 0x0000ff00, 0x840001c0, - 0x900034a0, 0x05f013d7, 0x80140480, 0x05f013d5, - 0x82100500, 0x000000ff, 0x900034a0, 0x05f013d1, - 0x80140480, 0x05f013cf, 0x900401c0, 0x80080d40, - 0x900c01c0, 0x80101d40, 0xb1a8341f, 0x44043000, - 0x80183000, 0x440c3000, 0x05f1f37e, 0x916c0583, - 0x05000003, 0x641f4407, 0x05f1f3bd, 0x0501fa06, - 0x05f203c0, 0x49234003, 0x59a00408, 0x59a00a08, - 0x900409c0, 0x80040d40, 0x4805d807, 0x59a0040a, - 0x59a00a0a, 0x900409c0, 0x80040d40, 0x4805d808, - 0x6401d801, 0x0501f912, 0x05020003, 0x640b4407, - 0x05f1f3ab, 0x417a8800, 0x497b4001, 0x912c0408, - 0x48034002, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4178b800, 0x4178c800, 0x59a0c002, 0x0509fbde, - 0x0502000a, 0x0509fb88, 0x05020008, 0x8c64053e, - 0x05020005, 0x59340002, 0x4800c000, 0x4944c001, - 0x9060c402, 0x905cbc08, 0x81468800, 0x83440480, - 0x00000800, 0x0502101f, 0xb05c0480, 0x05021002, - 0x05fdf7ef, 0x59a00001, 0x805c0400, 0x48034001, - 0x8c64053e, 0x05000003, 0x4178b800, 0x05fdf7e8, - 0x59a00a0b, 0x800409c0, 0x05000006, 0x80040480, - 0x05021004, 0x4178b800, 0x8464cd7e, 0x05fdf7e0, - 0x49474000, 0x485dd805, 0x59a00002, 0x4801d803, - 0x40ec1000, 0x0001f821, 0x4a01d809, 0x001046f4, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x8c64053e, 0x0502001a, 0x805cb9c0, 0x05000022, - 0x59a00001, 0x805c0400, 0x48034001, 0x59a00a0b, - 0x800409c0, 0x05000005, 0x80040480, 0x05021003, - 0x4178b800, 0x0501f00e, 0x59a00801, 0x80040906, - 0x48074407, 0x485dd805, 0x59a00002, 0x4801d803, - 0x4a01d809, 0x001029f5, 0x40ec1000, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x0001f021, 0x59a00001, - 0x805c0c00, 0x59a0020b, 0x80040480, 0x48034208, - 0x642b4407, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x05f1f34f, 0x59a00801, 0x80040906, 0x48074407, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x05f1f305, - 0x05f9ff67, 0x05f0033d, 0x59a28800, 0x59a24003, - 0x59a24805, 0x05fdf79c, 0x8d0c050e, 0x05000003, - 0x64074407, 0x05f1f33e, 0x59a80249, 0x8c00050a, - 0x05020005, 0x8c000506, 0x05020003, 0x645b4407, - 0x05f1f337, 0x0501f980, 0x05f2033a, 0x0501f898, - 0x05020003, 0x640b4407, 0x05f1f331, 0x59a00c07, - 0x80040902, 0x59a00408, 0x59a01208, 0x900811c0, - 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, - 0x800c1d40, 0x912c0409, 0x0501f8a9, 0x4a01d809, - 0x0010471a, 0x1c01f000, 0x05f9ff41, 0x05f00317, - 0x58ee580d, 0x592c000d, 0x59a8383d, 0x0515f9af, - 0x05040df4, 0x05f2031f, 0x49474001, 0x481a6802, - 0x592c000e, 0x82001d80, 0x70000000, 0x05020005, - 0x0501f877, 0x0502000c, 0x640b4407, 0x05f1f310, - 0x82001d80, 0x72000000, 0x05f20312, 0x0501f870, - 0x0502086f, 0x0502086e, 0x05020003, 0x640b4407, - 0x05f1f307, 0x58ee580d, 0x4a025c08, 0x00008000, - 0x497a5a08, 0x592c320c, 0x80183102, 0x592c1801, - 0x4a001809, 0x01000000, 0x0531fe1a, 0x05020003, - 0x640f4407, 0x05f1f2fa, 0x4a01d809, 0x00104745, - 0x1c01f000, 0x592c4000, 0x592c0009, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f1f2f0, - 0x4c580000, 0x4c500000, 0x4c540000, 0x912c3c09, - 0x401ca000, 0x401ca800, 0x5820280e, 0x6008b000, - 0x82143580, 0x70000000, 0x05000002, 0x603cb000, - 0x0545f98a, 0x5c00a800, 0x5c00a000, 0x5c00b000, - 0x401c0000, 0x5820100a, 0x5820180b, 0x58202209, - 0x80102102, 0x82143580, 0x70000000, 0x05020005, - 0x90103482, 0x05f012db, 0x60080800, 0x0501f061, - 0x82143580, 0x72000000, 0x05f202d6, 0x901034aa, - 0x05f012d4, 0x603c0800, 0x0501f85a, 0x4a01d809, - 0x00104772, 0x1c01f000, 0x05f9fee9, 0x05f002bf, - 0x58ee580e, 0x592e5800, 0x912c0c09, 0x4c580000, - 0x4c500000, 0x4c540000, 0x4004a000, 0x4004a800, - 0x603cb000, 0x0545f965, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x40ec1000, 0x64001001, 0x64f01005, - 0x48041003, 0x0001f821, 0x4a01d809, 0x00104789, - 0x1c01f000, 0x05f9fed2, 0x05f002a8, 0x58ee580e, + 0x5c00c000, 0x5c00b800, 0x05f1f255, 0x59a00801, + 0x80040906, 0x48074407, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x05f1f20b, 0x05f9ff3b, 0x05f00243, + 0x59a28800, 0x59a24003, 0x59a24805, 0x05fdf79c, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f244, + 0x59a8024c, 0x8c00050a, 0x05020005, 0x8c000506, + 0x05020003, 0x645b4407, 0x05f1f23d, 0x0501f97b, + 0x05f20240, 0x0501f898, 0x05020003, 0x640b4407, + 0x05f1f237, 0x59a00c07, 0x80040902, 0x59a00408, + 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, + 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x912c0409, + 0x0501f8a9, 0x4a01d809, 0x001048bc, 0x1c01f000, + 0x05f9ff15, 0x05f0021d, 0x58ee580d, 0x592c000d, + 0x59a83840, 0x0515fbb9, 0x05040e6d, 0x05f20225, + 0x49474001, 0x481a6802, 0x592c000e, 0x82001d80, + 0x70000000, 0x05020005, 0x0501f877, 0x0502000c, + 0x640b4407, 0x05f1f216, 0x82001d80, 0x72000000, + 0x05f20218, 0x0501f870, 0x0502086f, 0x0502086e, + 0x05020003, 0x640b4407, 0x05f1f20d, 0x58ee580d, + 0x4a025c08, 0x00008000, 0x497a5a08, 0x592c320c, + 0x80183102, 0x592c1801, 0x4a001809, 0x01000000, + 0x0535fa11, 0x05020003, 0x640f4407, 0x05f1f200, + 0x4a01d809, 0x001048e7, 0x1c01f000, 0x592c4000, + 0x592c0009, 0x82000580, 0x01000000, 0x05020003, + 0x64134407, 0x05f1f1f6, 0x4c580000, 0x4c500000, + 0x4c540000, 0x912c3c09, 0x401ca000, 0x401ca800, + 0x5820280e, 0x6008b000, 0x82143580, 0x70000000, + 0x05000002, 0x603cb000, 0x0545ff63, 0x5c00a800, + 0x5c00a000, 0x5c00b000, 0x401c0000, 0x5820100a, + 0x5820180b, 0x58202209, 0x80102102, 0x82143580, + 0x70000000, 0x05020005, 0x90103482, 0x05f011e1, + 0x60080800, 0x0501f061, 0x82143580, 0x72000000, + 0x05f201dc, 0x901034aa, 0x05f011da, 0x603c0800, + 0x0501f85a, 0x4a01d809, 0x00104914, 0x1c01f000, + 0x05f9febd, 0x05f001c5, 0x58ee580e, 0x592e5800, 0x912c0c09, 0x4c580000, 0x4c500000, 0x4c540000, - 0x4004a000, 0x4004a800, 0x6030b000, 0x0545f94f, + 0x4004a000, 0x4004a800, 0x603cb000, 0x0545ff3e, 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x40ec1000, - 0x64001001, 0x64c01005, 0x48041003, 0x0001f821, - 0x4a01d809, 0x001029f5, 0x1c01f000, 0x05e1f9e3, - 0x0500000e, 0x497a5800, 0x58ec000d, 0x80000540, - 0x05020004, 0x492dd80d, 0x492dd80e, 0x0501f006, - 0x58ec000e, 0x48025800, 0x90000401, 0x452c0000, - 0x492dd80e, 0x912c0408, 0x492fc857, 0x4803c857, - 0x1c01f000, 0x4d2c0000, 0x58ec400d, 0x802041c0, - 0x05000007, 0x4823c857, 0x40225800, 0x592c4001, - 0x497a5801, 0x05e1f9d9, 0x05fdf7f9, 0x4979d80d, - 0x4979d80e, 0x5c025800, 0x1c01f000, 0x60043000, - 0x0501f009, 0x60043000, 0x0501f008, 0x60003000, - 0x0501f006, 0x60003000, 0x800408c4, 0x0501f00b, - 0x60003000, 0x800408c4, 0x800409c0, 0x05dc0e0f, - 0x4803c857, 0x4807c857, 0x480bc857, 0x480fc857, - 0x481bc857, 0x48efc857, 0x4819d801, 0x4801d803, - 0x4809d807, 0x480dd808, 0x4805d805, 0x40ec1000, - 0x0001f821, 0x4a01d809, 0x001029f5, 0x1c01f000, - 0x80002d80, 0x480bc857, 0x480fc857, 0x4813c857, - 0x4817c857, 0x0001fab3, 0x0542004b, 0x4d2c0000, - 0x4da00000, 0x42034000, 0x0010dceb, 0x59a00018, - 0x800001c0, 0x05020014, 0x05006013, 0x480bc020, - 0x480fc021, 0x4813c022, 0x4817c023, 0x900811c0, - 0x90081552, 0x480bc011, 0x59e00017, 0x8c00050a, - 0x60000800, 0x00020892, 0x8d0c0530, 0x05e60ece, - 0x000209bc, 0x6403c017, 0x4203e000, 0x30000001, - 0x0501f049, 0x4c040000, 0x4c1c0000, 0x80000800, - 0x48074018, 0x59a0381b, 0x481fc857, 0x801c39c0, - 0x05020023, 0x9000048c, 0x0502100e, 0x59a00019, - 0x80000000, 0x48034019, 0x59a0021a, 0x90000402, - 0x90000c97, 0x4803421a, 0x05001003, 0x497b421a, - 0x41780000, 0x59a03817, 0x801c3c00, 0x0501f02c, - 0x4803c856, 0x05e1f96d, 0x05000007, 0x492f401b, - 0x492f401c, 0x412c3800, 0x497b421d, 0x497a5817, - 0x0501f023, 0x5988001e, 0x80000000, 0x4803101e, - 0x59a00018, 0x80000040, 0x48034018, 0x59a0021a, - 0x59a03817, 0x801c3c00, 0x0501f019, 0x59a0021d, - 0x90000402, 0x90000c96, 0x05021004, 0x4803421d, - 0x801c3c00, 0x0501f012, 0x05e1f954, 0x0502000b, - 0x5988001e, 0x80000000, 0x4803101e, 0x59a00018, - 0x80000040, 0x48034018, 0x4803c857, 0x59a0021d, - 0x801c3c00, 0x0501f006, 0x492f401b, 0x492c3817, - 0x412c3800, 0x497b421d, 0x497a5817, 0x48083c00, - 0x480c3a00, 0x48103c01, 0x48143a01, 0x5c003800, - 0x5c000800, 0x5c034000, 0x5c025800, 0x1c01f000, - 0x480fc857, 0x4813c857, 0x481bc857, 0x42000000, - 0x0010e40c, 0x0541ff8f, 0x801800d0, 0x81202d40, - 0x60501100, 0x05fdf78c, 0x4c000000, 0x599c0017, - 0x8c000512, 0x5c000000, 0x1c01f000, 0x4c000000, - 0x599c0018, 0x8c00050e, 0x5c000000, 0x1c01f000, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f1dc, - 0x916c0583, 0x05000003, 0x641f4407, 0x05f1f1d8, - 0x59a24805, 0x59240400, 0x8c000508, 0x05020003, - 0x64234407, 0x05f1f1d2, 0x59340405, 0x8c000508, - 0x05020003, 0x8c00050a, 0x05fe02f9, 0x497a5a08, - 0x497a5809, 0x4a025c08, 0x00008000, 0x0531fd79, - 0x05020003, 0x640f4407, 0x05f1f1c5, 0x4a01d809, - 0x0010487a, 0x1c01f000, 0x592c0009, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f1f1bc, - 0x59a28c07, 0x59a2440b, 0x0509f9f7, 0x05f201bd, - 0x05fdf2e3, 0x4c040000, 0x59a2440b, 0x42000000, - 0x0010e511, 0x50000000, 0x81200480, 0x0502100d, - 0x83200c00, 0x0010d17b, 0x50064800, 0x812649c0, - 0x05000008, 0x59240200, 0x8c000500, 0x05000005, - 0x49274005, 0x80000580, 0x5c000800, 0x1c01f000, - 0x90000541, 0x05fdf7fd, 0x61be880f, 0x0001fb00, - 0x05140e31, 0x81468840, 0x05fe17fd, 0x1c01f000, - 0x4803c856, 0x4c0c0000, 0x4d340000, 0x4d440000, - 0x61fa880f, 0x60024000, 0x0509f9d3, 0x0502000a, - 0x5934180a, 0x900c1d01, 0x900c1d81, 0x60002000, - 0x0501fa6c, 0x05000002, 0x60042000, 0x606c1100, - 0x05fdff2c, 0x5c028800, 0x5c026800, 0x5c001800, - 0x1c01f000, 0x48efc857, 0x05011000, 0x48efc840, - 0x6443c842, 0x40000000, 0x05fd17ff, 0x42000000, - 0x0010dd60, 0x50000000, 0x80000540, 0x05000003, - 0x5800000b, 0x4801d806, 0x4a01d80f, 0xbeefbeef, - 0x1c01f000, 0x497b4000, 0x497b4001, 0x497b4002, - 0x497b4003, 0x497b4004, 0x497b4005, 0x1c01f000, - 0x42002000, 0x00111b00, 0x41580000, 0x41781000, + 0x64001001, 0x64f01005, 0x48041003, 0x0001f829, + 0x4a01d809, 0x0010492b, 0x1c01f000, 0x05f9fea6, + 0x05f001ae, 0x58ee580e, 0x912c0c09, 0x4c580000, + 0x4c500000, 0x4c540000, 0x4004a000, 0x4004a800, + 0x6030b000, 0x0545ff28, 0x5c00a800, 0x5c00a000, + 0x5c00b000, 0x40ec1000, 0x64001001, 0x64c01005, + 0x48041003, 0x0001f829, 0x4a01d809, 0x00102a9d, + 0x1c01f000, 0x05e1f878, 0x0500000e, 0x497a5800, + 0x58ec000d, 0x80000540, 0x05020004, 0x492dd80d, + 0x492dd80e, 0x0501f006, 0x58ec000e, 0x48025800, + 0x90000401, 0x452c0000, 0x492dd80e, 0x912c0408, + 0x492fc857, 0x4803c857, 0x1c01f000, 0x4d2c0000, + 0x58ec400d, 0x802041c0, 0x05000007, 0x4823c857, + 0x40225800, 0x592c4001, 0x497a5801, 0x05e1f86e, + 0x05fdf7f9, 0x4979d80d, 0x4979d80e, 0x5c025800, + 0x1c01f000, 0x60043000, 0x0501f009, 0x60043000, + 0x0501f008, 0x60003000, 0x0501f006, 0x60003000, + 0x800408c4, 0x0501f006, 0x60003000, 0x800408c4, + 0x800409c0, 0x05dc0ca8, 0x4803c857, 0x4819d801, + 0x4801d803, 0x4809d807, 0x480dd808, 0x4805d805, + 0x40ec1000, 0x0001f829, 0x4a01d809, 0x00102a9d, + 0x1c01f000, 0x80002d80, 0x480bc857, 0x480fc857, + 0x4813c857, 0x4817c857, 0x0001fabb, 0x054205f8, + 0x4d2c0000, 0x4da00000, 0x42034000, 0x00111c71, + 0x59a00018, 0x800001c0, 0x05020014, 0x05006013, + 0x480bc020, 0x480fc021, 0x4813c022, 0x4817c023, + 0x900811c0, 0x90081552, 0x480bc011, 0x59e00017, + 0x8c00050a, 0x60000800, 0x0002089a, 0x8d0c0530, + 0x05e60da2, 0x000209c4, 0x6403c017, 0x4203e000, + 0x30000001, 0x0501f049, 0x4c040000, 0x4c1c0000, + 0x80000800, 0x48074018, 0x59a0381b, 0x481fc857, + 0x801c39c0, 0x05020023, 0x9000048c, 0x0502100e, + 0x59a00019, 0x80000000, 0x48034019, 0x59a0021a, + 0x90000402, 0x90000c97, 0x4803421a, 0x05001003, + 0x497b421a, 0x41780000, 0x59a03817, 0x801c3c00, + 0x0501f02c, 0x4803c856, 0x05e1f807, 0x05000007, + 0x492f401b, 0x492f401c, 0x412c3800, 0x497b421d, + 0x497a5817, 0x0501f023, 0x5988001e, 0x80000000, + 0x4803101e, 0x59a00018, 0x80000040, 0x48034018, + 0x59a0021a, 0x59a03817, 0x801c3c00, 0x0501f019, + 0x59a0021d, 0x90000402, 0x90000c96, 0x05021004, + 0x4803421d, 0x801c3c00, 0x0501f012, 0x05ddffee, + 0x0502000b, 0x5988001e, 0x80000000, 0x4803101e, + 0x59a00018, 0x80000040, 0x48034018, 0x4803c857, + 0x59a0021d, 0x801c3c00, 0x0501f006, 0x492f401b, + 0x492c3817, 0x412c3800, 0x497b421d, 0x497a5817, + 0x48083c00, 0x480c3a00, 0x48103c01, 0x48143a01, + 0x5c003800, 0x5c000800, 0x5c034000, 0x5c025800, + 0x1c01f000, 0x480fc857, 0x4813c857, 0x481bc857, + 0x42000000, 0x001123ad, 0x0545fd6d, 0x801800d0, + 0x81202d40, 0x60501100, 0x05fdf78c, 0x4c000000, + 0x599c0017, 0x8c000512, 0x5c000000, 0x1c01f000, + 0x4c000000, 0x599c0018, 0x8c00050e, 0x5c000000, + 0x1c01f000, 0x8d0c050e, 0x05000003, 0x64074407, + 0x05f1f0e7, 0x916c0583, 0x05000003, 0x641f4407, + 0x05f1f0e3, 0x59a24805, 0x59240400, 0x8c000508, + 0x05020003, 0x64234407, 0x05f1f0dd, 0x59340405, + 0x8c000508, 0x05020003, 0x8c00050a, 0x05fe02dd, + 0x497a5a08, 0x497a5809, 0x4a025c08, 0x00008000, + 0x0535f975, 0x05020003, 0x640f4407, 0x05f1f0d0, + 0x4a01d809, 0x00104a17, 0x1c01f000, 0x592c0009, + 0x82000580, 0x01000000, 0x05020003, 0x64134407, + 0x05f1f0c7, 0x59a28c07, 0x59a2440b, 0x0509fb23, + 0x05f200c8, 0x05fdf2c7, 0x4c040000, 0x59a2440b, + 0x42000000, 0x001124b5, 0x50000000, 0x81200480, + 0x0502100d, 0x83200c00, 0x0010d8f9, 0x50064800, + 0x812649c0, 0x05000008, 0x59240200, 0x8c000500, + 0x05000005, 0x49274005, 0x80000580, 0x5c000800, + 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x59a800ad, + 0x80000040, 0x40028800, 0x0001fb08, 0x051808ac, + 0x83440580, 0x00000800, 0x05020002, 0x61c2880f, + 0x81468840, 0x05fe17f9, 0x1c01f000, 0x4803c856, + 0x4c0c0000, 0x4d340000, 0x4d440000, 0x61fa880f, + 0x60024000, 0x0509faf9, 0x0502000a, 0x5934180a, + 0x900c1d01, 0x900c1d81, 0x60002000, 0x0501fa6f, + 0x05000002, 0x60042000, 0x606c1100, 0x05fdff26, + 0x5c028800, 0x5c026800, 0x5c001800, 0x1c01f000, + 0x48efc857, 0x05011000, 0x48efc840, 0x6443c842, + 0x40000000, 0x05fd17ff, 0x42000000, 0x00111cfa, + 0x50000000, 0x80000540, 0x05000003, 0x5800000b, + 0x4801d806, 0x4a01d80f, 0xbeefbeef, 0x1c01f000, + 0x497b4000, 0x497b4001, 0x497b4002, 0x497b4003, + 0x497b4004, 0x497b4005, 0x1c01f000, 0x0501fb27, + 0x05000004, 0x916404a0, 0x0502101d, 0x0501f01b, + 0x42002000, 0x00115aa4, 0x41580000, 0x41781000, 0x58100c07, 0x800409c0, 0x0500000c, 0x90041d83, 0x0500000a, 0x90041c86, 0x05001007, 0x90041d8a, 0x05000005, 0x90041c8f, 0x05001004, 0x90041c92, 0x05021002, 0x80081000, 0x90102430, 0x80100c80, - 0x05fc17f0, 0x40080000, 0x59a8129c, 0x80080480, - 0x05021002, 0x41780000, 0x81640480, 0x05021002, - 0x41780000, 0x1c01f000, 0x05e9fe96, 0x05020015, - 0x59a86892, 0x82346d80, 0x3261103c, 0x05020011, - 0x0545f80f, 0x0500000d, 0x605c70f4, 0x50386800, - 0x82347500, 0x03f00000, 0x82387580, 0x00400000, - 0x05020007, 0x82347500, 0x000f0000, 0x82387580, - 0x00010000, 0x05000002, 0x90000541, 0x64030000, - 0x1c01f000, 0x05e9fe7f, 0x05020004, 0x59a86892, - 0x82347580, 0x01651077, 0x1c01f000, 0x05e9fe79, - 0x0502000d, 0x59a86892, 0x82347580, 0x01751077, - 0x05000009, 0x82347580, 0x01661077, 0x05000006, - 0x82347580, 0x01681077, 0x05000003, 0x82347580, - 0x01761077, 0x1c01f000, 0x05e9fe6a, 0x05020007, - 0x59a86892, 0x82347580, 0x01681077, 0x05000003, - 0x82347580, 0x01761077, 0x1c01f000, 0x05e9fe61, - 0x05020004, 0x59a86892, 0x82347580, 0x01751077, - 0x1c01f000, 0x05fdfffa, 0x05000003, 0x80000580, - 0x0501f00d, 0x59a00c07, 0x82040580, 0x000000a0, - 0x05000009, 0x82040580, 0x000000e0, 0x05000006, - 0x82040580, 0x000000d0, 0x05000003, 0x82040580, - 0x00000098, 0x1c01f000, 0x59a0020c, 0x8c00051a, - 0x1c01f000, 0x4803c856, 0x05fdffdc, 0x05000005, - 0x0501f88d, 0x05000003, 0x65034407, 0x05f1f0fc, - 0x59a0020b, 0x4803c857, 0x800001c0, 0x05f000fd, - 0xb0000485, 0x05f210fb, 0x59a0220c, 0x8c100500, - 0x0502001d, 0x4803c856, 0x05fdfe55, 0x05020004, - 0x640b4407, 0x4803c856, 0x05f1f0ed, 0x05edf80f, - 0x59a00c0b, 0x59a01a0b, 0x59a0220c, 0x59a02c07, - 0x912e5c05, 0x412cc800, 0x4807c857, 0x480fc857, - 0x4813c857, 0x4817c857, 0x4867c857, 0x0501f916, - 0x64030000, 0x0500001f, 0x59a00a0b, 0x59a01008, - 0x900811c0, 0x59a0180a, 0x900c19c0, 0x412c0000, - 0x05fdf65f, 0x4807c856, 0x59a00c0b, 0x59a01a0b, - 0x900c0581, 0x05f200d7, 0x4c040000, 0x4c0c0000, - 0x4c100000, 0x05e9fff1, 0x5c002000, 0x5c001800, - 0x5c000800, 0x59a02c07, 0x91a0cc07, 0x4807c857, - 0x4813c857, 0x4817c857, 0x0501f8fb, 0x64030000, - 0x05000004, 0x59a00a07, 0x48074407, 0x05f1f07d, - 0x64134407, 0x05f1f0be, 0x59a0220c, 0x4813c857, - 0x05fdff96, 0x05000005, 0x0501f847, 0x05000003, - 0x65034407, 0x05f1f0b6, 0x59a00c0b, 0x4807c857, - 0x8c100500, 0x05020017, 0x05fdfe15, 0x05020003, - 0x640b4407, 0x05f1f0ae, 0x59a00a0b, 0xb0040485, - 0x05f210b0, 0x59a01008, 0x900811c0, 0x59a0180a, - 0x900c19c0, 0x912c0405, 0x05fdfe2b, 0x4a01d809, - 0x0010499a, 0x1c01f000, 0x05f9fcc1, 0x05f00097, - 0x58ee580d, 0x912c1405, 0x59a01a0b, 0x0501f003, - 0x91a0140b, 0x60041800, 0x4c080000, 0x4c0c0000, - 0x05e9ffba, 0x5c001800, 0x5c001000, 0x59a00c0b, - 0x59a0220c, 0x59a02c07, 0x4807c857, 0x480bc857, - 0x50080000, 0x82000500, 0x000000ff, 0x4803c857, - 0x480fc857, 0x4813c857, 0x4817c857, 0x0501f84f, - 0x64030000, 0x05f20043, 0x64134407, 0x05f1f084, - 0x05fdff5e, 0x05000003, 0x0501f80f, 0x0502000d, - 0x4803c856, 0x61c0083f, 0x61c4103f, 0x64000800, - 0x46001000, 0x000001a7, 0x64040800, 0x64041000, - 0x64080800, 0x50080000, 0x8400054e, 0x44001000, - 0x1c01f000, 0x59a80092, 0x82000580, 0x338e103c, - 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x64103000, - 0x4200b800, 0x000f4240, 0x05e9fbd9, 0x805cb840, - 0x05000005, 0x501c6800, 0x90346d02, 0x05fe07fb, - 0x90346d41, 0x485fc857, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x64103000, 0x4200b800, - 0x000f4240, 0x05e9fbca, 0x805cb840, 0x05000006, - 0x501c6800, 0x82346d00, 0x00000082, 0x05fe07fa, - 0x90346d41, 0x485fc857, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x4c600000, 0x6000b8f8, - 0x4200c000, 0x000f4240, 0x6404b800, 0x40000000, - 0x8060c040, 0x05000004, 0x505c0000, 0x8c000500, - 0x05fc07fa, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x6000b8f8, 0x4578b800, - 0x5c00b800, 0x1c01f000, 0x4803c856, 0x05fdffe9, - 0x0500006a, 0x4c5c0000, 0x61c0303f, 0x61c4383f, - 0x64103000, 0x4200b800, 0x000f4240, 0x805cb840, - 0x60080000, 0x0500004f, 0x501c0000, 0x8c00050c, - 0x05fe07fb, 0x640c3000, 0x4817c857, 0x05fdffb6, - 0x05000002, 0x60802801, 0x44143800, 0x64103000, - 0x46003800, 0x00000090, 0x05fdffc2, 0x05000054, - 0x8c10051c, 0x05000008, 0x640c3000, 0x4807c857, - 0x44043800, 0x64103000, 0x64403800, 0x05fdffb9, - 0x0500004b, 0x800c19c0, 0x05000033, 0x640c3000, - 0x5008b800, 0x445c3800, 0x485fc857, 0x480fc857, - 0x800c1840, 0x05000028, 0x64103000, 0x64403800, - 0x05fdffac, 0x0500003e, 0x640c3000, 0x805cb910, - 0x445c3800, 0x485fc857, 0x480fc857, 0x800c1840, - 0x0500001d, 0x64103000, 0x64403800, 0x05fdffa1, - 0x05000033, 0x640c3000, 0x805cb910, 0x445c3800, - 0x485fc857, 0x480fc857, 0x800c1840, 0x05000012, - 0x64103000, 0x64403800, 0x05fdff96, 0x05000028, + 0x05fc17f0, 0x80800482, 0x05021002, 0x41780000, + 0x81640480, 0x05021002, 0x41780000, 0x1c01f000, + 0x05e9fd70, 0x05020015, 0x59a86895, 0x82346d80, + 0x3261103c, 0x05020011, 0x0545fde4, 0x0500000d, + 0x605c70f4, 0x50386800, 0x82347500, 0x03f00000, + 0x82387580, 0x00400000, 0x05020007, 0x82347500, + 0x000f0000, 0x82387580, 0x00010000, 0x05000002, + 0x90000541, 0x64030000, 0x1c01f000, 0x05e9fd59, + 0x05020004, 0x59a86895, 0x82347580, 0x01651077, + 0x1c01f000, 0x05e9fd53, 0x0502000d, 0x59a86895, + 0x82347580, 0x01751077, 0x05000009, 0x82347580, + 0x01661077, 0x05000006, 0x82347580, 0x01681077, + 0x05000003, 0x82347580, 0x01761077, 0x1c01f000, + 0x05e9fd44, 0x05020007, 0x59a86895, 0x82347580, + 0x01681077, 0x05000003, 0x82347580, 0x01761077, + 0x1c01f000, 0x05e9fd3b, 0x05020004, 0x59a86895, + 0x82347580, 0x01751077, 0x1c01f000, 0x05fdfffa, + 0x05000003, 0x80000580, 0x0501f00d, 0x59a00c07, + 0x82040580, 0x000000a0, 0x05000009, 0x82040580, + 0x000000e0, 0x05000006, 0x82040580, 0x000000d0, + 0x05000003, 0x82040580, 0x00000098, 0x1c01f000, + 0x59a0020c, 0x8c00051a, 0x1c01f000, 0x4803c856, + 0x05fdffdc, 0x05000005, 0x0501f88d, 0x05000003, + 0x65034407, 0x05edf7fe, 0x59a0020b, 0x4803c857, + 0x800001c0, 0x05ec07ff, 0xb0000485, 0x05ee17fd, + 0x59a0220c, 0x8c100500, 0x0502001d, 0x4803c856, + 0x05fdfe51, 0x05020004, 0x640b4407, 0x4803c856, + 0x05edf7ef, 0x05e9fee9, 0x59a00c0b, 0x59a01a0b, + 0x59a0220c, 0x59a02c07, 0x912e5c05, 0x412cc800, + 0x4807c857, 0x480fc857, 0x4813c857, 0x4817c857, + 0x4867c857, 0x0501f916, 0x64030000, 0x0500001f, + 0x59a00a0b, 0x59a01008, 0x900811c0, 0x59a0180a, + 0x900c19c0, 0x412c0000, 0x05fdf65b, 0x4807c856, + 0x59a00c0b, 0x59a01a0b, 0x900c0581, 0x05ee07d9, + 0x4c040000, 0x4c0c0000, 0x4c100000, 0x05e9fecb, + 0x5c002000, 0x5c001800, 0x5c000800, 0x59a02c07, + 0x91a0cc07, 0x4807c857, 0x4813c857, 0x4817c857, + 0x0501f8fb, 0x64030000, 0x05000004, 0x59a00a07, + 0x48074407, 0x05edf77f, 0x64134407, 0x05edf7c0, + 0x59a0220c, 0x4813c857, 0x05fdff96, 0x05000005, + 0x0501f847, 0x05000003, 0x65034407, 0x05edf7b8, + 0x59a00c0b, 0x4807c857, 0x8c100500, 0x05020017, + 0x05fdfe11, 0x05020003, 0x640b4407, 0x05edf7b0, + 0x59a00a0b, 0xb0040485, 0x05ee17b2, 0x59a01008, + 0x900811c0, 0x59a0180a, 0x900c19c0, 0x912c0405, + 0x05fdfe27, 0x4a01d809, 0x00104b40, 0x1c01f000, + 0x05f9fc91, 0x05ec0799, 0x58ee580d, 0x912c1405, + 0x59a01a0b, 0x0501f003, 0x91a0140b, 0x60041800, + 0x4c080000, 0x4c0c0000, 0x05e9fe94, 0x5c001800, + 0x5c001000, 0x59a00c0b, 0x59a0220c, 0x59a02c07, + 0x4807c857, 0x480bc857, 0x50080000, 0x82000500, + 0x000000ff, 0x4803c857, 0x480fc857, 0x4813c857, + 0x4817c857, 0x0501f84f, 0x64030000, 0x05ee0745, + 0x64134407, 0x05edf786, 0x05fdff5e, 0x05000003, + 0x0501f80f, 0x0502000d, 0x4803c856, 0x61c0083f, + 0x61c4103f, 0x64000800, 0x46001000, 0x000001a7, + 0x64040800, 0x64041000, 0x64080800, 0x50080000, + 0x8400054e, 0x44001000, 0x1c01f000, 0x59a80095, + 0x82000580, 0x338e103c, 0x1c01f000, 0x4803c856, + 0x4c5c0000, 0x64103000, 0x4200b800, 0x000f4240, + 0x05e9fab3, 0x805cb840, 0x05000005, 0x501c6800, + 0x90346d02, 0x05fe07fb, 0x90346d41, 0x485fc857, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x64103000, 0x4200b800, 0x000f4240, 0x05e9faa4, + 0x805cb840, 0x05000006, 0x501c6800, 0x82346d00, + 0x00000082, 0x05fe07fa, 0x90346d41, 0x485fc857, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x4c600000, 0x6000b8f8, 0x4200c000, 0x000f4240, + 0x6404b800, 0x40000000, 0x8060c040, 0x05000004, + 0x505c0000, 0x8c000500, 0x05fc07fa, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x6000b8f8, 0x4578b800, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x05fdffe9, 0x0500006a, 0x4c5c0000, + 0x61c0303f, 0x61c4383f, 0x64103000, 0x4200b800, + 0x000f4240, 0x805cb840, 0x60080000, 0x0500004f, + 0x501c0000, 0x8c00050c, 0x05fe07fb, 0x640c3000, + 0x4817c857, 0x05fdffb6, 0x05000002, 0x60802801, + 0x44143800, 0x64103000, 0x46003800, 0x00000090, + 0x05fdffc2, 0x05000054, 0x8c10051c, 0x05000008, + 0x640c3000, 0x4807c857, 0x44043800, 0x64103000, + 0x64403800, 0x05fdffb9, 0x0500004b, 0x800c19c0, + 0x05000033, 0x640c3000, 0x5008b800, 0x445c3800, + 0x485fc857, 0x480fc857, 0x800c1840, 0x05000028, + 0x64103000, 0x64403800, 0x05fdffac, 0x0500003e, 0x640c3000, 0x805cb910, 0x445c3800, 0x485fc857, - 0x480fc857, 0x800c1840, 0x05000007, 0x64103000, - 0x64403800, 0x05fdff8b, 0x0500001d, 0x80081000, - 0x05fdf7d3, 0x64103000, 0x65403800, 0x05fdff85, - 0x05000017, 0x90000541, 0x4803c856, 0x0501f011, - 0x4803c857, 0x64103000, 0x65403800, 0x05fdff7d, + 0x480fc857, 0x800c1840, 0x0500001d, 0x64103000, + 0x64403800, 0x05fdffa1, 0x05000033, 0x640c3000, + 0x805cb910, 0x445c3800, 0x485fc857, 0x480fc857, + 0x800c1840, 0x05000012, 0x64103000, 0x64403800, + 0x05fdff96, 0x05000028, 0x640c3000, 0x805cb910, + 0x445c3800, 0x485fc857, 0x480fc857, 0x800c1840, + 0x05000007, 0x64103000, 0x64403800, 0x05fdff8b, + 0x0500001d, 0x80081000, 0x05fdf7d3, 0x64103000, + 0x65403800, 0x05fdff85, 0x05000017, 0x90000541, + 0x4803c856, 0x0501f011, 0x4803c857, 0x64103000, + 0x65403800, 0x05fdff7d, 0x64103000, 0x4200b800, + 0x000f4240, 0x805cb840, 0x05000005, 0x501c0000, + 0x8c00050c, 0x05fe07fc, 0x05fdf7a9, 0x4803c857, + 0x05ddfa05, 0x4803c856, 0x5c00b800, 0x05fdff8f, + 0x1c01f000, 0x600c0000, 0x05fdf7fb, 0x4803c856, + 0x05fdff7a, 0x60040000, 0x0500009c, 0x4c5c0000, + 0x4c600000, 0x400c6000, 0x61c0303f, 0x61c4383f, 0x64103000, 0x4200b800, 0x000f4240, 0x805cb840, - 0x05000005, 0x501c0000, 0x8c00050c, 0x05fe07fc, - 0x05fdf7a9, 0x4803c857, 0x05ddfb70, 0x4803c856, - 0x5c00b800, 0x05fdff8f, 0x1c01f000, 0x600c0000, - 0x05fdf7fb, 0x4803c856, 0x05fdff7a, 0x60040000, - 0x0500009c, 0x4c5c0000, 0x4c600000, 0x400c6000, - 0x61c0303f, 0x61c4383f, 0x64103000, 0x4200b800, - 0x000f4240, 0x805cb840, 0x60080000, 0x0500008e, - 0x501c0000, 0x4803c857, 0x8c00050c, 0x05fe07fa, - 0x8c10051c, 0x05000017, 0x640c3000, 0x50180000, - 0x4803c857, 0x501c0000, 0x4803c857, 0x4817c857, - 0x05fdff3d, 0x05000002, 0x60802801, 0x44143800, - 0x64103000, 0x46003800, 0x00000090, 0x05fdff49, - 0x0500007d, 0x640c3000, 0x4807c857, 0x44043800, - 0x64103000, 0x64403800, 0x05fdff42, 0x05000076, - 0x640c3000, 0x80142800, 0x05fdff2b, 0x05000002, - 0x60842801, 0x44143800, 0x64103000, 0x46003800, - 0x00000090, 0x05fdff37, 0x0500006b, 0x800c19c0, - 0x05dc0b32, 0x4178b800, 0x900c1581, 0x05000040, - 0x64103000, 0x64803800, 0x05fdff1f, 0x05000062, - 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, - 0x8004bd57, 0x485fc857, 0x480fc857, 0x805cb910, - 0x800c1840, 0x900c1581, 0x05000031, 0x64103000, - 0x64803800, 0x05fdff10, 0x05000053, 0x640c3000, - 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, - 0x485fc857, 0x480fc857, 0x805cb910, 0x800c1840, - 0x900c1581, 0x05000022, 0x64103000, 0x64803800, - 0x05fdff01, 0x05000044, 0x640c3000, 0x501c0800, + 0x60080000, 0x0500008e, 0x501c0000, 0x4803c857, + 0x8c00050c, 0x05fe07fa, 0x8c10051c, 0x05000017, + 0x640c3000, 0x50180000, 0x4803c857, 0x501c0000, + 0x4803c857, 0x4817c857, 0x05fdff3d, 0x05000002, + 0x60802801, 0x44143800, 0x64103000, 0x46003800, + 0x00000090, 0x05fdff49, 0x0500007d, 0x640c3000, + 0x4807c857, 0x44043800, 0x64103000, 0x64403800, + 0x05fdff42, 0x05000076, 0x640c3000, 0x80142800, + 0x05fdff2b, 0x05000002, 0x60842801, 0x44143800, + 0x64103000, 0x46003800, 0x00000090, 0x05fdff37, + 0x0500006b, 0x800c19c0, 0x05dc09c7, 0x4178b800, + 0x900c1581, 0x05000040, 0x64103000, 0x64803800, + 0x05fdff1f, 0x05000062, 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, 0x485fc857, 0x480fc857, 0x805cb910, 0x800c1840, 0x900c1581, - 0x05000013, 0x64103000, 0x64803800, 0x05fdfef2, - 0x05000035, 0x640c3000, 0x501c0800, 0x4807c857, + 0x05000031, 0x64103000, 0x64803800, 0x05fdff10, + 0x05000053, 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, 0x485fc857, 0x480fc857, - 0x445cc800, 0x8064c800, 0x4178b800, 0x800c1840, - 0x900c1581, 0x05000002, 0x05fdf7c2, 0x64103000, - 0x65a03800, 0x05fdfee0, 0x05000023, 0x640c3000, - 0x501c0800, 0x4807c857, 0x82040d00, 0x000000ff, - 0x9c0409c0, 0x8004bd57, 0x4807c857, 0x485fc857, - 0x4863c857, 0x4867c857, 0x480fc857, 0x40301000, - 0x41780800, 0x60100000, 0x0519fc90, 0x4807c857, - 0x800409c0, 0x05000006, 0x60100000, 0x80000c81, - 0x805cb910, 0x80040840, 0x05fe07fe, 0x445cc800, - 0x485fc857, 0x4863c857, 0x4867c857, 0x90000541, - 0x4803c856, 0x5c00c000, 0x5c00b800, 0x05fdfeed, - 0x1c01f000, 0x600c0000, 0x05fdf7fb, 0x4c000000, - 0x599c0018, 0x8c000514, 0x5c000000, 0x1c01f000, - 0x05fdfffb, 0x05000003, 0x59a80249, 0x8c000518, - 0x1c01f000, 0x599c0018, 0x8c000516, 0x05020003, - 0x90000541, 0x1c01f000, 0x80000580, 0x05fdf7fe, - 0x59a0020c, 0x8c000518, 0x1c01f000, 0x60003020, - 0x80183040, 0x05000010, 0x0541fdd5, 0x05fc07fd, - 0x05ddffa1, 0x605430f4, 0x50183800, 0x821c0500, - 0x00007000, 0x05000006, 0x480350d8, 0x821c0500, - 0xffff8fff, 0x44003000, 0x80000580, 0x64030000, - 0x1c01f000, 0x4803c856, 0x4a034408, 0x0000cccc, - 0x90000541, 0x05fdf7fa, 0x0541fdc1, 0x05fc07ff, - 0x600008f4, 0x58040015, 0x82000500, 0xffff8fff, - 0x59a810d8, 0x80080540, 0x48000815, 0x64030000, - 0x1c01f000, 0x59a80005, 0x8c000514, 0x05000005, - 0x42000000, 0x0010dd3e, 0x50000000, 0x90000528, - 0x1c01f000, 0x59a80092, 0x82000580, 0x041e1014, + 0x805cb910, 0x800c1840, 0x900c1581, 0x05000022, + 0x64103000, 0x64803800, 0x05fdff01, 0x05000044, + 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, + 0x8004bd57, 0x485fc857, 0x480fc857, 0x805cb910, + 0x800c1840, 0x900c1581, 0x05000013, 0x64103000, + 0x64803800, 0x05fdfef2, 0x05000035, 0x640c3000, + 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, + 0x485fc857, 0x480fc857, 0x445cc800, 0x8064c800, + 0x4178b800, 0x800c1840, 0x900c1581, 0x05000002, + 0x05fdf7c2, 0x64103000, 0x65a03800, 0x05fdfee0, + 0x05000023, 0x640c3000, 0x501c0800, 0x4807c857, + 0x82040d00, 0x000000ff, 0x9c0409c0, 0x8004bd57, + 0x4807c857, 0x485fc857, 0x4863c857, 0x4867c857, + 0x480fc857, 0x40301000, 0x41780800, 0x60100000, + 0x0519ffa3, 0x4807c857, 0x800409c0, 0x05000006, + 0x60100000, 0x80000c81, 0x805cb910, 0x80040840, + 0x05fe07fe, 0x445cc800, 0x485fc857, 0x4863c857, + 0x4867c857, 0x90000541, 0x4803c856, 0x5c00c000, + 0x5c00b800, 0x05fdfeed, 0x1c01f000, 0x600c0000, + 0x05fdf7fb, 0x4c000000, 0x599c0018, 0x8c000514, + 0x5c000000, 0x1c01f000, 0x05fdfffb, 0x05000003, + 0x59a8024c, 0x8c000518, 0x1c01f000, 0x599c0018, + 0x8c000516, 0x05020003, 0x90000541, 0x1c01f000, + 0x80000580, 0x05fdf7fe, 0x60003020, 0x80183040, + 0x05000010, 0x0545fbad, 0x05fc07fd, 0x05ddfe60, + 0x605430f4, 0x50183800, 0x821c0500, 0x00007000, + 0x05000006, 0x480350dd, 0x821c0500, 0xffff8fff, + 0x44003000, 0x80000580, 0x64030000, 0x1c01f000, + 0x4803c856, 0x4a034408, 0x0000cccc, 0x90000541, + 0x05fdf7fa, 0x0545fb99, 0x05fc07ff, 0x600008f4, + 0x58040015, 0x82000500, 0xffff8fff, 0x59a810dd, + 0x80080540, 0x48000815, 0x64030000, 0x1c01f000, + 0x59a00c07, 0x90040588, 0x05000004, 0x90040589, + 0x05000016, 0x05edf5f7, 0x59000200, 0x80000540, + 0x05000043, 0x59001001, 0x59001802, 0x59002803, + 0x900811c0, 0x900c19c0, 0x901429c0, 0x61702000, + 0x8d0c0538, 0x05000002, 0x8410255e, 0x59000800, + 0x480b4008, 0x48134209, 0x480f400a, 0x4817400b, + 0x4807400c, 0x05edf59b, 0x916c0580, 0x0502002e, + 0x8d0c0538, 0x05020030, 0x59000200, 0x80001d40, + 0x0500002b, 0x59a0100b, 0x800811c0, 0x05ec05d9, + 0x900811c0, 0x41780800, 0x61700000, 0x4c0c0000, + 0x0519ff33, 0x5c001800, 0x800409c0, 0x05ee05d1, + 0x400c0000, 0x80080480, 0x05001002, 0x400c1000, + 0x480a0400, 0x82080400, 0x00000800, 0x480350ad, + 0x82080400, 0x000007f0, 0x480350ac, 0x82080c00, + 0x0010e380, 0x42001000, 0x00111b80, 0x05ddfcba, + 0x480b500d, 0x481b500e, 0x59a0280b, 0x59a01008, + 0x59a0180a, 0x900801c0, 0x48020001, 0x900c01c0, + 0x48020002, 0x901401c0, 0x48020003, 0x850e1d78, + 0x05fdf7c7, 0x60c00800, 0x0501f004, 0x60c40800, + 0x0501f002, 0x60c80800, 0x4807c857, 0x48074407, + 0x05edf5a7, 0x59a80005, 0x8c000514, 0x05000005, + 0x42000000, 0x00111cc4, 0x50000000, 0x90000528, + 0x1c01f000, 0x59a80095, 0x82000580, 0x041e1014, 0x1c01f000, 0x4807c857, 0x480bc857, 0x480fc857, - 0x4c040000, 0x4c080000, 0x4c0c0000, 0x05f1ff11, + 0x4c040000, 0x4c080000, 0x4c0c0000, 0x05f1fdcf, 0x5c001800, 0x5c001000, 0x5c000800, 0x05000003, - 0x80141d43, 0x05f1fed5, 0x1c01f000, 0x4807c857, + 0x80141d43, 0x05f1fd91, 0x1c01f000, 0x4807c857, 0x480bc857, 0x480fc857, 0x4c040000, 0x4c080000, - 0x4c0c0000, 0x05f1ff03, 0x5c001800, 0x5c001000, + 0x4c0c0000, 0x05f1fdc1, 0x5c001800, 0x5c001000, 0x5c000800, 0x05000004, 0x800c1880, 0x80141d03, - 0x05f1fec6, 0x1c01f000, 0x641f4407, 0x05edf6c8, - 0x64eb4407, 0x05edf6c6, 0x051dfcdf, 0x497b8880, + 0x05f1fd82, 0x1c01f000, 0x641f4407, 0x05edf57c, + 0x64eb4407, 0x05edf57a, 0x051dffa9, 0x497b8880, 0x59c400a3, 0x82000500, 0xfcf8ffff, 0x480388a3, - 0x05e9fecb, 0x05020003, 0x600dd000, 0x0515fc86, - 0x4d3c0000, 0x60067800, 0x0535faa5, 0x5c027800, - 0x05e9fec3, 0x0502000b, 0x59c408a3, 0x84040d72, - 0x480788a3, 0x6009d000, 0x0515fc7b, 0x05e9fec0, - 0x05de0a4e, 0x59c408a3, 0x84040d32, 0x480788a3, - 0x05e9feb3, 0x05020012, 0x42000000, 0x00200000, - 0x05e9fa27, 0x600dd000, 0x0515fc6f, 0x05e9feb4, - 0x0500000b, 0x59c408a3, 0x84040d72, 0x480788a3, - 0x6009d000, 0x0515fc68, 0x05e9fead, 0x05de0a3b, - 0x59c408a3, 0x84040d32, 0x480788a3, 0x1c01f000, - 0x59c400a4, 0x4c580000, 0x4c500000, 0x4c540000, - 0x9000050f, 0x90000487, 0x05001008, 0x90006c87, - 0x05de1a2e, 0x0c01f807, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x1c01f000, 0x0501f8e9, 0x05fdf7fb, - 0x00104bbb, 0x00104bc1, 0x00104be5, 0x00104bff, - 0x00104ca1, 0x00104bba, 0x1c01f000, 0x59c40806, - 0x8c040500, 0x05020003, 0x84040d40, 0x48078806, - 0x1c01f000, 0x59c40005, 0x8c000534, 0x050206b2, - 0x4a038805, 0xffffffff, 0x42006000, 0x00020000, - 0x0501fe94, 0x59a80043, 0x82000500, 0xfffffffa, - 0x84000542, 0x48035043, 0x497b5249, 0x42000800, - 0x00110258, 0x45780800, 0x497b50b2, 0x42000000, - 0x0010e510, 0x46000000, 0x0000ffff, 0x42006000, - 0xffefffff, 0x42006800, 0x40000000, 0x0501fe7c, + 0x05e9fd5b, 0x05020003, 0x600dd000, 0x0515fefd, + 0x4d3c0000, 0x60067800, 0x0535fe58, 0x5c027800, + 0x05e9fd53, 0x05020009, 0x59c408a3, 0x84040d72, + 0x480788a3, 0x6009d000, 0x0515fef2, 0x59c408a3, + 0x84040d32, 0x480788a3, 0x05e9fd45, 0x05020010, + 0x42000000, 0x00200000, 0x05e9f8b5, 0x600dd000, + 0x0515fee8, 0x05e9fd46, 0x05000009, 0x59c408a3, + 0x84040d72, 0x480788a3, 0x6009d000, 0x0515fee1, + 0x59c408a3, 0x84040d32, 0x480788a3, 0x05e9fd30, + 0x05fc07f7, 0x1c01f000, 0x59a80006, 0x8c000510, + 0x1c01f000, 0x59c400a4, 0x4c580000, 0x4c500000, + 0x4c540000, 0x9000050f, 0x90000487, 0x05001008, + 0x90006c87, 0x05de1874, 0x0c01f807, 0x5c00a800, + 0x5c00a000, 0x5c00b000, 0x1c01f000, 0x0501f8e9, + 0x05fdf7fb, 0x00104db0, 0x00104db6, 0x00104dda, + 0x00104df4, 0x00104e96, 0x00104daf, 0x1c01f000, + 0x59c40806, 0x8c040500, 0x05020003, 0x84040d40, + 0x48078806, 0x1c01f000, 0x59c40005, 0x8c000534, + 0x050206b4, 0x4a038805, 0xffffffff, 0x42006000, + 0x00020000, 0x0501fe96, 0x59a80046, 0x82000500, + 0xfffffffa, 0x84000542, 0x48035046, 0x497b524c, + 0x42000800, 0x001141fc, 0x45780800, 0x497b50b7, + 0x42000000, 0x001124b4, 0x46000000, 0x0000ffff, + 0x42006000, 0xffefffff, 0x42006800, 0x40000000, + 0x0501fe7e, 0x59c40006, 0x82000500, 0xffffff0f, + 0x48038806, 0x60400800, 0x42001000, 0x001053a5, + 0x0515fce2, 0x0501f001, 0x42006000, 0xffffffff, + 0x42006800, 0x00800000, 0x0501fe70, 0x6120b001, + 0x59c400a4, 0x9000050f, 0x9000058a, 0x0500000d, + 0x8058b040, 0x05fe07fb, 0x497b5041, 0x42006000, + 0xbf7fffff, 0x42006800, 0x00018000, 0x0501fe63, + 0x42006000, 0xfffeffff, 0x41786800, 0x0501f65f, + 0x497b5041, 0x640350b6, 0x80000580, 0x0501f667, + 0x4a038805, 0xffffffff, 0x59a800b6, 0x90000c84, + 0x05de181d, 0x0c01f001, 0x00104dfd, 0x00104e23, + 0x00104e8f, 0x4803c856, 0x59c400a3, 0x8400051e, + 0x480388a3, 0x640750b6, 0x59c40008, 0x82000540, + 0x00000280, 0x48038808, 0x0501fe32, 0x42007800, + 0x00112005, 0x4a007806, 0x11010000, 0x4200a000, + 0x001124b7, 0x4200a800, 0x0011200c, 0x6008b000, + 0x0545fa12, 0x59c40802, 0x84040d0c, 0x48078802, + 0x600c0800, 0x497b50c1, 0x0501fd11, 0x640750c1, + 0x497b50bb, 0x0501fe47, 0x42006000, 0xffffffff, + 0x42006800, 0x00080000, 0x0501fe30, 0x42006000, + 0xfff7ffff, 0x41786800, 0x0501f62c, 0x59a800bb, + 0x497b50bb, 0x80002540, 0x0500005e, 0x59c40004, + 0x90000503, 0x05020065, 0x59a80846, 0x8c040502, + 0x05000049, 0x9010058c, 0x0502004c, 0x90100418, + 0x8000b104, 0x41cc1000, 0x42001800, 0x00112005, + 0x50080800, 0x500c0000, 0x80040580, 0x05020019, + 0x80081000, 0x800c1800, 0x8058b040, 0x05fe07f9, + 0x0501fe24, 0x59c80015, 0x84000508, 0x48039015, + 0x42006000, 0xffffffff, 0x42006800, 0x00500000, + 0x0501fe0a, 0x640b50b6, 0x640b5041, 0x05e5fd22, + 0x6140080f, 0x42001000, 0x00105303, 0x0515fe01, + 0x59a80046, 0x84000506, 0x48035046, 0x0501f5e9, + 0x59cc0806, 0x82040d80, 0x11010000, 0x05020027, + 0x59cc0800, 0x82040500, 0x00ffffff, 0x05000018, + 0x82000580, 0x000000ef, 0x05020015, 0x59cc0801, + 0x82040500, 0x00ffffff, 0x82000580, 0x000000ef, + 0x0502000f, 0x91cca407, 0x4200a800, 0x001124b7, + 0x6008b000, 0x50500800, 0x50540000, 0x80040480, + 0x05001007, 0x05020011, 0x8050a000, 0x8054a800, + 0x8058b040, 0x05fe07f8, 0x0501f00c, 0x59a80046, + 0x84000502, 0x48035046, 0x59c80015, 0x84000508, + 0x48039015, 0x41cca000, 0x4200a800, 0x00112005, + 0x6024b000, 0x0545f9a9, 0x0501fde6, 0x42006000, + 0xffffffff, 0x42006800, 0x00080000, 0x0501fdcf, + 0x42006000, 0xfff7ffff, 0x41786800, 0x0501fdcb, + 0x42006000, 0xffffffff, 0x60006880, 0x0501fdc7, + 0x59c40004, 0x90000503, 0x05020004, 0x497b50bb, + 0x600c0800, 0x0501f49a, 0x1c01f000, 0x1c01f000, + 0x59a80041, 0x90006d8f, 0x05000003, 0x9000059b, + 0x05020c65, 0x1c01f000, 0x59a80046, 0x84000506, + 0x48035046, 0x497b50c1, 0x59a80041, 0x90000c9e, + 0x05da1f79, 0x0c01f001, 0x00104ecd, 0x00104edd, + 0x00104eff, 0x00104f1a, 0x00104f38, 0x00104f3b, + 0x00104f3e, 0x00104f41, 0x00104f44, 0x00104f58, + 0x00104f5b, 0x00104faf, 0x00104fb2, 0x00104fbf, + 0x00104fc2, 0x00104fd4, 0x00104fd9, 0x00105029, + 0x00105050, 0x001050c8, 0x001050ef, 0x0010513e, + 0x00105184, 0x001051d3, 0x001051f1, 0x00105233, + 0x00105251, 0x00105261, 0x00105262, 0x4803c856, + 0x601ed800, 0x0509fcdb, 0x05000006, 0x42006000, + 0xffffffd7, 0x41786800, 0x0501fd8c, 0x0501f009, 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806, - 0x60400800, 0x42001000, 0x001051ae, 0x0515fabd, - 0x0501f001, 0x42006000, 0xffffffff, 0x42006800, - 0x00800000, 0x0501fe6e, 0x6120b001, 0x59c400a4, - 0x9000050f, 0x9000058a, 0x0500000d, 0x8058b040, - 0x05fe07fb, 0x497b503e, 0x42006000, 0xbf7fffff, - 0x42006800, 0x00018000, 0x0501fe61, 0x42006000, - 0xfffeffff, 0x41786800, 0x0501f65d, 0x497b503e, - 0x640350b1, 0x80000580, 0x0501f665, 0x4a038805, - 0xffffffff, 0x59a800b1, 0x90000c84, 0x05de19d7, - 0x0c01f001, 0x00104c08, 0x00104c2e, 0x00104c9a, - 0x4803c856, 0x59c400a3, 0x8400051e, 0x480388a3, - 0x640750b1, 0x59c40008, 0x82000540, 0x00000280, - 0x48038808, 0x0501fe30, 0x42007800, 0x0010e06b, - 0x4a007806, 0x11010000, 0x4200a000, 0x0010e513, - 0x4200a800, 0x0010e072, 0x6008b000, 0x0541fc8c, - 0x59c40802, 0x84040d0c, 0x48078802, 0x600c0800, - 0x497b50bc, 0x0501fd0f, 0x640750bc, 0x497b50b6, - 0x0501fe45, 0x42006000, 0xffffffff, 0x42006800, - 0x00080000, 0x0501fe2e, 0x42006000, 0xfff7ffff, - 0x41786800, 0x0501f62a, 0x59a800b6, 0x497b50b6, - 0x80002540, 0x0500005e, 0x59c40004, 0x90000503, - 0x05020065, 0x59a80843, 0x8c040502, 0x05000049, - 0x9010058c, 0x0502004c, 0x90100418, 0x8000b104, - 0x41cc1000, 0x42001800, 0x0010e06b, 0x50080800, - 0x500c0000, 0x80040580, 0x05020019, 0x80081000, - 0x800c1800, 0x8058b040, 0x05fe07f9, 0x0501fe22, - 0x59c80015, 0x84000508, 0x48039015, 0x42006000, - 0xffffffff, 0x42006800, 0x00500000, 0x0501fe08, - 0x640b50b1, 0x640b503e, 0x05e5fe97, 0x6140080f, - 0x42001000, 0x0010510c, 0x0515fb92, 0x59a80043, - 0x84000506, 0x48035043, 0x0501f5e7, 0x59cc0806, - 0x82040d80, 0x11010000, 0x05020027, 0x59cc0800, - 0x82040500, 0x00ffffff, 0x05000018, 0x82000580, - 0x000000ef, 0x05020015, 0x59cc0801, 0x82040500, - 0x00ffffff, 0x82000580, 0x000000ef, 0x0502000f, - 0x91cca407, 0x4200a800, 0x0010e513, 0x6008b000, - 0x50500800, 0x50540000, 0x80040480, 0x05001007, - 0x05020011, 0x8050a000, 0x8054a800, 0x8058b040, - 0x05fe07f8, 0x0501f00c, 0x59a80043, 0x84000502, - 0x48035043, 0x59c80015, 0x84000508, 0x48039015, - 0x41cca000, 0x4200a800, 0x0010e06b, 0x6024b000, - 0x0541fc23, 0x0501fde4, 0x42006000, 0xffffffff, - 0x42006800, 0x00080000, 0x0501fdcd, 0x42006000, - 0xfff7ffff, 0x41786800, 0x0501fdc9, 0x42006000, - 0xffffffff, 0x60006880, 0x0501fdc5, 0x59c40004, - 0x90000503, 0x05020004, 0x497b50b6, 0x600c0800, - 0x0501f498, 0x1c01f000, 0x1c01f000, 0x59a8003e, - 0x90006d8f, 0x05000003, 0x9000059b, 0x05020c63, - 0x1c01f000, 0x59a80043, 0x84000506, 0x48035043, - 0x497b50bc, 0x59a8003e, 0x90000c9e, 0x05de1933, - 0x0c01f001, 0x00104cd8, 0x00104ce8, 0x00104d0a, - 0x00104d24, 0x00104d42, 0x00104d45, 0x00104d48, - 0x00104d4b, 0x00104d4e, 0x00104d62, 0x00104d65, - 0x00104db9, 0x00104dbc, 0x00104dc9, 0x00104dcc, - 0x00104dde, 0x00104de3, 0x00104e32, 0x00104e59, - 0x00104ed1, 0x00104ef8, 0x00104f47, 0x00104f8d, - 0x00104fdc, 0x00104ffa, 0x0010503c, 0x0010505a, - 0x0010506a, 0x0010506b, 0x4803c856, 0x601ed800, - 0x0509fbe6, 0x05000006, 0x42006000, 0xffffffd7, - 0x41786800, 0x0501fd8a, 0x0501f009, 0x59c40006, - 0x82000500, 0xffffff0f, 0x48038806, 0x4a038805, - 0x000000f0, 0x0509ff22, 0x0509fb52, 0x1c01f000, - 0x4803c856, 0x42006000, 0xbf7fffff, 0x42006800, - 0x00400000, 0x0501fd7a, 0x05e5fe0b, 0x6407503e, - 0x42001000, 0x001051ae, 0x0515f9e3, 0x0501fcd4, - 0x6140080f, 0x42001000, 0x0010510c, 0x0515f301, - 0x59a800b6, 0x90000594, 0x0502001e, 0x4803c857, - 0x42006000, 0xffbfffff, 0x41786800, 0x0501fd68, - 0x59c40004, 0x90000503, 0x05020016, 0x42001000, - 0x0010510c, 0x0515f9c0, 0x59cc1006, 0x82081580, - 0x11020000, 0x05020010, 0x59cc1007, 0x8c08053e, - 0x0500000a, 0x59a80043, 0x8c000504, 0x05020007, - 0x42000000, 0x0010e39d, 0x0541fada, 0x59a80043, - 0x84000544, 0x48035043, 0x6443503e, 0x0501f0dc, - 0x1c01f000, 0x0501f3f9, 0x4803c856, 0x640f503e, - 0x42006000, 0xbf3fffff, 0x42006800, 0x00100000, - 0x0501fd47, 0x42001000, 0x001051ae, 0x0515f9b2, - 0x0501fca3, 0x42001000, 0x0010510c, 0x0515f99e, - 0x59a80449, 0x90000528, 0x05000004, 0x42000800, - 0xffffd815, 0x05edf9ad, 0x42007800, 0x0010e071, - 0x46007800, 0x11020000, 0x60140800, 0x0501f40d, - 0x59a800b6, 0x80000540, 0x0500001a, 0x4803c857, - 0x42001000, 0x0010510c, 0x0515f98b, 0x59a800b6, - 0x90000594, 0x05020014, 0x59cc1006, 0x82081580, - 0x11020000, 0x05020010, 0x59cc1007, 0x8c08053e, - 0x0500000a, 0x59a80043, 0x8c000504, 0x05020007, - 0x42000000, 0x0010e39d, 0x0541faa2, 0x59a80043, - 0x84000544, 0x48035043, 0x6413503e, 0x0501f003, - 0x1c01f000, 0x0501f3c1, 0x4803c856, 0x6417503e, - 0x0501f117, 0x4c5c0000, 0x6004b800, 0x0501f0ed, - 0x4803c856, 0x641f503e, 0x0501f1b0, 0x4c5c0000, - 0x6004b800, 0x0501f186, 0x4803c856, 0x6427503e, - 0x91cca406, 0x4200a800, 0x0010e071, 0x6014b000, - 0x0541fb53, 0x42007800, 0x0010e071, 0x46007800, - 0x11050100, 0x8d0c0506, 0x05000243, 0x60140800, - 0x0501fbd4, 0x4d3c0000, 0x60067800, 0x0535f8c8, - 0x5c027800, 0x1c01f000, 0x4c5c0000, 0x6004b800, - 0x0501f1e5, 0x4803c856, 0x642f503e, 0x42001000, - 0x0010e072, 0x4008a800, 0x6080b000, 0x4600a800, - 0xffffffff, 0x8054a800, 0x8058b040, 0x05fe07fc, - 0x42007800, 0x0010e071, 0x46007800, 0x11060000, - 0x8d0c0506, 0x05000005, 0x50080000, 0x46001000, - 0x00ffffff, 0x0501f03e, 0x42024800, 0x0010e512, - 0x0541fb7c, 0x40083000, 0x41782800, 0x41781800, - 0x41782000, 0x59240200, 0x8c000500, 0x05000012, - 0x8c000502, 0x05000010, 0x801429c0, 0x05020002, - 0x800c1800, 0x80142800, 0x59244408, 0x82204500, - 0x000000ff, 0x400c0000, 0x50182000, 0x0c01f810, - 0x80102540, 0x44103000, 0x800c19c0, 0x05020002, - 0x80183000, 0x91264c0d, 0x8058b040, 0x05fe07ea, - 0x50080000, 0x82000500, 0x00ffffff, 0x801428f0, - 0x80140540, 0x44001000, 0x0501f019, 0x00104da3, - 0x00104da8, 0x00104dad, 0x00104db2, 0x802000f0, - 0x82102500, 0x00ffffff, 0x800c1800, 0x1c01f000, - 0x802000e0, 0x82102500, 0xff00ffff, 0x800c1800, - 0x1c01f000, 0x802000d0, 0x82102500, 0xffff00ff, - 0x800c1800, 0x1c01f000, 0x40200000, 0x82102500, - 0xffffff00, 0x41781800, 0x1c01f000, 0x60840800, - 0x0501f378, 0x4c5c0000, 0x6004b800, 0x0501f223, - 0x4803c856, 0x6437503e, 0x91cca406, 0x4200a800, - 0x0010e071, 0x6084b000, 0x0541fae5, 0x42007800, - 0x0010e071, 0x46007800, 0x11070000, 0x60840800, - 0x0501f368, 0x4c5c0000, 0x6004b800, 0x0501f273, - 0x4803c856, 0x90040d41, 0x0501fc95, 0x643f503e, - 0x497b50b6, 0x42006000, 0xffffffff, 0x42006800, - 0x00300000, 0x0501fc82, 0x42006000, 0xffdfffff, - 0x41786800, 0x0501fc7e, 0x6140080f, 0x42001000, - 0x0010510c, 0x0515f0ac, 0x4803c856, 0x59a800b6, - 0x80000540, 0x05020321, 0x1c01f000, 0x4803c856, - 0x6447503e, 0x91cca406, 0x4200a800, 0x0010e071, - 0x6014b000, 0x0541fabe, 0x4200a800, 0x0010e071, - 0x4600a800, 0x11020000, 0x8d0c0506, 0x05020041, - 0x59a80c49, 0x82040580, 0x0000ffff, 0x0500003d, - 0x90040d30, 0x05000005, 0x42000800, 0xffffd815, - 0x05edf8d2, 0x0501f037, 0x59cc0007, 0x8c00053c, - 0x05000034, 0x42024800, 0x0010e512, 0x0541faf9, - 0x59240200, 0xb0000d23, 0xb0040da3, 0x05020021, - 0x59240a08, 0x42001000, 0x0010e072, 0x0501fab6, - 0x05000009, 0x59240c08, 0x05e5fcf7, 0x59240200, - 0x84000502, 0x84000518, 0x84000544, 0x48024a00, - 0x0501f014, 0x59240200, 0x82000540, 0x00001006, - 0x84000506, 0x48024a00, 0x48064a08, 0x82042c00, - 0x00102853, 0x50142800, 0x82142d00, 0x000000ff, - 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, - 0x80140d40, 0x48064805, 0x40140800, 0x05e5fccf, - 0x91264c0d, 0x8058b040, 0x05fe07da, 0x42024800, - 0x0010e512, 0x59242a00, 0x8c140502, 0x05000005, - 0x8c140500, 0x05000003, 0x59242c08, 0x4817503d, - 0x60140800, 0x0501f2ff, 0x4c5c0000, 0x4178b800, - 0x59a800b6, 0x80000540, 0x05000021, 0x4803c857, - 0x42001000, 0x0010510c, 0x0515f87b, 0x59a800b6, - 0x90000594, 0x05020019, 0x59cc1006, 0x82081580, - 0x11030000, 0x05020015, 0x59cc1007, 0x8c08053e, - 0x0500000a, 0x59a80043, 0x8c000504, 0x05020007, - 0x42000000, 0x0010e39d, 0x0541f992, 0x59a80043, - 0x84000544, 0x48035043, 0x805cb9c0, 0x05000004, - 0x641b503e, 0x05fdfef7, 0x0501f005, 0x644b503e, - 0x0501f805, 0x0501f002, 0x0501faac, 0x5c00b800, - 0x1c01f000, 0x4803c856, 0x644f503e, 0x91cca407, - 0x4200a800, 0x0010e072, 0x6010b000, 0x0541fa48, - 0x4200a800, 0x0010e071, 0x4600a800, 0x11030000, - 0x8d0c0506, 0x0502006a, 0x42024800, 0x0010e512, - 0x0541fa90, 0x4c600000, 0x4178c000, 0x59a80249, - 0x82000500, 0xfffffffc, 0x48035249, 0x59240200, - 0x40000800, 0x82040d00, 0xfffffb17, 0x48064a00, - 0x8c000500, 0x05000048, 0x8c000518, 0x05020046, - 0x8c000502, 0x05020004, 0x59240400, 0x8c000502, - 0x05000041, 0x59240a08, 0x42001000, 0x0010e072, - 0x0501fa3d, 0x0500002b, 0x59240005, 0x82000500, - 0x00ffff00, 0x48024805, 0x59240200, 0x8c000502, - 0x05000019, 0x59240207, 0x82000500, 0x0000ffff, - 0x05000015, 0x8060c000, 0x59240c08, 0x05e5fc72, - 0x4c640000, 0x4c580000, 0x4d2c0000, 0x5924c809, - 0x6040b000, 0x50640000, 0x800001c0, 0x05000004, - 0x4578c800, 0x40025800, 0x05ddfaf8, 0x8064c800, - 0x8058b040, 0x05fe07f8, 0x5c025800, 0x5c00b000, - 0x5c00c800, 0x59240200, 0x84000502, 0x84000544, - 0x48024a00, 0x59240400, 0x8c000504, 0x05000016, - 0x59240200, 0x84000546, 0x48024a00, 0x0501f012, - 0x59240200, 0x90000546, 0x84000506, 0x48024a00, - 0x82042c00, 0x00102853, 0x50142800, 0x82142d00, - 0x000000ff, 0x48164c08, 0x59240005, 0x82000500, - 0x00ffff00, 0x80140d40, 0x48064805, 0x40140800, - 0x05e5fc36, 0x59240200, 0x84000518, 0x48024a00, - 0x91264c0d, 0x8058b040, 0x05fe07ad, 0x8060c1c0, - 0x05020b0b, 0x5c00c000, 0x42024800, 0x0010e512, - 0x59242a00, 0x8c140502, 0x05000005, 0x8c140500, - 0x05000003, 0x59242c08, 0x4817503d, 0x60140800, - 0x0501f260, 0x4c5c0000, 0x4178b800, 0x59a800b6, + 0x4a038805, 0x000000f0, 0x050df81d, 0x0509fc41, + 0x1c01f000, 0x4803c856, 0x42006000, 0xbf7fffff, + 0x42006800, 0x00400000, 0x0501fd7c, 0x05e5fc96, + 0x64075041, 0x42001000, 0x001053a5, 0x0515fc08, + 0x0501fcd6, 0x6140080f, 0x42001000, 0x00105303, + 0x0515f570, 0x59a800bb, 0x90000594, 0x0502001e, + 0x4803c857, 0x42006000, 0xffbfffff, 0x41786800, + 0x0501fd6a, 0x59c40004, 0x90000503, 0x05020016, + 0x42001000, 0x00105303, 0x0515fbe5, 0x59cc1006, + 0x82081580, 0x11020000, 0x05020010, 0x59cc1007, + 0x8c08053e, 0x0500000a, 0x59a80046, 0x8c000504, + 0x05020007, 0x42000000, 0x0011233e, 0x0545f860, + 0x59a80046, 0x84000544, 0x48035046, 0x64435041, + 0x0501f0dd, 0x1c01f000, 0x0501f3fb, 0x4803c856, + 0x640f5041, 0x42006000, 0xbf3fffff, 0x42006800, + 0x00100000, 0x0501fd49, 0x42001000, 0x001053a5, + 0x0515fbd7, 0x0501fca5, 0x42001000, 0x00105303, + 0x0515fbc3, 0x59a8044c, 0x90000528, 0x05000004, + 0x42000800, 0xffffd815, 0x05edf85f, 0x05e9fbc0, + 0x42007800, 0x0011200b, 0x46007800, 0x11020000, + 0x60140800, 0x0501f40e, 0x59a800bb, 0x80000540, + 0x0500001a, 0x4803c857, 0x42001000, 0x00105303, + 0x0515fbaf, 0x59a800bb, 0x90000594, 0x05020014, + 0x59cc1006, 0x82081580, 0x11020000, 0x05020010, + 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80046, + 0x8c000504, 0x05020007, 0x42000000, 0x0011233e, + 0x0545f827, 0x59a80046, 0x84000544, 0x48035046, + 0x64135041, 0x0501f003, 0x1c01f000, 0x0501f3c2, + 0x4803c856, 0x64175041, 0x0501f118, 0x4c5c0000, + 0x6004b800, 0x0501f0ee, 0x4803c856, 0x641f5041, + 0x0501f1b1, 0x4c5c0000, 0x6004b800, 0x0501f187, + 0x4803c856, 0x64275041, 0x91cca406, 0x4200a800, + 0x0011200b, 0x6014b000, 0x0545f8d8, 0x42007800, + 0x0011200b, 0x46007800, 0x11050100, 0x8d0c0506, + 0x05000244, 0x60140800, 0x0501fbd5, 0x4d3c0000, + 0x60067800, 0x0535fc79, 0x5c027800, 0x1c01f000, + 0x4c5c0000, 0x6004b800, 0x0501f1e6, 0x4803c856, + 0x642f5041, 0x42001000, 0x0011200c, 0x4008a800, + 0x6080b000, 0x4600a800, 0xffffffff, 0x8054a800, + 0x8058b040, 0x05fe07fc, 0x42007800, 0x0011200b, + 0x46007800, 0x11060000, 0x8d0c0506, 0x05000005, + 0x50080000, 0x46001000, 0x00ffffff, 0x0501f03e, + 0x42024800, 0x001124b6, 0x0545f901, 0x40083000, + 0x41782800, 0x41781800, 0x41782000, 0x59240200, + 0x8c000500, 0x05000012, 0x8c000502, 0x05000010, + 0x801429c0, 0x05020002, 0x800c1800, 0x80142800, + 0x59244408, 0x82204500, 0x000000ff, 0x400c0000, + 0x50182000, 0x0c01f810, 0x80102540, 0x44103000, + 0x800c19c0, 0x05020002, 0x80183000, 0x91264c0d, + 0x8058b040, 0x05fe07ea, 0x50080000, 0x82000500, + 0x00ffffff, 0x801428f0, 0x80140540, 0x44001000, + 0x0501f019, 0x00104f99, 0x00104f9e, 0x00104fa3, + 0x00104fa8, 0x802000f0, 0x82102500, 0x00ffffff, + 0x800c1800, 0x1c01f000, 0x802000e0, 0x82102500, + 0xff00ffff, 0x800c1800, 0x1c01f000, 0x802000d0, + 0x82102500, 0xffff00ff, 0x800c1800, 0x1c01f000, + 0x40200000, 0x82102500, 0xffffff00, 0x41781800, + 0x1c01f000, 0x60840800, 0x0501f379, 0x4c5c0000, + 0x6004b800, 0x0501f224, 0x4803c856, 0x64375041, + 0x91cca406, 0x4200a800, 0x0011200b, 0x6084b000, + 0x0545f86a, 0x42007800, 0x0011200b, 0x46007800, + 0x11070000, 0x60840800, 0x0501f369, 0x4c5c0000, + 0x6004b800, 0x0501f274, 0x4803c856, 0x90040d41, + 0x0501fc96, 0x643f5041, 0x497b50bb, 0x42006000, + 0xffffffff, 0x42006800, 0x00300000, 0x0501fc83, + 0x42006000, 0xffdfffff, 0x41786800, 0x0501fc7f, + 0x6140080f, 0x42001000, 0x00105303, 0x0515f2d0, + 0x4803c856, 0x59a800bb, 0x80000540, 0x05020322, + 0x1c01f000, 0x4803c856, 0x64475041, 0x91cca406, + 0x4200a800, 0x0011200b, 0x6014b000, 0x0545f843, + 0x4200a800, 0x0011200b, 0x4600a800, 0x11020000, + 0x8d0c0506, 0x05020041, 0x59a80c4c, 0x82040580, + 0x0000ffff, 0x0500003d, 0x90040d30, 0x05000005, + 0x42000800, 0xffffd815, 0x05e9ff83, 0x0501f037, + 0x59cc0007, 0x8c00053c, 0x05000034, 0x42024800, + 0x001124b6, 0x0545f87e, 0x59240200, 0xb0000d23, + 0xb0040da3, 0x05020021, 0x59240a08, 0x42001000, + 0x0011200c, 0x0501fab7, 0x05000009, 0x59240c08, + 0x05e5fb81, 0x59240200, 0x84000502, 0x84000518, + 0x84000544, 0x48024a00, 0x0501f014, 0x59240200, + 0x82000540, 0x00001006, 0x84000506, 0x48024a00, + 0x48064a08, 0x82042c00, 0x001028fb, 0x50142800, + 0x82142d00, 0x000000ff, 0x48164c08, 0x59240005, + 0x82000500, 0x00ffff00, 0x80140d40, 0x48064805, + 0x40140800, 0x05e5fb59, 0x91264c0d, 0x8058b040, + 0x05fe07da, 0x42024800, 0x001124b6, 0x59242a00, + 0x8c140502, 0x05000005, 0x8c140500, 0x05000003, + 0x59242c08, 0x48175040, 0x05e9faad, 0x60140800, + 0x0501f2ff, 0x4c5c0000, 0x4178b800, 0x59a800bb, 0x80000540, 0x05000021, 0x4803c857, 0x42001000, - 0x0010510c, 0x0511ffdc, 0x59a800b6, 0x90000594, - 0x05020019, 0x59cc1006, 0x82081580, 0x11040000, + 0x00105303, 0x0515fa9e, 0x59a800bb, 0x90000594, + 0x05020019, 0x59cc1006, 0x82081580, 0x11030000, 0x05020015, 0x59cc1007, 0x8c08053e, 0x0500000a, - 0x59a80043, 0x8c000504, 0x05020007, 0x42000000, - 0x0010e39d, 0x0541f8f3, 0x59a80043, 0x84000544, - 0x48035043, 0x805cb9c0, 0x05000004, 0x6423503e, - 0x05fdfe5e, 0x0501f005, 0x6453503e, 0x0501f805, - 0x0501f002, 0x0501fa0d, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x6457503e, 0x91cca407, 0x4200a800, - 0x0010e072, 0x6010b000, 0x0541f9a9, 0x4200a800, - 0x0010e071, 0x4600a800, 0x11040000, 0x8d0c0506, - 0x05020041, 0x42024800, 0x0010e512, 0x0541f9f1, - 0x59240400, 0x8c000500, 0x0500002f, 0x59240200, - 0x8c000500, 0x0500002c, 0x8c000502, 0x0502002a, - 0x59240c00, 0x80040910, 0x82040d00, 0x000000ff, - 0x42001000, 0x0010e072, 0x0501f9a7, 0x05000010, + 0x59a80046, 0x8c000504, 0x05020007, 0x42000000, + 0x0011233e, 0x0541ff16, 0x59a80046, 0x84000544, + 0x48035046, 0x805cb9c0, 0x05000004, 0x641b5041, + 0x05fdfef6, 0x0501f005, 0x644b5041, 0x0501f805, + 0x0501f002, 0x0501faac, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x644f5041, 0x91cca407, 0x4200a800, + 0x0011200c, 0x6010b000, 0x0541ffcc, 0x4200a800, + 0x0011200b, 0x4600a800, 0x11030000, 0x8d0c0506, + 0x0502006a, 0x42024800, 0x001124b6, 0x0545f814, + 0x4c600000, 0x4178c000, 0x59a8024c, 0x82000500, + 0xfffffffc, 0x4803524c, 0x59240200, 0x40000800, + 0x82040d00, 0xfffffb17, 0x48064a00, 0x8c000500, + 0x05000048, 0x8c000518, 0x05020046, 0x8c000502, + 0x05020004, 0x59240400, 0x8c000502, 0x05000041, + 0x59240a08, 0x42001000, 0x0011200c, 0x0501fa3d, + 0x0500002b, 0x59240005, 0x82000500, 0x00ffff00, + 0x48024805, 0x59240200, 0x8c000502, 0x05000019, + 0x59240207, 0x82000500, 0x0000ffff, 0x05000015, + 0x8060c000, 0x59240c08, 0x05e5fafb, 0x4c640000, + 0x4c580000, 0x4d2c0000, 0x5924c809, 0x6040b000, + 0x50640000, 0x800001c0, 0x05000004, 0x4578c800, + 0x40025800, 0x05ddf938, 0x8064c800, 0x8058b040, + 0x05fe07f8, 0x5c025800, 0x5c00b000, 0x5c00c800, + 0x59240200, 0x84000502, 0x84000544, 0x48024a00, + 0x59240400, 0x8c000504, 0x05000016, 0x59240200, + 0x84000546, 0x48024a00, 0x0501f012, 0x59240200, + 0x90000546, 0x84000506, 0x48024a00, 0x82042c00, + 0x001028fb, 0x50142800, 0x82142d00, 0x000000ff, + 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, + 0x80140d40, 0x48064805, 0x40140800, 0x05e5fabf, + 0x59240200, 0x84000518, 0x48024a00, 0x91264c0d, + 0x8058b040, 0x05fe07ad, 0x8060c1c0, 0x05020b0b, + 0x5c00c000, 0x42024800, 0x001124b6, 0x59242a00, + 0x8c140502, 0x05000005, 0x8c140500, 0x05000003, + 0x59242c08, 0x48175040, 0x60140800, 0x0501f260, + 0x4c5c0000, 0x4178b800, 0x59a800bb, 0x80000540, + 0x05000021, 0x4803c857, 0x42001000, 0x00105303, + 0x0515f9ff, 0x59a800bb, 0x90000594, 0x05020019, + 0x59cc1006, 0x82081580, 0x11040000, 0x05020015, + 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80046, + 0x8c000504, 0x05020007, 0x42000000, 0x0011233e, + 0x0541fe77, 0x59a80046, 0x84000544, 0x48035046, + 0x805cb9c0, 0x05000004, 0x64235041, 0x05fdfe5d, + 0x0501f005, 0x64535041, 0x0501f805, 0x0501f002, + 0x0501fa0d, 0x5c00b800, 0x1c01f000, 0x4803c856, + 0x64575041, 0x91cca407, 0x4200a800, 0x0011200c, + 0x6010b000, 0x0541ff2d, 0x4200a800, 0x0011200b, + 0x4600a800, 0x11040000, 0x8d0c0506, 0x05020041, + 0x42024800, 0x001124b6, 0x0541ff75, 0x59240400, + 0x8c000500, 0x0500002f, 0x59240200, 0x8c000500, + 0x0500002c, 0x8c000502, 0x0502002a, 0x59240c00, + 0x80040910, 0x82040d00, 0x000000ff, 0x42001000, + 0x0011200c, 0x0501f9a7, 0x05000010, 0x59240005, + 0x82000500, 0x00ffff00, 0x48024805, 0x59240200, + 0x84000502, 0x48024a00, 0x59242400, 0x8c100504, + 0x05000018, 0x84000546, 0x84000544, 0x48024a00, + 0x8060c000, 0x0501f013, 0x59240200, 0x90000546, + 0x84000506, 0x48024a00, 0x48064a08, 0x82042c00, + 0x001028fb, 0x50142800, 0x82142d00, 0x000000ff, + 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, + 0x80140d40, 0x48064805, 0x40140800, 0x05e5fa43, + 0x91264c0d, 0x8058b040, 0x05fe07cd, 0x42024800, + 0x001124b6, 0x59242a00, 0x8c140502, 0x05000005, + 0x8c140500, 0x05000003, 0x59242c08, 0x48175040, + 0x60140800, 0x0501f1ea, 0x4c5c0000, 0x4178b800, + 0x59a800bb, 0x80000540, 0x05000040, 0x4803c857, + 0x42001000, 0x00105303, 0x0515f989, 0x59a800bb, + 0x90000594, 0x05020038, 0x59cc1006, 0x82080500, + 0x11050000, 0x82000580, 0x11050000, 0x05020032, + 0x8c080510, 0x05000013, 0x0501fb08, 0x59cc1007, + 0x8c08053e, 0x0500000a, 0x59a80046, 0x8c000504, + 0x05020007, 0x42000000, 0x0011233e, 0x0541fdfc, + 0x59a80046, 0x84000544, 0x48035046, 0x805cb9c0, + 0x05000014, 0x642b5041, 0x05fdfdf9, 0x0501f01f, + 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80046, + 0x8c000504, 0x05020007, 0x42000000, 0x0011233e, + 0x0541fdeb, 0x59a80046, 0x84000544, 0x48035046, + 0x90000541, 0x0501fae9, 0x497b50b7, 0x0501f002, + 0x640750b7, 0x59cc1007, 0x8c08053c, 0x05000002, + 0x6423524c, 0x805cb9c0, 0x05020004, 0x645b5041, + 0x0501f808, 0x0501f005, 0x643b5041, 0x05fdfe43, + 0x0501f002, 0x0501f978, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x91cca406, 0x4200a800, 0x0011200b, + 0x6014b000, 0x0541fe99, 0x645f5041, 0x59a800b7, + 0x8c000500, 0x05000006, 0x42001000, 0x0011200b, + 0x46001000, 0x11050100, 0x0501f002, 0x646f5041, + 0x8d0c0506, 0x05020037, 0x42024800, 0x001124b6, + 0x0541fedb, 0x59240200, 0x8c000500, 0x05000025, + 0x8c000502, 0x05020023, 0x8c000506, 0x05020021, + 0x4c580000, 0x0501f8c2, 0x5c00b000, 0x0502000b, 0x59240005, 0x82000500, 0x00ffff00, 0x48024805, - 0x59240200, 0x84000502, 0x48024a00, 0x59242400, - 0x8c100504, 0x05000018, 0x84000546, 0x84000544, - 0x48024a00, 0x8060c000, 0x0501f013, 0x59240200, - 0x90000546, 0x84000506, 0x48024a00, 0x48064a08, - 0x82042c00, 0x00102853, 0x50142800, 0x82142d00, - 0x000000ff, 0x48164c08, 0x59240005, 0x82000500, - 0x00ffff00, 0x80140d40, 0x48064805, 0x40140800, - 0x05e5fbba, 0x91264c0d, 0x8058b040, 0x05fe07cd, - 0x42024800, 0x0010e512, 0x59242a00, 0x8c140502, - 0x05000005, 0x8c140500, 0x05000003, 0x59242c08, - 0x4817503d, 0x60140800, 0x0501f1ea, 0x4c5c0000, - 0x4178b800, 0x59a800b6, 0x80000540, 0x05000040, - 0x4803c857, 0x42001000, 0x0010510c, 0x0511ff66, - 0x59a800b6, 0x90000594, 0x05020038, 0x59cc1006, - 0x82080500, 0x11050000, 0x82000580, 0x11050000, - 0x05020032, 0x8c080510, 0x05000013, 0x0501fb08, - 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80043, - 0x8c000504, 0x05020007, 0x42000000, 0x0010e39d, - 0x0541f878, 0x59a80043, 0x84000544, 0x48035043, - 0x805cb9c0, 0x05000014, 0x642b503e, 0x05fdfdfa, - 0x0501f01f, 0x59cc1007, 0x8c08053e, 0x0500000a, - 0x59a80043, 0x8c000504, 0x05020007, 0x42000000, - 0x0010e39d, 0x0541f867, 0x59a80043, 0x84000544, - 0x48035043, 0x90000541, 0x0501fae9, 0x497b50b2, - 0x0501f002, 0x640750b2, 0x59cc1007, 0x8c08053c, - 0x05000002, 0x64235249, 0x805cb9c0, 0x05020004, - 0x645b503e, 0x0501f808, 0x0501f005, 0x643b503e, - 0x05fdfe44, 0x0501f002, 0x0501f978, 0x5c00b800, - 0x1c01f000, 0x4803c856, 0x91cca406, 0x4200a800, - 0x0010e071, 0x6014b000, 0x0541f915, 0x645f503e, - 0x59a800b2, 0x8c000500, 0x05000006, 0x42001000, - 0x0010e071, 0x46001000, 0x11050100, 0x0501f002, - 0x646f503e, 0x8d0c0506, 0x05020037, 0x42024800, - 0x0010e512, 0x0541f957, 0x59240200, 0x8c000500, - 0x05000025, 0x8c000502, 0x05020023, 0x8c000506, - 0x05020021, 0x4c580000, 0x0501f8c2, 0x5c00b000, - 0x0502000b, 0x59240005, 0x82000500, 0x00ffff00, - 0x48024805, 0x59240200, 0x84000502, 0x84000546, - 0x84000544, 0x48024a00, 0x0501f013, 0x59240200, - 0x90000546, 0x84000506, 0x48024a00, 0x48064a08, - 0x82042c00, 0x00102853, 0x50142800, 0x82142d00, - 0x000000ff, 0x48164c08, 0x59240005, 0x82000500, - 0x00ffff00, 0x80140d40, 0x48064805, 0x40140800, - 0x05e5fb2a, 0x91264c0d, 0x8058b040, 0x05fe07d7, - 0x42024800, 0x0010e512, 0x59242a00, 0x8c140502, - 0x05000005, 0x8c140500, 0x05000003, 0x59242c08, - 0x4817503d, 0x60140800, 0x0501f95a, 0x4d3c0000, - 0x60067800, 0x0531fe4e, 0x5c027800, 0x1c01f000, - 0x4c5c0000, 0x4178b800, 0x59a800b6, 0x80000540, - 0x05000018, 0x4803c857, 0x42001000, 0x0010510c, - 0x0511fed1, 0x59a800b6, 0x82000580, 0x00000084, - 0x0502000f, 0x59cc1006, 0x82081580, 0x11060000, - 0x0502000b, 0x80000580, 0x0501fa75, 0x805cb9c0, - 0x05000004, 0x6433503e, 0x05fdfdca, 0x0501f005, - 0x6463503e, 0x0501f805, 0x0501f002, 0x0501f90b, - 0x5c00b800, 0x1c01f000, 0x4803c856, 0x6467503e, - 0x91cca406, 0x4200a800, 0x0010e071, 0x6084b000, - 0x0541f8a7, 0x42003800, 0x0010e072, 0x42024800, - 0x0010e512, 0x4200b000, 0x0010e511, 0x5058b000, - 0x59240200, 0x8c000500, 0x05000019, 0x8c000502, - 0x05000017, 0x401c2800, 0x50141000, 0x80080130, - 0x80000000, 0x40001800, 0x82081500, 0x00ffffff, - 0x800000f0, 0x80080540, 0x44002800, 0x59244408, - 0x82204500, 0x000000ff, 0x400c1000, 0x80081104, - 0x82083400, 0x0010e072, 0x50181000, 0x900c0503, - 0x0c01f808, 0x80081540, 0x44083000, 0x91264c0d, - 0x8058b040, 0x05fe07e3, 0x60840800, 0x0501f109, - 0x0010502c, 0x00105030, 0x00105034, 0x00105038, - 0x802000f0, 0x82081500, 0x00ffffff, 0x1c01f000, - 0x802000e0, 0x82081500, 0xff00ffff, 0x1c01f000, - 0x802000d0, 0x82081500, 0xffff00ff, 0x1c01f000, - 0x40200000, 0x82081500, 0xffffff00, 0x1c01f000, - 0x4c5c0000, 0x4178b800, 0x59a800b6, 0x80000540, - 0x05000018, 0x4803c857, 0x42001000, 0x0010510c, - 0x0511fe71, 0x59a800b6, 0x82000580, 0x00000084, - 0x0502000f, 0x59cc1006, 0x82081580, 0x11070000, - 0x0502000b, 0x640750b2, 0x0501f897, 0x805cb9c0, - 0x05000004, 0x643b503e, 0x05fdfd7a, 0x0501f005, - 0x646b503e, 0x0501f805, 0x0501f002, 0x0501f8ab, - 0x5c00b800, 0x1c01f000, 0x90000541, 0x0501fa08, - 0x646f503e, 0x91cca406, 0x4200a800, 0x0010e071, - 0x59a820b6, 0x40100000, 0x8000b104, 0x40580800, - 0x5450a800, 0x8050a000, 0x8054a800, 0x8058b040, - 0x05fe07fc, 0x0501f0c7, 0x1c01f000, 0x1c01f000, - 0x4803c856, 0x60103000, 0x42004000, 0x0010e072, - 0x599c2817, 0x8c140514, 0x0502001c, 0x600c1000, - 0x40200000, 0x80080400, 0x50000800, 0x82042580, - 0xffffffff, 0x05020005, 0x80081040, 0x80183040, - 0x05fe07f8, 0x0501f03f, 0x800811c0, 0x05020006, - 0x82042580, 0x3fffffff, 0x05000039, 0x82040d40, - 0xc0000000, 0x6080b000, 0x60041800, 0x40042000, - 0x80102102, 0x0502101f, 0x800c18c2, 0x8058b040, - 0x05fe07fc, 0x0501f02e, 0x41781000, 0x40200000, + 0x59240200, 0x84000502, 0x84000546, 0x84000544, + 0x48024a00, 0x0501f013, 0x59240200, 0x90000546, + 0x84000506, 0x48024a00, 0x48064a08, 0x82042c00, + 0x001028fb, 0x50142800, 0x82142d00, 0x000000ff, + 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, + 0x80140d40, 0x48064805, 0x40140800, 0x05e5f9b3, + 0x91264c0d, 0x8058b040, 0x05fe07d7, 0x42024800, + 0x001124b6, 0x59242a00, 0x8c140502, 0x05000005, + 0x8c140500, 0x05000003, 0x59242c08, 0x48175040, + 0x60140800, 0x0501f95a, 0x4d3c0000, 0x60067800, + 0x0535f9fe, 0x5c027800, 0x1c01f000, 0x4c5c0000, + 0x4178b800, 0x59a800bb, 0x80000540, 0x05000018, + 0x4803c857, 0x42001000, 0x00105303, 0x0515f8f4, + 0x59a800bb, 0x82000580, 0x00000084, 0x0502000f, + 0x59cc1006, 0x82081580, 0x11060000, 0x0502000b, + 0x80000580, 0x0501fa75, 0x805cb9c0, 0x05000004, + 0x64335041, 0x05fdfdc9, 0x0501f005, 0x64635041, + 0x0501f805, 0x0501f002, 0x0501f90b, 0x5c00b800, + 0x1c01f000, 0x4803c856, 0x64675041, 0x91cca406, + 0x4200a800, 0x0011200b, 0x6084b000, 0x0541fe2b, + 0x42003800, 0x0011200c, 0x42024800, 0x001124b6, + 0x4200b000, 0x001124b5, 0x5058b000, 0x59240200, + 0x8c000500, 0x05000019, 0x8c000502, 0x05000017, + 0x401c2800, 0x50141000, 0x80080130, 0x80000000, + 0x40001800, 0x82081500, 0x00ffffff, 0x800000f0, + 0x80080540, 0x44002800, 0x59244408, 0x82204500, + 0x000000ff, 0x400c1000, 0x80081104, 0x82083400, + 0x0011200c, 0x50181000, 0x900c0503, 0x0c01f808, + 0x80081540, 0x44083000, 0x91264c0d, 0x8058b040, + 0x05fe07e3, 0x60840800, 0x0501f109, 0x00105223, + 0x00105227, 0x0010522b, 0x0010522f, 0x802000f0, + 0x82081500, 0x00ffffff, 0x1c01f000, 0x802000e0, + 0x82081500, 0xff00ffff, 0x1c01f000, 0x802000d0, + 0x82081500, 0xffff00ff, 0x1c01f000, 0x40200000, + 0x82081500, 0xffffff00, 0x1c01f000, 0x4c5c0000, + 0x4178b800, 0x59a800bb, 0x80000540, 0x05000018, + 0x4803c857, 0x42001000, 0x00105303, 0x0515f894, + 0x59a800bb, 0x82000580, 0x00000084, 0x0502000f, + 0x59cc1006, 0x82081580, 0x11070000, 0x0502000b, + 0x640750b7, 0x0501f897, 0x805cb9c0, 0x05000004, + 0x643b5041, 0x05fdfd79, 0x0501f005, 0x646b5041, + 0x0501f805, 0x0501f002, 0x0501f8ab, 0x5c00b800, + 0x1c01f000, 0x90000541, 0x0501fa08, 0x646f5041, + 0x91cca406, 0x4200a800, 0x0011200b, 0x59a820bb, + 0x40100000, 0x8000b104, 0x40580800, 0x5450a800, + 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07fc, + 0x0501f0c7, 0x1c01f000, 0x1c01f000, 0x4803c856, + 0x60103000, 0x42004000, 0x0011200c, 0x599c2817, + 0x8c140514, 0x0502001c, 0x600c1000, 0x40200000, 0x80080400, 0x50000800, 0x82042580, 0xffffffff, - 0x05020005, 0x80081000, 0x80183040, 0x05fe07f8, - 0x0501f023, 0x800811c0, 0x05020003, 0x82040d40, - 0xc0000000, 0x6004b000, 0x42001800, 0x80000000, - 0x40042000, 0x801020c2, 0x05021006, 0x800c1902, - 0x8058b000, 0x905804a1, 0x05fc17fb, 0x0501f014, - 0x40200000, 0x80082400, 0x50100000, 0x800c0540, - 0x44002000, 0x59a80043, 0x84000540, 0x48035043, - 0x40580000, 0x60802800, 0x80142c80, 0x40080000, - 0x600c3800, 0x801c0480, 0x800000ca, 0x80142d40, - 0x40140800, 0x90000541, 0x0501f002, 0x80000580, - 0x1c01f000, 0x4807c857, 0x480bc857, 0x40041800, - 0x41782000, 0x600c0000, 0x900c1ca0, 0x05001004, - 0x80102000, 0x80000040, 0x05fdf7fc, 0x40041800, - 0x801021c0, 0x05000004, 0x900c1ca0, 0x80102040, - 0x05fe07fe, 0x60042000, 0x800c19c0, 0x05000004, - 0x801020c2, 0x800c1840, 0x05fe07fe, 0x80083c00, - 0x401c2800, 0x50140000, 0x80102d00, 0x05020007, - 0x80100540, 0x44003800, 0x59a80043, 0x84000540, - 0x48035043, 0x80000580, 0x1c01f000, 0x4807c856, - 0x605c1100, 0x59a81864, 0x053dff04, 0x05f9fef9, - 0x1c01f000, 0x4807c856, 0x6080b000, 0x91cca407, - 0x4200a800, 0x00110258, 0x053df7f8, 0x4807c856, - 0x0519ff69, 0x61dc0801, 0x0501f8d4, 0x497b2804, - 0x497b2805, 0x497b2826, 0x497b2827, 0x6006d800, - 0x42006000, 0xbe7fffff, 0x42006800, 0x00018000, - 0x0501f95f, 0x42006000, 0xfffeffff, 0x41786800, - 0x0501f95b, 0x497b5064, 0x60b40800, 0x42001000, - 0x00105184, 0x0511f588, 0x4807c856, 0x05fdffe8, - 0x497b503e, 0x497b50b6, 0x1c01f000, 0x4807c856, - 0x42006000, 0xffffffff, 0x60a06800, 0x0501f14c, - 0x4807c856, 0x05fdffd2, 0x0519fc05, 0x4df00000, - 0x0519fe92, 0x5c03e000, 0x05180bf2, 0x59c400a4, - 0x9000050f, 0x90000582, 0x0502000a, 0x42006000, - 0xffffffff, 0x42006800, 0x00200000, 0x0501f93c, - 0x42006000, 0xffdfffff, 0x41786800, 0x0501f938, - 0x497b503e, 0x61dc0801, 0x0501f8a0, 0x59c400a3, - 0x82000500, 0xbf20bfff, 0x82000540, 0x0001c000, - 0x480388a3, 0x84000520, 0x480388a3, 0x497b5064, - 0x60b40800, 0x42001000, 0x00105184, 0x0511f55a, - 0x497b50b6, 0x59b400f5, 0x8c000500, 0x05020003, - 0x90000541, 0x480368f5, 0x800400c4, 0x82000400, - 0x00002000, 0x4803910a, 0x59b400f6, 0x90000518, - 0x05fe07fe, 0x4a0368f0, 0x0010e06a, 0x42000000, - 0x0010e071, 0x4c040000, 0x40043800, 0x50000800, - 0x82040d80, 0x11010000, 0x0500000c, 0x50000800, - 0x4807c857, 0x8d0c052a, 0x05000008, 0x4c000000, - 0x821c3d40, 0x0000dc00, 0x42000000, 0x0010e06b, - 0x05d9fda3, 0x5c000000, 0x5c000800, 0x480368f1, - 0x82040400, 0x0000dc00, 0x480368f3, 0x59c408a4, - 0x90040d0f, 0x90040588, 0x05020013, 0x4c5c0000, - 0x4c600000, 0x59c4b805, 0x8c5c053a, 0x05020004, - 0x42000000, 0x0010e39a, 0x053dfe7a, 0x4a038805, - 0x20000000, 0x05e5fd27, 0x4000c000, 0x05e5fc6e, - 0x6006d800, 0x497b503e, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x9004058c, 0x05000015, 0x59c8010b, - 0x8c000502, 0x05fc07e6, 0x90040d8b, 0x05020005, - 0x59a8083e, 0x82040d40, 0x00002000, 0x0501f004, - 0x59a808b1, 0x82040d40, 0x00001000, 0x48075064, - 0x59a808bc, 0x800409c0, 0x05020005, 0x6140080f, - 0x42001000, 0x0010510c, 0x0511fe66, 0x1c01f000, - 0x4807c856, 0x05fdff5a, 0x0519fb8d, 0x4df00000, - 0x0519fe1a, 0x5c03e000, 0x05180b7a, 0x59c400a4, - 0x9000050f, 0x90000582, 0x0502000a, 0x42006000, - 0xffffffff, 0x42006800, 0x00200000, 0x0501f8c4, - 0x42006000, 0xffdfffff, 0x41786800, 0x0501f8c0, - 0x0505ff1c, 0x05000010, 0x0505ff26, 0x0502000e, - 0x4a035041, 0x0000aaaa, 0x4c040000, 0x05e5f98f, - 0x59a8004d, 0x82000500, 0xffff0000, 0x80040540, - 0x4803504d, 0x5c000800, 0x64035042, 0x0505fe8a, - 0x0501f005, 0x641750b4, 0x60000001, 0x05e5f8d9, - 0x05fdff3f, 0x1c01f000, 0x0501f809, 0x42006000, - 0xbf7f7fff, 0x41786800, 0x0501f0a5, 0x42006000, - 0xbf7f7fff, 0x41786800, 0x0501f0a1, 0x0505ff09, - 0x05020009, 0x59c40006, 0x82000540, 0x000000f0, - 0x48038806, 0x42006000, 0xbfffffff, 0x41786800, - 0x0501f897, 0x1c01f000, 0x800408d0, 0x59a80043, - 0x8c000506, 0x05000006, 0x59a8003d, 0x82000500, - 0x000000ff, 0x80040540, 0x0501f003, 0x82040540, - 0x000000f7, 0x480388a7, 0x1c01f000, 0x4807c856, - 0x42000000, 0x0010e432, 0x053dfe0a, 0x60143000, - 0x4d3c0000, 0x4c180000, 0x60343000, 0x600a7800, - 0x0501f04f, 0x4807c856, 0x42000000, 0x0010e45c, - 0x053dfe00, 0x60003000, 0x4d3c0000, 0x4c180000, - 0x603c3000, 0x61fc19ff, 0x601c2000, 0x05f9fe65, - 0x5c003000, 0x59240200, 0x84000556, 0x48024a00, - 0x4d400000, 0x60aa8000, 0x59240400, 0x8c00050a, - 0x05380dbd, 0x600a7800, 0x05e9fc77, 0x5c028000, - 0x5c027800, 0x0005f7dc, 0x4807c856, 0x053dff38, - 0x0500000b, 0x4d400000, 0x4d200000, 0x05e9fc20, - 0x60068000, 0x60001802, 0x600c2800, 0x60040000, - 0x0505fc54, 0x5c024000, 0x5c028000, 0x42000000, - 0x0010e45a, 0x053dfddb, 0x600c3000, 0x4d3c0000, - 0x4c180000, 0x60383000, 0x600a7804, 0x0501f020, - 0x4807c856, 0x053dff22, 0x0500000b, 0x4d400000, - 0x4d200000, 0x05e9fc0a, 0x60068000, 0x60001802, - 0x60402800, 0x60040000, 0x0505fc3e, 0x5c024000, - 0x5c028000, 0x42000000, 0x0010e459, 0x053dfdc5, - 0x60103000, 0x4d3c0000, 0x4c180000, 0x60403000, - 0x600a7804, 0x0501f00a, 0x4807c856, 0x42000000, - 0x0010e39c, 0x053dfdbb, 0x60043000, 0x4d3c0000, - 0x4c180000, 0x60303000, 0x600a7800, 0x61fc19ff, - 0x601c2000, 0x4d200000, 0x417a4000, 0x05f9fe1d, - 0x5c024000, 0x5c003000, 0x4d400000, 0x053dfb65, - 0x60aa8000, 0x05e9f8a1, 0x4c580000, 0x053dfec5, - 0x42000800, 0x0010e512, 0x58040005, 0x82000500, - 0x000000ff, 0x48000805, 0x90040c0d, 0x8058b040, - 0x05fe07fa, 0x5c00b000, 0x5c028000, 0x5c027800, - 0x1c01f000, 0x4807c856, 0x05011000, 0x4a03c840, - 0x0010e06a, 0x6503c842, 0x40000000, 0x05fd17ff, - 0x42007800, 0x0010e06a, 0x64447800, 0x803c7800, - 0x4a007800, 0x220000ef, 0x4a007801, 0x000000ef, - 0x4a007802, 0x01380000, 0x64007803, 0x4a007804, - 0xffffffff, 0x64007805, 0x1c01f000, 0x59c400a3, - 0x80300500, 0x80340540, 0x480388a3, 0x1c01f000, - 0x4833c857, 0x59c400a3, 0x80300540, 0x480388a3, - 0x80300580, 0x480388a3, 0x1c01f000, 0x4803c856, - 0x05000003, 0x640750bd, 0x0501f002, 0x497b50bd, - 0x1c01f000, 0x59c80002, 0x80000540, 0x05000009, - 0x80000040, 0x05000007, 0x4a039005, 0x00000140, - 0x60300000, 0x80000040, 0x05fe07ff, 0x05fdf7f6, - 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x59c4b805, - 0x485fc856, 0x8c5c053a, 0x05020004, 0x42000000, - 0x0010e39a, 0x053dfd5f, 0x4a038805, 0x20000000, - 0x05e5fc0c, 0x4000c000, 0x05e5fb53, 0x4a038805, - 0x04000000, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x497a6a00, 0x0501faf4, 0x4a026c00, 0x00000707, - 0x497a6801, 0x497a6808, 0x497a6809, 0x497a6806, - 0x497a6807, 0x497a6c0b, 0x497a680c, 0x59240400, - 0x8c00050a, 0x05000005, 0x5934080f, 0x59340010, - 0x80040540, 0x05da0b41, 0x4a026a04, 0x00000100, - 0x497a6a03, 0x59340402, 0x82000500, 0x000000ff, - 0x48026c02, 0x497a6c04, 0x497a6a05, 0x497a6c05, - 0x497a6811, 0x4d2c0000, 0x5934000d, 0x49466c03, - 0x80025d40, 0x05000003, 0x05d9fef1, 0x497a680d, - 0x5c025800, 0x599c0401, 0x48026a0b, 0x599c0208, - 0x48026c12, 0x4a02680a, 0x00008000, 0x0505f1fb, - 0x60140000, 0x80000d80, 0x0501f024, 0x0501ff90, - 0x05020013, 0x59a80249, 0x8c00050a, 0x0502000d, - 0x59340212, 0x82000500, 0x0000ff00, 0x4803c857, - 0x05000008, 0x59340a00, 0x8c04051e, 0x000002be, - 0x60a40000, 0x60000820, 0x492fc857, 0x0501f013, - 0x492fc857, 0x60a00000, 0x0501f00e, 0x8d0c0502, - 0x05020003, 0x8d0c0500, 0x05000003, 0x60100000, - 0x0501f008, 0x60a40000, 0x59340a00, 0x8c04051e, - 0x05000004, 0x492fc857, 0x60000820, 0x0501f003, - 0x492fc857, 0x80000d80, 0x4803c857, 0x80028540, - 0x1c01f000, 0x490fc857, 0x8d0c0500, 0x05fe07f0, - 0x0501ff45, 0x05fe07ea, 0x59340200, 0x8c00050e, - 0x05fc07e7, 0x0001f2be, 0x4d480000, 0x4d4c0000, - 0x592e900c, 0x592e980d, 0x0501fc9f, 0x5c029800, - 0x5c029000, 0x05fc07c7, 0x0001f2c1, 0x492fc857, - 0x592e8c0a, 0x83440d80, 0x000007fc, 0x05000004, - 0x83440480, 0x000007f0, 0x05021018, 0x592e440b, - 0x050df861, 0x05000f80, 0x05020014, 0x0509ff48, - 0x05020012, 0x0501ff34, 0x05020012, 0x0521f904, - 0x05000019, 0x83200400, 0x0010d17b, 0x50024800, - 0x4926601d, 0x59340002, 0x4802600b, 0x4936600a, - 0x492e6009, 0x642a6407, 0x61027000, 0x0009f800, - 0x80000580, 0x0501f00b, 0x60a00000, 0x0501f008, - 0x0501ff37, 0x05fc07fd, 0x910c0d03, 0x05000003, - 0x60100000, 0x0501f002, 0x60a40000, 0x80000540, - 0x1c01f000, 0x60b00000, 0x05fdf7fd, 0x492fc857, - 0x592e440b, 0x4923c857, 0x050df83b, 0x592c420b, - 0x0500000a, 0x60380000, 0x59240a00, 0x8c040500, - 0x05000198, 0x90200d0f, 0x90040d88, 0x05020195, - 0x90200d30, 0x05000193, 0x592e8c0a, 0x4947c857, - 0x83440c80, 0x00000800, 0x60280000, 0x0502118d, - 0x4823c857, 0x9020050f, 0x0c01f001, 0x00105346, - 0x001053d9, 0x00105428, 0x00105430, 0x00105438, - 0x00105343, 0x00105343, 0x00105343, 0x00105442, - 0x0010549f, 0x001054bb, 0x00105343, 0x00105343, - 0x00105343, 0x00105343, 0x00105343, 0x4803c857, - 0x60300000, 0x0501f177, 0x592c100c, 0x82081500, - 0x00ffffff, 0x0501fdc4, 0x0500002d, 0x4803c857, - 0x90004d9d, 0x05020016, 0x0509fcb5, 0x59340405, - 0x4c000000, 0x0501fed4, 0x5c000000, 0x05000004, - 0x8c20050a, 0x05000022, 0x80000580, 0x44002800, - 0x59340008, 0x48002802, 0x59340009, 0x48002801, - 0x59340006, 0x48002804, 0x59340007, 0x48002803, - 0x6014b000, 0x052dffb9, 0x0501f17d, 0x4803c857, - 0x90004d9a, 0x05020003, 0x40101000, 0x0501f15a, - 0x4803c857, 0x90004d9b, 0x05020003, 0x40181000, - 0x0501f155, 0x4803c857, 0x90004d9f, 0x05000156, - 0x90004d9c, 0x05000154, 0x90004d99, 0x60280000, - 0x05000148, 0x60280000, 0x05020159, 0x59a800d1, - 0x8c000502, 0x05000016, 0x0501feab, 0x05000014, - 0x59340212, 0x82000500, 0x0000ff00, 0x60401000, - 0x0502000b, 0x60201000, 0x59a80249, 0x8c000506, - 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, - 0x82000580, 0x00ff0000, 0x05000005, 0x0505f924, - 0x60700000, 0x40181000, 0x05020133, 0x0521f874, - 0x0500013b, 0x82200500, 0x00000100, 0x0501fe3e, - 0x4926601d, 0x4936600a, 0x052dfcf9, 0x492e6009, - 0x64066407, 0x8c20050a, 0x05000004, 0x592c0408, - 0x8400055c, 0x48025c08, 0x4c200000, 0x4d3c0000, - 0x60027830, 0x05e5ff8b, 0x5c027800, 0x5c004000, - 0x592c100c, 0x82081500, 0x00ffffff, 0x59240005, - 0x80081d80, 0x0502001c, 0x4a026c00, 0x00000404, - 0x497a6a05, 0x497a6c05, 0x8c20050a, 0x05020006, - 0x4a026c00, 0x00000606, 0x4a026a05, 0x00002000, - 0x648a6c05, 0x59240001, 0x59240802, 0x48026806, - 0x48066807, 0x59240003, 0x59240804, 0x48026808, - 0x48066809, 0x59a80004, 0x48026a04, 0x0505f90f, - 0x0005ffdc, 0x592c0408, 0x8400051c, 0x48025c08, - 0x0501f11b, 0x8c200512, 0x0500000b, 0x599c0018, + 0x05020005, 0x80081040, 0x80183040, 0x05fe07f8, + 0x0501f03f, 0x800811c0, 0x05020006, 0x82042580, + 0x3fffffff, 0x05000039, 0x82040d40, 0xc0000000, + 0x6080b000, 0x60041800, 0x40042000, 0x80102102, + 0x0502101f, 0x800c18c2, 0x8058b040, 0x05fe07fc, + 0x0501f02e, 0x41781000, 0x40200000, 0x80080400, + 0x50000800, 0x82042580, 0xffffffff, 0x05020005, + 0x80081000, 0x80183040, 0x05fe07f8, 0x0501f023, + 0x800811c0, 0x05020003, 0x82040d40, 0xc0000000, + 0x6004b000, 0x42001800, 0x80000000, 0x40042000, + 0x801020c2, 0x05021006, 0x800c1902, 0x8058b000, + 0x905804a1, 0x05fc17fb, 0x0501f014, 0x40200000, + 0x80082400, 0x50100000, 0x800c0540, 0x44002000, + 0x59a80046, 0x84000540, 0x48035046, 0x40580000, + 0x60802800, 0x80142c80, 0x40080000, 0x600c3800, + 0x801c0480, 0x800000ca, 0x80142d40, 0x40140800, + 0x90000541, 0x0501f002, 0x80000580, 0x1c01f000, + 0x4807c857, 0x480bc857, 0x40041800, 0x41782000, + 0x600c0000, 0x900c1ca0, 0x05001004, 0x80102000, + 0x80000040, 0x05fdf7fc, 0x40041800, 0x801021c0, + 0x05000004, 0x900c1ca0, 0x80102040, 0x05fe07fe, + 0x60042000, 0x800c19c0, 0x05000004, 0x801020c2, + 0x800c1840, 0x05fe07fe, 0x80083c00, 0x401c2800, + 0x50140000, 0x80102d00, 0x05020007, 0x80100540, + 0x44003800, 0x59a80046, 0x84000540, 0x48035046, + 0x80000580, 0x1c01f000, 0x4807c856, 0x605c1100, + 0x59a81867, 0x0541fc88, 0x05f9fe9f, 0x1c01f000, + 0x4807c856, 0x6080b000, 0x91cca407, 0x4200a800, + 0x001141fc, 0x0541f57c, 0x4807c856, 0x051dfa30, + 0x61dc0801, 0x0501f8d4, 0x497b2804, 0x497b2805, + 0x497b2826, 0x497b2827, 0x6006d800, 0x42006000, + 0xbe7fffff, 0x42006800, 0x00018000, 0x0501f95f, + 0x42006000, 0xfffeffff, 0x41786800, 0x0501f95b, + 0x497b5067, 0x60b40800, 0x42001000, 0x0010537b, + 0x0511f7ab, 0x4807c856, 0x05fdffe8, 0x497b5041, + 0x497b50bb, 0x1c01f000, 0x4807c856, 0x42006000, + 0xffffffff, 0x60a06800, 0x0501f14c, 0x4807c856, + 0x05fdffd2, 0x0519fecc, 0x4df00000, 0x051df959, + 0x5c03e000, 0x05180eb9, 0x59c400a4, 0x9000050f, + 0x90000582, 0x0502000a, 0x42006000, 0xffffffff, + 0x42006800, 0x00200000, 0x0501f93c, 0x42006000, + 0xffdfffff, 0x41786800, 0x0501f938, 0x497b5041, + 0x61dc0801, 0x0501f8a0, 0x59c400a3, 0x82000500, + 0xbf20bfff, 0x82000540, 0x0001c000, 0x480388a3, + 0x84000520, 0x480388a3, 0x497b5067, 0x60b40800, + 0x42001000, 0x0010537b, 0x0511f77d, 0x497b50bb, + 0x59b400f5, 0x8c000500, 0x05020003, 0x90000541, + 0x480368f5, 0x800400c4, 0x82000400, 0x00002000, + 0x4803910a, 0x59b400f6, 0x90000518, 0x05fe07fe, + 0x4a0368f0, 0x00112004, 0x42000000, 0x0011200b, + 0x4c040000, 0x40043800, 0x50000800, 0x82040d80, + 0x11010000, 0x0500000c, 0x50000800, 0x4807c857, + 0x8d0c052a, 0x05000008, 0x4c000000, 0x821c3d40, + 0x0000dc00, 0x42000000, 0x00112005, 0x05d9fbdb, + 0x5c000000, 0x5c000800, 0x480368f1, 0x82040400, + 0x0000dc00, 0x480368f3, 0x59c408a4, 0x90040d0f, + 0x90040588, 0x05020013, 0x4c5c0000, 0x4c600000, + 0x59c4b805, 0x8c5c053a, 0x05020004, 0x42000000, + 0x0011233b, 0x0541fbfe, 0x4a038805, 0x20000000, + 0x05e5fbb0, 0x4000c000, 0x05e5faf7, 0x6006d800, + 0x497b5041, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x9004058c, 0x05000015, 0x59c8010b, 0x8c000502, + 0x05fc07e6, 0x90040d8b, 0x05020005, 0x59a80841, + 0x82040d40, 0x00002000, 0x0501f004, 0x59a808b6, + 0x82040d40, 0x00001000, 0x48075067, 0x59a808c1, + 0x800409c0, 0x05020005, 0x6140080f, 0x42001000, + 0x00105303, 0x0515f8d3, 0x1c01f000, 0x4807c856, + 0x05fdff5a, 0x0519fe54, 0x4df00000, 0x051df8e1, + 0x5c03e000, 0x05180e41, 0x59c400a4, 0x9000050f, + 0x90000582, 0x0502000a, 0x42006000, 0xffffffff, + 0x42006800, 0x00200000, 0x0501f8c4, 0x42006000, + 0xffdfffff, 0x41786800, 0x0501f8c0, 0x0509f80f, + 0x05000010, 0x0509f819, 0x0502000e, 0x4a035044, + 0x0000aaaa, 0x4c040000, 0x05e5f818, 0x59a80050, + 0x82000500, 0xffff0000, 0x80040540, 0x48035050, + 0x5c000800, 0x64035045, 0x0505ff77, 0x0501f005, + 0x641750b9, 0x60000001, 0x05e1ff62, 0x05fdff3f, + 0x1c01f000, 0x0501f809, 0x42006000, 0xbf7f7fff, + 0x41786800, 0x0501f0a5, 0x42006000, 0xbf7f7fff, + 0x41786800, 0x0501f0a1, 0x0505fffc, 0x05020009, + 0x59c40006, 0x82000540, 0x000000f0, 0x48038806, + 0x42006000, 0xbfffffff, 0x41786800, 0x0501f897, + 0x1c01f000, 0x800408d0, 0x59a80046, 0x8c000506, + 0x05000006, 0x59a80040, 0x82000500, 0x000000ff, + 0x80040540, 0x0501f003, 0x82040540, 0x000000f7, + 0x480388a7, 0x1c01f000, 0x4807c856, 0x42000000, + 0x001123d3, 0x0541fb8e, 0x60143000, 0x4d3c0000, + 0x4c180000, 0x60343000, 0x600a7800, 0x0501f04f, + 0x4807c856, 0x42000000, 0x00112400, 0x0541fb84, + 0x60003000, 0x4d3c0000, 0x4c180000, 0x603c3000, + 0x61fc19ff, 0x601c2000, 0x05f9fe0b, 0x5c003000, + 0x59240200, 0x84000556, 0x48024a00, 0x4d400000, + 0x60aa8000, 0x59240400, 0x8c00050a, 0x053c0b0d, + 0x600a7800, 0x05e9fb26, 0x5c028000, 0x5c027800, + 0x0009f010, 0x4807c856, 0x0541fcbc, 0x0500000b, + 0x4d400000, 0x4d200000, 0x05e9fac5, 0x60068000, + 0x60001802, 0x600c2800, 0x60040000, 0x0505fd41, + 0x5c024000, 0x5c028000, 0x42000000, 0x001123fe, + 0x0541fb5f, 0x600c3000, 0x4d3c0000, 0x4c180000, + 0x60383000, 0x600a7804, 0x0501f020, 0x4807c856, + 0x0541fca6, 0x0500000b, 0x4d400000, 0x4d200000, + 0x05e9faaf, 0x60068000, 0x60001802, 0x60402800, + 0x60040000, 0x0505fd2b, 0x5c024000, 0x5c028000, + 0x42000000, 0x001123fd, 0x0541fb49, 0x60103000, + 0x4d3c0000, 0x4c180000, 0x60403000, 0x600a7804, + 0x0501f00a, 0x4807c856, 0x42000000, 0x0011233d, + 0x0541fb3f, 0x60043000, 0x4d3c0000, 0x4c180000, + 0x60303000, 0x600a7800, 0x61fc19ff, 0x601c2000, + 0x4d200000, 0x417a4000, 0x05f9fdc3, 0x5c024000, + 0x5c003000, 0x4d400000, 0x0541f8cb, 0x60aa8000, + 0x05e5ff3d, 0x4c580000, 0x0541fc49, 0x42000800, + 0x001124b6, 0x58040005, 0x82000500, 0x000000ff, + 0x48000805, 0x90040c0d, 0x8058b040, 0x05fe07fa, + 0x5c00b000, 0x5c028000, 0x5c027800, 0x1c01f000, + 0x4807c856, 0x05011000, 0x4a03c840, 0x00112004, + 0x6503c842, 0x40000000, 0x05fd17ff, 0x42007800, + 0x00112004, 0x64447800, 0x803c7800, 0x4a007800, + 0x220000ef, 0x4a007801, 0x000000ef, 0x4a007802, + 0x01380000, 0x64007803, 0x4a007804, 0xffffffff, + 0x64007805, 0x1c01f000, 0x59c400a3, 0x80300500, + 0x80340540, 0x480388a3, 0x1c01f000, 0x4833c857, + 0x59c400a3, 0x80300540, 0x480388a3, 0x80300580, + 0x480388a3, 0x1c01f000, 0x4803c856, 0x05000003, + 0x640750c2, 0x0501f002, 0x497b50c2, 0x1c01f000, + 0x59c80002, 0x80000540, 0x05000009, 0x80000040, + 0x05000007, 0x4a039005, 0x00000140, 0x60300000, + 0x80000040, 0x05fe07ff, 0x05fdf7f6, 0x1c01f000, + 0x4c5c0000, 0x4c600000, 0x59c4b805, 0x485fc856, + 0x8c5c053a, 0x05020004, 0x42000000, 0x0011233b, + 0x0541fae3, 0x4a038805, 0x20000000, 0x05e5fa95, + 0x4000c000, 0x05e5f9dc, 0x4a038805, 0x04000000, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x497a6a00, + 0x0501fb37, 0x4a026c00, 0x00000707, 0x497a6801, + 0x497a6808, 0x497a6809, 0x497a6806, 0x497a6807, + 0x497a6c0b, 0x497a680c, 0x59240400, 0x8c00050a, + 0x05000005, 0x5934080f, 0x59340010, 0x80040540, + 0x05da0985, 0x4a026a04, 0x00000100, 0x497a6a03, + 0x59340402, 0x82000500, 0x000000ff, 0x48026c02, + 0x497a6c04, 0x497a6a05, 0x497a6c05, 0x497a6811, + 0x4d2c0000, 0x5934000d, 0x49466c03, 0x80025d40, + 0x05000003, 0x05d9fd31, 0x497a680d, 0x5c025800, + 0x599c0401, 0x48026a0b, 0x599c0208, 0x48026c12, + 0x4a02680a, 0x00008000, 0x0505f2d9, 0x60140000, + 0x80000d80, 0x0501f024, 0x0505f862, 0x05020013, + 0x59a8024c, 0x8c00050a, 0x0502000d, 0x59340212, + 0x82000500, 0x0000ff00, 0x4803c857, 0x05000008, + 0x59340a00, 0x8c04051e, 0x000002c6, 0x60a40000, + 0x60000820, 0x492fc857, 0x0501f013, 0x492fc857, + 0x60a00000, 0x0501f00e, 0x8d0c0502, 0x05020003, + 0x8d0c0500, 0x05000003, 0x60100000, 0x0501f008, + 0x60a40000, 0x59340a00, 0x8c04051e, 0x05000004, + 0x492fc857, 0x60000820, 0x0501f003, 0x492fc857, + 0x80000d80, 0x4803c857, 0x80028540, 0x1c01f000, + 0x490fc857, 0x8d0c0500, 0x05fe07f0, 0x0505f817, + 0x05fe07ea, 0x59340200, 0x8c00050e, 0x05fc07e7, + 0x0001f2c6, 0x4d480000, 0x4d4c0000, 0x592e900c, + 0x592e980d, 0x0501fd12, 0x5c029800, 0x5c029000, + 0x05fc07c7, 0x0001f2c9, 0x492fc857, 0x592e8c0a, + 0x83440d80, 0x000007fc, 0x0500000c, 0x83440480, + 0x000007f0, 0x05001009, 0x83440480, 0x00000800, + 0x0500101d, 0x8d0c0538, 0x0500001b, 0x59a800ad, + 0x81440480, 0x05021018, 0x592e440b, 0x050df9ca, + 0x0504084a, 0x05020014, 0x050df8b1, 0x05020012, + 0x0501fffe, 0x05020012, 0x0521fc1a, 0x05000019, + 0x83200400, 0x0010d8f9, 0x50024800, 0x4926601d, + 0x59340002, 0x4802600b, 0x4936600a, 0x492e6009, + 0x642a6407, 0x61027000, 0x0009f839, 0x80000580, + 0x0501f00b, 0x60a00000, 0x0501f008, 0x0505f801, + 0x05fc07fd, 0x910c0d03, 0x05000003, 0x60100000, + 0x0501f002, 0x60a40000, 0x80000540, 0x1c01f000, + 0x60b00000, 0x05fdf7fd, 0x492fc857, 0x592e440b, + 0x4923c857, 0x050df9a4, 0x592c420b, 0x0500000a, + 0x60380000, 0x59240a00, 0x8c040500, 0x050001a8, + 0x90200d0f, 0x90040d88, 0x050201a5, 0x90200d30, + 0x050001a3, 0x592e8c0a, 0x4947c857, 0x59a800ad, + 0x81440480, 0x60280000, 0x0502119d, 0x4823c857, + 0x9020050f, 0x0c01f001, 0x00105545, 0x001055e1, + 0x00105635, 0x0010563d, 0x00105645, 0x00105542, + 0x00105542, 0x00105542, 0x0010564f, 0x001056ae, + 0x001056ca, 0x00105542, 0x00105542, 0x00105542, + 0x00105542, 0x00105542, 0x4803c857, 0x60300000, + 0x0501f187, 0x592c100c, 0x82081500, 0x00ffffff, + 0x0501fe37, 0x0500002f, 0x4803c857, 0x90004d9d, + 0x05020016, 0x0509fdc9, 0x59340405, 0x4c000000, + 0x0501ff9e, 0x5c000000, 0x05000004, 0x8c20050a, + 0x05000024, 0x80000580, 0x44002800, 0x59340008, + 0x48002802, 0x59340009, 0x48002801, 0x59340006, + 0x48002804, 0x59340007, 0x48002803, 0x6014b000, + 0x0531fb60, 0x0501f191, 0x4803c857, 0x90004d9a, + 0x05020003, 0x40101000, 0x0501f16e, 0x4803c857, + 0x90004d9b, 0x05020003, 0x40181000, 0x0501f169, + 0x4803c857, 0x90004da0, 0x0500016a, 0x90004d9f, + 0x05000168, 0x90004d9c, 0x05000166, 0x90004d99, + 0x60280000, 0x05000156, 0x60280000, 0x0502016b, + 0x59a800d6, 0x8c000502, 0x05000016, 0x0501ff73, + 0x05000014, 0x59340212, 0x82000500, 0x0000ff00, + 0x60401000, 0x0502000b, 0x60201000, 0x59a8024c, + 0x8c000506, 0x05020008, 0x59340002, 0x82000500, + 0x00ff0000, 0x82000580, 0x00ff0000, 0x05000005, + 0x0505f9f8, 0x60700000, 0x40181000, 0x05020141, + 0x0521fb88, 0x0500014d, 0x82200500, 0x00000100, + 0x0501ff02, 0x4926601d, 0x4936600a, 0x0531f890, + 0x492e6009, 0x64066407, 0x8c20050a, 0x05000004, + 0x592c0408, 0x8400055c, 0x48025c08, 0x4c200000, + 0x4d3c0000, 0x60027830, 0x05e5fe21, 0x5c027800, + 0x5c004000, 0x592c100c, 0x82081500, 0x00ffffff, + 0x59240005, 0x80081d80, 0x0502001c, 0x4a026c00, + 0x00000404, 0x497a6a05, 0x497a6c05, 0x8c20050a, + 0x05020006, 0x4a026c00, 0x00000606, 0x4a026a05, + 0x00002000, 0x648a6c05, 0x59240001, 0x59240802, + 0x48026806, 0x48066807, 0x59240003, 0x59240804, + 0x48026808, 0x48066809, 0x59a80004, 0x48026a04, + 0x0505f9e3, 0x0009f810, 0x592c0408, 0x8400051c, + 0x48025c08, 0x0501f12d, 0x8c20050a, 0x05020006, + 0x8c200514, 0x05000004, 0x48226216, 0x592c0a0d, + 0x4806601e, 0x8c200512, 0x0500000b, 0x599c0018, 0x8c000518, 0x05000008, 0x592c000d, 0x82000500, 0x00000380, 0x5934080a, 0x80040d40, 0x84040d54, - 0x4806680a, 0x417a7800, 0x0501f911, 0x600c0800, - 0x0501f919, 0x600a7000, 0x0009f800, 0x80000580, - 0x0501f10a, 0x0501fea0, 0x050200f5, 0x0501fe50, - 0x05000009, 0x0501fe48, 0x050200f5, 0x4c600000, - 0x4178c000, 0x60027830, 0x417a6000, 0x05e5ffc1, + 0x4806680a, 0x417a7800, 0x0501f91c, 0x600c0800, + 0x0501f924, 0x600a7000, 0x0009f839, 0x80000580, + 0x0501f115, 0x0501ff61, 0x05020100, 0x0501ff11, + 0x05000009, 0x0501ff09, 0x05020100, 0x4c600000, + 0x4178c000, 0x60027830, 0x417a6000, 0x05e5fe50, 0x5c00c000, 0x592c100c, 0x82081500, 0x00ffffff, 0x59240005, 0x80084d80, 0x05020007, 0x4a026c00, 0x00000606, 0x4a026a05, 0x00002000, 0x648a6c05, - 0x0501f0ef, 0x59a800d1, 0x8c000502, 0x05000016, - 0x0501fe31, 0x05000014, 0x59340212, 0x82000500, + 0x0501f0fa, 0x59a800d6, 0x8c000502, 0x05000016, + 0x0501fef2, 0x05000014, 0x59340212, 0x82000500, 0x0000ff00, 0x60401000, 0x0502000b, 0x60201000, - 0x59a80249, 0x8c000506, 0x05020008, 0x59340002, + 0x59a8024c, 0x8c000506, 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, - 0x05000005, 0x0505f8aa, 0x60700000, 0x40181000, - 0x050200b9, 0x051dfffa, 0x050000c1, 0x5934080a, + 0x05000005, 0x0505f977, 0x60700000, 0x40181000, + 0x050200c0, 0x0521fb07, 0x050000cc, 0x5934080a, 0x8c200512, 0x0500000c, 0x599c0018, 0x8c000518, 0x05000009, 0x592c000d, 0x82000500, 0x00000380, 0x82041500, 0xfffffc7f, 0x80080d40, 0x84040d54, 0x0501f002, 0x84040d14, 0x4806680a, 0x4926601d, - 0x4936600a, 0x052dfc72, 0x492e6009, 0x64066407, - 0x417a7800, 0x0501f8c2, 0x60140800, 0x0501f8ca, - 0x600e7000, 0x0009f800, 0x80000580, 0x0501f0bb, - 0x0501fe51, 0x050200a6, 0x0501fe10, 0x050200a8, - 0x052dfe17, 0x0500009e, 0x80000580, 0x0501f0b3, - 0x0501fe49, 0x0502009e, 0x0501fe08, 0x050200a0, - 0x052df937, 0x05000096, 0x80000580, 0x0501f0ab, - 0x0501fe41, 0x05020096, 0x83444d80, 0x000007fe, - 0x60280000, 0x0502007f, 0x052dfe19, 0x0500008c, - 0x80000580, 0x0501f0a1, 0xb0200530, 0x05020004, - 0x8c20050e, 0x60300000, 0x05020076, 0x8c20050a, - 0x0500000f, 0x4d3c0000, 0x600278a0, 0x8c20050e, - 0x05020003, 0x853e7d56, 0x853e7d1c, 0x82200500, - 0x000004a0, 0x42026000, 0x00111a70, 0x492e6009, - 0x0501fda3, 0x5c027800, 0x0501f089, 0x8c200508, - 0x0502001a, 0x592c100c, 0x82081500, 0x00ffffff, - 0x0501fcb1, 0x05000027, 0x4803c857, 0x90004d9a, - 0x05020003, 0x40101000, 0x0501f05f, 0x4803c857, - 0x90004d9b, 0x05020003, 0x40181000, 0x0501f05a, - 0x4803c857, 0x90004d9f, 0x0500005b, 0x90004d9c, - 0x05000059, 0x90004d99, 0x60280000, 0x0500004d, - 0x60280000, 0x0501f05e, 0x0501fe07, 0x0502005c, - 0x4d3c0000, 0x600278a0, 0x8c20050e, 0x05020003, - 0x853e7d56, 0x853e7d1c, 0x82200500, 0x00000090, - 0x42026000, 0x00111a70, 0x492e6009, 0x0501fd60, - 0x5c027800, 0x60280000, 0x0502003a, 0x0501f05c, - 0x592c100c, 0x82081500, 0x00ffffff, 0x59240005, - 0x80084d80, 0x05020003, 0x84204548, 0x05fdf7e9, - 0x916c0583, 0x601c0800, 0x05020005, 0x052dfd6c, - 0x05000009, 0x80000580, 0x0501f050, 0x42026000, - 0x00111a70, 0x492e6009, 0x0501fdc8, 0x05000045, - 0x0501f047, 0x42026000, 0x00111a70, 0x492e6009, - 0x0501fdc2, 0x0500002e, 0x0501f041, 0x0501fdda, - 0x0502002f, 0x916c0583, 0x05020036, 0x8c200508, - 0x05000008, 0x4c600000, 0x4178c000, 0x60027830, - 0x417a6000, 0x05e5fefb, 0x5c00c000, 0x0501f034, - 0x0501fd7f, 0x05000009, 0x0501fd77, 0x05020024, + 0x4936600a, 0x0531f802, 0x8c200514, 0x05000004, + 0x48226216, 0x592c0a0d, 0x4806601e, 0x492e6009, + 0x64066407, 0x417a7800, 0x0501f8c8, 0x60140800, + 0x0501f8d0, 0x600e7000, 0x0009f839, 0x80000580, + 0x0501f0c1, 0x0501ff0d, 0x050200ac, 0x0501fecc, + 0x050200ae, 0x0531f9a9, 0x050000a4, 0x80000580, + 0x0501f0b9, 0x0501ff05, 0x050200a4, 0x0501fec4, + 0x050200a6, 0x052dfcc3, 0x0500009c, 0x80000580, + 0x0501f0b1, 0x0501fefd, 0x0502009c, 0x83444d80, + 0x000007fe, 0x60280000, 0x05020081, 0x0531f9ab, + 0x05000092, 0x80000580, 0x0501f0a7, 0xb0200530, + 0x05020004, 0x8c20050e, 0x60300000, 0x05020078, + 0x8c20050a, 0x0500000f, 0x4d3c0000, 0x600278a0, + 0x8c20050e, 0x05020003, 0x853e7d56, 0x853e7d1c, + 0x82200500, 0x000004a0, 0x42026000, 0x00115a14, + 0x492e6009, 0x0501fe5b, 0x5c027800, 0x0501f08f, + 0x8c200508, 0x0502001c, 0x592c100c, 0x82081500, + 0x00ffffff, 0x0501fd16, 0x05000029, 0x4803c857, + 0x90004d9a, 0x05020003, 0x40101000, 0x0501f061, + 0x4803c857, 0x90004d9b, 0x05020003, 0x40181000, + 0x0501f05c, 0x4803c857, 0x90004da0, 0x05000061, + 0x90004d9f, 0x0500005f, 0x90004d9c, 0x0500005d, + 0x90004d99, 0x60280000, 0x0500004d, 0x60280000, + 0x0501f062, 0x0501fec1, 0x05020060, 0x4d3c0000, + 0x600278a0, 0x8c20050e, 0x05020003, 0x853e7d56, + 0x853e7d1c, 0x82200500, 0x00000090, 0x42026000, + 0x00115a14, 0x492e6009, 0x0501fe16, 0x5c027800, + 0x60280000, 0x0502003a, 0x0501f060, 0x592c100c, + 0x82081500, 0x00ffffff, 0x59240005, 0x80084d80, + 0x05020003, 0x84204548, 0x05fdf7e9, 0x916c0583, + 0x601c0800, 0x05020005, 0x0531f8fc, 0x05000009, + 0x80000580, 0x0501f054, 0x42026000, 0x00115a14, + 0x492e6009, 0x0501fe82, 0x05000049, 0x0501f04b, + 0x42026000, 0x00115a14, 0x492e6009, 0x0501fe7c, + 0x05000032, 0x0501f045, 0x0501fe94, 0x05020033, + 0x916c0583, 0x0502003a, 0x8c200508, 0x05000008, 0x4c600000, 0x4178c000, 0x60027830, 0x417a6000, - 0x05e5fef0, 0x5c00c000, 0x480bc856, 0x052dfbea, - 0x05000013, 0x80000580, 0x0501f028, 0x05fdf7e4, - 0x480bc857, 0x60640800, 0x40001000, 0x6008b000, - 0x0501f008, 0x480bc857, 0x40000800, 0x6008b000, - 0x0501f004, 0x480bc857, 0x40000800, 0x6004b000, - 0x480bc857, 0x60c68000, 0x0501f017, 0x480bc857, - 0x600c0800, 0x6004b000, 0x05fdf7fa, 0x480bc857, - 0x60280800, 0x6004b000, 0x05fdf7f6, 0x480bc857, - 0x60240800, 0x40001000, 0x6008b000, 0x05fdf7f1, - 0x480bc857, 0x601c0800, 0x6004b000, 0x05fdf7ed, - 0x480bc857, 0x6004b000, 0x05fdf7ea, 0x80028580, - 0x4178b000, 0x90000541, 0x1c01f000, 0x4937c857, - 0x5932680a, 0x59341200, 0x813e79c0, 0x05000003, - 0x84081540, 0x0501f002, 0x84081500, 0x480a6a00, - 0x1c01f000, 0x5932680a, 0x5c000000, 0x4c000000, - 0x4803c857, 0x4937c857, 0x83340580, 0x00110210, - 0x0500001f, 0x90040586, 0x05020003, 0x6018000c, - 0x0501f014, 0x90040584, 0x05020003, 0x60100008, - 0x0501f010, 0x90040587, 0x601c000e, 0x0500000d, - 0x90040583, 0x600c000e, 0x0500000a, 0x90040585, - 0x60140008, 0x05000007, 0x90040589, 0x60240008, - 0x05000004, 0x9004058b, 0x602c000e, 0x05da08cf, - 0x4803c857, 0x48026c00, 0x90040d86, 0x05020004, - 0x59341404, 0x800811c0, 0x05d808c8, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4947c857, - 0x481bc857, 0x83440480, 0x00000800, 0x0502105f, - 0x83200400, 0x0010d17b, 0x50024800, 0x59240009, - 0x83441480, 0x000007f0, 0x05001003, 0x80081400, - 0x0501f003, 0x83441400, 0x0010d400, 0x50080000, + 0x05e5fd83, 0x5c00c000, 0x0501f038, 0x0501fe39, + 0x05000009, 0x0501fe31, 0x05020028, 0x4c600000, + 0x4178c000, 0x60027830, 0x417a6000, 0x05e5fd78, + 0x5c00c000, 0x480bc856, 0x052dff73, 0x05000017, + 0x80000580, 0x0501f02c, 0x05fdf7e4, 0x480bc857, + 0x60640800, 0x40001000, 0x6008b000, 0x0501f00c, + 0x480bc857, 0x40000800, 0x6008b000, 0x0501f008, + 0x480fc857, 0x40000800, 0x600cb000, 0x0501f004, + 0x480bc857, 0x40000800, 0x6004b000, 0x480bc857, + 0x60c68000, 0x0501f017, 0x480bc857, 0x600c0800, + 0x6004b000, 0x05fdf7fa, 0x480bc857, 0x60280800, + 0x6004b000, 0x05fdf7f6, 0x480bc857, 0x60240800, + 0x40001000, 0x6008b000, 0x05fdf7f1, 0x480bc857, + 0x601c0800, 0x6004b000, 0x05fdf7ed, 0x480bc857, + 0x6004b000, 0x05fdf7ea, 0x80028580, 0x4178b000, + 0x90000541, 0x1c01f000, 0x4937c857, 0x5932680a, + 0x59341200, 0x813e79c0, 0x05000003, 0x84081540, + 0x0501f002, 0x84081500, 0x480a6a00, 0x1c01f000, + 0x5932680a, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4937c857, 0x83340580, 0x001141b4, 0x0500001f, + 0x90040586, 0x05020003, 0x6018000c, 0x0501f014, + 0x90040584, 0x05020003, 0x60100008, 0x0501f010, + 0x90040587, 0x601c000e, 0x0500000d, 0x90040583, + 0x600c000e, 0x0500000a, 0x90040585, 0x60140008, + 0x05000007, 0x90040589, 0x60240008, 0x05000004, + 0x9004058b, 0x602c000e, 0x05d60ef7, 0x4803c857, + 0x48026c00, 0x90040d86, 0x05020004, 0x59341404, + 0x800811c0, 0x05d40ef0, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4947c857, 0x481bc857, + 0x42001800, 0x80000000, 0x0501f007, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4947c857, 0x481bc857, + 0x41781800, 0x59a800ad, 0x81440480, 0x0502107d, + 0x83200400, 0x0010d8f9, 0x50024800, 0x59240009, + 0x83441480, 0x000007f0, 0x0500100f, 0x83440c80, + 0x00000800, 0x0500100a, 0x83441400, 0x0010db80, + 0x4c080000, 0x4c0c0000, 0x0001fb08, 0x5c001800, + 0x5c001000, 0x0502000d, 0x0501f008, 0x80081400, + 0x0501f003, 0x83441400, 0x0010db80, 0x50080000, 0x80026d40, 0x05000005, 0x59340013, 0x80000130, - 0x81200580, 0x0500001e, 0x4c180000, 0x4d2c0000, - 0x05d9fc41, 0x412e6800, 0x5c025800, 0x5c003000, - 0x05000046, 0x59242005, 0x812000f0, 0x80102540, + 0x81200580, 0x05000030, 0x4c180000, 0x4d2c0000, + 0x800c19c0, 0x05000003, 0x05d9fa5f, 0x0501f002, + 0x05d9fa4c, 0x412e6800, 0x5c025800, 0x5c003000, + 0x05000054, 0x59242005, 0x812000f0, 0x80102540, 0x48126813, 0x5924200b, 0x82100500, 0x00001fff, 0x800000c2, 0x82102500, 0xffffe000, 0x80100540, 0x48026814, 0x59242207, 0x80102000, 0x48124a07, - 0x45341000, 0x497a680d, 0x497a6810, 0x497a680f, - 0x4c180000, 0x05fdfd3f, 0x5c003000, 0x59340a12, - 0x4c040000, 0x0505fb61, 0x5c000800, 0x05000009, - 0x82180500, 0x00ffff00, 0x05000008, 0x59a8103d, - 0x82081500, 0x00ffff00, 0x80080580, 0x05000003, - 0x80000580, 0x0501f004, 0x82180500, 0x000000ff, - 0x800000d0, 0x80040d80, 0x05000003, 0x4803c857, - 0x48026a12, 0x59340813, 0x59242005, 0x801021c0, - 0x05000008, 0x812000f0, 0x80102540, 0x40040000, - 0x80100580, 0x05000003, 0x4813c857, 0x48126813, - 0x83440580, 0x000007fe, 0x05020004, 0x4a026802, - 0x00fffffe, 0x0501f006, 0x59340002, 0x80180580, - 0x05000003, 0x481bc857, 0x481a6802, 0x0501f806, - 0x80000580, 0x1c01f000, 0x4803c856, 0x90000541, - 0x05fdf7fd, 0x59341200, 0x84081508, 0x5934000a, - 0x8c00050c, 0x0502000b, 0x599c0018, 0x8c000510, - 0x05000009, 0x59a80006, 0x8c00050a, 0x05000005, - 0x59340c03, 0x82040480, 0x000007f0, 0x05001002, - 0x84081548, 0x480a6a00, 0x1c01f000, 0x4947c857, - 0x83440480, 0x00000800, 0x05021018, 0x83200400, - 0x0010d17b, 0x50024800, 0x59240009, 0x83441480, - 0x000007f0, 0x05001003, 0x80081400, 0x0501f003, - 0x83441400, 0x0010d400, 0x50080000, 0x80026d40, - 0x05000009, 0x0501fc84, 0x05020008, 0x8d0c0502, - 0x05000004, 0x59340200, 0x8c00050e, 0x05000003, - 0x90000541, 0x1c01f000, 0x80000580, 0x05fdf7fe, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4947c857, - 0x4d2c0000, 0x4d300000, 0x83440580, 0x0000ffff, - 0x0500001c, 0x83440480, 0x00000800, 0x0502101d, - 0x83441400, 0x0010d400, 0x50080000, 0x80026d40, - 0x05000014, 0x45781000, 0x5934000d, 0x80025d40, - 0x05da0bdb, 0x59366011, 0x813261c0, 0x0500000a, - 0x4c640000, 0x5930c800, 0x59325809, 0x0529ff02, - 0x05da0bd3, 0x0005ffdc, 0x90666540, 0x05fe07fa, - 0x5c00c800, 0x0501fee1, 0x41365800, 0x05d9fbc4, - 0x80000580, 0x5c026000, 0x5c025800, 0x1c01f000, - 0x90000541, 0x05fdf7fc, 0x4c580000, 0x59cc0001, - 0x4937c857, 0x82000500, 0x00ffffff, 0x48026802, - 0x497a6c01, 0x497a6a01, 0x59340200, 0x82000500, - 0xffffdffd, 0x48026a00, 0x4004b000, 0x0505facb, - 0x05020012, 0x59340403, 0x82000580, 0x000007fe, - 0x05000005, 0x59a80249, 0x8c00050a, 0x0502000b, - 0x0501f008, 0x59cc0408, 0x8c000518, 0x05000007, - 0x59cc0009, 0x4803505a, 0x59cc000a, 0x4803505b, - 0x8058b1c0, 0x05020001, 0x59cc0a09, 0x90040d10, - 0x59cc0408, 0x90000520, 0x05000005, 0x84040d40, - 0x59a81249, 0x8408155a, 0x480b5249, 0x5934000a, - 0x82000500, 0xffffffee, 0x80040540, 0x4802680a, - 0x91cca40b, 0x9134ac06, 0x6008b000, 0x053dfaa0, - 0x91cca40d, 0x9134ac08, 0x6008b000, 0x053dfa9c, - 0x59a820d0, 0x82100d00, 0x0000f000, 0x82040d80, - 0x00003000, 0x05020017, 0x59cc0013, 0x8c00053e, - 0x05000014, 0x59cc0414, 0x599c0818, 0x8c040512, - 0x0500000e, 0x8c00051e, 0x05000005, 0x59340200, - 0x84000546, 0x84000544, 0x48026a00, 0x59cc0213, - 0x8c000516, 0x05000005, 0x59340200, 0x8400054c, - 0x84000544, 0x48026a00, 0x59cc0a14, 0x0501f005, - 0x59340200, 0x84000508, 0x48026a00, 0x59cc0a18, - 0x59a80006, 0x8c00050c, 0x05020013, 0x82040480, - 0x00000800, 0x0502100a, 0x82040480, 0x00000400, - 0x05001003, 0x60000808, 0x0501f005, 0x82040480, - 0x00000200, 0x05001002, 0x60000804, 0x42001000, - 0x0010e060, 0x58080201, 0x80041480, 0x05001002, - 0x40000800, 0x48066a04, 0x59340403, 0x82000580, - 0x000007fe, 0x05020003, 0x59cc0a08, 0x48066a04, - 0x0501fe86, 0x5c00b000, 0x1c01f000, 0x4937c857, - 0x59cc0207, 0x4803c857, 0x48026a05, 0x59cc020a, - 0x4803c857, 0x48026c05, 0x59cc2006, 0x59341200, - 0x599c0818, 0x5934180a, 0x4807c857, 0x480bc857, - 0x480fc857, 0x82102500, 0xff000000, 0x82102580, - 0x02000000, 0x05000007, 0x8c00050e, 0x05000009, - 0x8c0c0514, 0x05000003, 0x8c0c050e, 0x05000005, - 0x8c040518, 0x05000003, 0x8408154a, 0x0501f002, - 0x8408150a, 0x8c000510, 0x05000009, 0x8c0c0514, - 0x05000003, 0x8c0c0510, 0x05000005, 0x8c040518, - 0x05000003, 0x8408154e, 0x0501f002, 0x8408150e, - 0x8c000512, 0x05000009, 0x8c0c0514, 0x05000003, - 0x8c0c0512, 0x05000005, 0x8c040518, 0x05000003, - 0x8408155c, 0x0501f002, 0x8408151c, 0x480a6a00, - 0x8c000500, 0x05000005, 0x053dfab1, 0x05000003, - 0x840c1d4a, 0x0501f002, 0x840c1d0a, 0x480e680a, - 0x59a80249, 0x8c000508, 0x05000007, 0x84000556, - 0x4803c857, 0x48035249, 0x42001000, 0x0010582b, - 0x0511f825, 0x1c01f000, 0x592c0015, 0x4803c857, - 0x48026805, 0x80000120, 0x42002000, 0x02000000, - 0x05fdf7bb, 0x4803c856, 0x4c5c0000, 0x4d2c0000, - 0x4c580000, 0x5934000d, 0x80025d40, 0x05000023, - 0x592c0006, 0x90000488, 0x0500100a, 0x412cb800, - 0x592c0001, 0x80025d40, 0x05fe07fa, 0x05d9fadb, - 0x0500002e, 0x492fc857, 0x492cb801, 0x0501f01b, - 0x912c0c07, 0x6020b000, 0x50040000, 0x82000580, - 0xffffffff, 0x05020006, 0x80041000, 0x50080000, - 0x82000580, 0xffffffff, 0x05000005, 0x90040c02, - 0x8058b040, 0x05fe07f5, 0x05d5ff20, 0x45480800, - 0x454c1000, 0x592c1806, 0x800c1800, 0x480e5806, - 0x480fc857, 0x0501f010, 0x05d9fac0, 0x05000013, - 0x492fc857, 0x492e680d, 0x497a5805, 0x64065806, - 0x494a5807, 0x494e5808, 0x912c0c09, 0x6038b000, - 0x46000800, 0xffffffff, 0x80040800, 0x8058b040, - 0x05fe07fc, 0x90000541, 0x5c00b000, 0x5c025800, - 0x5c00b800, 0x1c01f000, 0x80000580, 0x05fdf7fb, - 0x4803c856, 0x4d3c0000, 0x4d2c0000, 0x5934000d, - 0x80025d40, 0x0500001c, 0x592c0005, 0x80000540, - 0x0502001c, 0x412e7800, 0x0501f8a7, 0x05020019, - 0x46000800, 0xffffffff, 0x46001000, 0xffffffff, - 0x4813c857, 0x480fc857, 0x580c0006, 0x90000c82, - 0x05021012, 0x480fc857, 0x400c0000, 0x812c0580, - 0x05020004, 0x580c0001, 0x4802680d, 0x0501f003, - 0x580c0001, 0x48002001, 0x400e5800, 0x05d9fa9b, - 0x90000541, 0x5c025800, 0x5c027800, 0x1c01f000, - 0x80000580, 0x05fdf7fc, 0x80000040, 0x48001806, - 0x4803c857, 0x05fdf7f7, 0x64225a0a, 0x0001f382, - 0x64a65a0a, 0x0001f382, 0x64aa5a0a, 0x0001f382, - 0x64a25a0a, 0x0001f382, 0x643a5a0a, 0x0001f382, - 0x4943c857, 0x4d440000, 0x4d340000, 0x4d2c0000, - 0x4c580000, 0x61c0b00f, 0x417a8800, 0x0001fb00, - 0x05020007, 0x8d3c0506, 0x05000004, 0x59340200, - 0x8c00050e, 0x05020002, 0x0501f811, 0x81468800, - 0x8058b040, 0x05fe07f6, 0x83440480, 0x00000800, - 0x05021006, 0x8d3c0502, 0x05000004, 0x61c2880f, - 0x6040b000, 0x05fdf7ee, 0x5c00b000, 0x5c025800, - 0x5c026800, 0x5c028800, 0x1c01f000, 0x4d2c0000, - 0x4c600000, 0x4c5c0000, 0x4178b800, 0x5936580f, - 0x812e59c0, 0x0500002c, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000592, 0x05000024, 0xb00005a0, - 0x05000022, 0x90000588, 0x05000020, 0x8d3c0500, - 0x05000003, 0x0501f846, 0x0502001c, 0x592cc000, - 0x497a5800, 0x805cb9c0, 0x05020009, 0x59340010, - 0x812c0580, 0x05020004, 0x497a680f, 0x497a6810, - 0x0501f008, 0x4862680f, 0x0501f006, 0x4860b800, - 0x59340010, 0x812c0580, 0x05020002, 0x485e6810, - 0x0005f9f3, 0x0509fcb7, 0x4a025a08, 0x00000103, - 0x49425a0a, 0x497a580d, 0x0529fece, 0x0001fb82, - 0x40625800, 0x05fdf7d7, 0x412cb800, 0x592e5800, - 0x05fdf7d4, 0x5c00b800, 0x5c00c000, 0x5c025800, - 0x1c01f000, 0x4803c856, 0x41781800, 0x5934000f, - 0x80025d40, 0x05000018, 0x592c0009, 0x80200580, - 0x592c0000, 0x05000003, 0x412c1800, 0x05fdf7f9, - 0x592c0a08, 0x82040d00, 0x000000ff, 0x90040d92, - 0x05fc07fa, 0xb0040da0, 0x05fc07f8, 0x90040d88, - 0x05fc07f6, 0x497a5800, 0x800c19c0, 0x05000007, - 0x48001800, 0x80000540, 0x05020003, 0x480e6810, - 0x90000541, 0x1c01f000, 0x4802680f, 0x80000540, - 0x05fe07fd, 0x497a6810, 0x05fdf7fa, 0x592c000c, - 0x81480580, 0x05020003, 0x592c000d, 0x814c0580, - 0x1c01f000, 0x4803c856, 0x4c580000, 0x413c1800, - 0x400c2000, 0x593c0005, 0x80000540, 0x05020014, - 0x6020b000, 0x900c0c07, 0x50040000, 0x81480580, - 0x05020005, 0x80041000, 0x50080000, 0x814c0580, - 0x0500000b, 0x90040c02, 0x8058b040, 0x05fe07f7, - 0x400c2000, 0x580c0001, 0x80001d40, 0x05fe07f1, - 0x90000541, 0x5c00b000, 0x1c01f000, 0x80000580, - 0x05fdf7fd, 0x4937c857, 0x4c580000, 0x4d2c0000, - 0x5934000d, 0x80025d40, 0x05020011, 0x05d9f9d7, - 0x0500000c, 0x492e680d, 0x64065805, 0x497a5806, - 0x912c0c07, 0x6040b000, 0x46000800, 0xffffffff, + 0x41340000, 0x83440d00, 0xfffffff0, 0x82040d80, + 0x000007f0, 0x05000009, 0x83440c80, 0x00000800, + 0x05001006, 0x4a026815, 0x00020000, 0x497a6816, + 0x82000540, 0x20000000, 0x44001000, 0x497a680d, + 0x497a6810, 0x497a680f, 0x4c180000, 0x05fdfcfc, + 0x5c003000, 0x59340a12, 0x4c040000, 0x0505fc11, + 0x5c000800, 0x05000009, 0x82180500, 0x00ffff00, + 0x05000008, 0x59a81040, 0x82081500, 0x00ffff00, + 0x80080580, 0x05000003, 0x80000580, 0x0501f004, + 0x82180500, 0x000000ff, 0x800000d0, 0x80040d80, + 0x05000003, 0x4803c857, 0x48026a12, 0x59340813, + 0x59242005, 0x801021c0, 0x05000008, 0x812000f0, + 0x80102540, 0x40040000, 0x80100580, 0x05000003, + 0x4813c857, 0x48126813, 0x83440580, 0x000007fe, + 0x05020004, 0x4a026802, 0x00fffffe, 0x0501f006, + 0x59340002, 0x80180580, 0x05000003, 0x481bc857, + 0x481a6802, 0x0501f806, 0x80000580, 0x1c01f000, + 0x4803c856, 0x90000541, 0x05fdf7fd, 0x59341200, + 0x84081508, 0x5934000a, 0x8c00050c, 0x0502000e, + 0x599c0018, 0x8c000510, 0x0500000c, 0x59a80006, + 0x8c00050a, 0x05000008, 0x59340c03, 0x82040480, + 0x000007f0, 0x05001005, 0x82040480, 0x00000800, + 0x05021002, 0x84081548, 0x480a6a00, 0x1c01f000, + 0x4947c857, 0x59a800ad, 0x81440480, 0x0502101e, + 0x83200400, 0x0010d8f9, 0x50024800, 0x59240009, + 0x83441480, 0x000007f0, 0x05001009, 0x83440c80, + 0x00000800, 0x05001004, 0x0001fb08, 0x05020011, + 0x0501f008, 0x80081400, 0x0501f003, 0x83441400, + 0x0010db80, 0x50080000, 0x80026d40, 0x05000009, + 0x0501fd0a, 0x05020008, 0x8d0c0502, 0x05000004, + 0x59340200, 0x8c00050e, 0x05000003, 0x90000541, + 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4947c857, 0x4d2c0000, + 0x4d300000, 0x83440580, 0x0000ffff, 0x0500001e, + 0x59a800ad, 0x81440480, 0x0502101f, 0x83441400, + 0x0010db80, 0x50080000, 0x82000500, 0x00ffffff, + 0x80026d40, 0x05000014, 0x45781000, 0x5934000d, + 0x80025d40, 0x05da09cd, 0x59366011, 0x813261c0, + 0x0500000a, 0x4c640000, 0x5930c800, 0x59325809, + 0x052dfa46, 0x05da09c5, 0x0009f810, 0x90666540, + 0x05fe07fa, 0x5c00c800, 0x0501ff71, 0x41365800, + 0x05d9f9b6, 0x80000580, 0x5c026000, 0x5c025800, + 0x1c01f000, 0x90000541, 0x05fdf7fc, 0x4d2c0000, + 0x4d340000, 0x4947c857, 0x05d9f98a, 0x0500001a, + 0x412e6800, 0x497a6816, 0x0531ff4c, 0x83440400, + 0x0010db80, 0x50000000, 0x82000d00, 0xe0000000, + 0x82040d80, 0x20000000, 0x05000007, 0x8c000538, + 0x0502000a, 0x59e00004, 0x8c00050e, 0x05da0c22, + 0x05fdf7f3, 0x82000500, 0x00ffffff, 0x40006800, + 0x80000580, 0x4803c857, 0x5c026800, 0x5c025800, + 0x1c01f000, 0x4803c857, 0x90000541, 0x05fdf7fb, + 0x4c580000, 0x59cc0001, 0x4937c857, 0x82000500, + 0x00ffffff, 0x48026802, 0x497a6c01, 0x497a6a01, + 0x59340200, 0x82000500, 0xffffdffd, 0x48026a00, + 0x4004b000, 0x0505fb4f, 0x05020012, 0x59340403, + 0x82000580, 0x000007fe, 0x05000005, 0x59a8024c, + 0x8c00050a, 0x0502000b, 0x0501f008, 0x59cc0408, + 0x8c000518, 0x05000007, 0x59cc0009, 0x4803505d, + 0x59cc000a, 0x4803505e, 0x8058b1c0, 0x05020001, + 0x59cc0a09, 0x90040d10, 0x59cc0408, 0x90000520, + 0x05000005, 0x84040d40, 0x59a8124c, 0x8408155a, + 0x480b524c, 0x5934000a, 0x82000500, 0xffffffee, + 0x80040540, 0x4802680a, 0x91cca40b, 0x9134ac06, + 0x6008b000, 0x053dffb5, 0x91cca40d, 0x9134ac08, + 0x6008b000, 0x053dffb1, 0x59a820d5, 0x82100d00, + 0x0000f000, 0x82040d80, 0x00003000, 0x05020017, + 0x59cc0013, 0x8c00053e, 0x05000014, 0x59cc0414, + 0x599c0818, 0x8c040512, 0x0500000e, 0x8c00051e, + 0x05000005, 0x59340200, 0x84000546, 0x84000544, + 0x48026a00, 0x59cc0213, 0x8c000516, 0x05000005, + 0x59340200, 0x8400054c, 0x84000544, 0x48026a00, + 0x59cc0a14, 0x0501f005, 0x59340200, 0x84000508, + 0x48026a00, 0x59cc0a18, 0x59a80006, 0x8c00050c, + 0x05020013, 0x82040480, 0x00000800, 0x0502100a, + 0x82040480, 0x00000400, 0x05001003, 0x60000808, + 0x0501f005, 0x82040480, 0x00000200, 0x05001002, + 0x60000804, 0x42001000, 0x00111ffa, 0x58080201, + 0x80041480, 0x05001002, 0x40000800, 0x48066a04, + 0x59340403, 0x82000580, 0x000007fe, 0x05020003, + 0x59cc0a08, 0x48066a04, 0x0501fef5, 0x5c00b000, + 0x1c01f000, 0x4937c857, 0x59cc0207, 0x4803c857, + 0x48026a05, 0x59cc020a, 0x4803c857, 0x48026c05, + 0x59cc2006, 0x59341200, 0x599c0818, 0x5934180a, + 0x4807c857, 0x480bc857, 0x480fc857, 0x82102500, + 0xff000000, 0x82102580, 0x02000000, 0x05000007, + 0x8c00050e, 0x05000009, 0x8c0c0514, 0x05000003, + 0x8c0c050e, 0x05000005, 0x8c040518, 0x05000003, + 0x8408154a, 0x0501f002, 0x8408150a, 0x8c000510, + 0x05000009, 0x8c0c0514, 0x05000003, 0x8c0c0510, + 0x05000005, 0x8c040518, 0x05000003, 0x8408154e, + 0x0501f002, 0x8408150e, 0x8c000512, 0x05000009, + 0x8c0c0514, 0x05000003, 0x8c0c0512, 0x05000005, + 0x8c040518, 0x05000003, 0x8408155c, 0x0501f002, + 0x8408151c, 0x480a6a00, 0x8c000500, 0x05000005, + 0x053dffc6, 0x05000003, 0x840c1d4a, 0x0501f002, + 0x840c1d0a, 0x480e680a, 0x59a8024c, 0x8c000508, + 0x05000007, 0x84000556, 0x4803c857, 0x4803524c, + 0x42001000, 0x00105a99, 0x0511f9d9, 0x1c01f000, + 0x592c0015, 0x4803c857, 0x48026805, 0x80000120, + 0x42002000, 0x02000000, 0x05fdf7bb, 0x4803c856, + 0x4c5c0000, 0x4d2c0000, 0x4c580000, 0x5934000d, + 0x80025d40, 0x05000023, 0x592c0006, 0x90000488, + 0x0500100a, 0x412cb800, 0x592c0001, 0x80025d40, + 0x05fe07fa, 0x05d9f8ac, 0x0500002e, 0x492fc857, + 0x492cb801, 0x0501f01b, 0x912c0c07, 0x6020b000, + 0x50040000, 0x82000580, 0xffffffff, 0x05020006, + 0x80041000, 0x50080000, 0x82000580, 0xffffffff, + 0x05000005, 0x90040c02, 0x8058b040, 0x05fe07f5, + 0x05d5fcf5, 0x45480800, 0x454c1000, 0x592c1806, + 0x800c1800, 0x480e5806, 0x480fc857, 0x0501f010, + 0x05d9f891, 0x05000013, 0x492fc857, 0x492e680d, + 0x497a5805, 0x64065806, 0x494a5807, 0x494e5808, + 0x912c0c09, 0x6038b000, 0x46000800, 0xffffffff, 0x80040800, 0x8058b040, 0x05fe07fc, 0x90000541, - 0x5c025800, 0x5c00b000, 0x1c01f000, 0x4d2c0000, - 0x592e5801, 0x05d9f9de, 0x5c025800, 0x497a5801, - 0x05fdf7ee, 0x4d2c0000, 0x5936580d, 0x812e59c0, - 0x05000005, 0x4937c857, 0x497a680d, 0x05d9f9d4, - 0x90000541, 0x5c025800, 0x1c01f000, 0x59340405, - 0x4937c857, 0x4803c857, 0x8c000508, 0x1c01f000, - 0x4803c856, 0x0505f8dd, 0x05000043, 0x59a80843, - 0x8c040504, 0x0502001b, 0x59a80a49, 0x8c040506, - 0x05000018, 0x053df91b, 0x42024800, 0x0010e512, - 0x61fa880f, 0x59240809, 0x83440480, 0x000007f0, - 0x80040400, 0x50026800, 0x813669c0, 0x0500000a, - 0x59240200, 0x90000503, 0x90000583, 0x05020006, - 0x0501fa49, 0x05020004, 0x59340200, 0x8400055a, - 0x48026a00, 0x91264c0d, 0x8058b040, 0x05fe07ee, - 0x59a80006, 0x8c00051c, 0x05020003, 0x8d0c0520, - 0x05000013, 0x61c0b00f, 0x417a8800, 0x0001fb00, - 0x0502000c, 0x0501fa38, 0x0502000a, 0x59a8003d, - 0x59340802, 0x80040580, 0x82000500, 0x00ffff00, - 0x05020004, 0x59340200, 0x8400055a, 0x48026a00, - 0x81468800, 0x8058b040, 0x05fe07f1, 0x0501f8d1, - 0x05000003, 0x59a8085b, 0x0501f007, 0x6140080f, - 0x59a80006, 0x8c00051c, 0x05020003, 0x8d0c0520, - 0x05000004, 0x42001000, 0x0010582b, 0x050dffd5, - 0x1c01f000, 0x053df8df, 0x42024800, 0x0010e512, - 0x61fa880f, 0x59240809, 0x83440480, 0x000007f0, - 0x80040400, 0x50026800, 0x813669c0, 0x05000008, - 0x59240200, 0x90000503, 0x90000583, 0x05020004, - 0x59340200, 0x8400051a, 0x48026a00, 0x91264c0d, - 0x8058b040, 0x05fe07f0, 0x05fdf7c6, 0x4d300000, - 0x4d340000, 0x4d440000, 0x4d3c0000, 0x4c580000, - 0x4d200000, 0x4d240000, 0x42001000, 0x0010582b, - 0x050dfe81, 0x59a80a49, 0x4807c857, 0x8c040508, - 0x0502002e, 0x8c04050a, 0x05020003, 0x8c040506, - 0x05000042, 0x053df8b7, 0x42024800, 0x0010e512, - 0x41781000, 0x61fa880f, 0x59240809, 0x83440480, - 0x000007f0, 0x80040400, 0x50026800, 0x813669c0, - 0x0500000b, 0x59240200, 0x90000503, 0x90000583, - 0x05020007, 0x59340200, 0x8c00051a, 0x05000004, - 0x8400051a, 0x48026a00, 0x80081000, 0x91264c0d, - 0x8058b040, 0x05fe07ed, 0x59a80a49, 0x8c04050a, - 0x05020026, 0x800811c0, 0x0500004b, 0x59a80a49, - 0x8c04050a, 0x05020021, 0x8d0c0520, 0x05000005, - 0x6140080f, 0x42001000, 0x0010582b, 0x050dff85, - 0x05e5fc61, 0x0501f040, 0x59a80249, 0x4803c857, - 0x8c000516, 0x0502003c, 0x59aa68c2, 0x813669c0, - 0x05000039, 0x59340400, 0x82000580, 0x00000404, - 0x05020035, 0x051dfb92, 0x05d40d68, 0x4933c857, - 0x64066407, 0x4936600a, 0x4926601d, 0x417a7800, - 0x05fdfc6b, 0x60140800, 0x05fdfc73, 0x600e7000, - 0x0009f800, 0x0501f028, 0x61c0b00f, 0x80028d80, - 0x0001fb00, 0x05020021, 0x59340200, 0x8c00051a, - 0x0500001e, 0x59368c03, 0x417a7800, 0x60a68000, - 0x0501f9e9, 0x59240400, 0x8c00050a, 0x05020003, - 0x41783000, 0x0535ff19, 0x59340200, 0x84000558, - 0x8400051a, 0x48026a00, 0x4937c857, 0x4a026c00, - 0x00000707, 0x05fdff2c, 0x60a68000, 0x0515fc7c, - 0x4df00000, 0x417a6000, 0x0515f9ab, 0x0515fab0, - 0x0515faf9, 0x417a7800, 0x0515f87e, 0x0535fdd2, - 0x5c03e000, 0x05140c63, 0x81468800, 0x8058b040, - 0x05fe07dc, 0x5c024800, 0x5c024000, 0x5c00b000, - 0x5c027800, 0x5c028800, 0x5c026800, 0x5c026000, - 0x1c01f000, 0x4933c857, 0x5930380a, 0x581c0200, - 0x8400051a, 0x48003a00, 0x1c01f000, 0x4933c857, - 0x5930000a, 0x50000000, 0x8c000508, 0x1c01f000, - 0x5930000a, 0x50000000, 0x4933c857, 0x4803c857, - 0x8c00050e, 0x1c01f000, 0x5930000a, 0x50000000, - 0x8c00050a, 0x1c01f000, 0x4933c856, 0x0501f96e, - 0x05000005, 0x59340400, 0x82000d00, 0x000000ff, - 0x90041585, 0x1c01f000, 0x4803c856, 0x59a80a49, - 0x8c040506, 0x0500000a, 0x5930081d, 0x58040200, - 0x8c000500, 0x05000006, 0x58040009, 0x9000040e, - 0x50000800, 0x58040200, 0x8c00051a, 0x1c01f000, - 0x4d340000, 0x4c580000, 0x59a80a49, 0x8c040506, - 0x05000014, 0x053df817, 0x42000800, 0x0010e512, - 0x58041009, 0x9008040e, 0x50026800, 0x813669c0, - 0x05000008, 0x58040200, 0x90000503, 0x90000583, - 0x05020004, 0x59340200, 0x8c00051a, 0x05020005, - 0x90040c0d, 0x8058b040, 0x05fe07f2, 0x80000580, - 0x5c00b000, 0x5c026800, 0x1c01f000, 0x4937c857, - 0x493fc857, 0x59341200, 0x813e79c0, 0x05000003, - 0x8408155e, 0x0501f002, 0x8408151e, 0x480a6a00, - 0x1c01f000, 0x4937c857, 0x05e5fb06, 0x05000005, - 0x59a8085a, 0x42001000, 0x00105905, 0x050dfee5, - 0x1c01f000, 0x4937c857, 0x42001000, 0x00105905, - 0x050dfdad, 0x59a81249, 0x84081512, 0x480b5249, - 0x1c01f000, 0x4c380000, 0x4c340000, 0x4c240000, - 0x4c600000, 0x4008c000, 0x83440480, 0x00000800, - 0x05021065, 0x80002d80, 0x41442000, 0x83447400, - 0x0010d400, 0x61c0b00f, 0x83444c80, 0x000007f0, - 0x05021005, 0x82600480, 0x00fffffc, 0x05001005, - 0x0501f059, 0x6040b000, 0x59240009, 0x80247400, - 0x50380000, 0x80000540, 0x05020030, 0x41440000, - 0x80100580, 0x05020060, 0x40102800, 0x82104c80, - 0x000007f0, 0x05001027, 0x59a80249, 0x8c00050a, + 0x5c00b000, 0x5c025800, 0x5c00b800, 0x1c01f000, + 0x80000580, 0x05fdf7fb, 0x4803c856, 0x4d3c0000, + 0x4d2c0000, 0x5934000d, 0x80025d40, 0x0500001c, + 0x592c0005, 0x80000540, 0x0502001c, 0x412e7800, + 0x0501f8ab, 0x05020019, 0x46000800, 0xffffffff, + 0x46001000, 0xffffffff, 0x4813c857, 0x480fc857, + 0x580c0006, 0x90000c82, 0x05021012, 0x480fc857, + 0x400c0000, 0x812c0580, 0x05020004, 0x580c0001, + 0x4802680d, 0x0501f003, 0x580c0001, 0x48002001, + 0x400e5800, 0x05d9f86c, 0x90000541, 0x5c025800, + 0x5c027800, 0x1c01f000, 0x80000580, 0x05fdf7fc, + 0x80000040, 0x48001806, 0x4803c857, 0x05fdf7f7, + 0x64225a0a, 0x0001f3a8, 0x64a65a0a, 0x0001f3a8, + 0x64aa5a0a, 0x0001f3a8, 0x64a25a0a, 0x0001f3a8, + 0x643a5a0a, 0x0001f3a8, 0x4943c857, 0x4d440000, + 0x4d340000, 0x4d2c0000, 0x4c580000, 0x59a8b0ac, + 0x8d3c0502, 0x05000002, 0x59a8b0ad, 0x417a8800, + 0x0001fb08, 0x05020007, 0x8d3c0506, 0x05000004, + 0x59340200, 0x8c00050e, 0x05020002, 0x0501f812, + 0x81468800, 0x83440580, 0x000007f0, 0x05020004, + 0x8d3c0502, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07f0, 0x59a800ad, 0x81440480, 0x05021001, + 0x5c00b000, 0x5c025800, 0x5c026800, 0x5c028800, + 0x1c01f000, 0x4d2c0000, 0x4c600000, 0x4c5c0000, + 0x4178b800, 0x5936580f, 0x812e59c0, 0x0500002c, + 0x592c0208, 0x82000500, 0x000000ff, 0x90000592, + 0x05000024, 0xb00005a0, 0x05000022, 0x90000588, + 0x05000020, 0x8d3c0500, 0x05000003, 0x0501f846, + 0x0502001c, 0x592cc000, 0x497a5800, 0x805cb9c0, + 0x05020009, 0x59340010, 0x812c0580, 0x05020004, + 0x497a680f, 0x497a6810, 0x0501f008, 0x4862680f, + 0x0501f006, 0x4860b800, 0x59340010, 0x812c0580, + 0x05020002, 0x485e6810, 0x0005fa1a, 0x0509fdd5, + 0x4a025a08, 0x00000103, 0x49425a0a, 0x497a580d, + 0x052df9fd, 0x0001fba8, 0x40625800, 0x05fdf7d7, + 0x412cb800, 0x592e5800, 0x05fdf7d4, 0x5c00b800, + 0x5c00c000, 0x5c025800, 0x1c01f000, 0x4803c856, + 0x41781800, 0x5934000f, 0x80025d40, 0x05000018, + 0x592c0009, 0x80200580, 0x592c0000, 0x05000003, + 0x412c1800, 0x05fdf7f9, 0x592c0a08, 0x82040d00, + 0x000000ff, 0x90040d92, 0x05fc07fa, 0xb0040da0, + 0x05fc07f8, 0x90040d88, 0x05fc07f6, 0x497a5800, + 0x800c19c0, 0x05000007, 0x48001800, 0x80000540, + 0x05020003, 0x480e6810, 0x90000541, 0x1c01f000, + 0x4802680f, 0x80000540, 0x05fe07fd, 0x497a6810, + 0x05fdf7fa, 0x592c000c, 0x81480580, 0x05020003, + 0x592c000d, 0x814c0580, 0x1c01f000, 0x4803c856, + 0x4c580000, 0x413c1800, 0x400c2000, 0x593c0005, + 0x80000540, 0x05020014, 0x6020b000, 0x900c0c07, + 0x50040000, 0x81480580, 0x05020005, 0x80041000, + 0x50080000, 0x814c0580, 0x0500000b, 0x90040c02, + 0x8058b040, 0x05fe07f7, 0x400c2000, 0x580c0001, + 0x80001d40, 0x05fe07f1, 0x90000541, 0x5c00b000, + 0x1c01f000, 0x80000580, 0x05fdf7fd, 0x4937c857, + 0x4c580000, 0x4d2c0000, 0x5934000d, 0x80025d40, + 0x05020011, 0x05d5ffa4, 0x0500000c, 0x492e680d, + 0x64065805, 0x497a5806, 0x912c0c07, 0x6040b000, + 0x46000800, 0xffffffff, 0x80040800, 0x8058b040, + 0x05fe07fc, 0x90000541, 0x5c025800, 0x5c00b000, + 0x1c01f000, 0x4d2c0000, 0x592e5801, 0x05d5ffab, + 0x5c025800, 0x497a5801, 0x05fdf7ee, 0x4d2c0000, + 0x5936580d, 0x812e59c0, 0x05000005, 0x4937c857, + 0x497a680d, 0x05d5ffa1, 0x90000541, 0x5c025800, + 0x1c01f000, 0x59340405, 0x4937c857, 0x4803c857, + 0x8c000508, 0x1c01f000, 0x4803c856, 0x0505f95d, + 0x05000047, 0x59a80846, 0x8c040504, 0x0502001b, + 0x59a80a4c, 0x8c040506, 0x05000018, 0x053dfe2c, + 0x42024800, 0x001124b6, 0x61fa880f, 0x59240809, + 0x83440480, 0x000007f0, 0x80040400, 0x50026800, + 0x813669c0, 0x0500000a, 0x59240200, 0x90000503, + 0x90000583, 0x05020006, 0x0501faa8, 0x05020004, + 0x59340200, 0x8400055a, 0x48026a00, 0x91264c0d, + 0x8058b040, 0x05fe07ee, 0x59a80006, 0x8c00051c, + 0x05020003, 0x8d0c0520, 0x05000017, 0x59a8b0ac, + 0x417a8800, 0x0001fb08, 0x0502000c, 0x0501fa97, + 0x0502000a, 0x59a80040, 0x59340802, 0x80040580, + 0x82000500, 0x00ffff00, 0x05020004, 0x59340200, + 0x8400055a, 0x48026a00, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07ed, 0x0501f8d5, 0x05000003, 0x59a8085e, + 0x0501f007, 0x6140080f, 0x59a80006, 0x8c00051c, + 0x05020003, 0x8d0c0520, 0x05000004, 0x42001000, + 0x00105a99, 0x0511f9cb, 0x1c01f000, 0x053dfdec, + 0x42024800, 0x001124b6, 0x61fa880f, 0x59240809, + 0x83440480, 0x000007f0, 0x80040400, 0x50026800, + 0x813669c0, 0x05000008, 0x59240200, 0x90000503, + 0x90000583, 0x05020004, 0x59340200, 0x8400051a, + 0x48026a00, 0x91264c0d, 0x8058b040, 0x05fe07f0, + 0x05fdf7c2, 0x4d300000, 0x4d340000, 0x4d440000, + 0x4d3c0000, 0x4c580000, 0x4d200000, 0x4d240000, + 0x42001000, 0x00105a99, 0x0511f82d, 0x59a80a4c, + 0x4807c857, 0x8c040508, 0x0502002e, 0x8c04050a, + 0x05020003, 0x8c040506, 0x05000042, 0x053dfdc4, + 0x42024800, 0x001124b6, 0x41781000, 0x61fa880f, + 0x59240809, 0x83440480, 0x000007f0, 0x80040400, + 0x50026800, 0x813669c0, 0x0500000b, 0x59240200, + 0x90000503, 0x90000583, 0x05020007, 0x59340200, + 0x8c00051a, 0x05000004, 0x8400051a, 0x48026a00, + 0x80081000, 0x91264c0d, 0x8058b040, 0x05fe07ed, + 0x59a80a4c, 0x8c04050a, 0x05020026, 0x800811c0, + 0x0500004f, 0x59a80a4c, 0x8c04050a, 0x05020021, + 0x8d0c0520, 0x05000005, 0x6140080f, 0x42001000, + 0x00105a99, 0x0511f97b, 0x05e5fa8b, 0x0501f044, + 0x59a8024c, 0x4803c857, 0x8c000516, 0x05020040, + 0x59aa68c7, 0x813669c0, 0x0500003d, 0x59340400, + 0x82000580, 0x00000404, 0x05020039, 0x051dfe39, + 0x05d40b35, 0x4933c857, 0x64066407, 0x4936600a, + 0x4926601d, 0x417a7800, 0x05fdfc10, 0x60140800, + 0x05fdfc18, 0x600e7000, 0x0009f839, 0x0501f02c, + 0x59a8b0ac, 0x80028d80, 0x0001fb08, 0x05020021, + 0x59340200, 0x8c00051a, 0x0500001e, 0x59368c03, + 0x417a7800, 0x60a68000, 0x0501fa44, 0x59240400, + 0x8c00050a, 0x05020003, 0x41783000, 0x0539fbf2, + 0x59340200, 0x84000558, 0x8400051a, 0x48026a00, + 0x4937c857, 0x4a026c00, 0x00000707, 0x05fdff28, + 0x60a68000, 0x0515fecc, 0x4df00000, 0x417a6000, + 0x0515fbf6, 0x0515fd01, 0x0515fd4a, 0x417a7800, + 0x0515fac9, 0x0539fa7b, 0x5c03e000, 0x05140eb3, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07d8, 0x5c024800, + 0x5c024000, 0x5c00b000, 0x5c027800, 0x5c028800, + 0x5c026800, 0x5c026000, 0x1c01f000, 0x4933c857, + 0x5930380a, 0x581c0200, 0x8400051a, 0x48003a00, + 0x1c01f000, 0x4933c857, 0x5930000a, 0x50000000, + 0x8c000508, 0x1c01f000, 0x5930000a, 0x50000000, + 0x4933c857, 0x4803c857, 0x8c00050e, 0x1c01f000, + 0x5930000a, 0x50000000, 0x8c00050a, 0x1c01f000, + 0x4933c856, 0x0501f9c5, 0x05000005, 0x59340400, + 0x82000d00, 0x000000ff, 0x90041585, 0x1c01f000, + 0x4803c856, 0x59a80a4c, 0x8c040506, 0x0500000a, + 0x5930081d, 0x58040200, 0x8c000500, 0x05000006, + 0x58040009, 0x9000040e, 0x50000800, 0x58040200, + 0x8c00051a, 0x1c01f000, 0x4d340000, 0x4c580000, + 0x59a80a4c, 0x8c040506, 0x05000014, 0x053dfd20, + 0x42000800, 0x001124b6, 0x58041009, 0x9008040e, + 0x50026800, 0x813669c0, 0x05000008, 0x58040200, + 0x90000503, 0x90000583, 0x05020004, 0x59340200, + 0x8c00051a, 0x05020005, 0x90040c0d, 0x8058b040, + 0x05fe07f2, 0x80000580, 0x5c00b000, 0x5c026800, + 0x1c01f000, 0x4937c857, 0x493fc857, 0x59341200, + 0x813e79c0, 0x05000003, 0x8408155e, 0x0501f002, + 0x8408151e, 0x480a6a00, 0x1c01f000, 0x4937c857, + 0x05e5f92c, 0x05000005, 0x59a8085d, 0x42001000, + 0x00105b77, 0x0511f8d7, 0x1c01f000, 0x4937c857, + 0x42001000, 0x00105b77, 0x050dff55, 0x59a8124c, + 0x84081512, 0x480b524c, 0x1c01f000, 0x4c380000, + 0x4c340000, 0x4c240000, 0x4c600000, 0x4008c000, + 0x59a800ad, 0x81440480, 0x050210a9, 0x80002d80, + 0x41442000, 0x83447400, 0x0010db80, 0x59a8b0ac, + 0x83444c80, 0x000007f0, 0x05001004, 0x83441c80, + 0x00000800, 0x05001005, 0x82600480, 0x00fffffc, + 0x05001005, 0x0501f09a, 0x6040b000, 0x59240009, + 0x80247400, 0x50380000, 0x80000540, 0x05020033, + 0x41440000, 0x80100580, 0x050200a4, 0x40102800, + 0x82104c80, 0x000007f0, 0x0500102a, 0x82104c80, + 0x00000800, 0x05021027, 0x59a8024c, 0x8c00050a, 0x0500000d, 0x82104d80, 0x000007fe, 0x05020005, - 0x82604d80, 0x00fffffe, 0x05020043, 0x0501f01d, + 0x82604d80, 0x00fffffe, 0x05020081, 0x0501f01d, 0x59240200, 0x82000500, 0x00000220, 0x05020005, - 0x0501f04a, 0x59240200, 0x8c00050a, 0x05000047, + 0x0501f08b, 0x59240200, 0x8c00050a, 0x05000088, 0x82104d80, 0x000007fc, 0x05020005, 0x82604d80, - 0x00fffffc, 0x05020034, 0x0501f00e, 0x82104d80, + 0x00fffffc, 0x05020072, 0x0501f00e, 0x82104d80, 0x000007fd, 0x05020005, 0x82604d80, 0x00fffffd, - 0x0502002d, 0x0501f007, 0x82104d80, 0x000007ff, - 0x05020029, 0x82604d80, 0x00ffffff, 0x05020026, - 0x84142d5e, 0x0501f034, 0x40006800, 0x58343002, - 0x82183500, 0x00ffffff, 0x40180000, 0x80600580, - 0x05020022, 0x58340813, 0x80040130, 0x81200580, - 0x0502001e, 0x82040500, 0x00ffffff, 0x59240805, + 0x0502006b, 0x0501f007, 0x82104d80, 0x000007ff, + 0x05020067, 0x82604d80, 0x00ffffff, 0x05020064, + 0x84142d5e, 0x0501f075, 0x82000d00, 0xe0000000, + 0x05000025, 0x8d0c0538, 0x05020003, 0x60800000, + 0x0501f0b2, 0x82000500, 0x00ffffff, 0x8c04053c, + 0x05000013, 0x40003000, 0x80600580, 0x05000021, + 0x40100000, 0x81440580, 0x05020064, 0x4c200000, + 0x4c180000, 0x4c100000, 0x4d440000, 0x40128800, + 0x05fdfc37, 0x5c028800, 0x5c002000, 0x5c003000, + 0x5c004000, 0x05020077, 0x0501f04e, 0x82041d80, + 0x20000000, 0x05000008, 0x82041d80, 0xa0000000, + 0x05000005, 0x82041d80, 0x80000000, 0x05d60a22, + 0x84040d7a, 0x40006800, 0x58343002, 0x82183500, + 0x00ffffff, 0x40180000, 0x80600580, 0x05020039, + 0x800409c0, 0x05000014, 0x82041d80, 0x20000000, + 0x05000011, 0x82041d80, 0xa0000000, 0x05020005, + 0x50380000, 0x82000540, 0xa0000000, 0x44007000, + 0x4c200000, 0x4c100000, 0x4d440000, 0x40128800, + 0x05fdfc0f, 0x5c028800, 0x5c002000, 0x5c004000, + 0x05020050, 0x58340813, 0x80040130, 0x81200580, + 0x05020020, 0x82040500, 0x00ffffff, 0x59240805, 0x80040580, 0x05000004, 0x812000f0, 0x80040d40, 0x48046813, 0x40100000, 0x81440580, 0x05020009, - 0x40366800, 0x8c200508, 0x05000052, 0x05fdff53, - 0x05020050, 0x4947c857, 0x60740000, 0x0501f04e, - 0x4947c857, 0x480bc857, 0x4823c857, 0x60680000, - 0x0501f049, 0x4947c857, 0x4863c857, 0x4813c857, - 0x60640000, 0x0501f044, 0x40100000, 0x81440580, - 0x05020009, 0x58343002, 0x4947c857, 0x481bc857, - 0x606c0000, 0x0501f03c, 0x4947c857, 0x607c0000, - 0x0501f039, 0x80102000, 0x80387000, 0x83444c80, - 0x000007f0, 0x05001007, 0x82104d80, 0x00000800, - 0x0502000a, 0x59247009, 0x61c0200f, 0x0501f007, - 0x82104d80, 0x000007f0, 0x05020004, 0x41782000, - 0x42007000, 0x0010d400, 0x8058b040, 0x05fe0789, - 0x801429c0, 0x05020005, 0x05d5fc3c, 0x4947c857, - 0x60280000, 0x0501f020, 0x4d2c0000, 0x4c180000, - 0x40603000, 0x05fdfb6f, 0x4947c857, 0x4937c857, - 0x5c003000, 0x5c025800, 0x05fe07f5, 0x497a6a12, - 0x59a80249, 0x8c00050a, 0x0502000d, 0x82600500, - 0x00ffff00, 0x05000006, 0x59a8483d, 0x82244d00, - 0x00ffff00, 0x80240580, 0x05020005, 0x82600500, - 0x000000ff, 0x800000d0, 0x48026a12, 0x48626802, - 0x59244805, 0x812000f0, 0x80244d40, 0x48266813, - 0x80000580, 0x80000540, 0x5c00c000, 0x5c004800, - 0x5c006800, 0x5c007000, 0x1c01f000, 0x5934000f, - 0x8d0c0512, 0x05020005, 0x5934140b, 0x80081040, - 0x05001002, 0x480a6c0b, 0x80000540, 0x00020b0d, - 0x1c01f000, 0x59340a00, 0x84040d08, 0x80000540, - 0x05000005, 0x5934000a, 0x8400054c, 0x4802680a, - 0x0501f004, 0x599c0018, 0x8c000510, 0x05000002, - 0x84040d48, 0x48066a00, 0x1c01f000, 0x4803c857, - 0x4947c857, 0x4c300000, 0x90006530, 0x05000005, - 0x4c000000, 0x0529ff89, 0x5c000000, 0x0502000e, - 0x8c00050e, 0x05000009, 0x0501f88f, 0x0502000a, - 0x4937c857, 0x592c020b, 0x8c00051c, 0x05020003, - 0x41240800, 0x0501f89f, 0x80000580, 0x5c006000, - 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x4803c857, - 0x4c580000, 0x4d440000, 0x40001000, 0x80000d80, - 0x61c0b00f, 0x4c040000, 0x40068800, 0x4c080000, - 0x40080000, 0x05fdffe0, 0x5c001000, 0x5c000800, - 0x80040800, 0x8058b040, 0x05fe07f7, 0x8c080514, - 0x05000005, 0x84081514, 0x6004b000, 0x61f0080f, - 0x05fdf7f1, 0x4d300000, 0x4d400000, 0x4d240000, - 0x0501fb9a, 0x61fe89ff, 0x42026000, 0x00111a70, - 0x4a02600a, 0x00110210, 0x417a4800, 0x4926601d, - 0x60a68000, 0x0515fafa, 0x4df00000, 0x0515f930, - 0x0535fc55, 0x5c03e000, 0x05140ae6, 0x5c024800, - 0x5c028000, 0x5c026000, 0x5c028800, 0x5c00b000, - 0x1c01f000, 0x4c5c0000, 0x59340400, 0x8200bd80, + 0x40366800, 0x8c200508, 0x05000063, 0x05fdff11, + 0x05020061, 0x4947c857, 0x60740000, 0x0501f05f, + 0x4947c857, 0x4863c857, 0x4823c857, 0x58341813, + 0x800c1930, 0x60680000, 0x0501f058, 0x4947c857, + 0x4863c857, 0x4813c857, 0x60640000, 0x0501f053, + 0x40100000, 0x81440580, 0x0502000c, 0x58343002, + 0x58341813, 0x800c1930, 0x4947c857, 0x481bc857, + 0x480fc857, 0x606c0000, 0x0501f048, 0x4947c857, + 0x607c0000, 0x0501f045, 0x80102000, 0x80387000, + 0x82104d80, 0x000007f0, 0x0500000a, 0x59a800ad, + 0x80100580, 0x0500000f, 0x82104d80, 0x00000800, + 0x0502000f, 0x59247009, 0x61c0200f, 0x0501f00c, + 0x59a800ad, 0x82000580, 0x00000800, 0x05000005, + 0x60002010, 0x42007000, 0x0010e380, 0x0501f004, + 0x41782000, 0x42007000, 0x0010db80, 0x8058b040, + 0x05fe073d, 0x801429c0, 0x05020005, 0x05d5f9b6, + 0x4947c857, 0x60280000, 0x0501f024, 0x4d2c0000, + 0x4c180000, 0x40603000, 0x8c20053e, 0x05000003, + 0x05fdfabf, 0x0501f002, 0x05fdfac5, 0x4947c857, + 0x4937c857, 0x5c003000, 0x5c025800, 0x05fe07f1, + 0x497a6a12, 0x59a8024c, 0x8c00050a, 0x0502000d, + 0x82600500, 0x00ffff00, 0x05000006, 0x59a84840, + 0x82244d00, 0x00ffff00, 0x80240580, 0x05020005, + 0x82600500, 0x000000ff, 0x800000d0, 0x48026a12, + 0x48626802, 0x59244805, 0x812000f0, 0x80244d40, + 0x48266813, 0x80000580, 0x80000540, 0x5c00c000, + 0x5c004800, 0x5c006800, 0x5c007000, 0x1c01f000, + 0x5934000f, 0x8d0c0512, 0x05020005, 0x5934140b, + 0x80081040, 0x05001002, 0x480a6c0b, 0x80000540, + 0x00020b33, 0x1c01f000, 0x59340a00, 0x84040d08, + 0x80000540, 0x05000005, 0x5934000a, 0x8400054c, + 0x4802680a, 0x0501f004, 0x599c0018, 0x8c000510, + 0x05000002, 0x84040d48, 0x48066a00, 0x1c01f000, + 0x4803c857, 0x4947c857, 0x4c300000, 0x90006530, + 0x05000005, 0x4c000000, 0x052dfa60, 0x5c000000, + 0x0502000e, 0x8c00050e, 0x05000009, 0x0501f893, + 0x0502000a, 0x4937c857, 0x592c020b, 0x8c00051c, + 0x05020003, 0x41240800, 0x0501f8a9, 0x80000580, + 0x5c006000, 0x1c01f000, 0x90000541, 0x05fdf7fd, + 0x4803c857, 0x4c580000, 0x4d440000, 0x40001000, + 0x80000d80, 0x59a8b0ac, 0x4c040000, 0x40068800, + 0x4c080000, 0x40080000, 0x05fdffe0, 0x5c001000, + 0x5c000800, 0x80040800, 0x82040580, 0x000007f0, + 0x05020002, 0x60000810, 0x8058b040, 0x05fe07f3, + 0x8c080514, 0x05000005, 0x84081514, 0x6004b000, + 0x61f0080f, 0x05fdf7ed, 0x4d300000, 0x4d400000, + 0x4d240000, 0x0501fba6, 0x61fe89ff, 0x42026000, + 0x00115a14, 0x4a02600a, 0x001141b4, 0x417a4800, + 0x4926601d, 0x60a68000, 0x0515fcef, 0x4df00000, + 0x0515fb26, 0x0539f8a3, 0x5c03e000, 0x05140cdb, + 0x5c024800, 0x5c028000, 0x5c026000, 0x5c028800, + 0x5c00b000, 0x1c01f000, 0x4c5c0000, 0x59340400, + 0x8200bd80, 0x00000606, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x59340400, 0x8200bd80, 0x00000404, + 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x59340400, + 0x8200bd80, 0x00000404, 0x05000003, 0x8200bd80, 0x00000606, 0x5c00b800, 0x1c01f000, 0x4c5c0000, - 0x59340400, 0x8200bd80, 0x00000404, 0x5c00b800, - 0x1c01f000, 0x4c5c0000, 0x59340400, 0x8200bd80, - 0x00000404, 0x05000003, 0x8200bd80, 0x00000606, - 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x4c600000, - 0x59340400, 0x8200bd00, 0x0000ff00, 0x825cc580, - 0x00000400, 0x05000003, 0x825cc580, 0x00000600, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4c5c0000, - 0x59340400, 0x82000500, 0x000000ff, 0x9000bd83, - 0x05000002, 0x9000bd85, 0x5c00b800, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4c5c0000, - 0x59340400, 0x82000500, 0x0000ff00, 0x8400b9c0, - 0x805c0580, 0x4937c857, 0x4803c857, 0x48026c00, - 0x5c00b800, 0x1c01f000, 0x4c040000, 0x4c080000, - 0x592c020b, 0x8c00050c, 0x0500000d, 0x592e8c0a, - 0x82000500, 0x00000080, 0x84000548, 0x4d3c0000, - 0x60027820, 0x05fdff76, 0x5c027800, 0x90000541, - 0x5c001000, 0x5c000800, 0x1c01f000, 0x80000580, - 0x05fdf7fc, 0x59340013, 0x80024130, 0x83224c00, - 0x0010d17b, 0x51264800, 0x812649c0, 0x05d40b63, - 0x1c01f000, 0x83440c80, 0x00000800, 0x05021013, - 0x83200400, 0x0010d17b, 0x50024800, 0x59240009, - 0x83440c80, 0x000007f0, 0x05001003, 0x80040c00, - 0x0501f003, 0x83440c00, 0x0010d400, 0x50040000, - 0x80026d40, 0x05000005, 0x59340013, 0x80000130, - 0x81200580, 0x1c01f000, 0x90000541, 0x05fdf7fe, - 0x4937c857, 0x4c580000, 0x4d440000, 0x59368c03, - 0x83440580, 0x0000ffff, 0x05000010, 0x83441480, - 0x000007f0, 0x05021003, 0x05fdfb12, 0x0501f00b, - 0x58040009, 0x80080c00, 0x50040000, 0x81340580, - 0x05d60b3a, 0x4d2c0000, 0x45780800, 0x41365800, - 0x05d5feee, 0x5c025800, 0x80000580, 0x5c028800, - 0x5c00b000, 0x1c01f000, 0x592c040f, 0x82000500, - 0x0000e000, 0x82000580, 0x00006000, 0x0500001e, - 0x916c0583, 0x05000011, 0x916c0582, 0x05020100, - 0x59a80249, 0x90000d38, 0x05020005, 0x59a80841, - 0x800409c0, 0x05000009, 0x0501f0f9, 0x90000d03, - 0x90040d83, 0x050200f6, 0x90000d28, 0x05020003, - 0x8c00050c, 0x050000f2, 0x592e440b, 0x83224500, - 0x000000ff, 0x0509f894, 0x050200cf, 0x592c100e, - 0x82081500, 0x00ffffff, 0x59240005, 0x80080580, - 0x050000d3, 0x592c0c0f, 0x82040d00, 0x0000e000, - 0x82040480, 0x00008000, 0x050210cf, 0x592e8c0a, - 0x83440480, 0x00000800, 0x05001015, 0x83440580, - 0x0000ffff, 0x050200ba, 0x800409c0, 0x050200f0, - 0x592c240d, 0x82100500, 0xffffff00, 0x050200be, - 0x480bc857, 0x4813c857, 0x592c0011, 0x82000480, - 0x00000841, 0x050210be, 0x614e7000, 0x0501fac3, - 0x42026800, 0x00110210, 0x0501f093, 0x800409c0, - 0x050200df, 0x41784000, 0x05fdfe1f, 0x050200cc, - 0x592c240f, 0x8c100514, 0x0500000d, 0x592c240d, - 0x82100500, 0xffffff00, 0x050200a7, 0x901005a0, - 0x050200a9, 0x05fdff32, 0x050200b4, 0x05fdfb97, - 0x60180800, 0x05fdf9f5, 0x0501f0bb, 0x59342204, - 0x592c0011, 0x80100480, 0x050010a1, 0x614e7000, - 0x592c240d, 0x82100500, 0xffffff00, 0x05020096, - 0x4813c857, 0x592c040b, 0x82000500, 0x0000f000, - 0x82000580, 0x00003000, 0x05020006, 0x59340200, - 0x8c000508, 0x05020003, 0x90100583, 0x05020084, - 0x592c0010, 0x800001c0, 0x05000065, 0x90100584, - 0x05000083, 0xb0100591, 0x05000081, 0x90100583, - 0x0500000f, 0x901005a0, 0x05000039, 0x901005a4, - 0x05000033, 0x901005a1, 0x05000033, 0xb0100590, - 0x0500002b, 0xb0100592, 0x05000027, 0x90100585, - 0x05020055, 0x60067000, 0x0501f018, 0x600a7000, - 0x59a800d1, 0x8c000502, 0x05000014, 0x05fdfef6, - 0x05000012, 0x59340212, 0x82000500, 0x0000ff00, - 0x60401000, 0x0502000b, 0x59a80249, 0x8c000506, - 0x0502005b, 0x60201000, 0x59340002, 0x82000500, - 0x00ff0000, 0x82000580, 0x00ff0000, 0x05000003, - 0x0501f96f, 0x05020052, 0x051df8c1, 0x05000066, - 0x64426407, 0x4926601d, 0x4936600a, 0x600c0800, - 0x91380582, 0x05000002, 0x602c0800, 0x05fdf9a2, - 0x0501f036, 0x60027000, 0x0501f002, 0x60127000, - 0x05fdfeea, 0x0502005d, 0x0501f02b, 0x60ce7000, - 0x0501f004, 0x60167000, 0x0501f002, 0x600e7000, - 0x05fdfed9, 0x05020055, 0x59a800d1, 0x8c000502, - 0x05000014, 0x05fdfec8, 0x05000012, 0x59340212, - 0x82000500, 0x0000ff00, 0x60401000, 0x0502000b, - 0x59a80249, 0x8c000506, 0x0502002d, 0x60201000, - 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, - 0x00ff0000, 0x05000003, 0x0501f941, 0x05020024, - 0x051df893, 0x05000038, 0x64426407, 0x4926601d, - 0x4936600a, 0x60140800, 0x91380583, 0x05000002, - 0x60240800, 0x05fdf974, 0x0501f008, 0x90102591, - 0x05020029, 0x051df886, 0x0500002b, 0x64426407, - 0x4926601d, 0x4936600a, 0x0529ffe8, 0x492e6009, - 0x4932580c, 0x83340580, 0x00110210, 0x05000007, - 0x592c0c0f, 0x8c040518, 0x05000004, 0x59340200, - 0x84000514, 0x48026a00, 0x0009f800, 0x80000580, - 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x60281000, - 0x0501f012, 0x60381000, 0x0501f010, 0x603c1000, - 0x0501f00e, 0x60401000, 0x0501f00c, 0x60581000, - 0x0501f00a, 0x605c1000, 0x0501f008, 0x60601000, - 0x0501f006, 0x60781000, 0x0501f004, 0x60901000, - 0x0501f002, 0x60801000, 0x60640800, 0x60c68000, - 0x05fdf7e9, 0x600c0800, 0x0501f002, 0x60280800, - 0x41781000, 0x05fdf7fa, 0x60240800, 0x59341400, - 0x05fdf7f7, 0x60228000, 0x0501f004, 0x601c0800, - 0x416c1000, 0x05fdf7f2, 0x41780800, 0x41781000, - 0x05fdf7d9, 0x60028000, 0x05fdf7fc, 0x90004d9d, - 0x05d40a1e, 0x90004d9a, 0x05020004, 0x40101000, - 0x40000800, 0x05fdf7e6, 0x90004d9b, 0x05020003, - 0x40181000, 0x05fdf7fb, 0x90004d9c, 0x05fc07f9, - 0x90004d99, 0x05fc07ca, 0x05fdf7e1, 0x592e600c, - 0x0529fd96, 0x05fc07cc, 0x59300c07, 0x90040591, - 0x05fe07e1, 0x592c0c0f, 0x82041500, 0x0000e000, - 0x82080580, 0x00006000, 0x05000021, 0x83440580, - 0x0000ffff, 0x05020007, 0x5932680a, 0x83340580, - 0x00110210, 0x05fe07d4, 0x61000810, 0x0501f00f, - 0x592c100e, 0x82081500, 0x00ffffff, 0x41784000, - 0x05fdfd29, 0x05fe07d6, 0x5930000a, 0x82000d80, - 0x00110210, 0x05000003, 0x81340580, 0x05fe07c6, - 0x4936600a, 0x59340a04, 0x592c0011, 0x80040480, - 0x05fc17b3, 0x59300a03, 0x90040587, 0x05fe07be, - 0x492e6009, 0x61527000, 0x05fdf78f, 0x0539f92f, - 0x05fc07c1, 0x05fdf7b8, 0x492fc857, 0x592e600c, - 0x83300580, 0xffffffff, 0x05020041, 0x592c020b, - 0x8c000500, 0x0502006c, 0x8d0c050e, 0x05020059, - 0x592e8c0a, 0x83440480, 0x00000800, 0x05021036, - 0x592c380e, 0x821c3d00, 0x00ffffff, 0x05e5fa1d, - 0x05020039, 0x49265805, 0x41784000, 0x592c100d, - 0x82081500, 0x00ffffff, 0x05fdfcfb, 0x0502004b, - 0x592e6017, 0x4933c857, 0x83300580, 0xffffffff, - 0x05000018, 0x0529fd49, 0x0500002d, 0x591c1407, - 0x800811c0, 0x05000013, 0x592c0411, 0x591c0a02, - 0x80040580, 0x0502000f, 0x591c000a, 0x800001c0, - 0x05020007, 0x591c082a, 0x59340002, 0x80040580, - 0x82000500, 0x00ffffff, 0x0501f002, 0x81340580, - 0x05020004, 0x90080587, 0x0502002c, 0x64923c03, - 0x59240005, 0x592c080d, 0x82041500, 0x00ffffff, - 0x80081580, 0x0500000c, 0x80040932, 0xb0040582, - 0x0502000b, 0x49365806, 0x0501f8d5, 0x80000580, - 0x1c01f000, 0x60281000, 0x0501f00a, 0x60401000, - 0x0501f008, 0x60501000, 0x0501f006, 0x605c1000, - 0x0501f004, 0x60601000, 0x0501f002, 0x60f01000, - 0x492fc857, 0x480bc857, 0x60640800, 0x60c68000, - 0x90000541, 0x05fdf7ef, 0x492fc857, 0x4803c857, - 0x480bc857, 0x40000800, 0x05fdf7f9, 0x492fc857, - 0x60280800, 0x41781000, 0x05fdf7f5, 0x41780800, - 0x41781000, 0x05fdf7f3, 0x60780800, 0x05fdf7fa, - 0x60040800, 0x05fdf7f8, 0x90004d9d, 0x05d4097b, - 0x90004d9a, 0x05020003, 0x40101000, 0x05fdf7eb, - 0x90004d9b, 0x05020003, 0x40181000, 0x05fdf7e7, - 0x90004d9c, 0x05fc07e5, 0x90004d99, 0x05fc07e3, - 0x05fdf7e7, 0x0539f98e, 0x60028000, 0x05fdf7e8, - 0x5c000000, 0x4c000000, 0x4803c857, 0x5930200a, - 0x801021c0, 0x05000029, 0x58101400, 0x4813c857, - 0x480bc857, 0x82081d00, 0x000000ff, 0x59300c03, - 0x90040588, 0x05000018, 0x9004058a, 0x05000010, - 0x9004058c, 0x0500000b, 0x90040582, 0x05000012, - 0x90040581, 0x0500000d, 0x90040583, 0x05000008, - 0x90040585, 0x05000003, 0x900405b3, 0x05020013, - 0x900c0589, 0x0500000a, 0x0501f010, 0x900c0585, - 0x05000007, 0x0501f00d, 0x900c058b, 0x05000004, - 0x0501f00a, 0x900c0583, 0x05020008, 0x82081d00, - 0xffffff00, 0x840c01c0, 0x800c0540, 0x4807c857, - 0x4803c857, 0x48002400, 0x1c01f000, 0x599c0017, - 0x8c00050a, 0x05000003, 0x80000580, 0x1c01f000, - 0x59a80249, 0x90000528, 0x05000007, 0x61f6880f, - 0x417a4000, 0x05fdfdd0, 0x05020003, 0x5934000a, - 0x8c000504, 0x1c01f000, 0x1c01f000, 0x4d440000, - 0x4d340000, 0x80000580, 0x40001800, 0x40028800, - 0x90080588, 0x05020002, 0x60041800, 0x0001fb00, - 0x0502000a, 0x05fdfd6c, 0x05020008, 0x800c19c0, - 0x05000004, 0x59340405, 0x8c000508, 0x05000003, - 0x80081040, 0x05000009, 0x81468800, 0x83440480, - 0x00000800, 0x05fc17f2, 0x80000580, 0x5c026800, - 0x5c028800, 0x1c01f000, 0x90000541, 0x5c026800, - 0x5c028800, 0x1c01f000, 0x60200800, 0x58d400e4, - 0x8c00051c, 0x0502002f, 0x59a80249, 0x8c000508, - 0x0502002c, 0x5934100a, 0x82081500, 0x0002e000, - 0x41781800, 0x90080580, 0x0500000a, 0x800c1800, - 0x82080580, 0x00002000, 0x05000006, 0x800c1800, - 0x82080580, 0x00006000, 0x05000002, 0x800c1800, - 0x42007000, 0x0010e060, 0x58380401, 0x8c000504, - 0x05000006, 0x900c2c84, 0x05021016, 0x820c0400, - 0x00105d02, 0x0501f012, 0x41782000, 0x59342a04, - 0x82140480, 0x00000800, 0x05021006, 0x80102000, - 0x82140480, 0x00000400, 0x05021002, 0x80102000, - 0x800c00c2, 0x800c0400, 0x80100400, 0x90002c89, - 0x05021004, 0x82000400, 0x00105d06, 0x50000800, - 0x48066c04, 0x1c01f000, 0x00000002, 0x00000004, - 0x00000008, 0x00000008, 0x00002802, 0x00001402, - 0x00000a02, 0x00001402, 0x00000a02, 0x00000502, - 0x00000a02, 0x00000502, 0x00000504, 0x59a8089e, - 0x800409c0, 0x05020004, 0x492f509d, 0x492f509e, - 0x0519f5b4, 0x492c0800, 0x492f509e, 0x1c01f000, - 0x5934000f, 0x41784000, 0x80001540, 0x05000010, - 0x58080208, 0x82000500, 0x000000ff, 0x90000592, - 0x05000005, 0xb00005a0, 0x05000003, 0x90000588, - 0x05020004, 0x58080210, 0x80040580, 0x05000005, - 0x58080000, 0x40084000, 0x05fdf7f0, 0x90000541, - 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x592e8c0a, - 0x592e440b, 0x83224500, 0x000000ff, 0x592cbc0c, - 0x592cc40b, 0x4947c857, 0x4923c857, 0x485fc857, - 0x4863c857, 0x8260c500, 0x0000f000, 0x82600580, - 0x00003000, 0x05020007, 0x59340200, 0x8c000508, - 0x05020004, 0x599c0018, 0x8c000510, 0x0500001a, - 0x8c5c050a, 0x0500002b, 0x485fc856, 0x812241c0, - 0x05020013, 0x83440580, 0x000007fe, 0x0502000e, - 0x42003000, 0x00fffffe, 0x05f9ffc6, 0x05020017, - 0x4937c857, 0x052dfa32, 0x05000012, 0x80000580, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x90000541, - 0x05fdf7fc, 0x60281000, 0x0501f007, 0x60381000, - 0x0501f005, 0x603c1000, 0x0501f003, 0x60601000, - 0x0501f001, 0x60640800, 0x60c68000, 0x05fdf7f4, - 0x600c0800, 0x0501f002, 0x60280800, 0x41781000, - 0x05fdf7fa, 0x60228000, 0x0501f001, 0x41780800, - 0x41781000, 0x05fdf7ea, 0x60028000, 0x05fdf7fc, - 0x485fc856, 0x812241c0, 0x05fe07e9, 0x83440580, - 0x000007fe, 0x05fe07e4, 0x42003000, 0x00fffffe, - 0x05f9ff9c, 0x05fe07ed, 0x4937c857, 0x592e600e, - 0x0529fbe6, 0x05fc07e2, 0x59300c07, 0x90040591, - 0x05fe07e9, 0x5930000a, 0x800001c0, 0x05000003, - 0x81340580, 0x05fe07e4, 0x4936600a, 0x59300a03, - 0x90040587, 0x05fe07e0, 0x592c0a0d, 0x4807c857, - 0x4806621b, 0x497a641b, 0x492e6009, 0x64126407, - 0x8c5c050e, 0x05020013, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x592cba0b, 0x485f54cd, 0x485f52cc, - 0x592cc80f, 0x4200c000, 0x001106f2, 0x0539f916, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x616a7000, - 0x64066203, 0x493a6403, 0x0511facf, 0x05fdf7b0, - 0x616e7000, 0x592c0010, 0x4802641c, 0x592c0011, - 0x4802621c, 0x05fdf7f7, 0x42000000, 0x00110210, - 0x4a000400, 0x00000707, 0x4a000204, 0x00000840, - 0x4a000403, 0x0000ffff, 0x49780200, 0x1c01f000, - 0x4d340000, 0x4d440000, 0x4c580000, 0x61c0b00f, - 0x4803c856, 0x417a8800, 0x0001fb00, 0x05020006, - 0x59340200, 0x8c00051a, 0x05000003, 0x8400051a, - 0x48026a00, 0x81468800, 0x8058b040, 0x05fe07f7, - 0x5c00b000, 0x5c028800, 0x5c026800, 0x1c01f000, - 0x592c2a08, 0x82142d00, 0x000000ff, 0x90140592, - 0x05000006, 0xb01405b2, 0x05000004, 0xb01405ba, - 0x05000002, 0x90000541, 0x1c01f000, 0x64033003, + 0x4c600000, 0x59340400, 0x8200bd00, 0x0000ff00, + 0x825cc580, 0x00000400, 0x05000003, 0x825cc580, + 0x00000600, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x59340400, 0x82000500, 0x000000ff, + 0x9000bd83, 0x05000002, 0x9000bd85, 0x5c00b800, + 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4c5c0000, 0x59340400, 0x82000500, 0x0000ff00, + 0x8400b9c0, 0x805c0580, 0x4937c857, 0x4803c857, + 0x48026c00, 0x5c00b800, 0x1c01f000, 0x4c040000, + 0x4c080000, 0x592c020b, 0x8c00050c, 0x0500000d, + 0x592e8c0a, 0x82000500, 0x00000080, 0x84000548, + 0x4d3c0000, 0x60027820, 0x05fdff72, 0x5c027800, + 0x90000541, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x80000580, 0x05fdf7fc, 0x59340013, 0x80024130, + 0x83224c00, 0x0010d8f9, 0x51264800, 0x812649c0, + 0x05d408d5, 0x1c01f000, 0x59a800ad, 0x81440480, + 0x05021019, 0x83200400, 0x0010d8f9, 0x50024800, + 0x59240009, 0x83440c80, 0x000007f0, 0x05001009, + 0x83441480, 0x00000800, 0x05001004, 0x0001fb08, + 0x0502000d, 0x0501f008, 0x80040c00, 0x0501f003, + 0x83440c00, 0x0010db80, 0x50040000, 0x80026d40, + 0x05000005, 0x59340013, 0x80000130, 0x81200580, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x4937c857, + 0x4c580000, 0x4d440000, 0x59368c03, 0x83440580, + 0x0000ffff, 0x05000013, 0x83441480, 0x000007f0, + 0x05001004, 0x83440480, 0x00000800, 0x05001003, + 0x05fdfa83, 0x0501f00b, 0x58040009, 0x80080c00, + 0x50040000, 0x81340580, 0x05d608a3, 0x4d2c0000, + 0x45780800, 0x41365800, 0x05d5fc53, 0x5c025800, + 0x80000580, 0x5c028800, 0x5c00b000, 0x1c01f000, + 0x592c040f, 0x82000500, 0x0000e000, 0x82000580, + 0x00006000, 0x0500001e, 0x916c0583, 0x05000011, + 0x916c0582, 0x050200ff, 0x59a8024c, 0x90000d38, + 0x05020005, 0x59a80844, 0x800409c0, 0x05000009, + 0x0501f0f8, 0x90000d03, 0x90040d83, 0x050200f5, + 0x90000d28, 0x05020003, 0x8c00050c, 0x050000f1, + 0x592e440b, 0x83224500, 0x000000ff, 0x0509f92a, + 0x050200ce, 0x592c100e, 0x82081500, 0x00ffffff, + 0x59240005, 0x80080580, 0x050000d2, 0x592c0c0f, + 0x82040d00, 0x0000e000, 0x82040480, 0x00008000, + 0x050210ce, 0x592e8c0a, 0x59a800ad, 0x81440480, + 0x05001014, 0x83440580, 0x0000ffff, 0x050200b9, + 0x800409c0, 0x050200f1, 0x592c240d, 0x82100500, + 0xffffff00, 0x050200bd, 0x480bc857, 0x4813c857, + 0x61000810, 0x0501faf8, 0x050200be, 0x614e7000, + 0x0501fac7, 0x42026800, 0x001141b4, 0x0501f093, + 0x800409c0, 0x050200e1, 0x42004000, 0x80000000, + 0x05fdfdbf, 0x050200cb, 0x592c240f, 0x8c100514, + 0x0500000d, 0x592c240d, 0x82100500, 0xffffff00, + 0x050200a6, 0x901005a0, 0x050200a8, 0x05fdff29, + 0x050200b3, 0x05fdfb2b, 0x60180800, 0x05fdf936, + 0x0501f0ba, 0x59340a04, 0x0501fadb, 0x050200a1, + 0x614e7000, 0x592c240d, 0x82100500, 0xffffff00, + 0x05020096, 0x4813c857, 0x592c040b, 0x82000500, + 0x0000f000, 0x82000580, 0x00003000, 0x05020006, + 0x59340200, 0x8c000508, 0x05020003, 0x90100583, + 0x05020084, 0x592c0010, 0x800001c0, 0x05000065, + 0x90100584, 0x05000083, 0xb0100591, 0x05000081, + 0x90100583, 0x0500000f, 0x901005a0, 0x05000039, + 0x901005a4, 0x05000033, 0x901005a1, 0x05000033, + 0xb0100590, 0x0500002b, 0xb0100592, 0x05000027, + 0x90100585, 0x05020055, 0x60067000, 0x0501f018, + 0x600a7000, 0x59a800d6, 0x8c000502, 0x05000014, + 0x05fdfeee, 0x05000012, 0x59340212, 0x82000500, + 0x0000ff00, 0x60401000, 0x0502000b, 0x59a8024c, + 0x8c000506, 0x0502005b, 0x60201000, 0x59340002, + 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, + 0x05000003, 0x0501f973, 0x05020052, 0x051dfb05, + 0x05000066, 0x64426407, 0x4926601d, 0x4936600a, + 0x600c0800, 0x91380582, 0x05000002, 0x602c0800, + 0x05fdf8e4, 0x0501f036, 0x60027000, 0x0501f002, + 0x60127000, 0x05fdfee2, 0x0502005d, 0x0501f02b, + 0x60ce7000, 0x0501f004, 0x60167000, 0x0501f002, + 0x600e7000, 0x05fdfed1, 0x05020055, 0x59a800d6, + 0x8c000502, 0x05000014, 0x05fdfec0, 0x05000012, + 0x59340212, 0x82000500, 0x0000ff00, 0x60401000, + 0x0502000b, 0x59a8024c, 0x8c000506, 0x0502002d, + 0x60201000, 0x59340002, 0x82000500, 0x00ff0000, + 0x82000580, 0x00ff0000, 0x05000003, 0x0501f945, + 0x05020024, 0x051dfad7, 0x05000038, 0x64426407, + 0x4926601d, 0x4936600a, 0x60140800, 0x91380583, + 0x05000002, 0x60240800, 0x05fdf8b6, 0x0501f008, + 0x90102591, 0x05020029, 0x051dfaca, 0x0500002b, + 0x64426407, 0x4926601d, 0x4936600a, 0x052dfabd, + 0x492e6009, 0x4932580c, 0x83340580, 0x001141b4, + 0x05000007, 0x592c0c0f, 0x8c040518, 0x05000004, + 0x59340200, 0x84000514, 0x48026a00, 0x0009f839, + 0x80000580, 0x1c01f000, 0x90000541, 0x05fdf7fe, + 0x60281000, 0x0501f012, 0x60381000, 0x0501f010, + 0x603c1000, 0x0501f00e, 0x60401000, 0x0501f00c, + 0x60581000, 0x0501f00a, 0x605c1000, 0x0501f008, + 0x60601000, 0x0501f006, 0x60781000, 0x0501f004, + 0x40001000, 0x0501f002, 0x60801000, 0x60640800, + 0x60c68000, 0x05fdf7e9, 0x600c0800, 0x0501f002, + 0x60280800, 0x41781000, 0x05fdf7fa, 0x60240800, + 0x59341400, 0x05fdf7f7, 0x60228000, 0x0501f004, + 0x601c0800, 0x416c1000, 0x05fdf7f2, 0x41780800, + 0x41781000, 0x05fdf7d9, 0x60028000, 0x05fdf7fc, + 0x90004d9d, 0x05d00f88, 0x90004d9a, 0x05020004, + 0x40101000, 0x40000800, 0x05fdf7e6, 0x90004d9b, + 0x05020003, 0x40181000, 0x05fdf7fb, 0x90004d9c, + 0x05fc07f9, 0x90004d99, 0x05fc07ca, 0x90004da0, + 0x05fc07f5, 0x05fdf7df, 0x592e600c, 0x052df85f, + 0x05fc07ca, 0x59300c07, 0x90040591, 0x05fe07df, + 0x592c0c0f, 0x82041500, 0x0000e000, 0x82080580, + 0x00006000, 0x05000021, 0x83440580, 0x0000ffff, + 0x05020007, 0x5932680a, 0x83340580, 0x001141b4, + 0x05fe07d2, 0x61000810, 0x0501f010, 0x592c100e, + 0x82081500, 0x00ffffff, 0x42004000, 0x80000000, + 0x05fdfcc7, 0x05fe07d3, 0x5930000a, 0x82000d80, + 0x001141b4, 0x05000003, 0x81340580, 0x05fe07c3, + 0x4936600a, 0x59340a04, 0x0501f9eb, 0x05fe07b1, + 0x59300a03, 0x90040587, 0x05fe07bc, 0x492e6009, + 0x61527000, 0x05fdf78d, 0x0539fdbf, 0x05fc07bf, + 0x05fdf7b6, 0x492fc857, 0x592e600c, 0x83300580, + 0xffffffff, 0x05020041, 0x592c020b, 0x8c000500, + 0x0502006e, 0x8d0c050e, 0x05020059, 0x592e8c0a, + 0x59a800ad, 0x81440480, 0x05021036, 0x592c380e, + 0x821c3d00, 0x00ffffff, 0x05e1ffe6, 0x05020039, + 0x49265805, 0x41784000, 0x592c100d, 0x82081500, + 0x00ffffff, 0x05fdfc9a, 0x0502004b, 0x592e6017, + 0x4933c857, 0x83300580, 0xffffffff, 0x05000018, + 0x052df812, 0x0500002d, 0x591c1407, 0x800811c0, + 0x05000013, 0x592c0411, 0x591c0a02, 0x80040580, + 0x0502000f, 0x591c000a, 0x800001c0, 0x05020007, + 0x591c082a, 0x59340002, 0x80040580, 0x82000500, + 0x00ffffff, 0x0501f002, 0x81340580, 0x05020004, + 0x90080587, 0x0502002c, 0x64923c03, 0x59240005, + 0x592c080d, 0x82041500, 0x00ffffff, 0x80081580, + 0x0500000c, 0x80040932, 0xb0040582, 0x0502000b, + 0x49365806, 0x0501f8d7, 0x80000580, 0x1c01f000, + 0x60281000, 0x0501f00a, 0x60401000, 0x0501f008, + 0x60501000, 0x0501f006, 0x605c1000, 0x0501f004, + 0x60601000, 0x0501f002, 0x60f01000, 0x492fc857, + 0x480bc857, 0x60640800, 0x60c68000, 0x90000541, + 0x05fdf7ef, 0x492fc857, 0x4803c857, 0x480bc857, + 0x40000800, 0x05fdf7f9, 0x492fc857, 0x60280800, + 0x41781000, 0x05fdf7f5, 0x41780800, 0x41781000, + 0x05fdf7f3, 0x60780800, 0x05fdf7fa, 0x60040800, + 0x05fdf7f8, 0x90004d9d, 0x05d00ee3, 0x90004d9a, + 0x05020003, 0x40101000, 0x05fdf7eb, 0x90004d9b, + 0x05020003, 0x40181000, 0x05fdf7e7, 0x90004d9c, + 0x05fc07e5, 0x90004d99, 0x05fc07e3, 0x90004da0, + 0x05fc07e1, 0x05fdf7e5, 0x0539fe20, 0x60028000, + 0x05fdf7e6, 0x5c000000, 0x4c000000, 0x4803c857, + 0x5930200a, 0x801021c0, 0x05000029, 0x58101400, + 0x4813c857, 0x480bc857, 0x82081d00, 0x000000ff, + 0x59300c03, 0x90040588, 0x05000018, 0x9004058a, + 0x05000010, 0x9004058c, 0x0500000b, 0x90040582, + 0x05000012, 0x90040581, 0x0500000d, 0x90040583, + 0x05000008, 0x90040585, 0x05000003, 0x900405b3, + 0x05020013, 0x900c0589, 0x0500000a, 0x0501f010, + 0x900c0585, 0x05000007, 0x0501f00d, 0x900c058b, + 0x05000004, 0x0501f00a, 0x900c0583, 0x05020008, + 0x82081d00, 0xffffff00, 0x840c01c0, 0x800c0540, + 0x4807c857, 0x4803c857, 0x48002400, 0x1c01f000, + 0x599c0017, 0x8c00050a, 0x05000003, 0x80000580, + 0x1c01f000, 0x59a8024c, 0x90000528, 0x05000007, + 0x61f6880f, 0x417a4000, 0x05fdfdc4, 0x05020003, + 0x5934000a, 0x8c000504, 0x1c01f000, 0x1c01f000, + 0x4d440000, 0x4d340000, 0x80000580, 0x40001800, + 0x40028800, 0x90080588, 0x05020002, 0x60041800, + 0x0001fb08, 0x0502000a, 0x05fdfd60, 0x05020008, + 0x800c19c0, 0x05000004, 0x59340405, 0x8c000508, + 0x05000003, 0x80081040, 0x05000009, 0x81468800, + 0x59a800ad, 0x81440480, 0x05fc17f2, 0x80000580, + 0x5c026800, 0x5c028800, 0x1c01f000, 0x90000541, + 0x5c026800, 0x5c028800, 0x1c01f000, 0x60200800, + 0x58d400e4, 0x8c00051c, 0x0502002f, 0x59a8024c, + 0x8c000508, 0x0502002c, 0x5934100a, 0x82081500, + 0x0002e000, 0x41781800, 0x90080580, 0x0500000a, + 0x800c1800, 0x82080580, 0x00002000, 0x05000006, + 0x800c1800, 0x82080580, 0x00006000, 0x05000002, + 0x800c1800, 0x42007000, 0x00111ffa, 0x58380401, + 0x8c000504, 0x05000006, 0x900c2c84, 0x05021016, + 0x820c0400, 0x00105fd7, 0x0501f012, 0x41782000, + 0x59342a04, 0x82140480, 0x00000800, 0x05021006, + 0x80102000, 0x82140480, 0x00000400, 0x05021002, + 0x80102000, 0x800c00c2, 0x800c0400, 0x80100400, + 0x90002c89, 0x05021004, 0x82000400, 0x00105fdb, + 0x50000800, 0x48066c04, 0x1c01f000, 0x00000002, + 0x00000004, 0x00000008, 0x00000008, 0x00002802, + 0x00001402, 0x00000a02, 0x00001402, 0x00000a02, + 0x00000502, 0x00000a02, 0x00000502, 0x00000504, + 0x59a808a1, 0x800409c0, 0x05020004, 0x492f50a0, + 0x492f50a1, 0x0519f7d3, 0x492c0800, 0x492f50a1, + 0x1c01f000, 0x5934000f, 0x41784000, 0x80001540, + 0x05000010, 0x58080208, 0x82000500, 0x000000ff, + 0x90000592, 0x05000005, 0xb00005a0, 0x05000003, + 0x90000588, 0x05020004, 0x58080210, 0x80040580, + 0x05000005, 0x58080000, 0x40084000, 0x05fdf7f0, + 0x90000541, 0x1c01f000, 0x4c5c0000, 0x4c600000, + 0x592e8c0a, 0x592e440b, 0x83224500, 0x000000ff, + 0x592cbc0c, 0x592cc40b, 0x4947c857, 0x4923c857, + 0x485fc857, 0x4863c857, 0x8260c500, 0x0000f000, + 0x82600580, 0x00003000, 0x05020007, 0x59340200, + 0x8c000508, 0x05020004, 0x599c0018, 0x8c000510, + 0x0500001a, 0x8c5c050a, 0x0500002b, 0x485fc856, + 0x812241c0, 0x05020013, 0x83440580, 0x000007fe, + 0x0502000e, 0x42003000, 0x00fffffe, 0x05f9ff0c, + 0x05020017, 0x4937c857, 0x052dfd0e, 0x05000012, + 0x80000580, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x90000541, 0x05fdf7fc, 0x60281000, 0x0501f007, + 0x60381000, 0x0501f005, 0x603c1000, 0x0501f003, + 0x60601000, 0x0501f001, 0x60640800, 0x60c68000, + 0x05fdf7f4, 0x600c0800, 0x0501f002, 0x60280800, + 0x41781000, 0x05fdf7fa, 0x60228000, 0x0501f001, + 0x41780800, 0x41781000, 0x05fdf7ea, 0x60028000, + 0x05fdf7fc, 0x485fc856, 0x812241c0, 0x05fe07e9, + 0x83440580, 0x000007fe, 0x05fe07e4, 0x42003000, + 0x00fffffe, 0x05f9fee2, 0x05fe07ed, 0x4937c857, + 0x592e600e, 0x0529fead, 0x05fc07e2, 0x59300c07, + 0x90040591, 0x05fe07e9, 0x5930000a, 0x800001c0, + 0x05000003, 0x81340580, 0x05fe07e4, 0x4936600a, + 0x59300a03, 0x90040587, 0x05fe07e0, 0x592c0a0d, + 0x4807c857, 0x4806621b, 0x497a641b, 0x492e6009, + 0x64126407, 0x8c5c050e, 0x05020013, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x592cba0b, 0x485f54d2, + 0x485f52d1, 0x592cc80f, 0x4200c000, 0x00114696, + 0x0539fda8, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x616a7000, 0x64066203, 0x493a6403, 0x0511fcb3, + 0x05fdf7b0, 0x616e7000, 0x592c0010, 0x4802641c, + 0x592c0011, 0x4802621c, 0x05fdf7f7, 0x42000000, + 0x001141b4, 0x4a000400, 0x00000707, 0x4a000204, + 0x00000840, 0x4a000403, 0x0000ffff, 0x49780200, + 0x1c01f000, 0x4d340000, 0x4d440000, 0x4c580000, + 0x59a8b0ac, 0x4803c856, 0x417a8800, 0x0001fb08, + 0x05020006, 0x59340200, 0x8c00051a, 0x05000003, + 0x8400051a, 0x48026a00, 0x8058b040, 0x05000007, + 0x81468800, 0x83440580, 0x000007f0, 0x05fe07f4, + 0x60028810, 0x05fdf7f2, 0x5c00b000, 0x5c028800, + 0x5c026800, 0x1c01f000, 0x592c2a08, 0x82142d00, + 0x000000ff, 0x90140592, 0x05000006, 0xb01405b2, + 0x05000004, 0xb01405ba, 0x05000002, 0x90000541, + 0x1c01f000, 0x592c0011, 0x800001c0, 0x05000005, + 0x80040480, 0x05001003, 0x80000580, 0x1c01f000, + 0x60900000, 0x80000540, 0x1c01f000, 0x64033003, 0x4a03b104, 0x80000000, 0x59d80105, 0x4a03b104, 0x60000001, 0x1c01f000, 0x599c0018, 0x4803c856, 0x497b3006, 0x497b3007, 0x9000050f, 0x48033004, @@ -6057,36 +6242,36 @@ static const uint32_t isp_2500_risc_code[] = { 0x640f3003, 0x05fdf7f8, 0x8d0c0520, 0x05020003, 0x64133003, 0x05fdf7f4, 0x64173003, 0x05fdf7f2, 0x592c0208, 0x492fc857, 0x80000540, 0x05000007, - 0x42034000, 0x0010dceb, 0x59a1d806, 0x80edd9c0, - 0x05d00fba, 0x0501f005, 0x052df885, 0x05d20fb7, + 0x42034000, 0x00111c71, 0x59a1d806, 0x80edd9c0, + 0x05d00d11, 0x0501f005, 0x052dfb47, 0x05d20d0e, 0x5931d82d, 0x58ef400b, 0x58ec0009, 0x800001c0, - 0x05d00fb2, 0x0801f800, 0x1c01f000, 0x5c000000, + 0x05d00d09, 0x0801f800, 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, 0x492fc857, 0x4943c857, - 0x4807c857, 0x4c040000, 0x0005f9f3, 0x5c000800, - 0x4c040000, 0x0505fdd3, 0x5c000800, 0x4a025a08, + 0x4807c857, 0x4c040000, 0x0005fa1a, 0x5c000800, + 0x4c040000, 0x0505fe77, 0x5c000800, 0x4a025a08, 0x00000103, 0x49425a0a, 0x48065a0c, 0x4a025c0a, 0x0000ffff, 0x813261c0, 0x05000003, 0x59300402, 0x48025c0a, 0x592c020c, 0x8c000512, 0x05020006, 0x912c040d, 0x05011000, 0x4803c840, 0x642fc842, - 0x05011000, 0x1c01f000, 0x59765800, 0x0001fdfd, - 0x592c1005, 0x800811c0, 0x000205e2, 0x1c01f000, + 0x05011000, 0x1c01f000, 0x59765800, 0x0001fe23, + 0x592c1005, 0x800811c0, 0x00020608, 0x1c01f000, 0x4c540000, 0x4c580000, 0x4c5c0000, 0x4d2c0000, - 0x4c600000, 0x400cc000, 0x4000b800, 0x0539fa9d, - 0x4178a800, 0x05d5fb18, 0x050000c8, 0x05011000, + 0x4c600000, 0x400cc000, 0x4000b800, 0x0539ff34, + 0x4178a800, 0x05d5f87c, 0x050000c8, 0x05011000, 0x485fc857, 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, 0x05fd17ff, 0x412c7000, 0x4a025808, - 0x00000132, 0x497a5809, 0x42000000, 0x0010de60, + 0x00000132, 0x497a5809, 0x42000000, 0x00111dfa, 0x50000000, 0x48025802, 0x805cb9c0, 0x05020060, - 0x912e5c0b, 0x417a4000, 0x42024800, 0x0010e512, + 0x912e5c0b, 0x417a4000, 0x42024800, 0x001124b6, 0x41786800, 0x59240a00, 0x9004050f, 0x0c01f001, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e8d, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e84, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e8d, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e8d, + 0x00106171, 0x00106171, 0x00106171, 0x00106171, + 0x00106171, 0x00106171, 0x00106171, 0x00106168, + 0x00106171, 0x00106171, 0x00106171, 0x00106171, + 0x00106171, 0x00106171, 0x00106171, 0x00106171, 0x8054a800, 0x812241c0, 0x05020007, 0x59240805, 0x805c00f0, 0x80040d40, 0x48065800, 0x812e5800, - 0x0501f030, 0x90340503, 0x0c01f001, 0x00105e93, - 0x00105e9b, 0x00105ea4, 0x00105ead, 0x91200581, + 0x0501f030, 0x90340503, 0x0c01f001, 0x00106177, + 0x0010617f, 0x00106188, 0x00106191, 0x91200581, 0x05020003, 0x60042000, 0x0501f020, 0x912004a0, 0x0500101d, 0x80346800, 0x0501f01b, 0x912005a1, 0x05020004, 0x812e5800, 0x60042000, 0x0501f017, @@ -6098,371 +6283,374 @@ static const uint32_t isp_2500_risc_code[] = { 0x80346800, 0x801020c2, 0x90040507, 0x90000587, 0x05020004, 0x592c0000, 0x80100540, 0x48025800, 0x91264c0d, 0x81224000, 0x8058b040, 0x05fe07b2, - 0x8054a9c0, 0x403a5800, 0x0500005f, 0x0539fa31, - 0x0539fa51, 0x05020002, 0x8058b040, 0x805800d0, + 0x8054a9c0, 0x403a5800, 0x0500005f, 0x0539fec8, + 0x0539fee8, 0x05020002, 0x8058b040, 0x805800d0, 0x80540540, 0x48025a0a, 0x0501f050, 0x4943c857, 0x4923c857, 0x91400581, 0x05020004, 0x48165a0c, 0x90140583, 0x0500004d, 0x83400d00, 0x000000ff, 0x90040584, 0x05000049, 0x90040586, 0x05000047, 0x83400d00, 0x0000ff00, 0x05000003, 0x81400110, 0x48025810, 0x814000d0, 0x81200540, 0x48025c0a, - 0x0539fa35, 0x05020002, 0x8058b040, 0x805800d0, + 0x0539fecc, 0x05020002, 0x8058b040, 0x805800d0, 0x90000541, 0x48025a0a, 0x59240805, 0x805c00f0, 0x80040d40, 0x4806580b, 0x5924000b, 0x4802580f, 0x592c020c, 0x80600540, 0x48025a0c, 0x91400d81, 0x0500002a, 0x4d340000, 0x4d440000, 0x61fa880f, - 0x05fdfb85, 0x05d20ee5, 0x592c020c, 0x8400055a, + 0x05fdfb6a, 0x05d20c3c, 0x592c020c, 0x8400055a, 0x48025a0c, 0x59340006, 0x9c0001c0, 0x48025812, 0x59340007, 0x9c0001c0, 0x48025813, 0x59340008, 0x9c0001c0, 0x48025814, 0x59340009, 0x9c0001c0, - 0x48025815, 0x0501f9a9, 0x05020006, 0x59a80249, + 0x48025815, 0x0501f9af, 0x05020006, 0x59a8024c, 0x8c000508, 0x05020005, 0x6000080c, 0x0501f007, 0x60000804, 0x0501f005, 0x592c020c, 0x84000558, 0x48025a0c, 0x60000808, 0x592c020c, 0x82000500, 0x0000f1ff, 0x80040540, 0x4803c857, 0x48025a0c, - 0x5c028800, 0x5c026800, 0x0539fa16, 0x0502000d, - 0x0001fb82, 0x0501f005, 0x59cc0007, 0x48025810, - 0x05fdf7bd, 0x05d5fa71, 0x5c00c000, 0x5c025800, + 0x5c028800, 0x5c026800, 0x0539fead, 0x0502000d, + 0x0001fba8, 0x0501f005, 0x59cc0007, 0x48025810, + 0x05fdf7bd, 0x05d1ffc4, 0x5c00c000, 0x5c025800, 0x5c00b800, 0x5c00b000, 0x5c00a800, 0x1c01f000, - 0x0535fdb1, 0x05fdf7f9, 0x59a8003f, 0x90000c8a, - 0x05d21eae, 0x0c01f808, 0x4a038805, 0x000000f0, - 0x59c400a3, 0x82000500, 0x02870000, 0x05d20ea7, - 0x1c01f000, 0x00105fb3, 0x00105f40, 0x00105f58, - 0x00105f82, 0x00105fa6, 0x001005da, 0x001005da, - 0x00105f58, 0x001005da, 0x00105f3f, 0x1c01f000, - 0x600c2000, 0x0501fbad, 0x4a038808, 0x00000204, - 0x0501fba1, 0x59c40805, 0x8c04050e, 0x05020010, + 0x0539fa2a, 0x05fdf7f9, 0x59a80042, 0x90000c8a, + 0x05d21c05, 0x0c01f808, 0x4a038805, 0x000000f0, + 0x59c400a3, 0x82000500, 0x02870000, 0x05d20bfe, + 0x1c01f000, 0x00106297, 0x00106224, 0x0010623c, + 0x00106266, 0x0010628a, 0x00100615, 0x00100615, + 0x0010623c, 0x00100615, 0x00106223, 0x1c01f000, + 0x600c2000, 0x0501fbb9, 0x4a038808, 0x00000204, + 0x0501fbac, 0x59c40805, 0x8c04050e, 0x05020010, 0x8c04050a, 0x05020009, 0x8c04050c, 0x05020005, - 0x8c040508, 0x0500000a, 0x640f503f, 0x0501f007, - 0x6403503f, 0x0501f005, 0x42000000, 0x0010e3a4, - 0x0539f888, 0x640b503f, 0x0501f898, 0x1c01f000, - 0x497b50a8, 0x60002000, 0x0501fb94, 0x4a038808, + 0x8c040508, 0x0500000a, 0x640f5042, 0x0501f007, + 0x64035042, 0x0501f005, 0x42000000, 0x00112345, + 0x0539fd1f, 0x640b5042, 0x0501f898, 0x1c01f000, + 0x497b50ab, 0x60002000, 0x0501fba0, 0x4a038808, 0x00000202, 0x59c40805, 0x8c040508, 0x05020020, 0x8c04050c, 0x0502001c, 0x8c04050e, 0x05020018, - 0x82040500, 0x000000f0, 0x0502001b, 0x0501fb7e, + 0x82040500, 0x000000f0, 0x0502001b, 0x0501fb89, 0x4a038808, 0x00000280, 0x59c40002, 0x8400050c, - 0x48038802, 0x0501f959, 0x4d3c0000, 0x60067800, - 0x0529feb7, 0x5c027800, 0x59c410a3, 0x84081518, - 0x05ddff2b, 0x4a038808, 0x00000280, 0x60082000, - 0x0501fb76, 0x6427503f, 0x0501f007, 0x6407503f, - 0x0501f004, 0x6403503f, 0x0501f002, 0x640f503f, - 0x0501f86e, 0x1c01f000, 0x60042000, 0x0501fb6b, - 0x59c410a3, 0x84081518, 0x05ddff19, 0x4a038808, + 0x48038802, 0x0501f95f, 0x4d3c0000, 0x60067800, + 0x052df97a, 0x5c027800, 0x59c410a3, 0x84081518, + 0x05ddfcc7, 0x4a038808, 0x00000280, 0x60082000, + 0x0501fb82, 0x64275042, 0x0501f007, 0x64075042, + 0x0501f004, 0x64035042, 0x0501f002, 0x640f5042, + 0x0501f86e, 0x1c01f000, 0x60042000, 0x0501fb77, + 0x59c410a3, 0x84081518, 0x05ddfcb5, 0x4a038808, 0x00000280, 0x59c40805, 0x8c04050a, 0x05020018, 0x8c04050c, 0x05020014, 0x8c04050e, 0x05020010, 0x82040500, 0x000000f0, 0x05020013, 0x59c40002, - 0x8400050c, 0x48038802, 0x0501f930, 0x4d3c0000, - 0x60067800, 0x0529fe8e, 0x5c027800, 0x60082000, - 0x0501fb52, 0x6427503f, 0x0501f007, 0x6407503f, - 0x0501f004, 0x6403503f, 0x0501f002, 0x640b503f, - 0x0501f84a, 0x1c01f000, 0x0501fc43, 0x4a038808, + 0x8400050c, 0x48038802, 0x0501f936, 0x4d3c0000, + 0x60067800, 0x052df951, 0x5c027800, 0x60082000, + 0x0501fb5e, 0x64275042, 0x0501f007, 0x64075042, + 0x0501f004, 0x64035042, 0x0501f002, 0x640b5042, + 0x0501f84a, 0x1c01f000, 0x0501fc4f, 0x4a038808, 0x00000208, 0x59c40805, 0x8c04050c, 0x05020005, - 0x8c04050e, 0x05000005, 0x6407503f, 0x0501f002, - 0x6403503f, 0x0501f83d, 0x1c01f000, 0x60102000, - 0x0501fb3a, 0x0501f873, 0x59c40805, 0x8c04050c, + 0x8c04050e, 0x05000005, 0x64075042, 0x0501f002, + 0x64035042, 0x0501f83d, 0x1c01f000, 0x60102000, + 0x0501fb46, 0x0501f873, 0x59c40805, 0x8c04050c, 0x05020009, 0x8c04050a, 0x05020005, 0x8c04050e, - 0x05000005, 0x6407503f, 0x0501f002, 0x640b503f, - 0x0501f82e, 0x1c01f000, 0x0501f8ec, 0x05d20e17, - 0x0501fc6b, 0x601c2000, 0x0501fb28, 0x8d0c050c, - 0x05000010, 0x850e1d0c, 0x64438805, 0x05ddfde0, + 0x05000005, 0x64075042, 0x0501f002, 0x640b5042, + 0x0501f82e, 0x1c01f000, 0x0501f8f2, 0x05d20b6e, + 0x0501fc77, 0x601c2000, 0x0501fb34, 0x8d0c050c, + 0x05000010, 0x850e1d0c, 0x64438805, 0x05ddfb7c, 0x59c40005, 0x8c000508, 0x05000006, 0x4a038808, - 0x00000208, 0x64075042, 0x6006d800, 0x0501f01a, + 0x00000208, 0x64075045, 0x6006d800, 0x0501f01a, 0x59c40006, 0x84000548, 0x48038806, 0x0501f016, - 0x59a8003f, 0x90000581, 0x05020012, 0x42000000, - 0x0010e3a4, 0x0535ffff, 0x4ce80000, 0x61a1d007, - 0x050df825, 0x59c40005, 0x90000530, 0x05000008, - 0x8c00050a, 0x05000004, 0x60002000, 0x0501fb07, - 0x0501f003, 0x60042000, 0x0501fb04, 0x5c01d000, - 0x6413503f, 0x1c01f000, 0x4c040000, 0x4c080000, - 0x61900800, 0x42001000, 0x00105ff7, 0x0509fffc, + 0x59a80042, 0x90000581, 0x05020012, 0x42000000, + 0x00112345, 0x0539fc96, 0x4ce80000, 0x61a1d007, + 0x050df9ac, 0x59c40005, 0x90000530, 0x05000008, + 0x8c00050a, 0x05000004, 0x60002000, 0x0501fb13, + 0x0501f003, 0x60042000, 0x0501fb10, 0x5c01d000, + 0x64135042, 0x1c01f000, 0x4c040000, 0x4c080000, + 0x61900800, 0x42001000, 0x001062db, 0x050df97c, 0x5c001000, 0x5c000800, 0x1c01f000, 0x4803c856, - 0x4c040000, 0x0511fd1a, 0x4df00000, 0x0511ffa7, - 0x5c03e000, 0x05100d07, 0x42000000, 0x0010e3a3, - 0x0535ffdc, 0x05fdffc1, 0x5c000800, 0x1c01f000, - 0x4803c856, 0x4c040000, 0x4c080000, 0x0511fd0c, - 0x4df00000, 0x0511ff99, 0x5c03e000, 0x05100cf9, - 0x59c40006, 0x84000500, 0x48038806, 0x0515f846, - 0x497b8880, 0x42000000, 0x0010e3a2, 0x0535ffc9, - 0x05ddfcf8, 0x641350b4, 0x6012d800, 0x64078805, - 0x42001000, 0x00105ff7, 0x0509ffdc, 0x05d1ffe3, - 0x0501f89e, 0x05000005, 0x42006000, 0xfeffffff, - 0x41786800, 0x05f9fa36, 0x05d1fbd8, 0x60000001, - 0x05ddfa60, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x4c040000, 0x0511fef4, 0x4df00000, 0x0515f981, + 0x5c03e000, 0x05100ee1, 0x42000000, 0x00112344, + 0x0539fc73, 0x05fdffc1, 0x5c000800, 0x1c01f000, + 0x4803c856, 0x4c040000, 0x4c080000, 0x0511fee6, + 0x4df00000, 0x0515f973, 0x5c03e000, 0x05100ed3, + 0x59c40006, 0x84000500, 0x48038806, 0x0515fa20, + 0x497b8880, 0x42000000, 0x00112343, 0x0539fc60, + 0x05ddfa94, 0x641350b9, 0x6012d800, 0x64078805, + 0x42001000, 0x001062db, 0x050df95c, 0x05d1fd2e, + 0x0501f8a4, 0x05000005, 0x42006000, 0xfeffffff, + 0x41786800, 0x05f9f949, 0x05d1f92b, 0x60000001, + 0x05d9fffc, 0x5c001000, 0x5c000800, 0x1c01f000, 0x59c40008, 0x82000580, 0x00000210, 0x05000005, - 0x4a038808, 0x00000210, 0x6021d027, 0x0509ffd6, - 0x1c01f000, 0x4c040000, 0x59a80842, 0x90040580, + 0x4a038808, 0x00000210, 0x6021d027, 0x050df95d, + 0x1c01f000, 0x4c040000, 0x59a80845, 0x90040580, 0x05000008, 0x90040581, 0x05000008, 0x90040582, 0x05000008, 0x90040583, 0x05000008, 0x0501f043, - 0x6403503f, 0x0501f006, 0x6413503f, 0x0501f004, - 0x6407503f, 0x0501f002, 0x641f503f, 0x497b8880, - 0x64078893, 0x41780000, 0x05ddfac9, 0x0515f80e, + 0x64035042, 0x0501f006, 0x64135042, 0x0501f004, + 0x64075042, 0x0501f002, 0x641f5042, 0x497b8880, + 0x64078893, 0x41780000, 0x05ddf865, 0x0515f9e8, 0x916c0d84, 0x05000008, 0x59c40006, 0x82000500, 0xffffff0f, 0x82000540, 0x04000001, 0x48038806, 0x0501f007, 0x59c40006, 0x82000500, 0xffffff0f, - 0x82000540, 0x04000000, 0x48038806, 0x0501f863, + 0x82000540, 0x04000000, 0x48038806, 0x0501f869, 0x05020005, 0x59c40806, 0x82040d00, 0xfbffff0f, 0x48078806, 0x59c40005, 0x8c000534, 0x05020026, 0x42006000, 0xfc18ffff, 0x42006800, 0x01000000, - 0x05f9f9f3, 0x05ddfd46, 0x59c408a4, 0x90040d0f, - 0x90040d8c, 0x05020885, 0x0501f850, 0x05000005, - 0x42006000, 0xfeffffff, 0x41786800, 0x05f9f9e8, - 0x916c0d84, 0x0500000c, 0x05fdff7c, 0x5994102e, - 0x41780800, 0x60280000, 0x050dff18, 0x40080000, - 0x59a80863, 0x80040c00, 0x42001000, 0x00106004, - 0x0509ff6c, 0x64135042, 0x05fdfeac, 0x0501f83b, + 0x05f9f906, 0x05ddfae2, 0x59c408a4, 0x90040d0f, + 0x90040d8c, 0x0502088b, 0x0501f856, 0x05000005, + 0x42006000, 0xfeffffff, 0x41786800, 0x05f9f8fb, + 0x916c0d84, 0x0500000c, 0x05fdff7c, 0x5994102f, + 0x41780800, 0x60280000, 0x0511f8ed, 0x40080000, + 0x59a80866, 0x80040c00, 0x42001000, 0x001062e8, + 0x050df8ec, 0x64135045, 0x05fdfeac, 0x0501f841, 0x05020005, 0x59c408a4, 0x90040d0f, 0x9004058c, - 0x05d20d56, 0x5c000800, 0x1c01f000, 0x4803c856, - 0x4c000000, 0x0509ff84, 0x4a03503d, 0x00ffffff, - 0x497b5041, 0x59a8004d, 0x82000500, 0xffff0000, - 0x4803504d, 0x497b8880, 0x497b8893, 0x41780000, - 0x05ddfa7b, 0x59c40001, 0x82000500, 0xfffffcff, + 0x05d20aad, 0x5c000800, 0x1c01f000, 0x4803c856, + 0x4c000000, 0x050df90b, 0x4a035040, 0x00ffffff, + 0x497b5044, 0x59a80050, 0x82000500, 0xffff0000, + 0x48035050, 0x497b8880, 0x497b8893, 0x41780000, + 0x05ddf817, 0x59c40001, 0x82000500, 0xfffffcff, 0x48038801, 0x42006000, 0xfc18ffff, 0x41786800, - 0x05f9f9bb, 0x59c410a3, 0x84081518, 0x05ddfe00, + 0x05f9f8ce, 0x59c410a3, 0x84081518, 0x05ddfb9c, 0x4a038808, 0x00000200, 0x5c000000, 0x800001c0, - 0x05fa0847, 0x4a038805, 0x040000f0, 0x59c40006, + 0x05f60f5a, 0x4a038805, 0x040000f0, 0x59c40006, 0x82000500, 0xffffffcf, 0x82000540, 0x440000c1, - 0x48038806, 0x1c01f000, 0x4c5c0000, 0x59a8b841, - 0x825cbd80, 0x0000aaaa, 0x5c00b800, 0x1c01f000, - 0x4c5c0000, 0x599cb818, 0x905cbd30, 0x905cbd80, + 0x4c000000, 0x0501f80d, 0x5c000000, 0x05020003, + 0x82000500, 0xffffff0f, 0x48038806, 0x1c01f000, + 0x4c5c0000, 0x59a8b844, 0x825cbd80, 0x0000aaaa, 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x599cb818, - 0x905cbd30, 0x905cbd90, 0x5c00b800, 0x1c01f000, - 0x4c5c0000, 0x599cb818, 0x905cbd30, 0x905cbda0, - 0x5c00b800, 0x1c01f000, 0x490fc857, 0x910c0d13, - 0x0500001d, 0x599c1017, 0x4d3c0000, 0x910c0511, - 0x05000005, 0x417a7800, 0x8d0c0520, 0x05020007, - 0x0501f00f, 0x60227800, 0x8d0c0520, 0x0500000c, - 0x600c3000, 0x0501f002, 0x60103000, 0x603a8000, - 0x4d200000, 0x61fe4001, 0x0531fecf, 0x5c024000, - 0x599c1017, 0x8c08050a, 0x05020005, 0x60128000, - 0x05e1f9f2, 0x4803c856, 0x850e1d08, 0x5c027800, - 0x0501f009, 0x8d0c0520, 0x05000007, 0x603e8000, - 0x60043000, 0x4d200000, 0x61fe4001, 0x0531febe, - 0x5c024000, 0x1c01f000, 0x4803c856, 0x4c580000, - 0x42000000, 0x0010e4bd, 0x0535feea, 0x42000800, - 0x00110516, 0x59c40003, 0x44000800, 0x59c40004, - 0x48000801, 0x59c4000b, 0x48000802, 0x59c4008e, - 0x48000803, 0x59c4008f, 0x48000804, 0x59c40090, - 0x48000805, 0x59c40091, 0x48000806, 0x59c40092, - 0x48000807, 0x59c40093, 0x48000808, 0x59c40099, - 0x48000809, 0x59c4009e, 0x4800080a, 0x59c400aa, - 0x4800080b, 0x90040c0f, 0x41c41800, 0x60c0b000, - 0x580c0050, 0x44000800, 0x80040800, 0x800c1800, - 0x8058b040, 0x05fe07fb, 0x41c41800, 0x6080b000, - 0x580c0010, 0x44000800, 0x80040800, 0x800c1800, - 0x8058b040, 0x05fe07fb, 0x497b8830, 0x6100b000, - 0x59c40031, 0x44000800, 0x80040800, 0x8058b040, - 0x05fe07fc, 0x497b88ac, 0x6040b000, 0x59c400ad, - 0x44000800, 0x80040800, 0x8058b040, 0x05fe07fc, - 0x59a800a9, 0x59c410b1, 0x80080400, 0x480350a9, - 0x59a800aa, 0x59c410b2, 0x80080400, 0x480350aa, - 0x59c41001, 0x4c080000, 0x8408150c, 0x480b8801, - 0x4a0370e4, 0x00000300, 0x4a0370e5, 0xb0000000, - 0x60000810, 0x80040840, 0x05d00c9c, 0x59b800e5, - 0x8c000538, 0x05fe07fc, 0x4a0370e4, 0x00000200, - 0x42006000, 0xffffffff, 0x42006800, 0x80000000, - 0x05f9f90f, 0x64078807, 0x497b8807, 0x0501faac, - 0x4a038808, 0x00000210, 0x42006000, 0xfcf8ffff, - 0x42006800, 0x01000000, 0x05f9f905, 0x5c001000, - 0x480b8801, 0x42000800, 0x00110516, 0x50040000, - 0x48038803, 0x58040001, 0x48038804, 0x58040002, - 0x4803880b, 0x58040003, 0x4803888e, 0x58040004, - 0x4803888f, 0x58040005, 0x48038890, 0x58040006, - 0x48038891, 0x58040007, 0x48038892, 0x58040008, - 0x48038893, 0x58040009, 0x48038899, 0x5804000a, - 0x4803889e, 0x5804000b, 0x480388aa, 0x90040c0f, - 0x41c41800, 0x60c0b000, 0x50040000, 0x48001850, + 0x905cbd30, 0x905cbd80, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x599cb818, 0x905cbd30, 0x905cbd90, + 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x599cb818, + 0x905cbd30, 0x905cbda0, 0x5c00b800, 0x1c01f000, + 0x490fc857, 0x910c0d13, 0x0500001d, 0x599c1017, + 0x4d3c0000, 0x910c0511, 0x05000005, 0x417a7800, + 0x8d0c0520, 0x05020007, 0x0501f00f, 0x60227800, + 0x8d0c0520, 0x0500000c, 0x600c3000, 0x0501f002, + 0x60103000, 0x603a8000, 0x4d200000, 0x61fe4001, + 0x0535fb2c, 0x5c024000, 0x599c1017, 0x8c08050a, + 0x05020005, 0x60128000, 0x05ddff9b, 0x4803c856, + 0x850e1d08, 0x5c027800, 0x0501f009, 0x8d0c0520, + 0x05000007, 0x603e8000, 0x60043000, 0x4d200000, + 0x61fe4001, 0x0535fb1b, 0x5c024000, 0x1c01f000, + 0x4803c856, 0x4c580000, 0x42000000, 0x00112461, + 0x0539fb7b, 0x42000800, 0x001144ba, 0x59c40003, + 0x44000800, 0x59c40004, 0x48000801, 0x59c4000b, + 0x48000802, 0x59c4008e, 0x48000803, 0x59c4008f, + 0x48000804, 0x59c40090, 0x48000805, 0x59c40091, + 0x48000806, 0x59c40092, 0x48000807, 0x59c40093, + 0x48000808, 0x59c40099, 0x48000809, 0x59c4009e, + 0x4800080a, 0x59c400aa, 0x4800080b, 0x90040c0f, + 0x41c41800, 0x60c0b000, 0x580c0050, 0x44000800, 0x80040800, 0x800c1800, 0x8058b040, 0x05fe07fb, - 0x41c41800, 0x6080b000, 0x50040000, 0x48001810, + 0x41c41800, 0x6080b000, 0x580c0010, 0x44000800, 0x80040800, 0x800c1800, 0x8058b040, 0x05fe07fb, - 0x497b8830, 0x6100b000, 0x50040000, 0x48038831, + 0x497b8830, 0x6100b000, 0x59c40031, 0x44000800, 0x80040800, 0x8058b040, 0x05fe07fc, 0x497b88ac, - 0x6040b000, 0x50040000, 0x480388ad, 0x80040800, - 0x8058b040, 0x05fe07fc, 0x497b8880, 0x41780000, - 0x05ddf97f, 0x59c408a4, 0x90040d0f, 0x9004058c, - 0x05d20c46, 0x4a038805, 0x04000000, 0x5c00b000, - 0x1c01f000, 0x4803c856, 0x4c580000, 0x4ce80000, - 0x42000000, 0x0010e3a5, 0x0535fe3e, 0x59c41008, - 0x4c080000, 0x82081500, 0xffffff7f, 0x480b8808, - 0x59c40004, 0x82000500, 0x00003e02, 0x05000003, - 0x6051d000, 0x0509fe5c, 0x59c40006, 0x82000500, - 0xffffff0f, 0x48038806, 0x0501fa42, 0x64438805, - 0x4a038808, 0x00000204, 0x6194b000, 0x59c40005, - 0x8c000508, 0x05020013, 0x61a1d007, 0x0509fe4e, - 0x8058b040, 0x05fe07fa, 0x601c2000, 0x0501f933, - 0x0501fa2d, 0x0511fe98, 0x4803c856, 0x59c410a3, - 0x84081518, 0x05ddfcde, 0x4a038808, 0x00000208, - 0x64075042, 0x6006d800, 0x90000541, 0x0501f032, - 0x60042000, 0x0501f925, 0x05d5facd, 0x42000000, - 0x0010e499, 0x0535fe0f, 0x05d5fed7, 0x497b8880, - 0x59a8004d, 0x82000500, 0x0000ffff, 0x4c000000, - 0x05ddf93b, 0x5c000000, 0x48038880, 0x59c410a3, - 0x84081518, 0x05ddfcc6, 0x4a038808, 0x00000200, + 0x6040b000, 0x59c400ad, 0x44000800, 0x80040800, + 0x8058b040, 0x05fe07fc, 0x59a800ae, 0x59c410b1, + 0x80080400, 0x480350ae, 0x59a800af, 0x59c410b2, + 0x80080400, 0x480350af, 0x59c41001, 0x4c080000, + 0x8408150c, 0x480b8801, 0x4a0370e4, 0x00000300, + 0x4a0370e5, 0xb0000000, 0x60000810, 0x80040840, + 0x05d009ed, 0x59b800e5, 0x8c000538, 0x05fe07fc, + 0x4a0370e4, 0x00000200, 0x42006000, 0xffffffff, + 0x42006800, 0x80000000, 0x05f9f81c, 0x64078807, + 0x497b8807, 0x0501fab2, 0x4a038808, 0x00000210, + 0x42006000, 0xfcf8ffff, 0x42006800, 0x01000000, + 0x05f9f812, 0x5c001000, 0x480b8801, 0x42000800, + 0x001144ba, 0x50040000, 0x48038803, 0x58040001, + 0x48038804, 0x58040002, 0x4803880b, 0x58040003, + 0x4803888e, 0x58040004, 0x4803888f, 0x58040005, + 0x48038890, 0x58040006, 0x48038891, 0x58040007, + 0x48038892, 0x58040008, 0x48038893, 0x58040009, + 0x48038899, 0x5804000a, 0x4803889e, 0x5804000b, + 0x480388aa, 0x90040c0f, 0x41c41800, 0x60c0b000, + 0x50040000, 0x48001850, 0x80040800, 0x800c1800, + 0x8058b040, 0x05fe07fb, 0x41c41800, 0x6080b000, + 0x50040000, 0x48001810, 0x80040800, 0x800c1800, + 0x8058b040, 0x05fe07fb, 0x497b8830, 0x6100b000, + 0x50040000, 0x48038831, 0x80040800, 0x8058b040, + 0x05fe07fc, 0x497b88ac, 0x6040b000, 0x50040000, + 0x480388ad, 0x80040800, 0x8058b040, 0x05fe07fc, + 0x497b8880, 0x41780000, 0x05d9ff15, 0x59c408a4, + 0x90040d0f, 0x9004058c, 0x05d20997, 0x4a038805, + 0x04000000, 0x5c00b000, 0x1c01f000, 0x4803c856, + 0x4c580000, 0x4ce80000, 0x42000000, 0x00112346, + 0x0539facf, 0x59c41008, 0x4c080000, 0x82081500, + 0xffffff7f, 0x480b8808, 0x59c40004, 0x82000500, + 0x00003e02, 0x05000003, 0x6051d000, 0x0509ffdd, + 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806, + 0x0501fa48, 0x64438805, 0x4a038808, 0x00000204, + 0x6194b000, 0x59c40005, 0x8c000508, 0x05020013, + 0x61a1d007, 0x0509ffcf, 0x8058b040, 0x05fe07fa, + 0x601c2000, 0x0501f939, 0x0501fa33, 0x0515f86c, + 0x4803c856, 0x59c410a3, 0x84081518, 0x05ddfa74, + 0x4a038808, 0x00000208, 0x64075045, 0x6006d800, + 0x90000541, 0x0501f034, 0x60042000, 0x0501f92b, + 0x05d5f87f, 0x42000000, 0x0011243d, 0x0539faa0, + 0x61f819ff, 0x60082000, 0x05d5fc8b, 0x497b8880, + 0x59a80050, 0x82000500, 0x0000ffff, 0x4c000000, + 0x05d9fecf, 0x5c000000, 0x48038880, 0x59c410a3, + 0x84081518, 0x05ddfa5a, 0x4a038808, 0x00000200, 0x64238805, 0x6194b000, 0x4a038805, 0x000000f0, - 0x05ddfbcb, 0x61c00801, 0x59c40005, 0x80040d00, - 0x05000006, 0x61a1d007, 0x0509fe1f, 0x8058b040, - 0x05fe07f6, 0x05fdf7d1, 0x59c410a3, 0x84081558, - 0x05ddfcb3, 0x60082000, 0x0501f900, 0x59c40006, - 0x82000540, 0x000000f0, 0x48038806, 0x59a80040, + 0x05ddf95f, 0x61c00801, 0x59c40005, 0x80040d00, + 0x05000006, 0x61a1d007, 0x0509ff9e, 0x8058b040, + 0x05fe07f6, 0x05fdf7cf, 0x59c410a3, 0x84081558, + 0x05ddfa47, 0x60082000, 0x0501f904, 0x59c40006, + 0x82000540, 0x000000f0, 0x48038806, 0x59a80043, 0x80000540, 0x05020002, 0x80000000, 0x48038893, - 0x80000580, 0x4df00000, 0x05ddfbd5, 0x5c03e000, + 0x80000580, 0x4df00000, 0x05ddf969, 0x5c03e000, 0x5c001000, 0x480b8808, 0x5c01d000, 0x5c00b000, 0x1c01f000, 0x4803c856, 0x4c580000, 0x4ce80000, 0x59c41008, 0x4c080000, 0x82081500, 0xffffff7f, 0x480b8808, 0x59c40004, 0x82000500, 0x00003e02, - 0x05000003, 0x6051d000, 0x0509fdf7, 0x05d5fa88, - 0x42000000, 0x0010e49a, 0x0535fdca, 0x05d5fe92, - 0x60002000, 0x0501f8d9, 0x4a038808, 0x00000202, - 0x80000580, 0x48038880, 0x48038893, 0x05ddf8f4, - 0x6010b007, 0x4a038805, 0x000000f0, 0x05ddfb8c, - 0x61c00801, 0x59c40005, 0x80040d00, 0x05000016, - 0x82000500, 0x000000d0, 0x05020015, 0x619dd000, - 0x0509fddd, 0x8058b040, 0x05fe07f3, 0x601c2000, - 0x0501f8c2, 0x0511fe28, 0x0501f9bb, 0x4a038808, - 0x00000208, 0x64075042, 0x6006d800, 0x59c40006, - 0x8400050a, 0x48038806, 0x64838805, 0x90000541, - 0x0501f01b, 0x60082000, 0x0501f8b4, 0x497b8880, - 0x59a80040, 0x80000540, 0x05020002, 0x80000000, - 0x48038893, 0x59a8004d, 0x82000500, 0x0000ffff, - 0x4c000000, 0x05ddf8ca, 0x5c000000, 0x48038880, - 0x59c410a3, 0x84081518, 0x05ddfc55, 0x4a038808, - 0x00000200, 0x6095d000, 0x0509fdb7, 0x59c410a3, - 0x84081558, 0x05ddfc4e, 0x80000580, 0x4df00000, - 0x05ddfb7b, 0x5c03e000, 0x5c001000, 0x480b8808, - 0x5c01d000, 0x5c00b000, 0x1c01f000, 0x4803c856, - 0x60042000, 0x0501f891, 0x59c40004, 0x82000500, - 0x00003e02, 0x05000008, 0x0511fdf3, 0x0501f986, - 0x4a038808, 0x00000208, 0x64075042, 0x6006d800, - 0x0501f046, 0x05d5fa2e, 0x42000000, 0x0010e49b, - 0x0535fd70, 0x05d5fe38, 0x59c40006, 0x84000508, - 0x48038806, 0x64438805, 0x850e1d4c, 0x61900800, - 0x42001000, 0x00105ff7, 0x0509fd79, 0x59c410a3, - 0x84081518, 0x05ddfc26, 0x4a038808, 0x00000200, - 0x497b8880, 0x4a038805, 0x000000f0, 0x05ddfb2c, - 0x61c00801, 0x59c40005, 0x80040d00, 0x0500000b, - 0x82000500, 0x000000e0, 0x0502000d, 0x61a1d007, - 0x0509fd7d, 0x0509fbe2, 0x59940004, 0x80000540, - 0x05fe07f1, 0x0501f021, 0x59c410a3, 0x84081558, - 0x05ddfc0f, 0x60082000, 0x0501f85c, 0x4c080000, - 0x42001000, 0x00105ff7, 0x0509fd60, 0x5c001000, - 0x497b8880, 0x59a80040, 0x80000540, 0x05020002, - 0x80000000, 0x48038893, 0x59a8004d, 0x82000500, - 0x0000ffff, 0x4c000000, 0x05ddf86d, 0x5c000000, - 0x48038880, 0x850e1d0c, 0x59c40006, 0x84000548, - 0x48038806, 0x05ddfb26, 0x59c40008, 0x82000540, - 0x00000280, 0x48038808, 0x1c01f000, 0x4803c856, - 0x4d400000, 0x4d3c0000, 0x0511fda3, 0x0535fe39, - 0x0502002b, 0x599c1017, 0x8d0c0500, 0x05020009, - 0x8c08051a, 0x05000026, 0x850e1d42, 0x60128000, - 0x60227800, 0x8d0c0520, 0x05020006, 0x0501f01d, - 0x60128000, 0x417a7800, 0x8d0c0520, 0x05000019, - 0x0535fe30, 0x42024800, 0x0010e512, 0x59240200, - 0x8c000500, 0x05000006, 0x4c580000, 0x60040800, - 0x60001002, 0x050dfc77, 0x5c00b000, 0x91264c0d, - 0x8058b040, 0x05fe07f6, 0x61fe41ff, 0x4d400000, - 0x603a8000, 0x600c3000, 0x61fe89ff, 0x0531fccf, - 0x5c028000, 0x599c0817, 0x8c04050a, 0x05020004, - 0x4943c857, 0x493fc857, 0x05ddfff4, 0x497b8880, - 0x6006d800, 0x05fdfd50, 0x5c027800, 0x5c028000, - 0x1c01f000, 0x05d5f9b2, 0x42000000, 0x0010e49c, - 0x0535fcf4, 0x05d5fdbc, 0x60040000, 0x05ddf824, - 0x64078880, 0x05ddf2e2, 0x42000800, 0x0010dce7, + 0x05000003, 0x6051d000, 0x0509ff76, 0x05d5f838, + 0x42000000, 0x0011243e, 0x0539fa59, 0x61f819ff, + 0x60042000, 0x05d5fc44, 0x60002000, 0x0501f8db, + 0x4a038808, 0x00000202, 0x80000580, 0x48038880, + 0x48038893, 0x05d9fe86, 0x6010b007, 0x4a038805, + 0x000000f0, 0x05ddf91e, 0x61c00801, 0x59c40005, + 0x80040d00, 0x05000016, 0x82000500, 0x000000d0, + 0x05020015, 0x619dd000, 0x0509ff5a, 0x8058b040, + 0x05fe07f3, 0x601c2000, 0x0501f8c4, 0x0511fff8, + 0x0501f9bd, 0x4a038808, 0x00000208, 0x64075045, + 0x6006d800, 0x59c40006, 0x8400050a, 0x48038806, + 0x64838805, 0x90000541, 0x0501f01b, 0x60082000, + 0x0501f8b6, 0x497b8880, 0x59a80043, 0x80000540, + 0x05020002, 0x80000000, 0x48038893, 0x59a80050, + 0x82000500, 0x0000ffff, 0x4c000000, 0x05d9fe5c, + 0x5c000000, 0x48038880, 0x59c410a3, 0x84081518, + 0x05ddf9e7, 0x4a038808, 0x00000200, 0x6095d000, + 0x0509ff34, 0x59c410a3, 0x84081558, 0x05ddf9e0, + 0x80000580, 0x4df00000, 0x05ddf90d, 0x5c03e000, + 0x5c001000, 0x480b8808, 0x5c01d000, 0x5c00b000, + 0x1c01f000, 0x4803c856, 0x60042000, 0x0501f893, + 0x59c40004, 0x82000500, 0x00003e02, 0x05000008, + 0x0511ffc3, 0x0501f988, 0x4a038808, 0x00000208, + 0x64075045, 0x6006d800, 0x0501f047, 0x05d1ffdc, + 0x42000000, 0x0011243f, 0x0539f9fd, 0x61fc19ff, + 0x05d5fbe9, 0x59c40006, 0x84000508, 0x48038806, + 0x64438805, 0x850e1d4c, 0x61900800, 0x42001000, + 0x001062db, 0x0509feee, 0x59c410a3, 0x84081518, + 0x05ddf9b7, 0x4a038808, 0x00000200, 0x497b8880, + 0x4a038805, 0x000000f0, 0x05ddf8bd, 0x61c00801, + 0x59c40005, 0x80040d00, 0x0500000b, 0x82000500, + 0x000000e0, 0x0502000d, 0x61a1d007, 0x0509fef9, + 0x0509fd0d, 0x59940004, 0x80000540, 0x05fe07f1, + 0x0501f021, 0x59c410a3, 0x84081558, 0x05ddf9a0, + 0x60082000, 0x0501f85d, 0x4c080000, 0x42001000, + 0x001062db, 0x0509fed5, 0x5c001000, 0x497b8880, + 0x59a80043, 0x80000540, 0x05020002, 0x80000000, + 0x48038893, 0x59a80050, 0x82000500, 0x0000ffff, + 0x4c000000, 0x05d9fdfe, 0x5c000000, 0x48038880, + 0x850e1d0c, 0x59c40006, 0x84000548, 0x48038806, + 0x05ddf8b7, 0x59c40008, 0x82000540, 0x00000280, + 0x48038808, 0x1c01f000, 0x4803c856, 0x4d400000, + 0x4d3c0000, 0x0511ff72, 0x0539fac5, 0x0502002b, + 0x599c1017, 0x8d0c0500, 0x05020009, 0x8c08051a, + 0x05000026, 0x850e1d42, 0x60128000, 0x60227800, + 0x8d0c0520, 0x05020006, 0x0501f01d, 0x60128000, + 0x417a7800, 0x8d0c0520, 0x05000019, 0x0539fabc, + 0x42024800, 0x001124b6, 0x59240200, 0x8c000500, + 0x05000006, 0x4c580000, 0x60040800, 0x60001002, + 0x050dfe3c, 0x5c00b000, 0x91264c0d, 0x8058b040, + 0x05fe07f6, 0x61fe41ff, 0x4d400000, 0x603a8000, + 0x600c3000, 0x61fe89ff, 0x0535f927, 0x5c028000, + 0x599c0817, 0x8c04050a, 0x05020004, 0x4943c857, + 0x493fc857, 0x05ddfd98, 0x497b8880, 0x6006d800, + 0x05fdfd45, 0x5c027800, 0x5c028000, 0x1c01f000, + 0x05d1ff5f, 0x42000000, 0x00112440, 0x0539f980, + 0x61fc19ff, 0x05d5fb6c, 0x60040000, 0x05d9fdb4, + 0x64078880, 0x05ddf072, 0x42000800, 0x00111c6d, 0x48100802, 0x90101488, 0x05001008, 0x58040001, 0x4803c857, 0x4813c857, 0x58040003, 0x80000000, 0x48000803, 0x60082000, 0x58040001, 0x9000148b, 0x05001007, 0x4803c857, 0x4813c857, 0x58040003, 0x80000000, 0x48000803, 0x60000000, 0x48000800, 0x59c428a4, 0x90142d0f, 0x90142d8c, 0x0c000002, - 0x0501f0fb, 0x00106314, 0x0010632e, 0x00106348, - 0x00106362, 0x0010637c, 0x00106392, 0x001063a1, - 0x001063b4, 0x001063c7, 0x001063da, 0x001063dc, - 0x40100000, 0x0c01f001, 0x0010631e, 0x00106320, - 0x00106322, 0x00106323, 0x00106325, 0x00106327, - 0x0010632a, 0x0010632c, 0x64080801, 0x1c01f000, + 0x0501f0fb, 0x00106604, 0x0010661e, 0x00106638, + 0x00106652, 0x0010666c, 0x00106682, 0x00106691, + 0x001066a4, 0x001066b7, 0x001066ca, 0x001066cc, + 0x40100000, 0x0c01f001, 0x0010660e, 0x00106610, + 0x00106612, 0x00106613, 0x00106615, 0x00106617, + 0x0010661a, 0x0010661c, 0x64080801, 0x1c01f000, 0x640c0801, 0x0501f0bc, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f0ba, 0x64140801, 0x0501f8be, 0x0501f0ba, 0x64140801, 0x0501f0bb, 0x4813c857, 0x1c01f000, 0x40100000, 0x0c01f001, - 0x00106338, 0x0010633a, 0x0010633c, 0x0010633d, - 0x0010633f, 0x00106341, 0x00106344, 0x00106346, + 0x00106628, 0x0010662a, 0x0010662c, 0x0010662d, + 0x0010662f, 0x00106631, 0x00106634, 0x00106636, 0x64080801, 0x1c01f000, 0x640c0801, 0x1c01f000, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f0a0, 0x64140801, 0x0501f8a4, 0x0501f0a0, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f099, - 0x40100000, 0x0c01f001, 0x00106352, 0x00106353, - 0x00106355, 0x00106357, 0x00106359, 0x0010635b, - 0x0010635e, 0x00106360, 0x1c01f000, 0x640c0801, + 0x40100000, 0x0c01f001, 0x00106642, 0x00106643, + 0x00106645, 0x00106647, 0x00106649, 0x0010664b, + 0x0010664e, 0x00106650, 0x1c01f000, 0x640c0801, 0x1c01f000, 0x64000801, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f086, 0x64140801, 0x0501f88a, 0x0501f086, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f07f, 0x40100000, 0x0c01f001, - 0x0010636c, 0x0010636e, 0x0010636f, 0x00106371, - 0x00106373, 0x00106375, 0x00106378, 0x0010637a, + 0x0010665c, 0x0010665e, 0x0010665f, 0x00106661, + 0x00106663, 0x00106665, 0x00106668, 0x0010666a, 0x64080801, 0x1c01f000, 0x1c01f000, 0x64000801, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f06c, 0x64140801, 0x0501f870, 0x0501f06c, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f065, - 0x40100000, 0x0c01f001, 0x00106386, 0x00106388, - 0x00106388, 0x00106389, 0x00106388, 0x0010638b, - 0x0010638e, 0x00106390, 0x64080801, 0x1c01f000, + 0x40100000, 0x0c01f001, 0x00106676, 0x00106678, + 0x00106678, 0x00106679, 0x00106678, 0x0010667b, + 0x0010667e, 0x00106680, 0x64080801, 0x1c01f000, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64140801, 0x0501f85a, 0x0501f056, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f04f, 0x40100000, 0x0c01f001, - 0x001063a0, 0x001063a0, 0x001063a0, 0x0010639c, - 0x0010639e, 0x001063a0, 0x001063a0, 0x001063a0, + 0x00106690, 0x00106690, 0x00106690, 0x0010668c, + 0x0010668e, 0x00106690, 0x00106690, 0x00106690, 0x641c0801, 0x1c01f000, 0x64100801, 0x1c01f000, - 0x1c01f000, 0x40100000, 0x0c01f001, 0x001063ab, - 0x001063ad, 0x001063ad, 0x001063ae, 0x001063b0, - 0x001063b2, 0x001063b2, 0x001063b2, 0x64080801, + 0x1c01f000, 0x40100000, 0x0c01f001, 0x0010669b, + 0x0010669d, 0x0010669d, 0x0010669e, 0x001066a0, + 0x001066a2, 0x001066a2, 0x001066a2, 0x64080801, 0x1c01f000, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f02f, 0x64200801, 0x1c01f000, - 0x40100000, 0x0c01f001, 0x001063be, 0x001063c0, - 0x001063c2, 0x001063c2, 0x001063c3, 0x001063c5, - 0x001063c5, 0x001063c5, 0x64080801, 0x1c01f000, + 0x40100000, 0x0c01f001, 0x001066ae, 0x001066b0, + 0x001066b2, 0x001066b2, 0x001066b3, 0x001066b5, + 0x001066b5, 0x001066b5, 0x64080801, 0x1c01f000, 0x640c0801, 0x1c01f000, 0x1c01f000, 0x64100801, 0x0501f01c, 0x64200801, 0x1c01f000, 0x40100000, - 0x0c01f001, 0x001063d1, 0x001063d1, 0x001063d3, - 0x001063d4, 0x001063d6, 0x001063d3, 0x001063d8, - 0x001063d3, 0x64140801, 0x0501f00b, 0x1c01f000, + 0x0c01f001, 0x001066c1, 0x001066c1, 0x001066c3, + 0x001066c4, 0x001066c6, 0x001066c3, 0x001066c8, + 0x001066c3, 0x64140801, 0x0501f00b, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x1c01f000, 0x64200801, 0x1c01f000, 0x64240801, 0x1c01f000, - 0x1c01f000, 0x42000000, 0x0010e38f, 0x0535f3fd, - 0x42000000, 0x0010e38c, 0x0535f3fa, 0x42000000, - 0x0010e38e, 0x0535f3f7, 0x42000000, 0x0010e38d, - 0x0535f3f4, 0x42000800, 0x0010dce7, 0x58040001, + 0x1c01f000, 0x42000000, 0x00112330, 0x0539f088, + 0x42000000, 0x0011232d, 0x0539f085, 0x42000000, + 0x0011232f, 0x0539f082, 0x42000000, 0x0011232e, + 0x0539f07f, 0x42000800, 0x00111c6d, 0x58040001, 0x48000800, 0x64140801, 0x64200802, 0x1c01f000, - 0x42000800, 0x0010dce7, 0x58040001, 0x48000800, + 0x42000800, 0x00111c6d, 0x58040001, 0x48000800, 0x64040801, 0x64280802, 0x1c01f000, 0x42000800, - 0x0010dce7, 0x58040001, 0x48000800, 0x64180801, - 0x64240802, 0x1c01f000, 0x42000800, 0x0010dce7, + 0x00111c6d, 0x58040001, 0x48000800, 0x64180801, + 0x64240802, 0x1c01f000, 0x42000800, 0x00111c6d, 0x64280801, 0x64280800, 0x1c01f000, 0x496fc857, - 0x4813c857, 0x40100000, 0x0c01f001, 0x0010641d, - 0x0010641d, 0x0010641d, 0x0010641d, 0x0010640f, - 0x00106417, 0x0010641b, 0x0010641d, 0x59a80249, + 0x4813c857, 0x40100000, 0x0c01f001, 0x0010670d, + 0x0010670d, 0x0010670d, 0x0010670d, 0x001066ff, + 0x00106707, 0x0010670b, 0x0010670d, 0x59a8024c, 0x8c000506, 0x05000003, 0x8c000502, 0x0500000a, 0x0501f80a, 0x05fe07cb, 0x0501f007, 0x0501f807, 0x05000005, 0x05fdffca, 0x05fdf7cc, 0x0501f803, 0x05fe07ca, 0x1c01f000, 0x496fc857, 0x416c0000, - 0x90000c88, 0x05d219b9, 0x0c01f001, 0x0010642b, - 0x0010642d, 0x0010642d, 0x0010642d, 0x0010642b, - 0x0010642b, 0x0010642b, 0x0010642d, 0x80000580, + 0x90000c88, 0x05ce1f04, 0x0c01f001, 0x0010671b, + 0x0010671d, 0x0010671d, 0x0010671d, 0x0010671b, + 0x0010671b, 0x0010671b, 0x0010671d, 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, 0x59a80005, 0x8c000506, 0x05020002, 0x1c01f000, 0x41781800, - 0x42000800, 0x0010dce7, 0x58040001, 0x40002000, - 0x0c01f001, 0x0010644d, 0x00106446, 0x00106445, - 0x00106444, 0x0010644e, 0x00106448, 0x00106447, - 0x00106452, 0x00106448, 0x00106445, 0x0010644d, + 0x42000800, 0x00111c6d, 0x58040001, 0x40002000, + 0x0c01f001, 0x0010673d, 0x00106736, 0x00106735, + 0x00106734, 0x0010673e, 0x00106738, 0x00106737, + 0x00106742, 0x00106738, 0x00106735, 0x0010673d, 0x800c1800, 0x800c1800, 0x800c1800, 0x800c1800, - 0x800c1800, 0x60dc1100, 0x05f1fb92, 0x481350a8, - 0x1c01f000, 0x1c01f000, 0x59a800a8, 0x90000584, - 0x05fe07f7, 0x05fdf7fc, 0x59a800a8, 0x90000587, - 0x05fe07f2, 0x05fdf7f8, 0x64075042, 0x4a035041, - 0x0000aaaa, 0x05fdf3d8, 0x6002e000, 0x850e1d56, + 0x800c1800, 0x60dc1100, 0x05f1fa3f, 0x481350ab, + 0x1c01f000, 0x1c01f000, 0x59a800ab, 0x90000584, + 0x05fe07f7, 0x05fdf7fc, 0x59a800ab, 0x90000587, + 0x05fe07f2, 0x05fdf7f8, 0x64075045, 0x4a035044, + 0x0000aaaa, 0x05fdf3cc, 0x6002e000, 0x850e1d56, 0x497b3000, 0x4a03b004, 0x60000001, 0x59d80005, 0x4a03b004, 0x90000001, 0x59d80005, 0x4a03a804, 0x60000001, 0x59d40005, 0x4a03a804, 0x90000001, - 0x0501ff88, 0x0501f774, 0x58f25801, 0x4a03b004, + 0x0505f820, 0x0505f00c, 0x58f25801, 0x4a03b004, 0x10000000, 0x592c4200, 0x58201000, 0x592c220c, - 0x592cba0a, 0x0001f7ca, 0x6413c825, 0x6413c827, + 0x592cba0a, 0x0001f7f1, 0x6413c825, 0x6413c827, 0x599c0409, 0x80000d40, 0x0500001f, 0x599c0407, 0x80000540, 0x05000007, 0x800000cc, 0x599c100b, 0x80080400, 0x4803b000, 0x497bb002, 0x59d80001, @@ -6480,332 +6668,351 @@ static const uint32_t isp_2500_risc_code[] = { 0x4803a803, 0x6423a809, 0x4a03a804, 0x10000001, 0x59e00803, 0x82040d00, 0xfffffbff, 0x82040d40, 0x00008000, 0x4807c003, 0x800409c0, 0x05000004, - 0x6006e000, 0x0004bb27, 0x0004f33b, 0x1c01f000, - 0x05d1f91e, 0x1c01f000, 0x0501f866, 0x5c03e000, - 0x0005f0d6, 0x592c1c08, 0x820c1500, 0x000000ff, - 0x800c1910, 0x820c0c00, 0x0010de60, 0x50040800, - 0x480a5c08, 0x800409c0, 0x000600ca, 0x492fc857, - 0x480fc857, 0x800c19c0, 0x05d0090c, 0x42000800, - 0x0010de60, 0x50040800, 0x48065802, 0x0501f866, - 0x0005f0d3, 0x59980000, 0x80000540, 0x000400bb, - 0x0505f00a, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106532, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00020a36, - 0x00106524, 0x00106524, 0x00106532, 0x00106532, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00020a36, - 0x492fc857, 0x497a5805, 0x42000000, 0x0010e44f, - 0x0535fab4, 0x60000008, 0x0501f015, 0x492fc857, - 0x497a5805, 0x42000000, 0x0010e44e, 0x0535faad, + 0x6006e000, 0x0004bb5d, 0x0004f371, 0x1c01f000, + 0x05cdfe69, 0x1c01f000, 0x0501f866, 0x5c03e000, + 0x0005f0fd, 0x592c1c08, 0x820c1500, 0x000000ff, + 0x800c1910, 0x820c0c00, 0x00111dfa, 0x50040800, + 0x480a5c08, 0x800409c0, 0x000600f1, 0x492fc857, + 0x480fc857, 0x800c19c0, 0x05cc0e57, 0x42000800, + 0x00111dfa, 0x50040800, 0x48065802, 0x0501f866, + 0x0005f0fa, 0x59980000, 0x80000540, 0x000400e2, + 0x0505f0a2, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106822, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00020a6c, + 0x00106814, 0x00106814, 0x00106822, 0x00106822, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00020a6c, + 0x492fc857, 0x497a5805, 0x42000000, 0x001123f3, + 0x0535ff3f, 0x60000008, 0x0501f015, 0x492fc857, + 0x497a5805, 0x42000000, 0x001123f2, 0x0535ff38, 0x60000020, 0x0501f00e, 0x492fc857, 0x497a5805, - 0x42000000, 0x0010e44d, 0x0535faa6, 0x60000040, - 0x0501f007, 0x492fc857, 0x42000000, 0x0010e450, - 0x0535faa0, 0x60000010, 0x0501f001, 0x4803c857, + 0x42000000, 0x001123f1, 0x0535ff31, 0x60000040, + 0x0501f007, 0x492fc857, 0x42000000, 0x001123f4, + 0x0535ff2b, 0x60000010, 0x0501f001, 0x4803c857, 0x592c0c08, 0x82040d00, 0xffff80ff, 0x80040540, 0x59980801, 0x800409c0, 0x05000002, 0x8400051e, - 0x48025c08, 0x0005f9f3, 0x0501febe, 0x0001fb82, + 0x48025c08, 0x0005fa1a, 0x0501ff56, 0x0001fba8, 0x91700583, 0x6006e000, 0x05000002, 0x1c01f000, - 0x58f25802, 0x812e59c0, 0x05fe07e0, 0x05d1f887, + 0x58f25802, 0x812e59c0, 0x05fe07e0, 0x05cdfdd2, 0x60081000, 0x60000801, 0x60401800, 0x0501f004, 0x600c1000, 0x41780800, 0x60181800, 0x492fc857, 0x480bc857, 0x592c0208, 0x82000500, 0x000000ff, - 0xb00005aa, 0x05000004, 0x480e5a0a, 0x0001fb82, + 0xb00005aa, 0x05000004, 0x480e5a0a, 0x0001fba8, 0x0501f00a, 0x4d400000, 0x4c300000, 0x497a5c0c, - 0x497a5c0d, 0x400a8000, 0x05fdf8c1, 0x0001fb82, + 0x497a5c0d, 0x400a8000, 0x05fdf8b5, 0x0001fba8, 0x5c006000, 0x5c028000, 0x6006e000, 0x4a006002, - 0x00000100, 0x5832580a, 0x4978600a, 0x05d1fc1f, + 0x00000100, 0x5832580a, 0x4978600a, 0x05d1f966, 0x5c025800, 0x1c01f000, 0x492fc857, 0x80140110, - 0x05fc07b3, 0x80000040, 0x05000026, 0x4a01e007, - 0x001065a0, 0x0005f0df, 0x492fc857, 0x0535fb6d, - 0x00060220, 0x492fc856, 0x83440400, 0x0010d400, - 0x50000000, 0x80026d40, 0x0500000b, 0x592e4414, - 0x81224110, 0x59340013, 0x80000130, 0x81200580, - 0x05020005, 0x4937c857, 0x59340200, 0x8c00050e, - 0x00060220, 0x60a28000, 0x41780800, 0x417a6000, - 0x05fdf897, 0x0525f88f, 0x0001f382, 0x82000500, - 0x0f000000, 0x8000012a, 0x592c0c0e, 0x82040d00, - 0x0000ff87, 0x80040540, 0x48025c0e, 0x0005f233, - 0x492fc857, 0x592c040c, 0x80000540, 0x05fe0796, - 0x8d0c050e, 0x05020008, 0x592c020b, 0x80000540, - 0x05fc0791, 0x497a5a0a, 0x05f5fd45, 0x05020003, - 0x1c01f000, 0x60a00000, 0x48025a0a, 0x0001f382, - 0x592e8a0a, 0x592c040a, 0x4947c857, 0x4803c857, - 0x82000500, 0x000000ff, 0x6004b800, 0x90000d81, - 0x0500000e, 0x417a8800, 0x61c0b80f, 0x90000d82, - 0x0500000a, 0x80000540, 0x00020382, 0x592e8a0a, - 0x0001fb00, 0x00020382, 0x592e900c, 0x592e980d, - 0x05f9f914, 0x0001f382, 0x850e1d00, 0x0001fb00, - 0x05f809f9, 0x81468800, 0x805cb840, 0x05fe07fc, - 0x0001f382, 0x592c0a0c, 0x4807c857, 0x592e4414, - 0x81224110, 0x9004058e, 0x0500006e, 0x900405aa, - 0x05000022, 0x9004058f, 0x05000624, 0x900405ae, - 0x05000622, 0xb0040589, 0x05000620, 0x4c040000, - 0x0501fd7d, 0x5c000800, 0x05020620, 0xb0040586, - 0x0500007f, 0xb0040585, 0x0500002c, 0x900405a9, - 0x0502061a, 0x592e8a0a, 0x42026800, 0x00110210, - 0x83440580, 0x0000ffff, 0x05000006, 0x05f9fc8e, - 0x0502060e, 0x59340200, 0x84000518, 0x48026a00, - 0x592e600d, 0x4933c857, 0x83300580, 0xffffffff, - 0x05020070, 0x0501f605, 0x83200580, 0x000000ff, - 0x05000008, 0x83200400, 0x0010d17b, 0x50024800, - 0x59240a00, 0x84040d16, 0x48064a00, 0x0501f5fb, - 0x42024800, 0x0010e512, 0x0535faf2, 0x59240200, - 0x8c000500, 0x05000004, 0x59240200, 0x84000516, - 0x48024a00, 0x91264c0d, 0x8058b040, 0x05fe07f8, - 0x850e1d04, 0x0501f5ed, 0x592c140b, 0x480bc857, - 0x0525fb49, 0x411e6000, 0x05020003, 0x4803c856, - 0x0501f5ea, 0x59300c07, 0x90040584, 0x05000003, - 0x4803c856, 0x0501f5e5, 0x592c020b, 0x8c000506, - 0x05000009, 0x050dfef6, 0x4df00000, 0x050dfdf7, - 0x050dfbc0, 0x5c03e000, 0x050c0ee2, 0x0515fdad, - 0x0501f5d6, 0x592e380d, 0x591c1416, 0x8c080516, - 0x050005d6, 0x59300009, 0x800001c0, 0x05ce0faf, - 0x84081554, 0x480a3c16, 0x64ea6403, 0x592c040f, - 0x80000540, 0x05000006, 0x64ee6403, 0x592c0415, - 0x4802641c, 0x592c0215, 0x4802621c, 0x64066203, - 0x42000800, 0x80000040, 0x0501fdcb, 0x05000003, - 0x492e6009, 0x0005f6ab, 0x0005feab, 0x0501f5bb, - 0x83200d80, 0x000000ff, 0x05000010, 0x42000000, - 0x0010e511, 0x50000000, 0x81200480, 0x050211c1, - 0x83200400, 0x0010d17b, 0x50024800, 0x59240200, - 0x8c000500, 0x050001bb, 0x59240206, 0x84000510, - 0x48024a06, 0x0501f5a9, 0x42024800, 0x0010e512, - 0x0535faa0, 0x59240200, 0x8c000500, 0x05000004, - 0x59240206, 0x84000510, 0x48024a06, 0x91264c0d, - 0x8058b040, 0x05fe07f8, 0x0501f59c, 0x592c120b, - 0x8c080500, 0x05020599, 0x592e8a0a, 0x592e600d, - 0x0525fafe, 0x05020003, 0x4803c856, 0x0501f597, + 0x05fc07b3, 0x80000040, 0x05000023, 0x4a01e007, + 0x0010688d, 0x0005f106, 0x492fc857, 0x0535fff8, + 0x00060249, 0x492fc856, 0x0001fb08, 0x0502000b, + 0x592e4414, 0x81224110, 0x59340013, 0x80000130, + 0x81200580, 0x05020005, 0x4937c857, 0x59340200, + 0x8c00050e, 0x00060249, 0x60a28000, 0x41780800, + 0x417a6000, 0x05fdf88e, 0x0525fb3b, 0x0001f3a8, + 0x82000500, 0x0f000000, 0x8000012a, 0x592c0c0e, + 0x82040d00, 0x0000ff87, 0x80040540, 0x48025c0e, + 0x0005f25f, 0x492fc857, 0x592c040c, 0x80000540, + 0x05fe0799, 0x8d0c050e, 0x05020008, 0x592c020b, + 0x80000540, 0x05fc0794, 0x497a5a0a, 0x05f5fc4f, + 0x05020003, 0x1c01f000, 0x60a00000, 0x48025a0a, + 0x0001f3a8, 0x592e8a0a, 0x592c040a, 0x4947c857, + 0x4803c857, 0x82000500, 0x000000ff, 0x6004b800, + 0x90000d81, 0x0500000e, 0x417a8800, 0x59a8b8ac, + 0x90000d82, 0x0500000a, 0x80000540, 0x000203a8, + 0x592e8a0a, 0x0001fb08, 0x000203a8, 0x592e900c, + 0x592e980d, 0x05f9f88d, 0x0001f3a8, 0x850e1d00, + 0x0001fb08, 0x05f80976, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x805cb840, + 0x05fe07f8, 0x0001f3a8, 0x592c0a0c, 0x4807c857, + 0x592e4414, 0x81224110, 0x9004058e, 0x05000074, + 0x900405aa, 0x05000028, 0x9004058f, 0x050006bb, + 0x900405ae, 0x050006b9, 0xb0040589, 0x050006b7, + 0x4c040000, 0x0501fdf4, 0x5c000800, 0x05000007, + 0x812649c0, 0x050006b5, 0x592c020a, 0x82000580, + 0x000007fe, 0x050206b1, 0xb0040586, 0x0500007f, + 0xb0040585, 0x0500002c, 0x900405a9, 0x050206ab, + 0x592e8a0a, 0x42026800, 0x001141b4, 0x83440580, + 0x0000ffff, 0x05000006, 0x05f9fc60, 0x0502069f, + 0x59340200, 0x84000518, 0x48026a00, 0x592e600d, + 0x4933c857, 0x83300580, 0xffffffff, 0x05020070, + 0x0501f696, 0x83200580, 0x000000ff, 0x05000008, + 0x83200400, 0x0010d8f9, 0x50024800, 0x59240a00, + 0x84040d16, 0x48064a00, 0x0501f68c, 0x42024800, + 0x001124b6, 0x0535ff76, 0x59240200, 0x8c000500, + 0x05000004, 0x59240200, 0x84000516, 0x48024a00, + 0x91264c0d, 0x8058b040, 0x05fe07f8, 0x850e1d04, + 0x0501f67e, 0x592c140b, 0x480bc857, 0x0525fdee, + 0x411e6000, 0x05020003, 0x4803c856, 0x0501f67b, 0x59300c07, 0x90040584, 0x05000003, 0x4803c856, - 0x0501f592, 0x59300a03, 0x90040587, 0x05000003, - 0x4803c856, 0x0501f58d, 0x59300c03, 0x90040581, - 0x0500001b, 0x90040582, 0x0500000e, 0x90040588, - 0x05000010, 0x9004058a, 0x05000005, 0x9004058c, - 0x05020021, 0x60240800, 0x0501f01e, 0x5932680a, - 0x05f9fbba, 0x0502001c, 0x60140800, 0x0501f019, - 0x417a7800, 0x05ddfca7, 0x64066407, 0x0501f006, - 0x592c120b, 0x8c08050e, 0x05000003, 0x0535facb, - 0x05020018, 0x600c0800, 0x0501f00e, 0x83340580, - 0x00110210, 0x05020007, 0x5930000a, 0x82000580, - 0x00110210, 0x05020569, 0x64066407, 0x0501f006, - 0x417a7800, 0x05ddfc93, 0x64066407, 0x602c0800, - 0x05f5fe51, 0x64066203, 0x0501fd67, 0x05000003, - 0x492e6009, 0x050df1d0, 0x050df9cf, 0x0501f557, - 0x64266403, 0x592c0215, 0x4802621c, 0x592c0415, - 0x4802641c, 0x05fdf7f4, 0x59300416, 0x8c000518, - 0x053203ff, 0x0501f097, 0x40000800, 0x58040000, - 0x80000540, 0x05fe07fd, 0x492c0800, 0x1c01f000, - 0x492fc857, 0x59300c07, 0x90040586, 0x0502008a, - 0x59340400, 0x82000580, 0x00000606, 0x05020004, - 0x59340200, 0x8c00051a, 0x000402b8, 0x59340200, - 0x8c00050e, 0x05000080, 0x59300203, 0x60067800, - 0x90000587, 0x000602b8, 0x640a6203, 0x0005f2b8, - 0x600a8000, 0x64526006, 0x4d2c0000, 0x052dfe56, + 0x0501f676, 0x592c020b, 0x8c000506, 0x05000009, + 0x0511f8bd, 0x4df00000, 0x050dffbd, 0x050dfd82, + 0x5c03e000, 0x051008a9, 0x0515ffcb, 0x0501f667, + 0x592e380d, 0x591c1416, 0x8c080516, 0x05000667, + 0x59300009, 0x800001c0, 0x05ce0cf3, 0x84081554, + 0x480a3c16, 0x64ea6403, 0x592c040f, 0x80000540, + 0x05000006, 0x64ee6403, 0x592c0415, 0x4802641c, + 0x592c0215, 0x4802621c, 0x64066203, 0x42000800, + 0x80000040, 0x0501fe5c, 0x05000003, 0x492e6009, + 0x0005f6e2, 0x0005fee2, 0x0501f64c, 0x83200d80, + 0x000000ff, 0x05000010, 0x42000000, 0x001124b5, + 0x50000000, 0x81200480, 0x050211dd, 0x83200400, + 0x0010d8f9, 0x50024800, 0x59240200, 0x8c000500, + 0x050001d7, 0x59240206, 0x84000510, 0x48024a06, + 0x0501f63a, 0x42024800, 0x001124b6, 0x0535ff24, + 0x59240200, 0x8c000500, 0x05000004, 0x59240206, + 0x84000510, 0x48024a06, 0x91264c0d, 0x8058b040, + 0x05fe07f8, 0x0501f62d, 0x592c120b, 0x8c080500, + 0x0502062a, 0x592e8a0a, 0x592e600d, 0x0525fda3, + 0x05020003, 0x4803c856, 0x0501f628, 0x59300c07, + 0x90040584, 0x05000003, 0x4803c856, 0x0501f623, + 0x59300a03, 0x90040587, 0x05000003, 0x4803c856, + 0x0501f61e, 0x83440580, 0x000007fe, 0x05020007, + 0x59240200, 0x82000500, 0x00000180, 0x05000003, + 0x0009f810, 0x0501f611, 0x59300c03, 0x90040581, + 0x05000021, 0x90040582, 0x05000014, 0x90040588, + 0x05000016, 0x9004058a, 0x05000005, 0x9004058c, + 0x05020027, 0x60240800, 0x0501f024, 0x592c0a0b, + 0x8c040510, 0x05000004, 0x48066216, 0x592c0816, + 0x4806601e, 0x5932680a, 0x05f9fb7d, 0x0502001c, + 0x60140800, 0x0501f019, 0x417a7800, 0x05ddfa38, + 0x64066407, 0x0501f006, 0x592c120b, 0x8c08050e, + 0x05000003, 0x0535ff40, 0x05020018, 0x600c0800, + 0x0501f00e, 0x83340580, 0x001141b4, 0x05020007, + 0x5930000a, 0x82000580, 0x001141b4, 0x050205eb, + 0x64066407, 0x0501f006, 0x417a7800, 0x05ddfa24, + 0x64066407, 0x602c0800, 0x05f5fd5e, 0x64066203, + 0x0501fde9, 0x05000003, 0x492e6009, 0x050df383, + 0x050dfb82, 0x0501f5d9, 0x64266403, 0x592c0215, + 0x4802621c, 0x592c0415, 0x4802641c, 0x05fdf7f4, + 0x59300416, 0x8c000518, 0x05360043, 0x0501f09c, + 0x40000800, 0x58040000, 0x80000540, 0x05fe07fd, + 0x492c0800, 0x1c01f000, 0x492fc857, 0x59300c07, + 0x90040586, 0x0502008f, 0x59340400, 0x82000580, + 0x00000606, 0x05020004, 0x59340200, 0x8c00051a, + 0x000402ed, 0x59340200, 0x8c00050e, 0x05000085, + 0x59300203, 0x60067800, 0x90000587, 0x000602ed, + 0x640a6203, 0x0005f2ed, 0x0501feda, 0x05020068, + 0x600a8000, 0x64526006, 0x4d2c0000, 0x0531fa4b, 0x5c025800, 0x59300c07, 0x4807c857, 0x90040587, - 0x0502005f, 0x492fc857, 0x64065a0a, 0x0001f382, - 0x83300580, 0xffffffff, 0x05020059, 0x592c240e, + 0x05020062, 0x492fc857, 0x64065a0a, 0x0001f3a8, + 0x83300580, 0xffffffff, 0x0502005c, 0x592c240e, 0x492fc857, 0x4813c857, 0x8c10051c, 0x05020017, - 0x8c10051a, 0x05000003, 0x8c10050a, 0x05000065, + 0x8c10051a, 0x05000003, 0x8c10050a, 0x05000068, 0x59340a00, 0x8c04050e, 0x05000003, 0x8c10051e, - 0x05000060, 0x0005ffbf, 0x05000068, 0x592c240e, + 0x05000063, 0x0005fff6, 0x05000098, 0x592c240e, 0x59243a00, 0x592c0210, 0x48026202, 0x4936600a, 0x4926601d, 0x4932580d, 0x4a026007, 0x00068000, - 0x641e6203, 0x0005f2b3, 0x592c0a10, 0x4c040000, - 0x05f9fe24, 0x5c000800, 0x05020073, 0x58080000, + 0x641e6203, 0x0005f2e8, 0x592c0a10, 0x4c040000, + 0x05f9fdf1, 0x5c000800, 0x05020076, 0x58080000, 0x49781000, 0x802041c0, 0x05000006, 0x48004000, 0x80000540, 0x05020007, 0x48226810, 0x0501f005, 0x4802680f, 0x80000540, 0x05020002, 0x497a6810, - 0x4d2c0000, 0x400a5800, 0x640a5a0a, 0x0001fb82, - 0x5c025800, 0x05fdf7c8, 0x8c10051c, 0x000602a4, - 0x0501f020, 0x4c100000, 0x05f9fb6b, 0x5c002000, - 0x0004027a, 0x42000000, 0x0010e511, 0x50000000, - 0x81200480, 0x0502102c, 0x8c10051c, 0x05000015, + 0x4d2c0000, 0x400a5800, 0x640a5a0a, 0x0001fba8, + 0x5c025800, 0x05fdf7c8, 0x8c10051c, 0x000602da, + 0x0501f020, 0x4c100000, 0x05f9fb2c, 0x5c002000, + 0x000402b0, 0x42000000, 0x001124b5, 0x50000000, + 0x81200480, 0x0502102f, 0x8c10051c, 0x05000015, 0x592c020a, 0x82000580, 0x0000ffff, 0x05020011, 0x592e600d, 0x83300580, 0xffffffff, 0x05fc07b2, - 0x0525ff87, 0x0502000e, 0x592c2210, 0x59300202, - 0x80100580, 0x0502000a, 0x59300009, 0x800001c0, - 0x05020004, 0x59300203, 0x90000587, 0x05fc079d, - 0x492fc857, 0x64a65a0a, 0x0001f382, 0x492fc857, - 0x64225a0a, 0x0001f382, 0x4803c857, 0x8c000514, - 0x05000007, 0x42000000, 0x0010e439, 0x0535f8a5, - 0x492fc857, 0x492e6009, 0x1c01f000, 0x492fc857, - 0x65165a0a, 0x0001f382, 0x492fc857, 0x64aa5a0a, - 0x0001f382, 0x492fc857, 0x64a25a0a, 0x0001f382, - 0x492fc857, 0x641a5a0a, 0x0001f382, 0x492fc857, - 0x643a5a0a, 0x0001f382, 0x90040587, 0x05fe07e4, - 0x640a5a0a, 0x0001f382, 0x05f9fe7a, 0x05020006, - 0x42000000, 0x0010e445, 0x0535f88a, 0x0529fb00, - 0x05fe0793, 0x592c040a, 0x800000c2, 0x800008c4, - 0x80040400, 0x48025807, 0x59340010, 0x492e6810, - 0x492fc857, 0x80000d40, 0x05000003, 0x492c0800, - 0x1c01f000, 0x59340203, 0x492e680f, 0x492fc857, - 0x4803c857, 0x80000540, 0x05020002, 0x64066a03, - 0x1c01f000, 0x59a8003b, 0x81640480, 0x05fe1766, - 0x42026000, 0x00111b00, 0x59300407, 0x90000586, - 0x05020007, 0x5930000a, 0x81340580, 0x05020004, - 0x59300202, 0x80040580, 0x05fc0752, 0x91326430, - 0x41580000, 0x81300480, 0x05fc17f4, 0x05fdf756, - 0x492fc857, 0x592e4414, 0x81224110, 0x0501fbda, - 0x05020052, 0x0501fac2, 0x05020050, 0x592c0208, - 0x80000112, 0x05fe05a6, 0x592e8a0a, 0x05f9faf2, - 0x0502004a, 0x05f9fa9c, 0x0502004a, 0x592e780e, - 0x493fc857, 0x8d3c053e, 0x05020005, 0x8d0c050e, - 0x05020042, 0x05f9f83a, 0x05fc05a7, 0x913c1d1f, - 0x05fc05a5, 0x592c020b, 0x82000c80, 0x00001000, - 0x05fe15a1, 0x800000c2, 0x800008c4, 0x8005d400, - 0x592e900c, 0x592e980d, 0x5934080d, 0x800409c0, - 0x05000004, 0x58041805, 0x800c19c0, 0x0502002b, - 0x913c1d1f, 0x81780040, 0x80000000, 0x800c1902, - 0x05fe17fe, 0x05fe0590, 0x0c01f001, 0x001067b0, - 0x001067b2, 0x001067bb, 0x001067bd, 0x001067bf, - 0x0521fd28, 0x0501f019, 0x05f5fff3, 0x0500001d, - 0x80e9d1c0, 0x05060f18, 0x60168000, 0x417a9000, - 0x417a9800, 0x0521fd2b, 0x0501f010, 0x61367000, - 0x0501f004, 0x613a7000, 0x0501f002, 0x614a7000, - 0x5934080d, 0x800409c0, 0x05000006, 0x4d3c0000, - 0x40067800, 0x05f5ffc4, 0x5c027800, 0x05000007, - 0x05f5fed1, 0x05220d49, 0x05000006, 0x8d3c053e, - 0x0502000a, 0x1c01f000, 0x64c25a0a, 0x0501f009, - 0x64b25a0a, 0x0501f007, 0x64a25a0a, 0x0501f005, - 0x64a65a0a, 0x0501f003, 0x497a580d, 0x64025a0a, - 0x4a025a08, 0x00000103, 0x0001f382, 0x492fc857, - 0x80140110, 0x80000040, 0x05000002, 0x05fdf54c, - 0x0501fa6a, 0x0502001e, 0x592c020b, 0x82000500, - 0x00003fff, 0x48025a0b, 0x8c000506, 0x05000003, - 0xb0000530, 0x05020003, 0x8d0c050e, 0x05020014, - 0x4a025a0a, 0x0000dead, 0x592c040c, 0x82000500, - 0x0000f0ff, 0x48025c0c, 0x05f5fb29, 0x05020002, - 0x1c01f000, 0x49425a0a, 0x8058b1c0, 0x05000007, - 0x0525fb22, 0x0501f80a, 0x44042800, 0x90580582, - 0x05020002, 0x48082801, 0x0001f382, 0x60c68000, - 0x60040800, 0x6004b000, 0x05fdf7f3, 0x592c040c, - 0x80000118, 0x912c2c0d, 0x80142c00, 0x1c01f000, - 0x492fc857, 0x641a5a0c, 0x0001f382, 0x492fc857, - 0x64065a0c, 0x0001f382, 0x492fc857, 0x592e7c0a, - 0x833c0500, 0xfffffffe, 0x05020044, 0x592c400b, - 0x42026000, 0x00111b00, 0x41581800, 0x400c0000, - 0x81300480, 0x05021028, 0x59300203, 0x90000580, - 0x0500000c, 0x59300009, 0x80000d40, 0x05000009, - 0x58043003, 0x58183211, 0x592c020c, 0x80180580, - 0x05020004, 0x58040009, 0x80200580, 0x05000003, - 0x91326430, 0x05fdf7ee, 0x58040208, 0x82000500, - 0x000000ff, 0xb0000d93, 0x0500000d, 0xb0000d88, - 0x0500000b, 0x90000d98, 0x05000009, 0x90000da9, - 0x05000007, 0x90000d94, 0x05000005, 0xb00005a8, - 0x05000003, 0x90000582, 0x05fe07ee, 0x4d2c0000, - 0x051dffd9, 0x5c025800, 0x05000018, 0x64025a0a, - 0x0001f382, 0x592e8a0a, 0x83440480, 0x000007f0, - 0x05021012, 0x83440400, 0x0010d400, 0x50000000, - 0x80026d40, 0x0500000d, 0x4d2c0000, 0x05f5ff16, - 0x05000009, 0x60168000, 0x592c0a0c, 0x417a6000, - 0x05f9fddb, 0x0521fdd8, 0x0001fb82, 0x5c025800, - 0x05fdf7eb, 0x5c025800, 0x64c65a0a, 0x0001f382, - 0x492fc857, 0x592c020a, 0x90000586, 0x05000003, - 0x0501f9ee, 0x05020019, 0x4d2c0000, 0x05d1f923, - 0x05000011, 0x492fc857, 0x412f4000, 0x05d1f91f, - 0x0500000b, 0x492fc857, 0x412dd800, 0x05f1f84e, - 0x05f1f85d, 0x49a1d80b, 0x5c025800, 0x492dd80a, - 0x48ef4006, 0x05e1f8ea, 0x05e1f101, 0x41a25800, - 0x05d1f922, 0x5c025800, 0x4a025a0a, 0x00004005, - 0x640a5c0a, 0x0001f382, 0x4a025a0a, 0x00004001, - 0x0001f382, 0x4807c857, 0x485fc857, 0x6004b800, - 0x5c000800, 0x4c5c0000, 0x0501f005, 0x4807c857, - 0x485fc857, 0x5c000800, 0x4d780000, 0x4803c857, - 0x492fc857, 0x8c00050e, 0x05ce0d4d, 0x4203e000, - 0x50000000, 0x600cb900, 0x05cdf554, 0x492fc857, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4d040000, - 0x4d2c0000, 0x4d200000, 0x4d240000, 0x4c540000, - 0x4c500000, 0x4c580000, 0x417a4000, 0x59a800d1, - 0x90000506, 0x05020141, 0x0501f9a2, 0x05020143, - 0x916c0580, 0x0500013d, 0x592cca0b, 0x592cc40b, - 0x8060c1c0, 0x0500013d, 0x42000000, 0x0010e511, - 0x50000000, 0x4c000000, 0x0535f86f, 0x5c000000, - 0x05000002, 0x80000000, 0x80600480, 0x05021133, + 0x0529fa25, 0x05020011, 0x592c2210, 0x59300202, + 0x80100580, 0x0502000d, 0x59300009, 0x800001c0, + 0x05020004, 0x59300203, 0x90000587, 0x05fc079b, + 0x492fc857, 0x64a65a0a, 0x0001f3a8, 0x42000000, + 0x001123eb, 0x0535fd1e, 0x492fc857, 0x64225a0a, + 0x0001f3a8, 0x4803c857, 0x8c000514, 0x05000007, + 0x42000000, 0x001123da, 0x0535fd15, 0x492fc857, + 0x492e6009, 0x1c01f000, 0x492fc857, 0x65165a0a, + 0x0001f3a8, 0x492fc857, 0x64aa5a0a, 0x0001f3a8, + 0x492fc857, 0x64a25a0a, 0x0001f3a8, 0x492fc857, + 0x641a5a0a, 0x0001f3a8, 0x492fc857, 0x643a5a0a, + 0x0001f3a8, 0x90040587, 0x05fe07e4, 0x640a5a0a, + 0x0001f3a8, 0x05f9fe49, 0x05020006, 0x42000000, + 0x001123e7, 0x0535fcfa, 0x0529fea8, 0x05fe0790, + 0x592c040a, 0x800000c2, 0x800008c4, 0x80040400, + 0x48025807, 0x59340010, 0x492e6810, 0x492fc857, + 0x80000d40, 0x05000003, 0x492c0800, 0x1c01f000, + 0x59340203, 0x492e680f, 0x492fc857, 0x4803c857, + 0x80000540, 0x05020002, 0x64066a03, 0x1c01f000, + 0x59a8003d, 0x81640480, 0x05fe1763, 0x40be6000, + 0x59300407, 0x90000586, 0x05020007, 0x5930000a, + 0x81340580, 0x05020004, 0x59300202, 0x80040580, + 0x05fc074e, 0x91326430, 0x41580000, 0x81300480, + 0x05fc17f4, 0x05fdf754, 0x05f1fb10, 0x05fe07d2, + 0x59a8029f, 0x80000104, 0x81640480, 0x05fc17ce, + 0x0515fe8c, 0x05fdf762, 0x492fc857, 0x592e4414, + 0x81224110, 0x0501fc30, 0x05020052, 0x0501fb18, + 0x05020050, 0x592c0208, 0x80000112, 0x05fe0584, + 0x592e8a0a, 0x05f9faa9, 0x0502004a, 0x05f9fa53, + 0x0502004a, 0x592e780e, 0x493fc857, 0x8d3c053e, + 0x05020005, 0x8d0c050e, 0x05020042, 0x05f5ff92, + 0x05fc0585, 0x913c1d1f, 0x05fc0583, 0x592c020b, + 0x82000c80, 0x00001000, 0x05fe157f, 0x800000c2, + 0x800008c4, 0x8005d400, 0x592e900c, 0x592e980d, + 0x5934080d, 0x800409c0, 0x05000004, 0x58041805, + 0x800c19c0, 0x0502002b, 0x913c1d1f, 0x81780040, + 0x80000000, 0x800c1902, 0x05fe17fe, 0x05fe056e, + 0x0c01f001, 0x00106ac2, 0x00106ac4, 0x00106acd, + 0x00106acf, 0x00106ad1, 0x0521ffaf, 0x0501f019, + 0x05f5ff4b, 0x0500001d, 0x80e9d1c0, 0x050a0820, + 0x60168000, 0x417a9000, 0x417a9800, 0x0521ffb2, + 0x0501f010, 0x61367000, 0x0501f004, 0x613a7000, + 0x0501f002, 0x614a7000, 0x5934080d, 0x800409c0, + 0x05000006, 0x4d3c0000, 0x40067800, 0x05f5ff1c, + 0x5c027800, 0x05000007, 0x05f5fe25, 0x05220fd0, + 0x05000006, 0x8d3c053e, 0x0502000a, 0x1c01f000, + 0x64c25a0a, 0x0501f009, 0x64b25a0a, 0x0501f007, + 0x64a25a0a, 0x0501f005, 0x64a65a0a, 0x0501f003, + 0x497a580d, 0x64025a0a, 0x4a025a08, 0x00000103, + 0x0001f3a8, 0x492fc857, 0x80140110, 0x80000040, + 0x05000002, 0x05fdf52a, 0x0501fac0, 0x0502001f, + 0x592c020b, 0x82000500, 0x00003fff, 0x48025a0b, + 0x8c000506, 0x05000003, 0xb0000530, 0x05020003, + 0x8d0c050e, 0x05020015, 0x4a025a0a, 0x0000dead, + 0x592c040c, 0x82000500, 0x0000f0ff, 0x48025c0c, + 0x05f5fa16, 0x05020002, 0x1c01f000, 0x49425a0a, + 0x8058b1c0, 0x05000008, 0x0525fdb6, 0x0501f80b, + 0x44042800, 0x8058b040, 0x05000003, 0x48082801, + 0x480c2802, 0x0001f3a8, 0x60c68000, 0x60040800, + 0x6004b000, 0x05fdf7f2, 0x592c040c, 0x80000118, + 0x912c2c0d, 0x80142c00, 0x1c01f000, 0x492fc857, + 0x641a5a0c, 0x0001f3a8, 0x492fc857, 0x64065a0c, + 0x0001f3a8, 0x492fc857, 0x592e7c0a, 0x833c0500, + 0xfffffffe, 0x05020046, 0x592c400b, 0x40be6000, + 0x41581800, 0x400c0000, 0x81300480, 0x0502102a, + 0x59300203, 0x90000580, 0x0500000c, 0x59300009, + 0x80000d40, 0x05000009, 0x58043003, 0x58183211, + 0x592c020c, 0x80180580, 0x05020004, 0x58040009, + 0x80200580, 0x05000003, 0x91326430, 0x05fdf7ee, + 0x58040208, 0x82000500, 0x000000ff, 0xb0000d93, + 0x0500000d, 0xb0000d88, 0x0500000b, 0x90000d98, + 0x05000009, 0x90000da9, 0x05000007, 0x90000d94, + 0x05000005, 0xb00005a8, 0x05000003, 0x90000582, + 0x05fe07ee, 0x050dfe84, 0x4d2c0000, 0x0521fa38, + 0x5c025800, 0x0500001a, 0x050dfe70, 0x64025a0a, + 0x0001f3a8, 0x592e8a0a, 0x83440c80, 0x000007f0, + 0x05001004, 0x83440c80, 0x00000800, 0x05001010, + 0x0001fb08, 0x0502000e, 0x4d2c0000, 0x592c400b, + 0x05f5fe6b, 0x05000009, 0x60168000, 0x592c0a0c, + 0x417a6000, 0x05f9fdaa, 0x0525f85c, 0x0001fba8, + 0x5c025800, 0x05fdf7ea, 0x5c025800, 0x050dfe57, + 0x64c65a0a, 0x0001f3a8, 0x492fc857, 0x592c020a, + 0x90000586, 0x05000003, 0x0501fa40, 0x05020019, + 0x4d2c0000, 0x05cdfe44, 0x05000011, 0x492fc857, + 0x412f4000, 0x05cdfe40, 0x0500000b, 0x492fc857, + 0x412dd800, 0x05edfedb, 0x05edfeea, 0x49a1d80b, + 0x5c025800, 0x492dd80a, 0x48ef4006, 0x05ddfe7c, + 0x05ddf693, 0x41a25800, 0x05cdfe43, 0x5c025800, + 0x4a025a0a, 0x00004005, 0x640a5c0a, 0x0001f3a8, + 0x4a025a0a, 0x00004001, 0x0001f3a8, 0x4807c857, + 0x485fc857, 0x6004b800, 0x5c000800, 0x4c5c0000, + 0x0501f005, 0x4807c857, 0x485fc857, 0x5c000800, + 0x4d780000, 0x4803c857, 0x492fc857, 0x8c00050e, + 0x05ce0a72, 0x4203e000, 0x50000000, 0x600cb900, + 0x05cdf279, 0x492fc857, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4d040000, 0x4d2c0000, 0x4d200000, + 0x4d240000, 0x4c540000, 0x4c500000, 0x4c580000, + 0x80ddb9c0, 0x0500000d, 0x48dfc857, 0x58dc7802, + 0x58dcb803, 0x58dcc004, 0x58dcc805, 0x4867c857, + 0x58de0806, 0x4907c857, 0x58de4007, 0x58de4808, + 0x4c3c0000, 0x0501f121, 0x417a4000, 0x59a800d6, + 0x90000506, 0x05020159, 0x0501f9e6, 0x0502015b, + 0x916c0580, 0x05000155, 0x592cca0b, 0x592cc40b, + 0x8060c1c0, 0x05000155, 0x42000000, 0x001124b5, + 0x50000000, 0x4c000000, 0x0535fcc6, 0x5c000000, + 0x05000002, 0x80000000, 0x80600480, 0x0502114b, 0x912c7c0c, 0x592c040a, 0x4803c857, 0x8c000500, - 0x05000004, 0x0535f864, 0x0500012c, 0x0501f002, + 0x05000004, 0x0535fcbb, 0x05000144, 0x0501f002, 0x60064000, 0x60060800, 0x4200b800, 0xffffffff, 0x83200580, 0x000000e1, 0x05020003, 0x4200b800, 0x3fffffff, 0x503c0000, 0x805cbd00, 0x05020003, - 0x91224420, 0x0501f00f, 0x805cb902, 0x05021009, - 0x83200400, 0x0010d17b, 0x50024800, 0x90640580, - 0x05000010, 0x8c640506, 0x05020095, 0x0501f113, - 0x81060800, 0x81224000, 0x910404a1, 0x05fc17f3, - 0x803c7800, 0x83200480, 0x00000100, 0x05fc17e2, - 0x61fa4001, 0x8060c1c0, 0x05020108, 0x0501f0df, - 0x59240a00, 0x0535f84d, 0x05000004, 0x8c040500, - 0x05020102, 0x0501f004, 0x90040d03, 0x90040d83, - 0x050000fe, 0x59240c00, 0x8c04050a, 0x05020004, - 0x8d0c0520, 0x050000f9, 0x0501f003, 0x8c040508, - 0x050000f6, 0x4c3c0000, 0x4d3c0000, 0x4d300000, - 0x600a78a0, 0x417a6000, 0x05ddfd77, 0x5c026000, - 0x5c027800, 0x59240206, 0x82000500, 0xfffffcff, - 0x48024a06, 0x60040800, 0x05ddff3f, 0x05020004, - 0x4a024a00, 0x00008005, 0x0501f002, 0x64164a00, - 0x5c007800, 0x05f9ffb1, 0x0502005a, 0x59a80249, - 0x82000500, 0x00000082, 0x82000d80, 0x00000082, - 0x05000050, 0x8c00050e, 0x05020052, 0x916c0583, - 0x05020050, 0x05ddff08, 0x050000cb, 0x0501f04d, - 0x05f1fa07, 0x05000047, 0x592c1214, 0x480bc857, - 0x8c080500, 0x05000043, 0x41780800, 0x8c080504, - 0x05000004, 0x592c0815, 0x82040d00, 0xff000000, - 0x592c0414, 0x4803c857, 0x8c080502, 0x05020003, - 0x82000500, 0x00001fff, 0x80040540, 0x4803c857, - 0x4802480b, 0x82001500, 0x00001fff, 0x05ddfe0a, - 0x60203000, 0x050000b0, 0x592c0414, 0x82000d00, - 0x00001fff, 0x0501fba1, 0x0500002a, 0x8c00050a, - 0x60243000, 0x050200a8, 0x412cb800, 0x05d1f853, - 0x601c3000, 0x050000a4, 0x905ca408, 0x912cac08, - 0x6040b000, 0x0531ff72, 0x592c0408, 0x84000554, - 0x48025c08, 0x81040040, 0x82000c00, 0x0010d15b, - 0x50040800, 0x405c0000, 0x803c0480, 0x05001096, - 0x812c7c00, 0x503c0000, 0x80040580, 0x44007800, - 0x80600040, 0x48025c0b, 0x4d2c0000, 0x05d1f83b, - 0x412c0800, 0x5c025800, 0x601c3000, 0x0500008a, - 0x4806480c, 0x5924000b, 0x48000802, 0x412c0800, - 0x05ddfe41, 0x601c3000, 0x05000083, 0x0501f06f, - 0x4c3c0000, 0x05ddfcb9, 0x5c007800, 0x05000085, - 0x81060800, 0x81224000, 0x8060c040, 0x05fe0767, - 0x05f9ff52, 0x05020059, 0x0501f064, 0x59240a00, - 0x8c040500, 0x0500007d, 0x05f1f9b1, 0x05000014, - 0x592c1214, 0x8c080500, 0x05000011, 0x592c1414, - 0x82081500, 0x00001fff, 0x5924000b, 0x82000500, - 0x00001fff, 0x80080580, 0x60203000, 0x05020066, - 0x8c04051e, 0x05000006, 0x4c040000, 0x05ddfe67, - 0x5c000800, 0x82040d00, 0xffff7f1f, 0x4c3c0000, - 0x4c040000, 0x82040d00, 0xffffdffc, 0x84040d44, - 0x48064a00, 0x0531ff98, 0x05000012, 0x59240200, - 0x8c00051e, 0x0500000f, 0x8400051e, 0x48024a00, - 0x600c0800, 0x05ddfeb0, 0x05000007, 0x4813c857, - 0x4817c857, 0x58100200, 0x8400055e, 0x48002200, - 0x0501f004, 0x59a80249, 0x8400050e, 0x48035249, - 0x5c000800, 0x5c007800, 0x8c640502, 0x05020016, - 0x4c3c0000, 0x59240c08, 0x05d9f96b, 0x4c5c0000, - 0x4d3c0000, 0x600a78a0, 0x4d300000, 0x417a6000, - 0x05ddfcc9, 0x5c026000, 0x5c027800, 0x497a480b, - 0x5c00b800, 0x5c007800, 0x81060800, 0x81224000, - 0x8060c040, 0x05fe071d, 0x90640589, 0x0500000f, - 0x0501f01a, 0x916c0584, 0x05fc07ea, 0x90040d03, - 0x90040d83, 0x05fe07e7, 0x4c3c0000, 0x0501f839, + 0x91224420, 0x0501f010, 0x805cb902, 0x05021009, + 0x83200400, 0x0010d8f9, 0x50024800, 0x90640580, + 0x05000011, 0x8c640506, 0x05020096, 0x0501f12b, + 0x910404a1, 0x05021004, 0x81060800, 0x81224000, + 0x05fdf7f2, 0x803c7800, 0x83200480, 0x00000100, + 0x05fc17e1, 0x61fa4001, 0x8060c1c0, 0x0502011f, + 0x0501f0f6, 0x59240a00, 0x0535fca3, 0x05000004, + 0x8c040500, 0x05020119, 0x0501f004, 0x90040d03, + 0x90040d83, 0x05000115, 0x59240c00, 0x8c04050a, + 0x05020004, 0x8d0c0520, 0x05000110, 0x0501f003, + 0x8c040508, 0x0500010d, 0x4c3c0000, 0x4d3c0000, + 0x4d300000, 0x600a78a0, 0x417a6000, 0x05ddfaf8, + 0x5c026000, 0x5c027800, 0x59240206, 0x82000500, + 0xfffffcff, 0x48024a06, 0x60040800, 0x05ddfcc2, + 0x05020004, 0x4a024a00, 0x00008005, 0x0501f002, + 0x64164a00, 0x5c007800, 0x05f9ff76, 0x0502005a, + 0x59a8024c, 0x82000500, 0x00000082, 0x82000d80, + 0x00000082, 0x05000050, 0x8c00050e, 0x05020052, + 0x916c0583, 0x05020050, 0x05ddfc8b, 0x050000e2, + 0x0501f04d, 0x05f1f888, 0x05000047, 0x592c1214, + 0x480bc857, 0x8c080500, 0x05000043, 0x41780800, + 0x8c080504, 0x05000004, 0x592c0815, 0x82040d00, + 0xff000000, 0x592c0414, 0x4803c857, 0x8c080502, + 0x05020003, 0x82000500, 0x00001fff, 0x80040540, + 0x4803c857, 0x4802480b, 0x82001500, 0x00001fff, + 0x05ddfb8c, 0x60203000, 0x050000c7, 0x592c0414, + 0x82000d00, 0x00001fff, 0x0501fc04, 0x0500002a, + 0x8c00050a, 0x60243000, 0x050200bf, 0x412cb800, + 0x05cdfd65, 0x601c3000, 0x050000bb, 0x905ca408, + 0x912cac08, 0x6040b000, 0x0535fbc8, 0x592c0408, + 0x84000554, 0x48025c08, 0x81040040, 0x82000c00, + 0x0010d8d9, 0x50040800, 0x405c0000, 0x803c0480, + 0x050010ad, 0x812c7c00, 0x503c0000, 0x80040580, + 0x44007800, 0x80600040, 0x48025c0b, 0x4d2c0000, + 0x05cdfd4d, 0x412c0800, 0x5c025800, 0x601c3000, + 0x050000a1, 0x4806480c, 0x5924000b, 0x48000802, + 0x412c0800, 0x05ddfbc3, 0x601c3000, 0x0500009a, + 0x0501f086, 0x4c3c0000, 0x05ddfa30, 0x5c007800, + 0x0500009c, 0x81060800, 0x81224000, 0x8060c040, + 0x05fe0766, 0x05f9ff17, 0x05020070, 0x0501f07b, + 0x59240a00, 0x8c040500, 0x05000094, 0x05f1f832, + 0x05000014, 0x592c1214, 0x8c080500, 0x05000011, + 0x592c1414, 0x82081500, 0x00001fff, 0x5924000b, + 0x82000500, 0x00001fff, 0x80080580, 0x60203000, + 0x0502007d, 0x8c04051e, 0x05000006, 0x4c040000, + 0x05ddfbe9, 0x5c000800, 0x82040d00, 0xffff7f1f, + 0x4c3c0000, 0x4c040000, 0x82040d00, 0xffffdffc, + 0x84040d44, 0x48064a00, 0x0535fbee, 0x05000018, + 0x59240200, 0x8c00051e, 0x05000015, 0x8400051e, + 0x48024a00, 0x600c0800, 0x05ddfc33, 0x05000007, + 0x4813c857, 0x4817c857, 0x58100200, 0x8400055e, + 0x48002200, 0x0501f00a, 0x59a8024c, 0x8400050e, + 0x4803524c, 0x60040800, 0x05ddfc27, 0x05000004, + 0x58100200, 0x8400055e, 0x48002200, 0x5c000800, + 0x5c007800, 0x8c640502, 0x05020016, 0x4c3c0000, + 0x59240c08, 0x05d5fec0, 0x4c5c0000, 0x4d3c0000, + 0x600a78a0, 0x4d300000, 0x417a6000, 0x05ddfa44, + 0x5c026000, 0x5c027800, 0x497a480b, 0x5c00b800, 0x5c007800, 0x81060800, 0x81224000, 0x8060c040, - 0x05fe070e, 0x0501f00d, 0x916c0584, 0x0500000b, - 0x05f9fef6, 0x05020007, 0x4a035041, 0x0000aaaa, - 0x64075042, 0x6006d800, 0x05f9fe73, 0x0501f003, - 0x6006d800, 0x05f1ff2a, 0x5c00b000, 0x5c00a000, + 0x05fe0716, 0x90640589, 0x05000020, 0x0501f02b, + 0x916c0584, 0x05fc07ea, 0x90040d03, 0x90040d83, + 0x05fe07e7, 0x4c3c0000, 0x0501f84a, 0x05020011, + 0x5c007800, 0x492db801, 0x483db802, 0x485db803, + 0x4861b804, 0x4865b805, 0x4905b806, 0x4921b807, + 0x4925b808, 0x5c00b000, 0x5c00a000, 0x5c00a800, + 0x5c024800, 0x5c024000, 0x5c025800, 0x0501f021, + 0x5c007800, 0x81060800, 0x81224000, 0x8060c040, + 0x05fe06f6, 0x0501f00d, 0x916c0584, 0x0500000b, + 0x05f9fea4, 0x05020007, 0x4a035044, 0x0000aaaa, + 0x64075045, 0x6006d800, 0x05f9fe1b, 0x0501f003, + 0x6006d800, 0x05f1fde5, 0x5c00b000, 0x5c00a000, 0x5c00a800, 0x5c024800, 0x5c024000, 0x5c025800, 0x497a5a0a, 0x64025c0a, 0x592c0408, 0x8c000514, - 0x05000003, 0x05cdffc5, 0x0501f002, 0x0001fb82, + 0x05000003, 0x05cdfcc0, 0x0501f002, 0x0001fba8, 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x59240200, 0x82000500, 0xfffffffc, 0x48024a00, 0x0501f006, 0x60143000, 0x0501f004, @@ -6814,43 +7021,54 @@ static const uint32_t isp_2500_risc_code[] = { 0x5c024000, 0x5c025800, 0x481a5c0a, 0x05fdf7e3, 0x4923c857, 0x4d440000, 0x4d300000, 0x4d340000, 0x4c580000, 0x4d400000, 0x4d3c0000, 0x4c5c0000, - 0x60a68000, 0x600a7820, 0x61c0b00f, 0x417a8800, - 0x83440400, 0x0010d400, 0x50000000, 0x80026d40, - 0x05000005, 0x59340013, 0x80000130, 0x81200580, - 0x0500081c, 0x81468800, 0x8058b040, 0x05fe07f5, - 0x61fe89ff, 0x42026800, 0x00110210, 0x0501f815, - 0x9064058b, 0x0502000b, 0x61c2880f, 0x6040b000, - 0x5924b809, 0x505c0000, 0x80026d40, 0x0502080d, - 0x805cb800, 0x81468800, 0x8058b040, 0x05fe07fa, - 0x5c00b800, 0x5c027800, 0x5c028000, 0x5c00b000, - 0x5c026800, 0x5c026000, 0x5c028800, 0x1c01f000, - 0x4937c857, 0x4947c857, 0x050dfaf9, 0x4df00000, - 0x417a6000, 0x050df828, 0x050df92d, 0x050df976, - 0x0509fefc, 0x052dfc50, 0x83440580, 0x0000ffff, - 0x05000015, 0x59340c00, 0x82040580, 0x00000707, - 0x05000011, 0x82000580, 0x0000070b, 0x0500000e, - 0x4d300000, 0x4d380000, 0x0515f9dd, 0x05cc0bab, - 0x64066407, 0x4936600a, 0x4926601d, 0x602c0800, - 0x05f5fab9, 0x60067000, 0x0009f800, 0x5c027000, - 0x5c026000, 0x5c03e000, 0x050c0aca, 0x1c01f000, + 0x60a68000, 0x600a7820, 0x80ddb9c0, 0x0500000e, + 0x58de8809, 0x58dcb00a, 0x58dcb80b, 0x485fc857, + 0x4d2c0000, 0x40de5800, 0x05cdfc93, 0x4179b800, + 0x5c025800, 0x83440480, 0x000007fc, 0x05001004, + 0x0501f01b, 0x59a8b0ac, 0x417a8800, 0x0001fb08, + 0x05020006, 0x59340013, 0x80000130, 0x81200580, + 0x05000831, 0x05000024, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07f3, 0x61fe89ff, 0x42026800, 0x001141b4, + 0x0501f825, 0x05000018, 0x9064058b, 0x0502000d, + 0x61c2880f, 0x6040b000, 0x5924b809, 0x505c0000, + 0x80026d40, 0x05000003, 0x0501f81b, 0x0500000e, + 0x805cb800, 0x81468800, 0x8058b040, 0x05fe07f8, + 0x90000541, 0x5c00b800, 0x5c027800, 0x5c028000, + 0x5c00b000, 0x5c026800, 0x5c026000, 0x5c028800, + 0x1c01f000, 0x4d2c0000, 0x05cdfc4f, 0x05cc08aa, + 0x412db800, 0x5c025800, 0x4a01b800, 0xaaaabbbb, + 0x4945b809, 0x4859b80a, 0x485db80b, 0x80000580, + 0x05fdf7ed, 0x4937c857, 0x4947c857, 0x050dfc5a, + 0x4df00000, 0x417a6000, 0x050df984, 0x050dfa8f, + 0x050dfad8, 0x050df858, 0x0531f80a, 0x83440580, + 0x0000ffff, 0x05000019, 0x59340c00, 0x82040580, + 0x00000707, 0x05000015, 0x82000580, 0x0000070b, + 0x05000012, 0x4d300000, 0x4d380000, 0x0515fb95, + 0x05cc0889, 0x64066407, 0x4936600a, 0x4926601d, + 0x602c0800, 0x05f5f96f, 0x60067000, 0x83440580, + 0x000007fe, 0x05020002, 0x497a6806, 0x0009f839, + 0x5c027000, 0x5c026000, 0x5c03e000, 0x050c0c27, + 0x90000541, 0x1c01f000, 0x5c027000, 0x5c026000, + 0x5c03e000, 0x050c0c21, 0x80000580, 0x1c01f000, 0x599c0018, 0x8c00052a, 0x05000004, 0x592c0003, 0x58000211, 0x80000540, 0x1c01f000, 0x599c0018, 0x8c00052a, 0x05000004, 0x592c0003, 0x5800040c, 0x81200580, 0x1c01f000, 0x599c0018, 0x8c000530, 0x05000004, 0x592c0003, 0x58000211, 0x80000540, - 0x1c01f000, 0x4c640000, 0x4c600000, 0x59a800d1, + 0x1c01f000, 0x4c640000, 0x4c600000, 0x59a800d6, 0x90000506, 0x050200f4, 0x05fdffe6, 0x050200f2, 0x916c0580, 0x050000f0, 0x497a5c0a, 0x592c220b, 0x8210c500, 0x000000ff, 0x80100110, 0x8200cd00, 0x000000ff, 0x050000e2, 0x90640483, 0x050210e0, 0x4d200000, 0x4d240000, 0x4d2c0000, 0x4d040000, 0x417a0800, 0x592c140b, 0x820a4500, 0x000000ff, - 0x4923c857, 0x0531fe87, 0x40580000, 0x81200480, - 0x050210d7, 0x83200400, 0x0010d17b, 0x50024800, - 0x90600583, 0x05020012, 0x59a80249, 0x8c000514, + 0x4923c857, 0x0535fa9a, 0x40580000, 0x81200480, + 0x050210d7, 0x83200400, 0x0010d8f9, 0x50024800, + 0x90600583, 0x05020012, 0x59a8024c, 0x8c000514, 0x0500000c, 0x59240200, 0x82001d00, 0x00002001, 0x820c1d80, 0x00002001, 0x05020006, 0x8c000510, - 0x05020004, 0x41781800, 0x05ddfb8c, 0x0501f0a4, + 0x05020004, 0x41781800, 0x05ddf8c0, 0x0501f0a4, 0x4803c857, 0x60183000, 0x0501f0ca, 0x90600582, 0x05000004, 0x59240200, 0x8c000500, 0x050200b6, 0x592c020c, 0x8c00050a, 0x05020004, 0x8d0c0520, @@ -6862,22 +7080,22 @@ static const uint32_t isp_2500_risc_code[] = { 0x592c0010, 0x9c0001c0, 0x48024804, 0x810609c0, 0x05000002, 0x912e5c85, 0x592c0a0b, 0x8c040500, 0x0500007b, 0x4d3c0000, 0x4d300000, 0x600a78a0, - 0x417a6000, 0x05ddfbb4, 0x5c026000, 0x5c027800, + 0x417a6000, 0x05ddf8f2, 0x5c026000, 0x5c027800, 0x59240206, 0x82000500, 0xfffffcff, 0x48024a06, - 0x60040800, 0x05ddfd7c, 0x05020004, 0x4a024a00, - 0x00008005, 0x0501f002, 0x64164a00, 0x05f9fdef, - 0x05020067, 0x05f1f852, 0x05000057, 0x592c120a, + 0x60040800, 0x05ddfabc, 0x05020004, 0x4a024a00, + 0x00008005, 0x0501f002, 0x64164a00, 0x05f9fd71, + 0x05020067, 0x05edfe90, 0x05000057, 0x592c120a, 0x8c080500, 0x05000054, 0x41780000, 0x8c080504, 0x05000005, 0x592c0017, 0x82000500, 0x0000ff00, 0x800000e0, 0x592c0a16, 0x8c080502, 0x05020003, 0x82040d00, 0x00001fff, 0x80040540, 0x4802480b, - 0x82001500, 0x00001fff, 0x05ddfc57, 0x60203000, + 0x82001500, 0x00001fff, 0x05ddf996, 0x60203000, 0x05000074, 0x592c0a16, 0x82040d00, 0x00001fff, - 0x0501f9ee, 0x0500003c, 0x8c00050a, 0x60243000, - 0x0502006c, 0x412cb800, 0x05cdfea0, 0x601c3000, + 0x0501fa0e, 0x0500003c, 0x8c00050a, 0x60243000, + 0x0502006c, 0x412cb800, 0x05cdfb6f, 0x601c3000, 0x05000068, 0x492fc857, 0x4c540000, 0x4c500000, 0x4c580000, 0x905ca408, 0x912cac08, 0x6040b000, - 0x0531fdbb, 0x5c00b000, 0x5c00a000, 0x5c00a800, + 0x0535f9ce, 0x5c00b000, 0x5c00a000, 0x5c00a800, 0x4a025c08, 0x00000400, 0x592c0a0b, 0x82040d00, 0x000000ff, 0x80640040, 0x800000d0, 0x80040540, 0x48025a0b, 0x4803c857, 0x592c140b, 0x80081110, @@ -6885,119 +7103,127 @@ static const uint32_t isp_2500_risc_code[] = { 0x8d0c0520, 0x05000044, 0x0501f003, 0x8c000508, 0x05000041, 0x48025a0c, 0x592c0012, 0x4802580d, 0x592c0013, 0x4802580e, 0x592c0014, 0x4802580f, - 0x592c0015, 0x48025810, 0x412e0800, 0x05cdfe73, + 0x592c0015, 0x48025810, 0x412e0800, 0x05cdfb42, 0x601c3000, 0x0500003b, 0x492e480c, 0x5924000b, - 0x48025802, 0x41040800, 0x05ddfc7b, 0x05000034, - 0x0501f016, 0x600c0800, 0x05ddfd1b, 0x0502000a, - 0x59a80249, 0x4803c857, 0x8c00050e, 0x05020008, - 0x916c0583, 0x05020006, 0x05ddfcef, 0x05000028, - 0x0501f003, 0x05ddfae9, 0x05000025, 0x8064c840, + 0x48025802, 0x41040800, 0x05ddf9ba, 0x05000034, + 0x0501f016, 0x600c0800, 0x05ddfa5b, 0x0502000a, + 0x59a8024c, 0x4803c857, 0x8c00050e, 0x05020008, + 0x916c0583, 0x05020006, 0x05ddfa2f, 0x05000028, + 0x0501f003, 0x05ddf81d, 0x05000025, 0x8064c840, 0x05000006, 0x592c140b, 0x80081110, 0x81060800, 0x912e5c05, 0x05fdf73d, 0x5c020800, 0x5c025800, 0x5c024800, 0x5c024000, 0x592c0408, 0x8c000514, - 0x05000003, 0x05cdfe5d, 0x0501f020, 0x05f9fd77, + 0x05000003, 0x05cdfb2c, 0x0501f020, 0x05f9fcf9, 0x0500001d, 0x592c0a0b, 0x8c040500, 0x0500001a, - 0x916c0584, 0x05000018, 0x6006d800, 0x05f1fdac, + 0x916c0584, 0x05000018, 0x6006d800, 0x05f1fc3b, 0x0501f015, 0x60043000, 0x0501f00e, 0x60083000, 0x0501f010, 0x600c3000, 0x0501f00a, 0x60103000, 0x0501f008, 0x60143000, 0x0501f00a, 0x60183000, 0x59240200, 0x82000500, 0xfffffffc, 0x48024a00, 0x5c020800, 0x5c025800, 0x5c024800, 0x5c024000, - 0x481a5c0a, 0x0001fb82, 0x5c00c000, 0x5c00c800, - 0x1c01f000, 0x4c580000, 0x0531fd9a, 0x40580000, - 0x81200480, 0x05021009, 0x83200400, 0x0010d17b, + 0x481a5c0a, 0x0001fba8, 0x5c00c000, 0x5c00c800, + 0x1c01f000, 0x4c580000, 0x0535f9ad, 0x40580000, + 0x81200480, 0x05021009, 0x83200400, 0x0010d8f9, 0x50024800, 0x59240200, 0x90000503, 0x90000583, - 0x5c00b000, 0x1c01f000, 0x4923c857, 0x4927c857, - 0x90000541, 0x05fdf7fb, 0x80140110, 0x80000040, - 0x05fe01bf, 0x599c0019, 0x8c000510, 0x0502000b, - 0x05f5ff3a, 0x05020002, 0x1c01f000, 0x49425a0a, - 0x48065811, 0x480a5812, 0x4943c857, 0x4807c857, - 0x480bc857, 0x0001f382, 0x592c040f, 0x82000500, - 0x0000e000, 0x82000580, 0x00006000, 0x05fc07f1, - 0x59a80249, 0x8c000508, 0x05fc07ee, 0x592c040d, - 0x82000500, 0x000000ff, 0x90000583, 0x05fe07e9, - 0x592c120f, 0x592c080e, 0x82040500, 0xff000000, - 0x80040d80, 0x80000110, 0x80081540, 0x05000004, - 0x4806580e, 0x0501f889, 0x05fdf7de, 0x60701000, - 0x60640800, 0x60c68000, 0x05fdf7dd, 0x80140110, - 0x80000040, 0x05fe0192, 0x05f9f860, 0x05020002, - 0x1c01f000, 0x49425a0a, 0x48065815, 0x480a5816, - 0x0001f382, 0x80140110, 0x05fc0189, 0x80000040, + 0x5c00b000, 0x1c01f000, 0x4923c857, 0x417a4800, + 0x90000541, 0x05fdf7fb, 0x492fc857, 0x80140110, + 0x80000040, 0x05fe0146, 0x599c0019, 0x8c000510, + 0x0502000d, 0x05f5fea3, 0x05020002, 0x1c01f000, + 0x49425a0a, 0x48065811, 0x480a5812, 0x480e5813, + 0x4943c857, 0x4807c857, 0x480bc857, 0x480fc857, + 0x0001f3a8, 0x592c040f, 0x82000500, 0x0000e000, + 0x82000580, 0x00006000, 0x05fc07ef, 0x59a8024c, + 0x8c000508, 0x05fc07ec, 0x592c040d, 0x82000500, + 0x000000ff, 0x90000583, 0x05fe07e7, 0x592c120f, + 0x592c080e, 0x82040500, 0xff000000, 0x80040d80, + 0x80000110, 0x80081540, 0x05000004, 0x4806580e, + 0x0501f8a6, 0x05fdf7dc, 0x60701000, 0x60640800, + 0x60c68000, 0x05fdf7db, 0x80140110, 0x80000040, + 0x05fe0117, 0x05f5ffc8, 0x05020002, 0x1c01f000, + 0x49425a0a, 0x48065815, 0x480a5816, 0x480e5813, + 0x0001f3a8, 0x80140110, 0x05fc010d, 0x80000040, 0x0502000a, 0x6006e000, 0x592c020e, 0x8c000504, - 0x00040218, 0x592c020b, 0x82000c80, 0x00001001, - 0x05fe118d, 0x0501f004, 0x4a01e007, 0x00020a18, - 0x0005f0df, 0x592c1017, 0x82080500, 0xffff0003, - 0x05fe0185, 0x600ae000, 0x42000000, 0x001102f1, + 0x00040241, 0x592c020b, 0x82000c80, 0x00001001, + 0x05fe1111, 0x0501f004, 0x4a01e007, 0x00020a41, + 0x0005f106, 0x592c1017, 0x82080500, 0xffff0003, + 0x05fe0109, 0x600ae000, 0x42000000, 0x00114295, 0x50007000, 0x592c0015, 0x592c0816, 0x592c1804, 0x480c7006, 0x48007007, 0x48047008, 0x492c700b, 0x4978700e, 0x4978700c, 0x0501f001, 0x4978700d, 0x82080480, 0x00000180, 0x05001006, 0x4800700f, 0x4a007005, 0x00000180, 0x65807004, 0x0501f005, 0x4978700f, 0x48087005, 0x80081104, 0x48087004, - 0x5838000a, 0x48007003, 0x40381000, 0x0001f021, - 0x4df00000, 0x4203e000, 0x50000000, 0x0001f817, - 0x05000003, 0x58f00004, 0x0801f800, 0x5c03e000, - 0x1c01f000, 0x05cdfd94, 0x05cc09fc, 0x4a02580a, - 0x00110290, 0x42000800, 0x001102f1, 0x452c0800, + 0x5838000a, 0x48007003, 0x40381000, 0x0001f029, + 0x4df00000, 0x4203e000, 0x50000000, 0x0001f81f, + 0x05000005, 0x58f00004, 0x0801f800, 0x5c03e000, + 0x1c01f000, 0x59980000, 0x80006d40, 0x05fc07fc, + 0x58347a08, 0x823c7d00, 0x000000ff, 0x903c6db3, + 0x05000007, 0x903c6d94, 0x05000005, 0xb03c6d92, + 0x05000003, 0x903c6da9, 0x05fe07f1, 0x58f06805, + 0x4c340000, 0x58f06806, 0x4c340000, 0x58f06804, + 0x4c340000, 0x0501f90d, 0x5c006800, 0x4835e004, + 0x5c006800, 0x4835e006, 0x5c006800, 0x4835e005, + 0x05fdf7e3, 0x05cdfa43, 0x05c80eaf, 0x4a02580a, + 0x00114234, 0x42000800, 0x00114295, 0x452c0800, 0x497a580b, 0x497a580c, 0x497a580d, 0x497a580e, - 0x497a580f, 0x4a025809, 0x00020b4f, 0x497a5810, + 0x497a580f, 0x4a025809, 0x00020b85, 0x497a5810, 0x4a025802, 0x00000100, 0x64065801, 0x1c01f000, - 0x42000800, 0x001102f2, 0x64040801, 0x4a000802, + 0x42000800, 0x00114296, 0x64040801, 0x4a000802, 0x00000100, 0x64400804, 0x65000805, 0x4a000809, - 0x00020914, 0x1c01f000, 0x0501f808, 0x05fc0410, - 0x64065a0c, 0x0531f0dc, 0x0501f804, 0x05fc0409, - 0x641a5a0c, 0x0531f0d8, 0x59a80005, 0x8c00051a, + 0x0002093b, 0x1c01f000, 0x0501f808, 0x05fc039b, + 0x64065a0c, 0x0531f4b1, 0x0501f804, 0x05fc0394, + 0x641a5a0c, 0x0531f4ad, 0x59a80005, 0x8c00051a, 0x1c01f000, 0x59a80005, 0x8c00051c, 0x1c01f000, 0x592c0208, 0x82000500, 0x000000ff, 0xb00005b5, 0x592c040c, 0x0502000a, 0x84000542, 0x48025c0c, - 0x592c0005, 0x4d2c0000, 0x80025d40, 0x05ce0d7f, + 0x592c0005, 0x4d2c0000, 0x80025d40, 0x05ce0a2e, 0x5c025800, 0x497a5805, 0x1c01f000, 0x84000502, - 0x48025c0c, 0x1c01f000, 0x59a8003d, 0x80080580, + 0x48025c0c, 0x1c01f000, 0x59a80040, 0x80080580, 0x05020002, 0x1c01f000, 0x480bc857, 0x42024800, - 0x0010e512, 0x480a4805, 0x480b503d, 0x497b8830, + 0x001124b6, 0x480a4805, 0x480b5040, 0x497b8830, 0x82080d40, 0x01000000, 0x48078832, 0x59c40002, - 0x8400054c, 0x48038802, 0x600c0800, 0x050df116, - 0x492fc857, 0x80140110, 0x90000581, 0x05fe00fc, + 0x8400054c, 0x48038802, 0x600c0800, 0x050df24c, + 0x492fc857, 0x80140110, 0x90000581, 0x05fe0064, 0x592c040c, 0x4803c857, 0x82000500, 0x000000f0, - 0x80000108, 0x0c01f001, 0x00106cc1, 0x00106c46, - 0x00106c72, 0x00106cc1, 0x00106c72, 0x00106cc1, - 0x00106cc1, 0x00106cc1, 0x00106cae, 0x00106cc1, - 0x00106cc1, 0x00106cc1, 0x00106cc1, 0x00106cc1, - 0x00106cc1, 0x00106cc1, 0x05edfed2, 0x0500006f, + 0x80000108, 0x0c01f001, 0x00107049, 0x00106fce, + 0x00106ffa, 0x00107049, 0x00106ffa, 0x00107049, + 0x00107049, 0x00107049, 0x00107036, 0x00107049, + 0x00107049, 0x00107049, 0x00107049, 0x00107049, + 0x00107049, 0x00107049, 0x05edfcf0, 0x0500006f, 0x592c0817, 0x4807c857, 0x82040580, 0x00000200, - 0x0502007b, 0x4d2c0000, 0x05cdfd23, 0x412c1000, + 0x0502007b, 0x4d2c0000, 0x05cdf9d2, 0x412c1000, 0x5c025800, 0x05000063, 0x480a5801, 0x492c100a, - 0x64001001, 0x4a001009, 0x00106c5f, 0x4a001003, - 0x00110672, 0x48041005, 0x592c0015, 0x48001007, - 0x592c0016, 0x48001008, 0x0001f021, 0x5832580a, - 0x812e59c0, 0x05cc0979, 0x49786001, 0x58300002, - 0x82000580, 0x00000100, 0x05020007, 0x59a80ccd, - 0x48065811, 0x59a808cf, 0x48065810, 0x64025a0a, - 0x0001f382, 0x4803c857, 0x4a006002, 0x00000100, - 0x600a8000, 0x0501f04c, 0x05edfea6, 0x05000043, - 0x05edfea9, 0x05020043, 0x592c020b, 0x4803c857, + 0x64001001, 0x4a001009, 0x00106fe7, 0x4a001003, + 0x00114616, 0x48041005, 0x592c0015, 0x48001007, + 0x592c0016, 0x48001008, 0x0001f029, 0x5832580a, + 0x812e59c0, 0x05c80e2c, 0x49786001, 0x58300002, + 0x82000580, 0x00000100, 0x05020007, 0x59a80cd2, + 0x48065811, 0x59a808d4, 0x48065810, 0x64025a0a, + 0x0001f3a8, 0x4803c857, 0x4a006002, 0x00000100, + 0x600a8000, 0x0501f04c, 0x05edfcc4, 0x05000043, + 0x05edfcc7, 0x05020043, 0x592c020b, 0x4803c857, 0x82000480, 0x00001000, 0x05021045, 0x592c000f, 0x4803c857, 0x800001c0, 0x05000045, 0x90000484, 0x05021043, 0x592c0814, 0x4807c857, 0x82040580, 0x00000200, 0x05020040, 0x592c040c, 0x8c00050a, 0x05000006, 0x592c0017, 0x4803c857, 0x82000580, - 0x00000200, 0x0502003a, 0x4d2c0000, 0x05cdfce2, + 0x00000200, 0x0502003a, 0x4d2c0000, 0x05cdf991, 0x412c1000, 0x5c025800, 0x05000022, 0x480a5801, 0x4978100b, 0x492c100a, 0x64041001, 0x4a001009, - 0x00106ca6, 0x4a001003, 0x001105f2, 0x592c040c, - 0x8c00050a, 0x05020003, 0x4a001003, 0x001106f2, + 0x0010702e, 0x4a001003, 0x00114596, 0x592c040c, + 0x8c00050a, 0x05020003, 0x4a001003, 0x00114696, 0x48041005, 0x592c0012, 0x48001007, 0x592c0013, - 0x48001008, 0x0001f021, 0x5832580a, 0x812e59c0, - 0x05cc0932, 0x49786001, 0x58300002, 0x82000580, - 0x00000100, 0x05fe07c0, 0x05edfe6a, 0x05000007, - 0x497a5a0a, 0x05f9f87c, 0x05020009, 0x1c01f000, + 0x48001008, 0x0001f029, 0x5832580a, 0x812e59c0, + 0x05c80de5, 0x49786001, 0x58300002, 0x82000580, + 0x00000100, 0x05fe07c0, 0x05edfc88, 0x05000007, + 0x497a5a0a, 0x05f5ffc9, 0x05020009, 0x1c01f000, 0x640a5810, 0x0501f004, 0x64c65810, 0x0501f002, 0x64ca5810, 0x60c68000, 0x0501f003, 0x48065810, - 0x480a5811, 0x49425a0a, 0x0001f382, 0x64325811, + 0x480a5811, 0x49425a0a, 0x0001f3a8, 0x64325811, 0x0501f008, 0x644a5811, 0x0501f006, 0x64725811, 0x0501f004, 0x64c25811, 0x0501f002, 0x64f25811, 0x64665810, 0x05fdf7f0, 0x4807c857, 0x4c580000, - 0x0531fc28, 0x42006000, 0x0010e512, 0x58301200, + 0x0535f81b, 0x42006000, 0x001124b6, 0x58301200, 0x8c08051e, 0x0500000b, 0x5830000b, 0x82000500, 0x00001fff, 0x80040580, 0x05020006, 0x82080500, 0x000000e0, 0x82000580, 0x000000e0, 0x0501f005, @@ -7007,432 +7233,458 @@ static const uint32_t isp_2500_risc_code[] = { 0x82140500, 0x000000ff, 0xb0006cbb, 0x05021033, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4d040000, 0x4971e410, 0x4cf00000, 0x4d700000, 0x42007800, - 0x0010dd60, 0x503de000, 0x58f0700b, 0x58f06c10, - 0x483a5804, 0x90347583, 0x05020005, 0x58f0b802, + 0x00111cfa, 0x503de000, 0x58f0700b, 0x58f06c10, + 0x483a5804, 0x90347581, 0x05000005, 0x58f0b802, 0x58f0c003, 0x58f0cc00, 0x58f20807, 0x58f07012, 0x483a5802, 0x48f25803, 0x59980801, 0x4c040000, - 0x497b3001, 0x6006e000, 0x1201f800, 0x0002083d, - 0x91700583, 0x00040a3f, 0x5c000800, 0x48073001, - 0x5c02e000, 0x5c01e000, 0x42000800, 0x0010dd60, - 0x50040800, 0x58046c10, 0x90340583, 0x05020005, + 0x497b3001, 0x6006e000, 0x1201f800, 0x00020864, + 0x91700583, 0x00040a75, 0x5c000800, 0x48073001, + 0x5c02e000, 0x5c01e000, 0x42000800, 0x00111cfa, + 0x50040800, 0x58046c10, 0x90340581, 0x05000005, 0x49040807, 0x48640c00, 0x48600803, 0x485c0802, 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x5c03e000, 0x1c01f000, 0x05fdf806, 0x05fdf7fd, - 0x59c80007, 0x8c000502, 0x05000055, 0x8d0c051c, - 0x050600b2, 0x835c2c80, 0x000000ff, 0x050410af, - 0x59c82817, 0x481750d0, 0x497b9005, 0x82140500, - 0x00e00000, 0x05020046, 0x82140500, 0x000003ff, - 0x8c140516, 0x05000005, 0x90001c08, 0x42002000, - 0x001102fe, 0x0501f003, 0x90001c06, 0x41cc2000, - 0x600030c1, 0xb00c0480, 0x05001004, 0x61001000, - 0xb00c1c80, 0x0501f003, 0x400c1000, 0x41781800, - 0x54182000, 0x80102000, 0x80183000, 0x80081040, - 0x05fe07fc, 0x800c19c0, 0x05000005, 0x59c80005, - 0x80000000, 0x48039005, 0x05fdf7ee, 0x8c140516, - 0x05000003, 0x42039800, 0x00110300, 0x82140500, - 0x000003ff, 0x800018c4, 0x8c140514, 0x05000004, - 0x59cc0002, 0x90000503, 0x800c1c80, 0x480f50b6, - 0x59c40002, 0x8c00050c, 0x05020003, 0x0531fbdb, - 0x05020011, 0x82140500, 0x01f60000, 0x0502000e, - 0x0505f88e, 0x05020007, 0x4a039005, 0x00000140, - 0x82140500, 0x0e000000, 0x80000132, 0x0c01f012, - 0x800001c0, 0x0502000a, 0x4a039005, 0x00000140, - 0x0501f00b, 0x4817c857, 0x82140500, 0x00f60000, - 0x05020003, 0x0501ff76, 0x05fe07ee, 0x0505f89d, - 0x4a039005, 0x00000140, 0x0501f056, 0x4803c856, - 0x1c01f000, 0x00106d86, 0x00107139, 0x00106d81, - 0x00106d81, 0x00106d81, 0x00106d81, 0x00106d81, - 0x00106d81, 0x4803c857, 0x42000000, 0x0010e44b, - 0x0531fa58, 0x1c01f000, 0x8d0c052a, 0x05000004, - 0x4c140000, 0x05cdf954, 0x5c002800, 0x59cc0003, - 0x82000500, 0x00ff0000, 0x0502003a, 0x59cc0400, - 0x82000d00, 0x0000ff00, 0x82041500, 0x0000f000, - 0x840409c0, 0x82080580, 0x0000c000, 0x05020003, - 0x0501fd11, 0x0501f032, 0x82080580, 0x00002000, - 0x05020024, 0x916c0581, 0x05020020, 0x05f9fb0f, - 0x05020014, 0x4c040000, 0x59a8083f, 0x4807c857, - 0x90040589, 0x05000007, 0x90040583, 0x0502000b, - 0x05f9f9da, 0x59a8083f, 0x90040589, 0x05020007, - 0x81780000, 0x05c9fbee, 0x916c0582, 0x05020003, - 0x5c000800, 0x0501f00d, 0x5c000800, 0x0501f018, - 0x59cc0006, 0x82000500, 0xff000000, 0x82000580, - 0x11000000, 0x05ce08e8, 0x05020011, 0x05edfde9, - 0x0505f8af, 0x0501f00e, 0x0501f81d, 0x0501f00c, - 0x82080580, 0x00003000, 0x05020003, 0x0501fa88, - 0x0501f007, 0x82080580, 0x00008000, 0x050003e6, - 0x42000000, 0x0010e44a, 0x0531f212, 0x1c01f000, - 0x4817c857, 0x42000000, 0x0010e44a, 0x0531fa0d, - 0x916c0583, 0x05020009, 0x4c080000, 0x4c0c0000, - 0x61201100, 0x40141800, 0x80142120, 0x05edfa05, - 0x5c001800, 0x5c001000, 0x1c01f000, 0x59cc0002, - 0x82000500, 0xff000000, 0x82001580, 0x01000000, - 0x05000008, 0x82001580, 0x23000000, 0x05000005, - 0x05cdf8bd, 0x0505f85a, 0x050006c0, 0x0501f209, - 0x59a800b6, 0x90000484, 0x05001206, 0x900405a3, - 0x05020046, 0x59cc0004, 0x4803c857, 0x59cc0006, - 0x82000500, 0xff000000, 0x59cc0801, 0x82040d00, - 0x00ffffff, 0x80040540, 0x4803c857, 0x0501fca4, - 0x05cc08a9, 0x050001f7, 0x59300c07, 0x90040590, - 0x0500000a, 0x90040591, 0x05000008, 0x90040581, - 0x05000006, 0x90040584, 0x05000004, 0x90040588, - 0x05ce089d, 0x050201eb, 0x59300004, 0x82000500, - 0x80010000, 0x05000004, 0x050dfaaf, 0x05ce0896, - 0x050201e4, 0x59cc0a04, 0x48066202, 0x59cc0006, - 0x82000500, 0xffff0000, 0x82000d80, 0x02000000, - 0x05020007, 0x60567000, 0x0501fceb, 0x0501fd1d, - 0x05cc0889, 0x050001d7, 0x0009f000, 0x82000d80, - 0x02140000, 0x05fc07f8, 0x82000d80, 0x02100000, - 0x05fc07f5, 0x82000d80, 0x02100000, 0x05fc07f2, - 0x82000d80, 0x01000000, 0x05ce087b, 0x050201c9, - 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ce0876, - 0x050201c4, 0x59a800b6, 0x90000488, 0x050011c1, - 0x605a7000, 0x05fdf7e5, 0x900405a2, 0x05ce086e, - 0x050201bc, 0x59cc0004, 0x4803c857, 0x59cc0006, - 0x4803c857, 0x59cc0001, 0x4803c857, 0x59a800b6, - 0x800001c0, 0x05cc0864, 0x050001b2, 0x59a80249, - 0x8c000508, 0x05000003, 0x8c000502, 0x050001ad, - 0x59a80805, 0x8c040514, 0x05000043, 0x0501f9d0, - 0x05020041, 0x59a80249, 0x8c000518, 0x0500000e, + 0x5c03e000, 0x1c01f000, 0x05f9ff6e, 0x05fdf7fd, + 0x59a80006, 0x8c000508, 0x05000006, 0x592c6c0e, + 0x5930002f, 0x80340580, 0x82000500, 0x00000800, + 0x1c01f000, 0x59c80007, 0x8c000502, 0x0500005f, + 0x8d0c051c, 0x0506013b, 0x835c2c80, 0x000000ff, + 0x05041138, 0x59c82817, 0x481750d5, 0x497b9005, + 0x82140500, 0x00e00000, 0x0502004f, 0x82140500, + 0x000003ff, 0x8c140516, 0x05000005, 0x90001c08, + 0x42002000, 0x001142a2, 0x0501f003, 0x90001c06, + 0x41cc2000, 0x600030c1, 0xb00c0480, 0x05001004, + 0x61001000, 0xb00c1c80, 0x0501f003, 0x400c1000, + 0x41781800, 0x54182000, 0x80102000, 0x80183000, + 0x80081040, 0x05fe07fc, 0x800c19c0, 0x05000005, + 0x59c80005, 0x80000000, 0x48039005, 0x05fdf7ee, + 0x8c140516, 0x05000003, 0x42039800, 0x001142a4, + 0x82140500, 0x000003ff, 0x800018c4, 0x8c140514, + 0x05000004, 0x59cc0002, 0x90000503, 0x800c1c80, + 0x480f50bb, 0x59c40002, 0x8c00050c, 0x05020003, + 0x0531ffc5, 0x0502001a, 0x82140500, 0x01f60000, + 0x05020017, 0x0505f917, 0x05020007, 0x4a039005, + 0x00000140, 0x82140500, 0x0e000000, 0x80000132, + 0x0c01f01c, 0x800001c0, 0x05000005, 0x0505f92f, + 0x4a039005, 0x00000140, 0x1c01f000, 0x42000000, + 0x00112452, 0x0531fe56, 0x60040000, 0x0501f864, + 0x4a039005, 0x00000140, 0x0501f00c, 0x4817c857, + 0x82140500, 0x00f60000, 0x05020003, 0x0501ffcc, + 0x05fe07e5, 0x0505f91d, 0x4a039005, 0x00000140, + 0x41780000, 0x0501f056, 0x4803c856, 0x1c01f000, + 0x00107121, 0x00107518, 0x0010711c, 0x0010711c, + 0x0010711c, 0x0010711c, 0x0010711c, 0x0010711c, + 0x4803c857, 0x42000000, 0x001123ef, 0x0531fe38, + 0x1c01f000, 0x8d0c052a, 0x05000004, 0x4c140000, + 0x05c9fde8, 0x5c002800, 0x59cc0003, 0x82000500, + 0x00ff0000, 0x0502003a, 0x59cc0400, 0x82000d00, + 0x0000ff00, 0x82041500, 0x0000f000, 0x840409c0, + 0x82080580, 0x0000c000, 0x05020003, 0x0501fd67, + 0x0501f032, 0x82080580, 0x00002000, 0x05020024, + 0x916c0581, 0x05020020, 0x05f9fa5e, 0x05020014, + 0x4c040000, 0x59a80842, 0x4807c857, 0x90040589, + 0x05000007, 0x90040583, 0x0502000b, 0x05f9f923, + 0x59a80842, 0x90040589, 0x05020007, 0x81780000, + 0x05c9f886, 0x916c0582, 0x05020003, 0x5c000800, + 0x0501f00d, 0x5c000800, 0x0501f018, 0x59cc0006, + 0x82000500, 0xff000000, 0x82000580, 0x11000000, + 0x05ca0d7c, 0x05020011, 0x05edfc43, 0x0505f92e, + 0x0501f00e, 0x0501f81f, 0x0501f00c, 0x82080580, + 0x00003000, 0x05020003, 0x0501fa96, 0x0501f007, + 0x82080580, 0x00008000, 0x0500042a, 0x42000000, + 0x001123ee, 0x0531f5f2, 0x1c01f000, 0x4817c857, + 0x800001c0, 0x05020004, 0x42000000, 0x001123ee, + 0x0531fdeb, 0x916c0583, 0x05020009, 0x4c080000, + 0x4c0c0000, 0x61201100, 0x40141800, 0x80142120, + 0x05edf805, 0x5c001800, 0x5c001000, 0x1c01f000, + 0x59cc0002, 0x82000500, 0xff000000, 0x82001580, + 0x01000000, 0x05000008, 0x82001580, 0x23000000, + 0x05000005, 0x05c9fd4f, 0x0505f8d7, 0x05000713, + 0x0501f210, 0x59a800bb, 0x90000484, 0x0500120d, + 0x900405a3, 0x05020046, 0x59cc0004, 0x4803c857, + 0x59cc0006, 0x82000500, 0xff000000, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x80040540, 0x4803c857, + 0x0501fcf5, 0x05c80d3b, 0x050001fe, 0x59300c07, + 0x90040590, 0x0500000a, 0x90040591, 0x05000008, + 0x90040581, 0x05000006, 0x90040584, 0x05000004, + 0x90040588, 0x05ca0d2f, 0x050201f2, 0x59300004, + 0x82000500, 0x80010000, 0x05000004, 0x050dfbd0, + 0x05ca0d28, 0x050201eb, 0x59cc0a04, 0x48066202, 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80, - 0x7f000000, 0x05020008, 0x05edfccb, 0x05020036, - 0x59cc0c07, 0x82040d00, 0x000000ff, 0x90040581, - 0x05020031, 0x0501f9d8, 0x0500002f, 0x61327000, - 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x4c1c0000, - 0x05d9ffc8, 0x5c003800, 0x05000003, 0x05cdf83e, - 0x0501f18c, 0x59cc0001, 0x82000500, 0x00ffffff, - 0x0501ff20, 0x05000006, 0x61fe89ff, 0x42026800, - 0x00110210, 0x05f5ff3d, 0x481a6802, 0x599c0019, - 0x8c000510, 0x05000168, 0x59a80249, 0x8c000508, - 0x05000165, 0x59cc1006, 0x82081500, 0xffff0000, - 0x82081580, 0x03000000, 0x0502015f, 0x91641490, - 0x05001181, 0x8400054c, 0x48035249, 0x59cc1000, - 0x82081500, 0x00ffffff, 0x05fdfd98, 0x59cc0007, - 0x82000500, 0x0000ffff, 0x48038893, 0x48035040, - 0x0501f151, 0x59cc0006, 0x82000500, 0xffff0000, - 0x82000d80, 0x03000000, 0x05020032, 0x59a80249, - 0x8c000508, 0x05000020, 0x8400054c, 0x48035249, - 0x59cc0800, 0x82040d00, 0x00ffffff, 0x42024800, - 0x0010e512, 0x4807c857, 0x48064805, 0x4807503d, - 0x497b8830, 0x84040d70, 0x48078832, 0x59c40802, - 0x84040d4c, 0x48078802, 0x59cc0007, 0x82000500, - 0x0000ffff, 0x48038893, 0x48035040, 0x600c0800, - 0x59a8103d, 0x0509fe98, 0x59cc0006, 0x82000500, - 0x0000ffff, 0x05ca0ff4, 0x05020142, 0x605e7000, - 0x0501f0f3, 0x4c000000, 0x82140500, 0x0000f000, - 0x82000580, 0x00003000, 0x5c000000, 0x05fe07f3, - 0x05f9f9f6, 0x05fe07f1, 0x8c000502, 0x05fe07ef, - 0x60583002, 0x0501fdec, 0x4803c857, 0x0501f131, - 0x82000d80, 0x04000000, 0x05020013, 0x59cc0006, - 0x82000500, 0x0000ffff, 0x05ca0fdb, 0x05020129, - 0x05f9f9e6, 0x05000002, 0x0501f0d8, 0x497b50c2, - 0x42001000, 0x0010582b, 0x0501ffe7, 0x05f5fee5, - 0x59a80249, 0x84000548, 0x48035249, 0x60c27000, - 0x0501f0cf, 0x82000d80, 0x05000000, 0x05020008, - 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ca0fc6, - 0x05020114, 0x60627000, 0x0501f0c5, 0x82000d80, - 0x20100000, 0x05020003, 0x60667000, 0x0501f0c0, - 0x82000d80, 0x21100000, 0x05020003, 0x606a7000, - 0x0501f0bb, 0x82000d80, 0x52000000, 0x05020008, - 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ca0fb2, - 0x05020100, 0x606e7000, 0x0501f0b1, 0x82000d80, - 0x50000000, 0x05020008, 0x59cc0006, 0x82000500, - 0x0000ffff, 0x05ca0fa8, 0x050200f6, 0x60727000, - 0x0501f0a7, 0x82000d80, 0x13000000, 0x05020003, - 0x60d27000, 0x0501f0a2, 0x82000d80, 0x12000000, + 0x02000000, 0x05020007, 0x60567000, 0x0501fd3f, + 0x0501fd70, 0x05c80d1b, 0x050001de, 0x0009f039, + 0x82000d80, 0x02140000, 0x05fc07f8, 0x82000d80, + 0x02100000, 0x05fc07f5, 0x82000d80, 0x02100000, + 0x05fc07f2, 0x82000d80, 0x01000000, 0x05ca0d0d, + 0x050201d0, 0x59cc0006, 0x82000500, 0x0000ffff, + 0x05ca0d08, 0x050201cb, 0x59a800bb, 0x90000488, + 0x050011c8, 0x605a7000, 0x05fdf7e5, 0x900405a2, + 0x05ca0d00, 0x050201c3, 0x59cc0004, 0x4803c857, + 0x59cc0006, 0x4803c857, 0x59cc0001, 0x4803c857, + 0x59a800bb, 0x800001c0, 0x05c80cf6, 0x050001b9, + 0x0531feb4, 0x05000003, 0x0531feb7, 0x050001b5, + 0x59a8024c, 0x8c000508, 0x05000003, 0x8c000502, + 0x050001b0, 0x59a80805, 0x8c040514, 0x05000043, + 0x0501f9d8, 0x05020041, 0x59a8024c, 0x8c000518, + 0x0500000e, 0x59cc0006, 0x82000500, 0xffff0000, + 0x82000d80, 0x7f000000, 0x05020008, 0x05edfad0, + 0x05020036, 0x59cc0c07, 0x82040d00, 0x000000ff, + 0x90040581, 0x05020031, 0x0501f9e0, 0x0500002f, + 0x61327000, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x4c1c0000, 0x05d9fcc3, 0x5c003800, 0x05000003, + 0x05c9fccc, 0x0501f18f, 0x59cc0001, 0x82000500, + 0x00ffffff, 0x0501ff6f, 0x05000006, 0x61fe89ff, + 0x42026800, 0x001141b4, 0x05f5fe71, 0x481a6802, + 0x599c0019, 0x8c000510, 0x0500016b, 0x59a8024c, + 0x8c000508, 0x05000168, 0x59cc1006, 0x82081500, + 0xffff0000, 0x82081580, 0x03000000, 0x05020162, + 0x91641490, 0x05001184, 0x8400054c, 0x4803524c, + 0x59cc1000, 0x82081500, 0x00ffffff, 0x05fdfd7f, + 0x59cc0007, 0x82000500, 0x0000ffff, 0x48038893, + 0x48035043, 0x0501f154, 0x59cc0006, 0x82000500, + 0xffff0000, 0x82000d80, 0x03000000, 0x05020032, + 0x59a8024c, 0x8c000508, 0x05000020, 0x8400054c, + 0x4803524c, 0x59cc0800, 0x82040d00, 0x00ffffff, + 0x42024800, 0x001124b6, 0x4807c857, 0x48064805, + 0x48075040, 0x497b8830, 0x84040d70, 0x48078832, + 0x59c40802, 0x84040d4c, 0x48078802, 0x59cc0007, + 0x82000500, 0x0000ffff, 0x48038893, 0x48035043, + 0x600c0800, 0x59a81040, 0x0509ffb5, 0x59cc0006, + 0x82000500, 0x0000ffff, 0x05ca0c82, 0x05020145, + 0x605e7000, 0x0501f0f3, 0x4c000000, 0x82140500, + 0x0000f000, 0x82000580, 0x00003000, 0x5c000000, + 0x05fe07f3, 0x05f9f93f, 0x05fe07f1, 0x8c000502, + 0x05fe07ef, 0x60583002, 0x0501fe3b, 0x4803c857, + 0x0501f134, 0x82000d80, 0x04000000, 0x05020013, + 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ca0c69, + 0x0502012c, 0x05f9f92f, 0x05000002, 0x0501f0d8, + 0x497b50c7, 0x42001000, 0x00105a99, 0x0505f860, + 0x05f5fe19, 0x59a8024c, 0x84000548, 0x4803524c, + 0x60c27000, 0x0501f0cf, 0x82000d80, 0x05000000, + 0x05020008, 0x59cc0006, 0x82000500, 0x0000ffff, + 0x05ca0c54, 0x05020117, 0x60627000, 0x0501f0c5, + 0x82000d80, 0x20100000, 0x05020003, 0x60667000, + 0x0501f0c0, 0x82000d80, 0x21100000, 0x05020003, + 0x606a7000, 0x0501f0bb, 0x82000d80, 0x52000000, 0x05020008, 0x59cc0006, 0x82000500, 0x0000ffff, - 0x05ca0f99, 0x050200e7, 0x60927000, 0x0501f098, - 0x82000d00, 0xff000000, 0x82040d80, 0x24000000, - 0x05020003, 0x60b67000, 0x0501f091, 0x82000d00, - 0xff000000, 0x82040d80, 0x53000000, 0x05020003, - 0x60aa7000, 0x0501f08a, 0x82000d80, 0x0f000000, - 0x05020003, 0x60827000, 0x0501f085, 0x82000d80, - 0x61040000, 0x0502004a, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x4c580000, 0x91ccc406, 0x8060b800, - 0x50600000, 0x82000500, 0x0000ffff, 0x82001480, - 0x00000401, 0x05021037, 0x90001503, 0x05020035, - 0x59a810b6, 0x80081480, 0x05001032, 0x90000484, - 0x8000b104, 0x8058b1c0, 0x0500002e, 0x59cc3800, - 0x821c3d00, 0x00ffffff, 0x4d200000, 0x05d9feed, - 0x05000003, 0x5c024000, 0x0501f026, 0x505cc800, - 0x8264c500, 0x03000000, 0x8060c130, 0x42000000, - 0x0010e410, 0x90602580, 0x05020004, 0x42000000, - 0x0010e40d, 0x0501f00a, 0x90602581, 0x05020004, - 0x42000000, 0x0010e40e, 0x0501f005, 0x90602582, - 0x05020003, 0x42000000, 0x0010e40f, 0x0531f889, - 0x60541100, 0x82642500, 0x0000ffff, 0x80641920, - 0x41202800, 0x05edf884, 0x805cb800, 0x8058b040, - 0x05fe07e3, 0x5c024000, 0x5c00b000, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x608e7000, 0x0501f040, - 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x42000000, 0x0010e448, 0x0531f072, 0x82000d80, - 0x60000000, 0x05020003, 0x60fe7000, 0x0501f034, - 0x82000d80, 0x78000000, 0x05020003, 0x61167000, - 0x0501f02f, 0x82000d80, 0x10000000, 0x05020003, - 0x613a7000, 0x0501f02a, 0x82000d80, 0x63000000, - 0x05020003, 0x612a7000, 0x0501f025, 0x82000d00, - 0xff000000, 0x82040d80, 0x56000000, 0x05020003, - 0x613e7000, 0x0501f01e, 0x82000d00, 0xff000000, - 0x82040d80, 0x57000000, 0x05020003, 0x61427000, - 0x0501f017, 0x82000d80, 0x7d000000, 0x05020003, - 0x615a7000, 0x0501f012, 0x59a80a49, 0x8c040518, - 0x0500000e, 0x82000d80, 0x7f000000, 0x0502000b, - 0x4803c857, 0x61667000, 0x59cc0c07, 0x82040d00, - 0x000000ff, 0x90040581, 0x05000005, 0x4803c857, - 0x61767000, 0x0501f002, 0x60767000, 0x59cc3800, - 0x821c3d00, 0x00ffffff, 0x821c0580, 0x00fffffe, - 0x59cc0001, 0x05020004, 0x40003000, 0x61fa880f, - 0x0501f009, 0x59cc3800, 0x821c3d00, 0x00ffffff, - 0x4c1c0000, 0x0501f91e, 0x5c003800, 0x05ca0eee, - 0x05020041, 0x05d9fe73, 0x0502003a, 0x83440480, - 0x000007f0, 0x05001001, 0x05edfb8f, 0x0500000f, - 0x4c180000, 0x05f5fabc, 0x5c003000, 0x0500000e, - 0x4c180000, 0x0501f856, 0x5c003000, 0x05020007, - 0x05f5fde6, 0x42026800, 0x00110210, 0x481a6802, - 0x61fe89ff, 0x0501f004, 0x05f1fd4f, 0x05ca0ed6, + 0x05ca0c40, 0x05020103, 0x606e7000, 0x0501f0b1, + 0x82000d80, 0x50000000, 0x05020008, 0x59cc0006, + 0x82000500, 0x0000ffff, 0x05ca0c36, 0x050200f9, + 0x60727000, 0x0501f0a7, 0x82000d80, 0x13000000, + 0x05020003, 0x60d27000, 0x0501f0a2, 0x82000d80, + 0x12000000, 0x05020008, 0x59cc0006, 0x82000500, + 0x0000ffff, 0x05ca0c27, 0x050200ea, 0x60927000, + 0x0501f098, 0x82000d00, 0xff000000, 0x82040d80, + 0x24000000, 0x05020003, 0x60b67000, 0x0501f091, + 0x82000d00, 0xff000000, 0x82040d80, 0x53000000, + 0x05020003, 0x60aa7000, 0x0501f08a, 0x82000d80, + 0x0f000000, 0x05020003, 0x60827000, 0x0501f085, + 0x82000d80, 0x61040000, 0x0502004a, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4c580000, 0x91ccc406, + 0x8060b800, 0x50600000, 0x82000500, 0x0000ffff, + 0x82001480, 0x00000401, 0x05021037, 0x90001503, + 0x05020035, 0x59a810bb, 0x80081480, 0x05001032, + 0x90000484, 0x8000b104, 0x8058b1c0, 0x0500002e, + 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x4d200000, + 0x05d9fbe8, 0x05000003, 0x5c024000, 0x0501f026, + 0x505cc800, 0x8264c500, 0x03000000, 0x8060c130, + 0x42000000, 0x001123b1, 0x90602580, 0x05020004, + 0x42000000, 0x001123ae, 0x0501f00a, 0x90602581, + 0x05020004, 0x42000000, 0x001123af, 0x0501f005, + 0x90602582, 0x05020003, 0x42000000, 0x001123b0, + 0x0531fc63, 0x60541100, 0x82642500, 0x0000ffff, + 0x80641920, 0x41202800, 0x05e9fe80, 0x805cb800, + 0x8058b040, 0x05fe07e3, 0x5c024000, 0x5c00b000, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x608e7000, + 0x0501f040, 0x5c00b000, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x42000000, 0x001123ec, 0x0531f44c, + 0x82000d80, 0x60000000, 0x05020003, 0x60fe7000, + 0x0501f034, 0x82000d80, 0x78000000, 0x05020003, + 0x61167000, 0x0501f02f, 0x82000d80, 0x10000000, + 0x05020003, 0x613a7000, 0x0501f02a, 0x82000d80, + 0x63000000, 0x05020003, 0x612a7000, 0x0501f025, + 0x82000d00, 0xff000000, 0x82040d80, 0x56000000, + 0x05020003, 0x613e7000, 0x0501f01e, 0x82000d00, + 0xff000000, 0x82040d80, 0x57000000, 0x05020003, + 0x61427000, 0x0501f017, 0x82000d80, 0x7d000000, + 0x05020003, 0x615a7000, 0x0501f012, 0x59a80a4c, + 0x8c040518, 0x0500000e, 0x82000d80, 0x7f000000, + 0x0502000b, 0x4803c857, 0x61667000, 0x59cc0c07, + 0x82040d00, 0x000000ff, 0x90040581, 0x05000005, + 0x4803c857, 0x61767000, 0x0501f002, 0x60767000, + 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x821c0580, + 0x00fffffe, 0x59cc0001, 0x05020004, 0x40003000, + 0x61fa880f, 0x0501f009, 0x59cc3800, 0x821c3d00, + 0x00ffffff, 0x4c1c0000, 0x0501f929, 0x5c003800, + 0x05ca0b7c, 0x05020044, 0x05d9fb6e, 0x0502003d, + 0x83440480, 0x000007f0, 0x05001004, 0x83440480, + 0x00000800, 0x05001011, 0x05edf9df, 0x0500000f, + 0x4c180000, 0x05f5f9e1, 0x5c003000, 0x0500000e, + 0x4c180000, 0x0501f85b, 0x5c003000, 0x05020007, + 0x05f5fd17, 0x42026800, 0x001141b4, 0x481a6802, + 0x61fe89ff, 0x0501f004, 0x05f1fbc6, 0x05ca0b61, 0x05020024, 0x59340200, 0x8c000514, 0x0500000a, 0x913805b0, 0x05000008, 0x913805bf, 0x05000006, 0x913805b4, 0x05000004, 0x913805a4, 0x05000002, - 0x61327000, 0x0511fc2a, 0x05000023, 0x4926601d, - 0x4936600a, 0x64126407, 0x83340580, 0x00110210, + 0x61327000, 0x0511fdc0, 0x05000023, 0x4926601d, + 0x4936600a, 0x64126407, 0x83340580, 0x001141b4, 0x05020005, 0x59cc0001, 0x82000500, 0x00ffffff, 0x4802602a, 0x59cc0c04, 0x48066202, 0xb138058c, - 0x05020002, 0x64466407, 0x0501fb17, 0x0501fb7a, - 0x05020003, 0x0005ffdc, 0x0501f002, 0x0009f000, - 0x598800bc, 0x4803c857, 0x80000000, 0x480310bc, - 0x1c01f000, 0x05d9fe33, 0x05fe07fa, 0x42000000, - 0x0010e3bd, 0x052dffe3, 0x42026800, 0x00110210, - 0x0501f002, 0x0501fe3d, 0x61241100, 0x59cc1806, - 0x800c1930, 0x05e9ffdb, 0x0511fc09, 0x05c80e9e, - 0x05fc07ec, 0x4926601d, 0x4936600a, 0x83340580, - 0x00110210, 0x05020005, 0x59cc0001, 0x82000500, - 0x00ffffff, 0x4802602a, 0x64126407, 0x59cc0c04, - 0x48066202, 0x64266403, 0x6426641c, 0x4a02621c, - 0x00002900, 0x64066203, 0x0509f05b, 0x59a80249, - 0x4803c857, 0x8c000508, 0x05000013, 0x599c0019, - 0x8c000510, 0x05020010, 0x59cc0006, 0x82000500, - 0xff000000, 0x82000d80, 0x03000000, 0x0500000c, - 0x82000d80, 0x20000000, 0x05000009, 0x82000d80, - 0x05000000, 0x05000006, 0x82000d80, 0x21000000, - 0x05000003, 0x80000580, 0x1c01f000, 0x90000541, - 0x05fdf7fe, 0x59cc2006, 0x82102500, 0xff000000, - 0x9c1021c0, 0x0501f807, 0x820c1c00, 0x0010dd3e, - 0x500c1800, 0x800c0500, 0x4803c857, 0x1c01f000, - 0x40100800, 0x41781800, 0x900404a0, 0x05001004, - 0x800c1800, 0x40000800, 0x05fdf7fc, 0x9004050f, - 0x82000400, 0x0010d15b, 0x50000000, 0x8c040508, - 0x05000002, 0x900001c0, 0x1c01f000, 0x4803c856, - 0x0501fd66, 0x0502000c, 0x05d9fbb6, 0x0502000a, - 0x59cc0002, 0x82000500, 0xff000000, 0x82000d80, - 0x08000000, 0x05000007, 0x42000000, 0x0010e44b, - 0x052df784, 0x42000000, 0x0010e448, 0x052df781, - 0x4803c856, 0x59cc0400, 0x82000d00, 0x0000ff00, - 0x840409c0, 0x900405b3, 0x05020029, 0x0501fa38, - 0x05000067, 0x59cc0a04, 0x48066202, 0x59a800b6, - 0x90000484, 0x05001062, 0x59cc0006, 0x4803c857, - 0x82000500, 0xffff0000, 0x82000d80, 0x02000000, - 0x0502000b, 0x59cc0006, 0x82000500, 0x0000ffff, - 0x05020057, 0x0501fabf, 0x05020003, 0x0005ffdc, - 0x0501f053, 0x60567000, 0x0009f000, 0x82000d80, - 0x01000000, 0x0502004e, 0x59cc0006, 0x82000500, - 0x0000ffff, 0x0502004a, 0x59a800b6, 0x90000488, - 0x05001047, 0x0501faaf, 0x05020003, 0x0005ffdc, - 0x0501f043, 0x605a7000, 0x0009f000, 0x900405b2, - 0x0502003f, 0x59cc0006, 0x82000500, 0xffff0000, - 0x82000d80, 0x14000000, 0x05020039, 0x59a800b6, - 0x90000490, 0x05001036, 0x60e27000, 0x59cc0001, - 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x4c1c0000, - 0x0501f832, 0x5c003800, 0x0502002d, 0x05d9fd89, - 0x0502002b, 0x83440480, 0x000007f0, 0x05001001, - 0x05edfaa5, 0x0500000f, 0x4c180000, 0x05f5f9d2, - 0x5c003000, 0x0500000d, 0x4c180000, 0x05fdff6c, - 0x5c003000, 0x05020007, 0x05f5fcfc, 0x42026800, - 0x00110210, 0x481a6802, 0x61fe89ff, 0x0501f003, - 0x05f1fc60, 0x05020016, 0x0511fb4d, 0x05000d83, + 0x05020002, 0x64466407, 0x0501fb64, 0x0501fbc6, + 0x05020003, 0x0009f810, 0x0501f002, 0x0009f039, + 0x598800bf, 0x4803c857, 0x80000000, 0x480310bf, + 0x1c01f000, 0x05d9fb2b, 0x05fe07fa, 0x42000000, + 0x0011235e, 0x0531fbba, 0x42026800, 0x001141b4, + 0x0501f002, 0x0501feb3, 0x61241100, 0x59cc1806, + 0x800c1930, 0x60082800, 0x83340580, 0x001141b4, + 0x05000002, 0x60042800, 0x05e9fdd0, 0x0511fd75, + 0x05c80b24, 0x05fc07e7, 0x4926601d, 0x4936600a, + 0x83340580, 0x001141b4, 0x05020005, 0x59cc0001, + 0x82000500, 0x00ffffff, 0x4802602a, 0x64126407, + 0x59cc0c04, 0x48066202, 0x64266403, 0x6426641c, + 0x4a02621c, 0x00002900, 0x64066203, 0x0509f16b, + 0x59a8024c, 0x4803c857, 0x8c000508, 0x05000013, + 0x599c0019, 0x8c000510, 0x05020010, 0x59cc0006, + 0x82000500, 0xff000000, 0x82000d80, 0x03000000, + 0x0500000c, 0x82000d80, 0x20000000, 0x05000009, + 0x82000d80, 0x05000000, 0x05000006, 0x82000d80, + 0x21000000, 0x05000003, 0x80000580, 0x1c01f000, + 0x90000541, 0x05fdf7fe, 0x59cc2006, 0x82102500, + 0xff000000, 0x9c1021c0, 0x0501f807, 0x820c1c00, + 0x00111cc4, 0x500c1800, 0x800c0500, 0x4803c857, + 0x1c01f000, 0x40100800, 0x41781800, 0x900404a0, + 0x05001004, 0x800c1800, 0x40000800, 0x05fdf7fc, + 0x9004050f, 0x82000400, 0x0010d8d9, 0x50000000, + 0x8c040508, 0x05000002, 0x900001c0, 0x1c01f000, + 0x4803c856, 0x0501fdd7, 0x0502000c, 0x05d9f8a5, + 0x0502000a, 0x59cc0002, 0x82000500, 0xff000000, + 0x82000d80, 0x08000000, 0x05000007, 0x42000000, + 0x001123ef, 0x0531f356, 0x42000000, 0x001123ec, + 0x0531f353, 0x4803c856, 0x59cc0400, 0x82000d00, + 0x0000ff00, 0x840409c0, 0x900405b3, 0x05020029, + 0x0501fa7d, 0x0500006a, 0x59cc0a04, 0x48066202, + 0x59a800bb, 0x90000484, 0x05001065, 0x59cc0006, + 0x4803c857, 0x82000500, 0xffff0000, 0x82000d80, + 0x02000000, 0x0502000b, 0x59cc0006, 0x82000500, + 0x0000ffff, 0x0502005a, 0x0501fb06, 0x05020003, + 0x0009f810, 0x0501f056, 0x60567000, 0x0009f039, + 0x82000d80, 0x01000000, 0x05020051, 0x59cc0006, + 0x82000500, 0x0000ffff, 0x0502004d, 0x59a800bb, + 0x90000488, 0x0500104a, 0x0501faf6, 0x05020003, + 0x0009f810, 0x0501f046, 0x605a7000, 0x0009f039, + 0x900405b2, 0x05020042, 0x59cc0006, 0x82000500, + 0xffff0000, 0x82000d80, 0x14000000, 0x0502003c, + 0x59a800bb, 0x90000490, 0x05001039, 0x60e27000, + 0x59cc0001, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x4c1c0000, 0x0501f835, 0x5c003800, 0x05020030, + 0x05d9fa7c, 0x0502002e, 0x83440480, 0x000007f0, + 0x05001004, 0x83440480, 0x00000800, 0x05001011, + 0x05edf8ed, 0x0500000f, 0x4c180000, 0x05f5f8ef, + 0x5c003000, 0x0500000d, 0x4c180000, 0x05fdff69, + 0x5c003000, 0x05020007, 0x05f5fc25, 0x42026800, + 0x001141b4, 0x481a6802, 0x61fe89ff, 0x0501f003, + 0x05f1facf, 0x05020016, 0x0511fcb6, 0x05000df1, 0x05000013, 0x4926601d, 0x4936600a, 0x83340580, - 0x00110210, 0x05020005, 0x59cc0001, 0x82000500, - 0x00ffffff, 0x4802602a, 0x051dffcd, 0x64126407, - 0x59cc0c04, 0x48066202, 0x0501fa9f, 0x05020003, - 0x0005ffdc, 0x0501f002, 0x0009f000, 0x42000000, - 0x0010e448, 0x052df70f, 0x4803c857, 0x4c580000, + 0x001141b4, 0x05020005, 0x59cc0001, 0x82000500, + 0x00ffffff, 0x4802602a, 0x0521f9b9, 0x64126407, + 0x59cc0c04, 0x48066202, 0x0501fae3, 0x05020003, + 0x0009f810, 0x0501f002, 0x0009f039, 0x42000000, + 0x001123ec, 0x0531f2de, 0x4803c857, 0x4c580000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x82003500, 0x00ffffff, 0x821c3d00, 0x00ffffff, 0x82181500, 0x00ff0000, 0x82081580, 0x00ff0000, 0x05020013, 0x82181480, 0x00fffffc, 0x05001010, 0x82181580, - 0x00fffffd, 0x05020003, 0x61f6880f, 0x0501f050, + 0x00fffffd, 0x05020003, 0x61f6880f, 0x0501f083, 0x82181580, 0x00fffffe, 0x05020003, 0x61fa880f, - 0x0501f04b, 0x82181580, 0x00fffffc, 0x05020003, - 0x61f2880f, 0x0501f046, 0x41781000, 0x6000b800, - 0x61c0b00f, 0x41acc000, 0x50600000, 0x8000cd40, - 0x05020005, 0x800811c0, 0x05020032, 0x845c155e, - 0x0501f030, 0x58640212, 0x82000500, 0x0000ff00, - 0x05000011, 0x59a8403d, 0x82204500, 0x00ffff00, + 0x0501f07e, 0x82181580, 0x00fffffc, 0x05020003, + 0x61f2880f, 0x0501f079, 0x41781000, 0x6000b800, + 0x4200c000, 0x0010db80, 0x59a8b0ac, 0x50600000, + 0x8000cd40, 0x05020005, 0x800811c0, 0x0502005a, + 0x845c155e, 0x0501f058, 0x82000d00, 0xe0000000, + 0x0500001d, 0x8d0c0538, 0x05000065, 0x8200cd00, + 0x00ffffff, 0x82044580, 0xa0000000, 0x05000016, + 0x82044580, 0x80000000, 0x05020002, 0x0501f012, + 0x8c04053c, 0x0500000d, 0x40640000, 0x80180580, + 0x05020045, 0x4c080000, 0x4c180000, 0x405e8800, + 0x05f1fb5f, 0x4034c800, 0x5c003000, 0x5c001000, + 0x05000005, 0x0501f04e, 0x82040580, 0x20000000, + 0x05ca0951, 0x58640212, 0x82000500, 0x0000ff00, + 0x05000011, 0x59a84040, 0x82204500, 0x00ffff00, 0x82180500, 0x00ffff00, 0x05000002, 0x80200580, - 0x58640002, 0x05020023, 0x82000500, 0x000000ff, - 0x82184500, 0x000000ff, 0x80204580, 0x0502001d, + 0x58640002, 0x0502002c, 0x82000500, 0x000000ff, + 0x82184500, 0x000000ff, 0x80204580, 0x05020026, 0x0501f006, 0x58640002, 0x82000500, 0x00ffffff, - 0x80184580, 0x05020017, 0x4d200000, 0x4c080000, - 0x4c180000, 0x05d9fd13, 0x5c003000, 0x5c001000, - 0x58640813, 0x80040130, 0x81200580, 0x0502000c, - 0x82040500, 0x00ffffff, 0x59240805, 0x80040580, - 0x05000004, 0x812000f0, 0x80040d40, 0x4804c813, - 0x5c024000, 0x405e8800, 0x0501f00d, 0x5c024000, - 0x805cb800, 0x8060c000, 0x8058b040, 0x05fe07c7, - 0x800811c0, 0x05020005, 0x481bc857, 0x481fc857, - 0x90000541, 0x0501f003, 0x840a8d1e, 0x80000580, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c00b000, - 0x1c01f000, 0x59a80249, 0x8c00050e, 0x05000003, - 0x8c000502, 0x05000009, 0x59cc0003, 0x82000500, - 0x00ff0000, 0x05020005, 0x59cc0c00, 0x80040910, - 0x9004050f, 0x0c01f004, 0x42000000, 0x0010e44a, - 0x052df694, 0x00107159, 0x00107159, 0x00107159, - 0x0010747f, 0x00107159, 0x0010715d, 0x00107184, - 0x0010718a, 0x00107159, 0x00107159, 0x00107159, - 0x00107159, 0x00107159, 0x00107159, 0x00107159, - 0x00107159, 0x4803c856, 0x42000000, 0x0010e44a, - 0x052df680, 0x0501f93e, 0x05000021, 0x59a800b6, - 0x9000048c, 0x0500101e, 0x59300407, 0x90000583, - 0x0502001b, 0x59cc0001, 0x5932680a, 0x813669c0, - 0x05000017, 0x59340802, 0x80040580, 0x82000500, - 0x00ffffff, 0x05020012, 0x0501fc6d, 0x05020010, - 0x59cc0a04, 0x59300202, 0x82001580, 0x0000ffff, - 0x05000003, 0x80040580, 0x05020009, 0x48066202, - 0x59300416, 0x8c00051a, 0x05020005, 0x611a7000, - 0x0501f975, 0x05000002, 0x0009f000, 0x59cc0004, - 0x4803c857, 0x42000000, 0x0010e449, 0x052df659, - 0x59cc0004, 0x4803c857, 0x42000000, 0x0010e449, - 0x052dfe54, 0x1c01f000, 0x0501f911, 0x0500001d, - 0x59a800b6, 0x9000048c, 0x0500101a, 0x59300407, - 0x90000583, 0x05020017, 0x59cc0001, 0x82000500, - 0x00ffffff, 0x5932680a, 0x813669c0, 0x05000011, - 0x59340802, 0x82040d00, 0x00ffffff, 0x80040580, - 0x0502000c, 0x0501fc3e, 0x0502000a, 0x59cc0a04, - 0x48066202, 0x59300416, 0x8c00051a, 0x05020005, - 0x61167000, 0x0501f94c, 0x05000002, 0x0009f000, - 0x59cc0004, 0x4803c857, 0x42000000, 0x0010e449, - 0x052df630, 0x59cc0004, 0x4803c857, 0x59cc0000, - 0x82000500, 0xff000000, 0x59cc1001, 0x82081500, - 0x00ffffff, 0x80080540, 0x4803c857, 0x4817c857, - 0x0501fbfa, 0x05ca0ce8, 0x05020011, 0x05d9fa49, - 0x05ca0ce5, 0x0502000e, 0x59cc0002, 0x82000500, - 0xff000000, 0x90000580, 0x05000004, 0x0501fc7c, - 0x050002e2, 0x0501f006, 0x9004050f, 0x90000c86, - 0x05ca1cd9, 0x05021002, 0x0c01f005, 0x4803c856, - 0x42000000, 0x0010e44a, 0x052df60e, 0x001071d5, - 0x001071d9, 0x001071d5, 0x001071d5, 0x00107248, - 0x0010725e, 0x4803c856, 0x42000000, 0x0010e44a, - 0x052df604, 0x59a800b6, 0x800001c0, 0x05ca0cc6, - 0x05fe07f9, 0x59cc0802, 0x4807c857, 0x8c04052e, - 0x05020024, 0x42026000, 0x00111a70, 0x497a6416, - 0x59cc0001, 0x59cc3800, 0x05fdfee8, 0x05020015, - 0x0001fb00, 0x05020013, 0x59cc3800, 0x821c3d00, - 0x00ffffff, 0x05d9fc3b, 0x05fe07e7, 0x4926601d, - 0x051dfe9f, 0x64166407, 0x64226203, 0x4936600a, - 0x60227001, 0x0501f8fc, 0x05c80cab, 0x05fc07de, - 0x42000000, 0x0010e3b9, 0x052dfde2, 0x0009f000, - 0x4803c857, 0x61fe89ff, 0x417a6800, 0x59cc0001, - 0x82000500, 0x00ffffff, 0x4802602a, 0x05fdf7e7, - 0x59cc0001, 0x4803c857, 0x59cc3800, 0x821c3d00, - 0x00ffffff, 0x4c1c0000, 0x05fdfec4, 0x5c003800, - 0x05ca0c95, 0x05fe07c8, 0x05d9fc1a, 0x05ca0c92, - 0x05fe07c5, 0x05f1fb03, 0x05ca0c8f, 0x05fe07c2, - 0x59cc0005, 0x8c000500, 0x05020010, 0x59340200, - 0x8c00050e, 0x05ca0c88, 0x05fe07bb, 0x59a828d0, - 0x82140d00, 0x0000f000, 0x82040580, 0x00003000, - 0x05c80c81, 0x05fc07b4, 0x82040580, 0x00002000, - 0x05c80c7d, 0x05fc07b0, 0x05f5f80b, 0x05020014, - 0x0501f873, 0x05c80c78, 0x05fc07ab, 0x42026000, - 0x00111a70, 0x4926601d, 0x4936600a, 0x497a6416, - 0x051dfe5f, 0x640a6407, 0x64226203, 0x60227001, - 0x0501f8bd, 0x05c80c6c, 0x05fc079f, 0x42000000, - 0x0010e3b9, 0x052dfda3, 0x0009f000, 0x0511f9c8, - 0x05000bfe, 0x05fc0798, 0x4926601d, 0x4936600a, - 0x051dfe4f, 0x64126407, 0x59cc0c04, 0x48066202, - 0x60067000, 0x0501f8ac, 0x000407dc, 0x0009f000, - 0x59cc0802, 0x8c04052e, 0x05020004, 0x0501f84e, - 0x0500000c, 0x0501f007, 0x0501f84d, 0x0500000b, - 0x0501fb6b, 0x05020009, 0x59cc0a04, 0x48066202, - 0x60267001, 0x0501f89c, 0x05000004, 0x0009f000, - 0x0501f81f, 0x05fc07fb, 0x4933c857, 0x42000000, - 0x0010e448, 0x052df57f, 0x59cc0004, 0x4803c857, - 0x59a800b6, 0x90000484, 0x05001011, 0x59cc0802, - 0x8c04052e, 0x05020004, 0x0501f833, 0x0500000c, - 0x0501f007, 0x0501f832, 0x05000009, 0x0501fb50, - 0x05020007, 0x59cc0a04, 0x48066202, 0x602a7001, - 0x0501f881, 0x05000002, 0x0009f000, 0x4933c857, - 0x42000000, 0x0010e448, 0x052df566, 0x4933c857, - 0x59300407, 0x90000585, 0x05020005, 0x59300216, - 0x59cc0a07, 0x80040580, 0x05000019, 0x59cc1407, - 0x41526000, 0x59a80898, 0x59a80099, 0x80040480, - 0x05000013, 0x81300800, 0x41540000, 0x80040480, - 0x0502100f, 0x59300202, 0x80080580, 0x05020007, - 0x5930002a, 0x59cc1001, 0x82081500, 0x00ffffff, - 0x80080580, 0x05000006, 0x91326430, 0x41540000, - 0x81300480, 0x05fc17f4, 0x05c9fb44, 0x4933c857, - 0x1c01f000, 0x59cc0a04, 0x0501f002, 0x59cc0c04, - 0x59a804dd, 0x59a8109a, 0x80080400, 0x80040480, - 0x05021007, 0x800400ca, 0x800408c8, 0x80040c00, - 0x82066400, 0x00111b00, 0x1c01f000, 0x80000580, - 0x05fdf7fe, 0x4803c856, 0x90040507, 0x0c01f001, - 0x001072b4, 0x001072c9, 0x001072de, 0x001072ed, - 0x001072ed, 0x001072ed, 0x001072ed, 0x001072ed, - 0x59cc0802, 0x8c04052e, 0x05000010, 0x05fdffe4, - 0x05000007, 0x59cc0802, 0x90040d30, 0x90040d90, - 0x05000006, 0x61827000, 0x0009f000, 0x42000000, - 0x0010e448, 0x052df51b, 0x59300416, 0x8400055c, - 0x48026416, 0x051df50f, 0x05fdffd3, 0x05fc07f8, - 0x05fdf7f1, 0x59cc0802, 0x8c04052e, 0x05000010, - 0x05fdffcf, 0x05000007, 0x59cc0802, 0x90040d30, - 0x90040d90, 0x05000006, 0x61867000, 0x0009f000, - 0x42000000, 0x0010e448, 0x052df506, 0x59300416, - 0x8400055c, 0x48026416, 0x051df4fa, 0x05fdffbe, - 0x05fc07f8, 0x05fdf7f1, 0x82140500, 0x0000f000, - 0x82000580, 0x00002000, 0x0502000b, 0x59cc0802, - 0x8c04052e, 0x05000008, 0x05fdffb5, 0x05000006, - 0x59300416, 0x8c000510, 0x05000003, 0x618a7000, - 0x0009f000, 0x42000000, 0x0010e448, 0x052dfced, - 0x1c01f000, 0x59a828d0, 0x8c14051a, 0x0500000c, - 0x4803c856, 0x4d300000, 0x5930100a, 0x4c080000, - 0x0511f90b, 0x5c001000, 0x05000003, 0x59cc2a04, - 0x0501f910, 0x5c026000, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x4803c856, 0x4c0c0000, 0x4d340000, - 0x59cc0006, 0x82000500, 0xffff0000, 0x82000580, - 0x01000000, 0x05000028, 0x5932680a, 0x59a81a49, - 0x05f5fda2, 0x05020024, 0x813669c0, 0x0500001b, - 0x83340580, 0x00110210, 0x05000018, 0x59340403, - 0x82000580, 0x000007fe, 0x05020014, 0x59cc0408, - 0x8c000518, 0x05000018, 0x5930001d, 0x82000580, - 0x0010e512, 0x05020014, 0x59a804cc, 0x8c00050a, + 0x80184580, 0x05020020, 0x50600000, 0x82004500, + 0xe0000000, 0x82204580, 0x80000000, 0x05020004, + 0x82000540, 0xa0000000, 0x4400c000, 0x4d200000, + 0x4c080000, 0x4c180000, 0x05d9f9da, 0x5c003000, + 0x5c001000, 0x58640813, 0x80040130, 0x81200580, + 0x0502000c, 0x82040500, 0x00ffffff, 0x59240805, + 0x80040580, 0x05000004, 0x812000f0, 0x80040d40, + 0x4804c813, 0x5c024000, 0x405e8800, 0x0501f017, + 0x5c024000, 0x805cb800, 0x8060c000, 0x825c4580, + 0x000007f0, 0x05020008, 0x59a800ad, 0x82000580, + 0x00000800, 0x05000006, 0x6000b810, 0x4200c000, + 0x0010e380, 0x8058b040, 0x05fe0795, 0x800811c0, + 0x05020005, 0x481bc857, 0x481fc857, 0x90000541, + 0x0501f003, 0x840a8d1e, 0x80000580, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c00b000, 0x1c01f000, + 0x59a8024c, 0x8c00050e, 0x05000003, 0x8c000502, + 0x05000009, 0x59cc0003, 0x82000500, 0x00ff0000, + 0x05020005, 0x59cc0c00, 0x80040910, 0x9004050f, + 0x0c01f004, 0x42000000, 0x001123ee, 0x0531f230, + 0x00107538, 0x00107538, 0x00107538, 0x0010786f, + 0x00107538, 0x0010753c, 0x00107563, 0x00107569, + 0x00107538, 0x00107538, 0x00107538, 0x00107538, + 0x00107538, 0x00107538, 0x00107538, 0x00107538, + 0x4803c856, 0x42000000, 0x001123ee, 0x0531f21c, + 0x0501f94d, 0x05000021, 0x59a800bb, 0x9000048c, + 0x0500101e, 0x59300407, 0x90000583, 0x0502001b, + 0x59cc0001, 0x5932680a, 0x813669c0, 0x05000017, + 0x59340802, 0x80040580, 0x82000500, 0x00ffffff, + 0x05020012, 0x0501fca8, 0x05020010, 0x59cc0a04, + 0x59300202, 0x82001580, 0x0000ffff, 0x05000003, + 0x80040580, 0x05020009, 0x48066202, 0x59300416, + 0x8c00051a, 0x05020005, 0x611a7000, 0x0501f987, + 0x05000002, 0x0009f039, 0x59cc0004, 0x4803c857, + 0x42000000, 0x001123ed, 0x0531f1f5, 0x59cc0004, + 0x4803c857, 0x42000000, 0x001123ed, 0x0531f9f0, + 0x1c01f000, 0x0501f920, 0x0500001d, 0x59a800bb, + 0x9000048c, 0x0500101a, 0x59300407, 0x90000583, + 0x05020017, 0x59cc0001, 0x82000500, 0x00ffffff, + 0x5932680a, 0x813669c0, 0x05000011, 0x59340802, + 0x82040d00, 0x00ffffff, 0x80040580, 0x0502000c, + 0x0501fc79, 0x0502000a, 0x59cc0a04, 0x48066202, + 0x59300416, 0x8c00051a, 0x05020005, 0x61167000, + 0x0501f95e, 0x05000002, 0x0009f039, 0x59cc0004, + 0x4803c857, 0x42000000, 0x001123ed, 0x0531f1cc, + 0x59cc0004, 0x4803c857, 0x59cc0000, 0x82000500, + 0xff000000, 0x59cc1001, 0x82081500, 0x00ffffff, + 0x80080540, 0x4803c857, 0x4817c857, 0x0501fc35, + 0x05ca0938, 0x05020011, 0x05d5ff02, 0x05ca0935, + 0x0502000e, 0x59cc0002, 0x82000500, 0xff000000, + 0x90000580, 0x05000004, 0x0501fcb7, 0x050002f3, + 0x0501f006, 0x9004050f, 0x90000c86, 0x05ca1929, + 0x05021002, 0x0c01f005, 0x4803c856, 0x42000000, + 0x001123ee, 0x0531f1aa, 0x001075b4, 0x001075b8, + 0x001075b4, 0x001075b4, 0x00107636, 0x0010764c, + 0x4803c856, 0x42000000, 0x001123ee, 0x0531f1a0, + 0x59a800bb, 0x800001c0, 0x05ca0916, 0x05fe07f9, + 0x59cc0802, 0x4807c857, 0x8c04052e, 0x05020024, + 0x42026000, 0x00115a14, 0x497a6416, 0x59cc0001, + 0x59cc3800, 0x05fdfeb5, 0x05020015, 0x0001fb08, + 0x05020013, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x05d9f8f8, 0x05fe07e7, 0x4926601d, 0x0521f858, + 0x64166407, 0x64226203, 0x4936600a, 0x60227001, + 0x0501f90e, 0x05c808fb, 0x05fc07de, 0x42000000, + 0x0011235a, 0x0531f97e, 0x0009f039, 0x4803c857, + 0x61fe89ff, 0x417a6800, 0x59cc0001, 0x82000500, + 0x00ffffff, 0x4802602a, 0x05fdf7e7, 0x59cc0001, + 0x4803c857, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x4c1c0000, 0x05fdfe91, 0x5c003800, 0x05ca08e5, + 0x05fe07c8, 0x05d9f8d7, 0x05ca08e2, 0x05fe07c5, + 0x05e9ff4d, 0x05000007, 0x0001fb08, 0x05000008, + 0x05f5fa8b, 0x42026800, 0x001141b4, 0x0501f004, + 0x05f1f937, 0x05ca08d7, 0x05fe07ba, 0x59cc0005, + 0x8c000500, 0x05020010, 0x59340200, 0x8c00050e, + 0x05ca08d0, 0x05fe07b3, 0x59a828d5, 0x82140d00, + 0x0000f000, 0x82040580, 0x00003000, 0x05c808c9, + 0x05fc07ac, 0x82040580, 0x00002000, 0x05c808c5, + 0x05fc07a8, 0x05f1feed, 0x05020014, 0x0501f87a, + 0x05c808c0, 0x05fc07a3, 0x42026000, 0x00115a14, + 0x4926601d, 0x4936600a, 0x497a6416, 0x0521f810, + 0x640a6407, 0x64226203, 0x60227001, 0x0501f8c7, + 0x05c808b4, 0x05fc0797, 0x42000000, 0x0011235a, + 0x0531f937, 0x0009f039, 0x0511faf6, 0x05000c31, + 0x05fc0790, 0x4926601d, 0x4936600a, 0x0521f800, + 0x64126407, 0x59cc0c04, 0x48066202, 0x60067000, + 0x0501f8b6, 0x00080010, 0x83340580, 0x001141b4, + 0x000a0039, 0x59cc0001, 0x82000500, 0x00ffffff, + 0x4802602a, 0x0009f039, 0x59cc0802, 0x8c04052e, + 0x05020004, 0x0501f84e, 0x0500000c, 0x0501f007, + 0x0501f84d, 0x0500000b, 0x0501fb97, 0x05020009, + 0x59cc0a04, 0x48066202, 0x60267001, 0x0501f89f, + 0x05000004, 0x0009f039, 0x0501f81f, 0x05fc07fb, + 0x4933c857, 0x42000000, 0x001123ec, 0x0531f10c, + 0x59cc0004, 0x4803c857, 0x59a800bb, 0x90000484, + 0x05001011, 0x59cc0802, 0x8c04052e, 0x05020004, + 0x0501f833, 0x0500000c, 0x0501f007, 0x0501f832, + 0x05000009, 0x0501fb7c, 0x05020007, 0x59cc0a04, + 0x48066202, 0x602a7001, 0x0501f884, 0x05000002, + 0x0009f039, 0x4933c857, 0x42000000, 0x001123ec, + 0x0531f0f3, 0x4933c857, 0x59300407, 0x90000585, + 0x05020005, 0x59300216, 0x59cc0a07, 0x80040580, + 0x05000019, 0x59cc1407, 0x41526000, 0x59a8089b, + 0x59a8009c, 0x80040480, 0x05000013, 0x81300800, + 0x41540000, 0x80040480, 0x0502100f, 0x59300202, + 0x80080580, 0x05020007, 0x5930002a, 0x59cc1001, + 0x82081500, 0x00ffffff, 0x80080580, 0x05000006, + 0x91326430, 0x41540000, 0x81300480, 0x05fc17f4, + 0x05c5ff91, 0x4933c857, 0x1c01f000, 0x59cc0a04, + 0x0501f002, 0x59cc0c04, 0x0531fa24, 0x59a8003d, + 0x05000002, 0x59a804e2, 0x59a8109d, 0x80080400, + 0x80040480, 0x05021007, 0x800400ca, 0x800408c8, + 0x80040c00, 0x82066400, 0x00115aa4, 0x1c01f000, + 0x80000580, 0x05fdf7fe, 0x4803c856, 0x90040507, + 0x0c01f001, 0x001076a5, 0x001076ba, 0x001076cf, + 0x001076de, 0x001076de, 0x001076de, 0x001076de, + 0x001076de, 0x59cc0802, 0x8c04052e, 0x05000010, + 0x05fdffe1, 0x05000007, 0x59cc0802, 0x90040d30, + 0x90040d90, 0x05000006, 0x61827000, 0x0009f039, + 0x42000000, 0x001123ec, 0x0531f0a5, 0x59300416, + 0x8400055c, 0x48026416, 0x051df6b6, 0x05fdffd0, + 0x05fc07f8, 0x05fdf7f1, 0x59cc0802, 0x8c04052e, + 0x05000010, 0x05fdffcc, 0x05000007, 0x59cc0802, + 0x90040d30, 0x90040d90, 0x05000006, 0x61867000, + 0x0009f039, 0x42000000, 0x001123ec, 0x0531f090, + 0x59300416, 0x8400055c, 0x48026416, 0x051df6a1, + 0x05fdffbb, 0x05fc07f8, 0x05fdf7f1, 0x82140500, + 0x0000f000, 0x82000580, 0x00002000, 0x0502000b, + 0x59cc0802, 0x8c04052e, 0x05000008, 0x05fdffb2, + 0x05000006, 0x59300416, 0x8c000510, 0x05000003, + 0x618a7000, 0x0009f039, 0x42000000, 0x001123ec, + 0x0531f877, 0x1c01f000, 0x59a828d5, 0x8c14051a, + 0x0500000c, 0x4803c856, 0x4d300000, 0x5930100a, + 0x4c080000, 0x0511fa2f, 0x5c001000, 0x05000003, + 0x59cc2a04, 0x0501f90f, 0x5c026000, 0x1c01f000, + 0x90000541, 0x1c01f000, 0x4803c856, 0x4c0c0000, + 0x4d340000, 0x59cc0006, 0x82000500, 0xffff0000, + 0x82000580, 0x01000000, 0x05000027, 0x5932680a, + 0x59a81a4c, 0x05f5fc9b, 0x05020023, 0x813669c0, + 0x0500001a, 0x83340580, 0x001141b4, 0x05000017, + 0x59340403, 0x82000580, 0x000007fe, 0x05020013, + 0x59cc0408, 0x8c000518, 0x05000017, 0x59300403, + 0x90000582, 0x05020014, 0x59a804d1, 0x8c00050a, 0x05020011, 0x59cc0207, 0x80000540, 0x05020002, - 0x60040000, 0x48038893, 0x48035040, 0x84000560, + 0x60040000, 0x48038893, 0x48035043, 0x84000560, 0x480388b3, 0x0501f008, 0x59300403, 0x90000582, 0x05000003, 0x91380597, 0x05020003, 0x8c0c0508, 0x05fe07f1, 0x5c026800, 0x5c001800, 0x1c01f000, - 0x59a828d0, 0x8c14051a, 0x05000018, 0x4803c856, - 0x4d300000, 0x4c5c0000, 0x4130b800, 0x0511f8c8, + 0x59a828d5, 0x8c14051a, 0x05000018, 0x4803c856, + 0x4d300000, 0x4c5c0000, 0x4130b800, 0x0511f9ed, 0x0500000f, 0x485e602a, 0x585c0407, 0x90000581, - 0x05020008, 0x4d300000, 0x405e6000, 0x051dfc86, + 0x05020008, 0x4d300000, 0x405e6000, 0x051dfe2e, 0x5c026000, 0x05000003, 0x4a026416, 0x00000080, 0x585c100a, 0x59cc2a04, 0x0501f8c2, 0x5c00b800, 0x5c026000, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x59a828d0, 0x8c14051a, 0x05000011, 0x4803c856, + 0x59a828d5, 0x8c14051a, 0x05000011, 0x4803c856, 0x4d300000, 0x4c5c0000, 0x4130b800, 0x4a026416, - 0x00000100, 0x0511f8aa, 0x05000006, 0x485e602a, + 0x00000100, 0x0511f9cf, 0x05000006, 0x485e602a, 0x585c2c02, 0x585c100a, 0x405c2000, 0x0501f8b1, 0x5c00b800, 0x5c026000, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x59a828d0, 0x8c14051a, 0x05000017, + 0x1c01f000, 0x59a828d5, 0x8c14051a, 0x05000017, 0x4803c856, 0x4d300000, 0x4c5c0000, 0x4130b800, - 0x4a026416, 0x00000100, 0x0511f895, 0x05000acb, - 0x0500000b, 0x493a6403, 0x485e602a, 0x051dfc56, + 0x4a026416, 0x00000100, 0x0511f9ba, 0x05000af5, + 0x0500000b, 0x493a6403, 0x485e602a, 0x051dfdfe, 0x05000003, 0x4a026416, 0x00000080, 0x585c2c02, 0x585c100a, 0x405c2000, 0x0501f896, 0x5c00b800, 0x5c026000, 0x1c01f000, 0x90000541, 0x1c01f000, 0x4803c856, 0x4c600000, 0x4c640000, 0x4c5c0000, - 0x4d200000, 0x4d240000, 0x4200c000, 0x00110202, + 0x4d200000, 0x4d240000, 0x4200c000, 0x001141a6, 0x5930c80a, 0x8064c9c0, 0x05020015, 0x58603800, - 0x821c3d00, 0x00ffffff, 0x4c1c0000, 0x05d9fa99, + 0x821c3d00, 0x00ffffff, 0x4c1c0000, 0x05d5ff45, 0x5c003800, 0x05020064, 0x4d340000, 0x58600001, - 0x82000500, 0x00ffffff, 0x0501f9f2, 0x05ca0a43, - 0x4936600a, 0x59341200, 0x5c026800, 0x0501fa25, + 0x82000500, 0x00ffffff, 0x0501f9f2, 0x05c60e8e, + 0x4936600a, 0x59341200, 0x5c026800, 0x0501fa4f, 0x4a026416, 0x00000100, 0x65126403, 0x58601006, 0x82081500, 0x0000f000, 0x82080480, 0x00002000, 0x05001058, 0x42002000, 0xc0000000, 0x5930100a, @@ -7442,7 +7694,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x0500000d, 0x82140580, 0x00002000, 0x05000047, 0x8064c9c0, 0x05000004, 0x58600402, 0x8c000526, 0x05000040, 0x42002000, 0xc1000000, 0x41783000, - 0x0501f002, 0x60043000, 0x4130b800, 0x0511f840, + 0x0501f002, 0x60043000, 0x4130b800, 0x0511f965, 0x05000031, 0x58601804, 0x8064c9c0, 0x05020006, 0x65126403, 0x585c0402, 0x820c1d00, 0xffff0000, 0x800c1d40, 0x58600000, 0x58600801, 0x58601003, @@ -7453,7 +7705,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x80040540, 0x90000561, 0x48026018, 0x585c0416, 0x58600802, 0x585c1407, 0x8c00051c, 0x05020023, 0x48026416, 0x4806601b, 0x480a6407, 0x643e6203, - 0x640e6006, 0x4c100000, 0x050dfd7d, 0x0505fc73, + 0x640e6006, 0x4c100000, 0x050dfe77, 0x0505fd3c, 0x5c002000, 0x82100580, 0xc2000000, 0x05000015, 0x90000541, 0x405e6000, 0x5c024800, 0x5c024000, 0x5c00b800, 0x5c00c800, 0x5c00c000, 0x1c01f000, @@ -7464,7 +7716,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x4803c856, 0x41782000, 0x0501f805, 0x1c01f000, 0x4803c856, 0x0501f802, 0x1c01f000, 0x4813c857, 0x59300416, 0x84000550, 0x48026416, 0x4816621d, - 0x480a600a, 0x82080580, 0x00110210, 0x05020002, + 0x480a600a, 0x82080580, 0x001141b4, 0x05020002, 0x41781000, 0x493a6403, 0x643e6203, 0x59cc0000, 0x82000500, 0x00ffffff, 0x48026019, 0x82000500, 0x000000ff, 0x800000e0, 0x59cc0801, 0x82040d00, @@ -7472,8 +7724,8 @@ static const uint32_t isp_2500_risc_code[] = { 0x800811c0, 0x0500000a, 0x58080a12, 0x0501f002, 0x800408d0, 0x80040540, 0x90000561, 0x4803c857, 0x4807c857, 0x48026018, 0x0501f00e, 0x4c000000, - 0x4c040000, 0x05f5fc75, 0x5c000800, 0x5c000000, - 0x05000007, 0x59a81a49, 0x8c0c0506, 0x05fc07f1, + 0x4c040000, 0x05f5fb6f, 0x5c000800, 0x5c000000, + 0x05000007, 0x59a81a4c, 0x8c0c0506, 0x05fc07f1, 0x90000561, 0x48026018, 0x0501f002, 0x64866018, 0x59cc0404, 0x4802641d, 0x59cc0002, 0x4802601b, 0x59cc0403, 0x4802641c, 0x59cc0203, 0x4802621c, @@ -7483,39 +7735,39 @@ static const uint32_t isp_2500_risc_code[] = { 0x8c000504, 0x0502001c, 0x42002800, 0xc1000000, 0x801021c0, 0x05000002, 0x64082008, 0x40142000, 0x41783000, 0x0501f003, 0x40142000, 0x60043000, - 0x050dfd07, 0x0505fbfd, 0x90000541, 0x1c01f000, + 0x050dfe01, 0x0505fcc6, 0x90000541, 0x1c01f000, 0x42002000, 0xc2000000, 0x42003000, 0x02120000, 0x0501f005, 0x42002000, 0xc2000000, 0x42003000, - 0x01050000, 0x050dfcfa, 0x0505fbf0, 0x80000580, + 0x01050000, 0x050dfdf4, 0x0505fcb9, 0x80000580, 0x05fdf7f3, 0x59cc1002, 0x82081500, 0x00003000, 0x82080580, 0x00001000, 0x05fc07e8, 0x82080580, 0x00002000, 0x05fc07eb, 0x05fdf7dc, 0x59cc0802, - 0x8c04052e, 0x0502001d, 0x05fdfe17, 0x0500001b, + 0x8c04052e, 0x0502001d, 0x05fdfe15, 0x0500001b, 0x59300407, 0x90000586, 0x05020018, 0x59cc0001, 0x82000500, 0x00ffffff, 0x5932680a, 0x813669c0, 0x05000012, 0x59340802, 0x82040d00, 0x00ffffff, - 0x80040580, 0x0502000d, 0x0501f949, 0x0502000b, - 0x59a800b6, 0x800001c0, 0x05020008, 0x61467000, + 0x80040580, 0x0502000d, 0x0501f973, 0x0502000b, + 0x59a800bb, 0x800001c0, 0x05020008, 0x61467000, 0x59300416, 0x8c00051a, 0x05020004, 0x05fdfeb5, - 0x05000002, 0x0009f000, 0x59cc0004, 0x4803c857, - 0x42000000, 0x0010e449, 0x052df33a, 0x4803c856, + 0x05000002, 0x0009f039, 0x59cc0004, 0x4803c857, + 0x42000000, 0x001123ed, 0x052df6c5, 0x4803c856, 0x60143002, 0x0501f004, 0x601c3004, 0x0501f802, 0x1c01f000, 0x481bc857, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x41ccc800, 0x4014b800, 0x4018c000, 0x0501f805, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c580000, 0x58640400, 0x82000500, 0x0000f000, 0x82000580, 0x0000c000, - 0x05000024, 0x050dff46, 0x05000025, 0x58640001, + 0x05000024, 0x0511f86b, 0x05000025, 0x58640001, 0x58643800, 0x821c3d00, 0x00ffffff, 0x4c1c0000, - 0x05fdfc0a, 0x5c003800, 0x0502001c, 0x05d9f961, - 0x0502001a, 0x05f1f84b, 0x05020018, 0x4936600a, - 0x051dfbc3, 0x05c9fcb5, 0x05000014, 0x4926601d, + 0x05fdfbc6, 0x5c003800, 0x0502001c, 0x05d5fe0d, + 0x0502001a, 0x05edfe76, 0x05020018, 0x4936600a, + 0x051dfd6b, 0x05c9f8fc, 0x05000014, 0x4926601d, 0x492e6019, 0x497a5800, 0x497a5a08, 0x485e5c08, - 0x912cac09, 0x601cb000, 0x4064a000, 0x052dfbd0, - 0x42000000, 0x0010e3b7, 0x052dfb02, 0x4862641c, - 0x64fa6403, 0x64066407, 0x64066203, 0x0505fb92, - 0x5c00b000, 0x1c01f000, 0x0005ffdc, 0x42000000, - 0x0010e448, 0x052dfaf7, 0x05fdf7fa, 0x4803c856, + 0x912cac09, 0x601cb000, 0x4064a000, 0x052dff5b, + 0x42000000, 0x00112358, 0x052dfe8d, 0x4862641c, + 0x64fa6403, 0x64066407, 0x64066203, 0x0505fc5b, + 0x5c00b000, 0x1c01f000, 0x0009f810, 0x42000000, + 0x001123ec, 0x052dfe82, 0x05fdf7fa, 0x4803c856, 0x59cc0000, 0x82000d00, 0x00ffffff, 0x82040580, 0x00fffff0, 0x05000075, 0x59cc0400, 0x82000d00, 0x0000ff00, 0x82040500, 0x0000f000, 0x840409c0, @@ -7525,35 +7777,35 @@ static const uint32_t isp_2500_risc_code[] = { 0x82000500, 0xffff0000, 0x82000d80, 0x04000000, 0x0500005e, 0x82000d80, 0x60000000, 0x0500005b, 0x82000d80, 0x54000000, 0x05000058, 0x82000d80, - 0x03000000, 0x0502001e, 0x59a80a49, 0x8c040508, + 0x03000000, 0x0502001e, 0x59a80a4c, 0x8c040508, 0x05020052, 0x8c040502, 0x05020060, 0x82000d80, 0x03000000, 0x05020008, 0x82140d00, 0x0000f000, - 0x82040d80, 0x00003000, 0x05020003, 0x05f5fb93, - 0x05000046, 0x05f1fbbb, 0x05000046, 0x59a80046, - 0x800000d0, 0x59a8083d, 0x82040d00, 0x000000ff, + 0x82040d80, 0x00003000, 0x05020003, 0x05f5fa8d, + 0x05000046, 0x05f1fa3d, 0x05000046, 0x59a80049, + 0x800000d0, 0x59a80840, 0x82040d00, 0x000000ff, 0x80040540, 0x59cc0800, 0x82040d00, 0x00ffffff, 0x80040580, 0x05020037, 0x0501f038, 0x59c40802, 0x8c04050c, 0x0502001e, 0x82000d80, 0x52000000, 0x05fc07ed, 0x82000d80, 0x05000000, 0x05fc07ea, 0x82000d80, 0x50000000, 0x05fc07e7, 0x0501f029, - 0x900405a3, 0x05020027, 0x05fdfd61, 0x05000025, + 0x900405a3, 0x05020027, 0x05fdfd5f, 0x05000025, 0x59300c03, 0x90040582, 0x05000024, 0xb0040591, - 0x05000022, 0x0501f00a, 0x05fdfd59, 0x0500001d, + 0x05000022, 0x0501f00a, 0x05fdfd57, 0x0500001d, 0x59300403, 0x90000582, 0x0502001a, 0x59300203, - 0x9000058e, 0x05020017, 0x0501f018, 0x59a80249, - 0x8c000514, 0x05fc07f5, 0x4c580000, 0x052dfba5, + 0x9000058e, 0x05020017, 0x0501f018, 0x59a8024c, + 0x8c000514, 0x05fc07f5, 0x4c580000, 0x052dff30, 0xb0582481, 0x5c00b000, 0x0500100e, 0x59cc0800, - 0x82040d00, 0x00ffffff, 0x42001000, 0x0010e852, + 0x82040d00, 0x00ffffff, 0x42001000, 0x001127f6, 0x58080005, 0x80040580, 0x05000008, 0x801021c0, 0x05000004, 0x80102040, 0x9008140d, 0x05fdf7f9, 0x80000580, 0x0501f002, 0x90000541, 0x1c01f000, 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80, 0x03000000, 0x05000004, 0x82000d80, 0x52000000, - 0x05fe07f4, 0x59a80249, 0x90000509, 0x90000588, - 0x05fc07f2, 0x05fdf7ef, 0x59a828d0, 0x82140500, + 0x05fe07f4, 0x59a8024c, 0x90000509, 0x90000588, + 0x05fc07f2, 0x05fdf7ef, 0x59a828d5, 0x82140500, 0x0000f000, 0x82000580, 0x00003000, 0x05fe07eb, - 0x05f5fb36, 0x05fe07e9, 0x59a80046, 0x800000d0, - 0x59a8083d, 0x82040d00, 0x000000ff, 0x80040540, + 0x05f5fa30, 0x05fe07e9, 0x59a80049, 0x800000d0, + 0x59a80840, 0x82040d00, 0x000000ff, 0x80040540, 0x59cc0800, 0x82040d00, 0x00ffffff, 0x80040580, 0x05fc07de, 0x60043002, 0x05fdff23, 0x05fdf7d9, 0x4803c857, 0x4c580000, 0x40003000, 0x61c0200f, @@ -7561,253 +7813,305 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000013, 0x59340002, 0x82000500, 0x00ffffff, 0x80180580, 0x0502000e, 0x59341013, 0x80080130, 0x81200580, 0x0502000a, 0x82080500, 0x00ffffff, - 0x59240805, 0x80040580, 0x05000011, 0x812000f0, - 0x80040d40, 0x48066813, 0x0501f00d, 0x80102000, + 0x59240805, 0x80040580, 0x0500003b, 0x812000f0, + 0x80040d40, 0x48066813, 0x0501f037, 0x80102000, 0x80387000, 0x8058b040, 0x05fe07e8, 0x82100480, - 0x00000800, 0x60002000, 0x61c0b00f, 0x41ac7000, - 0x05fe17e2, 0x90000541, 0x0501f002, 0x40128800, - 0x5c00b000, 0x1c01f000, 0x59a80249, 0x8c00050e, - 0x05000004, 0x8c000502, 0x05000003, 0x80000580, - 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x59300c07, - 0x90040582, 0x05000002, 0x90040585, 0x1c01f000, - 0x60080800, 0x8c080508, 0x05000007, 0x8c08050c, - 0x05000004, 0x8c080504, 0x05020004, 0x90040d44, - 0x48066008, 0x1c01f000, 0x42001800, 0x00110202, - 0x580c1202, 0x82081500, 0x00003000, 0x82080580, - 0x00001000, 0x05fc07f7, 0x82080580, 0x00002000, - 0x05fc07f5, 0x05fdf7f2, 0x59c80000, 0x84000558, - 0x84000512, 0x48039000, 0x1c01f000, 0x59cc0800, - 0x59340013, 0x82000500, 0x00ffffff, 0x80040580, - 0x82000500, 0x00ffffff, 0x0502000b, 0x59a808d0, - 0x8c040516, 0x05000008, 0x42000800, 0x001102fe, - 0x50040800, 0x59340014, 0x80040580, 0x82000500, - 0x00001fff, 0x1c01f000, 0x82140500, 0x0000f000, - 0x05000006, 0x82000c80, 0x00004000, 0x0502100a, - 0x80000580, 0x1c01f000, 0x59cc0400, 0x82000500, - 0x0000ff00, 0x82000580, 0x00008100, 0x05fc07fa, - 0x0501f012, 0x4817c857, 0x82140500, 0x000003ff, - 0x05020007, 0x59cc0400, 0x82000500, 0x0000ff00, - 0x82000580, 0x00008100, 0x05020008, 0x42000000, - 0x0010e4ae, 0x052df9d3, 0x05fdfe99, 0x4803c856, - 0x90000541, 0x05fdf7e8, 0x41780000, 0x05fdf7e6, - 0x05f5fa9e, 0x0500000e, 0x59c400a4, 0x4803c857, - 0x9000050f, 0x9000058a, 0x05020009, 0x497b50b6, - 0x59c400a3, 0x82000540, 0x00080000, 0x480388a3, - 0x82000500, 0xfff7ffff, 0x480388a3, 0x4c140000, - 0x05e9faf6, 0x05020016, 0x916c0583, 0x05000014, - 0x42000000, 0x0010e4c0, 0x052df9b9, 0x59c40006, - 0x84000500, 0x48038806, 0x0509fa2b, 0x497b8880, - 0x59c400a3, 0x82000500, 0xfcf8ffff, 0x480388a3, - 0x6012d800, 0x64078805, 0x05c9f9cc, 0x05d1fed9, - 0x497b5068, 0x64075075, 0x05d5fb17, 0x5c002800, - 0x4817c856, 0x052df0e9, 0x42000000, 0x0010e3b8, - 0x052df9a0, 0x80000580, 0x1c01f000, 0x82140500, - 0x0000f000, 0x82006d80, 0x00003000, 0x05000003, - 0x82006d80, 0x00005000, 0x1c01f000, 0x4a032824, - 0x000003e8, 0x4a032802, 0x00111b00, 0x64032800, - 0x4a032808, 0x001089a9, 0x60140000, 0x91947c09, - 0x49787801, 0x4a007804, 0x00108954, 0x903c7c05, - 0x80000040, 0x05fe07fb, 0x4a032823, 0xffff0000, - 0x497b2832, 0x4a032833, 0x00103e7f, 0x0501fb54, - 0x6191d000, 0x0501f9c2, 0x4201d000, 0x000186a0, - 0x0501f1cf, 0x00000000, 0x00000005, 0x0000000a, - 0x0000000f, 0x00000014, 0x00000002, 0x00000008, - 0x00000020, 0x00000080, 0x00000200, 0x4d300000, - 0x4d2c0000, 0x4d340000, 0x4d400000, 0x4cfc0000, - 0x4d380000, 0x4d3c0000, 0x4d440000, 0x4d4c0000, - 0x4d480000, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4d040000, 0x0005fc98, 0x5c020800, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, - 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, - 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x59940004, 0x80000540, 0x05020006, - 0x480b2805, 0x0501f81c, 0x48032804, 0x642b2803, - 0x80000580, 0x1c01f000, 0x59940029, 0x80000540, - 0x0502000b, 0x5994002f, 0x80040400, 0x05c41f43, - 0x5994082e, 0x80040400, 0x05c41f40, 0x48032829, - 0x480b282a, 0x64072828, 0x80000580, 0x1c01f000, - 0x5994002c, 0x80000540, 0x05020006, 0x480b282d, - 0x0501f805, 0x4803282c, 0x642b282b, 0x80000580, - 0x1c01f000, 0x4c0c0000, 0x5994182f, 0x5994002e, - 0x800c0400, 0x05c41f2d, 0x05000004, 0x4c040000, - 0x05c9f967, 0x5c000800, 0x80040400, 0x5c001800, - 0x1c01f000, 0x4c000000, 0x59940005, 0x80080580, - 0x05020003, 0x497b2804, 0x497b2805, 0x5c000000, - 0x1c01f000, 0x4c000000, 0x5994002a, 0x80080580, - 0x05020003, 0x497b2829, 0x497b282a, 0x5c000000, - 0x1c01f000, 0x4c000000, 0x5994002d, 0x80080580, - 0x05020003, 0x497b282c, 0x497b282d, 0x5c000000, - 0x1c01f000, 0x4937c857, 0x48ebc857, 0x59340203, - 0x80e80480, 0x05001002, 0x48ea6a03, 0x1c01f000, - 0x4d440000, 0x60407800, 0x59968801, 0x0001fb00, - 0x0502005e, 0x59341a03, 0x800c1840, 0x05001015, - 0x59940031, 0x800c0480, 0x05000003, 0x48026a03, - 0x05021010, 0x5934000f, 0x497a6a03, 0x80000540, - 0x05000052, 0x5934000b, 0x80001120, 0x82000500, - 0x0000ffff, 0x80080480, 0x05001003, 0x64066a03, - 0x0501f004, 0x4c3c0000, 0x0001fb0d, 0x5c007800, - 0x4d2c0000, 0x41781800, 0x5934000f, 0x80025d40, - 0x05000041, 0x592c0007, 0x80000d40, 0x05000006, - 0x59940031, 0x80040480, 0x48025807, 0x05001007, - 0x05000006, 0x412c1800, 0x592c0000, 0x80025d40, - 0x05000035, 0x05fdf7f4, 0x592c2000, 0x497a5800, - 0x800c19c0, 0x05020009, 0x59340010, 0x812c0580, - 0x05020004, 0x497a680f, 0x497a6810, 0x0501f008, - 0x4812680f, 0x0501f006, 0x48101800, 0x59340010, - 0x812c0580, 0x05020002, 0x480e6810, 0x592c0208, - 0x82000500, 0x000000ff, 0x90000592, 0x05000005, - 0xb00005a0, 0x05000003, 0x90000588, 0x05020003, - 0x642e5a0a, 0x0501f011, 0x4c0c0000, 0x4c100000, - 0x0005f9f3, 0x5c002000, 0x5c001800, 0x4c0c0000, - 0x4c100000, 0x05f9fce3, 0x5c002000, 0x5c001800, - 0x4a025a08, 0x00000103, 0x641a5a0a, 0x497a580d, - 0x4a025c0a, 0x0000ffff, 0x4c0c0000, 0x4c100000, - 0x0001fb82, 0x5c002000, 0x5c001800, 0x40100000, - 0x05fdf7cb, 0x5c025800, 0x81468800, 0x83440480, - 0x00000800, 0x05021007, 0x803c7840, 0x05fe079c, - 0x49472801, 0x5c028800, 0x5c03e000, 0x1c01f000, - 0x640b2800, 0x497b2801, 0x05fdf7fb, 0x60407800, + 0x00000800, 0x60002000, 0x61c0b00f, 0x42007000, + 0x0010db80, 0x05fe17e1, 0x8d0c0538, 0x05000028, + 0x60002010, 0x5900b400, 0x82100400, 0x0010db80, + 0x50000000, 0x80000540, 0x0500001e, 0x82000d00, + 0xe0000000, 0x82026d00, 0x00ffffff, 0x82041d80, + 0x20000000, 0x05000012, 0x82041d80, 0x80000000, + 0x0500000f, 0x82041d80, 0xa0000000, 0x0500000c, + 0x8c04053c, 0x05c40c60, 0x41340000, 0x80180580, + 0x0502000c, 0x4c100000, 0x40128800, 0x05edfe60, + 0x5c002000, 0x0502000a, 0x40366800, 0x59340002, + 0x82000500, 0x00ffffff, 0x80180580, 0x05000006, + 0x80102000, 0x8058b040, 0x05fe07dc, 0x90000541, + 0x0501f002, 0x40128800, 0x5c00b000, 0x1c01f000, + 0x59a8024c, 0x8c00050e, 0x05000004, 0x8c000502, + 0x05000003, 0x80000580, 0x1c01f000, 0x90000541, + 0x05fdf7fe, 0x59300c07, 0x90040582, 0x05000002, + 0x90040585, 0x1c01f000, 0x60080800, 0x8c080508, + 0x05000007, 0x8c08050c, 0x05000004, 0x8c080504, + 0x05020004, 0x90040d44, 0x48066008, 0x1c01f000, + 0x42001800, 0x001141a6, 0x580c1202, 0x82081500, + 0x00003000, 0x82080580, 0x00001000, 0x05fc07f7, + 0x82080580, 0x00002000, 0x05fc07f5, 0x05fdf7f2, + 0x59c80000, 0x84000558, 0x84000512, 0x48039000, + 0x1c01f000, 0x59cc0800, 0x59340013, 0x82000500, + 0x00ffffff, 0x80040580, 0x82000500, 0x00ffffff, + 0x0502000b, 0x59a808d5, 0x8c040516, 0x05000008, + 0x42000800, 0x001142a2, 0x50040800, 0x59340014, + 0x80040580, 0x82000500, 0x00001fff, 0x1c01f000, + 0x82140500, 0x0000f000, 0x05000006, 0x82000c80, + 0x00004000, 0x0502100a, 0x80000580, 0x1c01f000, + 0x59cc0400, 0x82000500, 0x0000ff00, 0x82000580, + 0x00008100, 0x05fc07fa, 0x0501f012, 0x4817c857, + 0x82140500, 0x000003ff, 0x05020007, 0x59cc0400, + 0x82000500, 0x0000ff00, 0x82000580, 0x00008100, + 0x05020008, 0x42000000, 0x00112452, 0x052dfd34, + 0x05fdfe6f, 0x4803c856, 0x90000541, 0x05fdf7e8, + 0x41780000, 0x05fdf7e6, 0x05f5f96e, 0x0500000e, + 0x59c400a4, 0x4803c857, 0x9000050f, 0x9000058a, + 0x05020009, 0x497b50bb, 0x59c400a3, 0x82000540, + 0x00080000, 0x480388a3, 0x82000500, 0xfff7ffff, + 0x480388a3, 0x4c140000, 0x05e9f882, 0x05020016, + 0x916c0583, 0x05000014, 0x42000000, 0x00112464, + 0x052dfd1a, 0x59c40006, 0x84000500, 0x48038806, + 0x0509facf, 0x497b8880, 0x59c400a3, 0x82000500, + 0xfcf8ffff, 0x480388a3, 0x6012d800, 0x64078805, + 0x05c5fde1, 0x05d1fb3f, 0x497b506b, 0x64075078, + 0x05d1ff7d, 0x5c002800, 0x4817c856, 0x052df444, + 0x42000000, 0x00112359, 0x052dfd01, 0x80000580, + 0x1c01f000, 0x82140500, 0x0000f000, 0x82006d80, + 0x00003000, 0x05000003, 0x82006d80, 0x00005000, + 0x1c01f000, 0x4a032824, 0x000003e8, 0x4a032802, + 0x00115aa4, 0x64032800, 0x4a032808, 0x00108e67, + 0x60140000, 0x91947c09, 0x49787801, 0x4a007804, + 0x00108e12, 0x903c7c05, 0x80000040, 0x05fe07fb, + 0x4a032823, 0xffff0000, 0x497b2833, 0x4a032834, + 0x00103ff5, 0x0501fbfa, 0x6191d000, 0x0501fa13, + 0x4201d000, 0x000186a0, 0x0501f220, 0x00000000, + 0x00000005, 0x0000000a, 0x0000000f, 0x00000014, + 0x00000002, 0x00000008, 0x00000020, 0x00000080, + 0x00000200, 0x4d300000, 0x4d2c0000, 0x4d340000, + 0x4d400000, 0x4cfc0000, 0x4d380000, 0x4d3c0000, + 0x4d440000, 0x4d4c0000, 0x4d480000, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4d040000, 0x0005fcce, + 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x5c029000, 0x5c029800, 0x5c028800, 0x5c027800, + 0x5c027000, 0x5c01f800, 0x5c028000, 0x5c026800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x59940004, + 0x80000540, 0x05020006, 0x480b2805, 0x0501f81c, + 0x48032804, 0x642b2803, 0x80000580, 0x1c01f000, + 0x5994002a, 0x80000540, 0x0502000b, 0x59940030, + 0x80040400, 0x05c41b64, 0x5994082f, 0x80040400, + 0x05c41b61, 0x4803282a, 0x480b282b, 0x64072829, + 0x80000580, 0x1c01f000, 0x5994002d, 0x80000540, + 0x05020006, 0x480b282e, 0x0501f805, 0x4803282d, + 0x642b282c, 0x80000580, 0x1c01f000, 0x4c0c0000, + 0x59941830, 0x5994002f, 0x800c0400, 0x05c41b4e, + 0x05000004, 0x4c040000, 0x05c5fd7c, 0x5c000800, + 0x80040400, 0x5c001800, 0x1c01f000, 0x4c000000, + 0x59940005, 0x80080580, 0x05020003, 0x497b2804, + 0x497b2805, 0x5c000000, 0x1c01f000, 0x4c000000, + 0x5994002b, 0x80080580, 0x05020003, 0x497b282a, + 0x497b282b, 0x5c000000, 0x1c01f000, 0x4c000000, + 0x5994002e, 0x80080580, 0x05020003, 0x497b282d, + 0x497b282e, 0x5c000000, 0x1c01f000, 0x4937c857, + 0x48ebc857, 0x59340203, 0x80e80480, 0x05001002, + 0x48ea6a03, 0x1c01f000, 0x4c600000, 0x4c5c0000, + 0x4178b800, 0x4178c000, 0x4d440000, 0x60407800, + 0x59968801, 0x8d0c0538, 0x05000014, 0x83440480, + 0x00000800, 0x05001011, 0x82600400, 0x00111ccc, + 0x45780000, 0x83441c00, 0x0010db80, 0x500e6800, + 0x83340500, 0xe0000000, 0x82000580, 0x20000000, + 0x05020092, 0x400cb800, 0x83366d00, 0x00ffffff, + 0x05020004, 0x05c5fb0c, 0x0001fb08, 0x0502008b, + 0x59341a03, 0x800c1840, 0x05001015, 0x59940032, + 0x800c0480, 0x05000003, 0x48026a03, 0x05021010, + 0x5934000f, 0x497a6a03, 0x80000540, 0x0500007f, + 0x5934000b, 0x80001120, 0x82000500, 0x0000ffff, + 0x80080480, 0x05001003, 0x64066a03, 0x0501f004, + 0x4c3c0000, 0x0001fb33, 0x5c007800, 0x4d2c0000, + 0x41781800, 0x5934000f, 0x80025d40, 0x05000041, + 0x592c0007, 0x80000d40, 0x05000006, 0x59940032, + 0x80040480, 0x48025807, 0x05001007, 0x05000006, + 0x412c1800, 0x592c0000, 0x80025d40, 0x05000035, + 0x05fdf7f4, 0x592c2000, 0x497a5800, 0x800c19c0, + 0x05020009, 0x59340010, 0x812c0580, 0x05020004, + 0x497a680f, 0x497a6810, 0x0501f008, 0x4812680f, + 0x0501f006, 0x48101800, 0x59340010, 0x812c0580, + 0x05020002, 0x480e6810, 0x592c0208, 0x82000500, + 0x000000ff, 0x90000592, 0x05000005, 0xb00005a0, + 0x05000003, 0x90000588, 0x05020003, 0x642e5a0a, + 0x0501f011, 0x4c0c0000, 0x4c100000, 0x0005fa1a, + 0x5c002000, 0x5c001800, 0x4c0c0000, 0x4c100000, + 0x05f9fc38, 0x5c002000, 0x5c001800, 0x4a025a08, + 0x00000103, 0x641a5a0a, 0x497a580d, 0x4a025c0a, + 0x0000ffff, 0x4c0c0000, 0x4c100000, 0x0001fba8, + 0x5c002000, 0x5c001800, 0x40100000, 0x05fdf7cb, + 0x5c025800, 0x805cb9c0, 0x0500002c, 0x59341c15, + 0x800c1840, 0x05001029, 0x59940032, 0x800c0480, + 0x05000003, 0x48026c15, 0x05021024, 0x495fc857, + 0x835c0480, 0x000003e8, 0x0502101f, 0x5934040b, + 0x4803c857, 0x80000540, 0x0502001b, 0x5934000f, + 0x4803c857, 0x80000540, 0x05020017, 0x5934000c, + 0x4803c857, 0x80000540, 0x05020013, 0x59340215, + 0x4803c857, 0x80000540, 0x0502000f, 0x59341c00, + 0x480fc857, 0x820c0580, 0x00000707, 0x05000003, + 0x05f1f962, 0x05020008, 0x4937c857, 0x497a6c15, + 0x82600400, 0x00111ccc, 0x45340000, 0x8060c000, + 0x0501f002, 0x640a6c15, 0x81468800, 0x59a800ad, + 0x81440480, 0x0502100b, 0x803c7840, 0x05fe075a, + 0x49472801, 0x8060c1c0, 0x0502090c, 0x5c00b800, + 0x5c00c000, 0x5c028800, 0x5c03e000, 0x1c01f000, + 0x640b2800, 0x497b2801, 0x05fdf7f7, 0x60407800, 0x59966002, 0x59300205, 0x80000d40, 0x05000014, - 0x59940031, 0x80040480, 0x48026205, 0x4df00000, - 0x4c040000, 0x051df951, 0x5c000800, 0x05000009, + 0x59940032, 0x80040480, 0x48026205, 0x4df00000, + 0x4c040000, 0x051dfa85, 0x5c000800, 0x05000009, 0x59300205, 0x9000048b, 0x05021006, 0x9004048b, - 0x05001004, 0x4c3c0000, 0x051df87e, 0x5c007800, + 0x05001004, 0x4c3c0000, 0x051df9b2, 0x5c007800, 0x5c03e000, 0x05001027, 0x05000026, 0x59300006, 0x80000d40, 0x05000010, 0x4203e000, 0xb0800000, 0x4203f800, 0x0c000000, 0x40000000, 0x40000000, - 0x40000000, 0x0503b008, 0x59940031, 0x80040480, + 0x40000000, 0x0503b008, 0x59940032, 0x80040480, 0x48026006, 0x4203f800, 0x08000000, 0x05001019, 0x05000018, 0x91326430, 0x49332802, 0x41540000, 0x81300480, 0x05021005, 0x803c7840, 0x05fe07d2, - 0x5c03e000, 0x1c01f000, 0x59940030, 0x48032831, - 0x4a032802, 0x00111b00, 0x497b2830, 0x80000540, + 0x5c03e000, 0x1c01f000, 0x59940031, 0x48032832, + 0x4a032802, 0x00115aa4, 0x497b2831, 0x80000540, 0x0500000c, 0x64072800, 0x5c03e000, 0x1c01f000, - 0x4c3c0000, 0x0519ff4d, 0x5c007800, 0x05fdf7d8, - 0x4c3c0000, 0x0519fa13, 0x5c007800, 0x05fdf7e6, - 0x64032800, 0x5c03e000, 0x1c01f000, 0x59a808b5, + 0x4c3c0000, 0x051df882, 0x5c007800, 0x05fdf7d8, + 0x4c3c0000, 0x0519fb29, 0x5c007800, 0x05fdf7e6, + 0x64032800, 0x5c03e000, 0x1c01f000, 0x59a808ba, 0x8c040530, 0x05020025, 0x8c040532, 0x0500000f, - 0x59a8009b, 0x81640480, 0x05001016, 0x59a8000b, - 0x81500580, 0x05000005, 0x59a80099, 0x59a81098, + 0x59a8009e, 0x81640480, 0x05001016, 0x59a8000b, + 0x81500580, 0x05000005, 0x59a8009c, 0x59a8109b, 0x80080580, 0x0502000f, 0x900411c0, 0x82081500, 0x00007000, 0x0501f00f, 0x9004051f, 0x05000013, - 0x80040840, 0x9004051f, 0x05000003, 0x480750b5, + 0x80040840, 0x9004051f, 0x05000003, 0x480750ba, 0x0501f00e, 0x900401c0, 0x9000051f, 0x80040d40, 0x900401c0, 0x80040580, 0x82001500, 0x00007000, - 0x82040500, 0xffff8fff, 0x80080540, 0x480350b5, - 0x80081114, 0x05c9f855, 0x1c01f000, 0x4a032807, + 0x82040500, 0xffff8fff, 0x80080540, 0x480350ba, + 0x80081114, 0x05c5fc20, 0x1c01f000, 0x4a032807, 0x000007d0, 0x642b2806, 0x4a01a8e5, 0x00000c00, - 0x1c01f000, 0x60100800, 0x91180485, 0x05c61e1f, - 0x91947c09, 0x83180400, 0x00107661, 0x50000000, + 0x1c01f000, 0x60100800, 0x91180485, 0x05c619f6, + 0x91947c09, 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x4a007801, 0x000001f4, 0x48047802, - 0x64287800, 0x83180400, 0x00107666, 0x50000000, + 0x64287800, 0x83180400, 0x00107a80, 0x50000000, 0x82000540, 0x00000155, 0x4801a8e5, 0x1c01f000, - 0x91180485, 0x05c61e0d, 0x91947c09, 0x83180400, - 0x00107661, 0x50000000, 0x803c7c00, 0x583c0002, + 0x91180485, 0x05c619e4, 0x91947c09, 0x83180400, + 0x00107a7b, 0x50000000, 0x803c7c00, 0x583c0002, 0x80000040, 0x48007802, 0x05000004, 0x4a007801, 0x000001f4, 0x64287800, 0x1c01f000, 0x91180485, - 0x05c61dfe, 0x91947c09, 0x83180400, 0x00107661, + 0x05c619d5, 0x91947c09, 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x49787801, 0x83180400, - 0x00107666, 0x50000000, 0x4801a8e5, 0x1c01f000, - 0x4807c857, 0x480bc857, 0x480b2805, 0x05fdfebe, + 0x00107a80, 0x50000000, 0x4801a8e5, 0x1c01f000, + 0x4807c857, 0x480bc857, 0x480b2805, 0x05fdfe74, 0x48032804, 0x642b2803, 0x1c01f000, 0x4807c857, - 0x480bc857, 0x480b2827, 0x05fdfeb7, 0x48032826, + 0x480bc857, 0x480b2827, 0x05fdfe6d, 0x48032826, 0x642b2825, 0x1c01f000, 0x4c000000, 0x59940027, 0x80080580, 0x05020003, 0x48032826, 0x48032827, 0x5c000000, 0x1c01f000, 0x4807c857, 0x480bc857, - 0x480b282d, 0x05fdfea8, 0x4803282c, 0x642b282b, - 0x1c01f000, 0x80e9d1c0, 0x05000006, 0x0501f828, - 0x00044e27, 0x05fe57ff, 0x4203e000, 0x80000000, - 0x1c01f000, 0x42001000, 0x00106004, 0x05fdfea6, - 0x42001000, 0x00105ff7, 0x05fdffe4, 0x42001000, - 0x0010510c, 0x05fdfea0, 0x42001000, 0x00105184, - 0x05fdfe9d, 0x42001000, 0x001050eb, 0x05fdfe9a, - 0x42001000, 0x001051ae, 0x05fdf6a7, 0x4203e000, - 0x70000000, 0x4203e000, 0xb0300000, 0x40ebf800, - 0x60f00000, 0x05004004, 0x80000040, 0x05fe07fe, - 0x0501f006, 0x4203e000, 0x70000000, 0x42000000, - 0x0010e46f, 0x0529ffaf, 0x1c01f000, 0x4203e000, - 0x80000000, 0x4203e000, 0xb0400000, 0x40ebf800, - 0x60f00000, 0x05005004, 0x80000040, 0x05fe07fe, - 0x0501f006, 0x4203e000, 0x80000000, 0x42000000, - 0x0010e470, 0x0529ff9f, 0x1c01f000, 0x4c5c0000, - 0x4c640000, 0x59a8b81a, 0x585c0002, 0x82000580, - 0x00000100, 0x60100000, 0x05020067, 0x642f5427, - 0x642f542f, 0x642f5437, 0x60080800, 0x4200c800, - 0x0010dc28, 0x60041800, 0x60002080, 0x60602801, - 0x05e9fa21, 0x0500005c, 0x59a80028, 0xb000053f, + 0x480b282b, 0x05fdfe5e, 0x4803282a, 0x642b2828, + 0x1c01f000, 0x4807c857, 0x480bc857, 0x480b282e, + 0x05fdfe57, 0x4803282d, 0x642b282c, 0x1c01f000, + 0x80e9d1c0, 0x05000006, 0x0501f828, 0x00044e5d, + 0x05fe57ff, 0x4203e000, 0x80000000, 0x1c01f000, + 0x42001000, 0x001062e8, 0x05fdfe55, 0x42001000, + 0x001062db, 0x05fdffdd, 0x42001000, 0x00105303, + 0x05fdfe4f, 0x42001000, 0x0010537b, 0x05fdfe4c, + 0x42001000, 0x001052e2, 0x05fdfe49, 0x42001000, + 0x001053a5, 0x05fdf656, 0x4203e000, 0x70000000, + 0x4203e000, 0xb0300000, 0x40ebf800, 0x60f00000, + 0x05004004, 0x80000040, 0x05fe07fe, 0x0501f006, + 0x4203e000, 0x70000000, 0x42000000, 0x00112413, + 0x052dfabf, 0x1c01f000, 0x4203e000, 0x80000000, + 0x4203e000, 0xb0400000, 0x40ebf800, 0x60f00000, + 0x05005004, 0x80000040, 0x05fe07fe, 0x0501f006, + 0x4203e000, 0x80000000, 0x42000000, 0x00112414, + 0x052dfaaf, 0x1c01f000, 0x4c580000, 0x4d440000, + 0x4d340000, 0x4d300000, 0x4863c856, 0x42026000, + 0x00115aa4, 0x0521fcc5, 0x0502101b, 0x5932680a, + 0x813669c0, 0x05000013, 0x59368c03, 0x83440480, + 0x00000800, 0x0500100f, 0x6000b000, 0x82580c00, + 0x00111ccc, 0x50040000, 0x80000540, 0x05000005, + 0x81340580, 0x05020003, 0x45780800, 0x640a6c15, + 0x8058b000, 0x40600000, 0x80580580, 0x05fe07f4, + 0x91326430, 0x41580000, 0x81300480, 0x05fc17e8, + 0x0501f002, 0x41526000, 0x59a8089b, 0x59a8009c, + 0x80040480, 0x0500001b, 0x81300800, 0x41540000, + 0x80040480, 0x05021017, 0x5932680a, 0x813669c0, + 0x05fc07f6, 0x59368c03, 0x83440480, 0x00000800, + 0x05fc17f2, 0x6000b000, 0x82580c00, 0x00111ccc, + 0x50040000, 0x80000540, 0x05000005, 0x81340580, + 0x05020003, 0x45780800, 0x640a6c15, 0x8058b000, + 0x40600000, 0x80580580, 0x05fe07f4, 0x05fdf7e3, + 0x6000b000, 0x82580c00, 0x00111ccc, 0x50040000, + 0x80026d40, 0x05000005, 0x59368c03, 0x4937c857, + 0x4947c857, 0x0521fa69, 0x8058b000, 0x40600000, + 0x80580580, 0x05fe07f4, 0x5c026000, 0x5c026800, + 0x5c028800, 0x5c00b000, 0x1c01f000, 0x4c5c0000, + 0x4c640000, 0x59a8b81c, 0x585c0002, 0x82000580, + 0x00000100, 0x60100000, 0x05020067, 0x642f5429, + 0x642f5431, 0x642f5439, 0x60080800, 0x4200c800, + 0x00111baa, 0x60041800, 0x60002080, 0x60602801, + 0x05e5ff07, 0x0500005c, 0x59a8002a, 0xb000053f, 0x800001c0, 0x0500000b, 0x90002d1e, 0x05000004, - 0x59a80827, 0x84040d64, 0x48075027, 0xb0002d21, - 0x05000004, 0x59a8002f, 0x84000564, 0x4803502f, - 0x60040800, 0x4200c800, 0x0010dc28, 0x60041800, - 0x60002080, 0x60602801, 0x05e9fa0b, 0x05000046, - 0x59a80029, 0x80000000, 0x48035029, 0x60000800, - 0x4200c800, 0x0010dc30, 0x60041800, 0x60002080, - 0x60602801, 0x05e9fa00, 0x0500003b, 0x59a80031, - 0x80000000, 0x48035031, 0x60080800, 0x4200c800, - 0x0010dc38, 0x60041800, 0x60002080, 0x61602801, - 0x05e9f9f5, 0x05000030, 0x59a80038, 0xb0000521, - 0x800001c0, 0x05000004, 0x59a80037, 0x84000564, - 0x48035037, 0x60000800, 0x4200c800, 0x0010dc38, - 0x60041800, 0x60002080, 0x61602801, 0x05e9f9e6, - 0x05000021, 0x59a80039, 0x80000000, 0x48035039, - 0x600cc800, 0x42000800, 0x0010dc23, 0x42001000, - 0xffffffff, 0x601c2000, 0x05c5ff8c, 0x59a8201f, + 0x59a80829, 0x84040d64, 0x48075029, 0xb0002d21, + 0x05000004, 0x59a80031, 0x84000564, 0x48035031, + 0x60040800, 0x4200c800, 0x00111baa, 0x60041800, + 0x60002080, 0x60602801, 0x05e5fef1, 0x05000046, + 0x59a8002b, 0x80000000, 0x4803502b, 0x60000800, + 0x4200c800, 0x00111bb2, 0x60041800, 0x60002080, + 0x60602801, 0x05e5fee6, 0x0500003b, 0x59a80033, + 0x80000000, 0x48035033, 0x60080800, 0x4200c800, + 0x00111bba, 0x60041800, 0x60002080, 0x61602801, + 0x05e5fedb, 0x05000030, 0x59a8003a, 0xb0000521, + 0x800001c0, 0x05000004, 0x59a80039, 0x84000564, + 0x48035039, 0x60000800, 0x4200c800, 0x00111bba, + 0x60041800, 0x60002080, 0x61602801, 0x05e5fecc, + 0x05000021, 0x59a8003b, 0x80000000, 0x4803503b, + 0x600cc800, 0x42000800, 0x00111ba5, 0x42001000, + 0xffffffff, 0x601c2000, 0x05c5fafb, 0x59a82021, 0x80100400, 0x81780480, 0x44000800, 0x80040800, 0x8064c840, 0x05fe07f6, 0x6400b801, 0x6460b804, - 0x6580b805, 0x4a00b803, 0x0010dc23, 0x59a8001d, - 0x4800b807, 0x59a8001e, 0x4800b808, 0x405c1000, - 0x0001f821, 0x90000541, 0x5c00c800, 0x5c00b800, + 0x6580b805, 0x4a00b803, 0x00111ba5, 0x59a8001f, + 0x4800b807, 0x59a80020, 0x4800b808, 0x405c1000, + 0x0001f829, 0x90000541, 0x5c00c800, 0x5c00b800, 0x1c01f000, 0x4803c857, 0x05fdf7fc, 0x4803c857, - 0x61c01100, 0x40001800, 0x05e5ff2b, 0x1c01f000, + 0x61c01100, 0x40001800, 0x05e5fc08, 0x1c01f000, 0x4833c857, 0x58300002, 0x82000580, 0x00000100, 0x05020002, 0x1c01f000, 0x4a006002, 0x00000100, 0x60140000, 0x05fdfff2, 0x05fdf7fb, 0x4833c857, 0x4c580000, 0x58300002, 0x82000580, 0x00000100, 0x05020007, 0x0501fb33, 0x5830020b, 0x4803c857, - 0x9000349c, 0x05c61d11, 0x0c01f005, 0x4a006002, - 0x00000100, 0x60140000, 0x0501f0d9, 0x001078eb, - 0x001078f6, 0x001078fb, 0x001078fd, 0x001078fe, - 0x0010790b, 0x0010790c, 0x00107924, 0x00107925, - 0x00107929, 0x00107934, 0x00107945, 0x00107963, - 0x00107964, 0x00107965, 0x00107966, 0x0010796b, - 0x0010796f, 0x0010797d, 0x0010797e, 0x0010797f, - 0x00107993, 0x00107998, 0x0010799c, 0x001079a3, - 0x00107952, 0x0010795e, 0x001079a3, 0x6404620b, + 0x9000349c, 0x05c6188c, 0x0c01f005, 0x4a006002, + 0x00000100, 0x60140000, 0x0501f0d9, 0x00107dab, + 0x00107db6, 0x00107dbb, 0x00107dbd, 0x00107dbe, + 0x00107dcb, 0x00107dcc, 0x00107de4, 0x00107de5, + 0x00107de9, 0x00107df4, 0x00107e05, 0x00107e23, + 0x00107e24, 0x00107e25, 0x00107e26, 0x00107e2b, + 0x00107e2f, 0x00107e3d, 0x00107e3e, 0x00107e3f, + 0x00107e53, 0x00107e58, 0x00107e5c, 0x00107e63, + 0x00107e12, 0x00107e1e, 0x00107e63, 0x6404620b, 0x64006001, 0x64c46004, 0x4a006005, 0x000000c4, - 0x4a006003, 0x00107ddd, 0x59a80011, 0xb0000430, + 0x4a006003, 0x00108294, 0x59a80013, 0xb0000430, 0x0501f8b5, 0x0501f0ae, 0x6458620b, 0x40301000, 0x60040000, 0x0501fae2, 0x0501f0a9, 0x0501f996, 0x0501f0a7, 0x0501f0a8, 0x643c620b, 0x64006001, 0x4a006004, 0x000000a8, 0x4a006005, 0x000002a0, - 0x4a006003, 0x00107e0e, 0x59a80011, 0x82000400, + 0x4a006003, 0x001082c5, 0x59a80013, 0x82000400, 0x00000134, 0x0501f8a0, 0x0501f099, 0x0501f09a, 0x0501fb41, 0x05020096, 0x5830040b, 0x8c000512, 0x05020008, 0x8c000510, 0x0502000b, 0x84000552, 0x4800640b, 0x6044b000, 0x0501fafa, 0x0501f08c, - 0x84000512, 0x84000550, 0x4800640b, 0x6088b000, + 0x84000512, 0x84000550, 0x4800640b, 0x606cb000, 0x05fdf7fa, 0x84000510, 0x4800640b, 0x6454620b, 0x40301000, 0x60180000, 0x0501fab9, 0x0501f080, - 0x0501f081, 0x59a8600e, 0x6424620b, 0x0501f9d4, + 0x0501f081, 0x59a86010, 0x6424620b, 0x0501f9d4, 0x0501f07b, 0x6428620b, 0x64006001, 0x64506004, - 0x65406005, 0x4a006003, 0x00107eb8, 0x59a80011, + 0x65406005, 0x4a006003, 0x0010836f, 0x59a80013, 0x82000400, 0x0000042c, 0x0501f877, 0x0501f070, 0x642c620b, 0x64006001, 0x64086004, 0x64206005, 0x42001000, 0x7ff38009, 0x50081000, 0x4808600c, - 0x9030140c, 0x48086003, 0x4a00600d, 0x000090d5, - 0x59a80011, 0x82000400, 0x0000047c, 0x0501f866, + 0x9030140c, 0x48086003, 0x4a00600d, 0x001090d5, + 0x59a80013, 0x82000400, 0x0000047c, 0x0501f866, 0x0501f05f, 0x6464620b, 0x64006001, 0x64046004, - 0x64106005, 0x59a81092, 0x4808600c, 0x9030140c, - 0x48086003, 0x59a80011, 0x82000400, 0x00000430, + 0x64106005, 0x59a81095, 0x4808600c, 0x9030140c, + 0x48086003, 0x59a80013, 0x82000400, 0x00000430, 0x0501f859, 0x0501f052, 0x6468620b, 0x64006001, 0x64046004, 0x64106005, 0x4808600c, 0x9030140c, - 0x48086003, 0x59a80011, 0x82000400, 0x00000470, + 0x48086003, 0x59a80013, 0x82000400, 0x00000470, 0x0501f84d, 0x0501f046, 0x6410620b, 0x40301000, 0x60080000, 0x0501fa7a, 0x0501f041, 0x0501f042, 0x0501f041, 0x0501f040, 0x6440620b, 0x40301000, 0x60100000, 0x0501fa72, 0x0501f039, 0x40301000, 0x60440000, 0x0501fa25, 0x0501f035, 0x5830040b, 0x8c000518, 0x05000005, 0x40301000, 0x60000000, - 0x0501fa3e, 0x0501f02e, 0x6403500f, 0x4a035010, + 0x0501fa3e, 0x0501f02e, 0x64035011, 0x4a035012, 0x000927c0, 0x40301000, 0x606c0000, 0x0501fa37, 0x0501f027, 0x0501f028, 0x0501f027, 0x5830040b, 0x8c00051e, 0x05000008, 0x8c000514, 0x05020003, @@ -7820,64 +8124,64 @@ static const uint32_t isp_2500_risc_code[] = { 0x5830040b, 0x8c000518, 0x05fc075d, 0x40301000, 0x60000000, 0x0501fa11, 0x0501f001, 0x5c00b000, 0x1c01f000, 0x82000400, 0x00000100, 0x05fdff08, - 0x05fdf7fb, 0x48006007, 0x59a80012, 0x90000440, - 0x48006008, 0x40301000, 0x0001f021, 0x4803c856, - 0x05e9f819, 0x050200bd, 0x42001000, 0x7ff38000, + 0x05fdf7fb, 0x48006007, 0x59a80014, 0x90000440, + 0x48006008, 0x40301000, 0x0001f029, 0x4803c856, + 0x05e5fcff, 0x050200bd, 0x42001000, 0x7ff38000, 0x50081000, 0x82081580, 0x4f434453, 0x601c0000, 0x050200b7, 0x42000800, 0x7ff38000, 0x42001000, - 0xffffffff, 0x60402000, 0x05c5fe64, 0x60200000, + 0xffffffff, 0x60402000, 0x05c5f9d3, 0x60200000, 0x050200af, 0x42001000, 0x7ff38006, 0x50081000, 0x480bc857, 0x8c080500, 0x050000a0, 0x59e00802, 0x8c04051e, 0x0502009d, 0x42001000, 0x7ff38002, - 0x50081000, 0x480b501d, 0x42001000, 0x7ff38003, - 0x50081000, 0x480b501e, 0x42001000, 0x7ff38007, - 0x50081000, 0x6040084e, 0x0501fd9c, 0x4807501c, - 0x4807501b, 0x42001000, 0x7ff3800a, 0x50081000, + 0x50081000, 0x480b501f, 0x42001000, 0x7ff38003, + 0x50081000, 0x480b5020, 0x42001000, 0x7ff38007, + 0x50081000, 0x6040084e, 0x0501fd95, 0x4807501e, + 0x4807501d, 0x42001000, 0x7ff3800a, 0x50081000, 0x800800e0, 0x42001000, 0x7ff38009, 0x50081000, - 0x82081500, 0x0000ffff, 0x80080540, 0x4803501f, + 0x82081500, 0x0000ffff, 0x80080540, 0x48035021, 0x42001000, 0x7ff38012, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, 0xffffffff, 0x05020002, - 0x61b81000, 0x480b5025, 0x42001000, 0x7ff3801a, + 0x61b81000, 0x480b5027, 0x42001000, 0x7ff3801a, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, - 0xffffffff, 0x05020002, 0x612c1000, 0x480b502d, + 0xffffffff, 0x05020002, 0x612c1000, 0x480b502f, 0x42001000, 0x7ff38022, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, 0xffffffff, 0x05020002, - 0x612c1000, 0x480b5035, 0x42001000, 0x7ff38013, + 0x612c1000, 0x480b5037, 0x42001000, 0x7ff38013, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, - 0xffffffff, 0x05020002, 0x61a41000, 0x480b5026, + 0xffffffff, 0x05020002, 0x61a41000, 0x480b5028, 0x42001000, 0x7ff3801b, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, 0xffffffff, 0x05020002, - 0x61181000, 0x480b502e, 0x42001000, 0x7ff38023, + 0x61181000, 0x480b5030, 0x42001000, 0x7ff38023, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, - 0xffffffff, 0x05020002, 0x61181000, 0x480b5036, - 0x05e5ff98, 0x60240800, 0x42001000, 0x0010dc28, + 0xffffffff, 0x05020002, 0x61181000, 0x480b5038, + 0x05e5fc7e, 0x60240800, 0x42001000, 0x00111baa, 0x64801000, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffda, 0x05000046, 0x64075023, 0x64075024, - 0x64175227, 0x640f5427, 0x60340800, 0x42001000, - 0x0010dc25, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffce, 0x0500003a, 0x60640800, 0x42001000, - 0x0010dc25, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffc6, 0x05000032, 0x6407502b, 0x641f502c, - 0x6417522f, 0x640f542f, 0x602c0800, 0x42001000, - 0x0010dc2d, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffba, 0x05000026, 0x60800800, 0x42001000, - 0x0010dc2d, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffb2, 0x0500001e, 0x64075033, 0x641f5034, - 0x64175237, 0x640f5437, 0x60140800, 0x42001000, - 0x0010dc35, 0x60041800, 0x60002080, 0x61602801, - 0x05e5ffa6, 0x05000012, 0x60800800, 0x42001000, - 0x0010dc35, 0x60041800, 0x60002080, 0x61602801, - 0x05e5ff9e, 0x0500000a, 0x42001000, 0x7ff38006, + 0x05e5fcc0, 0x05000046, 0x64075025, 0x64075026, + 0x64175229, 0x640f5429, 0x60340800, 0x42001000, + 0x00111ba7, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fcb4, 0x0500003a, 0x60640800, 0x42001000, + 0x00111ba7, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fcac, 0x05000032, 0x6407502d, 0x641f502e, + 0x64175231, 0x640f5431, 0x602c0800, 0x42001000, + 0x00111baf, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fca0, 0x05000026, 0x60800800, 0x42001000, + 0x00111baf, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fc98, 0x0500001e, 0x64075035, 0x641f5036, + 0x64175239, 0x640f5439, 0x60140800, 0x42001000, + 0x00111bb7, 0x60041800, 0x60002080, 0x61602801, + 0x05e5fc8c, 0x05000012, 0x60800800, 0x42001000, + 0x00111bb7, 0x60041800, 0x60002080, 0x61602801, + 0x05e5fc84, 0x0500000a, 0x42001000, 0x7ff38006, 0x50081000, 0x90081503, 0x60240000, 0x05000004, 0x8c080502, 0x05020806, 0x1c01f000, 0x4803c857, - 0x05fdfe3f, 0x497b501c, 0x05fdf7fc, 0x4803c856, - 0x4c5c0000, 0x59a8b80e, 0x497b500f, 0x497b5010, + 0x05fdfe3f, 0x497b501e, 0x05fdf7fc, 0x4803c856, + 0x4c5c0000, 0x59a8b810, 0x497b5011, 0x497b5012, 0x6400ba0b, 0x4978b80b, 0x42001000, 0x7ff38004, - 0x50081000, 0x480b5011, 0x42001000, 0x7ff38005, - 0x50081000, 0x480b5012, 0x6400b801, 0x6430b804, - 0x64c0b805, 0x4a00b803, 0x00107dd1, 0x59a80011, - 0xb0000400, 0x4800b807, 0x59a80012, 0x90000440, - 0x4800b808, 0x405c1000, 0x0001f821, 0x5c00b800, + 0x50081000, 0x480b5013, 0x42001000, 0x7ff38005, + 0x50081000, 0x480b5014, 0x6400b801, 0x6430b804, + 0x64c0b805, 0x4a00b803, 0x00108288, 0x59a80013, + 0xb0000400, 0x4800b807, 0x59a80014, 0x90000440, + 0x4800b808, 0x405c1000, 0x0001f829, 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c580000, 0x4200b800, 0x7ff48000, 0x4178c000, 0x0501f8b7, 0x8258b580, 0x00000082, @@ -7886,23 +8190,23 @@ static const uint32_t isp_2500_risc_code[] = { 0x905804a8, 0x05000004, 0x05001003, 0x60a0b000, 0x0501f003, 0x80000580, 0x6420ca0b, 0x4c000000, 0x8060c000, 0x4c640000, 0x9064cc0e, 0x0501f8c1, - 0x5c00c800, 0x42000000, 0x00107eb6, 0x50000000, - 0x4800c80c, 0x42000000, 0x00107eb7, 0x50000000, + 0x5c00c800, 0x42000000, 0x0010836d, 0x50000000, + 0x4800c80c, 0x42000000, 0x0010836e, 0x50000000, 0x4800c80d, 0x9058b40b, 0x8258b500, 0xfffffffc, 0x6400c801, 0x4858c805, 0x80580104, 0x4800c804, - 0x9064040c, 0x4800c803, 0x59a80011, 0x82000400, - 0x000003d4, 0x4800c807, 0x59a80012, 0x90000440, + 0x9064040c, 0x4800c803, 0x59a80013, 0x82000400, + 0x000003d4, 0x4800c807, 0x59a80014, 0x90000440, 0x4800c808, 0x40641000, 0x4c5c0000, 0x4c600000, - 0x0001f821, 0x5c00c000, 0x5c00b800, 0x5c000000, + 0x0001f829, 0x5c00c000, 0x5c00b800, 0x5c000000, 0x800001c0, 0x05000020, 0x9000ccb4, 0x05001002, - 0x60c00000, 0x4000b000, 0x59a8c80d, 0x4c640000, + 0x60c00000, 0x4000b000, 0x59a8c80f, 0x4c640000, 0x9064cc0c, 0x0501f897, 0x5c00c800, 0x6420ca0b, 0x4858c805, 0x80580104, 0x4800c804, 0x9058b403, 0x8258b500, 0xfffffffc, 0x6400c801, 0x4858c805, 0x80580104, 0x4800c804, 0x9064040c, 0x4800c803, - 0x59a80011, 0x82000400, 0x00000404, 0x4800c807, - 0x59a80012, 0x90000440, 0x4800c808, 0x40641000, - 0x0001f821, 0x90000541, 0x5c00b000, 0x5c00c800, + 0x59a80013, 0x82000400, 0x00000404, 0x4800c807, + 0x59a80014, 0x90000440, 0x4800c808, 0x40641000, + 0x0001f829, 0x90000541, 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c857, 0x05fdfdb7, 0x80000580, 0x05fdf7f8, 0x4803c856, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c580000, @@ -7921,9 +8225,9 @@ static const uint32_t isp_2500_risc_code[] = { 0x4c640000, 0x9064cc0c, 0x0501f83e, 0x5c00c800, 0x9058b403, 0x8258b500, 0xfffffffc, 0x6400c801, 0x4858c805, 0x80580104, 0x4800c804, 0x9064040c, - 0x4800c803, 0x59a80011, 0x82000400, 0x0000041c, - 0x4800c807, 0x59a80012, 0x90000440, 0x4800c808, - 0x40641000, 0x0001f821, 0x90000541, 0x5c00b000, + 0x4800c803, 0x59a80013, 0x82000400, 0x0000041c, + 0x4800c807, 0x59a80014, 0x90000440, 0x4800c808, + 0x40641000, 0x0001f829, 0x90000541, 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c857, 0x05fdfd62, 0x80000580, 0x05fdf7f8, 0x485fc857, 0x4863c857, 0x505cb000, 0x40600000, @@ -7946,1180 +8250,1184 @@ static const uint32_t isp_2500_risc_code[] = { 0x4c600000, 0x5808b802, 0x825cc580, 0x00000100, 0x05020015, 0x4800120b, 0x5808040b, 0x8400055c, 0x4800140b, 0x64041001, 0x64081004, 0x64201005, - 0x9008040c, 0x48001003, 0x59a80011, 0x90000410, - 0x48001007, 0x59a80012, 0x90000440, 0x48001008, - 0x0001f821, 0x90000541, 0x5c00c000, 0x5c00b800, + 0x9008040c, 0x48001003, 0x59a80013, 0x90000410, + 0x48001007, 0x59a80014, 0x90000440, 0x48001008, + 0x0001f829, 0x90000541, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x60280000, 0x4803c857, 0x05fdfd00, 0x80000580, 0x05fdf7f9, 0x4803c857, 0x4c5c0000, 0x4c600000, 0x5808b802, 0x825cc580, 0x00000100, 0x0502001e, 0x4800120b, 0x800001c0, 0x05000003, 0x42000000, 0xffffffff, 0x4800100c, 0x800001c0, 0x05000004, 0x5808040b, 0x8400055a, 0x4800140b, - 0x64001001, 0x64081004, 0x64201005, 0x59a80013, - 0x4800100d, 0x9008040c, 0x48001003, 0x59a80011, - 0x90000410, 0x48001007, 0x59a80012, 0x90000440, - 0x48001008, 0x0001f821, 0x90000541, 0x5c00c000, + 0x64001001, 0x64081004, 0x64201005, 0x59a80015, + 0x4800100d, 0x9008040c, 0x48001003, 0x59a80013, + 0x90000410, 0x48001007, 0x59a80014, 0x90000440, + 0x48001008, 0x0001f829, 0x90000541, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x60280000, 0x4803c857, 0x05fdfcd7, 0x80000580, 0x05fdf7f9, 0x4803c857, 0x4c5c0000, 0x4c600000, 0x5808b802, 0x825cc580, 0x00000100, 0x05020012, 0x64001001, 0x64041004, 0x64101005, 0x4800100c, 0x9008040c, 0x48001003, - 0x59a80011, 0xb000042c, 0x48001007, 0x59a80012, - 0x90000440, 0x48001008, 0x0001f821, 0x90000541, + 0x59a80013, 0xb000042c, 0x48001007, 0x59a80014, + 0x90000440, 0x48001008, 0x0001f829, 0x90000541, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x60280000, 0x4803c857, 0x05fdfcba, 0x80000580, 0x05fdf7f9, 0x4833c857, 0x5830040b, 0x84000518, 0x8c00051c, 0x0500000e, 0x82000500, 0xffff3fff, 0x5830080c, 0x82040d80, 0xffffffff, 0x05020002, 0x8400055e, 0x5830080d, 0x8c040520, 0x05000004, 0x84000558, - 0x84040d20, 0x48075013, 0x8c00051a, 0x05000003, + 0x84040d20, 0x48075015, 0x8c00051a, 0x05000003, 0x8400051a, 0x8400055e, 0x4800640b, 0x1c01f000, 0x4833c857, 0x4c5c0000, 0x4c580000, 0x4d2c0000, - 0x05c5fd6e, 0x05000032, 0x492c600a, 0x645a5800, + 0x05c5f8e5, 0x05000032, 0x492c600a, 0x645a5800, 0x4178b800, 0x912cac02, 0x0501f84c, 0x4404a800, 0x8054a800, 0x8058b000, 0x805cb800, 0x80580580, 0x0500000a, 0x912c0418, 0x80540580, 0x05fe07f7, - 0x4d2c0000, 0x05c5fd5d, 0x05000025, 0x5c000000, + 0x4d2c0000, 0x05c5f8d4, 0x05000025, 0x5c000000, 0x492c0001, 0x05fdf7ee, 0x485e5800, 0x5830000a, 0x58000000, 0x64006001, 0x48006004, 0x800000c4, 0x48006005, 0x5830000a, 0x90000402, 0x48006003, - 0x59a80011, 0x82000400, 0x00000484, 0x90580d91, - 0x0500000e, 0xb0000404, 0x90580da2, 0x05000003, - 0x82000400, 0x00000088, 0x59e00802, 0x8c04051e, - 0x05000006, 0x90580da2, 0x05020003, 0xb0000404, - 0x0501f002, 0xb000041c, 0x05fdfd63, 0x5c025800, + 0x59a80013, 0x82000400, 0x00000484, 0x90580d91, + 0x0500000e, 0xb0000404, 0x90580d9b, 0x05000002, + 0xb0000410, 0x59e00802, 0x8c04051e, 0x05000007, + 0x90580d9b, 0x05020003, 0x90000428, 0x0501f003, + 0x82000400, 0x00000080, 0x05fdfd63, 0x5c025800, 0x5c00b000, 0x5c00b800, 0x1c01f000, 0x5c025800, 0x05fdf7de, 0x4833c857, 0x4d2c0000, 0x4c3c0000, - 0x4c300000, 0x5832580a, 0x812e59c0, 0x05c40987, - 0x592c7801, 0x483c600a, 0x05c5fd3c, 0x803c79c0, + 0x4c300000, 0x5832580a, 0x812e59c0, 0x05c00d02, + 0x592c7801, 0x483c600a, 0x05c5f8b3, 0x803c79c0, 0x0500000a, 0x903c0402, 0x48006003, 0x583c0000, 0x48006004, 0x800000c4, 0x48006005, 0x40301000, - 0x0001f821, 0x90000541, 0x5c006000, 0x5c007800, + 0x0001f829, 0x90000541, 0x5c006000, 0x5c007800, 0x5c025800, 0x1c01f000, 0x485bc857, 0x4c5c0000, - 0x40580000, 0x0c01f001, 0x00107ca3, 0x00107cb7, - 0x00107cbb, 0x00107cbd, 0x00107cbf, 0x00107cc1, - 0x00107cc3, 0x00107cc5, 0x00107cc9, 0x00107ccc, - 0x00107ccf, 0x00107cd7, 0x00107ce6, 0x00107cf1, - 0x00107cfc, 0x00107d01, 0x00107d0c, 0x00107ca3, - 0x00107ca6, 0x00107d0f, 0x00107d5c, 0x00107d66, - 0x00107d68, 0x00107d6e, 0x00107d72, 0x00107d76, - 0x00107d7b, 0x00107d7d, 0x00107d7f, 0x00107d81, - 0x00107d83, 0x00107d85, 0x00107d87, 0x00107d8f, - 0x00107cad, 0x00107cb0, 0x00107d3b, 0x00107d50, - 0x00107d52, 0x00107d54, 0x00107d56, 0x00107d58, - 0x00107d5a, 0x00107d60, 0x00107d5e, 0x00107d64, - 0x00107d62, 0x00107d42, 0x00107d6c, 0x00107d6e, - 0x00107d72, 0x00107da4, 0x00107da7, 0x00107da9, - 0x00107dab, 0x00107dad, 0x00107daf, 0x42000800, - 0x44504f4c, 0x0501f10f, 0x60100800, 0x59e00002, - 0x8c00051e, 0x0500010b, 0x82040d40, 0x00000100, - 0x0501f108, 0x42000800, 0x44504f4c, 0x0501f103, - 0x60180800, 0x59e00002, 0x8c00051e, 0x050000ff, - 0x82040d40, 0x00000100, 0x0501f0fc, 0x600c0802, - 0x0501f055, 0x50040800, 0x0501f053, 0x59a80814, - 0x0501f051, 0x59a80815, 0x0501f04f, 0x59a80816, - 0x0501f04d, 0x59a80817, 0x0501f04b, 0x59a80818, - 0x0501f049, 0x59a80819, 0x0501f047, 0x302e3730, - 0x30302e33, 0x42000800, 0x00107cc7, 0x05fdf7ee, - 0x42000800, 0x00107cc8, 0x05fdf7eb, 0x42000000, - 0x7ff0000d, 0x50000000, 0x80000130, 0x0501f8e4, - 0x9c0001c0, 0x40000800, 0x0501f037, 0x42000000, - 0x7ff0000d, 0x50000000, 0x80000120, 0x0501f8dc, - 0x82000500, 0x00ffffff, 0x82000540, 0x2e000000, - 0x9c0001c0, 0x05fdf7f4, 0x32333532, 0x31303030, - 0x32333532, 0x32303030, 0x60000020, 0x50000000, - 0x82000480, 0x25320001, 0x05020004, 0x42000800, - 0x00107ce2, 0x05fdf7cc, 0x42000800, 0x00107ce4, - 0x05fdf7c9, 0x60000020, 0x50000000, 0x82000480, - 0x25320001, 0x05020004, 0x42000800, 0x00107ce3, - 0x05fdf7c1, 0x42000800, 0x00107ce5, 0x05fdf7be, - 0x60c80800, 0x61900000, 0x800000e0, 0x80040d40, - 0x0501f00d, 0x59a8005a, 0x800001c0, 0x05020002, - 0x6140000f, 0x59a8085b, 0x800409c0, 0x05020002, - 0x6140080f, 0x800408e0, 0x80040d40, 0x0501f002, - 0x41780800, 0x60440000, 0x0501f0a7, 0x60080800, - 0x916c0583, 0x0502000e, 0x59a80249, 0x8c000502, - 0x05000004, 0x82040d40, 0x00000300, 0x0501f008, - 0x8c000508, 0x05000004, 0x82040d40, 0x00000200, - 0x0501f003, 0x82040d40, 0x00000100, 0x82040d40, - 0x00080000, 0x59c40001, 0x82000500, 0x00018000, - 0x9000bd80, 0x05020004, 0x82040d40, 0x01000000, - 0x0501f08c, 0x8200bd80, 0x00008000, 0x05020004, - 0x82040d40, 0x02000000, 0x0501f086, 0x8200bd80, - 0x00010000, 0x05020004, 0x82040d40, 0x04000000, - 0x0501f080, 0x8200bd80, 0x00018000, 0x0502007d, - 0x82040d40, 0x08000000, 0x0501f07a, 0x60100800, - 0x59e00002, 0x8c00051e, 0x05000003, 0x82040d40, - 0x00010000, 0x0501f071, 0x41780800, 0x916c0583, - 0x0502006e, 0x59a80249, 0x8c000502, 0x05000003, - 0x90040d43, 0x0501f069, 0x8c000508, 0x05000003, - 0x90040d42, 0x0501f065, 0x90040d41, 0x0501f063, - 0x59a80814, 0x0501f061, 0x59a80815, 0x0501f05f, - 0x59a80816, 0x0501f05d, 0x59a80817, 0x0501f05b, - 0x59a80818, 0x0501f059, 0x59a80819, 0x0501f057, - 0x59a8083d, 0x0501f057, 0x59a80800, 0x0501f053, - 0x59a80801, 0x0501f051, 0x59a80802, 0x0501f04f, - 0x59a80803, 0x0501f04d, 0x59880823, 0x0501f04d, - 0x59880129, 0x5988092a, 0x80040c00, 0x0501f049, - 0x599c0a09, 0x0501f045, 0x59c408b1, 0x59a800a9, - 0x80040c00, 0x0501f043, 0x59c408b2, 0x59a800aa, - 0x80040c00, 0x0501f03f, 0x60040800, 0x916c0583, - 0x0502003c, 0x84040d42, 0x0501f03a, 0x59880800, - 0x0501f038, 0x59880805, 0x0501f036, 0x59880801, - 0x0501f034, 0x59880802, 0x0501f032, 0x59880803, - 0x0501f030, 0x598808c5, 0x0501f02e, 0x59880081, - 0x59880882, 0x80040c00, 0x59880083, 0x80040c00, - 0x59880084, 0x80040c00, 0x0501f026, 0x59880826, - 0x82040d00, 0x000000ff, 0x59880027, 0x82000500, - 0x000000ff, 0x800000d0, 0x80040d40, 0x4c040000, - 0x59880019, 0x5988081a, 0x80040400, 0x82000500, - 0x000000ff, 0x800000e0, 0x5c000800, 0x80040d40, - 0x59880025, 0x800000f0, 0x80040d40, 0x0501f011, - 0x0529fb5b, 0x610008f4, 0x0501f00b, 0x610408f4, - 0x0501f009, 0x610808f4, 0x0501f007, 0x611008f4, - 0x0501f005, 0x611408f4, 0x0501f003, 0x611808f4, - 0x64030000, 0x50040800, 0x60e40000, 0x0501f002, - 0x60880000, 0x5c00b800, 0x1c01f000, 0x4803c857, - 0x4c5c0000, 0x4c600000, 0x82000500, 0x000000ff, - 0x4000b800, 0x4178c000, 0x905c048a, 0x0500100c, - 0x4000b800, 0x8260c400, 0x00000100, 0x82600500, - 0x0000ff00, 0x82000580, 0x00000a00, 0x05020003, - 0x8260c400, 0x0000f600, 0x05fdf7f4, 0x805c0418, - 0x82000400, 0x30303030, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x00000030, 0x00000000, 0x00000000, - 0x000000f4, 0x00000394, 0x00000000, 0x00000000, - 0x00000444, 0x3c000000, 0x00000505, 0x00000707, - 0x00000000, 0x44435442, 0x000d0101, 0x00006283, - 0x52504010, 0x414e444f, 0x6283454d, 0x10100100, - 0x4c524553, 0x004d554e, 0x02006283, 0x43500220, - 0x00444949, 0x62830000, 0x02200300, 0x44494350, - 0x00004449, 0x04006283, 0x43500220, 0x56535349, - 0x62834449, 0x02200500, 0x53494350, 0x44494453, - 0x06006283, 0x57463c10, 0x4e4e4142, 0x62835245, - 0x04200700, 0x4f504346, 0x00535452, 0x08006283, - 0x554e0420, 0x4e55464d, 0x62830043, 0x02200b00, - 0x50514d56, 0x54524f50, 0x0c006283, 0x4d560220, - 0x46505051, 0x62832020, 0x04201300, 0x45494350, - 0x52424e42, 0xe0006283, 0x57460420, 0x52545441, - 0x00004249, 0x00000000, 0x44504f4c, 0x00090103, - 0x12004683, 0x45441810, 0x56524456, 0x46835256, - 0x08101300, 0x46564544, 0x00525657, 0x14004683, - 0x45440810, 0x4f494256, 0x46835256, 0x08101500, - 0x48564544, 0x00525657, 0x16004684, 0x43530220, - 0x4f544953, 0x46840056, 0x02201700, 0x4f545452, - 0x00000056, 0x18004684, 0x41520220, 0x00564f54, - 0x46840000, 0x02201900, 0x4f544445, 0x00000056, - 0x1a004684, 0x52430420, 0x00564f54, 0x00000000, - 0x00000000, 0x44504f4c, 0x00150204, 0x00004883, - 0x4f500120, 0x59545452, 0x48834550, 0x01200100, - 0x54524f50, 0x54415453, 0x03004883, 0x55530120, - 0x54525050, 0x48835053, 0x01200400, 0x5250474e, - 0x44505354, 0x05004883, 0x504e0420, 0x4954524f, - 0x48830044, 0x04200d00, 0x52445852, 0x0053504f, - 0x11004883, 0x58540420, 0x4f525245, 0x48845352, - 0x04201300, 0x52465852, 0x53454d41, 0x15004884, - 0x58540420, 0x4d415246, 0x48835345, 0x04201700, - 0x4b4e494c, 0x54415453, 0x21004884, 0x494c0420, - 0x52454b4e, 0x48840052, 0x04202200, 0x45435243, - 0x00005252, 0x2d004884, 0x4f4c0420, 0x454e5953, - 0x48845252, 0x04202e00, 0x49534f4c, 0x52524547, - 0x2f004884, 0x52500420, 0x52454d49, 0x48840052, - 0x04206f00, 0x4f474f4c, 0x00564352, 0x80004884, - 0x53520420, 0x43524e43, 0x48840056, 0x01208900, - 0x52534f4e, 0x54435643, 0x8a004884, 0x4c4f0120, - 0x554f4353, 0x4884544e, 0x01208b00, 0x4f43524c, - 0x00544e55, 0x8e004884, 0x494c0120, 0x56435250, - 0x00005443, 0x00000000, 0x44504f4c, 0x000f0206, - 0x00004c83, 0x55460220, 0x5954434e, 0x4c834550, - 0x02200100, 0x434e5546, 0x00004449, 0x02004c83, - 0x55461810, 0x4556434e, 0x4c835352, 0x08200800, - 0x4e4e5757, 0x00454d41, 0x09004c83, 0x57570820, - 0x4d414e50, 0x4c830045, 0x04200b00, 0x54524f50, - 0x54415453, 0x0d004c84, 0x43460420, 0x51585245, - 0x4c845a53, 0x04201000, 0x52454346, 0x4d524658, - 0x12004c84, 0x43460420, 0x46585445, 0x4c834d52, - 0x04201600, 0x52524550, 0x00504143, 0x17004c83, - 0x45500420, 0x4e555252, 0x4c834543, 0x04201800, - 0x524f4350, 0x4b414d55, 0x19004c83, 0x45500420, - 0x45435252, 0x4c835252, 0x04201a00, 0x524f4350, - 0x4b53414d, 0x1b004c83, 0x45500420, 0x52415252, - 0x00005243, 0x00000000, 0x44435442, 0x00000001, - 0x25321077, 0x338e103c, 0x474f4c51, 0x43204349, - 0x4f50524f, 0x49544152, 0x20204e4f, 0x50534920, - 0x78783532, 0x72694620, 0x7261776d, 0x20202065, - 0x73726556, 0x206e6f69, 0x2e372020, 0x302e3330, - 0x00202030, 0x00000002, 0x00000001, 0x01000100, - 0x05e5fa53, 0x05020005, 0x4803c856, 0x05d1fa9f, - 0x05d1fadd, 0x05d1fabe, 0x1c01f000, 0x59a8083b, - 0x59a8029c, 0x80040480, 0x599c0a02, 0x800409c0, - 0x05020002, 0x80040800, 0x80041480, 0x05001002, - 0x40000800, 0x4807509a, 0x59a8103b, 0x40040000, - 0x800acc80, 0x4967503b, 0x4967509b, 0x59aaa80b, - 0x41640800, 0x60c01000, 0x0501f88c, 0x8206a400, - 0x00111b00, 0x49535097, 0x4152b000, 0x0529fa48, - 0x0500001f, 0x496752dd, 0x599c041e, 0x4803c857, - 0x59a8089a, 0x4807c857, 0x80041480, 0x05021009, - 0x497b509a, 0x49575097, 0x4152a800, 0x81640c00, - 0x4807c857, 0x480754dd, 0x80040800, 0x0501f00d, - 0x480bc857, 0x480b509a, 0x81640c00, 0x4807c857, - 0x480754dd, 0x80040800, 0x60c01000, 0x0501f86f, - 0x4807c857, 0x8206a400, 0x00111b00, 0x49535097, - 0x4953c857, 0x4a0370e4, 0x30000000, 0x42006000, - 0x00110278, 0x4a006008, 0x0000012c, 0x4a006009, - 0xda10da10, 0x6454600c, 0x4a00600d, 0x00110278, - 0x4a00600e, 0x001012a7, 0x599c0014, 0x48006015, - 0x599c0015, 0x48006016, 0x42006000, 0x00111a10, - 0x64206203, 0x64186407, 0x4a006002, 0xffff0000, - 0x4a006009, 0x00110278, 0x4a006016, 0x00110278, - 0x599c0014, 0x48006017, 0x599c0015, 0x48006018, - 0x599c0413, 0x48006019, 0x4950601a, 0x4954601b, - 0x59a8009a, 0x4800601c, 0x4a00601d, 0x0010dc97, - 0x59a802dd, 0x48006020, 0x59a804dd, 0x48006021, - 0x42000000, 0x00111ad0, 0x48006022, 0x42000000, - 0x00110228, 0x48006023, 0x4a00601e, 0x0010dc98, - 0x4a00601f, 0x0010dc99, 0x42000000, 0xb0000000, - 0x42000800, 0x00111a10, 0x0001f93a, 0x1c01f000, + 0x40580000, 0x0c01f001, 0x00108165, 0x00108179, + 0x0010817d, 0x0010817f, 0x00108181, 0x00108183, + 0x00108185, 0x00108187, 0x0010818b, 0x0010818e, + 0x00108191, 0x00108199, 0x001081a8, 0x001081b3, + 0x001081be, 0x001081c3, 0x001081ce, 0x00108165, + 0x00108168, 0x001081d1, 0x00108219, 0x0010821b, + 0x00108221, 0x00108225, 0x00108229, 0x001081ec, + 0x0010820f, 0x0010816f, 0x00108172, 0x001081ee, + 0x00108203, 0x00108205, 0x00108207, 0x00108209, + 0x0010820b, 0x0010820d, 0x00108213, 0x00108211, + 0x00108217, 0x00108215, 0x001081f5, 0x0010821f, + 0x00108221, 0x00108225, 0x00108259, 0x0010825c, + 0x0010825e, 0x00108260, 0x00108262, 0x00108264, + 0x0010822e, 0x00108230, 0x00108232, 0x00108234, + 0x00108236, 0x00108238, 0x0010823a, 0x0010823c, + 0x00108244, 0x42000800, 0x44504f4c, 0x0501f104, + 0x60100800, 0x59e00002, 0x8c00051e, 0x05000100, + 0x82040d40, 0x00000100, 0x0501f0fd, 0x42000800, + 0x44504f4c, 0x0501f0f8, 0x60180800, 0x59e00002, + 0x8c00051e, 0x050000f4, 0x82040d40, 0x00000100, + 0x0501f0f1, 0x600c0802, 0x0501f055, 0x50040800, + 0x0501f053, 0x59a80816, 0x0501f051, 0x59a80817, + 0x0501f04f, 0x59a80818, 0x0501f04d, 0x59a80819, + 0x0501f04b, 0x59a8081a, 0x0501f049, 0x59a8081b, + 0x0501f047, 0x302e3830, 0x30302e33, 0x42000800, + 0x00108189, 0x05fdf7ee, 0x42000800, 0x0010818a, + 0x05fdf7eb, 0x42000000, 0x7ff0000d, 0x50000000, + 0x80000130, 0x0501f8d9, 0x9c0001c0, 0x40000800, + 0x0501f037, 0x42000000, 0x7ff0000d, 0x50000000, + 0x80000120, 0x0501f8d1, 0x82000500, 0x00ffffff, + 0x82000540, 0x2e000000, 0x9c0001c0, 0x05fdf7f4, + 0x32333532, 0x31303030, 0x32333532, 0x32303030, + 0x60000020, 0x50000000, 0x82000480, 0x25320001, + 0x05020004, 0x42000800, 0x001081a4, 0x05fdf7cc, + 0x42000800, 0x001081a6, 0x05fdf7c9, 0x60000020, + 0x50000000, 0x82000480, 0x25320001, 0x05020004, + 0x42000800, 0x001081a5, 0x05fdf7c1, 0x42000800, + 0x001081a7, 0x05fdf7be, 0x60c80800, 0x61900000, + 0x800000e0, 0x80040d40, 0x0501f00d, 0x59a8005d, + 0x800001c0, 0x05020002, 0x6140000f, 0x59a8085e, + 0x800409c0, 0x05020002, 0x6140080f, 0x800408e0, + 0x80040d40, 0x0501f002, 0x41780800, 0x60440000, + 0x0501f09c, 0x60080800, 0x59c40001, 0x82000500, + 0x00018000, 0x9000bd80, 0x05020004, 0x82040d40, + 0x000a0000, 0x0501f092, 0x8200bd80, 0x00008000, + 0x05020004, 0x82040d40, 0x00140000, 0x0501f08c, + 0x8200bd80, 0x00010000, 0x05020004, 0x82040d40, + 0x00280000, 0x0501f086, 0x8200bd80, 0x00018000, + 0x05020083, 0x82040d40, 0x00500000, 0x0501f080, + 0x61400800, 0x0501f07e, 0x60100800, 0x59e00002, + 0x8c00051e, 0x05000003, 0x82040d40, 0x00010000, + 0x0501f075, 0x41780800, 0x916c0583, 0x05020072, + 0x59a8024c, 0x8c000502, 0x05000003, 0x90040d43, + 0x0501f06d, 0x8c000508, 0x05000003, 0x90040d42, + 0x0501f069, 0x90040d41, 0x0501f067, 0x59a80816, + 0x0501f065, 0x59a80817, 0x0501f063, 0x59a80818, + 0x0501f061, 0x59a80819, 0x0501f05f, 0x59a8081a, + 0x0501f05d, 0x59a8081b, 0x0501f05b, 0x59a80840, + 0x0501f05b, 0x59a80800, 0x0501f057, 0x59a80801, + 0x0501f055, 0x59a80802, 0x0501f053, 0x59a80803, + 0x0501f051, 0x59880823, 0x0501f051, 0x5988012c, + 0x5988092d, 0x80040c00, 0x0501f04d, 0x599c0a09, + 0x0501f049, 0x59c408b1, 0x59a800ae, 0x80040c00, + 0x0501f047, 0x59c408b2, 0x59a800af, 0x80040c00, + 0x0501f043, 0x60040800, 0x916c0583, 0x05020040, + 0x84040d42, 0x0501f03e, 0x59880800, 0x0501f03a, + 0x59880805, 0x0501f038, 0x59880801, 0x0501f036, + 0x59880802, 0x0501f034, 0x59880803, 0x0501f032, + 0x59880927, 0x0501f030, 0x598808c8, 0x0501f02e, + 0x59880081, 0x59880882, 0x80040c00, 0x59880083, + 0x80040c00, 0x59880084, 0x80040c00, 0x0501f026, + 0x59880826, 0x82040d00, 0x000000ff, 0x59880027, + 0x82000500, 0x000000ff, 0x800000d0, 0x80040d40, + 0x4c040000, 0x59880019, 0x5988081a, 0x80040400, + 0x82000500, 0x000000ff, 0x800000e0, 0x5c000800, + 0x80040d40, 0x59880025, 0x800000f0, 0x80040d40, + 0x0501f011, 0x0529fe21, 0x610008f4, 0x0501f00d, + 0x610408f4, 0x0501f00b, 0x610808f4, 0x0501f009, + 0x611008f4, 0x0501f007, 0x611408f4, 0x0501f005, + 0x611808f4, 0x50040800, 0x64030000, 0x0501f002, + 0x50040800, 0x60ec0000, 0x0501f002, 0x606c0000, + 0x5c00b800, 0x1c01f000, 0x4803c857, 0x4c5c0000, + 0x4c600000, 0x82000500, 0x000000ff, 0x4000b800, + 0x4178c000, 0x905c048a, 0x0500100c, 0x4000b800, + 0x8260c400, 0x00000100, 0x82600500, 0x0000ff00, + 0x82000580, 0x00000a00, 0x05020003, 0x8260c400, + 0x0000f600, 0x05fdf7f4, 0x805c0418, 0x82000400, + 0x30303030, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x00000030, 0x00000000, 0x00000000, 0x000000f4, + 0x00000394, 0x00000000, 0x00000000, 0x00000444, + 0x3c000000, 0x00000505, 0x00000707, 0x00000000, + 0x44435442, 0x000d0101, 0x00006283, 0x52504010, + 0x414e444f, 0x6283454d, 0x10100100, 0x4c524553, + 0x004d554e, 0x02006283, 0x43500220, 0x00444949, + 0x62830000, 0x02200300, 0x44494350, 0x00004449, + 0x04006283, 0x43500220, 0x56535349, 0x62834449, + 0x02200500, 0x53494350, 0x44494453, 0x06006283, + 0x57463c10, 0x4e4e4142, 0x62835245, 0x04200700, + 0x454d554e, 0x54524f50, 0x08006283, 0x554e0420, + 0x4e55464d, 0x62830043, 0x02200b00, 0x50514d56, + 0x54524f50, 0x0c006283, 0x4d560220, 0x46505051, + 0x62832020, 0x04201300, 0x45494350, 0x52424e42, + 0xe0006283, 0x57460420, 0x52545441, 0x00004249, + 0x00000000, 0x44504f4c, 0x00090103, 0x12004683, + 0x45441810, 0x56524456, 0x46835256, 0x08101300, + 0x46564544, 0x00525657, 0x14004683, 0x45440810, + 0x4f494256, 0x46835256, 0x08101500, 0x48564544, + 0x00525657, 0x16004684, 0x43530220, 0x4f544953, + 0x46840056, 0x02201700, 0x4f545452, 0x00000056, + 0x18004684, 0x41520220, 0x00564f54, 0x46840000, + 0x02201900, 0x4f544445, 0x00000056, 0x1a004684, + 0x52430420, 0x00564f54, 0x00000000, 0x00000000, + 0x44504f4c, 0x00090204, 0x00004883, 0x4f500220, + 0x59545452, 0x48834550, 0x02200200, 0x54524f50, + 0x44455053, 0x06004883, 0x58520420, 0x504f5244, + 0x48830053, 0x04200e00, 0x52455854, 0x53524f52, + 0x10004884, 0x58520420, 0x4d415246, 0x48845345, + 0x04201200, 0x52465854, 0x53454d41, 0x16004883, + 0x494c0420, 0x54534b4e, 0x48835441, 0x04201a00, + 0x50505553, 0x50535452, 0x1b004883, 0x504e0420, + 0x4954524f, 0x00000044, 0x00000000, 0x44504f4c, + 0x001b0206, 0x00004c83, 0x55460220, 0x5954434e, + 0x4c834550, 0x02200100, 0x434e5546, 0x00004449, + 0x02004c83, 0x55461810, 0x4556434e, 0x4c835352, + 0x08200800, 0x4e4e5757, 0x00454d41, 0x09004c83, + 0x57570820, 0x4d414e50, 0x4c830045, 0x04200b00, + 0x54524f50, 0x54415453, 0x0d004c84, 0x43460420, + 0x51585245, 0x4c845a53, 0x04201000, 0x52454346, + 0x4d524658, 0x12004c84, 0x43460420, 0x46585445, + 0x4c834d52, 0x04201600, 0x52524550, 0x00504143, + 0x17004c83, 0x45500420, 0x4e555252, 0x4c834543, + 0x04201800, 0x524f4350, 0x4b414d55, 0x19004c83, + 0x45500420, 0x45435252, 0x4c835252, 0x04201a00, + 0x524f4350, 0x4b53414d, 0x1b004c83, 0x45500420, + 0x52415252, 0x4c845243, 0x04202500, 0x4b4e494c, + 0x00525245, 0x26004c84, 0x52430420, 0x52524543, + 0x4c840000, 0x04203100, 0x59534f4c, 0x5252454e, + 0x32004c84, 0x4f4c0420, 0x45474953, 0x4c845252, + 0x04203300, 0x4d495250, 0x00525245, 0x34004c84, + 0x49440420, 0x52455053, 0x48840052, 0x04206f00, + 0x4f474f4c, 0x00564352, 0x80004c84, 0x53520420, + 0x43524e43, 0x4c840056, 0x01208900, 0x52534f4e, + 0x54435643, 0x8a004c84, 0x4c4f0120, 0x554f4353, + 0x4c84544e, 0x01208b00, 0x4f43524c, 0x00544e55, + 0x8e004c84, 0x494c0120, 0x56435250, 0x00005443, + 0x00000000, 0x44435442, 0x00000001, 0x25321077, + 0x338e103c, 0x474f4c51, 0x43204349, 0x4f50524f, + 0x49544152, 0x20204e4f, 0x50534920, 0x78783532, + 0x72694620, 0x7261776d, 0x20202065, 0x73726556, + 0x206e6f69, 0x2e382020, 0x302e3330, 0x00202030, + 0x00000002, 0x00000001, 0x01000100, 0x05e1ff42, + 0x05020005, 0x4803c856, 0x05cdfe68, 0x05cdfea6, + 0x05cdfe87, 0x1c01f000, 0x59a8043e, 0x599c0a02, + 0x800409c0, 0x05020002, 0x80040800, 0x80041480, + 0x05001002, 0x40000800, 0x4807509d, 0x59a8103d, + 0x40040000, 0x800acc80, 0x4967503d, 0x4967509e, + 0x59a8143e, 0x80081480, 0x480b543e, 0x59aaa80b, + 0x41640800, 0x60c01000, 0x0501f88d, 0x8006a42f, + 0x4953509a, 0x4152b000, 0x0529fd0c, 0x0500001e, + 0x496752e2, 0x599c041e, 0x4803c857, 0x59a8089d, + 0x4807c857, 0x80041480, 0x05021009, 0x497b509d, + 0x4957509a, 0x4152a800, 0x81640c00, 0x4807c857, + 0x480754e2, 0x80040800, 0x0501f00c, 0x480bc857, + 0x480b509d, 0x81640c00, 0x4807c857, 0x480754e2, + 0x80040800, 0x60c01000, 0x0501f871, 0x4807c857, + 0x8006a42f, 0x4953509a, 0x4953c857, 0x4a0370e4, + 0x30000000, 0x42006000, 0x0011421c, 0x4a006008, + 0x0000012c, 0x4a006009, 0xda10da10, 0x6454600c, + 0x4a00600d, 0x0011421c, 0x4a00600e, 0x00100046, + 0x599c0014, 0x48006015, 0x599c0015, 0x48006016, + 0x42006000, 0x001159b4, 0x64206203, 0x64186407, + 0x4a006002, 0xffff0000, 0x4a006009, 0x0011421c, + 0x4a006016, 0x0011421c, 0x599c0014, 0x48006017, + 0x599c0015, 0x48006018, 0x599c0413, 0x48006019, + 0x4950601a, 0x4954601b, 0x59a8009d, 0x4800601c, + 0x59a802e2, 0x48006020, 0x59a804e2, 0x48006021, + 0x42000000, 0x00115a74, 0x48006022, 0x42000000, + 0x001141cc, 0x48006023, 0x4a00601e, 0x00111c1b, + 0x4a00601f, 0x00111c1c, 0x42000000, 0xb0000000, + 0x42000800, 0x001159b4, 0x0001f942, 0x1c01f000, 0x4807c856, 0x59240206, 0x800409c0, 0x05000003, 0x80080540, 0x0501f002, 0x80080500, 0x48024a06, - 0x1c01f000, 0x492e6017, 0x4d2c0000, 0x05c5fa33, + 0x1c01f000, 0x492e6017, 0x4d2c0000, 0x05c1fdb6, 0x0500000c, 0x4c500000, 0x4c540000, 0x4c580000, - 0x412ca800, 0x5930a017, 0x6060b000, 0x0529f950, + 0x412ca800, 0x5930a017, 0x6060b000, 0x0529fc17, 0x492e6017, 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, 0x59300202, 0x48025a10, 0x4932580d, - 0x1c01f000, 0x4803c856, 0x4c000000, 0x05f9f96b, - 0x0502000b, 0x05e9fdaf, 0x05c20e74, 0x5c000000, - 0x48026802, 0x0509fc9a, 0x05000006, 0x4936600a, - 0x64066407, 0x60067000, 0x0009f000, 0x5c000000, - 0x1c01f000, 0x05c1fe69, 0x4c0c0000, 0x4c100000, - 0x4c140000, 0x4c180000, 0x80001d80, 0x80002580, - 0x60803000, 0x90040501, 0x05000003, 0x40080000, - 0x800c1c00, 0x400c2800, 0x800c1902, 0x80102102, - 0x90140501, 0x05000003, 0x82102540, 0x80000000, - 0x80040902, 0x80183040, 0x05fe07f3, 0x40100800, - 0x400c0000, 0x5c003000, 0x5c002800, 0x5c002000, - 0x5c001800, 0x1c01f000, 0x4c0c0000, 0x4c580000, - 0x6080b000, 0x80000540, 0x05000019, 0x80041c80, - 0x05021017, 0x800810c2, 0x80040982, 0x05001006, - 0x80041c80, 0x05021005, 0x8058b040, 0x05fe07fa, - 0x0501f006, 0x80041c80, 0x400c0800, 0x80081000, - 0x8058b040, 0x05fe07f4, 0x4c000000, 0x41f00000, - 0x82000500, 0xf7ffffff, 0x4003e000, 0x5c000000, - 0x5c00b000, 0x5c001800, 0x1c01f000, 0x4c000000, - 0x41f00000, 0x82000540, 0x08000000, 0x05fdf7f7, - 0x42007000, 0x0010e060, 0x64147000, 0x64007401, - 0x4a007201, 0x00000840, 0x64147202, 0x6401a8e8, - 0x6443c82b, 0x0501f84e, 0x4a01a8e9, 0x00003a0d, - 0x4a01a8ee, 0x00080202, 0x6405a8e8, 0x640378e8, - 0x6443c821, 0x6413c823, 0x0501f879, 0x4a0378e9, - 0x00003a0d, 0x4a0378ee, 0x00080302, 0x640778e8, - 0x41780800, 0x6003a0ec, 0x42001000, 0x0010e32d, - 0x42001800, 0x0011178d, 0x600c2000, 0x6120297f, - 0x4a03a005, 0xd0000001, 0x59d00006, 0x4a03a005, - 0x90000001, 0x59d00006, 0x4a03a005, 0x60000001, - 0x59d00006, 0x4a03a005, 0x60000003, 0x59d00006, - 0x4a03a005, 0x60000005, 0x59d00006, 0x4a03a005, - 0x60000007, 0x59d00006, 0x4a03a005, 0x60000009, - 0x59d00006, 0x4a03a005, 0x6000000b, 0x64041001, - 0x4a001002, 0x00000100, 0x4a001009, 0x00020f77, - 0x480c100b, 0x4810100d, 0x4814100e, 0x4978120f, - 0x4804140f, 0x49781010, 0x820c1c00, 0x00000080, - 0x480c100c, 0x90081412, 0x801020c4, 0x80142800, - 0x91d3a420, 0x80040800, 0x90040485, 0x05fc17d7, - 0x59e00003, 0x82000500, 0xffffffe0, 0x82000540, - 0x00008000, 0x4803c003, 0x59c40006, 0x82000500, - 0xfffcffff, 0x48038806, 0x1c01f000, 0x4d900000, - 0x4d180000, 0x4c500000, 0x4c580000, 0x4c540000, - 0x4a01a8e7, 0xaaaaaaaa, 0x4a01a8e6, 0xaaaaaaaa, - 0x4a01a8e5, 0xaaaaaaaa, 0x4a01a8e4, 0xaaaaaaaa, - 0x4a01a8ee, 0x00200000, 0x4979a8ee, 0x4a01a8ce, - 0x0010d17b, 0x6000b001, 0x90d4ac00, 0x4178a000, - 0x0529f893, 0x4a01a81d, 0x001012a3, 0x4a01a81b, - 0x001012ac, 0x4a01a81c, 0x001012bc, 0x4a01a81e, - 0x0010e2ff, 0x64031800, 0x600c0800, 0x42001800, - 0x0010e302, 0x417a3000, 0x811b20c8, 0x83932400, - 0x0000b037, 0x48072000, 0x480f2001, 0x64032002, - 0x800408c4, 0x900c1c05, 0x811a3000, 0x91180485, - 0x05fc17f6, 0x5c00a800, 0x5c00b000, 0x5c00a000, - 0x5c023000, 0x5c032000, 0x1c01f000, 0x4cd80000, - 0x4d180000, 0x4a0378e7, 0xaaaaaaaa, 0x4a0378e6, - 0xaaaaaaaa, 0x4a0378e5, 0xaaaaaaaa, 0x4a03781b, - 0x001012ac, 0x4a03781c, 0x001012bc, 0x4a03781d, - 0x0010e063, 0x4a03781e, 0x0010e06a, 0x42000800, - 0x0010e302, 0x417a3000, 0x42001000, 0x0011178d, - 0x8119b0c8, 0x82d9b400, 0x0000bf32, 0x83180400, - 0x00108a67, 0x50000000, 0x4801b002, 0x4809b000, - 0x4809b001, 0x82081400, 0x00000080, 0x90040c05, - 0x811a3000, 0x91180485, 0x05fc17f2, 0x5c023000, - 0x5c01b000, 0x1c01f000, 0x4933c857, 0x42000800, - 0x8000004e, 0x59300416, 0x8c000510, 0x05000002, - 0x84040d52, 0x48066004, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x83300400, 0x80000000, 0x4801a8e1, - 0x1c01f000, 0x4933c857, 0x59300804, 0x82040d00, - 0x00000100, 0x82040d40, 0x80000040, 0x59300416, - 0x8c000510, 0x05000002, 0x84040d52, 0x48066004, - 0x497a6000, 0x58d400ea, 0x8c000516, 0x05fe07fe, - 0x83300400, 0x60000000, 0x4801a8e1, 0x1c01f000, - 0x0501fc8f, 0x4df00000, 0x4d300000, 0x4d340000, - 0x4d2c0000, 0x4d180000, 0x4c5c0000, 0x4c600000, + 0x1c01f000, 0x4803c856, 0x4c000000, 0x05f9f863, + 0x05020010, 0x05e9fb16, 0x05c209fb, 0x5c000000, + 0x48026802, 0x0509fcfb, 0x0500000b, 0x42000000, + 0x0011247c, 0x0529fb36, 0x4936600a, 0x64066407, + 0x602c0800, 0x05e9fadb, 0x60067000, 0x0009f039, + 0x5c000000, 0x1c01f000, 0x05c1f9eb, 0x4c0c0000, + 0x4c100000, 0x4c140000, 0x4c180000, 0x80001d80, + 0x80002580, 0x60803000, 0x90040501, 0x05000003, + 0x40080000, 0x800c1c00, 0x400c2800, 0x800c1902, + 0x80102102, 0x90140501, 0x05000003, 0x82102540, + 0x80000000, 0x80040902, 0x80183040, 0x05fe07f3, + 0x40100800, 0x400c0000, 0x5c003000, 0x5c002800, + 0x5c002000, 0x5c001800, 0x1c01f000, 0x4c0c0000, + 0x4c580000, 0x6080b000, 0x80000540, 0x05000019, + 0x80041c80, 0x05021017, 0x800810c2, 0x80040982, + 0x05001006, 0x80041c80, 0x05021005, 0x8058b040, + 0x05fe07fa, 0x0501f006, 0x80041c80, 0x400c0800, + 0x80081000, 0x8058b040, 0x05fe07f4, 0x4c000000, + 0x41f00000, 0x82000500, 0xf7ffffff, 0x4003e000, + 0x5c000000, 0x5c00b000, 0x5c001800, 0x1c01f000, + 0x4c000000, 0x41f00000, 0x82000540, 0x08000000, + 0x05fdf7f7, 0x42007000, 0x00111ffa, 0x64147000, + 0x64007401, 0x4a007201, 0x00000840, 0x64147202, + 0x6401a8e8, 0x6443c82b, 0x0501f84e, 0x4a01a8e9, + 0x00003a0d, 0x4a01a8ee, 0x00080202, 0x6405a8e8, + 0x640378e8, 0x6443c821, 0x6413c823, 0x0501f879, + 0x4a0378e9, 0x00003a0d, 0x4a0378ee, 0x00080302, + 0x640778e8, 0x41780800, 0x6003a0ec, 0x42001000, + 0x001122c8, 0x42001800, 0x00115731, 0x600c2000, + 0x6120297f, 0x4a03a005, 0xd0000001, 0x59d00006, + 0x4a03a005, 0x90000001, 0x59d00006, 0x4a03a005, + 0x60000001, 0x59d00006, 0x4a03a005, 0x60000003, + 0x59d00006, 0x4a03a005, 0x60000005, 0x59d00006, + 0x4a03a005, 0x60000007, 0x59d00006, 0x4a03a005, + 0x60000009, 0x59d00006, 0x4a03a005, 0x6000000b, + 0x64041001, 0x4a001002, 0x00000100, 0x4a001009, + 0x00020fae, 0x480c100b, 0x4810100d, 0x4814100e, + 0x4978120f, 0x4804140f, 0x49781010, 0x820c1c00, + 0x00000080, 0x480c100c, 0x90081412, 0x801020c4, + 0x80142800, 0x91d3a420, 0x80040800, 0x90040485, + 0x05fc17d7, 0x59e00003, 0x82000500, 0xffffffe0, + 0x82000540, 0x00008000, 0x4803c003, 0x59c40006, + 0x82000500, 0xfffcffff, 0x48038806, 0x1c01f000, + 0x4d900000, 0x4d180000, 0x4c500000, 0x4c580000, + 0x4c540000, 0x4a01a8e7, 0xaaaaaaaa, 0x4a01a8e6, + 0xaaaaaaaa, 0x4a01a8e5, 0xaaaaaaaa, 0x4a01a8e4, + 0xaaaaaaaa, 0x4a01a8ee, 0x00200000, 0x4979a8ee, + 0x4a01a8ce, 0x0010d8f9, 0x6000b001, 0x90d4ac00, + 0x4178a000, 0x0529fb55, 0x4a01a81d, 0x00100042, + 0x4a01a81b, 0x0010004b, 0x4a01a81c, 0x0010005b, + 0x4a01a81e, 0x00112299, 0x64031800, 0x600c0800, + 0x42001800, 0x0011229c, 0x417a3000, 0x811b20c8, + 0x83932400, 0x0000b037, 0x48072000, 0x480f2001, + 0x64032002, 0x800408c4, 0x900c1c05, 0x811a3000, + 0x91180485, 0x05fc17f6, 0x5c00a800, 0x5c00b000, + 0x5c00a000, 0x5c023000, 0x5c032000, 0x1c01f000, + 0x4cd80000, 0x4d180000, 0x4a0378e7, 0xaaaaaaaa, + 0x4a0378e6, 0xaaaaaaaa, 0x4a0378e5, 0xaaaaaaaa, + 0x4a03781b, 0x0010004b, 0x4a03781c, 0x0010005b, + 0x4a03781d, 0x00111ffd, 0x4a03781e, 0x00112004, + 0x42000800, 0x0011229c, 0x417a3000, 0x42001000, + 0x00115731, 0x8119b0c8, 0x82d9b400, 0x0000bf32, + 0x83180400, 0x00108f25, 0x50000000, 0x4801b002, + 0x4809b000, 0x4809b001, 0x82081400, 0x00000080, + 0x90040c05, 0x811a3000, 0x91180485, 0x05fc17f2, + 0x5c023000, 0x5c01b000, 0x1c01f000, 0x4933c857, + 0x42000800, 0x8000004e, 0x59300416, 0x8c000510, + 0x05000002, 0x84040d52, 0x48066004, 0x58d400ea, + 0x8c000516, 0x05fe07fe, 0x83300400, 0x80000000, + 0x4801a8e1, 0x1c01f000, 0x4933c857, 0x59300804, + 0x82040d00, 0x00000100, 0x82040d40, 0x80000040, + 0x59300416, 0x8c000510, 0x05000002, 0x84040d52, + 0x48066004, 0x497a6000, 0x58d400ea, 0x8c000516, + 0x05fe07fe, 0x83300400, 0x60000000, 0x4801a8e1, + 0x1c01f000, 0x0501fc94, 0x4df00000, 0x4d300000, + 0x4d340000, 0x4d2c0000, 0x4d180000, 0x4c5c0000, + 0x4c600000, 0x4d900000, 0x4dd00000, 0x4da40000, + 0x4d140000, 0x4cd80000, 0x58d6602f, 0x813261c0, + 0x05000024, 0x41302800, 0x4178c000, 0x59300000, + 0x4c000000, 0x5932680a, 0x5930b801, 0x4c0c0000, + 0x4c140000, 0x0509f9a1, 0x5c002800, 0x5c001800, + 0x05000008, 0x0501f8d1, 0x4c0c0000, 0x4c140000, + 0x0501fb03, 0x5c002800, 0x5c001800, 0x0501f005, + 0x41301800, 0x8060c1c0, 0x05020002, 0x400cc000, + 0x805cb9c0, 0x05000003, 0x405e6000, 0x05fdf7eb, + 0x5c026000, 0x813261c0, 0x05000006, 0x8060c1c0, + 0x05000002, 0x40602800, 0x4178c000, 0x05fdf7e0, + 0x417a3000, 0x0505f9a1, 0x59926005, 0x813261c0, + 0x0500000a, 0x5932680a, 0x4c140000, 0x0509f97f, + 0x5c002800, 0x05000005, 0x0501fe8d, 0x0501fc26, + 0x0501fc2b, 0x0501fae2, 0x811a3000, 0x91180485, + 0x05fc17f1, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c00c000, 0x5c00b800, + 0x5c023000, 0x5c025800, 0x5c026800, 0x5c026000, + 0x5c03e000, 0x05000c35, 0x1c01f000, 0x4933c857, + 0x0501fc41, 0x4df00000, 0x4d340000, 0x4d180000, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, - 0x4cd80000, 0x58d6602f, 0x813261c0, 0x05000024, - 0x41302800, 0x4178c000, 0x59300000, 0x4c000000, - 0x5932680a, 0x5930b801, 0x4c0c0000, 0x4c140000, - 0x0509f96a, 0x5c002800, 0x5c001800, 0x05000008, - 0x0501f8d1, 0x4c0c0000, 0x4c140000, 0x0501fafd, - 0x5c002800, 0x5c001800, 0x0501f005, 0x41301800, - 0x8060c1c0, 0x05020002, 0x400cc000, 0x805cb9c0, - 0x05000003, 0x405e6000, 0x05fdf7eb, 0x5c026000, - 0x813261c0, 0x05000006, 0x8060c1c0, 0x05000002, - 0x40602800, 0x4178c000, 0x05fdf7e0, 0x417a3000, - 0x0505f99c, 0x59926005, 0x813261c0, 0x0500000a, - 0x5932680a, 0x4c140000, 0x0509f948, 0x5c002800, - 0x05000005, 0x0501fe88, 0x0501fc21, 0x0501fc26, - 0x0501fadc, 0x811a3000, 0x91180485, 0x05fc17f1, - 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x5c00c000, 0x5c00b800, 0x5c023000, - 0x5c025800, 0x5c026800, 0x5c026000, 0x5c03e000, - 0x05000c30, 0x1c01f000, 0x4933c857, 0x0501fc3c, - 0x4df00000, 0x4d340000, 0x4d180000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x5932680a, 0x58d4202f, 0x40102800, 0x801021c0, - 0x05000016, 0x41300000, 0x80100580, 0x05000011, - 0x5810000a, 0x81340580, 0x0502000b, 0x40101800, - 0x58102001, 0x41300000, 0x801021c0, 0x0500000b, - 0x80100d80, 0x05000007, 0x40101800, 0x58102001, - 0x05fdf7fa, 0x40102800, 0x58102000, 0x05fdf7ec, - 0x0501f879, 0x0501f00d, 0x417a3000, 0x0505f959, - 0x59900005, 0x81300580, 0x05000005, 0x811a3000, - 0x91180485, 0x05021010, 0x05fdf7f9, 0x0501fe46, - 0x0501fbdf, 0x0501fbe4, 0x5c01b000, 0x5c022800, + 0x4cd80000, 0x5932680a, 0x58d4202f, 0x40102800, + 0x801021c0, 0x05000016, 0x41300000, 0x80100580, + 0x05000011, 0x5810000a, 0x81340580, 0x0502000b, + 0x40101800, 0x58102001, 0x41300000, 0x801021c0, + 0x0500000b, 0x80100d80, 0x05000007, 0x40101800, + 0x58102001, 0x05fdf7fa, 0x40102800, 0x58102000, + 0x05fdf7ec, 0x0501f879, 0x0501f00d, 0x417a3000, + 0x0505f95e, 0x59900005, 0x81300580, 0x05000005, + 0x811a3000, 0x91180485, 0x05021010, 0x05fdf7f9, + 0x0501fe4b, 0x0501fbe4, 0x0501fbe9, 0x5c01b000, + 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, + 0x5c023000, 0x5c026800, 0x5c03e000, 0x05000bfb, + 0x80000580, 0x1c01f000, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c023000, - 0x5c026800, 0x5c03e000, 0x05000bf6, 0x80000580, - 0x1c01f000, 0x5c01b000, 0x5c022800, 0x5c034800, - 0x5c03a000, 0x5c032000, 0x5c023000, 0x5c026800, - 0x5c03e000, 0x05000beb, 0x90000541, 0x1c01f000, - 0x0501fbf7, 0x4df00000, 0x4d300000, 0x4d340000, - 0x4d180000, 0x4d2c0000, 0x4c5c0000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x58d6602f, 0x813261c0, 0x05000021, 0x41302800, - 0x5930b800, 0x5932680a, 0x59340403, 0x81440580, - 0x05000006, 0x805cb9c0, 0x05000019, 0x41302800, - 0x405e6000, 0x05fdf7f7, 0x5930001d, 0x81240580, - 0x05fe07f9, 0x5930b801, 0x4c0c0000, 0x4c140000, - 0x0509f8ca, 0x5c002800, 0x5c001800, 0x05000008, - 0x0501f831, 0x4c0c0000, 0x4c140000, 0x0501fa5d, - 0x5c002800, 0x5c001800, 0x0501f002, 0x41301800, - 0x405e6000, 0x813261c0, 0x05fe07ec, 0x417a3000, - 0x0505f908, 0x59926005, 0x813261c0, 0x05000005, - 0x5932680a, 0x59340403, 0x81440580, 0x05000005, - 0x811a3000, 0x91180485, 0x05fc17f6, 0x0501f00d, - 0x5930001d, 0x81240580, 0x05fe07fa, 0x4c140000, - 0x0509f8aa, 0x5c002800, 0x05fc07f6, 0x0501fdea, - 0x0501fb83, 0x0501fb88, 0x0501fa3e, 0x05fdf7f1, - 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x5c00b800, 0x5c025800, 0x5c023000, - 0x5c026800, 0x5c026000, 0x5c03e000, 0x05000b95, - 0x1c01f000, 0x0501fb78, 0x58d4002f, 0x81300580, - 0x0502001c, 0x59300801, 0x800409c0, 0x0500000e, - 0x59300000, 0x800001c0, 0x05020005, 0x4805a82f, - 0x4805a82e, 0x497a6001, 0x1c01f000, 0x59300000, - 0x48000800, 0x4805a82f, 0x497a6000, 0x497a6001, - 0x1c01f000, 0x59300800, 0x800409c0, 0x05020005, - 0x4979a82f, 0x4979a82e, 0x497a680c, 0x1c01f000, - 0x4805a82f, 0x497a6000, 0x497a680c, 0x1c01f000, - 0x58d4002e, 0x81300580, 0x0502000c, 0x59300001, - 0x800001c0, 0x05020005, 0x4815a82e, 0x49782800, - 0x497a680c, 0x1c01f000, 0x4801a82e, 0x48002800, - 0x497a6001, 0x1c01f000, 0x59300000, 0x800001c0, - 0x05020008, 0x59300001, 0x48001801, 0x800001c0, - 0x05020002, 0x480e680c, 0x497a6001, 0x1c01f000, - 0x59300801, 0x800409c0, 0x05020006, 0x59300800, - 0x48042800, 0x497a6000, 0x497a680c, 0x1c01f000, - 0x59300000, 0x48000800, 0x48042800, 0x497a6000, - 0x497a6001, 0x1c01f000, 0x0501fb5d, 0x4df00000, - 0x0501f828, 0x050208ec, 0x05020960, 0x05020005, - 0x5c03e000, 0x05000b47, 0x80000580, 0x1c01f000, - 0x5c03e000, 0x05000b43, 0x90000541, 0x1c01f000, - 0x4d2c0000, 0x4d340000, 0x4d300000, 0x4c5c0000, - 0x4178b800, 0x598e6007, 0x813261c0, 0x0500000e, - 0x0509f83a, 0x05000009, 0x59300000, 0x4c000000, - 0x0501fa46, 0x405c3000, 0x0501f851, 0x0501f9cd, - 0x5c026000, 0x05fdf7f5, 0x4130b800, 0x59326000, - 0x05fdf7f2, 0x0509f8d3, 0x0509f8ee, 0x5c00b800, - 0x5c026000, 0x5c026800, 0x5c025800, 0x1c01f000, - 0x4933c857, 0x4c5c0000, 0x813261c0, 0x05c00bf7, - 0x41300000, 0x598cb807, 0x41783000, 0x805cb9c0, - 0x05000011, 0x805c0d80, 0x05000004, 0x405c3000, - 0x5818b800, 0x05fdf7fa, 0x0501f835, 0x598c000b, - 0x81300580, 0x0504084b, 0x59300403, 0xb0000582, - 0x05020002, 0x497a6008, 0x80000580, 0x5c00b800, - 0x1c01f000, 0x90000541, 0x5c00b800, 0x1c01f000, - 0x0501fb17, 0x4df00000, 0x4d2c0000, 0x4d340000, - 0x4d300000, 0x4c5c0000, 0x4178b800, 0x598e6007, - 0x813261c0, 0x05000015, 0x5932680a, 0x59340403, - 0x81440580, 0x0502000e, 0x5930001d, 0x81240580, - 0x0502000b, 0x0505fff9, 0x05000009, 0x59300000, - 0x4c000000, 0x0501fa05, 0x405c3000, 0x0501f810, - 0x0501f98c, 0x5c026000, 0x05fdf7ee, 0x4130b800, - 0x59326000, 0x05fdf7eb, 0x0509f846, 0x0509f8ad, + 0x5c026800, 0x5c03e000, 0x05000bf0, 0x90000541, + 0x1c01f000, 0x0501fbfc, 0x4df00000, 0x4d300000, + 0x4d340000, 0x4d180000, 0x4d2c0000, 0x4c5c0000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x58d6602f, 0x813261c0, 0x05000021, + 0x41302800, 0x5930b800, 0x5932680a, 0x59340403, + 0x81440580, 0x05000006, 0x805cb9c0, 0x05000019, + 0x41302800, 0x405e6000, 0x05fdf7f7, 0x5930001d, + 0x81240580, 0x05fe07f9, 0x5930b801, 0x4c0c0000, + 0x4c140000, 0x0509f901, 0x5c002800, 0x5c001800, + 0x05000008, 0x0501f831, 0x4c0c0000, 0x4c140000, + 0x0501fa63, 0x5c002800, 0x5c001800, 0x0501f002, + 0x41301800, 0x405e6000, 0x813261c0, 0x05fe07ec, + 0x417a3000, 0x0505f90d, 0x59926005, 0x813261c0, + 0x05000005, 0x5932680a, 0x59340403, 0x81440580, + 0x05000005, 0x811a3000, 0x91180485, 0x05fc17f6, + 0x0501f00d, 0x5930001d, 0x81240580, 0x05fe07fa, + 0x4c140000, 0x0509f8e1, 0x5c002800, 0x05fc07f6, + 0x0501fdef, 0x0501fb88, 0x0501fb8d, 0x0501fa44, + 0x05fdf7f1, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c00b800, 0x5c025800, + 0x5c023000, 0x5c026800, 0x5c026000, 0x5c03e000, + 0x05000b9a, 0x1c01f000, 0x0501fb7d, 0x58d4002f, + 0x81300580, 0x0502001c, 0x59300801, 0x800409c0, + 0x0500000e, 0x59300000, 0x800001c0, 0x05020005, + 0x4805a82f, 0x4805a82e, 0x497a6001, 0x1c01f000, + 0x59300000, 0x48000800, 0x4805a82f, 0x497a6000, + 0x497a6001, 0x1c01f000, 0x59300800, 0x800409c0, + 0x05020005, 0x4979a82f, 0x4979a82e, 0x497a680c, + 0x1c01f000, 0x4805a82f, 0x497a6000, 0x497a680c, + 0x1c01f000, 0x58d4002e, 0x81300580, 0x0502000c, + 0x59300001, 0x800001c0, 0x05020005, 0x4815a82e, + 0x49782800, 0x497a680c, 0x1c01f000, 0x4801a82e, + 0x48002800, 0x497a6001, 0x1c01f000, 0x59300000, + 0x800001c0, 0x05020008, 0x59300001, 0x48001801, + 0x800001c0, 0x05020002, 0x480e680c, 0x497a6001, + 0x1c01f000, 0x59300801, 0x800409c0, 0x05020006, + 0x59300800, 0x48042800, 0x497a6000, 0x497a680c, + 0x1c01f000, 0x59300000, 0x48000800, 0x48042800, + 0x497a6000, 0x497a6001, 0x1c01f000, 0x0501fb62, + 0x4df00000, 0x0501f828, 0x050208ec, 0x05020966, + 0x05020005, 0x5c03e000, 0x05000b4c, 0x80000580, + 0x1c01f000, 0x5c03e000, 0x05000b48, 0x90000541, + 0x1c01f000, 0x4d2c0000, 0x4d340000, 0x4d300000, + 0x4c5c0000, 0x4178b800, 0x598e6007, 0x813261c0, + 0x0500000e, 0x0509f871, 0x05000009, 0x59300000, + 0x4c000000, 0x0501fa4a, 0x405c3000, 0x0501f851, + 0x0501f9d3, 0x5c026000, 0x05fdf7f5, 0x4130b800, + 0x59326000, 0x05fdf7f2, 0x0509f90a, 0x0509f929, 0x5c00b800, 0x5c026000, 0x5c026800, 0x5c025800, - 0x5c03e000, 0x05000ae3, 0x1c01f000, 0x59300800, - 0x497a6000, 0x0501fac4, 0x801831c0, 0x05020009, - 0x598c0006, 0x81300580, 0x05020004, 0x48031806, - 0x48031807, 0x0501f008, 0x48071807, 0x0501f006, - 0x48043000, 0x598c0006, 0x81300580, 0x05020002, - 0x481b1806, 0x0501f2c8, 0x4d300000, 0x598e6005, - 0x813261c0, 0x05000008, 0x59300000, 0x4c000000, - 0x0501f9da, 0x0005ffdc, 0x0501fabf, 0x5c026000, - 0x05fdf7f8, 0x497b1805, 0x497b1804, 0x5c026000, - 0x1c01f000, 0x0501face, 0x4df00000, 0x4d300000, - 0x4c5c0000, 0x4c600000, 0x4130c000, 0x4178b800, - 0x598e6005, 0x813261c0, 0x05000036, 0x5930080a, - 0x800409c0, 0x0502000d, 0x4d340000, 0x0001fb00, - 0x41340800, 0x5c026800, 0x0502002b, 0x58040802, - 0x59300019, 0x80040580, 0x82000500, 0x00ffffff, - 0x05000005, 0x0501f024, 0x58040403, 0x81440580, - 0x05020021, 0x5930501a, 0x59340013, 0x82000500, - 0x00ffffff, 0x80280580, 0x0502001b, 0x5930002a, - 0x80600580, 0x05000018, 0x0501f9ac, 0x59302000, - 0x497a6000, 0x805cb9c0, 0x05020009, 0x598c0004, - 0x81300580, 0x05020004, 0x497b1805, 0x497b1804, - 0x0501f008, 0x48131805, 0x0501f006, 0x4810b800, - 0x598c0004, 0x81300580, 0x05020002, 0x485f1804, - 0x4c100000, 0x0005ffdc, 0x0501fa7f, 0x5c026000, - 0x05fdf7cd, 0x4130b800, 0x59326000, 0x05fdf7ca, - 0x5c00c000, 0x5c00b800, 0x5c026000, 0x5c03e000, - 0x05000a7c, 0x1c01f000, 0x4d2c0000, 0x4d300000, - 0x4d340000, 0x4c5c0000, 0x4178b800, 0x598e6009, - 0x813261c0, 0x0500000e, 0x0505ff74, 0x05000009, - 0x0501f982, 0x59300000, 0x4c000000, 0x405c3000, - 0x0501f855, 0x0501f907, 0x5c026000, 0x05fdf7f5, - 0x4130b800, 0x59326000, 0x05fdf7f2, 0x05e9fc6d, - 0x5c00b800, 0x5c026800, 0x5c026000, 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000, 0x813261c0, - 0x05c00b32, 0x41300000, 0x598cb809, 0x41783000, - 0x805cb9c0, 0x0500000e, 0x805c0d80, 0x05000004, - 0x405c3000, 0x5818b800, 0x05fdf7fa, 0x0501f83a, - 0x598c000b, 0x81300580, 0x05000f86, 0x497a6008, - 0x80000580, 0x5c00b800, 0x1c01f000, 0x90000541, - 0x5c00b800, 0x1c01f000, 0x0501fa55, 0x4df00000, - 0x4d340000, 0x4d300000, 0x4d2c0000, 0x4c5c0000, - 0x83440480, 0x000007f0, 0x05021020, 0x0001fb00, - 0x05c20b12, 0x4178b800, 0x598e6009, 0x813261c0, - 0x05000014, 0x5930000a, 0x81340580, 0x0502000e, - 0x5930001d, 0x81240580, 0x0502000b, 0x0505ff33, - 0x05000009, 0x0501f941, 0x59300000, 0x4c000000, - 0x405c3000, 0x0501f814, 0x0501f8c6, 0x5c026000, - 0x05fdf7ef, 0x4130b800, 0x59326000, 0x05fdf7ec, - 0x8d3c0506, 0x05000004, 0x59340200, 0x8c00050e, - 0x05020002, 0x05e9fc46, 0x5c00b800, 0x5c025800, - 0x5c026000, 0x5c026800, 0x5c03e000, 0x05000a19, - 0x1c01f000, 0x59300800, 0x497a6000, 0x0501f9fa, - 0x801831c0, 0x05020009, 0x598c0008, 0x81300580, - 0x05020004, 0x48031808, 0x48031809, 0x0501f008, - 0x48071809, 0x0501f006, 0x48043000, 0x598c0008, - 0x81300580, 0x05020002, 0x481b1808, 0x0501f1fe, - 0x0501fa13, 0x4df00000, 0x4d300000, 0x4c5c0000, - 0x4178b800, 0x598e6003, 0x813261c0, 0x0500000e, - 0x0505fefe, 0x05000009, 0x0501f90c, 0x59300000, - 0x4c000000, 0x405c3000, 0x0501f86c, 0x0501f891, - 0x5c026000, 0x05fdf7f5, 0x4130b800, 0x59326000, - 0x05fdf7f2, 0x5c00b800, 0x5c026000, 0x5c03e000, - 0x050009ec, 0x1c01f000, 0x4933c857, 0x4c5c0000, - 0x4c600000, 0x813261c0, 0x05c00abc, 0x41300000, - 0x598cb803, 0x405cc000, 0x805cb9c0, 0x05000024, - 0x805c0d80, 0x05000004, 0x405cc000, 0x5860b800, - 0x05fdf7fa, 0x598c000b, 0x81300580, 0x05000f11, - 0x0501f9bd, 0x598c0003, 0x805c0580, 0x05020009, - 0x585c0000, 0x48031803, 0x4978b800, 0x598c0002, - 0x805c0580, 0x0502000d, 0x497b1802, 0x0501f00b, - 0x598c0002, 0x805c0580, 0x05020005, 0x48631802, - 0x4978b800, 0x4978c000, 0x0501f004, 0x585c0000, - 0x4800c000, 0x4978b800, 0x0501f9bb, 0x80000580, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x90000541, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x0501f9c7, 0x4df00000, 0x4d2c0000, 0x4d340000, - 0x4d300000, 0x4c5c0000, 0x4178b800, 0x598e6003, - 0x813261c0, 0x0500001e, 0x5932680a, 0x59340403, - 0x81440580, 0x05020017, 0x812649c0, 0x05000004, - 0x5930001d, 0x81240580, 0x05020012, 0x0505fea7, - 0x05000010, 0x0515f968, 0x05000006, 0x0515ffea, - 0x05020004, 0x59300403, 0xb0000583, 0x05140feb, - 0x0501f8ae, 0x59300000, 0x4c000000, 0x405c3000, - 0x0501f80e, 0x0501f833, 0x5c026000, 0x05fdf7e5, - 0x4130b800, 0x59326000, 0x05fdf7e2, 0x5c00b800, - 0x5c026000, 0x5c026800, 0x5c025800, 0x5c03e000, - 0x0500098c, 0x1c01f000, 0x59300800, 0x497a6000, - 0x0501f96d, 0x801831c0, 0x05020009, 0x598c0002, - 0x81300580, 0x05020004, 0x48031802, 0x48031803, - 0x0501f008, 0x48071803, 0x0501f006, 0x48043000, - 0x598c0002, 0x81300580, 0x05020002, 0x481b1802, - 0x0501f171, 0x4943c857, 0x0501f985, 0x4df00000, - 0x05fdfe34, 0x05fdfef9, 0x5c03e000, 0x05000971, - 0x1c01f000, 0x4947c857, 0x0501f97d, 0x4df00000, - 0x4d3c0000, 0x853e7d00, 0x05fdfe62, 0x05fdff23, - 0x5c027800, 0x5c03e000, 0x05000966, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4d340000, - 0x4d2c0000, 0x5932680a, 0x59325809, 0x59300407, - 0x90000c92, 0x05c21a31, 0x4933c857, 0x4943c857, - 0x493fc857, 0x4803c857, 0x0c01f804, 0x5c025800, - 0x5c026800, 0x1c01f000, 0x001083c4, 0x001083c5, - 0x001083cb, 0x001083ed, 0x001083c5, 0x001083d3, - 0x00108401, 0x001083c4, 0x001083c4, 0x001083c4, - 0x00108408, 0x001083c4, 0x001083c4, 0x001083c4, - 0x001083c4, 0x001083c4, 0x0010840e, 0x0010840e, - 0x05c1fa16, 0x0525fa91, 0x0515f9f5, 0x05cc0fac, - 0x0515fcbd, 0x0509fefa, 0x0509f006, 0x0515f8fe, - 0x05000006, 0x49425a0a, 0x0001fb82, 0x59300229, - 0x90000583, 0x051409d7, 0x0505f7fe, 0x83300580, - 0x00111a40, 0x05020015, 0x0515f8f3, 0x05000010, - 0x59a8009d, 0x812c0580, 0x05c20a00, 0x592c0000, - 0x4803509d, 0x800001c0, 0x05020002, 0x4803509e, - 0x592c1208, 0xb0080595, 0x05020003, 0x05c1fdaf, - 0x0501f003, 0x49425a0a, 0x0001fb82, 0x64026203, - 0x497a6009, 0x1c01f000, 0x0515f8df, 0x050407e5, - 0x05c1f9ee, 0x59300008, 0x8c000500, 0x05c60c5a, - 0x0515f8d9, 0x0500000f, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000594, 0x051609b2, 0x0519faba, - 0x05f5f810, 0x4a025a08, 0x00000103, 0x49425a0a, - 0x497a580d, 0x0515fa27, 0x0521ff33, 0x0001fb82, - 0x0505f7d0, 0x59300008, 0x8c000500, 0x05c60c46, - 0x0515f8c5, 0x05220b81, 0x0519faab, 0x0505f7c9, - 0x0515f8c1, 0x05000004, 0x49425a0a, 0x497a5c0d, - 0x0001fb82, 0x0505f7c3, 0x05c9fafb, 0x0515f8ba, - 0x05000003, 0x49425a0a, 0x0001fb82, 0x59325819, - 0x05c1fd87, 0x0505f7bb, 0x598c000b, 0x81300580, - 0x05000003, 0x497a6008, 0x1c01f000, 0x59c40004, - 0x9000050c, 0x05000005, 0x64338804, 0x4a01a8e5, - 0x00000800, 0x0501f008, 0x0501fb80, 0x59300403, - 0xb0000d80, 0x05000003, 0xb0000582, 0x05020002, - 0x497a6008, 0x0501fe13, 0x80000580, 0x1c01f000, - 0x59300804, 0x8c040520, 0x05020003, 0x90000541, - 0x1c01f000, 0x4933c857, 0x59300804, 0x84040d20, - 0x48066004, 0x640a6203, 0x80000580, 0x1c01f000, - 0x4933c857, 0x4d380000, 0x59300804, 0x84040d20, - 0x48066004, 0x61267000, 0x59300203, 0x90000583, - 0x05000002, 0x604e7000, 0x0009f800, 0x80000580, - 0x5c027000, 0x1c01f000, 0x59300019, 0x81480580, - 0x05020003, 0x5930001a, 0x814c0580, 0x1c01f000, - 0x4d2c0000, 0x4d300000, 0x0501f8c5, 0x4df00000, - 0x05f9fb8b, 0x59900002, 0x90000503, 0x0c01f001, - 0x00108464, 0x00108459, 0x00108458, 0x00108458, - 0x05c1f982, 0x59926005, 0x0501f889, 0x813261c0, - 0x05000008, 0x59300004, 0x8c000516, 0x05000004, - 0x59325809, 0x497a580c, 0x497a580d, 0x0501f886, - 0x5c03e000, 0x0500089f, 0x5c026000, 0x5c025800, - 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, - 0x4d300000, 0x4a01a8e5, 0x00000800, 0x0501f8a4, - 0x4df00000, 0x598c0000, 0x90000507, 0x4803c857, - 0x0c01f001, 0x0010849b, 0x0010847e, 0x00108485, - 0x00108488, 0x00108494, 0x0010849b, 0x00108498, - 0x0010847d, 0x05c1f95d, 0x598c000b, 0x80026540, - 0x05000003, 0x0501f81e, 0x05c20958, 0x0501fdb9, - 0x0501f017, 0x0501f829, 0x0501fdb6, 0x0501f014, - 0x598c000b, 0x80026540, 0x05000011, 0x0501f83a, - 0x05000006, 0x0501f847, 0x05000004, 0x0501f810, - 0x05000002, 0x0501f81d, 0x0501fdaa, 0x0501f008, - 0x0501f840, 0x05c20945, 0x0501fda6, 0x0501f004, - 0x0501f82d, 0x05c20941, 0x0501fda2, 0x5c03e000, - 0x05000868, 0x5c026000, 0x1c01f000, 0x598c0007, - 0x81300580, 0x0502000c, 0x0501f85b, 0x0501f846, - 0x59300000, 0x800001c0, 0x05000004, 0x48031807, - 0x497a6000, 0x0501f003, 0x497b1807, 0x497b1806, - 0x80000580, 0x1c01f000, 0x4d2c0000, 0x59300407, - 0x90000583, 0x05020012, 0x598c0009, 0x81300580, - 0x0502000f, 0x0501f848, 0x59325809, 0x497a580c, - 0x497a580d, 0x0501f830, 0x59300000, 0x800001c0, - 0x05000004, 0x48031809, 0x497a6000, 0x0501f003, - 0x497b1808, 0x497b1809, 0x80000580, 0x5c025800, - 0x1c01f000, 0x598c0005, 0x81300580, 0x0502000c, - 0x0501f835, 0x0501f820, 0x59300000, 0x800001c0, - 0x05000004, 0x48031805, 0x497a6000, 0x0501f003, - 0x497b1805, 0x497b1804, 0x80000580, 0x1c01f000, - 0x598c0003, 0x81300580, 0x0502000c, 0x0501f826, - 0x0501f811, 0x59300000, 0x800001c0, 0x05000004, - 0x48031803, 0x497a6000, 0x0501f003, 0x497b1803, - 0x497b1802, 0x80000580, 0x1c01f000, 0x64032002, - 0x497b2005, 0x497b2006, 0x497b2007, 0x4979b003, - 0x1c01f000, 0x4c040000, 0x59300004, 0x8c000516, - 0x05020003, 0x82000500, 0xffd7ffff, 0x82000500, - 0x7ffef7ff, 0x48026004, 0x58d400e4, 0x8c000514, - 0x05000007, 0x58d40011, 0x81300580, 0x05020004, - 0x4979a811, 0x4a01a8e4, 0x00000800, 0x5c000800, - 0x1c01f000, 0x4803c856, 0x598c000a, 0x80000540, - 0x05000003, 0x80000040, 0x4803180a, 0x1c01f000, - 0x58d400ea, 0x90000507, 0x90000583, 0x05020003, - 0x4803c856, 0x6405a8e8, 0x59bc00ea, 0x90000507, - 0x90000583, 0x05020005, 0x4803c856, 0x640778e8, - 0x4a0370e4, 0x00000800, 0x1c01f000, 0x60042800, - 0x58d400ea, 0x90000507, 0x90000581, 0x0502000d, - 0x4803c856, 0x60000800, 0x0501f830, 0x60000820, + 0x05bc0f79, 0x41300000, 0x598cb807, 0x41783000, + 0x805cb9c0, 0x05000011, 0x805c0d80, 0x05000004, + 0x405c3000, 0x5818b800, 0x05fdf7fa, 0x0501f835, + 0x598c000b, 0x81300580, 0x05040850, 0x59300403, + 0xb0000582, 0x05020002, 0x497a6008, 0x80000580, + 0x5c00b800, 0x1c01f000, 0x90000541, 0x5c00b800, + 0x1c01f000, 0x0501fb1c, 0x4df00000, 0x4d2c0000, + 0x4d340000, 0x4d300000, 0x4c5c0000, 0x4178b800, + 0x598e6007, 0x813261c0, 0x05000015, 0x5932680a, + 0x59340403, 0x81440580, 0x0502000e, 0x5930001d, + 0x81240580, 0x0502000b, 0x0509f830, 0x05000009, + 0x59300000, 0x4c000000, 0x0501fa09, 0x405c3000, + 0x0501f810, 0x0501f992, 0x5c026000, 0x05fdf7ee, + 0x4130b800, 0x59326000, 0x05fdf7eb, 0x0509f87d, + 0x0509f8e8, 0x5c00b800, 0x5c026000, 0x5c026800, + 0x5c025800, 0x5c03e000, 0x05000ae8, 0x1c01f000, + 0x59300800, 0x497a6000, 0x0501fac9, 0x801831c0, + 0x05020009, 0x598c0006, 0x81300580, 0x05020004, + 0x48031806, 0x48031807, 0x0501f008, 0x48071807, + 0x0501f006, 0x48043000, 0x598c0006, 0x81300580, + 0x05020002, 0x481b1806, 0x0501f2cd, 0x4d300000, + 0x598e6005, 0x813261c0, 0x05000008, 0x59300000, + 0x4c000000, 0x0501f9de, 0x0009f810, 0x0501fac4, + 0x5c026000, 0x05fdf7f8, 0x497b1805, 0x497b1804, + 0x5c026000, 0x1c01f000, 0x0501fad3, 0x4df00000, + 0x4d300000, 0x4c5c0000, 0x4c600000, 0x4130c000, + 0x4178b800, 0x598e6005, 0x813261c0, 0x05000036, + 0x5930080a, 0x800409c0, 0x0502000d, 0x4d340000, + 0x0001fb08, 0x41340800, 0x5c026800, 0x0502002b, + 0x58040802, 0x59300019, 0x80040580, 0x82000500, + 0x00ffffff, 0x05000005, 0x0501f024, 0x58040403, + 0x81440580, 0x05020021, 0x5930501a, 0x59340013, + 0x82000500, 0x00ffffff, 0x80280580, 0x0502001b, + 0x5930002a, 0x80600580, 0x05000018, 0x0501f9b0, + 0x59302000, 0x497a6000, 0x805cb9c0, 0x05020009, + 0x598c0004, 0x81300580, 0x05020004, 0x497b1805, + 0x497b1804, 0x0501f008, 0x48131805, 0x0501f006, + 0x4810b800, 0x598c0004, 0x81300580, 0x05020002, + 0x485f1804, 0x4c100000, 0x0009f810, 0x0501fa84, + 0x5c026000, 0x05fdf7cd, 0x4130b800, 0x59326000, + 0x05fdf7ca, 0x5c00c000, 0x5c00b800, 0x5c026000, + 0x5c03e000, 0x05000a81, 0x1c01f000, 0x4d2c0000, + 0x4d300000, 0x4d340000, 0x4c5c0000, 0x4178b800, + 0x598e6009, 0x813261c0, 0x0500000e, 0x0505ffab, + 0x05000009, 0x0501f986, 0x59300000, 0x4c000000, + 0x405c3000, 0x0501f85b, 0x0501f90d, 0x5c026000, + 0x05fdf7f5, 0x4130b800, 0x59326000, 0x05fdf7f2, + 0x05e9fa1a, 0x5c00b800, 0x5c026800, 0x5c026000, + 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000, + 0x813261c0, 0x05bc0eb4, 0x41300000, 0x598cb809, + 0x41783000, 0x805cb9c0, 0x0500000e, 0x805c0d80, + 0x05000004, 0x405c3000, 0x5818b800, 0x05fdf7fa, + 0x0501f840, 0x598c000b, 0x81300580, 0x05000f8b, + 0x497a6008, 0x80000580, 0x5c00b800, 0x1c01f000, + 0x90000541, 0x5c00b800, 0x1c01f000, 0x0501fa5a, + 0x4df00000, 0x4d340000, 0x4d300000, 0x4d2c0000, + 0x4c5c0000, 0x83440480, 0x000007f0, 0x05001004, + 0x83440480, 0x00000800, 0x05001023, 0x83440580, + 0x0000ffff, 0x05000020, 0x0001fb08, 0x05be0e8e, + 0x4178b800, 0x598e6009, 0x813261c0, 0x05000014, + 0x5930000a, 0x81340580, 0x0502000e, 0x5930001d, + 0x81240580, 0x0502000b, 0x0505ff64, 0x05000009, + 0x0501f93f, 0x59300000, 0x4c000000, 0x405c3000, + 0x0501f814, 0x0501f8c6, 0x5c026000, 0x05fdf7ef, + 0x4130b800, 0x59326000, 0x05fdf7ec, 0x8d3c0506, + 0x05000004, 0x59340200, 0x8c00050e, 0x05020002, + 0x05e9f9f1, 0x5c00b800, 0x5c025800, 0x5c026000, + 0x5c026800, 0x5c03e000, 0x05000a18, 0x1c01f000, + 0x59300800, 0x497a6000, 0x0501f9f9, 0x801831c0, + 0x05020009, 0x598c0008, 0x81300580, 0x05020004, + 0x48031808, 0x48031809, 0x0501f008, 0x48071809, + 0x0501f006, 0x48043000, 0x598c0008, 0x81300580, + 0x05020002, 0x481b1808, 0x0501f1fd, 0x0501fa12, + 0x4df00000, 0x4d300000, 0x4c5c0000, 0x4178b800, + 0x598e6003, 0x813261c0, 0x0500000e, 0x0505ff2f, + 0x05000009, 0x0501f90a, 0x59300000, 0x4c000000, + 0x405c3000, 0x0501f86c, 0x0501f891, 0x5c026000, + 0x05fdf7f5, 0x4130b800, 0x59326000, 0x05fdf7f2, + 0x5c00b800, 0x5c026000, 0x5c03e000, 0x050009eb, + 0x1c01f000, 0x4933c857, 0x4c5c0000, 0x4c600000, + 0x813261c0, 0x05bc0e38, 0x41300000, 0x598cb803, + 0x405cc000, 0x805cb9c0, 0x05000024, 0x805c0d80, + 0x05000004, 0x405cc000, 0x5860b800, 0x05fdf7fa, + 0x598c000b, 0x81300580, 0x05000f10, 0x0501f9bc, + 0x598c0003, 0x805c0580, 0x05020009, 0x585c0000, + 0x48031803, 0x4978b800, 0x598c0002, 0x805c0580, + 0x0502000d, 0x497b1802, 0x0501f00b, 0x598c0002, + 0x805c0580, 0x05020005, 0x48631802, 0x4978b800, + 0x4978c000, 0x0501f004, 0x585c0000, 0x4800c000, + 0x4978b800, 0x0501f9ba, 0x80000580, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x90000541, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4933c857, 0x0501f9c6, + 0x4df00000, 0x4d2c0000, 0x4d340000, 0x4d300000, + 0x4c5c0000, 0x4178b800, 0x598e6003, 0x813261c0, + 0x0500001e, 0x5932680a, 0x59340403, 0x81440580, + 0x05020017, 0x812649c0, 0x05000004, 0x5930001d, + 0x81240580, 0x05020012, 0x0505fed8, 0x05000010, + 0x0515fa32, 0x05000006, 0x0519f8d1, 0x05020004, + 0x59300403, 0xb0000583, 0x051808d2, 0x0501f8ac, + 0x59300000, 0x4c000000, 0x405c3000, 0x0501f80e, + 0x0501f833, 0x5c026000, 0x05fdf7e5, 0x4130b800, + 0x59326000, 0x05fdf7e2, 0x5c00b800, 0x5c026000, + 0x5c026800, 0x5c025800, 0x5c03e000, 0x0500098b, + 0x1c01f000, 0x59300800, 0x497a6000, 0x0501f96c, + 0x801831c0, 0x05020009, 0x598c0002, 0x81300580, + 0x05020004, 0x48031802, 0x48031803, 0x0501f008, + 0x48071803, 0x0501f006, 0x48043000, 0x598c0002, + 0x81300580, 0x05020002, 0x481b1802, 0x0501f170, + 0x4943c857, 0x0501f984, 0x4df00000, 0x05fdfe2e, + 0x05fdfef3, 0x5c03e000, 0x05000970, 0x1c01f000, + 0x4947c857, 0x0501f97c, 0x4df00000, 0x4d3c0000, + 0x853e7d00, 0x05fdfe5c, 0x05fdff1d, 0x5c027800, + 0x5c03e000, 0x05000965, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4d340000, 0x4d2c0000, + 0x5932680a, 0x59325809, 0x59300407, 0x90000c92, + 0x05be1dad, 0x4933c857, 0x4943c857, 0x493fc857, + 0x4803c857, 0x0c01f804, 0x5c025800, 0x5c026800, + 0x1c01f000, 0x00108883, 0x00108884, 0x0010888a, + 0x001088ac, 0x00108884, 0x00108892, 0x001088c0, + 0x00108883, 0x00108883, 0x00108883, 0x001088c7, + 0x00108883, 0x00108883, 0x00108883, 0x00108883, + 0x00108883, 0x001088cd, 0x001088cd, 0x05bdfd92, + 0x0525fd39, 0x0515facf, 0x05cc0b84, 0x0515fd96, + 0x0509ff75, 0x0509f05c, 0x0515f9c8, 0x05000006, + 0x49425a0a, 0x0001fba8, 0x59300229, 0x90000583, + 0x05140ab1, 0x0509f054, 0x83300580, 0x001159e4, + 0x05020015, 0x0515f9bd, 0x05000010, 0x59a800a0, + 0x812c0580, 0x05be0d7c, 0x592c0000, 0x480350a0, + 0x800001c0, 0x05020002, 0x480350a1, 0x592c1208, + 0xb0080595, 0x05020003, 0x05c1f927, 0x0501f003, + 0x49425a0a, 0x0001fba8, 0x64026203, 0x497a6009, + 0x1c01f000, 0x0515f9a9, 0x0508003b, 0x05bdfd6a, + 0x59300008, 0x8c000500, 0x05c60839, 0x0515f9a3, + 0x0500000f, 0x592c0208, 0x82000500, 0x000000ff, + 0x90000594, 0x05160a8c, 0x0519fba1, 0x05f1fed9, + 0x4a025a08, 0x00000103, 0x49425a0a, 0x497a580d, + 0x0515fb01, 0x0525f9be, 0x0001fba8, 0x0509f026, + 0x59300008, 0x8c000500, 0x05c60825, 0x0515f98f, + 0x05220e07, 0x0519fb92, 0x0509f01f, 0x0515f98b, + 0x05000004, 0x49425a0a, 0x497a5c0d, 0x0001fba8, + 0x0509f019, 0x05c5fead, 0x0515f984, 0x05080016, + 0x49425a0a, 0x0001fba8, 0x0509f013, 0x598c000b, + 0x81300580, 0x05000003, 0x497a6008, 0x1c01f000, + 0x59c40004, 0x9000050c, 0x05000005, 0x64338804, + 0x4a01a8e5, 0x00000800, 0x0501f008, 0x0501fb81, + 0x59300403, 0xb0000d80, 0x05000003, 0xb0000582, + 0x05020002, 0x497a6008, 0x0501fe14, 0x80000580, + 0x1c01f000, 0x59300804, 0x4807c857, 0x8c040520, + 0x05020003, 0x90000541, 0x1c01f000, 0x4933c857, + 0x59300804, 0x84040d20, 0x48066004, 0x640a6203, + 0x80000580, 0x1c01f000, 0x4933c857, 0x4d380000, + 0x59300804, 0x84040d20, 0x48066004, 0x61267000, + 0x59300203, 0x90000583, 0x05000002, 0x604e7000, + 0x0009f839, 0x80000580, 0x5c027000, 0x1c01f000, + 0x59300019, 0x81480580, 0x05020003, 0x5930001a, + 0x814c0580, 0x1c01f000, 0x4d2c0000, 0x4d300000, + 0x0501f8c5, 0x4df00000, 0x05f9fb31, 0x59900002, + 0x90000503, 0x0c01f001, 0x00108922, 0x00108917, + 0x00108916, 0x00108916, 0x05bdfcff, 0x59926005, + 0x0501f889, 0x813261c0, 0x05000008, 0x59300004, + 0x8c000516, 0x05000004, 0x59325809, 0x497a580c, + 0x497a580d, 0x0501f886, 0x5c03e000, 0x0500089f, + 0x5c026000, 0x5c025800, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4d300000, 0x4a01a8e5, + 0x00000800, 0x0501f8a4, 0x4df00000, 0x598c0000, + 0x90000507, 0x4803c857, 0x0c01f001, 0x00108959, + 0x0010893c, 0x00108943, 0x00108946, 0x00108952, + 0x00108959, 0x00108956, 0x0010893b, 0x05bdfcda, + 0x598c000b, 0x80026540, 0x05000003, 0x0501f81e, + 0x05be0cd5, 0x0501fdb9, 0x0501f017, 0x0501f829, + 0x0501fdb6, 0x0501f014, 0x598c000b, 0x80026540, + 0x05000011, 0x0501f83a, 0x05000006, 0x0501f847, + 0x05000004, 0x0501f810, 0x05000002, 0x0501f81d, + 0x0501fdaa, 0x0501f008, 0x0501f840, 0x05be0cc2, + 0x0501fda6, 0x0501f004, 0x0501f82d, 0x05be0cbe, + 0x0501fda2, 0x5c03e000, 0x05000868, 0x5c026000, + 0x1c01f000, 0x598c0007, 0x81300580, 0x0502000c, + 0x0501f85b, 0x0501f846, 0x59300000, 0x800001c0, + 0x05000004, 0x48031807, 0x497a6000, 0x0501f003, + 0x497b1807, 0x497b1806, 0x80000580, 0x1c01f000, + 0x4d2c0000, 0x59300407, 0x90000583, 0x05020012, + 0x598c0009, 0x81300580, 0x0502000f, 0x0501f848, + 0x59325809, 0x497a580c, 0x497a580d, 0x0501f830, + 0x59300000, 0x800001c0, 0x05000004, 0x48031809, + 0x497a6000, 0x0501f003, 0x497b1808, 0x497b1809, + 0x80000580, 0x5c025800, 0x1c01f000, 0x598c0005, + 0x81300580, 0x0502000c, 0x0501f835, 0x0501f820, + 0x59300000, 0x800001c0, 0x05000004, 0x48031805, + 0x497a6000, 0x0501f003, 0x497b1805, 0x497b1804, + 0x80000580, 0x1c01f000, 0x598c0003, 0x81300580, + 0x0502000c, 0x0501f826, 0x0501f811, 0x59300000, + 0x800001c0, 0x05000004, 0x48031803, 0x497a6000, + 0x0501f003, 0x497b1803, 0x497b1802, 0x80000580, + 0x1c01f000, 0x64032002, 0x497b2005, 0x497b2006, + 0x497b2007, 0x4979b003, 0x1c01f000, 0x4c040000, + 0x59300004, 0x8c000516, 0x05020003, 0x82000500, + 0xffd7ffff, 0x82000500, 0x7ffef7ff, 0x48026004, + 0x58d400e4, 0x8c000514, 0x05000007, 0x58d40011, + 0x81300580, 0x05020004, 0x4979a811, 0x4a01a8e4, + 0x00000800, 0x5c000800, 0x1c01f000, 0x4803c856, + 0x598c000a, 0x80000540, 0x05000003, 0x80000040, + 0x4803180a, 0x1c01f000, 0x59bc00ea, 0x90000507, + 0x90000583, 0x05020003, 0x4803c856, 0x640778e8, + 0x58d400ea, 0x90000507, 0x90000583, 0x05020005, + 0x4803c856, 0x6405a8e8, 0x4a0370e4, 0x00000800, + 0x1c01f000, 0x60042800, 0x58d400ea, 0x90000507, + 0x90000581, 0x0502000f, 0x4803c856, 0x60000800, + 0x0501f830, 0x4a0370e4, 0x00000c00, 0x60000820, 0x58d400ea, 0x90000507, 0x90000583, 0x05000004, - 0x80040840, 0x05fe07fb, 0x05c1f8b8, 0x41782800, - 0x59bc00ea, 0x90000507, 0x90000581, 0x0502000f, - 0x4803c856, 0x60000800, 0x0501f80e, 0x4a0370e4, - 0x00000c00, 0x42000800, 0x00010000, 0x59bc00ea, - 0x90000507, 0x90000583, 0x05000005, 0x80040840, - 0x05fe07fb, 0x05c1f8a5, 0x801429c0, 0x1c01f000, - 0x59bc00ea, 0x90000507, 0x90000581, 0x05c2089f, - 0x59bc00ea, 0x8c000516, 0x05fe07fe, 0x480778e1, - 0x1c01f000, 0x59bc00ea, 0x8c000516, 0x05fe07fe, - 0x480778e1, 0x59bc00ea, 0x8c000516, 0x05fe07fe, - 0x480b78e1, 0x1c01f000, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x4805a8e1, 0x1c01f000, 0x58d400ea, - 0x8c000516, 0x05fe07fe, 0x4805a8e1, 0x58d400ea, - 0x8c000516, 0x05fe07fe, 0x4809a8e1, 0x1c01f000, - 0x4a0378e4, 0x00002000, 0x42007000, 0x0010e060, - 0x58380401, 0x8c000506, 0x05020003, 0x4a01a8e4, - 0x00008000, 0x1c01f000, 0x82000d00, 0x02000018, - 0x05c2086f, 0x05c1f875, 0x001086c7, 0x001086dc, - 0x0010856d, 0x001086c6, 0x0010856c, 0x00108660, - 0x05c1f86e, 0x4d2c0000, 0x4d300000, 0x58d400ea, - 0x8c000510, 0x05fc07fe, 0x58d660e0, 0x813261c0, - 0x05c00866, 0x59300004, 0x8c000520, 0x05000010, - 0x82000500, 0xfffefeff, 0x48026004, 0x59325809, - 0x59301407, 0x90080583, 0x05000006, 0x90080586, - 0x05c2085a, 0x592c0a0a, 0x0005fe45, 0x0501f006, - 0x0001fb82, 0x0005ffdc, 0x0501f003, 0x84000510, - 0x48026004, 0x5c026000, 0x5c025800, 0x1c01f000, - 0x82000d00, 0x82000018, 0x05c20845, 0x05c1f84b, - 0x001085a0, 0x001085a0, 0x001085a0, 0x001085a1, - 0x001085c1, 0x00108642, 0x001085a0, 0x00108695, - 0x001085a0, 0x001086c6, 0x001085e0, 0x00020eff, - 0x00108623, 0x001085a0, 0x001085a0, 0x001085a0, - 0x05c1f83a, 0x4d300000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fcad, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x59300004, 0x8c000520, 0x05000010, 0x82000500, - 0xfffefeff, 0x48026004, 0x05fdff61, 0x05c5fc2f, - 0x05c5fc8e, 0x05c5fc4d, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c026000, - 0x642378e4, 0x05fdf747, 0x84000510, 0x48026004, - 0x05fdf7f6, 0x4d300000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fc8d, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x59300004, 0x8c000520, 0x0500000f, 0x82000500, - 0xfffefeff, 0x48026004, 0x640e6203, 0x05fdff40, - 0x05c5fbbf, 0x5c01b000, 0x5c022800, 0x5c034800, - 0x5c03a000, 0x5c032000, 0x5c026000, 0x642378e4, - 0x05fdf728, 0x84000510, 0x48026004, 0x05fdf7f6, - 0x4d300000, 0x4d2c0000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fc6d, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x59300004, 0x8c000520, 0x0500001a, 0x82000500, - 0xfffefeff, 0x48026004, 0x640e6203, 0x59325809, - 0x812e59c0, 0x05bc0fe5, 0x42000000, 0x0010e477, - 0x0525f9e4, 0x592c020c, 0x84000552, 0x48025a0c, - 0x05c5ff35, 0x05fdff16, 0x05c5fb95, 0x5c01b000, + 0x80040840, 0x05fe07fb, 0x05bdfc33, 0x41782800, + 0x59bc00ea, 0x90000507, 0x90000581, 0x0502000d, + 0x4803c856, 0x60000800, 0x0501f80c, 0x42000800, + 0x00010000, 0x59bc00ea, 0x90000507, 0x90000583, + 0x05000005, 0x80040840, 0x05fe07fb, 0x05bdfc22, + 0x801429c0, 0x1c01f000, 0x59bc00ea, 0x90000507, + 0x90000581, 0x05be0c1c, 0x59bc00ea, 0x8c000516, + 0x05fe07fe, 0x480778e1, 0x1c01f000, 0x59bc00ea, + 0x8c000516, 0x05fe07fe, 0x480778e1, 0x59bc00ea, + 0x8c000516, 0x05fe07fe, 0x480b78e1, 0x1c01f000, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x4805a8e1, + 0x1c01f000, 0x58d400ea, 0x8c000516, 0x05fe07fe, + 0x4805a8e1, 0x58d400ea, 0x8c000516, 0x05fe07fe, + 0x4809a8e1, 0x1c01f000, 0x4a0378e4, 0x00002000, + 0x42007000, 0x00111ffa, 0x58380401, 0x8c000506, + 0x05020003, 0x4a01a8e4, 0x00008000, 0x1c01f000, + 0x82000d00, 0x02000018, 0x05be0bec, 0x05bdfbf2, + 0x00108b85, 0x00108b9a, 0x00108a2b, 0x00108b84, + 0x00108a2a, 0x00108b1e, 0x05bdfbeb, 0x4d2c0000, + 0x4d300000, 0x58d400ea, 0x8c000510, 0x05fc07fe, + 0x58d660e0, 0x813261c0, 0x05bc0be3, 0x59300004, + 0x8c000520, 0x05000010, 0x82000500, 0xfffefeff, + 0x48026004, 0x59325809, 0x59301407, 0x90080583, + 0x05000006, 0x90080586, 0x05be0bd7, 0x592c0a0a, + 0x0005fe7b, 0x0501f006, 0x0001fba8, 0x0009f810, + 0x0501f003, 0x84000510, 0x48026004, 0x5c026000, + 0x5c025800, 0x1c01f000, 0x82000d00, 0x82000018, + 0x05be0bc2, 0x05bdfbc8, 0x00108a5e, 0x00108a5e, + 0x00108a5e, 0x00108a5f, 0x00108a7f, 0x00108b00, + 0x00108a5e, 0x00108b53, 0x00108a5e, 0x00108b84, + 0x00108a9e, 0x00020f36, 0x00108ae1, 0x00108a5e, + 0x00108a5e, 0x00108a5e, 0x05bdfbb7, 0x4d300000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fcad, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x59300004, 0x8c000520, + 0x05000010, 0x82000500, 0xfffefeff, 0x48026004, + 0x05fdff61, 0x05c5f80d, 0x05c5f86c, 0x05c5f82b, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c026000, 0x642378e4, 0x05fdf747, + 0x84000510, 0x48026004, 0x05fdf7f6, 0x4d300000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fc8d, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x59300004, 0x8c000520, + 0x0500000f, 0x82000500, 0xfffefeff, 0x48026004, + 0x640e6203, 0x05fdff40, 0x05c1ffa0, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, - 0x5c025800, 0x5c026000, 0x642378e4, 0x05fdf6fd, - 0x84000510, 0x48026004, 0x05fdf7f5, 0x42007000, - 0x000211a7, 0x58380000, 0x90000580, 0x0500000d, - 0x58d80805, 0x8c040500, 0x0500000a, 0x83180400, - 0x00020f72, 0x50006000, 0x58380001, 0x80300580, - 0x05000005, 0x4803c856, 0x05c1fcbf, 0x4979b005, - 0x1c01f000, 0x58300010, 0x4803c857, 0x6404620f, - 0x49786010, 0x49787002, 0x1c01f000, 0x4d2c0000, - 0x4d300000, 0x59bc00ea, 0x8c000510, 0x05fc07fe, - 0x59be60e0, 0x813261c0, 0x05bc0fb0, 0x59300004, - 0x8c000520, 0x05000012, 0x82000500, 0xfffefeff, - 0x48026004, 0x59301407, 0x90080583, 0x05be0fa7, - 0x05fdfb82, 0x05be0fa5, 0x59325809, 0x60040800, - 0x600a8000, 0x05e9fff2, 0x0001fb82, 0x0005ffdc, - 0x5c026000, 0x5c025800, 0x1c01f000, 0x84000510, - 0x48026004, 0x05fdf7fb, 0x4d300000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x0501fc0c, 0x59bc00ea, 0x8c000510, 0x05fc07fe, - 0x59be60e0, 0x59300004, 0x8c000520, 0x0500000e, - 0x82000500, 0xfffefeff, 0x48026004, 0x05fdfec0, - 0x05c5fb82, 0x5c01b000, 0x5c022800, 0x5c034800, - 0x5c03a000, 0x5c032000, 0x5c026000, 0x642378e4, - 0x05fdf6a8, 0x84000510, 0x48026004, 0x05fdf7f6, - 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4da40000, - 0x4cd00000, 0x4d240000, 0x58d400ea, 0x8c000510, - 0x05fc07fe, 0x58d660e0, 0x813261c0, 0x05bc0f6f, - 0x59300004, 0x8c000520, 0x0500001e, 0x82000500, - 0xfffefeff, 0x48026004, 0x5932680a, 0x42034800, - 0x0010e063, 0x5932481d, 0x05011000, 0x4a03c840, - 0x0010e06a, 0x644bc842, 0x05011000, 0x4a03c840, - 0x0010e07c, 0x4a03c842, 0x000000ff, 0x05011000, - 0x4a03c840, 0x0010e17b, 0x4a03c842, 0x000000ff, - 0x0501fbe8, 0x5c024800, 0x5c01a000, 0x5c034800, - 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000, - 0x84000510, 0x48026004, 0x5c024800, 0x5c01a000, - 0x5c034800, 0x5c026800, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x4d300000, 0x4d2c0000, 0x4d340000, - 0x4cd00000, 0x4d240000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fbb5, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x813261c0, 0x05bc0f35, 0x59300004, 0x8c000520, - 0x05000011, 0x82000500, 0xfffefeff, 0x48026004, - 0x5932481d, 0x0505fa76, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c024800, - 0x5c01a000, 0x5c026800, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x84000510, 0x48026004, 0x5c01b000, + 0x5c026000, 0x642378e4, 0x05fdf728, 0x84000510, + 0x48026004, 0x05fdf7f6, 0x4d300000, 0x4d2c0000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fc6d, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x59300004, 0x8c000520, + 0x0500001a, 0x82000500, 0xfffefeff, 0x48026004, + 0x640e6203, 0x59325809, 0x812e59c0, 0x05bc0b62, + 0x42000000, 0x0011241b, 0x0525fca1, 0x592c020c, + 0x84000552, 0x48025a0c, 0x05c5fae9, 0x05fdff16, + 0x05c1ff76, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c025800, 0x5c026000, + 0x642378e4, 0x05fdf6fd, 0x84000510, 0x48026004, + 0x05fdf7f5, 0x42007000, 0x000211e8, 0x58380000, + 0x90000580, 0x0500000d, 0x58d80805, 0x8c040500, + 0x0500000a, 0x83180400, 0x00020fa9, 0x50006000, + 0x58380001, 0x80300580, 0x05000005, 0x4803c856, + 0x05c1f863, 0x4979b005, 0x1c01f000, 0x58300010, + 0x4803c857, 0x6404620f, 0x49786010, 0x49787002, + 0x1c01f000, 0x4d2c0000, 0x4d300000, 0x59bc00ea, + 0x8c000510, 0x05fc07fe, 0x59be60e0, 0x813261c0, + 0x05bc0b2d, 0x59300004, 0x8c000520, 0x05000012, + 0x82000500, 0xfffefeff, 0x48026004, 0x59301407, + 0x90080583, 0x05be0b24, 0x05fdfb7d, 0x05be0b22, + 0x59325809, 0x60040800, 0x600a8000, 0x05e9fe18, + 0x0001fba8, 0x0009f810, 0x5c026000, 0x5c025800, + 0x1c01f000, 0x84000510, 0x48026004, 0x05fdf7fb, + 0x4d300000, 0x4d900000, 0x4dd00000, 0x4da40000, + 0x4d140000, 0x4cd80000, 0x0501fc0c, 0x59bc00ea, + 0x8c000510, 0x05fc07fe, 0x59be60e0, 0x59300004, + 0x8c000520, 0x0500000e, 0x82000500, 0xfffefeff, + 0x48026004, 0x05fdfec0, 0x05c1ff63, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, - 0x5c024800, 0x5c01a000, 0x5c026800, 0x5c025800, - 0x5c026000, 0x1c01f000, 0x05bdff14, 0x4d300000, - 0x4d380000, 0x42000000, 0x0010e4b5, 0x0525f911, - 0x05fdfe47, 0x598e600b, 0x59c40004, 0x8c000506, - 0x05000003, 0x0501f8d1, 0x64238804, 0x813261c0, - 0x05000004, 0x0501fb7a, 0x60527000, 0x0009f800, - 0x6409a8e4, 0x5c027000, 0x5c026000, 0x05fdf629, - 0x4d180000, 0x4d300000, 0x4d380000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x05fdfe2f, 0x417a3000, 0x59c40804, 0x83180400, - 0x00108a14, 0x50000000, 0x80040500, 0x05000017, - 0x42000000, 0x0010e4b6, 0x0525f8ee, 0x0501fb65, - 0x59926005, 0x0501f858, 0x83180400, 0x00108a14, - 0x50000000, 0x48038804, 0x813261c0, 0x05000007, - 0x59300004, 0x8c00050c, 0x05020002, 0x640e6203, - 0x612a7000, 0x0009f800, 0x59c40004, 0x82000500, - 0x00f80000, 0x05000004, 0x811a3000, 0x91180485, - 0x05fc17e2, 0x6421a8e4, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c027000, - 0x5c026000, 0x5c023000, 0x05fdf5f6, 0x4d2c0000, - 0x4d340000, 0x5932680a, 0x598c0800, 0x90040586, - 0x05020004, 0x918c1405, 0x918c1c04, 0x0501f00f, - 0x90040584, 0x05020004, 0x918c1403, 0x918c1c02, - 0x0501f00a, 0x90040581, 0x05020004, 0x918c1407, - 0x918c1c06, 0x0501f005, 0x90040582, 0x05020024, - 0x918c1409, 0x918c1c08, 0x41306800, 0x58340000, - 0x80007d40, 0x0500001e, 0x583c000a, 0x81340580, - 0x05020006, 0x403c6800, 0x583c0000, 0x80007d40, - 0x05fe07fa, 0x0501f016, 0x4933c857, 0x483fc857, - 0x583c0000, 0x48006800, 0x49307800, 0x443c1000, - 0x500c0000, 0x803c0580, 0x05020002, 0x44341800, - 0x80000580, 0x4803180b, 0x4803180d, 0x598c0000, - 0x90000583, 0x05000002, 0x64031800, 0x80000580, - 0x5c026800, 0x5c025800, 0x1c01f000, 0x90000541, - 0x05fdf7fc, 0x491bc857, 0x59b400f6, 0x90000538, - 0x05fe07fe, 0x59c80840, 0x90040550, 0x48039040, - 0x59c41008, 0x4c040000, 0x4c080000, 0x82081500, - 0xffffff7f, 0x480b8808, 0x0501fa9a, 0x05020006, - 0x0501fa9e, 0x05000020, 0x48038804, 0x05c5fab6, - 0x0501f03d, 0x64238803, 0x59c40003, 0x90000503, - 0x05fc07fe, 0x8c000502, 0x05020006, 0x0501fa93, - 0x05000015, 0x48038804, 0x05c5faab, 0x0501f032, - 0x0501fa9a, 0x05020007, 0x59c80040, 0x8400056a, - 0x48039040, 0x59c80040, 0x8c00052a, 0x05fe07fe, - 0x59c40005, 0x82000500, 0xc0000000, 0x05000006, - 0x59c400a3, 0x84000540, 0x480388a3, 0x4a038805, - 0xc0000000, 0x05c5fa69, 0x4a03a005, 0x30000000, - 0x59d00006, 0x4a03a005, 0x30000000, 0x6401b006, - 0x59d00005, 0x8c000504, 0x05fe07fe, 0x05fdfe88, - 0x6403a014, 0x600008ec, 0x83180540, 0x60000000, - 0x480008a1, 0x811800dc, 0x59c80840, 0x80040540, - 0x48039040, 0x82000540, 0x00003000, 0x48039040, - 0x59c80040, 0x82000500, 0x00003000, 0x05fe07fd, - 0x05c5fa6e, 0x83180400, 0x00108a14, 0x50000000, - 0x48038804, 0x80000580, 0x4df00000, 0x05f9f840, - 0x5c03e000, 0x5c001000, 0x5c000800, 0x480b8808, - 0x48079040, 0x1c01f000, 0x4803c856, 0x59b400f6, - 0x90000538, 0x05fe07fe, 0x59c80840, 0x90040550, - 0x48039040, 0x59c41008, 0x4c040000, 0x4c080000, - 0x82081500, 0xffffff7f, 0x480b8808, 0x59c40004, - 0x90000503, 0x0502000e, 0x59c40004, 0x9000050c, - 0x05000004, 0x64338804, 0x8c000504, 0x0501f022, - 0x59c80040, 0x8400056e, 0x48039040, 0x59c80040, - 0x8c00052e, 0x05fe07fe, 0x0501f01b, 0x64238803, + 0x5c026000, 0x642378e4, 0x05fdf6a8, 0x84000510, + 0x48026004, 0x05fdf7f6, 0x4d300000, 0x4d2c0000, + 0x4d340000, 0x4da40000, 0x4cd00000, 0x4d240000, + 0x58d400ea, 0x8c000510, 0x05fc07fe, 0x58d660e0, + 0x813261c0, 0x05bc0aec, 0x59300004, 0x8c000520, + 0x0500001e, 0x82000500, 0xfffefeff, 0x48026004, + 0x5932680a, 0x42034800, 0x00111ffd, 0x5932481d, + 0x05011000, 0x4a03c840, 0x00112004, 0x644bc842, + 0x05011000, 0x4a03c840, 0x00112016, 0x4a03c842, + 0x000000ff, 0x05011000, 0x4a03c840, 0x00112115, + 0x4a03c842, 0x000000ff, 0x0501fbe8, 0x5c024800, + 0x5c01a000, 0x5c034800, 0x5c026800, 0x5c025800, + 0x5c026000, 0x1c01f000, 0x84000510, 0x48026004, + 0x5c024800, 0x5c01a000, 0x5c034800, 0x5c026800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x4d300000, + 0x4d2c0000, 0x4d340000, 0x4cd00000, 0x4d240000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fbb5, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x813261c0, 0x05bc0ab2, + 0x59300004, 0x8c000520, 0x05000011, 0x82000500, + 0xfffefeff, 0x48026004, 0x5932481d, 0x0505faa2, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c024800, 0x5c01a000, 0x5c026800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x84000510, + 0x48026004, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c024800, 0x5c01a000, + 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000, + 0x05bdfa91, 0x4d300000, 0x4d380000, 0x42000000, + 0x00112459, 0x0525fbce, 0x05fdfe47, 0x598e600b, + 0x59c40004, 0x8c000506, 0x05000003, 0x0501f8d1, + 0x64238804, 0x813261c0, 0x05000004, 0x0501fb7a, + 0x60527000, 0x0009f839, 0x6409a8e4, 0x5c027000, + 0x5c026000, 0x05fdf629, 0x4d180000, 0x4d300000, + 0x4d380000, 0x4d900000, 0x4dd00000, 0x4da40000, + 0x4d140000, 0x4cd80000, 0x05fdfe2f, 0x417a3000, + 0x59c40804, 0x83180400, 0x00108ed2, 0x50000000, + 0x80040500, 0x05000017, 0x42000000, 0x0011245a, + 0x0525fbab, 0x0501fb65, 0x59926005, 0x0501f858, + 0x83180400, 0x00108ed2, 0x50000000, 0x48038804, + 0x813261c0, 0x05000007, 0x59300004, 0x8c00050c, + 0x05020002, 0x640e6203, 0x612a7000, 0x0009f839, + 0x59c40004, 0x82000500, 0x00f80000, 0x05000004, + 0x811a3000, 0x91180485, 0x05fc17e2, 0x6421a8e4, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c027000, 0x5c026000, 0x5c023000, + 0x05fdf5f6, 0x4d2c0000, 0x4d340000, 0x5932680a, + 0x598c0800, 0x90040586, 0x05020004, 0x918c1405, + 0x918c1c04, 0x0501f00f, 0x90040584, 0x05020004, + 0x918c1403, 0x918c1c02, 0x0501f00a, 0x90040581, + 0x05020004, 0x918c1407, 0x918c1c06, 0x0501f005, + 0x90040582, 0x05020024, 0x918c1409, 0x918c1c08, + 0x41306800, 0x58340000, 0x80007d40, 0x0500001e, + 0x583c000a, 0x81340580, 0x05020006, 0x403c6800, + 0x583c0000, 0x80007d40, 0x05fe07fa, 0x0501f016, + 0x4933c857, 0x483fc857, 0x583c0000, 0x48006800, + 0x49307800, 0x443c1000, 0x500c0000, 0x803c0580, + 0x05020002, 0x44341800, 0x80000580, 0x4803180b, + 0x4803180d, 0x598c0000, 0x90000583, 0x05000002, + 0x64031800, 0x80000580, 0x5c026800, 0x5c025800, + 0x1c01f000, 0x90000541, 0x05fdf7fc, 0x491bc857, + 0x59b400f6, 0x90000538, 0x05fe07fe, 0x59c80840, + 0x90040550, 0x48039040, 0x59c41008, 0x4c040000, + 0x4c080000, 0x82081500, 0xffffff7f, 0x480b8808, + 0x0501fa9a, 0x05020006, 0x0501fa9e, 0x05000020, + 0x48038804, 0x05c1fe94, 0x0501f03d, 0x64238803, 0x59c40003, 0x90000503, 0x05fc07fe, 0x8c000502, - 0x05020005, 0x59c40004, 0x64338804, 0x8c000504, - 0x0501f011, 0x59c80040, 0x8400056a, 0x48039040, - 0x59c80040, 0x8c00052a, 0x05fe07fe, 0x59c40005, - 0x82000500, 0xc0000000, 0x05000007, 0x59c400a3, - 0x84000540, 0x480388a3, 0x4a038805, 0xc0000000, - 0x80000580, 0x4a01a8e5, 0x00000800, 0x5c001000, + 0x05020006, 0x0501fa93, 0x05000015, 0x48038804, + 0x05c1fe89, 0x0501f032, 0x0501fa9a, 0x05020007, + 0x59c80040, 0x8400056a, 0x48039040, 0x59c80040, + 0x8c00052a, 0x05fe07fe, 0x59c40005, 0x82000500, + 0xc0000000, 0x05000006, 0x59c400a3, 0x84000540, + 0x480388a3, 0x4a038805, 0xc0000000, 0x05c1fe47, + 0x4a03a005, 0x30000000, 0x59d00006, 0x4a03a005, + 0x30000000, 0x6401b006, 0x59d00005, 0x8c000504, + 0x05fe07fe, 0x05fdfe88, 0x6403a014, 0x600008ec, + 0x83180540, 0x60000000, 0x480008a1, 0x811800dc, + 0x59c80840, 0x80040540, 0x48039040, 0x82000540, + 0x00003000, 0x48039040, 0x59c80040, 0x82000500, + 0x00003000, 0x05fe07fd, 0x05c1fe4c, 0x83180400, + 0x00108ed2, 0x50000000, 0x48038804, 0x80000580, + 0x4df00000, 0x05f5ffe6, 0x5c03e000, 0x5c001000, 0x5c000800, 0x480b8808, 0x48079040, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x491bc857, - 0x4933c857, 0x4d900000, 0x4dd00000, 0x4da40000, - 0x4d140000, 0x4cd80000, 0x05fdfd29, 0x4df00000, - 0x0501fa68, 0x59900005, 0x800001c0, 0x05000012, - 0x81300580, 0x05020010, 0x59300004, 0x84000520, - 0x48026004, 0x05fdff54, 0x0502000a, 0x5c03e000, - 0x05fc0d0c, 0x80000580, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, - 0x05fdfc4c, 0x61267000, 0x59300004, 0x84000520, - 0x48026004, 0x8c00050c, 0x000a0800, 0x5c03e000, - 0x05fc0cfc, 0x90000541, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, - 0x4933c857, 0x05fdfd02, 0x4df00000, 0x598c000b, - 0x80026540, 0x0500000f, 0x59300004, 0x84000520, - 0x48026004, 0x05fdff89, 0x05000011, 0x05fdfc4e, - 0x604e7000, 0x59300004, 0x8c00050c, 0x000a0800, - 0x5c03e000, 0x05fc0ce3, 0x90000541, 0x1c01f000, - 0x916c1581, 0x05fc07fb, 0x916c1584, 0x05fc07f9, - 0x42001000, 0x0010510c, 0x05f5fe8b, 0x5c03e000, - 0x05fc0cd8, 0x80000580, 0x1c01f000, 0x4d300000, - 0x4d180000, 0x4d3c0000, 0x05fdfce1, 0x4df00000, - 0x643da8e4, 0x643f78e4, 0x0501fa06, 0x417a3000, - 0x811808c8, 0x82040c00, 0x0000b037, 0x58066005, - 0x813261c0, 0x0500000b, 0x417a7800, 0x05e9f879, - 0x05000007, 0x59300c07, 0x90040583, 0x05000003, - 0x90040586, 0x05020002, 0x600a7800, 0x050dffce, - 0x811a3000, 0x91180485, 0x05fc17ee, 0x61000800, - 0x05c5ffaa, 0x642b78e4, 0x6429a8e4, 0x5c03e000, - 0x05fc0cb4, 0x5c027800, 0x5c023000, 0x5c026000, - 0x1c01f000, 0x4803c856, 0x4d300000, 0x05fdfcbc, - 0x4df00000, 0x59c80840, 0x84040d74, 0x90040550, - 0x48039040, 0x59c41008, 0x4c040000, 0x4c080000, - 0x82081500, 0xffffff7f, 0x480b8808, 0x600c1000, - 0x0501f9d1, 0x598e600b, 0x813261c0, 0x05fe0fa9, - 0x050009d4, 0x4a01a8e5, 0x00000800, 0x0501f809, - 0x5c001000, 0x5c000800, 0x480b8808, 0x48079040, - 0x5c03e000, 0x05fc0c93, 0x5c026000, 0x1c01f000, - 0x4d380000, 0x4d180000, 0x4d300000, 0x4d900000, + 0x4803c856, 0x59b400f6, 0x90000538, 0x05fe07fe, + 0x59c80840, 0x90040550, 0x48039040, 0x59c41008, + 0x4c040000, 0x4c080000, 0x82081500, 0xffffff7f, + 0x480b8808, 0x59c40004, 0x90000503, 0x0502000e, + 0x59c40004, 0x9000050c, 0x05000004, 0x64338804, + 0x8c000504, 0x0501f022, 0x59c80040, 0x8400056e, + 0x48039040, 0x59c80040, 0x8c00052e, 0x05fe07fe, + 0x0501f01b, 0x64238803, 0x59c40003, 0x90000503, + 0x05fc07fe, 0x8c000502, 0x05020005, 0x59c40004, + 0x64338804, 0x8c000504, 0x0501f011, 0x59c80040, + 0x8400056a, 0x48039040, 0x59c80040, 0x8c00052a, + 0x05fe07fe, 0x59c40005, 0x82000500, 0xc0000000, + 0x05000007, 0x59c400a3, 0x84000540, 0x480388a3, + 0x4a038805, 0xc0000000, 0x80000580, 0x4a01a8e5, + 0x00000800, 0x5c001000, 0x5c000800, 0x480b8808, + 0x48079040, 0x1c01f000, 0x5c000000, 0x4c000000, + 0x4803c857, 0x491bc857, 0x4933c857, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x417a3000, 0x05f5ff5e, 0x811a3000, 0x91180585, - 0x05fe07fd, 0x0501f9ab, 0x0502000a, 0x5c01b000, - 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, - 0x5c026000, 0x5c023000, 0x5c027000, 0x1c01f000, - 0x0501f9c8, 0x59926005, 0x4933c857, 0x05fdfeba, - 0x813261c0, 0x05fc07f2, 0x612a7000, 0x640e6203, - 0x0009f800, 0x05fdf7ee, 0x4d300000, 0x4d180000, - 0x4d900000, 0x05fdfc7a, 0x60001000, 0x598c0800, - 0x90040585, 0x05000998, 0x417a3000, 0x811b20c8, - 0x83932400, 0x0000b037, 0x59900002, 0x90000581, - 0x0502000a, 0x60100800, 0x59926005, 0x59300013, - 0x82000500, 0xfff00000, 0x80000540, 0x05000002, - 0x60380800, 0x05f5ff0d, 0x811a3000, 0x91180485, - 0x05fc17ef, 0x59c81040, 0x84081534, 0x480b9040, - 0x05fdfc50, 0x5c032000, 0x5c023000, 0x5c026000, - 0x1c01f000, 0x4933c857, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d380000, - 0x05fdfc53, 0x4df00000, 0x59300004, 0x8c00053e, - 0x05020005, 0x8c000520, 0x0500001d, 0x05fdfb71, - 0x0501f01b, 0x598c000b, 0x81300580, 0x0500000e, - 0x0511f864, 0x05020020, 0x0501f928, 0x0500001e, - 0x48038804, 0x0501f983, 0x05c5f93f, 0x05fdfb79, - 0x61267000, 0x59300004, 0x8c00050c, 0x0502000b, - 0x0501f00b, 0x59c40004, 0x8c000504, 0x05000012, - 0x64138804, 0x05fdfb8c, 0x604e7000, 0x59300004, - 0x8c00050c, 0x05000002, 0x0009f800, 0x5c03e000, - 0x05fc0c20, 0x5c027000, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x80000580, - 0x1c01f000, 0x5c03e000, 0x05fc0c16, 0x5c027000, + 0x05fdfd29, 0x4df00000, 0x0501fa68, 0x59900005, + 0x800001c0, 0x05000012, 0x81300580, 0x05020010, + 0x59300004, 0x84000520, 0x48026004, 0x05fdff54, + 0x0502000a, 0x5c03e000, 0x05fc0d0c, 0x80000580, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x1c01f000, 0x05fdfc4c, 0x61267000, + 0x59300004, 0x84000520, 0x48026004, 0x8c00050c, + 0x000a0839, 0x5c03e000, 0x05fc0cfc, 0x90000541, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x90000541, 0x1c01f000, 0x59300407, - 0x90000583, 0x05020007, 0x0511fbcf, 0x05000005, - 0x59301009, 0x5808040c, 0x84000550, 0x4800140c, - 0x1c01f000, 0x4a01a8e5, 0x00000800, 0x05fdfc10, - 0x59c400af, 0x800001c0, 0x05020003, 0x05fdfbfd, - 0x05c9f10a, 0x598c000d, 0x90001482, 0x05021006, - 0x80000000, 0x4803180d, 0x80000580, 0x05f5fea4, - 0x0500000e, 0x05fdfeff, 0x0502000c, 0x05fdffe4, - 0x42000000, 0x0010e46d, 0x0521fec6, 0x05fdfdf8, - 0x05000006, 0x0501f936, 0x4d380000, 0x60527000, - 0x0009f800, 0x5c027000, 0x05fdfbe6, 0x05c9f0f3, + 0x5c032000, 0x1c01f000, 0x4933c857, 0x05fdfd02, + 0x4df00000, 0x598c000b, 0x80026540, 0x0500000f, + 0x59300004, 0x84000520, 0x48026004, 0x05fdff89, + 0x05000011, 0x05fdfc4e, 0x604e7000, 0x59300004, + 0x8c00050c, 0x000a0839, 0x5c03e000, 0x05fc0ce3, + 0x90000541, 0x1c01f000, 0x916c1581, 0x05fc07fb, + 0x916c1584, 0x05fc07f9, 0x42001000, 0x00105303, + 0x05f5fde7, 0x5c03e000, 0x05fc0cd8, 0x80000580, + 0x1c01f000, 0x4d300000, 0x4d180000, 0x4d3c0000, + 0x05fdfce1, 0x4df00000, 0x643da8e4, 0x643f78e4, + 0x0501fa06, 0x417a3000, 0x811808c8, 0x82040c00, + 0x0000b037, 0x58066005, 0x813261c0, 0x0500000b, + 0x417a7800, 0x05e5fe2d, 0x05000007, 0x59300c07, + 0x90040583, 0x05000003, 0x90040586, 0x05020002, + 0x600a7800, 0x0511f882, 0x811a3000, 0x91180485, + 0x05fc17ee, 0x61000800, 0x05c5fb5d, 0x642b78e4, + 0x6429a8e4, 0x5c03e000, 0x05fc0cb4, 0x5c027800, + 0x5c023000, 0x5c026000, 0x1c01f000, 0x4803c856, + 0x4d300000, 0x05fdfcbc, 0x4df00000, 0x59c80840, + 0x84040d74, 0x90040550, 0x48039040, 0x59c41008, + 0x4c040000, 0x4c080000, 0x82081500, 0xffffff7f, + 0x480b8808, 0x600c1000, 0x0501f9d1, 0x598e600b, + 0x813261c0, 0x05fe0fa9, 0x050009d4, 0x4a01a8e5, + 0x00000800, 0x0501f809, 0x5c001000, 0x5c000800, + 0x480b8808, 0x48079040, 0x5c03e000, 0x05fc0c93, + 0x5c026000, 0x1c01f000, 0x4d380000, 0x4d180000, + 0x4d300000, 0x4d900000, 0x4dd00000, 0x4da40000, + 0x4d140000, 0x4cd80000, 0x417a3000, 0x05f5ff04, + 0x811a3000, 0x91180585, 0x05fe07fd, 0x0501f9ab, + 0x0502000a, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c026000, 0x5c023000, + 0x5c027000, 0x1c01f000, 0x0501f9c8, 0x59926005, + 0x4933c857, 0x05fdfeba, 0x813261c0, 0x05fc07f2, + 0x612a7000, 0x640e6203, 0x0009f839, 0x05fdf7ee, + 0x4d300000, 0x4d180000, 0x4d900000, 0x05fdfc7a, + 0x60001000, 0x598c0800, 0x90040585, 0x05000998, + 0x417a3000, 0x811b20c8, 0x83932400, 0x0000b037, + 0x59900002, 0x90000581, 0x0502000a, 0x60100800, + 0x59926005, 0x59300013, 0x82000500, 0xfff00000, + 0x80000540, 0x05000002, 0x60380800, 0x05f5feb3, + 0x811a3000, 0x91180485, 0x05fc17ef, 0x59c81040, + 0x84081534, 0x480b9040, 0x05fdfc50, 0x5c032000, + 0x5c023000, 0x5c026000, 0x1c01f000, 0x4933c857, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, - 0x4cd80000, 0x4d300000, 0x05f5feb5, 0x05fdfbec, - 0x59c400af, 0x800001c0, 0x05000022, 0x0501f929, - 0x59926005, 0x4933c857, 0x59300004, 0x8c000516, - 0x05000009, 0x05fdfeaf, 0x0502001a, 0x05fdfb19, - 0x05fdfbd0, 0x42000800, 0x80000804, 0x0005fe9d, - 0x0501f014, 0x60c018ea, 0x0501f8e9, 0x05020003, - 0x05f5fe7d, 0x0501f00f, 0x05fdfea2, 0x0502000d, - 0x05fdffb7, 0x42000000, 0x0010e46e, 0x0521fe99, - 0x59300004, 0x8c00050c, 0x05020002, 0x640e6203, - 0x4d380000, 0x612a7000, 0x0009f800, 0x5c027000, - 0x05fdfbb8, 0x5c026000, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x05c9f0bf, - 0x4c600000, 0x4d900000, 0x4dd00000, 0x4da40000, - 0x4d140000, 0x4cd80000, 0x4d300000, 0x4d2c0000, - 0x05fdfbb7, 0x0501f8f7, 0x59926005, 0x813261c0, - 0x05000040, 0x05e9ff4d, 0x05020005, 0x4178c000, - 0x0505fa10, 0x05000002, 0x6004c000, 0x05e9ff47, - 0x05020005, 0x8060c1c0, 0x05000003, 0x0505fa30, - 0x0501f034, 0x05f5fe5f, 0x05020032, 0x4933c857, - 0x0501f892, 0x05020015, 0x05f5fe69, 0x813261c0, - 0x0500002c, 0x59325809, 0x812e59c0, 0x05bc0c63, - 0x05e9ff36, 0x0502001c, 0x59c40093, 0x4803c857, - 0x800001c0, 0x05020009, 0x592c020c, 0x84000550, - 0x48025a0c, 0x05edf818, 0x0502001e, 0x592c020c, - 0x84000510, 0x48025a0c, 0x05f5fe33, 0x0501f019, - 0x42000000, 0x0010e46e, 0x0521fe52, 0x05fdfdbe, - 0x592c020c, 0x84000550, 0x48025a0c, 0x4d380000, - 0x612a7000, 0x640e6203, 0x0009f800, 0x5c027000, - 0x0501f00c, 0x59901007, 0x800811c0, 0x05fe07f1, - 0x59c408af, 0x82040480, 0x000003e8, 0x05fe17ed, - 0x80081000, 0x480b2007, 0x05f5fe1b, 0x05e1ff4c, - 0x5c025800, 0x5c026000, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c00c000, - 0x05fdf35c, 0x4d300000, 0x4d2c0000, 0x05fdfb68, - 0x598e600b, 0x4933c857, 0x813261c0, 0x0500003e, - 0x59c41004, 0x480bc857, 0x8c080500, 0x05000007, - 0x05e9fefa, 0x05020012, 0x05e9ffe3, 0x05020036, - 0x05f5fdfb, 0x0501f034, 0x82080500, 0x000001fe, - 0x05fe07fc, 0x59c8010b, 0x4803c857, 0x8c000500, - 0x05fc07f8, 0x42000000, 0x0010e4b7, 0x0521fe19, - 0x05fdfe4c, 0x05000877, 0x0501f027, 0x598c000d, - 0x80000540, 0x0502000e, 0x59c408af, 0x82040480, - 0x000003e8, 0x0502100a, 0x598c080d, 0x80040800, - 0x4807180d, 0x05f5fde2, 0x42000000, 0x0010e3a7, - 0x0521fe08, 0x05e1ff16, 0x0501f017, 0x42000000, - 0x0010e46d, 0x0521fe03, 0x05fdfdc8, 0x813261c0, - 0x05020003, 0x0501f85f, 0x0501f00f, 0x59300407, - 0x90000583, 0x05020007, 0x59325809, 0x812e59c0, - 0x05000004, 0x592c020c, 0x84000550, 0x48025a0c, - 0x0501f867, 0x4d380000, 0x60527000, 0x0009f800, - 0x5c027000, 0x5c025800, 0x5c026000, 0x05fdf315, - 0x59c40804, 0x83180400, 0x00108a0a, 0x50000000, + 0x4cd80000, 0x4d380000, 0x05fdfc53, 0x4df00000, + 0x59300004, 0x8c00053e, 0x05020005, 0x8c000520, + 0x0500001d, 0x05fdfb71, 0x0501f01b, 0x598c000b, + 0x81300580, 0x0500000e, 0x0511f920, 0x05020020, + 0x0501f928, 0x0500001e, 0x48038804, 0x0501f983, + 0x05c1fd1d, 0x05fdfb79, 0x61267000, 0x59300004, + 0x8c00050c, 0x0502000b, 0x0501f00b, 0x59c40004, + 0x8c000504, 0x05000012, 0x64138804, 0x05fdfb8c, + 0x604e7000, 0x59300004, 0x8c00050c, 0x05000002, + 0x0009f839, 0x5c03e000, 0x05fc0c20, 0x5c027000, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x80000580, 0x1c01f000, 0x5c03e000, + 0x05fc0c16, 0x5c027000, 0x5c01b000, 0x5c022800, + 0x5c034800, 0x5c03a000, 0x5c032000, 0x90000541, + 0x1c01f000, 0x59300407, 0x90000583, 0x05020007, + 0x0511fc9a, 0x05000005, 0x59301009, 0x5808040c, + 0x84000550, 0x4800140c, 0x1c01f000, 0x4a01a8e5, + 0x00000800, 0x05fdfc10, 0x59c400af, 0x800001c0, + 0x05020003, 0x05fdfbfd, 0x05c5f4cc, 0x598c000d, + 0x90001482, 0x05021006, 0x80000000, 0x4803180d, + 0x80000580, 0x05f5fe4a, 0x0500000e, 0x05fdfeff, + 0x0502000c, 0x05fdffe4, 0x42000000, 0x00112411, + 0x0525f983, 0x05fdfdf8, 0x05000006, 0x0501f936, + 0x4d380000, 0x60527000, 0x0009f839, 0x5c027000, + 0x05fdfbe6, 0x05c5f4b5, 0x4d900000, 0x4dd00000, + 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d300000, + 0x05f5fe5b, 0x05fdfbec, 0x59c400af, 0x800001c0, + 0x05000022, 0x0501f929, 0x59926005, 0x4933c857, + 0x59300004, 0x8c000516, 0x05000009, 0x05fdfeaf, + 0x0502001a, 0x05fdfb19, 0x05fdfbd0, 0x42000800, + 0x80000804, 0x0005fed4, 0x0501f014, 0x60c018ea, + 0x0501f8e9, 0x05020003, 0x05f5fe23, 0x0501f00f, + 0x05fdfea2, 0x0502000d, 0x05fdffb7, 0x42000000, + 0x00112412, 0x0525f956, 0x59300004, 0x8c00050c, + 0x05020002, 0x640e6203, 0x4d380000, 0x612a7000, + 0x0009f839, 0x5c027000, 0x05fdfbb8, 0x5c026000, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x05c5f481, 0x4c600000, 0x4d900000, + 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, + 0x4d300000, 0x4d2c0000, 0x05fdfbb7, 0x0501f8f7, + 0x59926005, 0x813261c0, 0x05000040, 0x05e9fd79, + 0x05020005, 0x4178c000, 0x0505fa46, 0x05000002, + 0x6004c000, 0x05e9fd73, 0x05020005, 0x8060c1c0, + 0x05000003, 0x0505fa66, 0x0501f034, 0x05f5fe05, + 0x05020032, 0x4933c857, 0x0501f892, 0x05020015, + 0x05f5fe0f, 0x813261c0, 0x0500002c, 0x59325809, + 0x812e59c0, 0x05b80fe0, 0x05e9fd62, 0x0502001c, + 0x59c40093, 0x4803c857, 0x800001c0, 0x05020009, + 0x592c020c, 0x84000550, 0x48025a0c, 0x05e9fe44, + 0x0502001e, 0x592c020c, 0x84000510, 0x48025a0c, + 0x05f5fdd9, 0x0501f019, 0x42000000, 0x00112412, + 0x0525f90f, 0x05fdfdbe, 0x592c020c, 0x84000550, + 0x48025a0c, 0x4d380000, 0x612a7000, 0x640e6203, + 0x0009f839, 0x5c027000, 0x0501f00c, 0x59901007, + 0x800811c0, 0x05fe07f1, 0x59c408af, 0x82040480, + 0x000003e8, 0x05fe17ed, 0x80081000, 0x480b2007, + 0x05f5fdc1, 0x05e1fc85, 0x5c025800, 0x5c026000, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c00c000, 0x05fdf35c, 0x4d300000, + 0x4d2c0000, 0x05fdfb68, 0x598e600b, 0x4933c857, + 0x813261c0, 0x0500003e, 0x59c41004, 0x480bc857, + 0x8c080500, 0x05000007, 0x05e9fd26, 0x05020012, + 0x05e9fe0f, 0x05020036, 0x05f5fda1, 0x0501f034, + 0x82080500, 0x000001fe, 0x05fe07fc, 0x59c8010b, + 0x4803c857, 0x8c000500, 0x05fc07f8, 0x42000000, + 0x0011245b, 0x0525f8d6, 0x05fdfe4c, 0x05000877, + 0x0501f027, 0x598c000d, 0x80000540, 0x0502000e, + 0x59c408af, 0x82040480, 0x000003e8, 0x0502100a, + 0x598c080d, 0x80040800, 0x4807180d, 0x05f5fd88, + 0x42000000, 0x00112348, 0x0525f8c5, 0x05e1fc4f, + 0x0501f017, 0x42000000, 0x00112411, 0x0525f8c0, + 0x05fdfdc8, 0x813261c0, 0x05020003, 0x0501f85f, + 0x0501f00f, 0x59300407, 0x90000583, 0x05020007, + 0x59325809, 0x812e59c0, 0x05000004, 0x592c020c, + 0x84000550, 0x48025a0c, 0x0501f867, 0x4d380000, + 0x60527000, 0x0009f839, 0x5c027000, 0x5c025800, + 0x5c026000, 0x05fdf315, 0x59c40804, 0x83180400, + 0x00108ec8, 0x50000000, 0x80040500, 0x1c01f000, + 0x59c40804, 0x83180400, 0x00108ecd, 0x50000000, 0x80040500, 0x1c01f000, 0x59c40804, 0x83180400, - 0x00108a0f, 0x50000000, 0x80040500, 0x1c01f000, - 0x59c40804, 0x83180400, 0x00108a19, 0x50000000, - 0x80040500, 0x1c01f000, 0x59c80840, 0x82040d00, - 0x000e0000, 0x83180400, 0x00108a1e, 0x50000000, - 0x80040580, 0x1c01f000, 0x00000210, 0x00000420, - 0x00000840, 0x00001080, 0x00002100, 0x00004000, - 0x00008000, 0x00010000, 0x00020000, 0x00040000, - 0x00080000, 0x00100000, 0x00200000, 0x00400000, - 0x00800000, 0x00084000, 0x00108000, 0x00210000, - 0x00420000, 0x00840000, 0x00000000, 0x00020000, - 0x00040000, 0x00060000, 0x00080000, 0x59900007, - 0x800c0c80, 0x05021003, 0x90000541, 0x0501f004, - 0x80000000, 0x48032007, 0x80000580, 0x1c01f000, - 0x417a3000, 0x05fdffd5, 0x05000005, 0x811a3000, - 0x91180585, 0x05fe07fc, 0x1c01f000, 0x81780080, - 0x1c01f000, 0x480bc857, 0x05fdfadd, 0x4df00000, - 0x480b1800, 0x5c03e000, 0x05fc0aca, 0x1c01f000, - 0x4803c856, 0x05fdfad6, 0x4df00000, 0x497b180b, - 0x497b1801, 0x497b180c, 0x497b180d, 0x497b180e, - 0x598c0000, 0x90000583, 0x05000006, 0x916c0582, - 0x05020003, 0x64171800, 0x0501f002, 0x64031800, - 0x5c03e000, 0x05fc0ab7, 0x1c01f000, 0x59300004, - 0x8c00050c, 0x05020002, 0x64066203, 0x1c01f000, - 0x91180485, 0x05be1b85, 0x491bc857, 0x811b20c8, - 0x83932400, 0x0000b037, 0x8119b0c8, 0x82d9b400, - 0x0000bf32, 0x811ba0ca, 0x83d3a400, 0x00007600, - 0x83180400, 0x00108a67, 0x50034800, 0x811a28c2, - 0x83162c00, 0x00006100, 0x1c01f000, 0x0010e27c, - 0x0010e295, 0x0010e2ae, 0x0010e2c7, 0x0010e2e0, - 0x4933c857, 0x59300407, 0x90000c92, 0x05021015, - 0x05011000, 0x0c01f001, 0x00108a84, 0x00108b2a, - 0x00108e69, 0x00108ecb, 0x00108b2a, 0x00108e69, - 0x00108ecb, 0x00108a84, 0x00108b2a, 0x00108a84, - 0x00108a84, 0x00108a84, 0x00108a84, 0x00108a84, - 0x00108a84, 0x00108a84, 0x00108a88, 0x00108a88, - 0x4803c857, 0x05fdfa8e, 0x05fdf9e3, 0x05fdf27d, - 0x42001000, 0x0010e387, 0x50081000, 0x4930100c, - 0x58080002, 0x82000580, 0x00000100, 0x0502003d, - 0x59325809, 0x812e59c0, 0x05bc0b48, 0x492fc856, - 0x5932680a, 0x83340580, 0x00110210, 0x05000025, - 0x592c040f, 0x82000500, 0x0000e000, 0x05000003, - 0x0501fbc6, 0x0501f002, 0x0501fbb6, 0x592c040d, - 0x82000500, 0x000000ff, 0x90000583, 0x0500082a, - 0x592c0011, 0x90000503, 0x05000006, 0x90000583, - 0x80000000, 0x58d00802, 0x80040540, 0x4801a002, - 0x42001000, 0x0010e387, 0x50081000, 0x4930100b, - 0x492c100a, 0x90d00406, 0x48001003, 0x592c0004, - 0x48001006, 0x592c0011, 0x48001005, 0x592c0012, - 0x48001007, 0x592c0013, 0x48001008, 0x0001f021, - 0x592c080e, 0x48066802, 0x82040500, 0x00ffff00, - 0x05000007, 0x497a6a12, 0x59a8103d, 0x82081500, - 0x00ffff00, 0x80080580, 0x05fe07d2, 0x82040d00, - 0x000000ff, 0x800408d0, 0x48066a12, 0x05fdf7cd, - 0x1c01f000, 0x59a80249, 0x8c000508, 0x0500000c, - 0x59a8004d, 0x82000500, 0x0000ffff, 0x59c40880, - 0x80040d80, 0x05000006, 0x497b8880, 0x4c000000, - 0x05c9f837, 0x5c000000, 0x48038880, 0x1c01f000, - 0x4d2c0000, 0x4d300000, 0x4c580000, 0x4c540000, - 0x4c500000, 0x5832580a, 0x812e59c0, 0x05bc0af7, - 0x58300002, 0x82000580, 0x00000100, 0x05020021, - 0x5830000b, 0x5832600c, 0x81300d80, 0x05020011, - 0x0501f82d, 0x05020015, 0x592c0811, 0x90040c03, - 0x80040904, 0x4004b000, 0x4200a000, 0x0010e06a, - 0x0501fefa, 0x05000002, 0x9050a402, 0x4050a800, - 0x0521fdea, 0x600011b8, 0x0501fe7f, 0x0501f007, - 0x4803c857, 0x4933c857, 0x813261c0, 0x05000003, - 0x0501f819, 0x05fc0f87, 0x5c00a000, 0x5c00a800, - 0x5c00b000, 0x5c026000, 0x5c025800, 0x1c01f000, - 0x5830000b, 0x5832600c, 0x4a006002, 0x00000100, - 0x4803c857, 0x4933c857, 0x81300d80, 0x05fe07ed, - 0x0501f809, 0x05fe07f1, 0x4803c857, 0x05f9fea3, - 0x05be0ac6, 0x640a5a0a, 0x0001fb82, 0x0505f8b9, - 0x05fdf7ea, 0x05fdf9fa, 0x4df00000, 0x598c000b, - 0x81300580, 0x05020008, 0x598c0003, 0x81300580, - 0x05020005, 0x5c03e000, 0x05fc09e2, 0x80000580, - 0x1c01f000, 0x4803c857, 0x5c03e000, 0x05fc09dd, - 0x90000541, 0x1c01f000, 0x59300403, 0xb0000ca0, - 0x05be1aae, 0x83340d80, 0x00110210, 0x0502000a, - 0x5930082a, 0x48066802, 0x82041500, 0x00ffff00, - 0x05020004, 0x800408d0, 0x48066a12, 0x0501f002, - 0x497a6a12, 0x4803c857, 0x0c01f001, 0x00108c83, - 0x00108c9c, 0x00108cab, 0x00108dd2, 0x00108d99, - 0x00108d9d, 0x00108da9, 0x00108dbf, 0x00108daf, - 0x00108dbf, 0x00108df7, 0x00108dbf, 0x00108e36, - 0x00108dbf, 0x00108e41, 0x00108dbf, 0x00108daf, - 0x00108dbf, 0x00108e45, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108ee4, 0x00108ef9, 0x00108f01, - 0x00108b9b, 0x00108f18, 0x00108da9, 0x00108b9b, - 0x00108da9, 0x00108dbf, 0x00108b9b, 0x00108cab, - 0x00108dd2, 0x00108b9b, 0x00108f60, 0x00108dbf, - 0x00108b9b, 0x00108f6e, 0x00108dbf, 0x00108b9b, - 0x00108daf, 0x00108c76, 0x00108b9c, 0x00108b9b, - 0x00108f8a, 0x00108fc0, 0x00109046, 0x00108b9b, - 0x00109054, 0x00108da7, 0x00109049, 0x00108b9b, - 0x00108f22, 0x00109089, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108b9b, 0x00108baf, 0x00108c10, - 0x00108c1a, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x00108c4c, 0x00108c54, 0x00108b9b, 0x00108b9b, - 0x00108bc0, 0x00108bea, 0x001090be, 0x001090f3, - 0x00109114, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x001090e9, 0x0010906b, 0x00108f8a, 0x001092f9, - 0x00108b9b, 0x0010933a, 0x001092ef, 0x00109347, - 0x00108b9b, 0x00109362, 0x001092f5, 0x05bdfa3f, - 0x0501fab8, 0x59325809, 0x592c000d, 0x4801a006, - 0x592c000e, 0x4801a007, 0x592c000f, 0x4801a008, - 0x592c0010, 0x4801a009, 0x592c0011, 0x4801a00a, - 0x4979a00b, 0x592c080d, 0x82040d00, 0x00000fff, - 0x80040904, 0x600011b8, 0x0501f5cb, 0x4a026202, - 0x0000ffff, 0x0501faa3, 0x4d2c0000, 0x4a01a006, - 0x05000000, 0x59325809, 0x592c000d, 0x4801a007, - 0x592c000e, 0x4801a008, 0x592c000f, 0x4801a009, - 0x5c025800, 0x60100800, 0x600011b8, 0x0501f5ba, - 0x4c580000, 0x4c500000, 0x4c540000, 0x4d2c0000, - 0x0501fa90, 0x5930040d, 0x90000503, 0x05000006, - 0x90000583, 0x80000000, 0x58d00802, 0x80040540, - 0x4801a002, 0x59325809, 0x4200a800, 0x0010e06a, - 0x592cb209, 0x9058b403, 0x8058b104, 0x912ca40a, - 0x0521fcd3, 0x40580000, 0x8054ac00, 0x592c0001, - 0x80000540, 0x05000003, 0x40025800, 0x05fdf7f5, - 0x4200a000, 0x0010e06a, 0x4050a800, 0x5930b40d, - 0x9058b403, 0x8058b104, 0x40580800, 0x0521fcff, - 0x600011b8, 0x5c025800, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x0501f590, 0x4c580000, 0x4c500000, - 0x4c540000, 0x4d2c0000, 0x42034800, 0x0010e063, - 0x0501fa72, 0x59325809, 0x592c0805, 0x4807c857, - 0x40041000, 0x80040904, 0x90081503, 0x05000007, - 0x80040800, 0x90081583, 0x80081000, 0x58d00002, - 0x80080540, 0x4801a002, 0x4a025809, 0x02000000, - 0x90d0ac06, 0x592cb011, 0x912ca409, 0x0521fca4, - 0x40580000, 0x8054ac00, 0x592e5801, 0x41780000, - 0x812e5d40, 0x05fe07f8, 0x600011b8, 0x5c025800, - 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x0501f56a, - 0x0501fa44, 0x4a01a006, 0x78000000, 0x5930001e, - 0x840001c0, 0x4801a407, 0x4979a207, 0x60080800, - 0x600011b8, 0x0501f560, 0x4c580000, 0x4c540000, - 0x4c500000, 0x0501fa45, 0x4a01a006, 0x02000000, - 0x5932481d, 0x59240001, 0x4801a008, 0x59240002, - 0x4801a009, 0x59240003, 0x4801a00a, 0x59240004, - 0x4801a00b, 0x5930001e, 0x82000d80, 0x0000e000, - 0x0500000e, 0x82000d80, 0x0000df00, 0x05000004, - 0x6441a407, 0x60180800, 0x0501f015, 0x42001800, - 0x0010dd46, 0x05bdfceb, 0x600001be, 0x4200a000, - 0x0010dd46, 0x0501f007, 0x42001800, 0x0010dd53, - 0x05bdfce4, 0x600001c0, 0x4200a000, 0x0010dd53, - 0x90000550, 0x4801a407, 0x64d1a207, 0x6034b000, - 0x90d0ac0c, 0x0521fc62, 0x604c0800, 0x600011b8, - 0x5c00a000, 0x5c00a800, 0x5c00b000, 0x0501f52e, - 0x0501fa08, 0x4a01a006, 0x63000028, 0x5930001e, - 0x4801a007, 0x60080800, 0x600011b8, 0x0501f526, - 0x0501fa0e, 0x41780000, 0x41780800, 0x42002000, - 0x00080000, 0x0c01f80e, 0x80000000, 0x80040800, - 0x60301000, 0x82080540, 0x02000000, 0x4801a006, - 0x800408e0, 0x5930001e, 0x80040540, 0x4801a007, - 0x80080904, 0x600011b8, 0x0501f513, 0x00108c6c, - 0x00108c6e, 0x00108c70, 0x00108c72, 0x00108c74, - 0x4811a008, 0x1c01f000, 0x4811a009, 0x1c01f000, - 0x4811a00a, 0x1c01f000, 0x4811a00b, 0x1c01f000, - 0x4811a00c, 0x1c01f000, 0x4a02600a, 0x00110210, - 0x59a8003d, 0x82000500, 0x000000ff, 0x800000d0, - 0x42026800, 0x00110210, 0x48026a12, 0x0501fa3c, - 0x41780800, 0x600010b8, 0x0501f4f7, 0x0501f9d1, - 0x4a01a006, 0x52000000, 0x4979a007, 0x5932481d, - 0x59240400, 0x90000503, 0x05000005, 0x59240400, - 0x80000110, 0x05c5fe55, 0x4805a007, 0x59240001, - 0x4801a008, 0x59240002, 0x4801a009, 0x59240003, - 0x4801a00a, 0x59240004, 0x4801a00b, 0x59240005, - 0x4801a00c, 0x601c0800, 0x600011b8, 0x0501f4de, - 0x4a026202, 0x0000ffff, 0x0501f9b6, 0x4a01a006, - 0x05000000, 0x5932481d, 0x59240005, 0x4801a007, - 0x59240001, 0x59240802, 0x4801a008, 0x4805a009, - 0x60100800, 0x600011b8, 0x0501f4cf, 0x4a026202, - 0x0000ffff, 0x0501f9a7, 0x4d3c0000, 0x417a7800, - 0x05e5fc43, 0x5c027800, 0x4a01a006, 0x03000000, - 0x59340403, 0x82000580, 0x000007fe, 0x0502008e, - 0x4a01a006, 0x04000000, 0x59a80249, 0x8c000506, - 0x05000004, 0x5930081d, 0x58040408, 0x4801a001, - 0x5934000a, 0x84000500, 0x4802680a, 0x59a80249, - 0x8c000508, 0x05000010, 0x59a8004d, 0x4801a007, - 0x59a8004e, 0x82000500, 0x07deffff, 0x599c0818, - 0x8c040516, 0x05000002, 0x8400056a, 0x4801a008, - 0x4a01a009, 0x00002710, 0x59a80050, 0x4801a00a, - 0x0501f046, 0x59a8004d, 0x59a81249, 0x8c080506, - 0x05000003, 0x82000500, 0xffff0000, 0x4801a007, - 0x05e9fbd2, 0x0502000e, 0x59300c03, 0xb0041591, - 0x0500000b, 0x59a80ccc, 0x8c04050a, 0x05020008, - 0x497b8880, 0x82000500, 0x0000ffff, 0x4c000000, - 0x05c5fe27, 0x5c000000, 0x48038880, 0x59a8004e, - 0x05e9fbc2, 0x05020006, 0x82000500, 0xb7ffffff, - 0x82000540, 0x80000000, 0x0501f003, 0x82000500, - 0x3fffffff, 0x599c0818, 0x8c040516, 0x05000002, - 0x8400056a, 0x05ddfe1a, 0x05000008, 0x59a80ccc, - 0x8c040506, 0x05020005, 0x59a80a49, 0x8c080506, - 0x05020002, 0x8400057c, 0x8d0c0510, 0x05000014, - 0x59300c03, 0xb0041591, 0x05000011, 0x900415b1, - 0x0500000f, 0x4c580000, 0x4c500000, 0x4c540000, - 0x6010b000, 0x4200a000, 0x0010e50c, 0x90d0ac1f, - 0x4c000000, 0x0521fb96, 0x5c000000, 0x5c00a800, - 0x5c00a000, 0x5c00b000, 0x8400057a, 0x4801a008, - 0x4979a009, 0x4979a00a, 0x59240001, 0x59240802, - 0x4801a00b, 0x4805a00c, 0x59240003, 0x59240804, - 0x4801a00d, 0x4805a00e, 0x4979a00f, 0x4979a010, - 0x4979a011, 0x4979a012, 0x599c0018, 0x8c000510, - 0x05000011, 0x59a80006, 0x8c00050a, 0x05000004, - 0x59a80249, 0x8c000508, 0x0502000b, 0x59a80051, - 0x84000576, 0x4801a013, 0x59a80052, 0x4801a014, - 0x59a80053, 0x4801a015, 0x59a80054, 0x4801a016, - 0x0501f005, 0x4979a013, 0x4979a014, 0x4979a015, - 0x4979a016, 0x59a80055, 0x84000576, 0x4801a017, - 0x59a80056, 0x4801a018, 0x4979a019, 0x4979a01a, - 0x0501f052, 0x05fdfd88, 0x59a8004d, 0x4801a007, - 0x4c640000, 0x4d2c0000, 0x59a8c84e, 0x050dff7e, - 0x0500000d, 0x0511fe00, 0x0502000b, 0x592c020b, - 0x8c00050e, 0x05000008, 0x8264cd00, 0x0000ffff, - 0x592c000d, 0x82000500, 0xffff0000, 0x8064cd40, - 0x0501f005, 0x59a80a49, 0x90040d30, 0x05000002, - 0x8464cd36, 0x4865a008, 0x5c025800, 0x5c00c800, - 0x59a8004f, 0x4801a009, 0x59a80050, 0x4801a00a, - 0x59240001, 0x59240802, 0x4801a00b, 0x4805a00c, - 0x59240003, 0x59240804, 0x4801a00d, 0x4805a00e, - 0x4979a00f, 0x4979a010, 0x4979a011, 0x4979a012, - 0x59340200, 0x8c000508, 0x05000005, 0x59a80051, - 0x8400057e, 0x48035051, 0x0501f00b, 0x599c0018, + 0x00108ed7, 0x50000000, 0x80040500, 0x1c01f000, + 0x59c80840, 0x82040d00, 0x000e0000, 0x83180400, + 0x00108edc, 0x50000000, 0x80040580, 0x1c01f000, + 0x00000210, 0x00000420, 0x00000840, 0x00001080, + 0x00002100, 0x00004000, 0x00008000, 0x00010000, + 0x00020000, 0x00040000, 0x00080000, 0x00100000, + 0x00200000, 0x00400000, 0x00800000, 0x00084000, + 0x00108000, 0x00210000, 0x00420000, 0x00840000, + 0x00000000, 0x00020000, 0x00040000, 0x00060000, + 0x00080000, 0x59900007, 0x800c0c80, 0x05021003, + 0x90000541, 0x0501f004, 0x80000000, 0x48032007, + 0x80000580, 0x1c01f000, 0x417a3000, 0x05fdffd5, + 0x05000005, 0x811a3000, 0x91180585, 0x05fe07fc, + 0x1c01f000, 0x81780080, 0x1c01f000, 0x480bc857, + 0x05fdfadd, 0x4df00000, 0x480b1800, 0x5c03e000, + 0x05fc0aca, 0x1c01f000, 0x4803c856, 0x05fdfad6, + 0x4df00000, 0x497b180b, 0x497b1801, 0x497b180c, + 0x497b180d, 0x497b180e, 0x598c0000, 0x90000583, + 0x05000006, 0x916c0582, 0x05020003, 0x64171800, + 0x0501f002, 0x64031800, 0x5c03e000, 0x05fc0ab7, + 0x1c01f000, 0x59300004, 0x8c00050c, 0x05020002, + 0x64066203, 0x1c01f000, 0x91180485, 0x05ba1f02, + 0x491bc857, 0x811b20c8, 0x83932400, 0x0000b037, + 0x8119b0c8, 0x82d9b400, 0x0000bf32, 0x811ba0ca, + 0x83d3a400, 0x00007600, 0x83180400, 0x00108f25, + 0x50034800, 0x811a28c2, 0x83162c00, 0x00006100, + 0x1c01f000, 0x00112216, 0x0011222f, 0x00112248, + 0x00112261, 0x0011227a, 0x4933c857, 0x59300407, + 0x90000c92, 0x05021015, 0x05011000, 0x0c01f001, + 0x00108f42, 0x00108fe8, 0x00109341, 0x001093af, + 0x00108fe8, 0x00109341, 0x001093af, 0x00108f42, + 0x00108fe8, 0x00108f42, 0x00108f42, 0x00108f42, + 0x00108f42, 0x00108f42, 0x00108f42, 0x00108f42, + 0x00108f46, 0x00108f46, 0x4803c857, 0x05fdfa8e, + 0x05fdf9e3, 0x05fdf27d, 0x42001000, 0x00112322, + 0x50081000, 0x4930100c, 0x58080002, 0x82000580, + 0x00000100, 0x0502003d, 0x59325809, 0x812e59c0, + 0x05b80ec5, 0x492fc856, 0x5932680a, 0x83340580, + 0x001141b4, 0x05000025, 0x592c040f, 0x82000500, + 0x0000e000, 0x05000003, 0x0501fbe0, 0x0501f002, + 0x0501fbd0, 0x592c040d, 0x82000500, 0x000000ff, + 0x90000583, 0x0500082a, 0x592c0011, 0x90000503, + 0x05000006, 0x90000583, 0x80000000, 0x58d00802, + 0x80040540, 0x4801a002, 0x42001000, 0x00112322, + 0x50081000, 0x4930100b, 0x492c100a, 0x90d00406, + 0x48001003, 0x592c0004, 0x48001006, 0x592c0011, + 0x48001005, 0x592c0012, 0x48001007, 0x592c0013, + 0x48001008, 0x0001f029, 0x592c080e, 0x48066802, + 0x82040500, 0x00ffff00, 0x05000007, 0x497a6a12, + 0x59a81040, 0x82081500, 0x00ffff00, 0x80080580, + 0x05fe07d2, 0x82040d00, 0x000000ff, 0x800408d0, + 0x48066a12, 0x05fdf7cd, 0x1c01f000, 0x59a8024c, + 0x8c000508, 0x0500000c, 0x59a80050, 0x82000500, + 0x0000ffff, 0x59c40880, 0x80040d80, 0x05000006, + 0x497b8880, 0x4c000000, 0x05c5fbf9, 0x5c000000, + 0x48038880, 0x1c01f000, 0x4d2c0000, 0x4d300000, + 0x4c580000, 0x4c540000, 0x4c500000, 0x5832580a, + 0x812e59c0, 0x05b80e74, 0x58300002, 0x82000580, + 0x00000100, 0x05020021, 0x5830000b, 0x5832600c, + 0x81300d80, 0x05020011, 0x0501f82d, 0x05020015, + 0x592c0811, 0x90040c03, 0x80040904, 0x4004b000, + 0x4200a000, 0x00112004, 0x0501ff2c, 0x05000002, + 0x9050a402, 0x4050a800, 0x0525f8a7, 0x600011b8, + 0x0501feb1, 0x0501f007, 0x4803c857, 0x4933c857, + 0x813261c0, 0x05000003, 0x0501f819, 0x05fc0f87, + 0x5c00a000, 0x5c00a800, 0x5c00b000, 0x5c026000, + 0x5c025800, 0x1c01f000, 0x5830000b, 0x5832600c, + 0x4a006002, 0x00000100, 0x4803c857, 0x4933c857, + 0x81300d80, 0x05fe07ed, 0x0501f809, 0x05fe07f1, + 0x4803c857, 0x05f9fe9e, 0x05ba0e43, 0x640a5a0a, + 0x0001fba8, 0x0505f910, 0x05fdf7ea, 0x05fdf9fa, + 0x4df00000, 0x598c000b, 0x81300580, 0x05020008, + 0x598c0003, 0x81300580, 0x05020005, 0x5c03e000, + 0x05fc09e2, 0x80000580, 0x1c01f000, 0x4803c857, + 0x5c03e000, 0x05fc09dd, 0x90000541, 0x1c01f000, + 0x59300403, 0xb0000ca0, 0x05ba1e2b, 0x83340d80, + 0x001141b4, 0x0502000a, 0x5930082a, 0x48066802, + 0x82041500, 0x00ffff00, 0x05020004, 0x800408d0, + 0x48066a12, 0x0501f002, 0x497a6a12, 0x4803c857, + 0x0c01f001, 0x00109148, 0x00109161, 0x00109170, + 0x0010929a, 0x00109261, 0x00109265, 0x00109271, + 0x00109287, 0x00109277, 0x00109287, 0x001092c7, + 0x00109287, 0x0010930e, 0x00109287, 0x00109319, + 0x00109287, 0x00109277, 0x00109287, 0x0010931d, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x00109060, 0x00109060, 0x00109060, 0x001093c8, + 0x001093dd, 0x001093e5, 0x00109060, 0x001093fc, + 0x00109271, 0x00109060, 0x00109271, 0x00109287, + 0x00109060, 0x00109170, 0x0010929a, 0x00109060, + 0x00109444, 0x00109287, 0x00109060, 0x00109452, + 0x00109287, 0x00109060, 0x00109277, 0x0010913b, + 0x00109061, 0x00109060, 0x0010946e, 0x001094a4, + 0x00109530, 0x00109060, 0x0010953e, 0x0010926f, + 0x00109533, 0x00109060, 0x00109406, 0x00109573, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x00109074, 0x001090d5, 0x001090df, 0x00109060, + 0x00109060, 0x00109060, 0x00109111, 0x00109119, + 0x00109060, 0x00109060, 0x00109085, 0x001090af, + 0x001095a8, 0x001095dd, 0x001095fe, 0x00109060, + 0x00109060, 0x00109060, 0x001095d3, 0x00109555, + 0x0010946e, 0x001097ed, 0x00109060, 0x0010982e, + 0x001097e3, 0x0010983b, 0x00109060, 0x00109856, + 0x001097e9, 0x00109060, 0x00109060, 0x00109060, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x05b9fdb5, 0x0501facb, 0x59325809, 0x592c000d, + 0x4801a006, 0x592c000e, 0x4801a007, 0x592c000f, + 0x4801a008, 0x592c0010, 0x4801a009, 0x592c0011, + 0x4801a00a, 0x4979a00b, 0x592c080d, 0x82040d00, + 0x00000fff, 0x80040904, 0x600011b8, 0x0501f5f6, + 0x4a026202, 0x0000ffff, 0x0501fab6, 0x4d2c0000, + 0x4a01a006, 0x05000000, 0x59325809, 0x592c000d, + 0x4801a007, 0x592c000e, 0x4801a008, 0x592c000f, + 0x4801a009, 0x5c025800, 0x60100800, 0x600011b8, + 0x0501f5e5, 0x4c580000, 0x4c500000, 0x4c540000, + 0x4d2c0000, 0x0501faa3, 0x5930040d, 0x90000503, + 0x05000006, 0x90000583, 0x80000000, 0x58d00802, + 0x80040540, 0x4801a002, 0x59325809, 0x4200a800, + 0x00112004, 0x592cb209, 0x9058b403, 0x8058b104, + 0x912ca40a, 0x0521ff89, 0x40580000, 0x8054ac00, + 0x592c0001, 0x80000540, 0x05000003, 0x40025800, + 0x05fdf7f5, 0x4200a000, 0x00112004, 0x4050a800, + 0x5930b40d, 0x9058b403, 0x8058b104, 0x40580800, + 0x0521ffb5, 0x600011b8, 0x5c025800, 0x5c00a800, + 0x5c00a000, 0x5c00b000, 0x0501f5bb, 0x4c580000, + 0x4c500000, 0x4c540000, 0x4d2c0000, 0x42034800, + 0x00111ffd, 0x0501fa85, 0x59325809, 0x592c0805, + 0x4807c857, 0x40041000, 0x80040904, 0x90081503, + 0x05000007, 0x80040800, 0x90081583, 0x80081000, + 0x58d00002, 0x80080540, 0x4801a002, 0x4a025809, + 0x02000000, 0x90d0ac06, 0x592cb011, 0x912ca409, + 0x0521ff5a, 0x40580000, 0x8054ac00, 0x592e5801, + 0x41780000, 0x812e5d40, 0x05fe07f8, 0x600011b8, + 0x5c025800, 0x5c00a800, 0x5c00a000, 0x5c00b000, + 0x0501f595, 0x0501fa57, 0x4a01a006, 0x78000000, + 0x5930001e, 0x840001c0, 0x4801a407, 0x4979a207, + 0x60080800, 0x600011b8, 0x0501f58b, 0x4c580000, + 0x4c540000, 0x4c500000, 0x0501fa58, 0x4a01a006, + 0x02000000, 0x5932481d, 0x59240001, 0x4801a008, + 0x59240002, 0x4801a009, 0x59240003, 0x4801a00a, + 0x59240004, 0x4801a00b, 0x5930001e, 0x82000d80, + 0x0000e000, 0x0500000e, 0x82000d80, 0x0000df00, + 0x05000004, 0x6441a407, 0x60180800, 0x0501f015, + 0x42001800, 0x00111ce0, 0x05bdf85d, 0x600001be, + 0x4200a000, 0x00111ce0, 0x0501f007, 0x42001800, + 0x00111ced, 0x05bdf856, 0x600001c0, 0x4200a000, + 0x00111ced, 0x90000550, 0x4801a407, 0x64d1a207, + 0x6034b000, 0x90d0ac0c, 0x0521ff18, 0x604c0800, + 0x600011b8, 0x5c00a000, 0x5c00a800, 0x5c00b000, + 0x0501f559, 0x0501fa1b, 0x4a01a006, 0x63000028, + 0x5930001e, 0x4801a007, 0x60080800, 0x600011b8, + 0x0501f551, 0x0501fa21, 0x41780000, 0x41780800, + 0x42002000, 0x00080000, 0x0c01f80e, 0x80000000, + 0x80040800, 0x60301000, 0x82080540, 0x02000000, + 0x4801a006, 0x800408e0, 0x5930001e, 0x80040540, + 0x4801a007, 0x80080904, 0x600011b8, 0x0501f53e, + 0x00109131, 0x00109133, 0x00109135, 0x00109137, + 0x00109139, 0x4811a008, 0x1c01f000, 0x4811a009, + 0x1c01f000, 0x4811a00a, 0x1c01f000, 0x4811a00b, + 0x1c01f000, 0x4811a00c, 0x1c01f000, 0x4a02600a, + 0x001141b4, 0x59a80040, 0x82000500, 0x000000ff, + 0x800000d0, 0x42026800, 0x001141b4, 0x48026a12, + 0x0501fa5b, 0x41780800, 0x600010b8, 0x0501f522, + 0x0501f9e4, 0x4a01a006, 0x52000000, 0x4979a007, + 0x5932481d, 0x59240400, 0x90000503, 0x05000005, + 0x59240400, 0x80000110, 0x05c5fa10, 0x4805a007, + 0x59240001, 0x4801a008, 0x59240002, 0x4801a009, + 0x59240003, 0x4801a00a, 0x59240004, 0x4801a00b, + 0x59240005, 0x4801a00c, 0x601c0800, 0x600011b8, + 0x0501f509, 0x4a026202, 0x0000ffff, 0x0501f9c9, + 0x4a01a006, 0x05000000, 0x5932481d, 0x59240005, + 0x4801a007, 0x59240001, 0x59240802, 0x4801a008, + 0x4805a009, 0x60100800, 0x600011b8, 0x0501f4fa, + 0x4a026202, 0x0000ffff, 0x0501f9ba, 0x4d3c0000, + 0x417a7800, 0x05e5f9f0, 0x5c027800, 0x4a01a006, + 0x03000000, 0x59340403, 0x82000580, 0x000007fe, + 0x0502008e, 0x4a01a006, 0x04000000, 0x59a8024c, + 0x8c000506, 0x05000004, 0x5930081d, 0x58040408, + 0x4801a001, 0x5934000a, 0x84000500, 0x4802680a, + 0x59a8024c, 0x8c000508, 0x05000010, 0x59a80050, + 0x4801a007, 0x59a80051, 0x82000500, 0x07deffff, + 0x599c0818, 0x8c040516, 0x05000002, 0x8400056a, + 0x4801a008, 0x4a01a009, 0x00002710, 0x59a80053, + 0x4801a00a, 0x0501f046, 0x59a80050, 0x59a8124c, + 0x8c080506, 0x05000003, 0x82000500, 0xffff0000, + 0x4801a007, 0x05e9f9f7, 0x0502000e, 0x59300c03, + 0xb0041591, 0x0500000b, 0x59a80cd1, 0x8c04050a, + 0x05020008, 0x497b8880, 0x82000500, 0x0000ffff, + 0x4c000000, 0x05c5f9e2, 0x5c000000, 0x48038880, + 0x59a80051, 0x05e9f9e7, 0x05020006, 0x82000500, + 0xb7ffffff, 0x82000540, 0x80000000, 0x0501f003, + 0x82000500, 0x3fffffff, 0x599c0818, 0x8c040516, + 0x05000002, 0x8400056a, 0x05ddfafb, 0x05000008, + 0x59a80cd1, 0x8c040506, 0x05020005, 0x59a80a4c, + 0x8c080506, 0x05020002, 0x8400057c, 0x8d0c0510, + 0x05000014, 0x59300c03, 0xb0041591, 0x05000011, + 0x900415b1, 0x0500000f, 0x4c580000, 0x4c500000, + 0x4c540000, 0x6010b000, 0x4200a000, 0x001124b0, + 0x90d0ac1f, 0x4c000000, 0x0521fe4c, 0x5c000000, + 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x8400057a, + 0x4801a008, 0x4979a009, 0x4979a00a, 0x59240001, + 0x59240802, 0x4801a00b, 0x4805a00c, 0x59240003, + 0x59240804, 0x4801a00d, 0x4805a00e, 0x4979a00f, + 0x4979a010, 0x4979a011, 0x4979a012, 0x599c0018, 0x8c000510, 0x05000011, 0x59a80006, 0x8c00050a, - 0x05000005, 0x59340c03, 0x82040480, 0x000007f0, - 0x0500100a, 0x59a80051, 0x4801a013, 0x59a80052, - 0x4801a014, 0x59a80053, 0x4801a015, 0x59a80054, + 0x05000004, 0x59a8024c, 0x8c000508, 0x0502000b, + 0x59a80054, 0x84000576, 0x4801a013, 0x59a80055, + 0x4801a014, 0x59a80056, 0x4801a015, 0x59a80057, 0x4801a016, 0x0501f005, 0x4979a013, 0x4979a014, - 0x4979a015, 0x4979a016, 0x59a80055, 0x4801a017, - 0x59a80056, 0x4801a018, 0x59a80057, 0x4801a019, - 0x59a80058, 0x4801a01a, 0x60740800, 0x600011b8, - 0x0501f3e1, 0x0501f8bb, 0x4a01a006, 0x50000000, - 0x05fdf7a9, 0x0501f8b7, 0x4a01a006, 0x21100014, + 0x4979a015, 0x4979a016, 0x59a80058, 0x84000576, + 0x4801a017, 0x59a80059, 0x4801a018, 0x4979a019, + 0x4979a01a, 0x0501f055, 0x05fdfd81, 0x59a80050, + 0x4801a007, 0x4c640000, 0x4d2c0000, 0x59a8c851, + 0x0511f842, 0x0500000d, 0x0511fee1, 0x0502000b, + 0x592c020b, 0x8c00050e, 0x05000008, 0x8264cd00, + 0x0000ffff, 0x592c000d, 0x82000500, 0xffff0000, + 0x8064cd40, 0x0501f005, 0x59a80a4c, 0x90040d30, + 0x05000002, 0x8464cd36, 0x4865a008, 0x5c025800, + 0x5c00c800, 0x59a80052, 0x4801a009, 0x59a80053, + 0x4801a00a, 0x59240001, 0x59240802, 0x4801a00b, + 0x4805a00c, 0x59240003, 0x59240804, 0x4801a00d, + 0x4805a00e, 0x4979a00f, 0x4979a010, 0x4979a011, + 0x4979a012, 0x59340200, 0x8c000508, 0x05000005, + 0x59a80054, 0x8400057e, 0x48035054, 0x0501f00e, + 0x599c0018, 0x8c000510, 0x05000014, 0x59a80006, + 0x8c00050a, 0x05000008, 0x59340c03, 0x82040480, + 0x000007f0, 0x0500100d, 0x82040480, 0x00000800, + 0x0502100a, 0x59a80054, 0x4801a013, 0x59a80055, + 0x4801a014, 0x59a80056, 0x4801a015, 0x59a80057, + 0x4801a016, 0x0501f005, 0x4979a013, 0x4979a014, + 0x4979a015, 0x4979a016, 0x59a80058, 0x4801a017, + 0x59a80059, 0x4801a018, 0x59a8005a, 0x4801a019, + 0x59a8005b, 0x4801a01a, 0x60740800, 0x600011b8, + 0x0501f409, 0x0501f8cb, 0x4a01a006, 0x50000000, + 0x05fdf7a6, 0x0501f8c7, 0x4a01a006, 0x21100014, 0x4979a007, 0x4979a008, 0x4979a009, 0x4979a00a, - 0x60140800, 0x600011b8, 0x0501f3d3, 0x0501f8b4, - 0x0501f002, 0x0501f8b9, 0x4a01a006, 0x02000000, - 0x60040800, 0x600011b8, 0x0501f3cb, 0x0501f8b3, + 0x60140800, 0x600011b8, 0x0501f3fb, 0x0501f8c4, + 0x0501f002, 0x0501f8c9, 0x4a01a006, 0x02000000, + 0x60040800, 0x600011b8, 0x0501f3f3, 0x0501f8c3, 0x4a01a006, 0x02000000, 0x59300403, 0x900005b1, - 0x05000002, 0x05fdf790, 0x0501fc38, 0x05000004, - 0x4a01a001, 0x00fffffe, 0x05fdf709, 0x81a40800, - 0x4a000801, 0x00fffffe, 0x05fdf705, 0x0501f8a3, + 0x05000002, 0x05fdf78d, 0x0501fc60, 0x05000004, + 0x4a01a001, 0x00fffffe, 0x05fdf706, 0x81a40800, + 0x4a000801, 0x00fffffe, 0x05fdf702, 0x0501f8b3, 0x4a01a006, 0x01000000, 0x5930041c, 0x80000540, 0x05000003, 0x4801a407, 0x0501f002, 0x640da407, 0x5930021c, 0x80000540, 0x05000003, 0x4801a207, 0x0501f003, 0x4a01a207, 0x00002a00, 0x60080800, - 0x600011b8, 0x0501f3a8, 0x4a026202, 0x0000ffff, - 0x0501f880, 0x4a01a406, 0x00002010, 0x6451a206, + 0x600011b8, 0x0501f3d0, 0x4a026202, 0x0000ffff, + 0x0501f890, 0x4a01a406, 0x00002010, 0x6451a206, 0x4a01a407, 0x00000800, 0x4a01a207, 0x00002000, 0x60000008, 0x59a80807, 0x8c04050c, 0x05000002, - 0x80000580, 0x5932481d, 0x59240c00, 0x8c040508, + 0x80000580, 0x59300a16, 0x8c040514, 0x05000006, + 0x5930081e, 0x90040d30, 0x05000003, 0x80040540, + 0x0501f009, 0x5932481d, 0x59240c00, 0x8c040508, 0x05000004, 0x90000560, 0x8c04050a, 0x05020002, 0x90000550, 0x90000542, 0x5934080a, 0x8c040514, 0x05000005, 0x82040d00, 0x00000380, 0x80040540, 0x0501f006, 0x599c0818, 0x8c040518, 0x05000003, - 0x82000540, 0x00000380, 0x0501f03c, 0x0501f86b, + 0x82000540, 0x00000380, 0x0501f044, 0x0501f873, 0x4a01a406, 0x00000210, 0x6451a206, 0x4a01a407, 0x00000800, 0x5934000a, 0x8c000516, 0x05000013, 0x59340c05, 0x90040530, 0x05000013, 0x59340a05, @@ -9129,76 +9437,81 @@ static const uint32_t isp_2500_risc_code[] = { 0x00000400, 0x0501f006, 0x4a01a207, 0x00000700, 0x0501f003, 0x4a01a207, 0x00000800, 0x60000008, 0x59a80807, 0x8c04050c, 0x05000002, 0x80000580, + 0x59300a16, 0x8c040510, 0x05000006, 0x5930081e, + 0x90040d30, 0x05000003, 0x80040540, 0x0501f009, 0x5932481d, 0x59240c00, 0x8c040508, 0x05000004, 0x90000560, 0x8c04050a, 0x05020002, 0x90000550, 0x90000542, 0x59340a00, 0x8c04050e, 0x0500000b, 0x84000550, 0x599c1017, 0x8c08050a, 0x05020004, 0x8c04050a, 0x05000002, 0x8400054e, 0x8c04051c, 0x05000002, 0x84000552, 0x4801a20a, 0x60140800, - 0x600011b8, 0x0501f344, 0x0501f82c, 0x4a01a006, + 0x600011b8, 0x0501f35c, 0x0501f82c, 0x4a01a006, 0x02100014, 0x4a01a007, 0x00000100, 0x4979a008, 0x4979a009, 0x4979a00a, 0x60140800, 0x600011b8, - 0x0501f339, 0x0501f821, 0x4a01a006, 0x02000000, - 0x05fdf642, 0x4933c857, 0x0501f81c, 0x4a01a006, + 0x0501f351, 0x0501f821, 0x4a01a006, 0x02000000, + 0x05fdf62f, 0x4933c857, 0x0501f81c, 0x4a01a006, 0x01000000, 0x642da407, 0x60080800, 0x600011b8, - 0x0501f32d, 0x42005000, 0x32000000, 0x42006000, - 0x08290000, 0x41786800, 0x41787800, 0x0501f2e9, + 0x0501f345, 0x42005000, 0x32000000, 0x42006000, + 0x08290000, 0x41786800, 0x41787800, 0x0501f2fb, 0x42005000, 0x22000000, 0x42006000, 0x01290000, - 0x41786800, 0x41787800, 0x0501f2e2, 0x42005000, + 0x41786800, 0x41787800, 0x0501f2f4, 0x42005000, 0x33000000, 0x42006000, 0x08980000, 0x41786800, - 0x41787800, 0x0501f2db, 0x42005000, 0x23000000, + 0x41787800, 0x0501f2ed, 0x42005000, 0x23000000, 0x42006000, 0x01980000, 0x41786800, 0x41787800, - 0x0501f2d4, 0x59300403, 0x82000c80, 0x00000085, - 0x05b81f6e, 0x82000c80, 0x00000093, 0x05ba1f6b, - 0x82000480, 0x00000085, 0x0c01f001, 0x00108e82, - 0x00108e81, 0x00108e81, 0x00108e81, 0x00108e81, - 0x00108e81, 0x00108e82, 0x00108e81, 0x00108e81, - 0x00108e81, 0x00108e81, 0x00108e81, 0x00108e81, - 0x00108e89, 0x05b9ff59, 0x4933c857, 0x42034800, - 0x0010e063, 0x0501f836, 0x41780800, 0x600010b8, - 0x0501f2f1, 0x4d2c0000, 0x59325809, 0x4933c857, - 0x492fc857, 0x812e59c0, 0x05b80f4c, 0x59340a12, - 0x82040d00, 0x0000ff00, 0x592c000e, 0x82000500, + 0x0501f2e6, 0x59300403, 0x82000c80, 0x00000085, + 0x05b81ad1, 0x82000c80, 0x00000093, 0x05ba1ace, + 0x82000480, 0x00000085, 0x0c01f001, 0x0010935a, + 0x00109359, 0x00109359, 0x00109359, 0x00109359, + 0x00109359, 0x0010935a, 0x00109359, 0x00109359, + 0x00109359, 0x00109359, 0x00109359, 0x00109359, + 0x00109361, 0x05b9fabc, 0x4933c857, 0x42034800, + 0x00111ffd, 0x0501f842, 0x41780800, 0x600010b8, + 0x0501f309, 0x4d2c0000, 0x59325809, 0x4933c857, + 0x492fc857, 0x812e59c0, 0x05b80aaf, 0x41780800, + 0x05e9f830, 0x0500000d, 0x592c180d, 0x820c0500, + 0x00ffff00, 0x05000006, 0x59a81040, 0x82081500, + 0x00ffff00, 0x80080580, 0x05020004, 0x820c0d00, + 0x000000ff, 0x800408d0, 0x592c000e, 0x82000500, 0x000000ff, 0x900001c0, 0x80040540, 0x592c0c0b, 0x82040d00, 0x0000f000, 0x82040d80, 0x00003000, 0x05020003, 0x90000570, 0x0501f002, 0x90000551, - 0x44034800, 0x81a5a000, 0x0501fb4c, 0x05020b51, + 0x44034800, 0x81a5a000, 0x0501fb58, 0x05020b5d, 0x60241000, 0x600c0800, 0x592c000d, 0x82000500, 0xff000000, 0x82001d80, 0x84000000, 0x05000006, - 0x82001d80, 0x85000000, 0x05ba0f2c, 0x601c1000, + 0x82001d80, 0x85000000, 0x05ba0a83, 0x601c1000, 0x60040800, 0x912c1c0d, 0x500c0000, 0x4401a000, 0x800c1800, 0x80d1a000, 0x80081040, 0x05fe07fb, - 0x600011b8, 0x5c025800, 0x0501f2bf, 0x42005000, + 0x600011b8, 0x5c025800, 0x0501f2cb, 0x42005000, 0x81000000, 0x42006000, 0x00090000, 0x41786800, 0x41787800, 0x59301407, 0x90081585, 0x05020003, 0x42006000, 0x00890000, 0x59301416, 0x8c08051a, - 0x05000002, 0x60047800, 0x0501f272, 0x59300403, - 0xb0000c93, 0x05ba1f0d, 0xb000048b, 0x05b81f0b, + 0x05000002, 0x60047800, 0x0501f278, 0x59300403, + 0xb0000c93, 0x05ba1a64, 0xb000048b, 0x05b81a62, 0x5932680a, 0x59368c03, 0x4803c857, 0x0c01f001, - 0x00108f39, 0x00108f41, 0x00108f49, 0x00108f51, - 0x00108edc, 0x00108edc, 0x00108edc, 0x00108f31, - 0x05b9fefe, 0x42005000, 0x06000000, 0x42006000, - 0x08290000, 0x41786800, 0x41787800, 0x0501f259, - 0x4933c857, 0x05fdff6f, 0x4a01a006, 0x12000000, + 0x0010941d, 0x00109425, 0x0010942d, 0x00109435, + 0x001093c0, 0x001093c0, 0x001093c0, 0x00109415, + 0x05b9fa55, 0x42005000, 0x06000000, 0x42006000, + 0x08290000, 0x41786800, 0x41787800, 0x0501f25f, + 0x4933c857, 0x05fdff63, 0x4a01a006, 0x12000000, 0x59300407, 0x90000584, 0x05020003, 0x59340002, 0x0501f003, 0x5932481d, 0x59240005, 0x82000500, 0x00ffffff, 0x4801a007, 0x5930041b, 0x4801a408, 0x5930021b, 0x4801a208, 0x600c0800, 0x600011b8, - 0x0501f281, 0x05fdff5b, 0x4a01a006, 0x0f000000, + 0x0501f28d, 0x05fdff4f, 0x4a01a006, 0x0f000000, 0x5930001e, 0x4801a007, 0x60080800, 0x600011b8, - 0x0501f279, 0x05fdff61, 0x4a01a006, 0x02000000, + 0x0501f285, 0x05fdff55, 0x4a01a006, 0x02000000, 0x59c40085, 0x59880804, 0x80040c00, 0x48071004, 0x497b8885, 0x59880000, 0x4801a007, 0x59880001, 0x4801a008, 0x59880002, 0x4801a009, 0x59880003, 0x4801a00a, 0x59880004, 0x4801a00b, 0x59880005, - 0x4801a00c, 0x601c0800, 0x600011b8, 0x0501f262, - 0x4a026202, 0x0000ffff, 0x05fdff3a, 0x4a01a006, + 0x4801a00c, 0x601c0800, 0x600011b8, 0x0501f26e, + 0x4a026202, 0x0000ffff, 0x05fdff2e, 0x4a01a006, 0x62000000, 0x5930001e, 0x4801a007, 0x60080800, - 0x600011b8, 0x0501f258, 0x05fdff32, 0x59300809, + 0x600011b8, 0x0501f264, 0x05fdff26, 0x59300809, 0x4c500000, 0x4c540000, 0x4c580000, 0x9004a40e, - 0x5930b01e, 0x90d0ac06, 0x0521f97d, 0x5930081e, + 0x5930b01e, 0x90d0ac06, 0x0521fc14, 0x5930081e, 0x600011b8, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x0501f249, 0x05fdffac, 0x59300019, 0x4801a006, + 0x0501f255, 0x05fdffac, 0x59300019, 0x4801a006, 0x5930001a, 0x4801a007, 0x4a01a008, 0x00001000, 0x0501f020, 0x05fdffa4, 0x59300019, 0x4801a006, 0x5930001a, 0x4801a007, 0x4a01a008, 0x00004000, @@ -9209,157 +9522,160 @@ static const uint32_t isp_2500_risc_code[] = { 0x0501f008, 0x05fdff8c, 0x59300019, 0x4801a006, 0x5930001a, 0x4801a007, 0x4a01a008, 0x00000200, 0x4979a009, 0x4979a00a, 0x4979a00b, 0x4979a00c, - 0x4979a00d, 0x60200800, 0x600011b8, 0x0501f21a, - 0x05fdff02, 0x4a01a006, 0x02000014, 0x4979a407, - 0x4979a207, 0x59a8005f, 0x4801a008, 0x59a80060, + 0x4979a00d, 0x60200800, 0x600011b8, 0x0501f226, + 0x05fdfef6, 0x4a01a006, 0x02000014, 0x4979a407, + 0x4979a207, 0x59a80062, 0x4801a008, 0x59a80063, 0x4801a009, 0x4a01a00a, 0x00047878, 0x60140800, - 0x600011b8, 0x0501f20c, 0x05fdfef4, 0x4a01a006, + 0x600011b8, 0x0501f218, 0x05fdfee8, 0x4a01a006, 0x02140018, 0x4a01a407, 0x00000800, 0x5930001e, 0x82000d00, 0xff000000, 0x900409c0, 0x4805a207, 0x82000500, 0x00ffffff, 0x4801a00a, 0x4979a408, 0x4979a208, 0x4979a409, 0x4979a209, 0x59a80006, 0x8c000500, 0x05000005, 0x4a01a006, 0x02100014, 0x60140800, 0x0501f003, 0x4979a00b, 0x60180800, - 0x600011b8, 0x0501f1f0, 0x4933c857, 0x4937c857, - 0x4d1c0000, 0x60d40800, 0x0511f988, 0x05020025, + 0x600011b8, 0x0501f1fc, 0x4933c857, 0x4937c857, + 0x4d1c0000, 0x60d40800, 0x0511fa3c, 0x05020025, 0x59300017, 0x591c0817, 0x80040580, 0x05020021, - 0x05fdfec0, 0x4a01a006, 0x13000000, 0x5932382a, + 0x05fdfeb4, 0x4a01a006, 0x13000000, 0x5932382a, 0x59300403, 0xb0000597, 0x05000004, 0x591c0416, - 0x8c000502, 0x05b80e3d, 0x591c001b, 0x4801a005, + 0x8c000502, 0x05b80994, 0x591c001b, 0x4801a005, 0x591c0407, 0x90000583, 0x05000007, 0x5930080a, 0x58040002, 0x82000500, 0x00ffffff, 0x4801a007, 0x0501f004, 0x5932481d, 0x59240005, 0x4801a007, 0x5930041b, 0x4801a408, 0x5930021b, 0x4801a208, - 0x600c0800, 0x600011b8, 0x5c023800, 0x0501f1c6, - 0x4803c856, 0x05f9fd5e, 0x598c000b, 0x81300580, - 0x05ba0e22, 0x05f9fcb0, 0x59300403, 0xb0000597, - 0x05040b07, 0x0005ffdc, 0x5c023800, 0x05f9f545, + 0x600c0800, 0x600011b8, 0x5c023800, 0x0501f1d2, + 0x4803c856, 0x05f9fd38, 0x598c000b, 0x81300580, + 0x05ba0979, 0x05f9fc8a, 0x59300403, 0xb0000597, + 0x05040b5d, 0x0009f810, 0x5c023800, 0x05f9f51f, 0x4803c856, 0x4d2c0000, 0x4d1c0000, 0x5932382a, - 0x811e39c0, 0x05b80e15, 0x831c0580, 0xffffffff, - 0x05000044, 0x591c0c07, 0x90040586, 0x0500000a, - 0x90040583, 0x05000044, 0x64de6403, 0x640e641c, + 0x811e39c0, 0x05b8096c, 0x831c0580, 0xffffffff, + 0x0500004a, 0x591c0c07, 0x90040586, 0x0500000a, + 0x90040583, 0x0500004a, 0x64de6403, 0x640e641c, 0x4a02621c, 0x00001700, 0x5c023800, 0x5c025800, - 0x0501f072, 0x0501f856, 0x42001000, 0x40000000, - 0x591c0203, 0x591c0804, 0x8c04053e, 0x05020024, - 0x90000c91, 0x0c001002, 0x05b9fdfc, 0x00108ff0, - 0x00108fff, 0x00108ff1, 0x00108fff, 0x00108ff9, - 0x00108ff0, 0x00108fff, 0x00108fff, 0x00108fff, - 0x00108ff0, 0x00108ff0, 0x00108ff0, 0x00108ff0, - 0x00108ff0, 0x00108fff, 0x00108ff0, 0x00108fff, - 0x05b9fdea, 0x591c0416, 0x4803c857, 0x8c000518, - 0x05000003, 0x8c000512, 0x05000007, 0x80001580, - 0x0501f007, 0x80001580, 0x591c0014, 0x4803c857, - 0x0501f00e, 0x42001000, 0x20000000, 0x591c0013, - 0x4803c857, 0x8c00053c, 0x05000003, 0x80000580, - 0x0501f006, 0x591c0014, 0x4803c857, 0x800001c0, - 0x05020002, 0x591c0017, 0x4801a00a, 0x0501f01a, - 0x0501f81f, 0x42001000, 0x40000000, 0x41780000, - 0x05fdf7fa, 0x0501f81a, 0x591e5809, 0x812e59c0, - 0x05b80dc6, 0x592c1013, 0x591c0013, 0x80080480, - 0x4801a00a, 0x591c0203, 0x591c0804, 0x8c04053e, - 0x05020005, 0x90000d82, 0x05000006, 0x90000d84, - 0x05000004, 0x42001000, 0x40000000, 0x0501f002, - 0x80001580, 0x4809a00b, 0x60180800, 0x600011b8, - 0x5c023800, 0x5c025800, 0x0501f14f, 0x4803c856, - 0x05fdfe36, 0x4a01a006, 0x02000000, 0x59300c1b, - 0x4805a407, 0x59300a1b, 0x4805a207, 0x5932481d, - 0x59241005, 0x5930080a, 0x58041802, 0x820c1d00, - 0x00ffffff, 0x5930082a, 0x82040580, 0xffffffff, - 0x05000007, 0x58040407, 0x90000583, 0x05020004, - 0x4809a008, 0x480da009, 0x0501f003, 0x480da008, - 0x4809a009, 0x1c01f000, 0x4803c856, 0x05fdfe1b, - 0x0501f003, 0x4803c856, 0x05fdfe11, 0x4a01a006, - 0x01000000, 0x5930041c, 0x4801a407, 0x5930021c, - 0x4801a207, 0x60080800, 0x600011b8, 0x0501f126, - 0x4803c856, 0x4d1c0000, 0x05fdfdf7, 0x4a01a006, - 0x14000000, 0x5932382a, 0x591c001b, 0x4801a005, - 0x5930041b, 0x4801a407, 0x5930021b, 0x4801a207, - 0x59300017, 0x4801a008, 0x59300218, 0x82000500, - 0x000000ff, 0x840001c0, 0x4801a409, 0x60100800, - 0x600011b8, 0x5c023800, 0x0501f10f, 0x4803c856, - 0x05fdfdf6, 0x4a01a006, 0x02000001, 0x42001000, - 0xe8000000, 0x59c40801, 0x82040d00, 0x00018000, - 0x90040580, 0x60000100, 0x0500000e, 0x82040580, - 0x00008000, 0x60000080, 0x0500000a, 0x82040580, - 0x00010000, 0x60000040, 0x05000006, 0x82040580, - 0x00018000, 0x60000010, 0x05000002, 0x60080000, - 0x80080540, 0x4801a007, 0x60080800, 0x600011b8, - 0x0501f0f1, 0x4803c856, 0x0501f809, 0x5930041c, - 0x900001c0, 0x4801a005, 0x0501f950, 0x41780800, - 0x600010b8, 0x0501f8e8, 0x05f1f721, 0x4803c856, - 0x59300819, 0x90041c09, 0x64874800, 0x58040408, - 0x82000500, 0x0000f000, 0x82000580, 0x00003000, - 0x05000002, 0x65074800, 0x81a5a000, 0x0501f94f, - 0x05000004, 0x4c0c0000, 0x0501f952, 0x5c001800, - 0x580c0001, 0x82000d00, 0x00ffffff, 0x82040d40, - 0xc2000000, 0x4805a000, 0x580c0800, 0x82041500, - 0x00ffffff, 0x82000500, 0xff000000, 0x80080540, - 0x4801a001, 0x580c0002, 0x82000580, 0x00c00000, - 0x82000500, 0x00fd0300, 0x4801a002, 0x580c0003, - 0x4801a003, 0x580c0404, 0x4801a404, 0x580c0204, - 0x4801a204, 0x1c01f000, 0x05fdfda4, 0x5930001e, - 0x800001c0, 0x05000006, 0x4a01a006, 0x01000000, - 0x640da407, 0x60080800, 0x0501f021, 0x4a01a006, - 0x02000000, 0x41780800, 0x916c0584, 0x05020003, - 0x84040d42, 0x0501f00c, 0x05e5ffe0, 0x05020003, - 0x84040d4a, 0x0501f002, 0x84040d48, 0x59a80249, - 0x8c000506, 0x05020003, 0x8c00050a, 0x05000002, - 0x84040d46, 0x4805a207, 0x59c40085, 0x48031004, - 0x4c580000, 0x4c500000, 0x4c540000, 0x6018b000, - 0x9188a400, 0x90d0ac08, 0x051dffc5, 0x5c00a800, - 0x5c00a000, 0x5c00b000, 0x60200800, 0x600011b8, - 0x0501f091, 0x05fdfd6b, 0x4a01a006, 0x56000000, - 0x59340006, 0x4801a007, 0x59340007, 0x4801a008, - 0x600c0800, 0x600011b8, 0x0501f087, 0x4803c856, - 0x05fdfd6e, 0x5930081e, 0x800409c0, 0x0500000b, - 0x82040580, 0x0000ffff, 0x05000003, 0x90040487, - 0x05021006, 0x4a01a006, 0x01000000, 0x640da407, - 0x60080800, 0x0501f011, 0x4a01a006, 0x0200001c, - 0x6405a007, 0x42001000, 0x0010dd4b, 0x50080000, - 0x9c0001c0, 0x4801a009, 0x5932481d, 0x59240005, - 0x4801a00a, 0x59240001, 0x59240802, 0x4801a00b, - 0x4805a00c, 0x601c0800, 0x600011b8, 0x0501f066, - 0x4d2c0000, 0x05fdfd3f, 0x59325809, 0x812e59c0, - 0x05020003, 0x4979a001, 0x0501f005, 0x592c000c, - 0x82000500, 0x00ffffff, 0x4801a001, 0x4a01a006, - 0x51000000, 0x5c025800, 0x05fdf3a1, 0x4803c856, - 0x59325809, 0x5932680a, 0x59300407, 0x4803c857, - 0x90000d8a, 0x05000002, 0x05b9fcb0, 0x42005000, - 0x02000000, 0x42006000, 0x20290000, 0x41786800, - 0x41787800, 0x0501f805, 0x91180d78, 0x60801193, - 0x0501f882, 0x1c01f000, 0x6081a000, 0x59300416, - 0x8c000510, 0x05020008, 0x6001a000, 0x0501f006, - 0x60c1a000, 0x59300416, 0x8c000510, 0x05020002, - 0x6045a000, 0x59340a12, 0x82040d00, 0x0000ff00, - 0x5932481d, 0x59240408, 0x900001c0, 0x80040540, - 0x80d00540, 0x44034800, 0x81a5a000, 0x0501f8a3, - 0x050208a8, 0x59340002, 0x82000500, 0x00ffffff, - 0x59300c03, 0x90040db1, 0x05020002, 0x41780000, - 0x80280540, 0x4801a000, 0x59240005, 0x4801a001, - 0x4831a002, 0x90340540, 0x4801a003, 0x59300402, - 0x4801a404, 0x59300a02, 0x4805a204, 0x8c30052e, - 0x05000009, 0x4805a404, 0x59301416, 0x480bc857, - 0x8c08051c, 0x05000003, 0x59300216, 0x4803c857, - 0x4801a204, 0x483da005, 0x1c01f000, 0x643e6407, + 0x0501f078, 0x0501f85c, 0x42001000, 0x40000000, + 0x591c0203, 0x591c0804, 0x8c04053e, 0x05020027, + 0x90000c91, 0x0c001002, 0x05b9f953, 0x001094d4, + 0x001094e6, 0x001094d5, 0x001094e6, 0x001094dd, + 0x001094d4, 0x001094e6, 0x001094e6, 0x001094e6, + 0x001094d4, 0x001094d4, 0x001094d4, 0x001094d4, + 0x001094d4, 0x001094e6, 0x001094d4, 0x001094e6, + 0x05b9f941, 0x591c0416, 0x4803c857, 0x8c000518, + 0x05000003, 0x8c000512, 0x0500000a, 0x80001580, + 0x0501f00a, 0x80001580, 0x0521fbf8, 0x41780000, + 0x05020014, 0x591c0014, 0x4803c857, 0x0501f011, + 0x42001000, 0x20000000, 0x0521fbf0, 0x41780000, + 0x0502000c, 0x591c0013, 0x4803c857, 0x8c00053c, + 0x05000003, 0x80000580, 0x0501f006, 0x591c0014, + 0x4803c857, 0x800001c0, 0x05020002, 0x591c0017, + 0x4801a00a, 0x0501f01a, 0x0501f81f, 0x42001000, + 0x40000000, 0x41780000, 0x05fdf7fa, 0x0501f81a, + 0x591e5809, 0x812e59c0, 0x05b80917, 0x592c1013, + 0x591c0013, 0x80080480, 0x4801a00a, 0x591c0203, + 0x591c0804, 0x8c04053e, 0x05020005, 0x90000d82, + 0x05000006, 0x90000d84, 0x05000004, 0x42001000, + 0x40000000, 0x0501f002, 0x80001580, 0x4809a00b, + 0x60180800, 0x600011b8, 0x5c023800, 0x5c025800, + 0x0501f155, 0x4803c856, 0x05fdfe24, 0x4a01a006, + 0x02000000, 0x59300c1b, 0x4805a407, 0x59300a1b, + 0x4805a207, 0x5932481d, 0x59241005, 0x5930080a, + 0x58041802, 0x820c1d00, 0x00ffffff, 0x5930082a, + 0x82040580, 0xffffffff, 0x05000007, 0x58040407, + 0x90000583, 0x05020004, 0x4809a008, 0x480da009, + 0x0501f003, 0x480da008, 0x4809a009, 0x1c01f000, + 0x4803c856, 0x05fdfe09, 0x0501f003, 0x4803c856, + 0x05fdfdff, 0x4a01a006, 0x01000000, 0x5930041c, + 0x4801a407, 0x5930021c, 0x4801a207, 0x60080800, + 0x600011b8, 0x0501f12c, 0x4803c856, 0x4d1c0000, + 0x05fdfde5, 0x4a01a006, 0x14000000, 0x5932382a, + 0x591c001b, 0x4801a005, 0x5930041b, 0x4801a407, + 0x5930021b, 0x4801a207, 0x59300017, 0x4801a008, + 0x59300218, 0x82000500, 0x000000ff, 0x840001c0, + 0x4801a409, 0x60100800, 0x600011b8, 0x5c023800, + 0x0501f115, 0x4803c856, 0x05fdfde4, 0x4a01a006, + 0x02000001, 0x42001000, 0xe8000000, 0x59c40801, + 0x82040d00, 0x00018000, 0x90040580, 0x60000100, + 0x0500000e, 0x82040580, 0x00008000, 0x60000080, + 0x0500000a, 0x82040580, 0x00010000, 0x60000040, + 0x05000006, 0x82040580, 0x00018000, 0x60000010, + 0x05000002, 0x60080000, 0x80080540, 0x4801a007, + 0x60080800, 0x600011b8, 0x0501f0f7, 0x4803c856, + 0x0501f809, 0x5930041c, 0x900001c0, 0x4801a005, + 0x0501f956, 0x41780800, 0x600010b8, 0x0501f8ee, + 0x05f1f69b, 0x4803c856, 0x59300819, 0x90041c09, + 0x64874800, 0x58040408, 0x82000500, 0x0000f000, + 0x82000580, 0x00003000, 0x05000002, 0x65074800, + 0x81a5a000, 0x0501f955, 0x05000004, 0x4c0c0000, + 0x0501f958, 0x5c001800, 0x580c0001, 0x82000d00, + 0x00ffffff, 0x82040d40, 0xc2000000, 0x4805a000, + 0x580c0800, 0x82041500, 0x00ffffff, 0x82000500, + 0xff000000, 0x80080540, 0x4801a001, 0x580c0002, + 0x82000580, 0x00c00000, 0x82000500, 0x00fd0300, + 0x4801a002, 0x580c0003, 0x4801a003, 0x580c0404, + 0x4801a404, 0x580c0204, 0x4801a204, 0x1c01f000, + 0x05fdfd92, 0x5930001e, 0x800001c0, 0x05000006, + 0x4a01a006, 0x01000000, 0x640da407, 0x60080800, + 0x0501f021, 0x4a01a006, 0x02000000, 0x41780800, + 0x916c0584, 0x05020003, 0x84040d42, 0x0501f00c, + 0x05e5fde0, 0x05020003, 0x84040d4a, 0x0501f002, + 0x84040d48, 0x59a8024c, 0x8c000506, 0x05020003, + 0x8c00050a, 0x05000002, 0x84040d46, 0x4805a207, + 0x59c40085, 0x48031004, 0x4c580000, 0x4c500000, + 0x4c540000, 0x6018b000, 0x9188a400, 0x90d0ac08, + 0x0521fa56, 0x5c00a800, 0x5c00a000, 0x5c00b000, + 0x60200800, 0x600011b8, 0x0501f097, 0x05fdfd59, + 0x4a01a006, 0x56000000, 0x59340006, 0x4801a007, + 0x59340007, 0x4801a008, 0x600c0800, 0x600011b8, + 0x0501f08d, 0x4803c856, 0x05fdfd5c, 0x5930081e, + 0x800409c0, 0x0500000b, 0x82040580, 0x0000ffff, + 0x05000003, 0x90040487, 0x05021006, 0x4a01a006, + 0x01000000, 0x640da407, 0x60080800, 0x0501f011, + 0x4a01a006, 0x0200001c, 0x6405a007, 0x42001000, + 0x00111ce5, 0x50080000, 0x9c0001c0, 0x4801a009, + 0x5932481d, 0x59240005, 0x4801a00a, 0x59240001, + 0x59240802, 0x4801a00b, 0x4805a00c, 0x601c0800, + 0x600011b8, 0x0501f06c, 0x4d2c0000, 0x05fdfd2d, + 0x59325809, 0x812e59c0, 0x05020003, 0x4979a001, + 0x0501f005, 0x592c000c, 0x82000500, 0x00ffffff, + 0x4801a001, 0x4a01a006, 0x51000000, 0x5c025800, + 0x05fdf37c, 0x4803c856, 0x59325809, 0x5932680a, + 0x59300407, 0x4803c857, 0x90000d8a, 0x05000002, + 0x05b9f801, 0x42005000, 0x02000000, 0x42006000, + 0x20290000, 0x41786800, 0x41787800, 0x0501f805, + 0x91180d78, 0x60801193, 0x0501f888, 0x1c01f000, + 0x6081a000, 0x59300416, 0x8c000510, 0x05020008, + 0x6001a000, 0x0501f006, 0x60c1a000, 0x59300416, + 0x8c000510, 0x05020002, 0x6045a000, 0x59340a12, + 0x82040d00, 0x0000ff00, 0x5932481d, 0x59240408, + 0x900001c0, 0x80040540, 0x80d00540, 0x44034800, + 0x81a5a000, 0x0501f8a9, 0x050208ae, 0x59340002, + 0x82000500, 0x00ffffff, 0x59300c03, 0x90040db1, + 0x05020002, 0x41780000, 0x80280540, 0x4801a000, + 0x59240005, 0x4801a001, 0x4831a002, 0x90340540, + 0x4801a003, 0x59300402, 0x4801a404, 0x59300a02, + 0x4805a204, 0x8c30052e, 0x05000009, 0x4805a404, + 0x59301416, 0x480bc857, 0x8c08051c, 0x05000003, + 0x59300216, 0x4803c857, 0x4801a204, 0x483da005, + 0x1c01f000, 0x82100580, 0xc2000000, 0x05020004, + 0x42000000, 0x00112358, 0x0521f8fd, 0x643e6407, 0x59300819, 0x5930001a, 0x80102540, 0x48126019, 0x4806601a, 0x5930081b, 0x82040d00, 0x00fffff0, 0x82040d80, 0x00c00000, 0x4806601b, 0x481a601e, 0x1c01f000, 0x4807c857, 0x4c040000, 0x0501f857, 0x5c000800, 0x40040000, 0x80081540, 0x800000c4, - 0x82000540, 0x00002000, 0x42000800, 0x0010e06a, - 0x59a824cc, 0x8c100502, 0x05000008, 0x90040c02, + 0x82000540, 0x00002000, 0x42000800, 0x00112004, + 0x59a824d1, 0x8c100502, 0x05000008, 0x90040c02, 0x82000540, 0x00004000, 0x82081500, 0xffffc3ff, 0x82081540, 0x00002400, 0x4803910a, 0x59b400f6, - 0x90000518, 0x05fe07fe, 0x42001800, 0x0010e064, - 0x8c100502, 0x05000003, 0x42001800, 0x0010e066, + 0x90000518, 0x05fe07fe, 0x42001800, 0x00111ffe, + 0x8c100502, 0x05000003, 0x42001800, 0x00112000, 0x580c0004, 0x4803c857, 0x580c0006, 0x4803c857, 0x580c1800, 0x480fc857, 0x8d0c052a, 0x0500000c, 0x820c1d00, 0xf8000000, 0x05000009, 0x4c040000, - 0x4c080000, 0x40083800, 0x42000000, 0x0010e064, - 0x05b9fd4b, 0x5c001000, 0x5c000800, 0x4a0368f0, - 0x0010e063, 0x480768f1, 0x480b68f3, 0x59b400f6, + 0x4c080000, 0x40083800, 0x42000000, 0x00111ffe, + 0x05b9f88a, 0x5c001000, 0x5c000800, 0x4a0368f0, + 0x00111ffd, 0x480768f1, 0x480b68f3, 0x59b400f6, 0x90000538, 0x05fe07fe, 0x4203e000, 0xb0800000, - 0x600bf800, 0x05f1f5fe, 0x4807c857, 0x0501f837, + 0x600bf800, 0x05f1f572, 0x4807c857, 0x0501f837, 0x05000006, 0x82040d00, 0xffffff07, 0xb0040d48, 0x82081540, 0x00001000, 0x59300004, 0x8c000512, 0x05000002, 0x8408154c, 0x480a2800, 0x4c040000, @@ -9368,30 +9684,30 @@ static const uint32_t isp_2500_risc_code[] = { 0x90000538, 0x05fe07fe, 0x4203e000, 0xb0800000, 0x600bf800, 0x1c01f000, 0x61a07007, 0x4203e000, 0xb0800000, 0x600ff800, 0x40000000, 0x40000000, - 0x40000000, 0x0501b004, 0x80387040, 0x05b80bff, + 0x40000000, 0x0501b004, 0x80387040, 0x05b40f4a, 0x05fdf7f9, 0x1c01f000, 0x82000500, 0xffff0000, 0x82000580, 0x01050000, 0x0502000b, 0x599c0818, 0x8c040510, 0x05000008, 0x59a80806, 0x8c04050a, 0x05000005, 0x613c1100, 0x41781800, 0x41782000, - 0x05d9fdf0, 0x1c01f000, 0x05ddf92a, 0x05000004, - 0x59a804cc, 0x4803c857, 0x8c000502, 0x1c01f000, + 0x05d9fa9d, 0x1c01f000, 0x05d9fde0, 0x05000004, + 0x59a804d1, 0x4803c857, 0x8c000502, 0x1c01f000, 0x48d3c857, 0x5924100b, 0x82080500, 0x00001fff, 0x800000c2, 0x82080d00, 0x0000e000, 0x80040540, 0x82000540, 0x50000000, 0x4801a000, 0x82080500, 0xff000000, 0x4801a001, 0x90d1a402, 0x48d3c857, 0x1c01f000, 0x1c01f000, 0x4d340000, 0x59300407, 0x90006c92, 0x05021015, 0x5932680a, 0x0c01f001, - 0x0010925b, 0x00109227, 0x0010921f, 0x00109232, - 0x0010923e, 0x00109240, 0x0010924a, 0x0010925b, - 0x0010925b, 0x0010925b, 0x0010925b, 0x0010925b, - 0x0010925b, 0x0010925b, 0x0010925b, 0x00109256, - 0x0010925b, 0x0010924e, 0x05b9fbbc, 0x8d3c0500, + 0x0010974b, 0x00109717, 0x0010970f, 0x00109722, + 0x0010972e, 0x00109730, 0x0010973a, 0x0010974b, + 0x0010974b, 0x0010974b, 0x0010974b, 0x0010974b, + 0x0010974b, 0x0010974b, 0x0010974b, 0x00109746, + 0x0010974b, 0x0010973e, 0x05b5ff07, 0x8d3c0500, 0x0500003d, 0x59300229, 0x90000583, 0x05020031, - 0x05f9fa22, 0x0502002f, 0x0501f037, 0x8d3c051a, + 0x05f9f9f0, 0x0502002f, 0x0501f037, 0x8d3c051a, 0x0502002c, 0x8d3c0500, 0x0502002a, 0x8d3c0518, - 0x05020032, 0x8d3c0506, 0x0500002f, 0x050dfd9a, + 0x05020032, 0x8d3c0506, 0x0500002f, 0x050dfe42, 0x05000024, 0x0501f02c, 0x8d3c0500, 0x05000003, - 0x05f9fa12, 0x0502001f, 0x8d3c0518, 0x05020027, + 0x05f9f9e0, 0x0502001f, 0x8d3c0518, 0x05020027, 0x8d3c0506, 0x05000024, 0x59340200, 0x8c00050e, 0x05020018, 0x0501f020, 0x8d3c051a, 0x05020015, 0x8d3c0500, 0x05020013, 0x8d3c0518, 0x05000003, @@ -9402,34 +9718,35 @@ static const uint32_t isp_2500_risc_code[] = { 0x80000580, 0x0501f009, 0x833c0500, 0x00001800, 0x05fc07fc, 0x8d3c0516, 0x05fe07fa, 0x8d3c0500, 0x05fe07f8, 0x90000541, 0x5c026800, 0x1c01f000, - 0x59a8009d, 0x800001c0, 0x05000049, 0x4d2c0000, + 0x59a800a0, 0x800001c0, 0x05000049, 0x4d2c0000, 0x4d300000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x40025800, 0x4000c000, 0x4000c800, 0x42026000, - 0x00111a40, 0x592c040a, 0x81440580, 0x05020031, + 0x001159e4, 0x592c040a, 0x81440580, 0x05020031, 0x83240580, 0xffffffff, 0x05000004, 0x592c0005, 0x81240580, 0x0502002b, 0x592c0208, 0xb0000595, 0x05000005, 0x8d3c0518, 0x05000026, 0x8d3c0516, 0x05020024, 0x40640000, 0x812c0580, 0x05020014, 0x59300203, 0x90000580, 0x0500000d, 0x59300009, - 0x800001c0, 0x0500000a, 0x05f9fa8d, 0x4df00000, - 0x05f9f98e, 0x05f5ff57, 0x05020002, 0x64026203, - 0x5c03e000, 0x05f80a77, 0x497a6009, 0x592cc800, + 0x800001c0, 0x0500000a, 0x05f9fa5b, 0x4df00000, + 0x05f9f95b, 0x05f5ff20, 0x05020002, 0x64026203, + 0x5c03e000, 0x05f80a45, 0x497a6009, 0x592cc800, 0x4064c000, 0x4064b800, 0x0501f003, 0x592cb800, 0x485cc000, 0x497a5800, 0x592c0208, 0x82000580, - 0x00000155, 0x05000003, 0x05b9fef8, 0x0501f003, - 0x49425a0a, 0x0001fb82, 0x405e5800, 0x0501f003, + 0x00000155, 0x05000003, 0x05b9fa3f, 0x0501f003, + 0x49425a0a, 0x0001fba8, 0x405e5800, 0x0501f003, 0x412cc000, 0x592e5800, 0x812e59c0, 0x05fe07ca, - 0x4867509d, 0x4863509e, 0x5c00c800, 0x5c00c000, + 0x486750a0, 0x486350a1, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c026000, 0x5c025800, 0x1c01f000, 0x4943c857, 0x4d440000, 0x4d340000, 0x4c580000, - 0x4d240000, 0x42024800, 0xffffffff, 0x61c0b00f, - 0x417a8800, 0x0001fb00, 0x05020002, 0x05fdffa9, - 0x81468800, 0x8058b040, 0x05fe07fb, 0x83440480, - 0x00000800, 0x05021006, 0x8d3c0502, 0x05000004, - 0x61c2880f, 0x6040b000, 0x05fdf7f3, 0x5c024800, + 0x4d240000, 0x42024800, 0xffffffff, 0x59a8b0ac, + 0x417a8800, 0x0001fb08, 0x05020002, 0x05fdffa9, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07f7, 0x59a800ad, + 0x81440480, 0x05021006, 0x8d3c0502, 0x05000004, + 0x61c2880f, 0x6040b000, 0x05fdf7ef, 0x5c024800, 0x5c00b000, 0x5c026800, 0x5c028800, 0x1c01f000, - 0x4d300000, 0x59a8109d, 0x800811c0, 0x05000022, - 0x42026000, 0x00111a40, 0x59300203, 0x90000580, + 0x4d300000, 0x59a810a0, 0x800811c0, 0x05000022, + 0x42026000, 0x001159e4, 0x59300203, 0x90000580, 0x0502001d, 0x58080806, 0x58080005, 0x4802601d, 0x4806600a, 0x480a6009, 0x64166407, 0x64066203, 0x4a026403, 0x00000092, 0x41780800, 0x58080208, @@ -9437,927 +9754,947 @@ static const uint32_t isp_2500_risc_code[] = { 0x42000800, 0x80000040, 0x497a6416, 0x5808040b, 0x82000500, 0x0000f000, 0x82000580, 0x00003000, 0x05020004, 0x4a026416, 0x00000100, 0x84040d52, - 0x0005feaf, 0x5c026000, 0x1c01f000, 0x4803c856, - 0x05fdfb72, 0x0501f87a, 0x90d00482, 0x4a000000, - 0x50001ffc, 0x4803c856, 0x05fdfb6c, 0x0501f874, - 0x05fdf553, 0x4803c856, 0x4c580000, 0x4c500000, - 0x4c540000, 0x4d2c0000, 0x05fdfb56, 0x59325809, + 0x0005fee6, 0x5c026000, 0x1c01f000, 0x4803c856, + 0x05fdfb56, 0x0501f87a, 0x90d00482, 0x4a000000, + 0x50001ffc, 0x4803c856, 0x05fdfb50, 0x0501f874, + 0x05fdf549, 0x4803c856, 0x4c580000, 0x4c500000, + 0x4c540000, 0x4d2c0000, 0x05fdfb3a, 0x59325809, 0x4a01a006, 0x7f000000, 0x0501f869, 0x4a01a407, 0x00000101, 0x5930021b, 0x4801a207, 0x59a80002, 0x4801a008, 0x59a80003, 0x4801a009, 0x4a01a20a, 0x00000228, 0x4cd00000, 0x90d1a40b, 0x4a01a400, 0x00000101, 0x6411a200, 0x812e59c0, 0x05020003, - 0x59a800ce, 0x0501f002, 0x592c000f, 0x4801a001, + 0x59a800d3, 0x0501f002, 0x592c000f, 0x4801a001, 0x90d1a402, 0x4a01a400, 0x00000102, 0x6411a200, - 0x4979a401, 0x812e59c0, 0x05020003, 0x59a802cc, + 0x4979a401, 0x812e59c0, 0x05020003, 0x59a802d1, 0x0501f002, 0x592c020b, 0x4801a201, 0x90d1a402, 0x4a01a400, 0x00000103, 0x4a01a200, 0x00000200, - 0x6000b001, 0x4200a000, 0x001105f2, 0x90d0ac01, + 0x6000b001, 0x4200a000, 0x00114596, 0x90d0ac01, 0x50500000, 0x4400a800, 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07fb, 0x5c01a000, 0x60280801, 0x600011b8, 0x5c025800, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x05fdf640, 0x4803c856, 0x4c580000, - 0x4c500000, 0x4c540000, 0x4d2c0000, 0x05fdfb23, + 0x5c00b000, 0x05fdf63c, 0x4803c856, 0x4c580000, + 0x4c500000, 0x4c540000, 0x4d2c0000, 0x05fdfb07, 0x90d00482, 0x4a000000, 0x50001ffc, 0x59325809, 0x4a01a006, 0x02000000, 0x05fdf7bc, 0x4803c856, - 0x4c580000, 0x4c500000, 0x4d2c0000, 0x05fdfb09, + 0x4c580000, 0x4c500000, 0x4d2c0000, 0x05fdfaed, 0x90d00482, 0x4a000000, 0x50001ffc, 0x59325809, 0x4a01a006, 0x7f000000, 0x0501f819, 0x4a01a407, 0x00000102, 0x5930021b, 0x4801a207, 0x59a80002, 0x4801a008, 0x59a80003, 0x4801a009, 0x6451a20a, 0x60140800, 0x600011b8, 0x5c025800, 0x5c00a000, - 0x5c00b000, 0x05fdf618, 0x4803c856, 0x4c580000, - 0x4c500000, 0x4d2c0000, 0x05fdfafc, 0x59325809, + 0x5c00b000, 0x05fdf614, 0x4803c856, 0x4c580000, + 0x4c500000, 0x4d2c0000, 0x05fdfae0, 0x59325809, 0x4a01a006, 0x02000000, 0x05fdf7e8, 0x58d00001, 0x82000500, 0xff000000, 0x800001c0, 0x05020004, 0x82000540, 0x00fffff0, 0x4801a001, 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d180000, 0x4803c856, 0x417a3000, - 0x05f9fed8, 0x59900805, 0x800409c0, 0x05000012, - 0x91947c09, 0x83180400, 0x00107661, 0x50000000, + 0x05f9fea2, 0x59900805, 0x800409c0, 0x05000012, + 0x91947c09, 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x583c0003, 0x811808ca, 0x82040c00, 0x00006139, 0x50040800, 0x80040580, 0x05000006, - 0x42000000, 0x0010e4b8, 0x051dfc4e, 0x90000541, + 0x42000000, 0x0011245c, 0x051dfed5, 0x90000541, 0x0501f004, 0x811a3000, 0x91180585, 0x05fe07e9, 0x5c023000, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d180000, 0x4803c856, 0x598c080b, 0x800409c0, - 0x05000002, 0x05f1fc0e, 0x417a3000, 0x05f9fead, + 0x05000002, 0x05f1fb7e, 0x417a3000, 0x05f9fe77, 0x59900805, 0x800409c0, 0x0500000f, 0x91947c09, - 0x83180400, 0x00107661, 0x50000000, 0x803c7c00, + 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x811808ca, 0x82040c00, 0x00006139, 0x50040800, 0x48047803, 0x4a007801, 0x000001f4, 0x64287800, 0x64107802, 0x811a3000, 0x91180585, 0x05fe07ec, 0x5c023000, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, 0x41781000, - 0x42026000, 0x00111b00, 0x59a8183b, 0x480a6402, + 0x42026000, 0x00115aa4, 0x59a8183d, 0x480a6402, 0x4a026202, 0x0000ffff, 0x80081000, 0x800c1840, 0x05000003, 0x91326430, 0x05fdf7f9, 0x1c01f000, - 0x5c036000, 0x4db00000, 0x49b3c857, 0x4933c857, - 0x813261c0, 0x0500002d, 0x59300203, 0x90000580, - 0x0500002a, 0x59300407, 0x4803c857, 0x90000d84, - 0x0500000c, 0x90000d81, 0x0500000a, 0x90000d83, - 0x05000004, 0x90000d86, 0x05020016, 0x0519ff00, - 0x5930001e, 0x800001c0, 0x05120a1c, 0x0501f011, - 0x5930000a, 0x82000580, 0x00110210, 0x0500000d, - 0x5930082a, 0x4807c857, 0x4d300000, 0x40066000, - 0x0511fab7, 0x5c026000, 0x05020006, 0x5804001e, - 0x4803c857, 0x81300580, 0x05020002, 0x4978081e, - 0x641e6407, 0x497a6009, 0x4a026004, 0x00004000, - 0x59a8005c, 0xb0000c91, 0x05001002, 0x80000102, - 0x48026006, 0x497a6205, 0x1c01f000, 0x91640490, - 0x05021007, 0x42000000, 0x0010e442, 0x051dfbd5, - 0x4967c857, 0x80026580, 0x1c01f000, 0x8166c9c0, - 0x05000018, 0x41626000, 0x41580000, 0x59300a03, - 0x90040d80, 0x05000007, 0x91326430, 0x81300c80, - 0x05fc17fb, 0x42026000, 0x00111b00, 0x05fdf7f8, + 0x83300480, 0x00115aa4, 0x0500100e, 0x05d9fccf, + 0x05b40d4d, 0x457a6000, 0x4a026202, 0x0000ffff, + 0x05011000, 0x91300403, 0x4803c840, 0x64b3c842, + 0x59a8023e, 0x80000000, 0x4803523e, 0x1c01f000, + 0x4933c857, 0x83300580, 0x001159b4, 0x0500000b, + 0x83300580, 0x001159e4, 0x05000008, 0x83300580, + 0x00115a14, 0x05000005, 0x83300580, 0x00115a74, + 0x05000002, 0x05b5fd34, 0x42000000, 0x001123ea, + 0x051df676, 0x5c036000, 0x4db00000, 0x49b3c857, + 0x4933c857, 0x813261c0, 0x0500002d, 0x59300203, + 0x90000580, 0x0500002a, 0x59300407, 0x4803c857, + 0x90000d84, 0x0500000c, 0x90000d81, 0x0500000a, + 0x90000d83, 0x05000004, 0x90000d86, 0x05020016, + 0x051df935, 0x5930001e, 0x800001c0, 0x05120aae, + 0x0501f011, 0x5930000a, 0x82000580, 0x001141b4, + 0x0500000d, 0x5930082a, 0x4807c857, 0x4d300000, + 0x40066000, 0x0511fb48, 0x5c026000, 0x05020006, + 0x5804001e, 0x4803c857, 0x81300580, 0x05020002, + 0x4978081e, 0x641e6407, 0x497a6009, 0x4a026004, + 0x00004000, 0x59a8005f, 0xb0000c91, 0x05001002, + 0x80000102, 0x48026006, 0x497a6205, 0x1c01f000, + 0x91640490, 0x05021007, 0x42000000, 0x001123e4, + 0x051dfe3b, 0x4967c857, 0x80026580, 0x1c01f000, + 0x8166c9c0, 0x05000016, 0x41626000, 0x41580000, + 0x59300a03, 0x90040d80, 0x05000006, 0x91326430, + 0x81300c80, 0x05fc17fb, 0x40be6000, 0x05fdf7f9, 0x4933c857, 0x8166c840, 0x91300c30, 0x80040480, 0x05021005, 0x4006c000, 0x64226203, 0x813261c0, - 0x1c01f000, 0x4202c000, 0x00111b00, 0x05fdf7fb, - 0x42000000, 0x0010e442, 0x051dfbb6, 0x4933c856, - 0x417a6000, 0x05fdf7f6, 0x4933c857, 0x91380593, - 0x05020008, 0x59300004, 0x8c00053e, 0x05000004, - 0x05f9f8e3, 0x05f9f838, 0x05f9f8d2, 0x1c01f000, - 0x4933c857, 0x598800bc, 0x80000000, 0x480310bc, - 0x1c01f000, 0x4933c857, 0x59300203, 0x90003491, - 0x05ba199e, 0x4d2c0000, 0x0c01f803, 0x5c025800, - 0x1c01f000, 0x00109452, 0x00109966, 0x00109af1, - 0x00109452, 0x00109b40, 0x001095ab, 0x00109452, - 0x00109452, 0x001098f9, 0x00109452, 0x00109452, - 0x00109452, 0x00109452, 0x00109452, 0x0010ae4b, - 0x00109452, 0x00109452, 0x05b9f988, 0x4933c857, - 0x59300203, 0x90003491, 0x05ba1984, 0x0c01f001, - 0x00109469, 0x0010a653, 0x00109469, 0x00109469, - 0x00109469, 0x00109469, 0x00109469, 0x00109469, - 0x0010a5f3, 0x0010a672, 0x0010a6f3, 0x0010a672, - 0x0010a6f3, 0x00109469, 0x0010ae71, 0x00109469, - 0x00109469, 0x05b9f971, 0x05b9f970, 0x4933c857, - 0x4d300000, 0x4d1c0000, 0x59300203, 0x9000058f, - 0x05ba096a, 0x91380593, 0x05020025, 0x59300c03, - 0xb0040586, 0x05000015, 0xb0040584, 0x0502000a, - 0x4d300000, 0x5932602a, 0x050dfce8, 0x5c026000, - 0x0500001c, 0x591c0416, 0x8400054a, 0x48023c16, - 0x0501f010, 0x59300019, 0x82000500, 0xff000000, - 0x82000580, 0xc2000000, 0x05020012, 0x5930001e, - 0x05fdfd56, 0x0501f00f, 0x59300416, 0x84000504, - 0x48026416, 0x5930141d, 0x050dfccb, 0x05000009, - 0x411e6000, 0x5930001c, 0x80000540, 0x05000005, - 0x497a601c, 0x0801f800, 0x0501f002, 0x05f5ffd2, - 0x5c023800, 0x5c026000, 0x0005f7dc, 0x4933c857, - 0x4d2c0000, 0x59325809, 0x59300203, 0x90003491, - 0x05ba193a, 0x0c01f803, 0x5c025800, 0x1c01f000, - 0x001094b5, 0x001094b5, 0x001094b5, 0x001094ca, - 0x00109518, 0x001094b5, 0x001094b5, 0x001094b5, - 0x001094b6, 0x001094b5, 0x001094b5, 0x001094b5, - 0x001094b5, 0x001094b5, 0x001094b5, 0x001094b5, - 0x00109502, 0x05b9f925, 0x4933c857, 0xb1380580, - 0x05ba0922, 0x4a026008, 0x00082000, 0x640e6203, - 0x493a6403, 0x64065c0c, 0x592c0011, 0x48026013, - 0x497a6015, 0x592c020c, 0x800000c2, 0x800010c4, - 0x80081400, 0x480a6006, 0x0001f98d, 0x42000800, - 0x80000060, 0x0005f69d, 0x4933c857, 0xb1380490, - 0x05ba190e, 0xb1380489, 0x05b8190c, 0x0c01f001, - 0x001094d8, 0x001094e5, 0x001094d7, 0x001094d7, - 0x001094d7, 0x001094d7, 0x001094eb, 0x05b9f903, - 0x050dfbc6, 0x05000003, 0x64426203, 0x0501f002, - 0x64126203, 0x640a5c0c, 0x592c020b, 0x48025c0d, - 0x592c020d, 0x48025a0b, 0x592c0010, 0x48025811, - 0x1c01f000, 0x05f5ff67, 0x0509ffe3, 0x05000003, - 0x641a5a0a, 0x0001fb82, 0x0005f7dc, 0x05f5ff61, - 0x4d3c0000, 0x417a7800, 0x05c5fe3e, 0x5c027800, - 0x60503000, 0x41782800, 0x60082000, 0x4d400000, - 0x4d440000, 0x59368c03, 0x60a68000, 0x0511f91c, - 0x5c028800, 0x5c028000, 0x42000000, 0x0010e454, - 0x051dfae0, 0x0509ffcc, 0x000407dc, 0x64a65a0a, - 0x0001fb82, 0x0005f7dc, 0x4933c857, 0xb13805a1, - 0x05000006, 0xb13805a0, 0x05020007, 0x59cc0002, - 0x8c000526, 0x05000005, 0xb1380589, 0x05000004, - 0x05b9f8ce, 0x05fdff27, 0x1c01f000, 0x59a8005e, - 0x48026205, 0x64126203, 0x5930001c, 0x80000540, - 0x05000003, 0x497a601c, 0x0801f800, 0x1c01f000, - 0x4933c857, 0xb1380588, 0x05000003, 0xb1380593, - 0x05ba08be, 0x592c020a, 0x90000587, 0x05000008, - 0x59300013, 0x80000540, 0x05000005, 0x592c0810, - 0x80040480, 0x48025810, 0x64565a0a, 0x592c020a, - 0x80000540, 0x05020002, 0x64025a0a, 0x0001fb82, - 0x0005f7dc, 0x4933c857, 0x4d2c0000, 0x4c500000, - 0x4c540000, 0x4c580000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x4c100000, 0x05b9fc4c, 0x05b808a3, - 0x497a5a0a, 0x59a800d0, 0x82000500, 0x0000f000, - 0x48025c0b, 0x59a808b6, 0x90040c18, 0x48065a0b, - 0x412cb800, 0x4d2c0000, 0x41cca000, 0x6004c000, - 0x60b0c800, 0x900404ad, 0x05021004, 0x912cac0d, - 0x0509fa72, 0x0501f023, 0x40043000, 0x60b00800, - 0x912cac0d, 0x0509fa6d, 0x901834ac, 0x4c180000, - 0x05b9fc32, 0x5c003000, 0x05000012, 0x8060c000, - 0x4a025808, 0x00000110, 0x492cb801, 0x90180cbd, - 0x05021005, 0x40180800, 0x912cac09, 0x0509fa5f, - 0x0501f010, 0x9064cc3c, 0x901834bc, 0x60f00800, - 0x412cb800, 0x912cac09, 0x0509fa58, 0x05fdf7ec, - 0x5c025800, 0x592c020a, 0x8400055e, 0x48025a0a, - 0x592c040b, 0x80640540, 0x48025c0b, 0x0501f002, - 0x5c025800, 0x5c002000, 0x813669c0, 0x05000003, - 0x59343403, 0x0501f002, 0x61fc31ff, 0x4932580c, - 0x481a5c0a, 0xb0100594, 0x0502001a, 0x4a02580c, - 0xffffffff, 0x491e5817, 0x41781000, 0x831c0580, - 0xffffffff, 0x0500000e, 0x591c0009, 0x80000d40, - 0x0500000b, 0x58040208, 0x82000500, 0x000000ff, - 0x90000592, 0x05000005, 0xb00005a0, 0x05000003, - 0x90000588, 0x05020002, 0x58041009, 0x480a5809, - 0x592c040b, 0x81200540, 0x48025c0b, 0x0501f002, - 0x49225c09, 0x846001c0, 0x80100540, 0x48025808, - 0x051dfb9c, 0x05020014, 0x592c0001, 0x497a5801, - 0x4c000000, 0x42000000, 0x0010de60, 0x50000000, - 0x48025802, 0x0001fb82, 0x5c025800, 0x812e59c0, - 0x05fe07f4, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, - 0x1c01f000, 0x0519ff30, 0x05fdf7f7, 0x4933c857, - 0x91380d95, 0x05020008, 0x050dfaf0, 0x05000005, - 0x5930082a, 0x58040416, 0x8400051a, 0x48000c16, - 0x0005f7dc, 0x91380d96, 0x05ba0824, 0x0005f7dc, - 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, - 0x4c580000, 0x59325809, 0x91cca406, 0x59cc1806, - 0x820c0580, 0x01000000, 0x05020003, 0x6008b000, - 0x0501f00a, 0x6020b000, 0x912cac09, 0x051dfae0, - 0x8c0c0500, 0x05000007, 0x6020b000, 0x592e5801, - 0x812e59c0, 0x05b8080d, 0x912cac09, 0x051dfad8, - 0x0501f812, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c500000, - 0x4c540000, 0x4c580000, 0x91cca406, 0x5930a809, - 0x9054ac09, 0x601cb000, 0x051dfac9, 0x5c00b000, - 0x5c00a800, 0x5c00a000, 0x4933c857, 0x0509fee6, - 0x000407dc, 0x4d2c0000, 0x050dfd67, 0x05020008, - 0x41780800, 0x4d400000, 0x60028000, 0x050dfb94, - 0x5c028000, 0x5c025800, 0x0005f7dc, 0x5931d82d, - 0x58ef400b, 0x58ee580d, 0x4a025a08, 0x00000103, - 0x58ec0009, 0x0801f800, 0x5c025800, 0x0005f7dc, - 0x4933c857, 0x59cc1806, 0x820c0580, 0x02000000, - 0x0502001f, 0x4a026802, 0x00fffffd, 0x5934000a, - 0x84000504, 0x4802680a, 0x60000000, 0x4c0c0000, - 0x0501f824, 0x5c001800, 0x000407dc, 0x59300c29, - 0x900405a1, 0x05020006, 0x05c9f80d, 0x61fc19ff, - 0x60102000, 0x60483000, 0x05d9fa3a, 0x59300809, - 0x800409c0, 0x000407dc, 0x4a000a08, 0x00000103, - 0x480c0809, 0x5931d82d, 0x58ef400b, 0x58ee580d, - 0x58ec0009, 0x0801f800, 0x0005f7dc, 0x42000000, - 0x0010e45d, 0x051df9bf, 0x60180000, 0x4c0c0000, - 0x0501f808, 0x5c001800, 0x05fc07ed, 0x4c0c0000, - 0x0501f823, 0x5c001800, 0x05fe07e9, 0x1c01f000, - 0x4933c857, 0x4d400000, 0x4d240000, 0x4d200000, - 0x5932481d, 0x40028000, 0x59300429, 0xb0000d91, - 0x05000003, 0x90000da1, 0x05020010, 0x05c5ffe4, - 0x60001802, 0x051dfae0, 0x05020004, 0x59300429, - 0x900005a1, 0x05c40d3a, 0x59300429, 0xb0000591, - 0x05020002, 0x41781800, 0x60040000, 0x05e5f811, - 0x80000580, 0x0501f002, 0x90000541, 0x5c024000, - 0x5c024800, 0x5c028000, 0x1c01f000, 0x4933c857, - 0x4d2c0000, 0x59325809, 0x812e59c0, 0x0502000b, - 0x497a6006, 0x497a6205, 0x050dfa50, 0x05000002, - 0x497a6417, 0x4d380000, 0x608a7000, 0x0501fb0f, - 0x5c027000, 0x80000580, 0x5c025800, 0x1c01f000, - 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, - 0x4c580000, 0x59325809, 0x592e5801, 0x912cac09, - 0x91cca406, 0x59a808d0, 0x82040d00, 0x000003ff, - 0x9004148f, 0x05001011, 0x603cb000, 0x051dfa40, - 0x592e5801, 0x912cac09, 0x90080c8f, 0x05001008, - 0x603cb000, 0x051dfa3a, 0x592e5801, 0x912cac09, - 0x9004148f, 0x05001005, 0x603c1000, 0x4008b000, - 0x051dfa33, 0x0501f003, 0x4004b000, 0x051dfa30, - 0x5931d82d, 0x58ef400b, 0x58ee580d, 0x4a025a08, - 0x00000103, 0x592e5801, 0x58ec0009, 0x0801f800, - 0x0005ffdc, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, - 0x4c500000, 0x4c540000, 0x4c580000, 0x59cc0006, - 0x82000d80, 0x01000000, 0x05000021, 0x59cc0007, - 0x9000b1c0, 0x8258b500, 0x000000ff, 0x8058b104, - 0x9058b402, 0x90580c87, 0x05001002, 0x6018b000, - 0x91cca406, 0x59301009, 0x800811c0, 0x05b40f3f, - 0x9008ac09, 0x051dfa0a, 0x82000d00, 0xff000000, - 0x800409c0, 0x05000014, 0x8200b500, 0x000000ff, - 0x05000011, 0x8058b104, 0x90580c8e, 0x05001002, - 0x6034b000, 0x58081001, 0x800811c0, 0x05b40f2f, - 0x9008ac09, 0x051df9fa, 0x0501f007, 0x59301009, - 0x800811c0, 0x05b40f29, 0x48001009, 0x59cc0007, - 0x4800100a, 0x05fdff2d, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4933c857, + 0x1c01f000, 0x40bec000, 0x05fdf7fc, 0x42000000, + 0x001123e4, 0x051dfe1e, 0x4933c856, 0x417a6000, + 0x05fdf7f7, 0x59a80006, 0x8c000510, 0x05fc07d9, + 0x59a86a3e, 0x803469c0, 0x05000015, 0x59aa603f, + 0x59300a03, 0x90040d80, 0x0502000b, 0x64226203, + 0x80346840, 0x4837523e, 0x91300c30, 0x800404af, + 0x05001003, 0x83780d40, 0x00115aa4, 0x4807503f, + 0x1c01f000, 0x91326430, 0x81300caf, 0x05fc17f1, + 0x42026000, 0x00115aa4, 0x05fdf7ee, 0x42000000, + 0x001123e3, 0x051dfe01, 0x80026580, 0x1c01f000, + 0x4933c857, 0x91380593, 0x05020008, 0x59300004, + 0x8c00053e, 0x05000004, 0x05f9f86f, 0x05f5ffc4, + 0x05f9f85e, 0x1c01f000, 0x4933c857, 0x598800bf, + 0x80000000, 0x480310bf, 0x1c01f000, 0x4933c857, + 0x59300203, 0x90003491, 0x05b61ca7, 0x4d2c0000, + 0x0c01f803, 0x5c025800, 0x1c01f000, 0x00109984, + 0x00109ea0, 0x0010a02b, 0x00109984, 0x0010a07a, + 0x00109ae1, 0x00109984, 0x00109984, 0x00109e33, + 0x00109984, 0x00109984, 0x00109984, 0x00109984, + 0x00109984, 0x0010b3e4, 0x00109984, 0x00109984, + 0x05b5fc91, 0x4933c857, 0x59300203, 0x90003491, + 0x05b61c8d, 0x0c01f001, 0x0010999b, 0x0010abc5, + 0x0010999b, 0x0010999b, 0x0010999b, 0x0010999b, + 0x0010999b, 0x0010999b, 0x0010ab65, 0x0010abe4, + 0x0010ac65, 0x0010abe4, 0x0010ac65, 0x0010999b, + 0x0010b40a, 0x0010999b, 0x0010999b, 0x05b5fc7a, + 0x05b5fc79, 0x4933c857, 0x4d300000, 0x4d1c0000, + 0x59300203, 0x9000058f, 0x05b60c73, 0x91380593, + 0x05020025, 0x59300c03, 0xb0040586, 0x05000015, + 0xb0040584, 0x0502000a, 0x4d300000, 0x5932602a, + 0x050dfd52, 0x5c026000, 0x0500001c, 0x591c0416, + 0x8400054a, 0x48023c16, 0x0501f010, 0x59300019, + 0x82000500, 0xff000000, 0x82000580, 0xc2000000, + 0x05020012, 0x5930001e, 0x05fdfd14, 0x0501f00f, + 0x59300416, 0x84000504, 0x48026416, 0x5930141d, + 0x050dfd35, 0x05000009, 0x411e6000, 0x5930001c, + 0x80000540, 0x05000005, 0x497a601c, 0x0801f800, + 0x0501f002, 0x05f5ff5e, 0x5c023800, 0x5c026000, + 0x0009f010, 0x4933c857, 0x4d2c0000, 0x59325809, + 0x59300203, 0x90003491, 0x05b61c43, 0x0c01f803, + 0x5c025800, 0x1c01f000, 0x001099e7, 0x001099e7, + 0x001099e7, 0x001099fc, 0x00109a4a, 0x001099e7, + 0x001099e7, 0x001099e7, 0x001099e8, 0x001099e7, + 0x001099e7, 0x001099e7, 0x001099e7, 0x001099e7, + 0x001099e7, 0x001099e7, 0x00109a34, 0x05b5fc2e, + 0x4933c857, 0xb1380580, 0x05b60c2b, 0x4a026008, + 0x00082000, 0x640e6203, 0x493a6403, 0x64065c0c, + 0x592c0011, 0x48026013, 0x497a6015, 0x592c020c, + 0x800000c2, 0x800010c4, 0x80081400, 0x480a6006, + 0x0001f995, 0x42000800, 0x80000060, 0x0005f6d4, + 0x4933c857, 0xb1380490, 0x05b61c17, 0xb1380489, + 0x05b41c15, 0x0c01f001, 0x00109a0a, 0x00109a17, + 0x00109a09, 0x00109a09, 0x00109a09, 0x00109a09, + 0x00109a1d, 0x05b5fc0c, 0x050dfc2c, 0x05000003, + 0x64426203, 0x0501f002, 0x64126203, 0x640a5c0c, + 0x592c020b, 0x48025c0d, 0x592c020d, 0x48025a0b, + 0x592c0010, 0x48025811, 0x1c01f000, 0x05f5fef3, + 0x050df83a, 0x05000003, 0x641a5a0a, 0x0001fba8, + 0x0009f010, 0x05f5feed, 0x4d3c0000, 0x417a7800, + 0x05c5f9a3, 0x5c027800, 0x60503000, 0x41782800, + 0x60082000, 0x4d400000, 0x4d440000, 0x59368c03, + 0x60a68000, 0x0511f991, 0x5c028800, 0x5c028000, + 0x42000000, 0x001123f8, 0x051dfd29, 0x050df823, + 0x00080010, 0x64a65a0a, 0x0001fba8, 0x0009f010, + 0x4933c857, 0xb13805a1, 0x05000006, 0xb13805a0, + 0x05020007, 0x59cc0002, 0x8c000526, 0x05000005, + 0xb1380589, 0x05000004, 0x05b5fbd7, 0x05fdff27, + 0x1c01f000, 0x59a80061, 0x48026205, 0x64126203, + 0x5930001c, 0x80000540, 0x05000003, 0x497a601c, + 0x0801f800, 0x1c01f000, 0x4933c857, 0xb1380588, + 0x05000003, 0xb1380593, 0x05b60bc7, 0x592c020a, + 0x90000587, 0x05000008, 0x59300013, 0x80000540, + 0x05000005, 0x592c0810, 0x80040480, 0x48025810, + 0x64565a0a, 0x592c020a, 0x80000540, 0x05020002, + 0x64025a0a, 0x0001fba8, 0x0009f010, 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, 0x4c580000, - 0x6008b000, 0x59cc0806, 0x82040580, 0x01000000, - 0x05000004, 0x8204b500, 0x0000ffff, 0x8058b104, - 0x91cca406, 0x59300009, 0x9000ac09, 0x051df9dc, - 0x05fdff16, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4937c857, - 0x4d1c0000, 0x05edfedd, 0x05020020, 0x59cc0001, - 0x82000500, 0x00ffffff, 0x59341002, 0x82081500, - 0x00ffffff, 0x80080580, 0x05020018, 0x497a6205, - 0x60d40800, 0x050dfa35, 0x0502000f, 0x591c001e, - 0x800001c0, 0x0500000c, 0x497a381e, 0x591c0416, - 0x8c000502, 0x05b40ef1, 0x84000502, 0x48023c16, - 0x591c1407, 0x90080583, 0x05000005, 0x90080586, - 0x05000005, 0x05fdfcdf, 0x0501f004, 0x0501f805, - 0x0501f002, 0x0501f8c4, 0x5c023800, 0x1c01f000, - 0x4d2c0000, 0x591e5809, 0x4933c857, 0x491fc857, - 0x493bc857, 0x492fc857, 0x91380595, 0x050000b8, - 0x91380596, 0x050200b4, 0x4d300000, 0x411e6000, - 0x59cc0207, 0x4803c857, 0x82000d00, 0x0000ff00, - 0x82040580, 0x00001700, 0x05000004, 0x82040580, - 0x00000300, 0x05020064, 0x050df990, 0x05000006, - 0x591c0403, 0xb0000590, 0x05020003, 0x05fdfcbd, - 0x0501f09d, 0x591c0203, 0x4803c857, 0x9000058d, - 0x05000040, 0x812e59c0, 0x0500009a, 0x591c0202, - 0x4803c857, 0x82000580, 0x0000ffff, 0x05020081, - 0x050df97e, 0x05000004, 0x591c0203, 0x90000d8e, - 0x0502007c, 0x592c020e, 0x4803c857, 0x90000503, - 0x90000582, 0x05020007, 0x592c0813, 0x591c0013, - 0x4803c857, 0x4807c857, 0x80040580, 0x05020071, - 0x591c0416, 0x4803c857, 0x8c000500, 0x0502006d, - 0x42000000, 0x0010e435, 0x051df8a6, 0x41780800, - 0x591c1006, 0x60280000, 0x05f5f854, 0x592c040a, - 0x4803c857, 0x800001c0, 0x0500000a, 0x80080c80, - 0x05001003, 0x05b60e99, 0x80001040, 0x480a5c0a, - 0x800811c0, 0x05020003, 0x0509fa7b, 0x0501f06a, - 0x0509fe60, 0x591c0819, 0x591c001a, 0x4806580c, - 0x4802580d, 0x592e4414, 0x81224110, 0x59300008, - 0x8c000500, 0x05be08f8, 0x497a3809, 0x0001fab8, - 0x0502004c, 0x411e6000, 0x05fdfc7a, 0x0501f05a, - 0x05fdfcab, 0x05000015, 0x591c0006, 0x48026006, - 0x4926601d, 0x4936600a, 0x050df931, 0x640e6407, - 0x492e6009, 0x591c0819, 0x591c101a, 0x48066019, - 0x480a601a, 0x4d380000, 0x591e7403, 0x4d300000, - 0x411e6000, 0x05fdfc67, 0x5c026000, 0x0009f800, - 0x5c027000, 0x0501f044, 0x59a8005e, 0x48023a05, - 0x0501f041, 0x59cc0407, 0x9000058b, 0x05020026, - 0x59340a00, 0x84040d0e, 0x48066a00, 0x592c0a08, - 0x82040d00, 0x000000ff, 0x90040d94, 0x05000002, - 0x640e6229, 0x59300008, 0x8c000500, 0x05be08ca, - 0x4d400000, 0x497a5c0d, 0x600e8000, 0x592c0a0c, - 0x05e1fea7, 0x051df96c, 0x05020006, 0x0001fb82, - 0x59300a29, 0x90040d83, 0x05080e1e, 0x497a6009, - 0x5c028000, 0x4a026403, 0x00000085, 0x64266203, - 0x640a6407, 0x42000800, 0x80004040, 0x050dff08, - 0x0005feab, 0x4203e000, 0xb0800000, 0x6023f800, - 0x0501f019, 0x59cc0207, 0x82000580, 0x00002a00, - 0x05020004, 0x59a8005e, 0x48023a05, 0x0501f012, - 0x812e59c0, 0x05b40e39, 0x0005f9f3, 0x497a6027, - 0x05e9fc64, 0x4a025a08, 0x00000103, 0x591c0008, - 0x8c000500, 0x05be08a0, 0x591c0402, 0x48025c0a, - 0x640e5a0a, 0x497a5c0d, 0x0001fb82, 0x05fdfc21, - 0x05e1fa17, 0x5c026000, 0x0005ffdc, 0x0501f002, - 0x5c026000, 0x5c025800, 0x1c01f000, 0x0501f813, - 0x05fdf7fd, 0x4933c857, 0x91380595, 0x05020004, - 0x59a8005e, 0x48023a05, 0x0501f009, 0x91380596, - 0x05020009, 0x4d300000, 0x411e6000, 0x0519fb04, - 0x0005fe4e, 0x0005ffdc, 0x5c026000, 0x497a381e, - 0x0005ffdc, 0x1c01f000, 0x4c5c0000, 0x591c0416, - 0x84000540, 0x48023c16, 0x59ccb80b, 0x4933c857, - 0x491fc857, 0x492fc857, 0x4803c857, 0x485fc857, - 0x050df8ca, 0x05020007, 0x8c5c053c, 0x05000005, - 0x59a8005e, 0x48023a05, 0x497a381e, 0x0501f068, - 0x4d300000, 0x411e6000, 0x0509f82e, 0x5c026000, - 0x591c0407, 0x90000580, 0x05000061, 0x591c0403, - 0xb0000590, 0x0502000a, 0x4d300000, 0x411e6000, - 0x64066203, 0x42000800, 0x80000043, 0x0005feab, - 0x5c026000, 0x497a381e, 0x0501f055, 0x591c0203, - 0x9000058d, 0x0500001c, 0x812e59c0, 0x05b40de7, - 0x592c020e, 0x4803c857, 0x8c000500, 0x0502001b, - 0x8c000502, 0x05000014, 0x591c0416, 0x8c00051c, - 0x05020007, 0x591c0013, 0x4803c857, 0x800001c0, - 0x0500000d, 0x591c0014, 0x48023818, 0x4a023814, - 0x0fffffff, 0x592c020c, 0x8400051e, 0x48025a0c, - 0x42000000, 0x0010e437, 0x0519ffd2, 0x64063a16, - 0x0501f01a, 0x42000000, 0x0010e438, 0x0519ffcd, - 0x641e3a16, 0x0501f015, 0x59300017, 0x591c0817, - 0x80040580, 0x0502002e, 0x8c5c053a, 0x05fe07f6, - 0x59cc000a, 0x592c1813, 0x4803c857, 0x480fc857, - 0x800c0580, 0x05fc07f0, 0x59cc000a, 0x4803c857, - 0x48023818, 0x48023817, 0x42000000, 0x0010e436, - 0x0519ffb8, 0x64163a16, 0x050df878, 0x0500001a, - 0x591c0416, 0x8c00051a, 0x05000017, 0x4803c857, - 0x8c00051e, 0x05000016, 0x4130b800, 0x05fdfbd4, - 0x0500000f, 0x4926601d, 0x64066203, 0x647a6403, - 0x585c041b, 0x4802641b, 0x585c021b, 0x4802621b, - 0x591e680a, 0x4936600a, 0x050df855, 0x64066407, - 0x42000800, 0x80000040, 0x0005feab, 0x405e6000, - 0x0501f003, 0x5c00b800, 0x0509f70e, 0x5c00b800, - 0x0005f7dc, 0x4933c857, 0x4d1c0000, 0x05edfd6b, - 0x0502003f, 0x59cc0001, 0x59341002, 0x80080580, - 0x82000500, 0x00ffffff, 0x05020037, 0x5930141b, - 0x050df909, 0x05b40d89, 0x591c1407, 0x90080587, - 0x05000031, 0x90080582, 0x0500002f, 0x90080580, - 0x0500002d, 0x591c0202, 0x82000d80, 0x0000ffff, - 0x05000004, 0x59301a1b, 0x800c0580, 0x05020026, - 0x91380595, 0x05000022, 0x4d300000, 0x4d2c0000, - 0x411e6000, 0x59325809, 0x0509fc63, 0x05b40d73, - 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, - 0x05000002, 0x640e6229, 0x497a5c0d, 0x600e8000, - 0x592c0a0c, 0x05e1fdba, 0x051df87f, 0x05020006, - 0x0001fb82, 0x59300a29, 0x90040d83, 0x05080d31, - 0x497a6009, 0x5c025800, 0x4a026403, 0x00000085, - 0x64266203, 0x640a6407, 0x42000800, 0x80004040, - 0x0005feab, 0x5c026000, 0x0501f003, 0x59a8005e, - 0x48023a05, 0x497a381e, 0x0005ffdc, 0x5c023800, - 0x1c01f000, 0x4933c857, 0x4c580000, 0x4d2c0000, - 0x59325809, 0x59342200, 0x82102500, 0xffffdffd, - 0x48126a00, 0x91383595, 0x05000009, 0x0509fc36, - 0x05000047, 0x050dfab8, 0x05020003, 0x6008b000, - 0x050dfa9f, 0x0501fa2a, 0x0501f059, 0x91cc1408, - 0x6008b000, 0x91341c06, 0x0501ffa9, 0x0502000f, - 0x91cc140a, 0x6008b000, 0x91341c08, 0x0501ffa4, - 0x0502000a, 0x05c5face, 0x59342200, 0x59cc1007, - 0x800811c0, 0x05000003, 0x480a6801, 0x84102542, - 0x48126a00, 0x0501f048, 0x4d3c0000, 0x417a7800, - 0x05c5fa7c, 0x5c027800, 0x42000000, 0x0010e454, - 0x0519ff28, 0x59340200, 0x84000558, 0x48026a00, - 0x4d300000, 0x05fdfb4a, 0x05b40d20, 0x4926601d, - 0x4936600a, 0x497a6009, 0x64066407, 0x64066403, - 0x600c3000, 0x0519fcc2, 0x05c5fd55, 0x59240400, - 0x8c00050a, 0x0502000b, 0x41782800, 0x60043000, - 0x4d400000, 0x60a68000, 0x0515fed5, 0x5c028000, - 0x64126407, 0x641e6203, 0x6406642c, 0x0501f005, - 0x64066203, 0x602c0800, 0x05ddfc1b, 0x05f1ff9e, - 0x5c026000, 0x0509fbf4, 0x0500001d, 0x050dfa76, - 0x0502001d, 0x0501f9ea, 0x0501f019, 0x42000000, - 0x0010e457, 0x0519feff, 0x4d3c0000, 0x417a7800, - 0x05c5fa4c, 0x42000000, 0x0010e454, 0x0519fef9, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c100000, + 0x05b5ff51, 0x05b40bac, 0x497a5a0a, 0x59a800d5, + 0x82000500, 0x0000f000, 0x48025c0b, 0x59a808bb, + 0x90040c18, 0x48065a0b, 0x412cb800, 0x4d2c0000, + 0x41cca000, 0x6004c000, 0x60b0c800, 0x900404ad, + 0x05021004, 0x912cac0d, 0x0509fab2, 0x0501f023, + 0x40043000, 0x60b00800, 0x912cac0d, 0x0509faad, + 0x901834ac, 0x4c180000, 0x05b5ff37, 0x5c003000, + 0x05000012, 0x8060c000, 0x4a025808, 0x00000110, + 0x492cb801, 0x90180cbd, 0x05021005, 0x40180800, + 0x912cac09, 0x0509fa9f, 0x0501f010, 0x9064cc3c, + 0x901834bc, 0x60f00800, 0x412cb800, 0x912cac09, + 0x0509fa98, 0x05fdf7ec, 0x5c025800, 0x592c020a, + 0x8400055e, 0x48025a0a, 0x592c040b, 0x80640540, + 0x48025c0b, 0x0501f002, 0x5c025800, 0x5c002000, + 0x813669c0, 0x05000003, 0x59343403, 0x0501f002, + 0x61fc31ff, 0x4932580c, 0x481a5c0a, 0xb0100594, + 0x0502001a, 0x4a02580c, 0xffffffff, 0x491e5817, + 0x41781000, 0x831c0580, 0xffffffff, 0x0500000e, + 0x591c0009, 0x80000d40, 0x0500000b, 0x58040208, + 0x82000500, 0x000000ff, 0x90000592, 0x05000005, + 0xb00005a0, 0x05000003, 0x90000588, 0x05020002, + 0x58041009, 0x480a5809, 0x592c040b, 0x81200540, + 0x48025c0b, 0x0501f002, 0x49225c09, 0x846001c0, + 0x80100540, 0x48025808, 0x051dfde5, 0x05020015, + 0x592c0001, 0x497a5801, 0x4c000000, 0x42000000, + 0x00111dfa, 0x50000000, 0x48025802, 0x0001fba8, + 0x5c025800, 0x812e59c0, 0x05fe07f4, 0x80000580, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x051df95a, 0x05fc07f7, 0x05b5fef4, 0x81780000, + 0x05fdf7f4, 0x4933c857, 0x91380d95, 0x05020008, + 0x050dfb52, 0x05000005, 0x5930082a, 0x58040416, + 0x8400051a, 0x48000c16, 0x0009f010, 0x91380d96, + 0x05b60b29, 0x0009f010, 0x4933c857, 0x4d2c0000, + 0x4c500000, 0x4c540000, 0x4c580000, 0x59325809, + 0x91cca406, 0x59cc1806, 0x820c0580, 0x01000000, + 0x05020003, 0x6008b000, 0x0501f00a, 0x6020b000, + 0x912cac09, 0x051dfd25, 0x8c0c0500, 0x05000007, + 0x6020b000, 0x592e5801, 0x812e59c0, 0x05b40b12, + 0x912cac09, 0x051dfd1d, 0x0501f812, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x4c500000, 0x4c540000, 0x4c580000, + 0x91cca406, 0x5930a809, 0x9054ac09, 0x601cb000, + 0x051dfd0e, 0x5c00b000, 0x5c00a800, 0x5c00a000, + 0x4933c857, 0x0509ff39, 0x00080010, 0x4d2c0000, + 0x050dfdd7, 0x05020008, 0x41780800, 0x4d400000, + 0x60028000, 0x050dfbfd, 0x5c028000, 0x5c025800, + 0x0009f010, 0x5931d82d, 0x58ef400b, 0x58ee580d, + 0x4a025a08, 0x00000103, 0x58ec0009, 0x0801f800, + 0x5c025800, 0x0009f010, 0x4933c857, 0x59cc1806, + 0x820c0580, 0x02000000, 0x0502001f, 0x4a026802, + 0x00fffffd, 0x5934000a, 0x84000504, 0x4802680a, + 0x60000000, 0x4c0c0000, 0x0501f824, 0x5c001800, + 0x00080010, 0x59300c29, 0x900405a1, 0x05020006, + 0x05c5fb73, 0x61fc19ff, 0x60102000, 0x60483000, + 0x05d5fea1, 0x59300809, 0x800409c0, 0x00080010, + 0x4a000a08, 0x00000103, 0x480c0809, 0x5931d82d, + 0x58ef400b, 0x58ee580d, 0x58ec0009, 0x0801f800, + 0x0009f010, 0x42000000, 0x00112401, 0x051dfc04, + 0x60180000, 0x4c0c0000, 0x0501f808, 0x5c001800, + 0x05fc07ed, 0x4c0c0000, 0x0501f823, 0x5c001800, + 0x05fe07e9, 0x1c01f000, 0x4933c857, 0x4d400000, + 0x4d240000, 0x4d200000, 0x5932481d, 0x40028000, + 0x59300429, 0xb0000d91, 0x05000003, 0x90000da1, + 0x05020010, 0x05c5fb4a, 0x60001802, 0x051dfd25, + 0x05020004, 0x59300429, 0x900005a1, 0x05c4089b, + 0x59300429, 0xb0000591, 0x05020002, 0x41781800, + 0x60040000, 0x05e1fdbf, 0x80000580, 0x0501f002, + 0x90000541, 0x5c024000, 0x5c024800, 0x5c028000, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x59325809, + 0x812e59c0, 0x0502000b, 0x497a6006, 0x497a6205, + 0x050dfab2, 0x05000002, 0x497a6417, 0x4d380000, + 0x608a7000, 0x0501fb13, 0x5c027000, 0x80000580, + 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, + 0x4c500000, 0x4c540000, 0x4c580000, 0x59325809, + 0x592e5801, 0x912cac09, 0x91cca406, 0x59a808d5, + 0x82040d00, 0x000003ff, 0x9004148f, 0x05001011, + 0x603cb000, 0x051dfc85, 0x592e5801, 0x912cac09, + 0x90080c8f, 0x05001008, 0x603cb000, 0x051dfc7f, + 0x592e5801, 0x912cac09, 0x9004148f, 0x05001005, + 0x603c1000, 0x4008b000, 0x051dfc78, 0x0501f003, + 0x4004b000, 0x051dfc75, 0x5931d82d, 0x58ef400b, + 0x58ee580d, 0x4a025a08, 0x00000103, 0x592e5801, + 0x58ec0009, 0x0801f800, 0x0009f810, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, + 0x4c580000, 0x59cc0006, 0x82000d80, 0x01000000, + 0x05000021, 0x59cc0007, 0x9000b1c0, 0x8258b500, + 0x000000ff, 0x8058b104, 0x9058b402, 0x90580c87, + 0x05001002, 0x6018b000, 0x91cca406, 0x59301009, + 0x800811c0, 0x05b40a44, 0x9008ac09, 0x051dfc4f, + 0x82000d00, 0xff000000, 0x800409c0, 0x05000014, + 0x8200b500, 0x000000ff, 0x05000011, 0x8058b104, + 0x90580c8e, 0x05001002, 0x6034b000, 0x58081001, + 0x800811c0, 0x05b40a34, 0x9008ac09, 0x051dfc3f, + 0x0501f007, 0x59301009, 0x800811c0, 0x05b40a2e, + 0x48001009, 0x59cc0007, 0x4800100a, 0x05fdff2d, + 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c500000, + 0x4c540000, 0x4c580000, 0x6008b000, 0x59cc0806, + 0x82040580, 0x01000000, 0x05000004, 0x8204b500, + 0x0000ffff, 0x8058b104, 0x91cca406, 0x59300009, + 0x9000ac09, 0x051dfc21, 0x05fdff16, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x4937c857, 0x4d1c0000, 0x05edfdc1, + 0x05020020, 0x59cc0001, 0x82000500, 0x00ffffff, + 0x59341002, 0x82081500, 0x00ffffff, 0x80080580, + 0x05020018, 0x497a6205, 0x60d40800, 0x050dfa97, + 0x0502000f, 0x591c001e, 0x800001c0, 0x0500000c, + 0x497a381e, 0x591c0416, 0x8c000502, 0x05b409f6, + 0x84000502, 0x48023c16, 0x591c1407, 0x90080583, + 0x05000005, 0x90080586, 0x05000005, 0x05fdfcbe, + 0x0501f004, 0x0501f805, 0x0501f002, 0x0501f8c8, + 0x5c023800, 0x1c01f000, 0x4d2c0000, 0x591e5809, + 0x4933c857, 0x491fc857, 0x493bc857, 0x492fc857, + 0x91380595, 0x050000bc, 0x91380596, 0x050200b8, + 0x4d300000, 0x411e6000, 0x59cc0207, 0x4803c857, + 0x82000d00, 0x0000ff00, 0x82040580, 0x00001700, + 0x05000004, 0x82040580, 0x00000300, 0x05020068, + 0x050df9f2, 0x05000006, 0x591c0403, 0xb0000590, + 0x05020003, 0x05fdfc9c, 0x0501f0a1, 0x591c0203, + 0x4803c857, 0x9000058d, 0x05000044, 0x812e59c0, + 0x0500009e, 0x591c0202, 0x4803c857, 0x82000580, + 0x0000ffff, 0x05020085, 0x050df9e0, 0x05000004, + 0x591c0203, 0x90000d8e, 0x05020080, 0x592c020e, + 0x4803c857, 0x90000503, 0x90000582, 0x0502000b, + 0x592c0813, 0x591c0013, 0x4d300000, 0x411e6000, + 0x050dfffc, 0x5c026000, 0x4803c857, 0x4807c857, + 0x80040580, 0x05020071, 0x591c0416, 0x4803c857, + 0x8c000500, 0x0502006d, 0x42000000, 0x001123d6, + 0x051dfae7, 0x41780800, 0x591c1006, 0x60280000, + 0x05f1ffd3, 0x592c040a, 0x4803c857, 0x800001c0, + 0x0500000a, 0x80080c80, 0x05001003, 0x05b6099a, + 0x80001040, 0x480a5c0a, 0x800811c0, 0x05020003, + 0x0509fabb, 0x0501f06a, 0x0509febf, 0x591c0819, + 0x591c001a, 0x4806580c, 0x4802580d, 0x592e4414, + 0x81224110, 0x59300008, 0x8c000500, 0x05ba0c5c, + 0x497a3809, 0x0001fac0, 0x0502004c, 0x411e6000, + 0x05fdfc55, 0x0501f05a, 0x05fdfc86, 0x05000015, + 0x591c0006, 0x48026006, 0x4926601d, 0x4936600a, + 0x050df98f, 0x640e6407, 0x492e6009, 0x591c0819, + 0x591c101a, 0x48066019, 0x480a601a, 0x4d380000, + 0x591e7403, 0x4d300000, 0x411e6000, 0x05fdfc42, + 0x5c026000, 0x0009f839, 0x5c027000, 0x0501f044, + 0x59a80061, 0x48023a05, 0x0501f041, 0x59cc0407, + 0x9000058b, 0x05020026, 0x59340a00, 0x84040d0e, + 0x48066a00, 0x592c0a08, 0x82040d00, 0x000000ff, + 0x90040d94, 0x05000002, 0x640e6229, 0x59300008, + 0x8c000500, 0x05ba0c2e, 0x4d400000, 0x497a5c0d, + 0x600e8000, 0x592c0a0c, 0x05e1fc51, 0x051dfbad, + 0x05020006, 0x0001fba8, 0x59300a29, 0x90040d83, + 0x05080e7d, 0x497a6009, 0x5c028000, 0x4a026403, + 0x00000085, 0x64266203, 0x640a6407, 0x42000800, + 0x80004040, 0x050dff74, 0x0005fee2, 0x4203e000, + 0xb0800000, 0x6023f800, 0x0501f019, 0x59cc0207, + 0x82000580, 0x00002a00, 0x05020004, 0x59a80061, + 0x48023a05, 0x0501f012, 0x812e59c0, 0x05b4093a, + 0x0005fa1a, 0x497a6027, 0x05e9fab2, 0x4a025a08, + 0x00000103, 0x591c0008, 0x8c000500, 0x05ba0c04, + 0x591c0402, 0x48025c0a, 0x640e5a0a, 0x497a5c0d, + 0x0001fba8, 0x05fdfbfc, 0x05ddffa2, 0x5c026000, + 0x0009f810, 0x0501f002, 0x5c026000, 0x5c025800, + 0x1c01f000, 0x0501f813, 0x05fdf7fd, 0x4933c857, + 0x91380595, 0x05020004, 0x59a80061, 0x48023a05, + 0x0501f009, 0x91380596, 0x05020009, 0x4d300000, + 0x411e6000, 0x0519fd14, 0x0005fe84, 0x0009f810, + 0x5c026000, 0x497a381e, 0x0009f810, 0x1c01f000, + 0x4c5c0000, 0x591c0416, 0x84000540, 0x48023c16, + 0x59ccb80b, 0x4933c857, 0x491fc857, 0x492fc857, + 0x4803c857, 0x485fc857, 0x050df928, 0x05020007, + 0x8c5c053c, 0x05000005, 0x59a80061, 0x48023a05, + 0x497a381e, 0x0501f068, 0x4d300000, 0x411e6000, + 0x0509f866, 0x5c026000, 0x591c0407, 0x90000580, + 0x05000061, 0x591c0403, 0xb0000590, 0x0502000a, + 0x4d300000, 0x411e6000, 0x64066203, 0x42000800, + 0x80000043, 0x0005fee2, 0x5c026000, 0x497a381e, + 0x0501f055, 0x591c0203, 0x9000058d, 0x0500001c, + 0x812e59c0, 0x05b408e8, 0x592c020e, 0x4803c857, + 0x8c000500, 0x0502001b, 0x8c000502, 0x05000014, + 0x591c0416, 0x8c00051c, 0x05020007, 0x591c0013, + 0x4803c857, 0x800001c0, 0x0500000d, 0x591c0014, + 0x48023818, 0x4a023814, 0x0fffffff, 0x592c020c, + 0x8400051e, 0x48025a0c, 0x42000000, 0x001123d8, + 0x051dfa13, 0x64063a16, 0x0501f01a, 0x42000000, + 0x001123d9, 0x051dfa0e, 0x641e3a16, 0x0501f015, + 0x59300017, 0x591c0817, 0x80040580, 0x0502002e, + 0x8c5c053a, 0x05fe07f6, 0x59cc000a, 0x592c1813, + 0x4803c857, 0x480fc857, 0x800c0580, 0x05fc07f0, + 0x59cc000a, 0x4803c857, 0x48023818, 0x48023817, + 0x42000000, 0x001123d7, 0x051df9f9, 0x64163a16, + 0x050df8d6, 0x0500001a, 0x591c0416, 0x8c00051a, + 0x05000017, 0x4803c857, 0x8c00051e, 0x05000016, + 0x4130b800, 0x05fdfbaf, 0x0500000f, 0x4926601d, + 0x64066203, 0x647a6403, 0x585c041b, 0x4802641b, + 0x585c021b, 0x4802621b, 0x591e680a, 0x4936600a, + 0x050df8b3, 0x64066407, 0x42000800, 0x80000040, + 0x0005fee2, 0x405e6000, 0x0501f003, 0x5c00b800, + 0x0509f76d, 0x5c00b800, 0x0009f010, 0x4933c857, + 0x4d1c0000, 0x05edfc4b, 0x0502003f, 0x59cc0001, + 0x59341002, 0x80080580, 0x82000500, 0x00ffffff, + 0x05020037, 0x5930141b, 0x050df96b, 0x05b4088a, + 0x591c1407, 0x90080587, 0x05000031, 0x90080582, + 0x0500002f, 0x90080580, 0x0500002d, 0x591c0202, + 0x82000d80, 0x0000ffff, 0x05000004, 0x59301a1b, + 0x800c0580, 0x05020026, 0x91380595, 0x05000022, + 0x4d300000, 0x4d2c0000, 0x411e6000, 0x59325809, + 0x0509fcb2, 0x05b40874, 0x592c0208, 0x82000500, + 0x000000ff, 0x90000594, 0x05000002, 0x640e6229, + 0x497a5c0d, 0x600e8000, 0x592c0a0c, 0x05e1fb64, + 0x051dfac0, 0x05020006, 0x0001fba8, 0x59300a29, + 0x90040d83, 0x05080d90, 0x497a6009, 0x5c025800, + 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, + 0x42000800, 0x80004040, 0x0005fee2, 0x5c026000, + 0x0501f003, 0x59a80061, 0x48023a05, 0x497a381e, + 0x0009f810, 0x5c023800, 0x1c01f000, 0x4933c857, + 0x4c580000, 0x4d2c0000, 0x59325809, 0x59342200, + 0x82102500, 0xffffdffd, 0x48126a00, 0x91383595, + 0x05000009, 0x0509fc85, 0x05000047, 0x050dfb24, + 0x05020003, 0x6008b000, 0x050dfb0b, 0x0501fa2a, + 0x0501f059, 0x91cc1408, 0x6008b000, 0x91341c06, + 0x0501ffb4, 0x0502000f, 0x91cc140a, 0x6008b000, + 0x91341c08, 0x0501ffaf, 0x0502000a, 0x05c1fe2b, + 0x59342200, 0x59cc1007, 0x800811c0, 0x05000003, + 0x480a6801, 0x84102542, 0x48126a00, 0x0501f048, + 0x4d3c0000, 0x417a7800, 0x05c1fdd9, 0x5c027800, + 0x42000000, 0x001123f8, 0x051df969, 0x59340200, + 0x84000558, 0x48026a00, 0x4d300000, 0x05fdfb25, + 0x05b40821, 0x4926601d, 0x4936600a, 0x497a6009, + 0x64066407, 0x64066403, 0x600c3000, 0x0519fee5, + 0x05c5f8b7, 0x59240400, 0x8c00050a, 0x0502000b, + 0x41782800, 0x60043000, 0x4d400000, 0x60a68000, + 0x0519f8e2, 0x5c028000, 0x64126407, 0x641e6203, + 0x6406642c, 0x0501f005, 0x64066203, 0x602c0800, + 0x05ddf8f4, 0x05f1ff1d, 0x5c026000, 0x0509fc43, + 0x0500001d, 0x050dfae2, 0x0502001d, 0x0501f9ea, + 0x0501f019, 0x42000000, 0x001123fb, 0x051df940, + 0x4d3c0000, 0x417a7800, 0x05c1fda9, 0x42000000, + 0x001123f8, 0x051df93a, 0x59340200, 0x84000558, + 0x48026a00, 0x600c3000, 0x41782800, 0x60142000, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60a68000, + 0x050dfd92, 0x5c028800, 0x5c028000, 0x5c027800, + 0x05c1fdde, 0x0009f810, 0x0501f002, 0x05fdfce9, + 0x5c025800, 0x5c00b000, 0x1c01f000, 0x4933c857, + 0x41380000, 0xb13834a0, 0x05b21fdf, 0x0c01f001, + 0x00109e9c, 0x00109e99, 0x00109e9c, 0x00109e9c, + 0x00109e9c, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e9c, + 0x00109e98, 0x00109e9c, 0x00109e9c, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e9c, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e9c, 0x00109e9c, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e9c, + 0x00109e9c, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e9c, + 0x00109e9c, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x05b1ff7d, 0x64066203, 0x493a6403, 0x05f1f68f, + 0x4933c857, 0x64066203, 0x493a6403, 0x05f1f68b, + 0x59300403, 0xb00034a0, 0x05b21f73, 0x91383593, + 0x05000087, 0x913835a7, 0x05020042, 0x4933c857, + 0x05f5fa7f, 0x0519ff14, 0x0509fcaa, 0x0500000c, + 0x0509fcb7, 0x05000039, 0x59300403, 0x90000da2, + 0x05020033, 0x60140004, 0x05fdfcac, 0x05000030, + 0x05fdfcc9, 0x05000030, 0x0501f030, 0x600c0004, + 0x05fdfca6, 0x0500002a, 0x05c1fd50, 0x601c0800, + 0x05ddf844, 0x0501f940, 0x4d440000, 0x59368c03, + 0x83440580, 0x000007fe, 0x05020007, 0x59a8124c, + 0x84081540, 0x05e1fcd3, 0x05020002, 0x8408154a, + 0x480b524c, 0x60a68000, 0x05f5f834, 0x4d3c0000, + 0x417a7800, 0x05c1fcf6, 0x5c027800, 0x916c0583, + 0x0500000b, 0x5932680a, 0x59340008, 0x800001c0, + 0x05020007, 0x59368c03, 0x4933c857, 0x4937c857, + 0x4947c857, 0x05ddf916, 0x0501f008, 0x42000000, + 0x001123f8, 0x051df87a, 0x60543000, 0x41782800, + 0x600c2000, 0x050dfcd9, 0x5c028800, 0x0509ff3a, + 0x0009f010, 0x1c01f000, 0x0501f917, 0x05fdf7fc, + 0x91380594, 0x0500000c, 0x4933c857, 0xb13805a1, + 0x05000003, 0xb13805a0, 0x05fe07f7, 0x05f5fe88, + 0x05fe0276, 0x59300203, 0x9000058e, 0x050804f1, + 0x05b1ff21, 0x4933c857, 0x05f5fa31, 0x050dff59, + 0x05020005, 0x59300009, 0x800001c0, 0x05020026, + 0x05f1f62e, 0x0519fec0, 0x60082800, 0x59300403, + 0xb0000591, 0x050c07e9, 0x4d3c0000, 0x417a7800, + 0x05c1fcbf, 0x5c027800, 0x60583000, 0x41782800, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60242000, + 0x60a68000, 0x050dfcad, 0x5c028800, 0x5c028000, + 0x42000000, 0x001123f8, 0x051df845, 0x0509fc41, + 0x0502000b, 0x05c1fcf5, 0x0501f8e7, 0x59340c03, + 0x82040580, 0x000007fe, 0x05fe07c9, 0x59a80a4c, + 0x84040d40, 0x4807524c, 0x05fdf7c5, 0x0509fc44, + 0x05020003, 0x0501f8dc, 0x05fdf7c1, 0x59300403, + 0x90000db2, 0x05020003, 0x05c5fbbd, 0x05fdf7bc, + 0x90000da2, 0x050008d4, 0x05fdf7b9, 0x4933c857, + 0x4803c857, 0x0c01f001, 0x00109f8f, 0x00109f8f, + 0x00109f8f, 0x00109f8f, 0x00109f8f, 0x00109f8f, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f94, 0x00109ff5, 0x00109f8e, 0x00109ff5, + 0x00109ff5, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109ff5, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109fa2, 0x00109ff5, 0x00109f8e, 0x00109f9d, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f9d, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109fa0, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109ff5, 0x00109ff5, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109ff5, 0x00109faa, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109fb0, 0x00109f8e, 0x05b1fe87, 0x640a6203, + 0x0509fea6, 0x05000002, 0x643a6203, 0x0509f434, + 0x64166203, 0x59a80061, 0x48026205, 0x0509fe9f, + 0x05000002, 0x643a6203, 0x59a8005f, 0x48026006, + 0x1c01f000, 0x5930082a, 0x49780a05, 0x0501f056, + 0x0509fe7d, 0x0009f010, 0x05c5fb41, 0x05f5fa2e, + 0x05000003, 0x05f5f982, 0x0009f010, 0x05f5f980, + 0x0009f810, 0x05f5f219, 0x4933c857, 0x640a6203, + 0x0509fe8a, 0x05000002, 0x643a6203, 0x1c01f000, + 0x4933c857, 0x4d300000, 0x4d2c0000, 0x59325809, + 0x812e59c0, 0x0500002e, 0x0509fa9c, 0x05b00e5e, + 0x59a80cd2, 0x48065811, 0x59a808d4, 0x48065810, + 0x64025a0a, 0x592c1001, 0x800811c0, 0x05b00e56, + 0x4930100b, 0x492c100a, 0x64001001, 0x4a001009, + 0x00109fd0, 0x4a001003, 0x00114616, 0x4a001005, + 0x00000200, 0x592c0015, 0x48001007, 0x592c0016, + 0x48001008, 0x5c025800, 0x5c026000, 0x0001f029, + 0x4d300000, 0x4d2c0000, 0x5832600b, 0x813261c0, + 0x05b00e41, 0x5832580a, 0x812e59c0, 0x05b00e3e, + 0x49786001, 0x58300002, 0x82000580, 0x00000100, + 0x05020014, 0x59a80cd2, 0x48065811, 0x59a808d4, + 0x48065810, 0x64025a0a, 0x0001fba8, 0x59a81cd1, + 0x840c1d46, 0x480f54d1, 0x0509fe50, 0x05000005, + 0x05fdf8fd, 0x59a8005f, 0x48026006, 0x0501f002, + 0x0009f810, 0x5c025800, 0x5c026000, 0x1c01f000, + 0x4803c857, 0x4a006002, 0x00000100, 0x600a8000, + 0x05fdf7ee, 0x4933c857, 0x640a6203, 0x0509fe3f, + 0x05000002, 0x643a6203, 0x59a8005f, 0x48026006, + 0x1c01f000, 0x4933c857, 0x0509fa54, 0x0500002b, + 0x4d2c0000, 0x050df8f2, 0x05020007, 0x4d400000, + 0x60c68000, 0x60100800, 0x0509ff18, 0x5c028000, + 0x0501f021, 0x050df8f4, 0x05020005, 0x64c65a0a, + 0x64125810, 0x0001fba8, 0x0501f01b, 0x59300c07, + 0x90040590, 0x05000003, 0x90040591, 0x05020007, + 0x64c65a0a, 0x64125811, 0x4a025812, 0x000000ff, + 0x0001fba8, 0x0501f010, 0x592c0408, 0x8c00051e, + 0x0500000d, 0x4a025a08, 0x00000103, 0x4a025809, + 0x01000000, 0x4da00000, 0x4cec0000, 0x5931d82d, + 0x58ef400b, 0x58ec0009, 0x0801f800, 0x5c01d800, + 0x5c034000, 0x5c025800, 0x1c01f000, 0x4933c857, + 0x83340580, 0x001141b4, 0x05020007, 0x91380d95, + 0x05000003, 0x91380d96, 0x05fe0134, 0x0519fd8c, + 0x0009f010, 0x59340400, 0x82000500, 0x000000ff, + 0x9000348c, 0x05b21ddc, 0x59303403, 0xb0180d8d, + 0x05080647, 0x90180db3, 0x0508060d, 0x90180da8, + 0x0508035a, 0x90180da9, 0x05080365, 0xb0180d97, + 0x050c0487, 0x90180d9f, 0x05fc02c6, 0xb0180d95, + 0x05fc02a6, 0x90180d80, 0x05fc0579, 0x90180da2, + 0x05fc02e2, 0x90180db5, 0x05fc03ba, 0x90180db9, + 0x05fc052f, 0x90180dbd, 0x05fc033c, 0xb0180d84, + 0x05fc0368, 0xb0180d89, 0x05fc039b, 0xb0180d98, + 0x050c050d, 0xb0180d83, 0x05080752, 0xb0180d91, + 0x050807ac, 0x90180d84, 0x05020002, 0x60040000, + 0x91380d95, 0x05000004, 0x91380d96, 0x05fe0103, + 0x0501f1ec, 0x4c000000, 0x0519fd59, 0x5c000000, + 0x4d2c0000, 0x4d3c0000, 0x0c01f804, 0x5c027800, + 0x5c025800, 0x1c01f000, 0x0010a081, 0x0010a085, + 0x0010a081, 0x0010a0d6, 0x0010a081, 0x0010a1d9, + 0x0010a263, 0x0010a081, 0x0010a081, 0x0010a227, + 0x0010a081, 0x0010a232, 0x4933c857, 0x497a6008, + 0x59300809, 0x58040000, 0x4a000a08, 0x00000103, + 0x0009f010, 0x4933c857, 0x40000000, 0x40000000, + 0x1c01f000, 0x4933c857, 0x05ddfa99, 0x59a800bb, + 0xb00005b4, 0x0502003d, 0x0515fcdd, 0x0502000e, + 0x0501f83d, 0x0509f9c5, 0x05000009, 0x050df864, + 0x05020007, 0x41780800, 0x4d400000, 0x60028000, + 0x0509fe8a, 0x5c028000, 0x0501f002, 0x05c1fb73, + 0x0009f010, 0x0509f9b9, 0x05000005, 0x050df858, + 0x05020003, 0x05fdff60, 0x0009f010, 0x417a7800, + 0x05c1fb23, 0x42000000, 0x001123f8, 0x0519feb4, 0x59340200, 0x84000558, 0x48026a00, 0x600c3000, - 0x41782800, 0x60142000, 0x4d400000, 0x4d440000, - 0x59368c03, 0x60a68000, 0x050dfd25, 0x5c028800, - 0x5c028000, 0x5c027800, 0x05c5fa81, 0x0005ffdc, - 0x0501f002, 0x05fdfced, 0x5c025800, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x41380000, 0xb13834a0, - 0x05b61cde, 0x0c01f001, 0x00109962, 0x0010995f, - 0x00109962, 0x00109962, 0x00109962, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x00109962, 0x0010995e, 0x00109962, - 0x00109962, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x00109962, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x00109962, 0x00109962, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x00109962, 0x00109962, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x00109962, 0x00109962, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x05b5fc7c, 0x64066203, - 0x493a6403, 0x05f1f710, 0x4933c857, 0x64066203, - 0x493a6403, 0x05f1f70c, 0x59300403, 0xb00034a0, - 0x05b61c72, 0x91383593, 0x05000087, 0x913835a7, - 0x05020042, 0x4933c857, 0x05f5fafb, 0x0519fce7, - 0x0509fc4b, 0x0500000c, 0x0509fc58, 0x05000039, - 0x59300403, 0x90000da2, 0x05020033, 0x60140004, - 0x05fdfcb0, 0x05000030, 0x05fdfccd, 0x05000030, - 0x0501f030, 0x600c0004, 0x05fdfcaa, 0x0500002a, - 0x05c5f9f3, 0x601c0800, 0x05ddfb6b, 0x0501f940, - 0x4d440000, 0x59368c03, 0x83440580, 0x000007fe, - 0x05020007, 0x59a81249, 0x84081540, 0x05e1ff23, - 0x05020002, 0x8408154a, 0x480b5249, 0x60a68000, - 0x05f5f8b5, 0x4d3c0000, 0x417a7800, 0x05c5f999, - 0x5c027800, 0x916c0583, 0x0500000b, 0x5932680a, - 0x59340008, 0x800001c0, 0x05020007, 0x59368c03, - 0x4933c857, 0x4937c857, 0x4947c857, 0x05ddfc0d, - 0x0501f008, 0x42000000, 0x0010e454, 0x0519fe39, - 0x60543000, 0x41782800, 0x600c2000, 0x050dfc6c, - 0x5c028800, 0x0509fedc, 0x0005f7dc, 0x1c01f000, - 0x0501f917, 0x05fdf7fc, 0x91380594, 0x0500000c, - 0x4933c857, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05fe07f7, 0x05f5ff04, 0x05fe027e, 0x59300203, - 0x9000058e, 0x05080492, 0x05b5fc20, 0x4933c857, - 0x05f5faad, 0x050dfee2, 0x05020005, 0x59300009, - 0x800001c0, 0x05020026, 0x05f1f6af, 0x0519fc93, - 0x60082800, 0x59300403, 0xb0000591, 0x050c0772, - 0x4d3c0000, 0x417a7800, 0x05c5f962, 0x5c027800, - 0x60583000, 0x41782800, 0x4d400000, 0x4d440000, - 0x59368c03, 0x60242000, 0x60a68000, 0x050dfc40, - 0x5c028800, 0x5c028000, 0x42000000, 0x0010e454, - 0x0519fe04, 0x0509fbe2, 0x0502000b, 0x05c5f998, - 0x0501f8e7, 0x59340c03, 0x82040580, 0x000007fe, - 0x05fe07c9, 0x59a80a49, 0x84040d40, 0x48075249, - 0x05fdf7c5, 0x0509fbe5, 0x05020003, 0x0501f8dc, - 0x05fdf7c1, 0x59300403, 0x90000db2, 0x05020003, - 0x05c9f84f, 0x05fdf7bc, 0x90000da2, 0x050008d4, - 0x05fdf7b9, 0x4933c857, 0x4803c857, 0x0c01f001, - 0x00109a55, 0x00109a55, 0x00109a55, 0x00109a55, - 0x00109a55, 0x00109a55, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a5a, 0x00109abb, - 0x00109a54, 0x00109abb, 0x00109abb, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109abb, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a68, 0x00109abb, - 0x00109a54, 0x00109a63, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a63, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a66, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109abb, - 0x00109abb, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109abb, - 0x00109a70, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a76, 0x00109a54, - 0x05b5fb86, 0x640a6203, 0x0509fe48, 0x05000002, - 0x643a6203, 0x0509f3d5, 0x64166203, 0x59a8005e, - 0x48026205, 0x0509fe41, 0x05000002, 0x643a6203, - 0x59a8005c, 0x48026006, 0x1c01f000, 0x5930082a, - 0x49780a05, 0x0501f056, 0x0509fe1f, 0x0005f7dc, - 0x05c5ffd3, 0x05f5faaa, 0x05000003, 0x05f5f9fe, - 0x0005f7dc, 0x05f5f9fc, 0x0005ffdc, 0x05f5f295, - 0x4933c857, 0x640a6203, 0x0509fe2c, 0x05000002, - 0x643a6203, 0x1c01f000, 0x4933c857, 0x4d300000, - 0x4d2c0000, 0x59325809, 0x812e59c0, 0x0500002e, - 0x0509fa4d, 0x05b40b5d, 0x59a80ccd, 0x48065811, - 0x59a808cf, 0x48065810, 0x64025a0a, 0x592c1001, - 0x800811c0, 0x05b40b55, 0x4930100b, 0x492c100a, - 0x64001001, 0x4a001009, 0x00109a96, 0x4a001003, - 0x00110672, 0x4a001005, 0x00000200, 0x592c0015, - 0x48001007, 0x592c0016, 0x48001008, 0x5c025800, - 0x5c026000, 0x0001f021, 0x4d300000, 0x4d2c0000, - 0x5832600b, 0x813261c0, 0x05b40b40, 0x5832580a, - 0x812e59c0, 0x05b40b3d, 0x49786001, 0x58300002, - 0x82000580, 0x00000100, 0x05020014, 0x59a80ccd, - 0x48065811, 0x59a808cf, 0x48065810, 0x64025a0a, - 0x0001fb82, 0x59a81ccc, 0x840c1d46, 0x480f54cc, - 0x0509fdf2, 0x05000005, 0x05fdf922, 0x59a8005c, - 0x48026006, 0x0501f002, 0x0005ffdc, 0x5c025800, - 0x5c026000, 0x1c01f000, 0x4803c857, 0x4a006002, - 0x00000100, 0x600a8000, 0x05fdf7ee, 0x4933c857, - 0x640a6203, 0x0509fde1, 0x05000002, 0x643a6203, - 0x59a8005c, 0x48026006, 0x1c01f000, 0x4933c857, - 0x0509fa05, 0x0500002b, 0x4d2c0000, 0x050df886, - 0x05020007, 0x4d400000, 0x60c68000, 0x60100800, - 0x0509feb3, 0x5c028000, 0x0501f021, 0x050df888, - 0x05020005, 0x64c65a0a, 0x64125810, 0x0001fb82, - 0x0501f01b, 0x59300c07, 0x90040590, 0x05000003, - 0x90040591, 0x05020007, 0x64c65a0a, 0x64125811, - 0x4a025812, 0x000000ff, 0x0001fb82, 0x0501f010, - 0x592c0408, 0x8c00051e, 0x0500000d, 0x4a025a08, - 0x00000103, 0x4a025809, 0x01000000, 0x4da00000, - 0x4cec0000, 0x5931d82d, 0x58ef400b, 0x58ec0009, - 0x0801f800, 0x5c01d800, 0x5c034000, 0x5c025800, - 0x1c01f000, 0x4933c857, 0x83340580, 0x00110210, - 0x05020007, 0x91380d95, 0x05000003, 0x91380d96, - 0x05fe013c, 0x0519fb5f, 0x0005f7dc, 0x59340400, - 0x82000500, 0x000000ff, 0x9000348c, 0x05b61adb, - 0x59303403, 0xb0180d8d, 0x050805e9, 0x90180db3, - 0x050805af, 0x90180da8, 0x050802fb, 0x90180da9, - 0x05080306, 0xb0180d97, 0x050c0410, 0x90180d9f, - 0x05fc02ca, 0xb0180d95, 0x05fc02aa, 0x90180d80, - 0x05fc0579, 0x90180da2, 0x05fc02e6, 0x90180db5, - 0x05fc03be, 0x90180db9, 0x05fc052f, 0x90180dbd, - 0x05fc0340, 0xb0180d84, 0x05fc036c, 0xb0180d89, - 0x05fc039f, 0xb0180d98, 0x050c0496, 0xb0180d83, - 0x050806ed, 0xb0180d91, 0x05080747, 0x90180d84, - 0x05020002, 0x60040000, 0x91380d95, 0x05000004, - 0x91380d96, 0x05fe010b, 0x0501f1ec, 0x4c000000, - 0x0519fb2c, 0x5c000000, 0x4d2c0000, 0x4d3c0000, - 0x0c01f804, 0x5c027800, 0x5c025800, 0x1c01f000, - 0x00109b47, 0x00109b4b, 0x00109b47, 0x00109b9c, - 0x00109b47, 0x00109c9f, 0x00109d29, 0x00109b47, - 0x00109b47, 0x00109ced, 0x00109b47, 0x00109cf8, - 0x4933c857, 0x497a6008, 0x59300809, 0x58040000, - 0x4a000a08, 0x00000103, 0x0005f7dc, 0x4933c857, - 0x40000000, 0x40000000, 0x1c01f000, 0x4933c857, - 0x05ddfd61, 0x59a800b6, 0xb00005b4, 0x0502003d, - 0x0515fb00, 0x0502000e, 0x0501f83d, 0x0509f976, - 0x05000009, 0x0509fff8, 0x05020007, 0x41780800, - 0x4d400000, 0x60028000, 0x0509fe25, 0x5c028000, - 0x0501f002, 0x05c5f816, 0x0005f7dc, 0x0509f96a, - 0x05000005, 0x0509ffec, 0x05020003, 0x05fdff60, - 0x0005f7dc, 0x417a7800, 0x05c1ffc6, 0x42000000, - 0x0010e454, 0x0519fc73, 0x59340200, 0x84000558, - 0x48026a00, 0x600c3000, 0x0519fa15, 0x4d300000, - 0x05fdf893, 0x05b40a69, 0x4926601d, 0x4936600a, - 0x497a6009, 0x64066407, 0x64066403, 0x59240400, - 0x8c00050a, 0x0502000b, 0x64126407, 0x641e6203, - 0x6406642c, 0x60043000, 0x4d400000, 0x60a68000, - 0x41782800, 0x0515fc1e, 0x5c028000, 0x0501f005, - 0x602c0800, 0x05ddf968, 0x64066203, 0x05f1fcea, - 0x5c026000, 0x05fdff3a, 0x05c1ffe9, 0x0005f7dc, - 0x05fdff37, 0x60040000, 0x0501f0d5, 0x4933c857, - 0x59340200, 0x8c000500, 0x05000009, 0x4d3c0000, - 0x417a7800, 0x05ddf94e, 0x5c027800, 0x8d0c0520, - 0x05000003, 0x60180800, 0x05ddf953, 0x1c01f000, - 0x4933c857, 0x59a808b6, 0xb00405b4, 0x0500000e, - 0x4807c857, 0x82040580, 0x00000100, 0x050200ac, - 0x59cc0408, 0x4803c857, 0x8c000500, 0x050000a8, - 0x59341403, 0x82080580, 0x000007fe, 0x05000006, - 0x0501f0a3, 0x59341403, 0x82080580, 0x000007fe, - 0x0502001b, 0x59a80249, 0x8c000506, 0x0500000e, - 0x59cc0000, 0x82000500, 0x000000ff, 0x59240c08, - 0x80040580, 0x05000008, 0x05c1ffb9, 0x0005ffdc, - 0x42000000, 0x0010e440, 0x0519fc1e, 0x6006d800, - 0x05d9f52b, 0x0519fd54, 0x050e05eb, 0x59a80249, - 0x8c000506, 0x05020004, 0x83240580, 0x0010e512, - 0x050e04ea, 0x0501fa74, 0x0501f03b, 0x41780800, - 0x05ddfa0a, 0x59341403, 0x82080580, 0x000007fc, - 0x05020019, 0x4a026802, 0x00fffffc, 0x0509f8f6, - 0x0500000c, 0x0509ff78, 0x0502000a, 0x0501f8a3, - 0x41780800, 0x4d400000, 0x60028000, 0x0509fda4, - 0x5c028000, 0x60100800, 0x05ddf90f, 0x0005f7dc, - 0x60100800, 0x05ddf90c, 0x05c1ff91, 0x59300c29, - 0x900405a1, 0x050c069d, 0xb0040591, 0x000607dc, - 0x050df69a, 0x59a800d1, 0x8c000502, 0x0500000d, - 0x05e1fcc2, 0x60401000, 0x05020008, 0x59340002, - 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, - 0x05000004, 0x60201000, 0x05e1f8b9, 0x05020058, - 0x0509f8d1, 0x05000059, 0x0509ff53, 0x05020005, - 0x592c0408, 0x8c00051c, 0x05fe07d5, 0x0501f87b, - 0x60140800, 0x05ddf8ec, 0x64066203, 0x640e6403, - 0x05f1f46d, 0x59cc0408, 0x8c000518, 0x05000017, - 0x0509fc51, 0x05e1fca5, 0x05000008, 0x59cc0408, - 0x8c000516, 0x05000005, 0x59300429, 0x900005a1, - 0x05fe07c3, 0x1c01f000, 0x59a80249, 0x8400054a, - 0x48035249, 0x48035449, 0x59a8003d, 0x497b8830, - 0x84000570, 0x48038832, 0x59300429, 0x900005a1, - 0x05fe07b7, 0x1c01f000, 0x59a80249, 0xb0000510, - 0xb0000590, 0x05000009, 0x61bc1001, 0x42024800, - 0x0010e512, 0x480a4805, 0x480b503d, 0x497b8830, - 0x84081570, 0x480b8832, 0x0509fc4c, 0x59a80249, - 0x84000548, 0x48035249, 0x48035449, 0x0515fb47, - 0x05fe07a3, 0x599c0019, 0x8c000510, 0x0502002f, - 0x59a80249, 0x8400054c, 0x48035249, 0x601c0800, - 0x05ddf8b5, 0x417a7800, 0x05ddf8a9, 0x61bc3801, - 0x61a00001, 0x05e9fc91, 0x05dc08d6, 0x05b6099b, - 0x4936600a, 0x05ddfc72, 0x05020002, 0x497a6416, - 0x599c0208, 0x48026c12, 0x59340200, 0x8400051a, - 0x48026a00, 0x600c0800, 0x05ddf8a3, 0x64066407, - 0x64066203, 0x640a6403, 0x05f1f423, 0x05fdfe74, - 0x60040000, 0x0501f012, 0x599c0017, 0x8c00050a, - 0x05fc07ac, 0x60100800, 0x05ddf897, 0x493750c2, - 0x59a80249, 0x8c000508, 0x05000008, 0x599c0018, - 0x8c00051c, 0x05000005, 0x61a00807, 0x42001000, - 0x0010582b, 0x05edfb87, 0x0005f7dc, 0x4933c857, - 0x80003540, 0x05000003, 0x601c0800, 0x05ddf886, - 0x801831c0, 0x0502000f, 0x59302009, 0x801021c0, - 0x05000004, 0x58100408, 0x8c00051e, 0x05020009, - 0x59341c03, 0x60102000, 0x60483000, 0x4d200000, - 0x59364013, 0x81224130, 0x05d5fbd2, 0x5c024000, - 0x05c1fefb, 0x0005f7dc, 0x4c5c0000, 0x4d2c0000, - 0x59325809, 0x05e5fb86, 0x5c025800, 0x59cc0008, - 0x48002805, 0x59cc0009, 0x48002806, 0x49782807, - 0x49782808, 0x49782809, 0x4978280a, 0x59cc0013, - 0x8c00053e, 0x05000009, 0x59cc0414, 0x900001c0, - 0x59ccbc15, 0x805c0540, 0x48002807, 0x59cc0416, - 0x900001c0, 0x48002808, 0x59cc0017, 0x8c00053e, - 0x05000009, 0x59cc0418, 0x900001c0, 0x59ccbc19, - 0x805c0540, 0x48002809, 0x59cc041a, 0x900001c0, - 0x4800280a, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x59a800b6, 0x90000594, 0x0502003a, 0x59a800d1, - 0x8c000502, 0x05000011, 0x05e1fc08, 0x60401000, + 0x0519fc38, 0x4d300000, 0x05fdf86e, 0x05b00d6a, + 0x4926601d, 0x4936600a, 0x497a6009, 0x64066407, + 0x64066403, 0x59240400, 0x8c00050a, 0x0502000b, + 0x64126407, 0x641e6203, 0x6406642c, 0x60043000, + 0x4d400000, 0x60a68000, 0x41782800, 0x0515fe2b, + 0x5c028000, 0x0501f005, 0x602c0800, 0x05d9fe41, + 0x64066203, 0x05f1fc69, 0x5c026000, 0x05fdff3a, + 0x05c1fb46, 0x0009f010, 0x05fdff37, 0x60040000, + 0x0501f0d5, 0x4933c857, 0x59340200, 0x8c000500, + 0x05000009, 0x4d3c0000, 0x417a7800, 0x05d9fe27, + 0x5c027800, 0x8d0c0520, 0x05000003, 0x60180800, + 0x05d9fe2c, 0x1c01f000, 0x4933c857, 0x59a808bb, + 0xb00405b4, 0x0500000e, 0x4807c857, 0x82040580, + 0x00000100, 0x050200ac, 0x59cc0408, 0x4803c857, + 0x8c000500, 0x050000a8, 0x59341403, 0x82080580, + 0x000007fe, 0x05000006, 0x0501f0a3, 0x59341403, + 0x82080580, 0x000007fe, 0x0502001b, 0x59a8024c, + 0x8c000506, 0x0500000e, 0x59cc0000, 0x82000500, + 0x000000ff, 0x59240c08, 0x80040580, 0x05000008, + 0x05c1fb16, 0x0009f810, 0x42000000, 0x001123e1, + 0x0519fe5f, 0x6006d800, 0x05d9f1e8, 0x0519ff95, + 0x050e075f, 0x59a8024c, 0x8c000506, 0x05020004, + 0x83240580, 0x001124b6, 0x050e0561, 0x0501fa7d, + 0x0501f03b, 0x41780800, 0x05d9ff36, 0x59341403, + 0x82080580, 0x000007fc, 0x05020019, 0x4a026802, + 0x00fffffc, 0x0509f945, 0x0500000c, 0x0509ffe4, + 0x0502000a, 0x0501f8a3, 0x41780800, 0x4d400000, + 0x60028000, 0x0509fe09, 0x5c028000, 0x60100800, + 0x05d9fde8, 0x0009f010, 0x60100800, 0x05d9fde5, + 0x05c1faee, 0x59300c29, 0x900405a1, 0x05100019, + 0xb0040591, 0x000a0010, 0x0511f016, 0x59a800d6, + 0x8c000502, 0x0500000d, 0x05e1fa72, 0x60401000, 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, - 0x82000580, 0x00ff0000, 0x05000008, 0x60201000, - 0x05ddffff, 0x05000005, 0x59a800d1, 0x8400054c, - 0x480350d1, 0x0501f027, 0x916c0583, 0x0502000c, - 0x59300009, 0x80000540, 0x05020009, 0x59341c03, - 0x60182000, 0x604c3000, 0x4d200000, 0x59364013, - 0x81224130, 0x05d5fb87, 0x5c024000, 0x05ddf988, - 0x05fdfecb, 0x0501fab8, 0x05020016, 0x59340404, - 0x80000540, 0x05000013, 0x60180800, 0x05ddf822, - 0x0505fffd, 0x0500000d, 0x0509fe7f, 0x05020007, - 0x41780800, 0x4d400000, 0x60028000, 0x0509fcac, - 0x5c028000, 0x0005f7dc, 0x4a025a08, 0x00000103, - 0x4a025809, 0x02000000, 0x05c1fe99, 0x0005f7dc, - 0x05ddff94, 0x0505ffec, 0x05000005, 0x0509fe6e, - 0x05020003, 0x05fdfde2, 0x0005f7dc, 0x05fdfde0, - 0x0519f974, 0x80000580, 0x59a800d1, 0x8c00050c, - 0x05000004, 0x8400050c, 0x480350d1, 0x90000541, - 0x05fdf777, 0x4933c857, 0x59a800b6, 0x90000594, - 0x05020006, 0x602c0800, 0x05d9fffb, 0x64066203, - 0x64066403, 0x05f1f37c, 0x60040000, 0x05fdf76c, - 0x4933c857, 0x40003000, 0x59a800b6, 0x90000584, - 0x05020018, 0x9018358b, 0x05020015, 0x5930081d, - 0x58040200, 0x8c000500, 0x050c0432, 0x58040200, - 0x8c000508, 0x0500000c, 0x84000508, 0x48000a00, - 0x600c0800, 0x05d9ffe4, 0x5930080a, 0x49780806, - 0x4a026202, 0x0000ffff, 0x64066203, 0x65466403, - 0x05f1f361, 0x601c0800, 0x05d9ffdb, 0x0005f7dc, - 0x60040000, 0x05fdf74e, 0x4803c857, 0x4d2c0000, - 0x4d3c0000, 0x0c01f804, 0x5c027800, 0x5c025800, - 0x1c01f000, 0x00109b47, 0x00109d4c, 0x00109b47, - 0x00109d8f, 0x00109b47, 0x00109df5, 0x00109d29, - 0x00109b47, 0x00109b47, 0x00109e0b, 0x00109b47, - 0x00109e16, 0x4933c857, 0x4d1c0000, 0x59301403, - 0x90080583, 0x0500001d, 0x9008159e, 0x05020019, - 0x91381595, 0x05020016, 0x4d300000, 0x5930141b, - 0x0509fc25, 0x05b408a5, 0x591c1416, 0x8c08051e, - 0x0500000b, 0x05f9feca, 0x05000009, 0x05ddfd36, - 0x4926601d, 0x59340200, 0x8c000508, 0x05000003, - 0x4a026416, 0x00000100, 0x0509fa0e, 0x82081500, - 0xffff1fff, 0x480a3c16, 0x5c026000, 0x0005ffdc, - 0x5c023800, 0x1c01f000, 0x05fdff55, 0x05fdf7fd, - 0x4933c857, 0x42000000, 0x0010e458, 0x0519fa8d, - 0x0519f908, 0x05ddfb5c, 0x0505ff77, 0x05000007, - 0x0509fdf9, 0x05020005, 0x6008b000, 0x0509fde0, - 0x05fdfd6b, 0x0005f7dc, 0x0501f8d3, 0x05020020, - 0x417a7800, 0x05d9ff86, 0x417a7800, 0x05c1fdcd, - 0x42000000, 0x0010e454, 0x0519fa7a, 0x59340200, - 0x84000558, 0x48026a00, 0x640a6403, 0x600c3000, - 0x0519f81b, 0x59240400, 0x8c00050a, 0x0502000b, - 0x4d400000, 0x41782800, 0x60143000, 0x60a68000, - 0x0515fa2f, 0x5c028000, 0x641e6203, 0x64126407, - 0x6406642c, 0x1c01f000, 0x600c0800, 0x05d9ff76, - 0x64066203, 0x05f1faf8, 0x05fdf7fb, 0x59cc0407, - 0x90000589, 0x05020009, 0x59340412, 0x82000500, - 0x000000ff, 0x0500000b, 0x80000040, 0x48026c12, - 0x642a6006, 0x05fdf7f0, 0x59cc0207, 0x82000500, - 0x0000ff00, 0x82000580, 0x00001900, 0x05fc07d3, - 0x05fdfd37, 0x80000580, 0x05fdf6d5, 0x4933c857, - 0x0505ff39, 0x0500000b, 0x0509fdbb, 0x05020009, - 0x4c580000, 0x6008b000, 0x0509fda1, 0x5c00b000, - 0x05fdfd2b, 0x601c0800, 0x05d9ff53, 0x0005f7dc, - 0x59340403, 0x82000580, 0x000007fc, 0x05020007, - 0x60100000, 0x05fdf887, 0x05020031, 0x601c0800, - 0x05d9ff49, 0x0005f7dc, 0x05fdfd1d, 0x59cc3407, - 0x82183500, 0x000000ff, 0x90180585, 0x0500001e, - 0x9018058b, 0x05000015, 0x59cc0207, 0x82000500, - 0x0000ff00, 0x05020003, 0x90180589, 0x05000016, - 0x82000580, 0x00001900, 0x0502000c, 0x90180589, - 0x05000011, 0x59340403, 0x82000580, 0x000007fe, - 0x05000023, 0x60100800, 0x05d9ff2f, 0x05c1fdb4, - 0x0519f898, 0x0005f7dc, 0x59340403, 0x82000580, - 0x000007fe, 0x0500001a, 0x0519f892, 0x60040000, - 0x05fdf69b, 0x0505ff00, 0x59325809, 0x05000008, - 0x592c0208, 0x82000580, 0x00000139, 0x05fc07f7, - 0x592c0408, 0x8c00051e, 0x05fe07f4, 0x59340412, - 0x800001c0, 0x05000006, 0x80000040, 0x48026c12, - 0x642a6006, 0x645a6403, 0x1c01f000, 0x59340403, - 0x82000580, 0x000007fe, 0x0502000b, 0x59a80249, - 0x84000540, 0x48035249, 0x8c000506, 0x05000004, - 0x4a035045, 0x0000ffff, 0x050dfcbb, 0x05d9fc0b, - 0x05fdf7de, 0x0519f86f, 0x417a7800, 0x05c1fd41, - 0x60143000, 0x0515ff96, 0x42000000, 0x0010e454, - 0x0519f9ec, 0x59300429, 0x900005a1, 0x050c048f, - 0x05fdf7d3, 0x4933c857, 0x0501f844, 0x05020006, - 0x60140800, 0x05d9fef4, 0x64066203, 0x640e6403, - 0x05f1f275, 0x60100800, 0x05d9feef, 0x0509fd4e, - 0x05020007, 0x4c580000, 0x6008b000, 0x0509fd34, - 0x5c00b000, 0x05fdfcbe, 0x0005f7dc, 0x05fdfcbc, - 0x0519f850, 0x80000580, 0x05fdf659, 0x4933c857, - 0x0501f82e, 0x05020006, 0x60240800, 0x05d9fede, - 0x64066203, 0x64166403, 0x05f1f25f, 0x0519f845, - 0x60040000, 0x05fdf64e, 0x4933c857, 0x5930081d, - 0x58040200, 0x8c000500, 0x050c031a, 0x0501f81f, - 0x05020006, 0x602c0800, 0x05d9fecf, 0x64066203, - 0x64066403, 0x05f1f250, 0x5930080a, 0x58040403, - 0x82000580, 0x000007fe, 0x05020004, 0x600c2800, - 0x050dfb11, 0x0005f7dc, 0x0519f82e, 0x60040000, - 0x05fdf637, 0x4933c857, 0x59cc0407, 0x90000583, - 0x05020009, 0x59cc0207, 0x82000500, 0x0000ff00, - 0x82000d80, 0x00002a00, 0x05000003, 0x82000d80, - 0x00001e00, 0x1c01f000, 0x4933c857, 0x90000541, - 0x1c01f000, 0x4933c857, 0x4d400000, 0x4c580000, - 0x60028000, 0x05c1ffd6, 0x59a80249, 0x90000543, - 0x48035249, 0x05d5fcce, 0x0500000c, 0x59a81ccc, - 0x8c0c0506, 0x0502000f, 0x840c1d44, 0x480f54cc, - 0x59cc0408, 0x8c00051c, 0x05000004, 0x59a81249, - 0x84081558, 0x480b5249, 0x0501f8c5, 0x05000005, - 0x4d300000, 0x4d340000, 0x4d440000, 0x0501f037, - 0x59cc0408, 0x8c00051c, 0x05000006, 0x59cc0800, - 0x82040d00, 0x00ffffff, 0x800409c0, 0x05000037, - 0x0501f8ec, 0x05000035, 0x4d300000, 0x4d340000, - 0x4d440000, 0x83240580, 0x0010e512, 0x0502002a, - 0x59cc0408, 0x8c00051e, 0x0502000c, 0x42000800, - 0x0010e512, 0x58040406, 0x8c000500, 0x05020007, - 0x59cc0408, 0x8c000518, 0x05000004, 0x59a80249, - 0x84000552, 0x48035249, 0x59240400, 0x8c00050a, - 0x05020005, 0x60aa8000, 0x61fe89ff, 0x60083000, - 0x0515ff18, 0x60aa8000, 0x4d3c0000, 0x05d5fc99, - 0x05000008, 0x600a7800, 0x5924100b, 0x82081500, - 0x00001fff, 0x41780800, 0x05c5f8bc, 0x0501f003, - 0x60027804, 0x05c1fc49, 0x5c027800, 0x42000000, - 0x0010e454, 0x0519f94f, 0x05d5fc8a, 0x05020002, - 0x05c1fe35, 0x05c5f846, 0x600a8000, 0x5c028800, - 0x5c026800, 0x5c026000, 0x050dfbb3, 0x41780800, - 0x59a804cc, 0x8c00050a, 0x05000002, 0x60040800, - 0x05d9ff3a, 0x59cc0800, 0x82040d00, 0x00ffffff, - 0x59240200, 0xb0000566, 0x48024a00, 0x59cc0408, - 0x8c00051c, 0x05000003, 0x800409c0, 0x05000019, - 0x48064805, 0x812000f0, 0x80040540, 0x48026813, - 0x812241c0, 0x0502000f, 0x59cc0408, 0x8c000518, - 0x05020007, 0x599c0019, 0x8c000510, 0x05000009, - 0x59a80249, 0x84000548, 0x48035249, 0x4c040000, - 0x60001802, 0x60040000, 0x05ddff96, 0x5c000800, - 0x4927c857, 0x83240580, 0x0010e512, 0x05020026, - 0x59a81249, 0x59cc0408, 0x8c00051a, 0x05020005, - 0x84081514, 0x4a0370e5, 0x00000800, 0x0501f004, - 0x84081554, 0x4a0370e5, 0x00000c00, 0x480b5249, - 0x4807503d, 0x80040110, 0x48035046, 0x48038881, - 0x59a80a49, 0x84040d50, 0x59cc0013, 0x8c00053e, - 0x05000003, 0x8c000536, 0x05000004, 0x59cc0017, - 0x8c000536, 0x05020002, 0x84040d10, 0x48075249, - 0x48075449, 0x5924100b, 0x82081500, 0x00001fff, - 0x8c040518, 0x05000004, 0x59a804cc, 0x8c00050a, - 0x05000026, 0x59cc0408, 0x8c000518, 0x05000023, - 0x59a80249, 0x8c000506, 0x05000012, 0x916c0583, - 0x05000004, 0x83240580, 0x0010e512, 0x0500001b, - 0x59240400, 0x8c00050c, 0x05020007, 0x4c040000, - 0x60001802, 0x60040000, 0x05ddff5a, 0x5c000800, - 0x0501f012, 0x64866429, 0x0509fc0b, 0x0501f00f, - 0x0519fa2a, 0x0502000d, 0x4c080000, 0x4c040000, - 0x050dfa18, 0x5c000800, 0x5c001000, 0x05020007, - 0x59a80249, 0x8c000514, 0x05000004, 0x4c040000, - 0x05c5f8aa, 0x5c000800, 0xb0040510, 0xb0000590, - 0x05000008, 0x05e1f9a1, 0x05000006, 0x59cc0009, - 0x4803505a, 0x59cc000a, 0x4803505b, 0x0509f946, - 0x5c00b000, 0x5c028000, 0x1c01f000, 0x4933c857, - 0x59a81449, 0x82080580, 0x0000ffff, 0x0500000f, - 0x4c080000, 0x05e1f991, 0x5c001000, 0x05020012, - 0x59cc0408, 0x8c000518, 0x05000009, 0x8c08050a, - 0x05000011, 0x8c00051c, 0x05020008, 0x8c080518, - 0x0502000d, 0x80000580, 0x1c01f000, 0x8c080508, - 0x05fe07fd, 0x0501f008, 0x8c080518, 0x05fe07fa, - 0x0501f005, 0x90080530, 0x05020003, 0x8c080506, - 0x05fe07f5, 0x4a035449, 0x0000ffff, 0x42000000, - 0x0010e39c, 0x0519f8a3, 0x60303000, 0x61fc19ff, - 0x601c2000, 0x4d200000, 0x417a4000, 0x05d5f909, - 0x5c024000, 0x4d400000, 0x4d3c0000, 0x60043000, - 0x0515fe50, 0x60aa8000, 0x60027804, 0x05c1fb8b, - 0x5c028000, 0x5c027800, 0x90000541, 0x1c01f000, - 0x4933c857, 0x4c580000, 0x59cc0408, 0x8c000518, - 0x05020006, 0x59a80449, 0x82000580, 0x0000ffff, - 0x05000027, 0x0501f011, 0x59a80046, 0x4803c857, - 0x800001c0, 0x05000022, 0x59cc1000, 0x59340013, - 0x82000500, 0x00ffffff, 0x0500001d, 0x82081500, - 0x00ffffff, 0x80080580, 0x05000004, 0x42000000, - 0x0010e432, 0x0501f014, 0x59341806, 0x480fc857, - 0x800c19c0, 0x05000012, 0x91cc140b, 0x6008b000, - 0x91341c06, 0x0501f8da, 0x05000004, 0x42000000, - 0x0010e433, 0x0501f008, 0x91cc140d, 0x6008b000, - 0x91341c08, 0x0501f8d2, 0x05000005, 0x42000000, - 0x0010e434, 0x0519f863, 0x90000541, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x59cc0206, 0x90000594, - 0x05020015, 0x59cc0407, 0x82000580, 0x00000800, - 0x05020011, 0x59cc0207, 0x8c00051a, 0x0500000d, - 0x82000500, 0x00000f00, 0x82000580, 0x00000100, - 0x05020008, 0x59cc020a, 0x8c000508, 0x05020003, - 0x8c00050a, 0x05000003, 0x80000580, 0x1c01f000, - 0x90000541, 0x1c01f000, 0x4933c857, 0x4943c857, - 0x493fc857, 0x4c5c0000, 0x4d300000, 0x4d340000, - 0x4d2c0000, 0x4d380000, 0x4130b800, 0x42026000, - 0x00111b00, 0x59a8003b, 0x81640480, 0x0502108b, - 0x8d3c0512, 0x05000004, 0x405c0000, 0x81300580, - 0x05000081, 0x05f9fa5d, 0x0500007f, 0x59300407, - 0x90000c92, 0x05021015, 0x5932680a, 0x0c01f001, - 0x0010a029, 0x00109fc3, 0x00109fcc, 0x00109fd6, - 0x00109fc3, 0x00109fcc, 0x00109ffc, 0x0010a00a, - 0x00109fc2, 0x00109fc2, 0x0010a010, 0x00109fc2, - 0x00109fc2, 0x00109fc2, 0x00109fc2, 0x0010a019, - 0x0010a01c, 0x0010a01a, 0x05b1fe18, 0x59300403, - 0xb0000583, 0x05080b8d, 0x0515fe90, 0x0505fdf4, - 0x05c00bab, 0x0505fe01, 0x05fc0af9, 0x0501f05a, - 0x59325809, 0x0505fcfc, 0x05000057, 0x49425a0a, - 0x497a5c0d, 0x0001fb82, 0x59300a29, 0x90040d83, - 0x05040dd4, 0x0501f050, 0x813669c0, 0x05b00e03, - 0x050df985, 0x59300008, 0x8c000500, 0x05000003, - 0x05b9f86d, 0x0501f004, 0x59300203, 0x90000584, - 0x05b80869, 0x59325809, 0x0505fce7, 0x05000042, - 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, - 0x05060dc0, 0x0509fec8, 0x0005f9f3, 0x05e5fc1d, - 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, - 0x592c040c, 0x8c000512, 0x05000005, 0x4d2c0000, - 0x592e580d, 0x05b5f9a6, 0x5c025800, 0x49425a0a, - 0x497a580d, 0x0509fb64, 0x0001fb82, 0x0501f02a, - 0x59300203, 0x90000584, 0x05b8084b, 0x59325809, - 0x0505fcc9, 0x05000024, 0x49425a0a, 0x813669c0, - 0x05160b2d, 0x0509feac, 0x0005f9f3, 0x0509fb56, - 0x0001fb82, 0x0501f01c, 0x59300203, 0x90000591, - 0x0502001d, 0x59300429, 0x48026203, 0x0501f01a, - 0x59300203, 0x90000584, 0x05b80837, 0x59325809, - 0x0505fcb5, 0x05000010, 0x49425a0a, 0x0001fb82, - 0x0501f00d, 0x0501f00c, 0x59325819, 0x05b5f980, - 0x59300203, 0x90000584, 0x05b8082b, 0x05b9feea, - 0x59325809, 0x0505fca8, 0x05000003, 0x49425a0a, - 0x0001fb82, 0x05f9fbab, 0x8d3c051c, 0x05000002, + 0x82000580, 0x00ff0000, 0x05000004, 0x60201000, + 0x05ddfe54, 0x05020058, 0x0509f920, 0x05000059, + 0x0509ffbf, 0x05020005, 0x592c0408, 0x8c00051c, + 0x05fe07d5, 0x0501f87b, 0x60140800, 0x05d9fdc5, + 0x64066203, 0x640e6403, 0x05f1f3ec, 0x59cc0408, + 0x8c000518, 0x05000017, 0x0509fcaf, 0x05e1fa55, + 0x05000008, 0x59cc0408, 0x8c000516, 0x05000005, + 0x59300429, 0x900005a1, 0x05fe07c3, 0x1c01f000, + 0x59a8024c, 0x8400054a, 0x4803524c, 0x4803544c, + 0x59a80040, 0x497b8830, 0x84000570, 0x48038832, + 0x59300429, 0x900005a1, 0x05fe07b7, 0x1c01f000, + 0x59a8024c, 0xb0000510, 0xb0000590, 0x05000009, + 0x61bc1001, 0x42024800, 0x001124b6, 0x480a4805, + 0x480b5040, 0x497b8830, 0x84081570, 0x480b8832, + 0x0509fcaa, 0x59a8024c, 0x84000548, 0x4803524c, + 0x4803544c, 0x0515fd52, 0x05fe07a3, 0x599c0019, + 0x8c000510, 0x0502002f, 0x59a8024c, 0x8400054c, + 0x4803524c, 0x601c0800, 0x05d9fd8e, 0x417a7800, + 0x05d9fd82, 0x61bc3801, 0x61a00001, 0x05e9fb03, + 0x05d80db7, 0x05b20c9c, 0x4936600a, 0x05ddf9aa, + 0x05020002, 0x497a6416, 0x599c0208, 0x48026c12, + 0x59340200, 0x8400051a, 0x48026a00, 0x600c0800, + 0x05d9fd7c, 0x64066407, 0x64066203, 0x640a6403, + 0x05f1f3a2, 0x05fdfe74, 0x60040000, 0x0501f012, + 0x599c0017, 0x8c00050a, 0x05fc07ac, 0x60100800, + 0x05d9fd70, 0x493750c7, 0x59a8024c, 0x8c000508, + 0x05000008, 0x599c0018, 0x8c00051c, 0x05000005, + 0x61a00807, 0x42001000, 0x00105a99, 0x05edfab1, + 0x0009f010, 0x4933c857, 0x80003540, 0x05000003, + 0x601c0800, 0x05d9fd5f, 0x801831c0, 0x0502000f, + 0x59302009, 0x801021c0, 0x05000004, 0x58100408, + 0x8c00051e, 0x05020009, 0x59341c03, 0x60102000, + 0x60483000, 0x4d200000, 0x59364013, 0x81224130, + 0x05d5f835, 0x5c024000, 0x05c1fa58, 0x0009f010, + 0x4c5c0000, 0x4d2c0000, 0x59325809, 0x05e5f95f, + 0x5c025800, 0x59cc0008, 0x48002805, 0x59cc0009, + 0x48002806, 0x49782807, 0x49782808, 0x49782809, + 0x4978280a, 0x59cc0013, 0x8c00053e, 0x05000009, + 0x59cc0414, 0x900001c0, 0x59ccbc15, 0x805c0540, + 0x48002807, 0x59cc0416, 0x900001c0, 0x48002808, + 0x59cc0017, 0x8c00053e, 0x05000009, 0x59cc0418, + 0x900001c0, 0x59ccbc19, 0x805c0540, 0x48002809, + 0x59cc041a, 0x900001c0, 0x4800280a, 0x5c00b800, + 0x1c01f000, 0x4933c857, 0x59a800bb, 0x90000594, + 0x0502003a, 0x59a800d6, 0x8c000502, 0x05000011, + 0x05e1f9b8, 0x60401000, 0x05020008, 0x59340002, + 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, + 0x05000008, 0x60201000, 0x05ddfd9a, 0x05000005, + 0x59a800d6, 0x8400054c, 0x480350d6, 0x0501f027, + 0x916c0583, 0x0502000c, 0x59300009, 0x80000540, + 0x05020009, 0x59341c03, 0x60182000, 0x604c3000, + 0x4d200000, 0x59364013, 0x81224130, 0x05d1ffea, + 0x5c024000, 0x05d9feb4, 0x05fdfecb, 0x0501fac5, + 0x05020016, 0x59340404, 0x80000540, 0x05000013, + 0x60180800, 0x05d9fcfb, 0x0509f84c, 0x0500000d, + 0x0509feeb, 0x05020007, 0x41780800, 0x4d400000, + 0x60028000, 0x0509fd11, 0x5c028000, 0x0009f010, + 0x4a025a08, 0x00000103, 0x4a025809, 0x02000000, + 0x05c1f9f6, 0x0009f010, 0x05ddfd2f, 0x0509f83b, + 0x05000005, 0x0509feda, 0x05020003, 0x05fdfde2, + 0x0009f010, 0x05fdfde0, 0x0519fba1, 0x80000580, + 0x59a800d6, 0x8c00050c, 0x05000004, 0x8400050c, + 0x480350d6, 0x90000541, 0x05fdf777, 0x4933c857, + 0x59a800bb, 0x90000594, 0x05020006, 0x602c0800, + 0x05d9fcd4, 0x64066203, 0x64066403, 0x05f1f2fb, + 0x60040000, 0x05fdf76c, 0x4933c857, 0x40003000, + 0x59a800bb, 0x90000584, 0x05020018, 0x9018358b, + 0x05020015, 0x5930081d, 0x58040200, 0x8c000500, + 0x050c04a9, 0x58040200, 0x8c000508, 0x0500000c, + 0x84000508, 0x48000a00, 0x600c0800, 0x05d9fcbd, + 0x5930080a, 0x49780806, 0x4a026202, 0x0000ffff, + 0x64066203, 0x65466403, 0x05f1f2e0, 0x601c0800, + 0x05d9fcb4, 0x0009f010, 0x60040000, 0x05fdf74e, + 0x4803c857, 0x4d2c0000, 0x4d3c0000, 0x0c01f804, + 0x5c027800, 0x5c025800, 0x1c01f000, 0x0010a081, + 0x0010a286, 0x0010a081, 0x0010a2c9, 0x0010a081, + 0x0010a338, 0x0010a263, 0x0010a081, 0x0010a081, + 0x0010a34e, 0x0010a081, 0x0010a359, 0x4933c857, + 0x4d1c0000, 0x59301403, 0x90080583, 0x0500001d, + 0x9008159e, 0x05020019, 0x91381595, 0x05020016, + 0x4d300000, 0x5930141b, 0x0509fc87, 0x05b00ba6, + 0x591c1416, 0x8c08051e, 0x0500000b, 0x05f9fea5, + 0x05000009, 0x05ddfac5, 0x4926601d, 0x59340200, + 0x8c000508, 0x05000003, 0x4a026416, 0x00000100, + 0x0509fa6d, 0x82081500, 0xffff1fff, 0x480a3c16, + 0x5c026000, 0x0009f810, 0x5c023800, 0x1c01f000, + 0x05fdff55, 0x05fdf7fd, 0x4933c857, 0x42000000, + 0x001123fc, 0x0519fcce, 0x0519fb35, 0x05ddf894, + 0x0505ffc6, 0x05000007, 0x0509fe65, 0x05020005, + 0x6008b000, 0x0509fe4c, 0x05fdfd6b, 0x0009f010, + 0x0501f8dc, 0x05020020, 0x417a7800, 0x05d9fc5f, + 0x417a7800, 0x05c1f92a, 0x42000000, 0x001123f8, + 0x0519fcbb, 0x59340200, 0x84000558, 0x48026a00, + 0x640a6403, 0x600c3000, 0x0519fa3e, 0x59240400, + 0x8c00050a, 0x0502000b, 0x4d400000, 0x41782800, + 0x60143000, 0x60a68000, 0x0515fc3c, 0x5c028000, + 0x641e6203, 0x64126407, 0x6406642c, 0x1c01f000, + 0x600c0800, 0x05d9fc4f, 0x64066203, 0x05f1fa77, + 0x05fdf7fb, 0x59cc0407, 0x90000589, 0x05020009, + 0x59340412, 0x82000500, 0x000000ff, 0x0500000b, + 0x80000040, 0x48026c12, 0x642a6006, 0x05fdf7f0, + 0x59cc0207, 0x82000500, 0x0000ff00, 0x82000580, + 0x00001900, 0x05fc07d3, 0x05fdfd37, 0x80000580, + 0x05fdf6d5, 0x4933c857, 0x0505ff88, 0x0500000b, + 0x0509fe27, 0x05020009, 0x4c580000, 0x6008b000, + 0x0509fe0d, 0x5c00b000, 0x05fdfd2b, 0x601c0800, + 0x05d9fc2c, 0x0009f010, 0x59340403, 0x82000580, + 0x000007fc, 0x05020007, 0x60100000, 0x05fdf883, + 0x0502003a, 0x601c0800, 0x05d9fc22, 0x0009f010, + 0x05fdfd1d, 0x59340403, 0x82000580, 0x000007fe, + 0x0500001b, 0x59cc3407, 0x82183500, 0x000000ff, + 0x90180585, 0x05000023, 0x9018058b, 0x05000011, + 0x59cc0207, 0x82000500, 0x0000ff00, 0x05020003, + 0x90180d89, 0x0500001b, 0x82000580, 0x00001900, + 0x05020008, 0x90180589, 0x05000016, 0x60100800, + 0x05d9fc08, 0x05c1f911, 0x0519fac5, 0x0009f010, + 0x0519fac3, 0x60040000, 0x05fdf69f, 0x59cc3407, + 0x82183500, 0x000000ff, 0x9018058b, 0x0500001f, + 0x9018058e, 0x0500001d, 0x59cc0207, 0x82000500, + 0x0000ff00, 0x82000580, 0x00001900, 0x05000017, + 0x0505ff46, 0x59325809, 0x05000008, 0x592c0208, + 0x82000580, 0x00000139, 0x05fc07ea, 0x592c0408, + 0x8c00051e, 0x05fe07e7, 0x59340412, 0x800001c0, + 0x05000006, 0x80000040, 0x48026c12, 0x642a6006, + 0x645a6403, 0x1c01f000, 0x59340403, 0x82000580, + 0x000007fe, 0x0502000b, 0x59a8024c, 0x84000540, + 0x4803524c, 0x8c000506, 0x05000004, 0x4a035048, + 0x0000ffff, 0x050dfe2e, 0x05d9f8bf, 0x05fdf7d1, + 0x0519fa93, 0x417a7800, 0x05c1f895, 0x60143000, + 0x0519f9b0, 0x42000000, 0x001123f8, 0x0519fc24, + 0x59300429, 0x900005a1, 0x050c0602, 0x05fdf7c6, + 0x4933c857, 0x0501f844, 0x05020006, 0x60140800, + 0x05d9fbc4, 0x64066203, 0x640e6403, 0x05f1f1eb, + 0x60100800, 0x05d9fbbf, 0x0509fdb1, 0x05020007, + 0x4c580000, 0x6008b000, 0x0509fd97, 0x5c00b000, + 0x05fdfcb5, 0x0009f010, 0x05fdfcb3, 0x0519fa74, + 0x80000580, 0x05fdf650, 0x4933c857, 0x0501f82e, + 0x05020006, 0x60240800, 0x05d9fbae, 0x64066203, + 0x64166403, 0x05f1f1d5, 0x0519fa69, 0x60040000, + 0x05fdf645, 0x4933c857, 0x5930081d, 0x58040200, + 0x8c000500, 0x050c0388, 0x0501f81f, 0x05020006, + 0x602c0800, 0x05d9fb9f, 0x64066203, 0x64066403, + 0x05f1f1c6, 0x5930080a, 0x58040403, 0x82000580, + 0x000007fe, 0x05020004, 0x600c2800, 0x050dfb7f, + 0x0009f010, 0x0519fa52, 0x60040000, 0x05fdf62e, + 0x4933c857, 0x59cc0407, 0x90000583, 0x05020009, + 0x59cc0207, 0x82000500, 0x0000ff00, 0x82000d80, + 0x00002a00, 0x05000003, 0x82000d80, 0x00001e00, + 0x1c01f000, 0x4933c857, 0x90000541, 0x1c01f000, + 0x4933c857, 0x4d400000, 0x4c580000, 0x60028000, + 0x05c1fb2f, 0x59a8024c, 0x90000543, 0x4803524c, + 0x05d5f931, 0x0500000c, 0x59a81cd1, 0x8c0c0506, + 0x0502000f, 0x840c1d44, 0x480f54d1, 0x59cc0408, + 0x8c00051c, 0x05000004, 0x59a8124c, 0x84081558, + 0x480b524c, 0x0501f8c5, 0x05000005, 0x4d300000, + 0x4d340000, 0x4d440000, 0x0501f037, 0x59cc0408, + 0x8c00051c, 0x05000006, 0x59cc0800, 0x82040d00, + 0x00ffffff, 0x800409c0, 0x05000037, 0x0501f8ec, + 0x05000035, 0x4d300000, 0x4d340000, 0x4d440000, + 0x83240580, 0x001124b6, 0x0502002a, 0x59cc0408, + 0x8c00051e, 0x0502000c, 0x42000800, 0x001124b6, + 0x58040406, 0x8c000500, 0x05020007, 0x59cc0408, + 0x8c000518, 0x05000004, 0x59a8024c, 0x84000552, + 0x4803524c, 0x59240400, 0x8c00050a, 0x05020005, + 0x60aa8000, 0x61fe89ff, 0x60083000, 0x0519f932, + 0x60aa8000, 0x4d3c0000, 0x05d5f8fc, 0x05000008, + 0x600a7800, 0x5924100b, 0x82081500, 0x00001fff, + 0x41780800, 0x05c1fc20, 0x0501f003, 0x60027804, + 0x05bdff99, 0x5c027800, 0x42000000, 0x001123f8, + 0x0519fb87, 0x05d5f8ed, 0x05020002, 0x05c1f98a, + 0x05c1fbaa, 0x600a8000, 0x5c028800, 0x5c026800, + 0x5c026000, 0x050dfd23, 0x41780800, 0x59a804d1, + 0x8c00050a, 0x05000002, 0x60040800, 0x05d9fc5d, + 0x59cc0800, 0x82040d00, 0x00ffffff, 0x59240200, + 0xb0000566, 0x48024a00, 0x59cc0408, 0x8c00051c, + 0x05000003, 0x800409c0, 0x05000019, 0x48064805, + 0x812000f0, 0x80040540, 0x48026813, 0x812241c0, + 0x0502000f, 0x59cc0408, 0x8c000518, 0x05020007, + 0x599c0019, 0x8c000510, 0x05000009, 0x59a8024c, + 0x84000548, 0x4803524c, 0x4c040000, 0x60001802, + 0x60040000, 0x05ddfd37, 0x5c000800, 0x4927c857, + 0x83240580, 0x001124b6, 0x05020026, 0x59a8124c, + 0x59cc0408, 0x8c00051a, 0x05020005, 0x84081514, + 0x4a0370e5, 0x00000800, 0x0501f004, 0x84081554, + 0x4a0370e5, 0x00000c00, 0x480b524c, 0x48075040, + 0x80040110, 0x48035049, 0x48038881, 0x59a80a4c, + 0x84040d50, 0x59cc0013, 0x8c00053e, 0x05000003, + 0x8c000536, 0x05000004, 0x59cc0017, 0x8c000536, + 0x05020002, 0x84040d10, 0x4807524c, 0x4807544c, + 0x5924100b, 0x82081500, 0x00001fff, 0x8c040518, + 0x05000004, 0x59a804d1, 0x8c00050a, 0x05000026, + 0x59cc0408, 0x8c000518, 0x05000023, 0x59a8024c, + 0x8c000506, 0x05000012, 0x916c0583, 0x05000004, + 0x83240580, 0x001124b6, 0x0500001b, 0x59240400, + 0x8c00050c, 0x05020007, 0x4c040000, 0x60001802, + 0x60040000, 0x05ddfcfb, 0x5c000800, 0x0501f012, + 0x64866429, 0x0509fc6e, 0x0501f00f, 0x0519fc62, + 0x0502000d, 0x4c080000, 0x4c040000, 0x050dfa86, + 0x5c000800, 0x5c001000, 0x05020007, 0x59a8024c, + 0x8c000514, 0x05000004, 0x4c040000, 0x05c1fc0e, + 0x5c000800, 0xb0040510, 0xb0000590, 0x05000008, + 0x05ddff48, 0x05000006, 0x59cc0009, 0x4803505d, + 0x59cc000a, 0x4803505e, 0x0509f99b, 0x5c00b000, + 0x5c028000, 0x1c01f000, 0x4933c857, 0x59a8144c, + 0x82080580, 0x0000ffff, 0x0500000f, 0x4c080000, + 0x05ddff38, 0x5c001000, 0x05020012, 0x59cc0408, + 0x8c000518, 0x05000009, 0x8c08050a, 0x05000011, + 0x8c00051c, 0x05020008, 0x8c080518, 0x0502000d, + 0x80000580, 0x1c01f000, 0x8c080508, 0x05fe07fd, + 0x0501f008, 0x8c080518, 0x05fe07fa, 0x0501f005, + 0x90080530, 0x05020003, 0x8c080506, 0x05fe07f5, + 0x4a03544c, 0x0000ffff, 0x42000000, 0x0011233d, + 0x0519fadb, 0x60303000, 0x61fc19ff, 0x601c2000, + 0x4d200000, 0x417a4000, 0x05d1fd63, 0x5c024000, + 0x4d400000, 0x4d3c0000, 0x60043000, 0x0519f86a, + 0x60aa8000, 0x60027804, 0x05bdfedb, 0x5c028000, + 0x5c027800, 0x90000541, 0x1c01f000, 0x4933c857, + 0x4c580000, 0x59cc0408, 0x8c000518, 0x05020006, + 0x59a8044c, 0x82000580, 0x0000ffff, 0x0500002b, + 0x0501f015, 0x59a80049, 0x4803c857, 0x800001c0, + 0x05000026, 0x59341806, 0x480fc857, 0x800c19c0, + 0x05000022, 0x59cc1000, 0x59340013, 0x82000500, + 0x00ffffff, 0x0500001d, 0x82081500, 0x00ffffff, + 0x80080580, 0x05000004, 0x42000000, 0x001123d3, + 0x0501f014, 0x59341806, 0x480fc857, 0x800c19c0, + 0x05000012, 0x91cc140b, 0x6008b000, 0x91341c06, + 0x0501f8d8, 0x05000004, 0x42000000, 0x001123d4, + 0x0501f008, 0x91cc140d, 0x6008b000, 0x91341c08, + 0x0501f8d0, 0x05000005, 0x42000000, 0x001123d5, + 0x0519fa97, 0x90000541, 0x5c00b000, 0x1c01f000, + 0x4933c857, 0x59cc0206, 0x90000594, 0x05020015, + 0x59cc0407, 0x82000580, 0x00000800, 0x05020011, + 0x59cc0207, 0x8c00051a, 0x0500000d, 0x82000500, + 0x00000f00, 0x82000580, 0x00000100, 0x05020008, + 0x59cc020a, 0x8c000508, 0x05020003, 0x8c00050a, + 0x05000003, 0x80000580, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x4933c857, 0x4943c857, 0x493fc857, + 0x4c5c0000, 0x4d300000, 0x4d340000, 0x4d2c0000, + 0x4d380000, 0x4130b800, 0x42026000, 0x00115aa4, + 0x050dfc8e, 0x05021089, 0x8d3c0512, 0x05000004, + 0x405c0000, 0x81300580, 0x0500007f, 0x05f9fa07, + 0x0500007d, 0x59300407, 0x90000c92, 0x05021015, + 0x5932680a, 0x0c01f001, 0x0010a56d, 0x0010a509, + 0x0010a512, 0x0010a51c, 0x0010a509, 0x0010a512, + 0x0010a542, 0x0010a550, 0x0010a508, 0x0010a508, + 0x0010a556, 0x0010a508, 0x0010a508, 0x0010a508, + 0x0010a508, 0x0010a55f, 0x0010a560, 0x0010a560, + 0x05b1f90d, 0x59300403, 0xb0000583, 0x05080bed, + 0x0519f8b1, 0x0505fe47, 0x05bc0efc, 0x0505fe54, + 0x05fc0aed, 0x0501f058, 0x59325809, 0x0505fd3f, + 0x05000055, 0x49425a0a, 0x497a5c0d, 0x0001fba8, + 0x59300a29, 0x90040d83, 0x05040e27, 0x0501f04e, + 0x813669c0, 0x05b008f8, 0x050df9f0, 0x59300008, + 0x8c000500, 0x05000003, 0x05b5fbc5, 0x0501f004, + 0x59300203, 0x90000584, 0x05b40bc1, 0x59325809, + 0x0505fd2a, 0x05000040, 0x592c0208, 0x82000500, + 0x000000ff, 0x90000594, 0x05060e13, 0x0509ff28, + 0x0005fa1a, 0x05e5fa5f, 0x4a025a08, 0x00000103, + 0x59300402, 0x48025c0a, 0x592c040c, 0x8c000512, + 0x05000005, 0x4d2c0000, 0x592e580d, 0x05b1fc97, + 0x5c025800, 0x49425a0a, 0x497a580d, 0x0509fbc4, + 0x0001fba8, 0x0501f028, 0x59300203, 0x90000584, + 0x05b40ba3, 0x59325809, 0x0505fd0c, 0x05000022, + 0x49425a0a, 0x813669c0, 0x05160d31, 0x0509ff0c, + 0x0005fa1a, 0x0509fbb6, 0x0001fba8, 0x0501f01a, + 0x59300203, 0x90000591, 0x0502001b, 0x59300429, + 0x48026203, 0x0501f018, 0x59300203, 0x90000584, + 0x05b40b8f, 0x59325809, 0x0505fcf8, 0x0500000e, + 0x49425a0a, 0x0001fba8, 0x0501f00b, 0x0501f00a, + 0x59300203, 0x90000584, 0x05b40b85, 0x05b9fa17, + 0x59325809, 0x0505fced, 0x05000003, 0x49425a0a, + 0x0001fba8, 0x05f9fb7c, 0x8d3c051c, 0x05000002, 0x497a600a, 0x91326430, 0x41580000, 0x81300480, - 0x05fc1778, 0x0501f002, 0x41526000, 0x8d3c0518, - 0x05000011, 0x59a80898, 0x59a80099, 0x80040480, - 0x0500000d, 0x81300800, 0x41540000, 0x80040480, - 0x05021009, 0x5930000a, 0x800001c0, 0x05fe076e, - 0x59300203, 0x90000588, 0x05fe076b, 0x0515fd6d, - 0x05fdf769, 0x5c027000, 0x5c025800, 0x5c026800, - 0x5c026000, 0x5c00b800, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x480bc857, 0x480fc857, - 0x485bc857, 0x50080800, 0x500c0000, 0x80042580, - 0x05020007, 0x80081000, 0x800c1800, 0x8058b040, - 0x05fe07f9, 0x80000580, 0x1c01f000, 0x4803c857, - 0x4807c857, 0x480bc857, 0x480fc857, 0x80040480, - 0x05001004, 0x60040000, 0x90040d41, 0x1c01f000, - 0x41780000, 0x05fdf7fd, 0xb1380493, 0x05b21d77, - 0xb138048b, 0x05b01d75, 0x0c01f001, 0x0010a070, - 0x0010a070, 0x0010a070, 0x0010a070, 0x0010a06f, - 0x0010a06f, 0x0010a06f, 0x0010a070, 0x05b1fd6b, - 0x493bc857, 0x64366203, 0x493a6403, 0x42000800, - 0x80000000, 0x0005f6ab, 0x91380593, 0x0502000b, - 0x59300403, 0xb0000590, 0x05b20d60, 0x0509f823, - 0x05000005, 0x643a6203, 0x59a8005e, 0x48026205, - 0x1c01f000, 0x0005f7dc, 0x4933c857, 0x913805a7, - 0x05020027, 0x4933c857, 0x05f1fbe3, 0x4d3c0000, - 0x417a7800, 0x05c1faa3, 0x5c027800, 0x42000000, - 0x0010e454, 0x0515ff4f, 0x4d2c0000, 0x59325809, - 0x0505fc39, 0x492fc857, 0x0500000d, 0x0509fe1e, - 0x05e5fb74, 0x4a025a08, 0x00000103, 0x59300c02, - 0x48065c0a, 0x64a65a0a, 0x497a580d, 0x592c0c0c, - 0x84040d50, 0x48065c0c, 0x0001fb82, 0x5c025800, - 0x60543000, 0x41782800, 0x600c2000, 0x4d400000, - 0x4d440000, 0x59368c03, 0x60a68000, 0x0509fd6c, - 0x5c028800, 0x5c028000, 0x0005f7dc, 0x91380594, - 0x05020009, 0x59300403, 0xb0000c93, 0x05b21d2b, - 0xb0000480, 0x05b01d29, 0x4933c857, 0x4803c857, - 0x0c01f013, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05020007, 0x05f5f800, 0x05fa037a, 0x59300203, - 0x9000058e, 0x050405c3, 0x1c01f000, 0xb1380593, - 0x05000006, 0xb1380588, 0x05b20d18, 0x59300403, - 0xb0000590, 0x05b20d15, 0x1c01f000, 0x0010a0db, - 0x0010a0da, 0x0010a0da, 0x0010a0da, 0x0010a0da, - 0x0010a0da, 0x0010a0da, 0x0010a0da, 0x0010a0da, - 0x0010a0da, 0x0010a0da, 0x0010a0ed, 0x0010a0ed, - 0x0010a0ed, 0x0010a0ed, 0x0010a0da, 0x0010a0ed, - 0x0010a0da, 0x0010a0ed, 0x05b1fd00, 0x4933c857, - 0x05f1fb8d, 0x0505fbec, 0x000407dc, 0x4d2c0000, - 0x59325809, 0x0509fdd0, 0x05e5fb26, 0x4a025a08, + 0x05fc177a, 0x0501f002, 0x41526000, 0x8d3c0518, + 0x05000012, 0x59a8089b, 0x59a8009c, 0x80040480, + 0x0500000e, 0x81300800, 0x41540000, 0x80040480, + 0x0502100a, 0x5930000a, 0x800001c0, 0x05fe0770, + 0x59300203, 0x90000588, 0x05fe076d, 0x0515ff86, + 0x497a6009, 0x05fdf76a, 0x5c027000, 0x5c025800, + 0x5c026800, 0x5c026000, 0x5c00b800, 0x1c01f000, + 0x5c000000, 0x4c000000, 0x4803c857, 0x480bc857, + 0x480fc857, 0x485bc857, 0x50080800, 0x500c0000, + 0x80042580, 0x05020007, 0x80081000, 0x800c1800, + 0x8058b040, 0x05fe07f9, 0x80000580, 0x1c01f000, + 0x4803c857, 0x4807c857, 0x480bc857, 0x480fc857, + 0x80040480, 0x05001004, 0x60040000, 0x90040d41, + 0x1c01f000, 0x41780000, 0x05fdf7fd, 0xb1380493, + 0x05b2186d, 0xb138048b, 0x05b0186b, 0x0c01f001, + 0x0010a5b5, 0x0010a5b5, 0x0010a5b5, 0x0010a5b5, + 0x0010a5b4, 0x0010a5b4, 0x0010a5b4, 0x0010a5b5, + 0x05b1f861, 0x493bc857, 0x64366203, 0x493a6403, + 0x42000800, 0x80000000, 0x0005f6e2, 0x91380593, + 0x0502000b, 0x59300403, 0xb0000590, 0x05b20856, + 0x0509f876, 0x05000005, 0x643a6203, 0x59a80061, + 0x48026205, 0x1c01f000, 0x0009f010, 0x4933c857, + 0x913805a7, 0x05020027, 0x4933c857, 0x05f1fb5c, + 0x4d3c0000, 0x417a7800, 0x05bdfdf5, 0x5c027800, + 0x42000000, 0x001123f8, 0x0519f985, 0x4d2c0000, + 0x59325809, 0x0505fc7d, 0x492fc857, 0x0500000d, + 0x0509fe7f, 0x05e5f9b7, 0x4a025a08, 0x00000103, + 0x59300c02, 0x48065c0a, 0x64a65a0a, 0x497a580d, + 0x592c0c0c, 0x84040d50, 0x48065c0c, 0x0001fba8, + 0x5c025800, 0x60543000, 0x41782800, 0x600c2000, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60a68000, + 0x0509fdce, 0x5c028800, 0x5c028000, 0x0009f010, + 0x91380594, 0x05020009, 0x59300403, 0xb0000c93, + 0x05b21821, 0xb0000480, 0x05b0181f, 0x4933c857, + 0x4803c857, 0x0c01f012, 0xb13805a1, 0x05000003, + 0xb13805a0, 0x05020007, 0x05f1ff79, 0x05fa0367, + 0x59300203, 0x9000058e, 0x05040617, 0x1c01f000, + 0xb1380586, 0x05000004, 0xb1380585, 0x05000002, + 0x1c01f000, 0x493bc857, 0x05f9f35c, 0x0010a61f, + 0x0010a61e, 0x0010a61e, 0x0010a61e, 0x0010a61e, + 0x0010a61e, 0x0010a61e, 0x0010a61e, 0x0010a61e, + 0x0010a61e, 0x0010a61e, 0x0010a631, 0x0010a631, + 0x0010a631, 0x0010a631, 0x0010a61e, 0x0010a631, + 0x0010a61e, 0x0010a631, 0x05adfff7, 0x4933c857, + 0x05f1fb07, 0x0505fc31, 0x00080010, 0x4d2c0000, + 0x59325809, 0x0509fe32, 0x05e5f96a, 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, 0x641a5a0a, - 0x497a580d, 0x0001fb82, 0x5c025800, 0x0505fcbd, - 0x0005f7dc, 0x4933c857, 0x05f1fb7b, 0x0005f7dc, - 0x05b1fcea, 0x59300008, 0x8c000536, 0x05020004, - 0x5930001e, 0x800001c0, 0x050a0d0c, 0x497a6205, - 0x59300004, 0x8c00053e, 0x0502003b, 0x0509fdca, + 0x497a580d, 0x0001fba8, 0x5c025800, 0x0505fd12, + 0x0009f010, 0x4933c857, 0x05f1faf5, 0x0009f010, + 0x05adffe1, 0x59300008, 0x8c000536, 0x05020004, + 0x5930001e, 0x800001c0, 0x050a0d6f, 0x497a6205, + 0x59300004, 0x8c00053e, 0x0502003b, 0x0509fe37, 0x050200f0, 0x59325809, 0x592c0c0c, 0x59cc2808, 0x82141d00, 0x00000c00, 0x05000002, 0x59cc1809, 0x84040d58, 0x48065c0c, 0x82143500, 0x00008fff, 0x05020034, 0x59300008, 0x8c000536, 0x0500000f, 0x60303000, 0x60443800, 0x901409c0, 0x4806580d, - 0x4c5c0000, 0x592cb805, 0x0009f8b5, 0x4d2c0000, - 0x405e5800, 0x05b5f87d, 0x5c025800, 0x497a5805, + 0x4c5c0000, 0x592cb805, 0x0009f8ee, 0x4d2c0000, + 0x405e5800, 0x05b1fb70, 0x5c025800, 0x497a5805, 0x5c00b800, 0x0501f013, 0x59340200, 0x8c00050e, - 0x050200c6, 0x0009f8a5, 0x05020006, 0x64025a0a, - 0x59300013, 0x0509fd99, 0x80000d40, 0x05020a55, + 0x050200c6, 0x0009f8de, 0x05020006, 0x64025a0a, + 0x59300013, 0x0509fdfb, 0x80000d40, 0x05020a55, 0x4a025a08, 0x00000103, 0x4806580b, 0x480e580e, 0x901409c0, 0x4806580d, 0x59300c02, 0x48065c0a, - 0x0509fa31, 0x0509fa34, 0x0001fb82, 0x0509fd82, - 0x05ddf897, 0x59cc0008, 0x8c000518, 0x05060594, - 0x0005f7dc, 0x05f1ff84, 0x05fc07c5, 0x4d3c0000, - 0x600a7800, 0x0501fedc, 0x5c027800, 0x05fdf7c0, + 0x0509fa93, 0x0509fa96, 0x0001fba8, 0x0509fde4, + 0x05d9fe18, 0x59cc0008, 0x8c000518, 0x050605e9, + 0x0009f010, 0x05f1fefe, 0x05fc07c5, 0x4d3c0000, + 0x600a7800, 0x0501ff0a, 0x5c027800, 0x05fdf7c0, 0x4817c857, 0x480fc857, 0x82180500, 0x000000ff, 0x0500000d, 0x592c0208, 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, 0x900005a2, 0x05020006, - 0x592c040b, 0x800001c0, 0x05000003, 0x0509fbc6, - 0x0509f3fd, 0x82180d00, 0x00000c00, 0x05000007, + 0x592c040b, 0x800001c0, 0x05000003, 0x0509fc29, + 0x0509f460, 0x82180d00, 0x00000c00, 0x05000007, 0x59300008, 0x8c000536, 0x05020004, 0x59340200, 0x8c00050e, 0x0502007c, 0x64025a0a, 0x41782000, 0x8c180510, 0x05000009, 0x59cc200b, 0x801021c0, @@ -10370,58 +10707,58 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000028, 0x90183403, 0x80183104, 0x901c3c03, 0x801c3904, 0x9018340c, 0x901c3c11, 0x4c5c0000, 0x901401c0, 0x4802580d, 0x480e580e, 0x592cb805, - 0x4c040000, 0x0009f8b5, 0x5c000800, 0x4c500000, - 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe3a, + 0x4c040000, 0x0009f8ee, 0x5c000800, 0x4c500000, + 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe68, 0x5c00a800, 0x5c00a000, 0x4d2c0000, 0x405e5800, - 0x05b5f806, 0x5c025800, 0x497a5805, 0x5c00b800, + 0x05b1faf9, 0x5c025800, 0x497a5805, 0x5c00b800, 0x05fdf79c, 0x59300008, 0x8c000536, 0x05fc078a, 0x480e580e, 0x60303000, 0x60443800, 0x05fdf777, 0x59300008, 0x8c000536, 0x05000020, 0x05fdf7d7, - 0x4c040000, 0x4c0c0000, 0x4c140000, 0x0009f8a5, - 0x05020006, 0x64025a0a, 0x59300013, 0x0509fd17, + 0x4c040000, 0x4c0c0000, 0x4c140000, 0x0009f8de, + 0x05020006, 0x64025a0a, 0x59300013, 0x0509fd79, 0x80000d40, 0x050209d3, 0x5c002800, 0x5c001800, 0x4a025a08, 0x00000103, 0x4806580b, 0x480e580e, 0x901409c0, 0x4806580d, 0x5c000800, 0x4c500000, - 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe0e, + 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe3c, 0x5c00a800, 0x5c00a000, 0x59300008, 0x84000534, 0x48026008, 0x05fdf771, 0x4c040000, 0x4c0c0000, - 0x4c140000, 0x0009f8a5, 0x05020006, 0x64025a0a, - 0x59300013, 0x0509fcf9, 0x80000d40, 0x050209b5, + 0x4c140000, 0x0009f8de, 0x05020006, 0x64025a0a, + 0x59300013, 0x0509fd5b, 0x80000d40, 0x050209b5, 0x4806580b, 0x5c002800, 0x5c001800, 0x59301402, 0x480a5c0a, 0x480e580e, 0x901401c0, 0x4802580d, - 0x0509f991, 0x5c000800, 0x0501fda5, 0x0501fdd6, + 0x0509f9f3, 0x5c000800, 0x0501fdd3, 0x0501fe04, 0x05fdf75f, 0x592c020e, 0x8c000502, 0x05fc0783, 0x592c020c, 0x8c00050e, 0x05fe0780, 0x59300013, 0x800c0d80, 0x05fc077d, 0x4803c857, 0x480fc857, - 0x8c180514, 0x05040526, 0x80000540, 0x05fc0777, - 0x4807c856, 0x0505f522, 0x592c020e, 0x8c000502, + 0x8c180514, 0x0504057b, 0x80000540, 0x05fc0777, + 0x4807c856, 0x0505f577, 0x592c020e, 0x8c000502, 0x05fc0739, 0x59300013, 0x800001c0, 0x05fc0738, - 0x592c020c, 0x8c00050e, 0x05fe0735, 0x0505f518, + 0x592c020c, 0x8c00050e, 0x05fe0735, 0x0505f56d, 0x1c01f000, 0x59cc2006, 0x59cc2807, 0x0501f054, 0x0501f053, 0x1c01f000, 0x4933c857, 0x59300004, 0x8c00053e, 0x05020045, 0x59300008, 0x8c000536, - 0x05020004, 0x5930001e, 0x800001c0, 0x050a0c07, + 0x05020004, 0x5930001e, 0x800001c0, 0x050a0c6a, 0x497a6205, 0x59325809, 0x592c0c0c, 0x41782800, 0x41781800, 0x84040d58, 0x48065c0c, 0x41783000, 0x59300008, 0x8c000536, 0x0500000f, 0x901401c0, 0x4802580d, 0x60303000, 0x60443800, 0x4c5c0000, - 0x592cb805, 0x0009f8b5, 0x4d2c0000, 0x405e5800, - 0x05b1ff82, 0x5c025800, 0x497a5805, 0x5c00b800, + 0x592cb805, 0x0009f8ee, 0x4d2c0000, 0x405e5800, + 0x05b1fa75, 0x5c025800, 0x497a5805, 0x5c00b800, 0x0501f015, 0x59340200, 0x8c00050e, 0x05020018, - 0x0009f8a5, 0x05020007, 0x64025a0a, 0x59300013, - 0x0509fc9e, 0x80000d40, 0x4807c857, 0x05020959, + 0x0009f8de, 0x05020007, 0x64025a0a, 0x59300013, + 0x0509fd00, 0x80000d40, 0x4807c857, 0x05020959, 0x4a025a08, 0x00000103, 0x4806580b, 0x480e580e, 0x901409c0, 0x4806580d, 0x4933c857, 0x59300c02, - 0x48065c0a, 0x0509f934, 0x0509f937, 0x0001fb82, - 0x0509fc85, 0x05d9ff9a, 0x0005f7dc, 0x592c020e, + 0x48065c0a, 0x0509f996, 0x0509f999, 0x0001fba8, + 0x0509fce7, 0x05d9fd1b, 0x0009f010, 0x592c020e, 0x8c000502, 0x05fc07e7, 0x59300013, 0x4803c857, 0x800001c0, 0x05fc07e5, 0x592c020c, 0x8c00050e, - 0x05fe07e2, 0x0505f4ca, 0x05f1fe7f, 0x05fc07bb, + 0x05fe07e2, 0x0505f51f, 0x05f1fdf9, 0x05fc07bb, 0x4933c857, 0x1c01f000, 0x4933c857, 0x59300008, - 0x8c000536, 0x05b00b99, 0x0501f209, 0x4c5c0000, + 0x8c000536, 0x05ac0e90, 0x0501f209, 0x4c5c0000, 0x4c600000, 0x4010b800, 0x4014c000, 0x59325809, 0x59300008, 0x8c000536, 0x0502000b, 0x5930001e, - 0x800001c0, 0x4c140000, 0x050a0bb4, 0x5c002800, + 0x800001c0, 0x4c140000, 0x050a0c17, 0x5c002800, 0x592c020e, 0x8c000502, 0x05020033, 0x8c000500, 0x05000038, 0x640a6203, 0x650e6403, 0x405c0000, 0x592c0813, 0x80040c80, 0x40600000, 0x80040480, @@ -10430,99 +10767,99 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000007, 0x59300a23, 0x90040503, 0x4c140000, 0x0c01f826, 0x5c002800, 0x05000018, 0x485e6015, 0x48626013, 0x497a6205, 0x5c00c000, 0x5c00b800, - 0x4c140000, 0x0505fe2d, 0x5c002800, 0x05000007, - 0x4816602a, 0x4a02601c, 0x0010a278, 0x1c01f000, - 0x5930282a, 0x497a602a, 0x05b5feaf, 0x0502000c, - 0x59300804, 0x0005f69d, 0x4c140000, 0x05f1fe3a, + 0x4c140000, 0x0505fe81, 0x5c002800, 0x05000007, + 0x4816602a, 0x4a02601c, 0x0010a7bc, 0x1c01f000, + 0x5930282a, 0x497a602a, 0x05b5fa0a, 0x0502000c, + 0x59300804, 0x0005f6d4, 0x4c140000, 0x05f1fdb4, 0x5c002800, 0x05fc07e1, 0x5c00c000, 0x5c00b800, - 0x05f9f1b0, 0x5c00c000, 0x5c00b800, 0x4933c857, + 0x05f9f19e, 0x5c00c000, 0x5c00b800, 0x4933c857, 0x1c01f000, 0x4807c857, 0x4004c000, 0x05fdf7d2, - 0x4803c857, 0x05fdf7f5, 0x0010a292, 0x0010a297, - 0x0010a29c, 0x0010a29c, 0x59300224, 0x480350d7, - 0x90000408, 0x480350d6, 0x0501f00a, 0x59300224, - 0x480350d6, 0x90000408, 0x480350d7, 0x0501f005, - 0x59300224, 0x90000408, 0x480350d6, 0x480350d7, - 0x405c1000, 0x41780800, 0x59a800d6, 0x05edfceb, + 0x4803c857, 0x05fdf7f5, 0x0010a7d6, 0x0010a7db, + 0x0010a7e0, 0x0010a7e0, 0x59300224, 0x480350dc, + 0x90000408, 0x480350db, 0x0501f00a, 0x59300224, + 0x480350db, 0x90000408, 0x480350dc, 0x0501f005, + 0x59300224, 0x90000408, 0x480350db, 0x480350dc, + 0x405c1000, 0x41780800, 0x59a800db, 0x05edfc60, 0x800409c0, 0x05020052, 0x40085000, 0x592c1001, 0x800811c0, 0x0500004e, 0x58080208, 0x82000500, 0x000000ff, 0xb000058a, 0x05020049, 0x48281005, - 0x59a800d6, 0x40601000, 0x41780800, 0x4c280000, - 0x05edfcda, 0x5c005000, 0x800409c0, 0x05020038, - 0x40041800, 0x59a800d7, 0x59300804, 0x8c040530, + 0x59a800db, 0x40601000, 0x41780800, 0x4c280000, + 0x05edfc4f, 0x5c005000, 0x800409c0, 0x05020038, + 0x40041800, 0x59a800dc, 0x59300804, 0x8c040530, 0x05000005, 0x59300827, 0x800800c6, 0x48000806, 0x59300224, 0x800c1c00, 0x80081040, 0x05fe07fe, - 0x480e602c, 0x592c4801, 0x802449c0, 0x05b00b13, + 0x480e602c, 0x592c4801, 0x802449c0, 0x05ac0e0a, 0x58240a09, 0x592c1815, 0x59303023, 0x8c180506, 0x05000003, 0x40280000, 0x80040c00, 0x800400e0, 0x80040540, 0x48026021, 0x8c18050a, 0x05020003, 0x40280000, 0x800c1c00, 0x480e601f, 0x59300804, 0x8c040530, 0x0500000e, 0x4c280000, 0x592c1001, - 0x59306827, 0x592c5a0e, 0x0005f9a1, 0x5c005000, - 0x802851c0, 0x05ba0b9e, 0x05020015, 0x59300827, + 0x59306827, 0x592c5a0e, 0x0005f9c8, 0x5c005000, + 0x802851c0, 0x05b60ecb, 0x05020015, 0x59300827, 0x58040006, 0x49780806, 0x48000810, 0x59300224, 0x59303023, 0x8c18050e, 0x05000002, 0x80000580, 0x48026424, 0x90000541, 0x1c01f000, 0x592c1813, 0x805c0418, 0x800c0580, 0x05fc07c6, 0x4933c857, 0x485fc857, 0x4863c857, 0x480fc857, 0x80000580, 0x1c01f000, 0xb1380498, 0x05021063, 0xb1380480, - 0x05001002, 0x0c01f002, 0x1c01f000, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a317, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a317, 0x0010a317, - 0x0010a317, 0x0010a318, 0x0010a317, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a322, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a317, 0x0010a34d, - 0x0010a317, 0x0010a317, 0x0010a317, 0x05b1fac3, - 0x4933c857, 0x05f1fc30, 0x640a6203, 0x59a8005e, + 0x05001002, 0x0c01f002, 0x1c01f000, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x0010a85b, + 0x0010a85b, 0x0010a85c, 0x0010a85b, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a866, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x0010a891, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x05adfdba, + 0x4933c857, 0x05f1fbaa, 0x640a6203, 0x59a80061, 0x48026205, 0x59300013, 0x59300817, 0x80040c80, - 0x48066017, 0x05f1f12b, 0x4933c857, 0x05f1f929, - 0x4d3c0000, 0x417a7800, 0x05c1f806, 0x5c027800, - 0x42000000, 0x0010e454, 0x0515fcb2, 0x0505f99e, - 0x05000010, 0x4d2c0000, 0x59325809, 0x0509fb82, - 0x05e5f8d8, 0x4a025a08, 0x00000103, 0x59300402, + 0x48066017, 0x05f1f0a5, 0x4933c857, 0x05f1f8a3, + 0x4d3c0000, 0x417a7800, 0x05bdfb59, 0x5c027800, + 0x42000000, 0x001123f8, 0x0515fee9, 0x0505f9e3, + 0x05000010, 0x4d2c0000, 0x59325809, 0x0509fbe4, + 0x05e1ff1c, 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, 0x64a65a0a, 0x497a580d, 0x592c0c0c, - 0x84040d50, 0x48065c0c, 0x0001fb82, 0x5c025800, + 0x84040d50, 0x48065c0c, 0x0001fba8, 0x5c025800, 0x60503000, 0x41782800, 0x4d400000, 0x4d440000, - 0x59368c03, 0x60082000, 0x60a68000, 0x0509fad0, + 0x59368c03, 0x60082000, 0x60a68000, 0x0509fb33, 0x5c028800, 0x5c028000, 0x59300008, 0x8c000536, - 0x05000004, 0x59300004, 0x8c000516, 0x05f80085, - 0x0005f7dc, 0x4933c857, 0x59cc0a04, 0x48066202, + 0x05000004, 0x59300004, 0x8c000516, 0x05f80056, + 0x0009f010, 0x4933c857, 0x59cc0a04, 0x48066202, 0x59300809, 0x4978080d, 0x4978080e, 0x5804140c, 0x84081558, 0x48080c0c, 0x59300008, 0x8c000536, 0x05000004, 0x5804040c, 0x84000542, 0x48000c0c, - 0x1c01f000, 0xb13805a1, 0x05020014, 0x05f1f9b4, - 0x0501fdd0, 0x0502000c, 0x05f1fe9a, 0x05fc07ff, + 0x1c01f000, 0xb13805a1, 0x05020014, 0x05f1f92e, + 0x0501fe06, 0x0502000c, 0x05f1fe14, 0x05fc07ff, 0x811800ca, 0x81c80c00, 0x58040138, 0x59cc0a03, - 0x80000040, 0x80040580, 0x05020007, 0x05f1fe8b, + 0x80000040, 0x80040580, 0x05020007, 0x05f1fe05, 0x05000005, 0x59300c16, 0x84040d44, 0x48066416, - 0x497a6205, 0x05f1f193, 0xb13805a0, 0x05fe07fe, + 0x497a6205, 0x05f1f10d, 0xb13805a0, 0x05fe07fe, 0x59cc0002, 0x8c000526, 0x05fe07e9, 0x05fdf7fa, 0x4807c857, 0x8c04053e, 0x05020024, 0x497a5a0a, - 0x5930002b, 0x80000540, 0x05000019, 0x0509ff19, + 0x5930002b, 0x80000540, 0x05000019, 0x050df88b, 0x05000021, 0x497a5a0a, 0x4c040000, 0x4c080000, 0x4c0c0000, 0x4c100000, 0x4c140000, 0x40002800, 0x58141003, 0x40040000, 0x80081480, 0x48082803, - 0x40140000, 0x05b5fb83, 0x5c002800, 0x5c002000, + 0x40140000, 0x05b1fedd, 0x5c002800, 0x5c002000, 0x5c001800, 0x5c001000, 0x5c000800, 0x592c020a, 0x80000540, 0x05020008, 0x0501f005, 0x592c040c, 0x8c00051c, 0x05000002, 0x592c0806, 0x4807c857, 0x64565a0a, 0x1c01f000, 0x5930002b, 0x80000540, 0x05000007, 0x64465a0a, 0x5930002b, 0x4c040000, - 0x05b5fb6c, 0x5c000800, 0x05fdf7f7, 0x4807c856, + 0x05b1fec6, 0x5c000800, 0x05fdf7f7, 0x4807c856, 0x641e5a0a, 0x1c01f000, 0xb1380498, 0x05001006, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05b20a2b, + 0xb13805a1, 0x05000003, 0xb13805a0, 0x05ae0d22, 0x1c01f000, 0xb1380480, 0x05001004, 0x4d2c0000, - 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010a3cf, - 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, - 0x0010a3d1, 0x0010a3d0, 0x0010a3cf, 0x0010a44b, - 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, - 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, - 0x0010a3cf, 0x0010a3cf, 0x0010a52b, 0x0010a55c, - 0x0010a53b, 0x0010a3d0, 0x0010a565, 0x05b1fa0b, - 0x1c01f000, 0x5930001e, 0x800001c0, 0x050a0a2f, + 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010a913, + 0x0010a913, 0x0010a913, 0x0010a913, 0x0010a913, + 0x0010a915, 0x0010a914, 0x0010a913, 0x0010a98f, + 0x0010a913, 0x0010a913, 0x0010a913, 0x0010a913, + 0x0010a913, 0x0010a913, 0x0010a913, 0x0010a913, + 0x0010a913, 0x0010a913, 0x0010aa80, 0x0010aab1, + 0x0010aa90, 0x0010a914, 0x0010aaba, 0x05adfd02, + 0x1c01f000, 0x5930001e, 0x800001c0, 0x050a0a92, 0x59300008, 0x8c00050e, 0x05000074, 0x8c000500, 0x05000066, 0x8c00051c, 0x05000008, 0x84000500, 0x48026008, 0x59325809, 0x592c3c0c, 0x841c3d58, - 0x481e5c0c, 0x0009f03f, 0x59325809, 0x592c3c0c, + 0x481e5c0c, 0x0009f078, 0x59325809, 0x592c3c0c, 0x841c3d58, 0x59300008, 0x8c00051c, 0x05fe07f4, 0x481e5c0c, 0x60140000, 0x40000000, 0x80000040, 0x05fe07fe, 0x59300008, 0x8c00051c, 0x05fe07ec, @@ -10530,751 +10867,772 @@ static const uint32_t isp_2500_risc_code[] = { 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, 0x900005a2, 0x0502000a, 0x497a580f, 0x82040500, 0x000000ff, 0x05000006, 0x592c040b, 0x800001c0, - 0x05000003, 0x0509f910, 0x05b5f402, 0x900421c0, + 0x05000003, 0x0509f973, 0x05b1f75c, 0x900421c0, 0x4812580d, 0x41782000, 0x82040500, 0x00000c00, 0x05000002, 0x59cc2009, 0x82043500, 0x00000fff, 0x0502001e, 0x481e5c0c, 0x64025a0a, 0x801831c0, - 0x05b403f4, 0x41782000, 0x8c180510, 0x05000002, + 0x05b0074e, 0x41782000, 0x8c180510, 0x05000002, 0x59cc200b, 0x48125810, 0x41780000, 0x8c180512, 0x05000002, 0x59cc000a, 0x4802580f, 0x80100c00, - 0x05b019be, 0x05b403e7, 0x9004149d, 0x05021009, + 0x05ac1cb5, 0x05b00741, 0x9004149d, 0x05021009, 0x4c500000, 0x4c540000, 0x91cca40c, 0x912cac11, - 0x0501fb9d, 0x5c00a800, 0x5c00a000, 0x05b5f3dd, - 0x0501fb4b, 0x05b5f3db, 0x412c7800, 0x05b1fd57, - 0x05b009ae, 0x492c780d, 0x841c3d52, 0x481c7c0c, + 0x0501fbcb, 0x5c00a800, 0x5c00a000, 0x05b1f737, + 0x0501fb79, 0x05b1f735, 0x412c7800, 0x05b1f84a, + 0x05ac0ca5, 0x492c780d, 0x841c3d52, 0x481c7c0c, 0x4a025a08, 0x00000103, 0x4812580e, 0x900401c0, 0x4802580d, 0x583c0408, 0x583c1009, 0x583c220c, 0x48025c08, 0x480a5809, 0x48125a0c, 0x583c0002, 0x48025802, 0x05fdf7d0, 0x8c000524, 0x05fc079c, 0x59325809, 0x4c000000, 0x592c040c, 0x8c00051c, 0x5c000000, 0x05020003, 0x4a026013, 0xffffffff, - 0x84000524, 0x05fdf792, 0x1c01f000, 0x59a8005e, + 0x84000524, 0x05fdf792, 0x1c01f000, 0x59a80061, 0x48026205, 0x59325809, 0x640a6203, 0x592c240c, 0x59300808, 0x4933c857, 0x4807c857, 0x592c0208, 0x82000500, 0x000000ff, 0xb0001db5, 0x05020006, 0x592c1a0e, 0x8c0c0506, 0x05000003, 0x64025a0a, 0x0501f00a, 0xb0000588, 0x05000003, 0x900005a2, - 0x05020003, 0x8c100500, 0x050a00e7, 0x64025a0a, - 0x8c04051e, 0x05000044, 0x41780800, 0x497a580d, + 0x05020003, 0x8c100500, 0x050a014a, 0x64025a0a, + 0x8c04051e, 0x05000055, 0x41780800, 0x497a580d, 0x592c1c0d, 0x59300008, 0x8c00052c, 0x05000003, 0x4a026013, 0x7fffffff, 0x8c000536, 0x05000012, 0x41782800, 0x60303000, 0x60443800, 0x4c0c0000, - 0x4c100000, 0x4c5c0000, 0x592cb805, 0x0009f8b5, - 0x4d2c0000, 0x405e5800, 0x05b1fd18, 0x5c025800, + 0x4c100000, 0x4c5c0000, 0x592cb805, 0x0009f8ee, + 0x4d2c0000, 0x405e5800, 0x05b1f80b, 0x5c025800, 0x497a5805, 0x5c00b800, 0x5c002000, 0x5c001800, - 0x0501f017, 0x59300013, 0x59341200, 0x497a6205, - 0x8c08050e, 0x0502006e, 0x4807c857, 0x40041000, - 0x0509fa32, 0x480a580e, 0x80000d40, 0x05fe0eed, - 0x59300402, 0x48025c0a, 0x4806580b, 0x4a025a08, - 0x00000103, 0x4c040000, 0x592c0a0c, 0x8c040512, - 0x05000002, 0x64325a0a, 0x5c000800, 0x4c040000, - 0x4c0c0000, 0x4c100000, 0x0505fec3, 0x0509fa16, - 0x5c002000, 0x5c001800, 0x5c000800, 0x8c100512, - 0x05020017, 0x4c0c0000, 0x0505febf, 0x0001fb82, - 0x05d9fd23, 0x5c001800, 0x8c0c0518, 0x000407dc, - 0x0505f21f, 0x4813c857, 0x8c100518, 0x05000046, - 0x41780800, 0x592c1c0d, 0x820c0580, 0x00001000, - 0x05fc07b9, 0x8c100512, 0x05fc07b7, 0x592c780d, - 0x583c080e, 0x583c1c0d, 0x05fdf7b3, 0x4807c857, - 0x592c780d, 0x59300402, 0x592c1408, 0x8c08051e, - 0x0502000e, 0x592c120a, 0x48007c0a, 0x4804780b, - 0x48087a0a, 0x84102512, 0x48107c0c, 0x4c0c0000, - 0x4c3c0000, 0x05b1fcd6, 0x5c007800, 0x403e5800, - 0x0501fadd, 0x05fdf7db, 0x48025c0a, 0x4806580b, - 0x583c0810, 0x583c000f, 0x80040c00, 0x9004149d, - 0x05001005, 0x583c1001, 0x480a5801, 0x49787801, - 0x60700800, 0x90040c14, 0x4c0c0000, 0x4c500000, - 0x4c540000, 0x903ca40c, 0x912cac0c, 0x4c100000, - 0x4c3c0000, 0x0501fae4, 0x5c007800, 0x5c002000, - 0x5c00a800, 0x5c00a000, 0x84102512, 0x48125c0c, - 0x403e5800, 0x05b1fcb6, 0x0505fe77, 0x42034000, - 0x0010dceb, 0x59a1d806, 0x80edd9c0, 0x05b008ef, - 0x48efc857, 0x58ec0009, 0x4803c857, 0x0801f800, - 0x05fdf7b4, 0x4933c857, 0x1c01f000, 0x59301416, - 0x480bc857, 0x8c08051c, 0x0502000e, 0x80000540, - 0x4803c857, 0x05fc078d, 0x80042c80, 0x05fe178b, - 0x8c080514, 0x05020005, 0x592c0813, 0x4807c857, - 0x80040480, 0x48026018, 0x8408155c, 0x480a6416, - 0x59301008, 0x8408151e, 0x480a6008, 0x4c100000, - 0x4c3c0000, 0x4d400000, 0x592e820a, 0x64065a0a, - 0x0505fe51, 0x49425a0a, 0x5c028000, 0x5c007800, - 0x5c002000, 0x497a580d, 0x8c100512, 0x05000005, - 0x4d2c0000, 0x403e5800, 0x05b1fc85, 0x5c025800, - 0x82102500, 0xffffedff, 0x48125c0c, 0x59301006, - 0x800811c0, 0x050401e6, 0x59a8005e, 0x80080480, - 0x050611e3, 0x0509f990, 0x05e1fee6, 0x4a025a08, - 0x00000103, 0x641a5a0a, 0x497a5c0d, 0x492fc857, - 0x0001fb82, 0x05d9fc9e, 0x0005f7dc, 0x59325809, - 0x592c040c, 0x8c000518, 0x05000003, 0x412df800, - 0x05b5f2ec, 0x592c0208, 0x82000500, 0x000000ff, - 0xb0001db5, 0x05020005, 0x592c1a0e, 0x8c0c0506, - 0x05000002, 0x05fdf712, 0x1c01f000, 0x4933c857, - 0x59325809, 0x497a580d, 0x64025a0a, 0x4a025a08, - 0x00000103, 0x59300813, 0x4807c857, 0x800409c0, - 0x0502000a, 0x4806580b, 0x59300c02, 0x48065c0a, - 0x0505fe15, 0x0509f968, 0x0505fe17, 0x0001fb82, - 0x05d9fc7b, 0x0005f7dc, 0x59340200, 0x8c00050e, - 0x05020007, 0x59300013, 0x0509f968, 0x80000d40, - 0x05fdfe24, 0x4806580b, 0x05fdf7f0, 0x592c020c, - 0x8c00050e, 0x05fe07f8, 0x4933c857, 0x0505f1a8, - 0x4933c857, 0x59325809, 0x812e59c0, 0x05b0087b, - 0x592c020e, 0x8c000502, 0x05b00878, 0x640a6006, - 0x1c01f000, 0x5930001e, 0x800001c0, 0x050a089b, - 0x59300008, 0x4933c857, 0x4803c857, 0x8c00050e, - 0x05000034, 0x8c000500, 0x05000026, 0x8c00051c, - 0x05000009, 0x84000500, 0x48026008, 0x59325809, - 0x592c3c0c, 0x481fc857, 0x841c3d58, 0x481e5c0c, - 0x0009f03f, 0x59325809, 0x592c3c0c, 0x841c3d58, - 0x59300008, 0x8c00051c, 0x05fe07f3, 0x481e5c0c, - 0x60140000, 0x40000000, 0x80000040, 0x05fe07fe, - 0x59300008, 0x8c00051c, 0x05fe07eb, 0x592c0208, - 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, - 0x900005a2, 0x05020003, 0x497a580f, 0x0501f002, - 0x497a580d, 0x481e5c0c, 0x64025a0a, 0x05b5f271, - 0x8c000524, 0x05fc07dc, 0x59325809, 0x4c000000, - 0x592c040c, 0x8c00051c, 0x5c000000, 0x05020003, - 0x4a026013, 0xffffffff, 0x84000524, 0x05fdf7d2, - 0x1c01f000, 0x4933c857, 0x41780800, 0xb1380498, - 0x05021009, 0xb1380480, 0x05001007, 0x4d2c0000, - 0x59325809, 0x812e59c0, 0x0c020805, 0x5c025800, - 0x0005f7dc, 0x493bc857, 0x1c01f000, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c8, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5cb, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x05b1f813, - 0x59cc0808, 0x497a580b, 0x4807c857, 0x59300402, - 0x48025c0a, 0x4a025a08, 0x00000103, 0x900401c0, - 0x4802580d, 0x64025a0a, 0x800409c0, 0x00000382, - 0x59cc0009, 0x4802580e, 0x82042500, 0x00000100, - 0x05000002, 0x59cc200b, 0x48125810, 0x82040500, - 0x00000200, 0x05000002, 0x59cc000a, 0x4802580f, - 0x80100c00, 0x05ac1ff9, 0x00000382, 0x9004149d, - 0x05001005, 0x592c0408, 0x8c00051e, 0x0500000a, - 0x60700800, 0x4c500000, 0x4c540000, 0x91cca40c, - 0x912cac11, 0x0501f9d4, 0x5c00a800, 0x5c00a000, - 0x0001f382, 0x0501f982, 0x0501f1b3, 0x83380480, - 0x00000093, 0x05ae1fe5, 0x83380480, 0x00000085, - 0x05ac1fe2, 0x0c01f001, 0x0010a608, 0x0010a607, - 0x0010a607, 0x0010a60d, 0x0010a607, 0x0010a607, - 0x0010a607, 0x0010a607, 0x0010a607, 0x0010a607, - 0x0010a607, 0x0010a607, 0x0010a607, 0x05adffd3, - 0x64066203, 0x493a6403, 0x42000800, 0x80000040, - 0x0005f6ab, 0x83300580, 0x00111a70, 0x05ae0fcb, - 0x4933c857, 0x59cc1404, 0x0505fb47, 0x0500002c, - 0x591c0203, 0x90000580, 0x05000029, 0x591c000a, - 0x81340580, 0x05020026, 0x59cc1204, 0x82080580, - 0x0000ffff, 0x05000007, 0x591c0202, 0x82000d80, - 0x0000ffff, 0x05000003, 0x80080580, 0x0502001c, - 0x4d300000, 0x4d1c0000, 0x411e6000, 0x0501f9e5, - 0x5c023800, 0x5c026000, 0x05000013, 0x59cc0005, - 0x8c000500, 0x05020003, 0x0501f99a, 0x0501f002, - 0x640a3a03, 0x4a026403, 0x00000086, 0x59cc0005, - 0x8c000500, 0x0500000c, 0x591c0416, 0x8400055a, - 0x48023c16, 0x59300416, 0x8400055a, 0x48026416, - 0x0501f005, 0x0501f9c2, 0x05fc07ed, 0x4a026403, - 0x00000087, 0x4d2c0000, 0x0511ff81, 0x05d9fecc, - 0x5c025800, 0x59340200, 0x8c00050e, 0x0500000b, - 0x59cc1404, 0x0505fb10, 0x05000008, 0x591c0416, - 0x8c00051a, 0x05000005, 0x4d300000, 0x411e6000, - 0x0505f8c5, 0x5c026000, 0x1c01f000, 0x91380593, - 0x0502000a, 0x59300403, 0x4803c857, 0x82000d80, - 0x00000086, 0x05000015, 0x82000d80, 0x00000087, - 0x05ae0f7e, 0x0501f011, 0x913805a7, 0x05000003, - 0x91380594, 0x05ae0f79, 0x493bc857, 0x05edfe06, - 0x0501fe65, 0x05f4056b, 0x4d2c0000, 0x59325809, - 0x0001fb82, 0x59300a29, 0x90040d83, 0x05000f3d, - 0x5c025800, 0x05f5f563, 0x4933c857, 0x0505fa2f, - 0x05f60560, 0x0005f7dc, 0x91380593, 0x05020006, - 0x59300403, 0x4803c857, 0x82000480, 0x00000085, - 0x0c01f04c, 0x913805a7, 0x05020040, 0x4933c857, - 0x05edfded, 0x59300416, 0x8c00051a, 0x05020002, - 0x0005f7dc, 0x4d3c0000, 0x417a7800, 0x05bdfca9, - 0x5c027800, 0x60543000, 0x41782800, 0x600c2000, - 0x60a68000, 0x4d400000, 0x4d440000, 0x59368c03, - 0x0505ff87, 0x5c028800, 0x5c028000, 0x42000000, - 0x0010e454, 0x0515f94b, 0x0501fe37, 0x000407dc, - 0x4d2c0000, 0x59325809, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000594, 0x05020f0e, 0x0509f816, - 0x05e1fd6c, 0x4a025a08, 0x00000103, 0x59300402, - 0x48025c0a, 0x497a580d, 0x49425a0a, 0x0001fb82, - 0x5c025800, 0x0005f7dc, 0xb13805a1, 0x05000009, - 0xb13805a0, 0x05000007, 0x83380580, 0x00000089, - 0x05000004, 0x83380580, 0x0000008a, 0x05f60585, - 0x05f1fa09, 0x05f60583, 0x59300a03, 0x9004058e, - 0x050007bd, 0x9004058a, 0x0500003c, 0x9004058c, - 0x0500003a, 0x05adff21, 0x91380594, 0x05fe07eb, - 0x4933c857, 0x05edfdac, 0x59300416, 0x8c00051a, - 0x05020002, 0x0005f7dc, 0x601a8000, 0x05fdf7cf, - 0x0010a6d2, 0x0010a6d1, 0x0010a6d1, 0x0010a6d1, - 0x0010a6d1, 0x0010a6d1, 0x0010a6e2, 0x0010a6d1, - 0x0010a6d1, 0x0010a6d1, 0x0010a6d1, 0x0010a6d1, - 0x0010a6d1, 0x05adff09, 0x4933c857, 0x0505f9cb, - 0x0500000a, 0x643a6203, 0x59a8005e, 0x48026205, - 0x59300416, 0x8c00051a, 0x05020003, 0x59a8005c, - 0x48026006, 0x1c01f000, 0x59a8005c, 0x48026006, - 0x642a6203, 0x1c01f000, 0x4933c857, 0x0505f9bb, - 0x0500000a, 0x643a6203, 0x59a8005e, 0x48026205, - 0x59300416, 0x8c00051a, 0x05020003, 0x59a8005c, - 0x48026006, 0x1c01f000, 0x59a8005c, 0x48026006, - 0x64326203, 0x1c01f000, 0x5932680a, 0x83380580, - 0x00000089, 0x05000007, 0x83380580, 0x0000008a, - 0x0500002c, 0x4933c857, 0x493bc857, 0x05f5f539, - 0x4933c857, 0x59325809, 0x59300416, 0x8c00051a, - 0x0500000b, 0x59300229, 0x90000583, 0x05ae0ed7, - 0x640e6407, 0x59300429, 0x48026203, 0x59340200, - 0x8c00050e, 0x0506000c, 0x1c01f000, 0x59300a29, - 0x90040583, 0x05020007, 0x0501fdbb, 0x0500000d, - 0x0001fb82, 0x05d9fab6, 0x497a6009, 0x0501f009, - 0x59300229, 0x90000581, 0x05020006, 0x59300c18, - 0x900405b9, 0x05000019, 0x900405b5, 0x05000017, - 0x59cc0c07, 0x4806641b, 0x59cc0a07, 0x4806621b, - 0x59300203, 0x48026429, 0x64466203, 0x05f5f4ad, - 0x4933c857, 0x59300416, 0x8c00051a, 0x000607dc, - 0x59300229, 0x90000581, 0x0502003f, 0x59300c18, - 0x900405b5, 0x05000005, 0x9004059e, 0x05000003, - 0x900405b9, 0x05020038, 0x4933c857, 0x4c5c0000, - 0x4c600000, 0x4d1c0000, 0x4130b800, 0x4004c000, - 0x0505f9de, 0x0502002b, 0x906005b5, 0x05020004, - 0x591c0c16, 0x8c040502, 0x05000026, 0x05f5fcc4, - 0x05000024, 0x491fc857, 0x4933c857, 0x906005b5, - 0x05000003, 0x906005b9, 0x05020002, 0x4932381e, - 0x585c081d, 0x4806601d, 0x48626403, 0x64066203, - 0x64066407, 0x585c080a, 0x4807c857, 0x4806600a, - 0x585c0c17, 0x4807c857, 0x48066417, 0x585c0a17, - 0x4807c857, 0x48066217, 0x585c0a18, 0x4807c857, - 0x48066218, 0x585c0c1b, 0x4807c857, 0x4806641b, - 0x585c0a1b, 0x4807c857, 0x4806621b, 0x491e602a, - 0x0505f92f, 0x42000800, 0x80000040, 0x0005feab, - 0x405e6000, 0x5c023800, 0x5c00c000, 0x5c00b800, - 0x0005f7dc, 0x0501fd60, 0x05000008, 0x4d2c0000, - 0x59325809, 0x0001fb82, 0x59300229, 0x90000583, - 0x05d80a57, 0x5c025800, 0x0005f7dc, 0x4803c856, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c500000, - 0x4c540000, 0x412cb800, 0x4d2c0000, 0x6004c000, - 0x82040480, 0x00000101, 0x05001002, 0x60000802, - 0x4004c800, 0x60700800, 0x91cca40c, 0x912cac11, - 0x0501f83d, 0x9064cc9c, 0x592e5801, 0x812e59c0, - 0x05b20a13, 0x05b1f9f9, 0x05000011, 0x8060c000, - 0x4a025808, 0x00000110, 0x492cb801, 0x90640cbd, - 0x05021005, 0x40640800, 0x912cac09, 0x0501f82e, - 0x0501f007, 0x9064ccbc, 0x60f00800, 0x412cb800, - 0x912cac09, 0x0501f828, 0x05fdf7ef, 0x5c025800, - 0x8460c1c0, 0x9060c543, 0x48625a08, 0x5c00a800, - 0x5c00a000, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x492fc857, 0x812e59c0, 0x05000012, - 0x592c2802, 0x4d2c0000, 0x4c3c0000, 0x592c7801, - 0x803c79c0, 0x05000009, 0x497a5801, 0x4c140000, - 0x4c3c0000, 0x0001fb82, 0x5c025800, 0x5c002800, - 0x48165802, 0x05fdf7f6, 0x5c007800, 0x0001fb82, - 0x5c025800, 0x1c01f000, 0x4803c856, 0x4c580000, - 0x90040403, 0x8000b104, 0x0515f8e9, 0x5c00b000, - 0x1c01f000, 0x4803c856, 0x4c580000, 0x90040c03, - 0x8004b104, 0x0515f8e2, 0x5c00b000, 0x1c01f000, - 0x591c0c07, 0x90040583, 0x05000005, 0x90040582, - 0x05000003, 0x9004058a, 0x05020022, 0x4d300000, - 0x4d2c0000, 0x411e6000, 0x59325809, 0x0501fcf6, - 0x05000019, 0x59300c07, 0x9004058a, 0x0500001a, - 0x90040583, 0x05020007, 0x592c0a08, 0x82040d00, - 0x000000ff, 0x90040d94, 0x05000002, 0x640e6229, - 0x0501f814, 0x4d400000, 0x604e8000, 0x592c0a0c, - 0x84040d54, 0x05d9fe46, 0x5c028000, 0x0505fb76, - 0x0505fec9, 0x0001fb82, 0x59300229, 0x90000583, - 0x05000dbc, 0x05f5fbe3, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x644e5a0a, 0x642a6229, 0x05fdf7f4, - 0x592c040c, 0x8c000512, 0x05000008, 0x84000512, - 0x48025c0c, 0x4d2c0000, 0x592e580d, 0x05b1f9a0, - 0x5c025800, 0x497a580d, 0x1c01f000, 0x59cc0005, - 0x8c000500, 0x0502000a, 0x591c0407, 0x90000582, - 0x05020007, 0x591c0c03, 0x82040580, 0x00000085, - 0x05000003, 0x82040580, 0x0000008b, 0x1c01f000, - 0x4933c857, 0x4d3c0000, 0x600a7800, 0x59300407, - 0x90000c92, 0x05ae1dc9, 0x0c01f808, 0x5c027800, - 0x1c01f000, 0x4933c857, 0x59300407, 0x90000c92, - 0x05ae1dc2, 0x0c01f001, 0x0010a830, 0x0010a82d, - 0x0010a82d, 0x0010a863, 0x0010a82c, 0x0010a82d, - 0x0010a842, 0x0010a82d, 0x0010a82c, 0x0010a82c, - 0x0010b73f, 0x0010a82d, 0x0010a82d, 0x0010a82c, - 0x0010a82c, 0x0010a82c, 0x0010a94b, 0x0010a82d, - 0x05adfdae, 0x4803c856, 0x80000580, 0x1c01f000, - 0x4803c856, 0x8d3c0502, 0x0502000f, 0x0501fc96, - 0x0500000b, 0x59325809, 0x0505fe7b, 0x41780800, - 0x4d400000, 0x60168000, 0x05d9fdf1, 0x5c028000, - 0x0505fb21, 0x0501fdec, 0x0001fb82, 0x05f5fb91, - 0x90000541, 0x1c01f000, 0x4933c857, 0x0501fc86, - 0x05000008, 0x59300809, 0x5804020c, 0x8c000512, - 0x05000004, 0x4d400000, 0x60328000, 0x0501f00f, - 0x05d9f86c, 0x0500000b, 0x59300416, 0x84000556, - 0x48026416, 0x0501f812, 0x4df00000, 0x59300416, - 0x84000516, 0x48026416, 0x5c03e000, 0x1c01f000, - 0x4d400000, 0x60428000, 0x050dfcc7, 0x641a6407, - 0x641e6203, 0x9140058c, 0x05020003, 0x641a6203, - 0x497a6006, 0x5c028000, 0x1c01f000, 0x4933c857, - 0x05edfcaf, 0x4df00000, 0x0501f8d5, 0x90000c91, - 0x05ae1d72, 0x0c01f001, 0x0010a87c, 0x0010a906, - 0x0010a891, 0x0010a914, 0x0010a903, 0x0010a87b, - 0x0010a87c, 0x0010a87c, 0x0010a87f, 0x0010a87c, - 0x0010a87c, 0x0010a87c, 0x0010a87c, 0x0010a891, - 0x0010a87f, 0x0010a87c, 0x0010a87f, 0x05adfd5f, - 0x5c03e000, 0x05ec0c87, 0x05fdf7af, 0x5c03e000, - 0x05ec0c84, 0x59300407, 0x90000583, 0x05fe07ad, - 0x59300203, 0x9000058d, 0x05fc07aa, 0x59300008, - 0x8c000500, 0x05b20fc0, 0x8d3c0502, 0x05fe07a5, - 0x4d340000, 0x5932680a, 0x05d9f939, 0x5c026800, - 0x05fdf7a0, 0x0509f8cc, 0x59300008, 0x8c000500, - 0x05b20fb5, 0x0505fe06, 0x59300004, 0x8400055c, - 0x48026004, 0x4203e000, 0xb0800000, 0x6023f800, - 0x05edfc68, 0x59300407, 0x90000586, 0x0500005e, - 0x8d3c0502, 0x05020060, 0x497a6229, 0x59300203, - 0x9000058d, 0x05000002, 0x640e6229, 0x0501fc22, - 0x05020004, 0x8d3c0500, 0x05000049, 0x0501f041, - 0x4d2c0000, 0x4d400000, 0x59325809, 0x0501fd7a, - 0x592c040c, 0x8c000512, 0x05000008, 0x4d2c0000, - 0x84000512, 0x48025c0c, 0x592c080d, 0x40065800, - 0x05b1f8e3, 0x5c025800, 0x4d400000, 0x60168000, - 0x592c0a0c, 0x82040500, 0x00000084, 0x0500000c, - 0x600a8000, 0x592c0208, 0x82000500, 0x000000ff, - 0xb80004b5, 0x05020009, 0x8c040504, 0x05000007, - 0x83428540, 0x00000200, 0x0501f004, 0x8c040512, - 0x05000002, 0x60328000, 0x592c0208, 0x82000500, - 0x000000ff, 0xb00005b5, 0x05020005, 0x592c020e, - 0x8c000506, 0x05000002, 0x853e7d40, 0x05d9fd54, - 0x0505fdd9, 0x5c028000, 0x0505fa83, 0x8d3c0500, - 0x05020003, 0x0515f814, 0x05020003, 0x0001fb82, - 0x497a6009, 0x5c028000, 0x5c025800, 0x8d3c0500, - 0x0500000a, 0x59300a29, 0x90040d83, 0x05020005, - 0x4d340000, 0x5932680a, 0x05d9f8dd, 0x5c026800, - 0x05f5fae4, 0x0501f010, 0x0515f803, 0x05020004, - 0x59300a29, 0x90040d83, 0x05000cb6, 0x640a6407, - 0x42000800, 0x80004040, 0x0505fda5, 0x4a026003, - 0x00850009, 0x0005feab, 0x4203e000, 0xb0800000, - 0x6023f800, 0x5c03e000, 0x05ee0c15, 0x90000541, - 0x1c01f000, 0x0505fdb0, 0x05fdf7fb, 0x05edfc01, - 0x05b1ff45, 0x05fdf78c, 0x598c000b, 0x81300580, - 0x05020003, 0x05edff07, 0x05020022, 0x05edf8ab, - 0x05020005, 0x59300c03, 0xb0040580, 0x05fc0770, - 0x05fdf781, 0x05edfb1b, 0x0500001a, 0x05adfcc7, - 0x0501f81c, 0x05020003, 0x05edfeca, 0x05020015, - 0x05e9ffbe, 0x0500000f, 0x05edfb12, 0x05000011, - 0x59300407, 0x90000583, 0x05ae0cbc, 0x59300004, - 0x9000051f, 0x90000585, 0x05ae0cb8, 0x58d400ec, - 0x82000500, 0x00000f00, 0x05fe076b, 0x05adfcb3, - 0x59300c03, 0xb0040580, 0x05fc0755, 0x05fdf766, - 0x59300203, 0x90000c91, 0x05ae1cac, 0x0c01f73b, - 0x417a3000, 0x60df2160, 0x59900005, 0x81300580, - 0x05000006, 0x91932410, 0x811a3000, 0x91180485, - 0x05fc17fa, 0x90000541, 0x1c01f000, 0x59300004, - 0x8c00053e, 0x0500000c, 0x8c00050c, 0x0502000a, - 0x8c000516, 0x05020004, 0x90000d1f, 0x90040585, - 0x05020003, 0x600c0000, 0x0501f004, 0x60040000, - 0x0501f002, 0x59300203, 0x1c01f000, 0x4933c857, - 0x05edfbc7, 0x4df00000, 0x59300203, 0x90000c91, - 0x05ae1c8a, 0x0c01f001, 0x0010a964, 0x0010a975, - 0x0010a967, 0x0010a963, 0x0010a963, 0x0010a963, - 0x0010a963, 0x0010a963, 0x0010a963, 0x0010a963, - 0x0010a963, 0x0010a963, 0x0010a963, 0x0010a963, - 0x0010a967, 0x0010a963, 0x0010a963, 0x05adfc77, - 0x5c03e000, 0x05ec0b9f, 0x05fdf6c7, 0x5c03e000, - 0x05ec0b9c, 0x4d2c0000, 0x05b5fd9f, 0x59325809, - 0x0501fb5d, 0x05ac0c6d, 0x64165a0a, 0x0001fb82, - 0x05d9fb00, 0x05f5fa5f, 0x5c025800, 0x90000541, - 0x1c01f000, 0x598c000b, 0x81300580, 0x05020014, - 0x59300004, 0x8c000520, 0x05000004, 0x84000520, - 0x48026004, 0x0501f014, 0x42001000, 0x0010e387, - 0x50081000, 0x58080002, 0x82000580, 0x00000100, - 0x05000005, 0x05b5fd84, 0x05edf830, 0x05ae0c53, - 0x05fdf7df, 0x05edfe87, 0x0502000a, 0x59300004, - 0x8c000520, 0x05000004, 0x84000520, 0x48026004, - 0x05fdf7d7, 0x05edf825, 0x05fc07d5, 0x05adfc47, - 0x59300203, 0x90000c91, 0x05ae1c44, 0x0c01f7bb, - 0x4d340000, 0x4d240000, 0x5932481d, 0x5932680a, - 0x59300407, 0x4933c857, 0x4803c857, 0x90000c92, - 0x05ae1c3a, 0x0c01f804, 0x5c024800, 0x5c026800, - 0x1c01f000, 0x0010a9ba, 0x0010aab5, 0x0010ac24, - 0x0010a9c1, 0x0010ac09, 0x0010ac20, 0x0010c515, - 0x0010aa99, 0x0010ac05, 0x0010a9b7, 0x0010ac80, - 0x0010a9b7, 0x0010a9b7, 0x0010a9b7, 0x0010a9b7, - 0x00020fdc, 0x0010b4cc, 0x0010b4cc, 0x05adfc23, - 0x0501fc12, 0x05f8010a, 0x1c01f000, 0x05edfb58, - 0x05edfaad, 0x05edfb47, 0x0005f7dc, 0x64066006, - 0x1c01f000, 0x42000000, 0x0010e463, 0x0511fe19, - 0x4d2c0000, 0x4d400000, 0x417a5800, 0x0501fb02, - 0x05000007, 0x0505ff94, 0x59325809, 0x592c020c, - 0x8400054c, 0x48025a0c, 0x601a8000, 0x05edfb44, - 0x05fdff6b, 0x4803c857, 0x90000c91, 0x05ae1c07, - 0x0c01f805, 0x05edfb2f, 0x5c028000, 0x5c025800, - 0x1c01f000, 0x0010aa98, 0x0010a9eb, 0x0010a9f7, - 0x0010aa3a, 0x0010aa68, 0x0010a9ea, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x0010a9ea, 0x0010a9ea, - 0x0010a9ea, 0x0010a9ea, 0x0010a9f7, 0x0010a9eb, - 0x0010a9ea, 0x0010aa3a, 0x05adfbf0, 0x598c000b, - 0x4803c857, 0x81300580, 0x05020003, 0x05edfe21, - 0x0502005a, 0x05e9ffc5, 0x0500005d, 0x4803c856, - 0x05edfa38, 0x05000055, 0x05adfbe4, 0x497a6229, - 0x812e59c0, 0x05ac0be1, 0x592c0a08, 0x4807c857, - 0x82040d00, 0x000000ff, 0x90040594, 0x05000018, - 0xb00405b5, 0x05020014, 0x59300008, 0x8c000500, - 0x05020064, 0x592c0a0e, 0x8c040506, 0x0500000e, - 0x592c0c0c, 0x4c040000, 0x592c0a0c, 0x05d9fc20, + 0x0501f019, 0x59300013, 0x0509fa9a, 0x59341200, + 0x497a6205, 0x8c08050e, 0x0502007e, 0x4807c857, + 0x4806580e, 0x80000d40, 0x05fe0eee, 0x592c020a, + 0x90000595, 0x0500001e, 0x59300402, 0x48025c0a, + 0x4806580b, 0x4a025a08, 0x00000103, 0x4c040000, + 0x592c0a0c, 0x8c040512, 0x05000002, 0x64325a0a, + 0x5c000800, 0x4c040000, 0x4c0c0000, 0x4c100000, + 0x0505ff23, 0x0509fa76, 0x5c002000, 0x5c001800, + 0x5c000800, 0x8c100512, 0x05020026, 0x4c0c0000, + 0x0505ff1f, 0x0001fba8, 0x05d9faa2, 0x5c001800, + 0x8c0c0518, 0x00080010, 0x0505f272, 0x0501f907, + 0x05fe07e2, 0x8c100512, 0x05020006, 0x59300221, + 0x48025a0d, 0x84102556, 0x48125c0c, 0x05fdf7db, + 0x592c000d, 0x80006d40, 0x05fc07d8, 0x59300221, + 0x48006a0d, 0x05fdf7f8, 0x4813c857, 0x8c100518, + 0x05000046, 0x41780800, 0x592c1c0d, 0x820c0580, + 0x00001000, 0x05fc07a8, 0x8c100512, 0x05fc07a6, + 0x592c780d, 0x583c080e, 0x583c1c0d, 0x05fdf7a2, + 0x4807c857, 0x592c780d, 0x59300402, 0x592c1408, + 0x8c08051e, 0x0502000e, 0x592c120a, 0x48007c0a, + 0x4804780b, 0x48087a0a, 0x84102512, 0x48107c0c, + 0x4c0c0000, 0x4c3c0000, 0x05adffb8, 0x5c007800, + 0x403e5800, 0x0501fafa, 0x05fdf7cc, 0x48025c0a, + 0x4806580b, 0x583c0810, 0x583c000f, 0x80040c00, + 0x9004149d, 0x05001005, 0x583c1001, 0x480a5801, + 0x49787801, 0x60700800, 0x90040c14, 0x4c0c0000, + 0x4c500000, 0x4c540000, 0x903ca40c, 0x912cac0c, + 0x4c100000, 0x4c3c0000, 0x0501fb01, 0x5c007800, + 0x5c002000, 0x5c00a800, 0x5c00a000, 0x84102512, + 0x48125c0c, 0x403e5800, 0x05adff98, 0x0505fec8, + 0x42034000, 0x00111c71, 0x59a1d806, 0x80edd9c0, + 0x05ac0bd5, 0x48efc857, 0x58ec0009, 0x4803c857, + 0x0801f800, 0x05fdf7a5, 0x4933c857, 0x1c01f000, + 0x59301416, 0x480bc857, 0x8c08051c, 0x0502000e, + 0x80000540, 0x4803c857, 0x05fc077d, 0x80042c80, + 0x05fe177b, 0x8c080514, 0x05020005, 0x592c0813, + 0x4807c857, 0x80040480, 0x48026018, 0x8408155c, + 0x480a6416, 0x59301008, 0x8408151e, 0x480a6008, + 0x4c100000, 0x4c3c0000, 0x4d400000, 0x592e820a, + 0x64065a0a, 0x0505fea2, 0x49425a0a, 0x5c028000, + 0x5c007800, 0x5c002000, 0x497a580d, 0x8c100512, + 0x05000005, 0x4d2c0000, 0x403e5800, 0x05adff67, + 0x5c025800, 0x82102500, 0xffffedff, 0x48125c0c, + 0x59301006, 0x800811c0, 0x0504022a, 0x59a80061, + 0x80080480, 0x05061227, 0x0509f9e1, 0x05e1fd19, + 0x4a025a08, 0x00000103, 0x641a5a0a, 0x497a5c0d, + 0x492fc857, 0x0001fba8, 0x05d9fa0e, 0x0009f010, + 0x59325809, 0x592c040c, 0x8c000518, 0x05000003, + 0x412df800, 0x05b1f635, 0x592c0208, 0x82000500, + 0x000000ff, 0xb0001db5, 0x05020005, 0x592c1a0e, + 0x8c0c0506, 0x05000002, 0x05fdf701, 0x1c01f000, + 0x4933c857, 0x59325809, 0x497a580d, 0x64025a0a, + 0x4a025a08, 0x00000103, 0x59300813, 0x4807c857, + 0x800409c0, 0x0502000a, 0x4806580b, 0x59300c02, + 0x48065c0a, 0x0505fe66, 0x0509f9b9, 0x0505fe68, + 0x0001fba8, 0x05d9f9eb, 0x0009f010, 0x59340200, + 0x8c00050e, 0x05020007, 0x59300013, 0x0509f9b9, + 0x80000d40, 0x05fdfe13, 0x4806580b, 0x05fdf7f0, + 0x592c020c, 0x8c00050e, 0x05fe07f8, 0x4933c857, + 0x0505f1ec, 0x4933c857, 0x59325809, 0x812e59c0, + 0x05ac0b61, 0x592c020e, 0x8c000502, 0x05ac0b5e, + 0x640a6006, 0x1c01f000, 0x5930001e, 0x800001c0, + 0x050a08ed, 0x59300008, 0x4933c857, 0x4803c857, + 0x8c00050e, 0x05000034, 0x8c000500, 0x05000026, + 0x8c00051c, 0x05000009, 0x84000500, 0x48026008, + 0x59325809, 0x592c3c0c, 0x481fc857, 0x841c3d58, + 0x481e5c0c, 0x0009f078, 0x59325809, 0x592c3c0c, + 0x841c3d58, 0x59300008, 0x8c00051c, 0x05fe07f3, + 0x481e5c0c, 0x60140000, 0x40000000, 0x80000040, + 0x05fe07fe, 0x59300008, 0x8c00051c, 0x05fe07eb, + 0x592c0208, 0x82000500, 0x000000ff, 0xb0000588, + 0x05000003, 0x900005a2, 0x05020003, 0x497a580f, + 0x0501f002, 0x497a580d, 0x481e5c0c, 0x64025a0a, + 0x05b1f5ba, 0x8c000524, 0x05fc07dc, 0x59325809, + 0x4c000000, 0x592c040c, 0x8c00051c, 0x5c000000, + 0x05020003, 0x4a026013, 0xffffffff, 0x84000524, + 0x05fdf7d2, 0x1c01f000, 0x59a80007, 0x8c00050a, + 0x05000019, 0x59300008, 0x82000500, 0x04800800, + 0x82000580, 0x00000800, 0x05020013, 0x59300014, + 0x80000540, 0x05000010, 0x59300009, 0x80006d40, + 0x0500000d, 0x58340001, 0x80006d40, 0x0500000a, + 0x58340208, 0x82000500, 0x000000ff, 0xb000058a, + 0x05020005, 0x58340409, 0x90000503, 0x90000580, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x4933c857, + 0x41780800, 0xb1380498, 0x05021009, 0xb1380480, + 0x05001007, 0x4d2c0000, 0x59325809, 0x812e59c0, + 0x0c020805, 0x5c025800, 0x0009f010, 0x493bc857, + 0x1c01f000, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab3a, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab3d, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x05adfadc, 0x59cc0808, 0x497a580b, + 0x4807c857, 0x59300402, 0x48025c0a, 0x4a025a08, + 0x00000103, 0x900401c0, 0x4802580d, 0x64025a0a, + 0x800409c0, 0x000003a8, 0x59cc0009, 0x4802580e, + 0x82042500, 0x00000100, 0x05000002, 0x59cc200b, + 0x48125810, 0x82040500, 0x00000200, 0x05000002, + 0x59cc000a, 0x4802580f, 0x80100c00, 0x05ac1ac2, + 0x000003a8, 0x9004149d, 0x05001005, 0x592c0408, + 0x8c00051e, 0x0500000a, 0x60700800, 0x4c500000, + 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501f9d4, + 0x5c00a800, 0x5c00a000, 0x0001f3a8, 0x0501f982, + 0x0501f1b3, 0x83380480, 0x00000093, 0x05ae1aae, + 0x83380480, 0x00000085, 0x05ac1aab, 0x0c01f001, + 0x0010ab7a, 0x0010ab79, 0x0010ab79, 0x0010ab7f, + 0x0010ab79, 0x0010ab79, 0x0010ab79, 0x0010ab79, + 0x0010ab79, 0x0010ab79, 0x0010ab79, 0x0010ab79, + 0x0010ab79, 0x05adfa9c, 0x64066203, 0x493a6403, + 0x42000800, 0x80000040, 0x0005f6e2, 0x83300580, + 0x00115a14, 0x05ae0a94, 0x4933c857, 0x59cc1404, + 0x0505fb71, 0x0500002c, 0x591c0203, 0x90000580, + 0x05000029, 0x591c000a, 0x81340580, 0x05020026, + 0x59cc1204, 0x82080580, 0x0000ffff, 0x05000007, + 0x591c0202, 0x82000d80, 0x0000ffff, 0x05000003, + 0x80080580, 0x0502001c, 0x4d300000, 0x4d1c0000, + 0x411e6000, 0x0501f9e5, 0x5c023800, 0x5c026000, + 0x05000013, 0x59cc0005, 0x8c000500, 0x05020003, + 0x0501f99a, 0x0501f002, 0x640a3a03, 0x4a026403, + 0x00000086, 0x59cc0005, 0x8c000500, 0x0500000c, + 0x591c0416, 0x8400055a, 0x48023c16, 0x59300416, + 0x8400055a, 0x48026416, 0x0501f005, 0x0501f9c2, + 0x05fc07ed, 0x4a026403, 0x00000087, 0x4d2c0000, + 0x0515f96e, 0x05d9fc2f, 0x5c025800, 0x59340200, + 0x8c00050e, 0x0500000b, 0x59cc1404, 0x0505fb3a, + 0x05000008, 0x591c0416, 0x8c00051a, 0x05000005, + 0x4d300000, 0x411e6000, 0x0505f8ec, 0x5c026000, + 0x1c01f000, 0x91380593, 0x0502000a, 0x59300403, + 0x4803c857, 0x82000d80, 0x00000086, 0x05000015, + 0x82000d80, 0x00000087, 0x05ae0a47, 0x0501f011, + 0x913805a7, 0x05000003, 0x91380594, 0x05ae0a42, + 0x493bc857, 0x05edfd52, 0x0501fe7c, 0x05f4050e, + 0x4d2c0000, 0x59325809, 0x0001fba8, 0x59300a29, + 0x90040d83, 0x05000f64, 0x5c025800, 0x05f5f506, + 0x4933c857, 0x0505fa55, 0x05f60503, 0x0009f010, + 0x91380593, 0x05020006, 0x59300403, 0x4803c857, + 0x82000480, 0x00000085, 0x0c01f04c, 0x913805a7, + 0x05020040, 0x4933c857, 0x05edfd39, 0x59300416, + 0x8c00051a, 0x05020002, 0x0009f010, 0x4d3c0000, + 0x417a7800, 0x05b9ffce, 0x5c027800, 0x60543000, + 0x41782800, 0x600c2000, 0x60a68000, 0x4d400000, + 0x4d440000, 0x59368c03, 0x0505ffbc, 0x5c028800, + 0x5c028000, 0x42000000, 0x001123f8, 0x0515fb54, + 0x0501fe4e, 0x00080010, 0x4d2c0000, 0x59325809, + 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, + 0x05020f35, 0x0509f84a, 0x05e1fb82, 0x4a025a08, + 0x00000103, 0x59300402, 0x48025c0a, 0x497a580d, + 0x49425a0a, 0x0001fba8, 0x5c025800, 0x0009f010, + 0xb13805a1, 0x05000009, 0xb13805a0, 0x05000007, + 0x83380580, 0x00000089, 0x05000004, 0x83380580, + 0x0000008a, 0x05f60545, 0x05f1f955, 0x05f60543, + 0x59300a03, 0x9004058e, 0x050007e4, 0x9004058a, + 0x0500003c, 0x9004058c, 0x0500003a, 0x05adf9ea, + 0x91380594, 0x05fe07eb, 0x4933c857, 0x05edfcf8, + 0x59300416, 0x8c00051a, 0x05020002, 0x0009f010, + 0x601a8000, 0x05fdf7cf, 0x0010ac44, 0x0010ac43, + 0x0010ac43, 0x0010ac43, 0x0010ac43, 0x0010ac43, + 0x0010ac54, 0x0010ac43, 0x0010ac43, 0x0010ac43, + 0x0010ac43, 0x0010ac43, 0x0010ac43, 0x05adf9d2, + 0x4933c857, 0x0505f9f1, 0x0500000a, 0x643a6203, + 0x59a80061, 0x48026205, 0x59300416, 0x8c00051a, + 0x05020003, 0x59a8005f, 0x48026006, 0x1c01f000, + 0x59a8005f, 0x48026006, 0x642a6203, 0x1c01f000, + 0x4933c857, 0x0505f9e1, 0x0500000a, 0x643a6203, + 0x59a80061, 0x48026205, 0x59300416, 0x8c00051a, + 0x05020003, 0x59a8005f, 0x48026006, 0x1c01f000, + 0x59a8005f, 0x48026006, 0x64326203, 0x1c01f000, + 0x5932680a, 0x83380580, 0x00000089, 0x05000007, + 0x83380580, 0x0000008a, 0x0500002c, 0x4933c857, + 0x493bc857, 0x05f5f4f9, 0x4933c857, 0x59325809, + 0x59300416, 0x8c00051a, 0x0500000b, 0x59300229, + 0x90000583, 0x05ae09a0, 0x640e6407, 0x59300429, + 0x48026203, 0x59340200, 0x8c00050e, 0x05060033, + 0x1c01f000, 0x59300a29, 0x90040583, 0x05020007, + 0x0501fdd2, 0x0500000d, 0x0001fba8, 0x05d9f809, + 0x497a6009, 0x0501f009, 0x59300229, 0x90000581, + 0x05020006, 0x59300c18, 0x900405b9, 0x05000019, + 0x900405b5, 0x05000017, 0x59cc0c07, 0x4806641b, + 0x59cc0a07, 0x4806621b, 0x59300203, 0x48026429, + 0x64466203, 0x05f5f450, 0x4933c857, 0x59300416, + 0x8c00051a, 0x000a0010, 0x59300229, 0x90000581, + 0x0502003f, 0x59300c18, 0x900405b5, 0x05000005, + 0x9004059e, 0x05000003, 0x900405b9, 0x05020038, + 0x4933c857, 0x4c5c0000, 0x4c600000, 0x4d1c0000, + 0x4130b800, 0x4004c000, 0x0505fa04, 0x0502002b, + 0x906005b5, 0x05020004, 0x591c0c16, 0x8c040502, + 0x05000026, 0x05f5fc67, 0x05000024, 0x491fc857, + 0x4933c857, 0x906005b5, 0x05000003, 0x906005b9, + 0x05020002, 0x4932381e, 0x585c081d, 0x4806601d, + 0x48626403, 0x64066203, 0x64066407, 0x585c080a, + 0x4807c857, 0x4806600a, 0x585c0c17, 0x4807c857, + 0x48066417, 0x585c0a17, 0x4807c857, 0x48066217, + 0x585c0a18, 0x4807c857, 0x48066218, 0x585c0c1b, + 0x4807c857, 0x4806641b, 0x585c0a1b, 0x4807c857, + 0x4806621b, 0x491e602a, 0x0505f955, 0x42000800, + 0x80000040, 0x0005fee2, 0x405e6000, 0x5c023800, + 0x5c00c000, 0x5c00b800, 0x0009f010, 0x0501fd77, + 0x05000008, 0x4d2c0000, 0x59325809, 0x0001fba8, + 0x59300229, 0x90000583, 0x05d40faa, 0x5c025800, + 0x0009f010, 0x4803c856, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4c500000, 0x4c540000, 0x412cb800, + 0x4d2c0000, 0x6004c000, 0x82040480, 0x00000101, + 0x05001002, 0x60000802, 0x4004c800, 0x60700800, + 0x91cca40c, 0x912cac11, 0x0501f83d, 0x9064cc9c, + 0x592e5801, 0x812e59c0, 0x05ae0cd8, 0x05adfcbe, + 0x05000011, 0x8060c000, 0x4a025808, 0x00000110, + 0x492cb801, 0x90640cbd, 0x05021005, 0x40640800, + 0x912cac09, 0x0501f82e, 0x0501f007, 0x9064ccbc, + 0x60f00800, 0x412cb800, 0x912cac09, 0x0501f828, + 0x05fdf7ef, 0x5c025800, 0x8460c1c0, 0x9060c543, + 0x48625a08, 0x5c00a800, 0x5c00a000, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x492fc857, + 0x812e59c0, 0x05000012, 0x592c2802, 0x4d2c0000, + 0x4c3c0000, 0x592c7801, 0x803c79c0, 0x05000009, + 0x497a5801, 0x4c140000, 0x4c3c0000, 0x0001fba8, + 0x5c025800, 0x5c002800, 0x48165802, 0x05fdf7f6, + 0x5c007800, 0x0001fba8, 0x5c025800, 0x1c01f000, + 0x4803c856, 0x4c580000, 0x90040403, 0x8000b104, + 0x0515faf2, 0x5c00b000, 0x1c01f000, 0x4803c856, + 0x4c580000, 0x90040c03, 0x8004b104, 0x0009f9cf, + 0x5c00b000, 0x1c01f000, 0x591c0c07, 0x90040583, + 0x05000005, 0x90040582, 0x05000003, 0x9004058a, + 0x05020022, 0x4d300000, 0x4d2c0000, 0x411e6000, + 0x59325809, 0x0501fd0d, 0x05000019, 0x59300c07, + 0x9004058a, 0x0500001a, 0x90040583, 0x05020007, + 0x592c0a08, 0x82040d00, 0x000000ff, 0x90040d94, + 0x05000002, 0x640e6229, 0x0501f814, 0x4d400000, + 0x604e8000, 0x592c0a0c, 0x84040d54, 0x05d9fbb8, + 0x5c028000, 0x0505fbaa, 0x0505fefd, 0x0001fba8, + 0x59300229, 0x90000583, 0x05000de3, 0x05f5fb86, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x644e5a0a, + 0x642a6229, 0x05fdf7f4, 0x592c040c, 0x8c000512, + 0x05000008, 0x84000512, 0x48025c0c, 0x4d2c0000, + 0x592e580d, 0x05adfc65, 0x5c025800, 0x497a580d, + 0x1c01f000, 0x59cc0005, 0x8c000500, 0x0502000a, + 0x591c0407, 0x90000582, 0x05020007, 0x591c0c03, + 0x82040580, 0x00000085, 0x05000003, 0x82040580, + 0x0000008b, 0x1c01f000, 0x4933c857, 0x4d3c0000, + 0x600a7800, 0x59300407, 0x90000c92, 0x05ae1892, + 0x0c01f808, 0x5c027800, 0x1c01f000, 0x4933c857, + 0x59300407, 0x90000c92, 0x05ae188b, 0x0c01f001, + 0x0010ada2, 0x0010ad9f, 0x0010ad9f, 0x0010add5, + 0x0010ad9f, 0x0010ad9f, 0x0010adb4, 0x0010ad9f, + 0x0010ad9e, 0x0010ad9e, 0x0010bcf0, 0x0010ad9f, + 0x0010ad9f, 0x0010ad9e, 0x0010ad9e, 0x0010ad9e, + 0x0010aec5, 0x0010ad9f, 0x05adf877, 0x4803c856, + 0x80000580, 0x1c01f000, 0x4803c856, 0x8d3c0502, + 0x0502000f, 0x0501fcad, 0x0500000b, 0x59325809, + 0x0505feaf, 0x41780800, 0x4d400000, 0x60168000, + 0x05d9fb63, 0x5c028000, 0x0505fb55, 0x0501fe13, + 0x0001fba8, 0x05f5fb34, 0x90000541, 0x1c01f000, + 0x4933c857, 0x0501fc9d, 0x05000008, 0x59300809, + 0x5804020c, 0x8c000512, 0x05000004, 0x4d400000, + 0x60328000, 0x0501f00f, 0x05d5fd6c, 0x0500000b, + 0x59300416, 0x84000556, 0x48026416, 0x0501f812, + 0x4df00000, 0x59300416, 0x84000516, 0x48026416, + 0x5c03e000, 0x1c01f000, 0x4d400000, 0x60428000, + 0x050dfe52, 0x641a6407, 0x641e6203, 0x9140058c, + 0x05020003, 0x641a6203, 0x497a6006, 0x5c028000, + 0x1c01f000, 0x4933c857, 0x05edfbfb, 0x4df00000, + 0x0501f8dd, 0x90000c91, 0x05ae183b, 0x0c01f001, + 0x0010adee, 0x0010ae78, 0x0010ae03, 0x0010ae86, + 0x0010ae75, 0x0010aded, 0x0010adee, 0x0010adee, + 0x0010adf1, 0x0010adee, 0x0010adee, 0x0010adee, + 0x0010adee, 0x0010ae03, 0x0010adf1, 0x0010adee, + 0x0010adf1, 0x05adf828, 0x5c03e000, 0x05ec0bd3, + 0x05fdf7af, 0x5c03e000, 0x05ec0bd0, 0x59300407, + 0x90000583, 0x05fe07ad, 0x59300203, 0x9000058d, + 0x05fc07aa, 0x59300008, 0x8c000500, 0x05b20aec, + 0x8d3c0502, 0x05fe07a5, 0x4d340000, 0x5932680a, + 0x05d5fe8c, 0x5c026800, 0x05fdf7a0, 0x0509f90b, + 0x59300008, 0x8c000500, 0x05b20ae1, 0x0505fe3a, + 0x59300004, 0x8400055c, 0x48026004, 0x4203e000, + 0xb0800000, 0x6023f800, 0x05edfbb4, 0x8d3c0502, + 0x05020063, 0x59300407, 0x90000586, 0x0500005c, + 0x497a6229, 0x59300203, 0x9000058d, 0x05000002, + 0x640e6229, 0x0501fc39, 0x05020004, 0x8d3c0500, + 0x05000049, 0x0501f041, 0x4d2c0000, 0x4d400000, + 0x59325809, 0x0501fda1, 0x592c040c, 0x8c000512, + 0x05000008, 0x4d2c0000, 0x84000512, 0x48025c0c, + 0x592c080d, 0x40065800, 0x05adfba8, 0x5c025800, + 0x4d400000, 0x60168000, 0x592c0a0c, 0x82040500, + 0x00000084, 0x0500000c, 0x600a8000, 0x592c0208, + 0x82000500, 0x000000ff, 0xb80004b5, 0x05020009, + 0x8c040504, 0x05000007, 0x83428540, 0x00000200, + 0x0501f004, 0x8c040512, 0x05000002, 0x60328000, + 0x592c0208, 0x82000500, 0x000000ff, 0xb00005b5, + 0x05020005, 0x592c020e, 0x8c000506, 0x05000002, + 0x853e7d40, 0x05d9fac6, 0x0505fe0d, 0x5c028000, + 0x0505fab7, 0x8d3c0500, 0x05020003, 0x0515fa1d, + 0x05020003, 0x0001fba8, 0x497a6009, 0x5c028000, + 0x5c025800, 0x8d3c0500, 0x0500000a, 0x59300a29, + 0x90040d83, 0x05020005, 0x4d340000, 0x5932680a, + 0x05d5fe30, 0x5c026800, 0x05f5fa87, 0x0501f010, + 0x0515fa0c, 0x05020004, 0x59300a29, 0x90040d83, + 0x05000cdd, 0x640a6407, 0x42000800, 0x80004040, + 0x0505fdd9, 0x4a026003, 0x00850009, 0x0005fee2, + 0x4203e000, 0xb0800000, 0x6023f800, 0x5c03e000, + 0x05ee0b61, 0x90000541, 0x1c01f000, 0x640a6203, + 0x05fdf7fb, 0x05edfb4d, 0x05b1fa71, 0x05fdf78c, + 0x598c000b, 0x81300580, 0x05020003, 0x05edfe53, + 0x0502002a, 0x05e9fff2, 0x05020005, 0x59300c03, + 0xb0040580, 0x05fc0770, 0x05fdf781, 0x05edfa66, + 0x05000022, 0x05a9ff90, 0x0501f824, 0x05020003, + 0x05edfe16, 0x0502001d, 0x05e9ff05, 0x05000017, + 0x05edfa5d, 0x05000019, 0x59300407, 0x90000583, + 0x05aa0f85, 0x59300004, 0x9000051f, 0x90000585, + 0x05aa0f81, 0x58d400ec, 0x82000500, 0x00000f00, + 0x05fe076b, 0x58d400ec, 0x4803c857, 0x59300000, + 0x4803c857, 0x59300003, 0x4803c857, 0x59300004, + 0x4803c857, 0x05fdf762, 0x59300c03, 0xb0040580, + 0x05fc074d, 0x05fdf75e, 0x59300203, 0x90000c91, + 0x05aa1f6d, 0x0c01f733, 0x417a3000, 0x60df2160, + 0x59900005, 0x81300580, 0x05000006, 0x91932410, + 0x811a3000, 0x91180485, 0x05fc17fa, 0x90000541, + 0x1c01f000, 0x59300004, 0x8c00053e, 0x0500000c, + 0x8c00050c, 0x0502000a, 0x8c000516, 0x05020004, + 0x90000d1f, 0x90040585, 0x05020003, 0x600c0000, + 0x0501f004, 0x60040000, 0x0501f002, 0x59300203, + 0x1c01f000, 0x4933c857, 0x05edfb0b, 0x4df00000, + 0x59300203, 0x90000c91, 0x05aa1f4b, 0x0c01f001, + 0x0010aede, 0x0010aeef, 0x0010aee1, 0x0010aedd, + 0x0010aedd, 0x0010aedd, 0x0010aedd, 0x0010aedd, + 0x0010aedd, 0x0010aedd, 0x0010aedd, 0x0010aedd, + 0x0010aedd, 0x0010aedd, 0x0010aee1, 0x0010aedd, + 0x0010aedd, 0x05a9ff38, 0x5c03e000, 0x05ec0ae3, + 0x05fdf6bf, 0x5c03e000, 0x05ec0ae0, 0x4d2c0000, + 0x05b5f896, 0x59325809, 0x0501fb6c, 0x05a80f2e, + 0x64165a0a, 0x0001fba8, 0x05d9f85b, 0x05f5f9fa, + 0x5c025800, 0x90000541, 0x1c01f000, 0x598c000b, + 0x81300580, 0x05020014, 0x59300004, 0x8c000520, + 0x05000004, 0x84000520, 0x48026004, 0x0501f014, + 0x42001000, 0x00112322, 0x50081000, 0x58080002, + 0x82000580, 0x00000100, 0x05000005, 0x05b5f87b, + 0x05e9ff6f, 0x05aa0f14, 0x05fdf7df, 0x05edfdcb, + 0x0502000a, 0x59300004, 0x8c000520, 0x05000004, + 0x84000520, 0x48026004, 0x05fdf7d7, 0x05e9ff64, + 0x05fc07d5, 0x05a9ff08, 0x59300203, 0x90000c91, + 0x05aa1f05, 0x0c01f7bb, 0x4d340000, 0x4d240000, + 0x5932481d, 0x5932680a, 0x59300407, 0x4933c857, + 0x4803c857, 0x90000c92, 0x05aa1efb, 0x0c01f804, + 0x5c024800, 0x5c026800, 0x1c01f000, 0x0010af34, + 0x0010b032, 0x0010b1ad, 0x0010af3b, 0x0010b192, + 0x0010b1a9, 0x0010cc12, 0x0010b016, 0x0010b18e, + 0x0010af31, 0x0010b209, 0x0010af31, 0x0010af31, + 0x0010af31, 0x0010af31, 0x00021010, 0x0010ba73, + 0x0010ba73, 0x05a9fee4, 0x0501fc31, 0x05f800ca, + 0x1c01f000, 0x05edfa9c, 0x05edf9f1, 0x05edfa8b, + 0x0009f010, 0x64066006, 0x1c01f000, 0x42000000, + 0x00112407, 0x0515f81a, 0x5930001e, 0x800001c0, + 0x05060c69, 0x4d2c0000, 0x4d400000, 0x417a5800, + 0x0501fb0e, 0x05000007, 0x0505ffc8, 0x59325809, + 0x592c020c, 0x8400054c, 0x48025a0c, 0x601a8000, + 0x05edfa85, 0x05fdff68, 0x4803c857, 0x90000c91, + 0x05aa1ec5, 0x0c01f805, 0x05edfa70, 0x5c028000, + 0x5c025800, 0x1c01f000, 0x0010b015, 0x0010af68, + 0x0010af74, 0x0010afb7, 0x0010afe5, 0x0010af67, + 0x0010af34, 0x0010af34, 0x0010af34, 0x0010af67, + 0x0010af67, 0x0010af67, 0x0010af67, 0x0010af74, + 0x0010af68, 0x0010af67, 0x0010afb7, 0x05a9feae, + 0x598c000b, 0x4803c857, 0x81300580, 0x05020003, + 0x05edfd62, 0x0502005a, 0x05e9ff01, 0x0500005d, + 0x4803c856, 0x05edf978, 0x05000055, 0x05a9fea2, + 0x497a6229, 0x812e59c0, 0x05a80e9f, 0x592c0a08, + 0x4807c857, 0x82040d00, 0x000000ff, 0x90040594, + 0x05000018, 0xb00405b5, 0x05020014, 0x59300008, + 0x8c000500, 0x05020064, 0x592c0a0e, 0x8c040506, + 0x0500000e, 0x592c0c0c, 0x4c040000, 0x592c0a0c, + 0x05d9f987, 0x5c000800, 0x8c040510, 0x05000003, + 0x4a025c0c, 0x00000100, 0x0001fba8, 0x0501fbb2, + 0x497a6009, 0x05f5f154, 0x640e6229, 0x0505fcc4, + 0x592c0c0c, 0x4c040000, 0x592c0a0c, 0x05d9f978, 0x5c000800, 0x8c040510, 0x05000003, 0x4a025c0c, - 0x00000100, 0x0001fb82, 0x0501fb96, 0x497a6009, - 0x05f5f1bc, 0x640e6229, 0x0505fc9b, 0x592c0c0c, - 0x4c040000, 0x592c0a0c, 0x05d9fc11, 0x5c000800, - 0x8c040510, 0x05000003, 0x4a025c0c, 0x00000100, - 0x0505f93d, 0x0511fed0, 0x05020006, 0x0001fb82, - 0x59300a29, 0x90040d83, 0x05000b82, 0x497a6009, - 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, - 0x59300804, 0x82040d00, 0x00000100, 0x0505fc6c, - 0x82040d40, 0x80004040, 0x48066004, 0x4203e000, - 0xb0800000, 0x6023f800, 0x05edface, 0x42000800, - 0x80004040, 0x0005f6ab, 0x05fdfef6, 0x05020003, - 0x05edfda4, 0x0502000d, 0x05e9fe98, 0x05000006, - 0x05edf9ec, 0x05000009, 0x59300004, 0x4803c857, - 0x05fdf7b3, 0x59300c03, 0x4807c857, 0xb0040580, - 0x05000007, 0x05fdf7ae, 0x59300203, 0x4803c857, - 0x90000c91, 0x05ae1b8d, 0x0c01f78b, 0x05edfab5, - 0x812e59c0, 0x05000015, 0x0505fc5f, 0x592c0c0c, - 0x4c040000, 0x592c0a0c, 0x05d9fbd5, 0x5c000800, - 0x8c040510, 0x05000003, 0x4a025c0c, 0x00000100, - 0x0505f901, 0x0001fb82, 0x59300203, 0x9000058d, - 0x05000006, 0x05edfaa3, 0x4d340000, 0x5932680a, - 0x05d5ff63, 0x5c026800, 0x05f5f96a, 0x0501f031, - 0x812e59c0, 0x05ac0b71, 0x0501fee9, 0x05020003, - 0x05b1fddd, 0x05fdf78a, 0x05edfa96, 0x592c020c, - 0x8400050c, 0x48025a0c, 0x592c040a, 0x800000c2, - 0x800008c4, 0x80040c00, 0x48066006, 0x42000000, - 0x10000000, 0x41300800, 0x05b1fab8, 0x05000013, - 0x592c020c, 0x8c00051c, 0x05020005, 0x8400055c, - 0x48025a0c, 0x640a6006, 0x0501f016, 0x59c80001, - 0x80000540, 0x05020006, 0x42000000, 0x40000000, - 0x41300800, 0x05b1faa9, 0x0501f004, 0x4d300000, - 0x05b5fd38, 0x5c026000, 0x59300008, 0x8c000536, - 0x05020004, 0x59300203, 0x90000584, 0x05020005, - 0x4d380000, 0x61227000, 0x0009f800, 0x5c027000, - 0x1c01f000, 0x4d340000, 0x4c5c0000, 0x59300203, - 0x90000591, 0x05020014, 0x5932680a, 0x4130b800, - 0x0005ffbf, 0x0500000f, 0x64066203, 0x647a6403, - 0x585c041b, 0x4802641b, 0x585c021b, 0x4802621b, - 0x4936600a, 0x585c001d, 0x4802601d, 0x0501fde4, - 0x64066407, 0x42000800, 0x80000040, 0x0005feab, - 0x405e6000, 0x0005ffdc, 0x5c00b800, 0x5c026800, - 0x1c01f000, 0x42000000, 0x0010e45f, 0x0511fd25, - 0x0511fb9c, 0x59300203, 0x90000c91, 0x05ae1b1f, - 0x4803c857, 0x0c01f001, 0x0010aacf, 0x0010a9bf, - 0x0010aad0, 0x0010aacf, 0x0010aad0, 0x0010aad0, - 0x0010a9bb, 0x0010aacf, 0x0010a9b8, 0x0010aacf, - 0x0010aacf, 0x0010aacf, 0x0010aacf, 0x0010aacf, - 0x0010aad0, 0x0010aacf, 0x0010aacf, 0x05adfb0b, - 0x83340580, 0x00110210, 0x05f400fe, 0x4d2c0000, - 0x59340400, 0x82000500, 0x000000ff, 0x90000c8c, - 0x05ae1b02, 0x4c000000, 0x0505fdc5, 0x5c000000, - 0x0502000a, 0x59300009, 0x800001c0, 0x05020004, - 0x05f5f8f0, 0x0505fdc5, 0x0501f010, 0x05f5ffe0, - 0x05f5f8ec, 0x0501f00d, 0x59303403, 0xb0180d91, - 0x0500000c, 0x90180d84, 0x05020003, 0x60040000, - 0x0501f004, 0x90180d80, 0x05020002, 0x60040000, - 0x4803c857, 0x0c01f823, 0x5c025800, 0x1c01f000, - 0x42000000, 0x0010e45b, 0x0511fce6, 0x05bdfb20, - 0x59340412, 0x82000500, 0x000000ff, 0x05000016, - 0x80000040, 0x48026c12, 0x4d300000, 0x05f5f904, - 0x5c000000, 0x0500000f, 0x641c0407, 0x4a000006, - 0x00000398, 0x49238830, 0x4a038832, 0xffffffff, - 0x4926601d, 0x497a6009, 0x4936600a, 0x64066407, - 0x64066203, 0x65466403, 0x5c025800, 0x05e9f562, - 0x40026000, 0x5c025800, 0x60042800, 0x0505f626, - 0x0010ab20, 0x0010abba, 0x0010ab21, 0x0010ab57, - 0x0010ab21, 0x0010abcf, 0x0010ab21, 0x0010ab28, - 0x0010ab20, 0x0010abcf, 0x0010ab20, 0x0010ab33, - 0x05adfaba, 0x59300403, 0x90000d96, 0x05000032, - 0x90000d84, 0x05000030, 0x90000d82, 0x0500002e, - 0x0501faa2, 0x0500002c, 0x59300403, 0x90000da2, - 0x050000a5, 0x90000db9, 0x050000ac, 0x90000db5, - 0x050000aa, 0x90000d9e, 0x05000024, 0x0501f996, - 0x05000005, 0x0505f818, 0x05020003, 0x05d5ff19, - 0x0501f01d, 0x59300403, 0x90000d81, 0x0502000f, - 0x5930081d, 0x58040200, 0x8c000500, 0x050405f5, - 0x5930080a, 0x58040403, 0x82000580, 0x000007fe, - 0x05020004, 0x60042800, 0x0505fdf3, 0x0005f7dc, - 0x05d5fedd, 0x0500000c, 0x59340403, 0x82000480, - 0x000007f0, 0x05021009, 0x4d3c0000, 0x417a7800, - 0x05b9ffdc, 0x5c027800, 0x42000000, 0x0010e454, - 0x0511fc88, 0x05f5ff6e, 0x05f5f07a, 0x0501f972, - 0x05000003, 0x0501fff4, 0x05000091, 0x59300c03, - 0x90040596, 0x05000058, 0x90040582, 0x05020034, - 0x59a80249, 0x8c000502, 0x0502000f, 0x05d9fd4b, - 0x0502000d, 0x59a80006, 0x8c000506, 0x0502000a, - 0x05d9fd58, 0x05020004, 0x60040000, 0x05d9fd1c, - 0x0501f07f, 0x64075042, 0x6006d800, 0x05d9fcc2, - 0x0501f07b, 0x59340200, 0x8c000508, 0x05000007, - 0x84000508, 0x48026a00, 0x59300416, 0x84000510, - 0x48026416, 0x0501f014, 0x59340412, 0x82000500, + 0x00000100, 0x0505f966, 0x0515f8ce, 0x05020006, + 0x0001fba8, 0x59300a29, 0x90040d83, 0x05000b9e, + 0x497a6009, 0x4a026403, 0x00000085, 0x64266203, + 0x640a6407, 0x59300804, 0x82040d00, 0x00000100, + 0x0505fc95, 0x82040d40, 0x80004040, 0x48066004, + 0x4203e000, 0xb0800000, 0x6023f800, 0x05edfa0f, + 0x42000800, 0x80004040, 0x0005f6e2, 0x05fdfef3, + 0x05020003, 0x05edfce5, 0x0502000d, 0x05e9fdd4, + 0x05000006, 0x05edf92c, 0x05000009, 0x59300004, + 0x4803c857, 0x05fdf7b3, 0x59300c03, 0x4807c857, + 0xb0040580, 0x05000007, 0x05fdf7ae, 0x59300203, + 0x4803c857, 0x90000c91, 0x05aa1e4b, 0x0c01f78b, + 0x05edf9f6, 0x812e59c0, 0x05000015, 0x0505fc88, + 0x592c0c0c, 0x4c040000, 0x592c0a0c, 0x05d9f93c, + 0x5c000800, 0x8c040510, 0x05000003, 0x4a025c0c, + 0x00000100, 0x0505f92a, 0x0001fba8, 0x59300203, + 0x9000058d, 0x05000006, 0x05edf9e4, 0x4d340000, + 0x5932680a, 0x05d5fcab, 0x5c026800, 0x05f5f902, + 0x0501f031, 0x812e59c0, 0x05a80e2f, 0x0501ff08, + 0x05020003, 0x05b1f8fe, 0x05fdf78a, 0x05edf9d7, + 0x592c020c, 0x8400050c, 0x48025a0c, 0x592c040a, + 0x800000c2, 0x800008c4, 0x80040c00, 0x48066006, + 0x42000000, 0x10000000, 0x41300800, 0x05adfdd7, + 0x05000013, 0x592c020c, 0x8c00051c, 0x05020005, + 0x8400055c, 0x48025a0c, 0x640a6006, 0x0501f016, + 0x59c80001, 0x80000540, 0x05020006, 0x42000000, + 0x40000000, 0x41300800, 0x05adfdc8, 0x0501f004, + 0x4d300000, 0x05b5f82c, 0x5c026000, 0x59300008, + 0x8c000536, 0x05020004, 0x59300203, 0x90000584, + 0x05020005, 0x4d380000, 0x61227000, 0x0009f839, + 0x5c027000, 0x1c01f000, 0x4d340000, 0x4c5c0000, + 0x59300203, 0x90000591, 0x05020014, 0x5932680a, + 0x4130b800, 0x0005fff6, 0x0500000f, 0x64066203, + 0x647a6403, 0x585c041b, 0x4802641b, 0x585c021b, + 0x4802621b, 0x4936600a, 0x585c001d, 0x4802601d, + 0x0501fdff, 0x64066407, 0x42000800, 0x80000040, + 0x0005fee2, 0x405e6000, 0x0009f810, 0x5c00b800, + 0x5c026800, 0x1c01f000, 0x42000000, 0x00112403, + 0x0511ff23, 0x0511fd86, 0x59300203, 0x90000c91, + 0x05aa1ddd, 0x4803c857, 0x0c01f001, 0x0010b04c, + 0x0010af39, 0x0010b04d, 0x0010b04c, 0x0010b04d, + 0x0010b04d, 0x0010af35, 0x0010b04c, 0x0010af32, + 0x0010b04c, 0x0010b04c, 0x0010b04c, 0x0010b04c, + 0x0010b04c, 0x0010b04d, 0x0010b04c, 0x0010b04c, + 0x05a9fdc9, 0x83340580, 0x001141b4, 0x05f40096, + 0x4d2c0000, 0x59340400, 0x82000500, 0x000000ff, + 0x90000c8c, 0x05aa1dc0, 0x4c000000, 0x0505fdf9, + 0x5c000000, 0x0502000a, 0x59300009, 0x800001c0, + 0x05020004, 0x05f5f888, 0x0505fdf9, 0x0501f010, + 0x05f5ff9d, 0x05f5f884, 0x0501f00d, 0x59303403, + 0xb0180d91, 0x0500000c, 0x90180d84, 0x05020003, + 0x60040000, 0x0501f004, 0x90180d80, 0x05020002, + 0x60040000, 0x4803c857, 0x0c01f828, 0x5c025800, + 0x1c01f000, 0x42000000, 0x001123ff, 0x0511fee4, + 0x05b9fe3f, 0x600c0800, 0x05bdf867, 0x05020003, + 0x0509f8e4, 0x0501f017, 0x59340412, 0x82000500, 0x000000ff, 0x05000016, 0x80000040, 0x48026c12, - 0x5932481d, 0x59300c29, 0x4c040000, 0x497a6205, - 0x4d300000, 0x05f5f87e, 0x5c000000, 0x5c000800, - 0x0500000a, 0x49780009, 0x641c0407, 0x4a000006, - 0x00000398, 0x4926601d, 0x48066429, 0x4936600a, - 0x64066407, 0x0501f024, 0x40026000, 0x59300403, - 0x90000d82, 0x05020013, 0x59340403, 0x82000580, - 0x000007fe, 0x0502000c, 0x59a80249, 0x84000540, - 0x48035249, 0x05d9fd11, 0x05fc07ca, 0x4a035045, - 0x0000ffff, 0x0505ff00, 0x05d1fe66, 0x05f5ff20, - 0x0501f00f, 0x600c0002, 0x05f5fa82, 0x05f40029, - 0x05f5ff1b, 0x4d3c0000, 0x417a7800, 0x05b9ff81, - 0x5c027800, 0x42000000, 0x0010e454, 0x0511fc2d, - 0x59300429, 0x900005a1, 0x050406d0, 0x05b9ffc0, - 0x05f5f01c, 0x600c0800, 0x05d5f937, 0x64066203, - 0x640a6403, 0x05e9f4b8, 0x0501f90f, 0x05fe079a, - 0x05b9ffb7, 0x4d3c0000, 0x417a7800, 0x05b9ff6d, - 0x5c027800, 0x42000000, 0x0010e454, 0x0511fc19, - 0x60603000, 0x41782800, 0x60002000, 0x4d400000, - 0x4d440000, 0x59368c03, 0x60a68000, 0x0505fa48, - 0x5c028800, 0x5c028000, 0x05f5f002, 0x05d5fe81, - 0x05fdf7d8, 0x42000000, 0x0010e45e, 0x0511fc09, - 0x60140002, 0x05f5fa53, 0x05fc07d2, 0x05f5fa70, - 0x05fe07d0, 0x1c01f000, 0x59300c03, 0x0501fd3b, - 0x000607dc, 0x916c0583, 0x05000003, 0x640a6006, - 0x1c01f000, 0x59300403, 0x48026418, 0x64066229, - 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, - 0x42000800, 0x80000040, 0x0005f6ab, 0x0511fd40, - 0x0500000b, 0x4d400000, 0x4d200000, 0x05bdfa28, - 0x60068000, 0x60001802, 0x60042800, 0x60040000, - 0x05d9fa5c, 0x5c024000, 0x5c028000, 0x05f5fecc, - 0x4d3c0000, 0x417a7800, 0x05b9ff32, 0x5c027800, - 0x42000000, 0x0010e454, 0x0511fbde, 0x497a6009, - 0x641e6407, 0x4a026006, 0x00000398, 0x497a6205, - 0x1c01f000, 0x42000000, 0x0010e465, 0x0511fbd5, - 0x05fdf6ad, 0x59300403, 0x900005b6, 0x05020005, - 0x64066203, 0x42000800, 0x80000040, 0x0005f6ab, - 0x42000000, 0x0010e460, 0x0511fbca, 0x0511fa97, - 0x0502000a, 0x59300009, 0x800001c0, 0x05020004, - 0x05f1ffb8, 0x0505fc8d, 0x0501f003, 0x05f5fea8, - 0x05f1ffb4, 0x1c01f000, 0x0511fa36, 0x05f1f7b1, - 0x42000000, 0x0010e462, 0x0511fbba, 0x1c01f000, - 0x42000000, 0x0010e461, 0x0511fbb6, 0x59300203, - 0x90000c91, 0x05ae19b1, 0x4803c857, 0x0c01f001, - 0x0010ac3d, 0x0010a9bf, 0x0010ac3d, 0x0010ac3d, - 0x0010ac3d, 0x0010ac3d, 0x0010ac3d, 0x0010ac3d, - 0x0010ac3d, 0x0010a9bf, 0x0010ac3e, 0x0010a9bf, - 0x0010ac48, 0x0010ac3d, 0x0010ac3e, 0x0010ac3d, - 0x0010ac3d, 0x05adf99d, 0x59300403, 0x82000580, - 0x0000008b, 0x05000007, 0x4a026403, 0x0000008b, - 0x642e6203, 0x42000800, 0x80004040, 0x0005f6ab, - 0x59300a29, 0x0501f880, 0x0500000b, 0x4d2c0000, - 0x59325809, 0x641a5a0a, 0x497a5c0d, 0x0001fb82, - 0x59300a29, 0x90040d83, 0x05d40d75, 0x5c025800, - 0x497a6009, 0x4d3c0000, 0x417a7800, 0x05b9fed5, - 0x5c027800, 0x60443000, 0x0511f929, 0x42000000, - 0x0010e454, 0x0511fb7f, 0x4c5c0000, 0x4130b800, - 0x05f1ffa3, 0x05000009, 0x4936600a, 0x4926601d, - 0x0501fc2b, 0x4d300000, 0x405e6000, 0x05f1ff69, - 0x5c026000, 0x0501f002, 0x405e6000, 0x5c00b800, - 0x497a6009, 0x64066407, 0x64066403, 0x59240400, - 0x8c00050a, 0x0502000b, 0x64126407, 0x641e6203, - 0x6406642c, 0x60103000, 0x4d400000, 0x60a68000, - 0x41782800, 0x050dfb26, 0x5c028000, 0x1c01f000, - 0x602c0800, 0x05d5f870, 0x64066203, 0x05e9f3f2, - 0x42000000, 0x0010e467, 0x0511fb5a, 0x59300203, - 0x90000c91, 0x05ae1955, 0x4803c857, 0x0c01f001, - 0x0010aca9, 0x0010ac99, 0x0010ac9b, 0x0010acaa, - 0x0010ac9a, 0x0010ac99, 0x0010ac99, 0x0010ac99, - 0x0010ac99, 0x0010ac99, 0x0010ac99, 0x0010ac99, - 0x0010ac99, 0x0010ac99, 0x0010ac99, 0x0010ac99, - 0x0010ac99, 0x05adf941, 0x05b1fbaf, 0x4d2c0000, - 0x59325809, 0x641a5a0a, 0x0001fb82, 0x5c025800, - 0x497a6009, 0x642a6229, 0x4a026403, 0x00000085, - 0x64266203, 0x640a6407, 0x42000800, 0x80004040, - 0x0005f6ab, 0x1c01f000, 0x05edf869, 0x4df00000, - 0x05fdfc84, 0x05020003, 0x05edfb32, 0x05020008, - 0x05e9fc26, 0x05020004, 0x5c03e000, 0x05edf851, - 0x05fdf7e7, 0x05e9ff77, 0x05ae0924, 0x5c03e000, - 0x05edf84c, 0x59300203, 0x90000d83, 0x05ac091f, - 0x90000c91, 0x05ae191d, 0x0c01f7ca, 0x59a8003b, - 0x59a8089a, 0x80040400, 0x80080480, 0x05021003, - 0x90000541, 0x1c01f000, 0x480bc857, 0x80000580, - 0x1c01f000, 0x4c040000, 0x59300809, 0x59a8000c, - 0x80040480, 0x05001007, 0x59a8000a, 0x80040480, - 0x05021004, 0x800409c0, 0x5c000800, 0x1c01f000, - 0x800409c0, 0x05ae0905, 0x4803c856, 0x05fdf7fb, - 0x4803c856, 0x4d300000, 0x0005ffbf, 0x05000007, - 0x0501f825, 0x4d380000, 0x612e7000, 0x0009f800, - 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, - 0x4803c856, 0x4d300000, 0x05f1ff1d, 0x05000016, - 0x0501f819, 0x4d300000, 0x05edf829, 0x4df00000, - 0x05e9fd59, 0x4d3c0000, 0x60027840, 0x05e9fea6, - 0x05e9fc2c, 0x050df980, 0x5c027800, 0x5c03e000, - 0x05ec0810, 0x5c026000, 0x8d3c053e, 0x05020008, - 0x4d380000, 0x61327000, 0x0009f800, 0x5c027000, - 0x90000541, 0x5c026000, 0x1c01f000, 0x0005ffdc, - 0x05fdf7fc, 0x592c040b, 0x497a580c, 0x497a580d, - 0x494a6019, 0x494e601a, 0x4936600a, 0x492e6009, - 0x640e6407, 0x59340802, 0x4806600b, 0x800000c2, - 0x800008c4, 0x80040400, 0x48026006, 0x05d5fd62, - 0x4926601d, 0x0501f37e, 0x493bc857, 0x4d300000, - 0x0005ffbf, 0x0500000a, 0x05fdffeb, 0x4d400000, - 0x60168000, 0x0501f80a, 0x5c028000, 0x8d3c053e, - 0x05020005, 0x0009f800, 0x90000541, 0x5c026000, - 0x1c01f000, 0x0005ffdc, 0x05fdf7fc, 0x4803c856, - 0x05e9ffef, 0x4df00000, 0x4d3c0000, 0x4d440000, - 0x59368c03, 0x60067840, 0x05e9fd94, 0x05e9fcd1, - 0x05e9fbf0, 0x050df944, 0x5c028800, 0x5c027800, - 0x5c03e000, 0x05e807d3, 0x1c01f000, 0x4803c856, - 0x4d300000, 0x05f1fece, 0x0500000e, 0x481a601e, - 0x48ee602d, 0x4936600a, 0x05d5fd37, 0x4926601d, - 0x0501fb53, 0x64066407, 0x492e6009, 0x4d380000, - 0x607e7000, 0x0009f800, 0x5c027000, 0x90000541, - 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, - 0x05f1febb, 0x0500000d, 0x48ee602d, 0x4936600a, - 0x05d5fd25, 0x4926601d, 0x0501fb41, 0x64066407, - 0x492e6009, 0x4d380000, 0x61567000, 0x0009f800, + 0x4d300000, 0x05f5f897, 0x5c000000, 0x0500000f, + 0x641c0407, 0x4a000006, 0x00000398, 0x49238830, + 0x4a038832, 0xffffffff, 0x4926601d, 0x497a6009, + 0x4936600a, 0x64066407, 0x64066203, 0x65466403, + 0x5c025800, 0x05e9f499, 0x40026000, 0x5c025800, + 0x60042800, 0x0505f655, 0x0010b0a2, 0x0010b143, + 0x0010b0a3, 0x0010b0dc, 0x0010b0a3, 0x0010b158, + 0x0010b0a3, 0x0010b0aa, 0x0010b0a2, 0x0010b158, + 0x0010b0a2, 0x0010b0b5, 0x05a9fd73, 0x59300403, + 0x90000d96, 0x05000035, 0x90000d84, 0x05000033, + 0x90000d82, 0x05000031, 0x0501fab9, 0x0500002f, + 0x59300403, 0x90000da2, 0x050000ac, 0x90000db9, + 0x050000b3, 0x90000db5, 0x050000b1, 0x90000d9e, + 0x05000027, 0x0501f99d, 0x05000005, 0x0505f83c, + 0x05020003, 0x05d5fc60, 0x0501f020, 0x59300403, + 0x90000d81, 0x0502000f, 0x5930081d, 0x58040200, + 0x8c000500, 0x05040624, 0x5930080a, 0x58040403, + 0x82000580, 0x000007fe, 0x05020004, 0x60042800, + 0x0505fe22, 0x0009f010, 0x05d5fc24, 0x0500000f, + 0x59340403, 0x82000c80, 0x000007f0, 0x05001004, + 0x82000c80, 0x00000800, 0x05001009, 0x4d3c0000, + 0x417a7800, 0x05b9faee, 0x5c027800, 0x42000000, + 0x001123f8, 0x0511fe7e, 0x05f5ff23, 0x05f5f00a, + 0x0501f976, 0x05000003, 0x0505f815, 0x05000095, + 0x59300c03, 0x90040596, 0x05000058, 0x90040582, + 0x05020034, 0x59a8024c, 0x8c000502, 0x0502000f, + 0x05d9fab0, 0x0502000d, 0x59a80006, 0x8c000506, + 0x0502000a, 0x05d9fabd, 0x05020004, 0x60040000, + 0x05d9fa7b, 0x0501f083, 0x64075045, 0x6006d800, + 0x05d9fa21, 0x0501f07f, 0x59340200, 0x8c000508, + 0x05000007, 0x84000508, 0x48026a00, 0x59300416, + 0x84000510, 0x48026416, 0x0501f014, 0x59340412, + 0x82000500, 0x000000ff, 0x05000016, 0x80000040, + 0x48026c12, 0x5932481d, 0x59300c29, 0x4c040000, + 0x497a6205, 0x4d300000, 0x05f5f80e, 0x5c000000, + 0x5c000800, 0x0500000a, 0x49780009, 0x641c0407, + 0x4a000006, 0x00000398, 0x4926601d, 0x48066429, + 0x4936600a, 0x64066407, 0x0501f024, 0x40026000, + 0x59300403, 0x90000d82, 0x05020013, 0x59340403, + 0x82000580, 0x000007fe, 0x0502000c, 0x59a8024c, + 0x84000540, 0x4803524c, 0x05d9fa76, 0x05fc07ca, + 0x4a035048, 0x0000ffff, 0x0509f831, 0x05d1fad8, + 0x05f5fed5, 0x0501f00f, 0x600c0002, 0x05f5fa33, + 0x05f007b9, 0x05f5fed0, 0x4d3c0000, 0x417a7800, + 0x05b9fa93, 0x5c027800, 0x42000000, 0x001123f8, + 0x0511fe23, 0x59300429, 0x900005a1, 0x05080001, + 0x05b9fad2, 0x05f1f7ac, 0x600c0800, 0x05d1fdc5, + 0x64066203, 0x640a6403, 0x59300418, 0xb0000591, + 0x05020002, 0x65466403, 0x05e9f3e8, 0x0501f90f, + 0x05fe0796, 0x05b9fac5, 0x4d3c0000, 0x417a7800, + 0x05b9fa7b, 0x5c027800, 0x42000000, 0x001123f8, + 0x0511fe0b, 0x60603000, 0x41782800, 0x60002000, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60a68000, + 0x0505fa66, 0x5c028800, 0x5c028000, 0x05f1f78e, + 0x05d5fbc1, 0x05fdf7d4, 0x42000000, 0x00112402, + 0x0511fdfb, 0x60140002, 0x05f5fa00, 0x05fc07ce, + 0x05f5fa1d, 0x05fe07cc, 0x1c01f000, 0x59300c03, + 0x0501fd4a, 0x000a0010, 0x916c0583, 0x05000003, + 0x640a6006, 0x1c01f000, 0x59300403, 0x48026418, + 0x64066229, 0x4a026403, 0x00000085, 0x64266203, + 0x640a6407, 0x42000800, 0x80000040, 0x0005f6e2, + 0x0511ff32, 0x0500000b, 0x4d400000, 0x4d200000, + 0x05b9fd3b, 0x60068000, 0x60001802, 0x60042800, + 0x60040000, 0x05d5ffb7, 0x5c024000, 0x5c028000, + 0x05f5fe7d, 0x4d3c0000, 0x417a7800, 0x05b9fa40, + 0x5c027800, 0x42000000, 0x001123f8, 0x0511fdd0, + 0x497a6009, 0x641e6407, 0x4a026006, 0x00000398, + 0x497a6205, 0x1c01f000, 0x42000000, 0x00112409, + 0x0511fdc7, 0x05fdf6a1, 0x59300403, 0x900005b6, + 0x05020005, 0x64066203, 0x42000800, 0x80000040, + 0x0005f6e2, 0x42000000, 0x00112404, 0x0511fdbc, + 0x0511fc75, 0x0502000a, 0x59300009, 0x800001c0, + 0x05020004, 0x05f1ff44, 0x0505fcb5, 0x0501f003, + 0x05f5fe59, 0x05f1ff40, 0x1c01f000, 0x0511fc14, + 0x05f1f73d, 0x42000000, 0x00112406, 0x0511fdac, + 0x1c01f000, 0x42000000, 0x00112405, 0x0511fda8, + 0x59300203, 0x90000c91, 0x05aa1c63, 0x4803c857, + 0x0c01f001, 0x0010b1c6, 0x0010af39, 0x0010b1c6, + 0x0010b1c6, 0x0010b1c6, 0x0010b1c6, 0x0010b1c6, + 0x0010b1c6, 0x0010b1c6, 0x0010af39, 0x0010b1c7, + 0x0010af39, 0x0010b1d1, 0x0010b1c6, 0x0010b1c7, + 0x0010b1c6, 0x0010b1c6, 0x05a9fc4f, 0x59300403, + 0x82000580, 0x0000008b, 0x05000007, 0x4a026403, + 0x0000008b, 0x642e6203, 0x42000800, 0x80004040, + 0x0005f6e2, 0x59300a29, 0x0501f880, 0x0500000b, + 0x4d2c0000, 0x59325809, 0x641a5a0a, 0x497a5c0d, + 0x0001fba8, 0x59300a29, 0x90040d83, 0x05d40ab1, + 0x5c025800, 0x497a6009, 0x4d3c0000, 0x417a7800, + 0x05b9f9e3, 0x5c027800, 0x60443000, 0x0511fafd, + 0x42000000, 0x001123f8, 0x0511fd71, 0x4c5c0000, + 0x4130b800, 0x05f1ff2f, 0x05000009, 0x4936600a, + 0x4926601d, 0x0501fc3a, 0x4d300000, 0x405e6000, + 0x05f1fef5, 0x5c026000, 0x0501f002, 0x405e6000, + 0x5c00b800, 0x497a6009, 0x64066407, 0x64066403, + 0x59240400, 0x8c00050a, 0x0502000b, 0x64126407, + 0x641e6203, 0x6406642c, 0x60103000, 0x4d400000, + 0x60a68000, 0x41782800, 0x050dfce4, 0x5c028000, + 0x1c01f000, 0x602c0800, 0x05d1fcfa, 0x64066203, + 0x05e9f322, 0x42000000, 0x0011240b, 0x0511fd4c, + 0x59300203, 0x90000c91, 0x05aa1c07, 0x4803c857, + 0x0c01f001, 0x0010b232, 0x0010b222, 0x0010b224, + 0x0010b233, 0x0010b223, 0x0010b222, 0x0010b222, + 0x0010b222, 0x0010b222, 0x0010b222, 0x0010b222, + 0x0010b222, 0x0010b222, 0x0010b222, 0x0010b222, + 0x0010b222, 0x0010b222, 0x05a9fbf3, 0x05adfec4, + 0x4d2c0000, 0x59325809, 0x641a5a0a, 0x0001fba8, + 0x5c025800, 0x497a6009, 0x642a6229, 0x4a026403, + 0x00000085, 0x64266203, 0x640a6407, 0x42000800, + 0x80004040, 0x0005f6e2, 0x1c01f000, 0x05e9ff9e, + 0x4df00000, 0x05fdfc75, 0x05020003, 0x05edfa67, + 0x05020008, 0x05e9fb56, 0x05020004, 0x5c03e000, + 0x05e9ff86, 0x05fdf7e7, 0x05e9feab, 0x05aa0bd6, + 0x5c03e000, 0x05e9ff81, 0x59300203, 0x90000d83, + 0x05a80bd1, 0x90000c91, 0x05aa1bcf, 0x0c01f7ca, + 0x59a8003d, 0x59a8089d, 0x80040400, 0x80080480, + 0x05021003, 0x90000541, 0x1c01f000, 0x480bc857, + 0x80000580, 0x1c01f000, 0x4c040000, 0x59300809, + 0x59a8000c, 0x80040480, 0x05021006, 0x4d2c0000, + 0x40065800, 0x0501f80d, 0x5c025800, 0x05000007, + 0x59a8000a, 0x80040480, 0x05021004, 0x800409c0, + 0x5c000800, 0x1c01f000, 0x800409c0, 0x05aa0bb2, + 0x4803c856, 0x05fdf7fb, 0x59a8000d, 0x812c0480, + 0x05001004, 0x832c0480, 0x00111b80, 0x05001004, + 0x492fc857, 0x80000580, 0x1c01f000, 0x812e59c0, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x0005fff6, + 0x05000007, 0x0501f825, 0x4d380000, 0x612e7000, + 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fe99, + 0x05000016, 0x0501f819, 0x4d300000, 0x05e9ff4e, + 0x4df00000, 0x05e9fc79, 0x4d3c0000, 0x60027840, + 0x05e9fdcc, 0x05e9fb4c, 0x050dfafe, 0x5c027800, + 0x5c03e000, 0x05e80f35, 0x5c026000, 0x8d3c053e, + 0x05020008, 0x4d380000, 0x61327000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, - 0x4803c856, 0x4d300000, 0x05f1fea9, 0x0500000e, - 0x481a601e, 0x48ee602d, 0x4936600a, 0x05d5fd12, - 0x4926601d, 0x0501fb2e, 0x64066407, 0x492e6009, - 0x4d380000, 0x60f67000, 0x0009f800, 0x5c027000, + 0x0009f810, 0x05fdf7fc, 0x592c040b, 0x497a580c, + 0x497a580d, 0x494a6019, 0x494e601a, 0x4936600a, + 0x492e6009, 0x640e6407, 0x59340802, 0x4806600b, + 0x800000c2, 0x800008c4, 0x80040400, 0x48026006, + 0x05d5fa92, 0x4926601d, 0x0501f37d, 0x493bc857, + 0x4d300000, 0x0005fff6, 0x0500000a, 0x05fdffeb, + 0x4d400000, 0x60168000, 0x0501f80a, 0x5c028000, + 0x8d3c053e, 0x05020005, 0x0009f839, 0x90000541, + 0x5c026000, 0x1c01f000, 0x0009f810, 0x05fdf7fc, + 0x4803c856, 0x05e9ff14, 0x4df00000, 0x4d3c0000, + 0x4d440000, 0x59368c03, 0x60067840, 0x05e9fcb4, + 0x05e9fbf1, 0x05e9fb10, 0x050dfac2, 0x5c028800, + 0x5c027800, 0x5c03e000, 0x05e806f8, 0x1c01f000, + 0x4803c856, 0x4d300000, 0x05f1fe4a, 0x0500000e, + 0x481a601e, 0x48ee602d, 0x4936600a, 0x05d5fa67, + 0x4926601d, 0x0501fb52, 0x64066407, 0x492e6009, + 0x4d380000, 0x607e7000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, 0x4803c856, - 0x4d300000, 0x05f1fe96, 0x05000012, 0x4926601d, - 0x4936600a, 0x0501fb1e, 0x492fc857, 0x4933c857, - 0x592c0408, 0x8c00051e, 0x05000003, 0x48efc857, - 0x48ee602d, 0x64066407, 0x492e6009, 0x4d380000, - 0x60027000, 0x0009f800, 0x5c027000, 0x90000541, - 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, - 0x05f1fe7f, 0x0500000e, 0x48ee602d, 0x481a601e, - 0x4936600a, 0x05d5fce8, 0x4926601d, 0x0501fb04, - 0x64066407, 0x492e6009, 0x4d380000, 0x61127000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fe6c, + 0x4d300000, 0x05f1fe37, 0x0500000d, 0x48ee602d, + 0x4936600a, 0x05d5fa55, 0x4926601d, 0x0501fb40, + 0x64066407, 0x492e6009, 0x4d380000, 0x61567000, + 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fe25, 0x0500000e, 0x481a601e, 0x48ee602d, 0x4936600a, - 0x05d5fcd5, 0x4926601d, 0x0501faf1, 0x64066407, - 0x492e6009, 0x4d380000, 0x61267000, 0x0009f800, + 0x05d5fa42, 0x4926601d, 0x0501fb2d, 0x64066407, + 0x492e6009, 0x4d380000, 0x60f67000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, - 0x5930000a, 0x80001540, 0x05ac0830, 0x8d0c0512, - 0x05020007, 0x5808040b, 0x4803c856, 0x80000040, - 0x05001003, 0x4800140b, 0x05020008, 0x58080010, - 0x80000540, 0x05000005, 0x58080203, 0x80000540, - 0x05020002, 0x64041203, 0x1c01f000, 0x4803c856, - 0x59300403, 0x90000d82, 0x0500000b, 0x90000d83, - 0x05000009, 0x90000d84, 0x05000007, 0x599c0819, - 0x8c04050e, 0x05000003, 0x90000d80, 0x05000002, - 0x90000541, 0x1c01f000, 0x4803c856, 0x4c000000, - 0x4d2c0000, 0x59300407, 0x90000584, 0x05000019, - 0x59300009, 0x80025d40, 0x800001c0, 0x05000015, - 0x0501fd79, 0x05000011, 0x0501fd81, 0x0500000f, - 0x59300407, 0x90004590, 0x0500000c, 0x90004591, - 0x0500000a, 0x90004583, 0x0500000a, 0x90004582, - 0x05000008, 0x9000458a, 0x05000006, 0x592c0408, - 0x8c00051e, 0x05000003, 0x80000580, 0x0501f002, - 0x90000541, 0x5c025800, 0x5c000000, 0x1c01f000, - 0x4803c856, 0x4d300000, 0x05f1fe15, 0x05000010, - 0x4926601d, 0x4936600a, 0x0501fa9d, 0x48ee602d, - 0x64066407, 0x492e6009, 0x4d3c0000, 0x417a7800, - 0x05b9fd34, 0x5c027800, 0x4d380000, 0x60a27000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4803c856, 0x91380595, 0x05020009, - 0x59a800b6, 0xb00005b4, 0x05020006, 0x41780800, - 0x05d1ffce, 0x64066203, 0x64a66403, 0x05e9f266, - 0x05f5fcb7, 0x0005f7dc, 0x4803c856, 0x91380596, - 0x05020004, 0x60100800, 0x05d1fedb, 0x05f1f7cf, - 0x91380595, 0x0502000d, 0x59a800b6, 0x90000594, - 0x0502000a, 0x05d5f832, 0x05f9f963, 0x05020007, - 0x59340404, 0x80000540, 0x05000004, 0x60180800, - 0x05d1fecd, 0x05f1f7c1, 0x05f5fca1, 0x0005f7dc, - 0x4803c856, 0x592c020a, 0x90000585, 0x05000002, - 0x1c01f000, 0x4803c856, 0x592c020c, 0x8400054a, - 0x48025a0c, 0x1c01f000, 0x59300809, 0x800409c0, - 0x05000008, 0x58040208, 0x82000580, 0x00000152, - 0x05020004, 0x59a8085c, 0x48066006, 0x1c01f000, - 0x599c0416, 0x800001c0, 0x05000007, 0x90000c84, - 0x05001005, 0x800000c2, 0x800008c4, 0x80040c00, - 0x05fdf7f6, 0x59300403, 0x90000582, 0x05fe07f2, - 0x5930080a, 0x58040403, 0x82000580, 0x000007fe, - 0x05fe07ed, 0x60a00800, 0x05fdf7ec, 0x4803c856, - 0x59300c03, 0xb13805a1, 0x05000019, 0xb13805a0, - 0x05000017, 0xb13805a2, 0x0502001e, 0x497a6205, - 0x90040582, 0x05000006, 0x9004059e, 0x0500000e, - 0x90040584, 0x05020017, 0x0501f003, 0x600c0800, - 0x05d1fe91, 0x59340200, 0x84000508, 0x48026a00, - 0x59300416, 0x84000510, 0x48026416, 0x64066203, - 0x05e9f20d, 0x64166203, 0x0501f00a, 0x59340200, - 0x8c00050e, 0x05020002, 0x497a6205, 0x640a6203, - 0x90040486, 0x05fc17c1, 0x59a8005c, 0x48026006, + 0x4803c856, 0x4d300000, 0x05f1fe12, 0x05000012, + 0x4926601d, 0x4936600a, 0x0501fb1d, 0x492fc857, + 0x4933c857, 0x592c0408, 0x8c00051e, 0x05000003, + 0x48efc857, 0x48ee602d, 0x64066407, 0x492e6009, + 0x4d380000, 0x60027000, 0x0009f839, 0x5c027000, + 0x90000541, 0x5c026000, 0x1c01f000, 0x4803c856, + 0x4d300000, 0x05f1fdfb, 0x0500000e, 0x48ee602d, + 0x481a601e, 0x4936600a, 0x05d5fa18, 0x4926601d, + 0x0501fb03, 0x64066407, 0x492e6009, 0x4d380000, + 0x61127000, 0x0009f839, 0x5c027000, 0x90000541, + 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, + 0x05f1fde8, 0x0500000e, 0x481a601e, 0x48ee602d, + 0x4936600a, 0x05d5fa05, 0x4926601d, 0x0501faf0, + 0x64066407, 0x492e6009, 0x4d380000, 0x61267000, + 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, + 0x1c01f000, 0x5930000a, 0x80001540, 0x05a80ad2, + 0x8d0c0512, 0x05020007, 0x5808040b, 0x4803c856, + 0x80000040, 0x05001003, 0x4800140b, 0x05020008, + 0x58080010, 0x80000540, 0x05000005, 0x58080203, + 0x80000540, 0x05020002, 0x64041203, 0x1c01f000, + 0x4803c856, 0x59300403, 0x90000d82, 0x0500000b, + 0x90000d83, 0x05000009, 0x90000d84, 0x05000007, + 0x599c0819, 0x8c04050e, 0x05000003, 0x90000d80, + 0x05000002, 0x90000541, 0x1c01f000, 0x4803c856, + 0x4c000000, 0x4d2c0000, 0x59300407, 0x90000584, + 0x05000019, 0x59300009, 0x80025d40, 0x800001c0, + 0x05000015, 0x0501fd86, 0x05000011, 0x0501fd8e, + 0x0500000f, 0x59300407, 0x90004590, 0x0500000c, + 0x90004591, 0x0500000a, 0x90004583, 0x0500000a, + 0x90004582, 0x05000008, 0x9000458a, 0x05000006, + 0x592c0408, 0x8c00051e, 0x05000003, 0x80000580, + 0x0501f002, 0x90000541, 0x5c025800, 0x5c000000, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fd91, + 0x05000010, 0x4926601d, 0x4936600a, 0x0501fa9c, + 0x48ee602d, 0x64066407, 0x492e6009, 0x4d3c0000, + 0x417a7800, 0x05b9f832, 0x5c027800, 0x4d380000, + 0x60a27000, 0x0009f839, 0x5c027000, 0x90000541, + 0x5c026000, 0x1c01f000, 0x4803c856, 0x91380595, + 0x05020009, 0x59a800bb, 0xb00005b4, 0x05020006, + 0x41780800, 0x05d1fc9b, 0x64066203, 0x64a66403, + 0x05e9f186, 0x05f5fc58, 0x0009f010, 0x4803c856, + 0x91380596, 0x05020004, 0x60100800, 0x05d1fb55, + 0x05f1f76c, 0x91380595, 0x0502000d, 0x59a800bb, + 0x90000594, 0x0502000a, 0x05d1fcff, 0x05f9f911, + 0x05020007, 0x59340404, 0x80000540, 0x05000004, + 0x60180800, 0x05d1fb47, 0x05f1f75e, 0x05f5fc42, + 0x0009f010, 0x4803c856, 0x592c020a, 0x90000585, + 0x05000002, 0x1c01f000, 0x4803c856, 0x592c020c, + 0x8400054a, 0x48025a0c, 0x1c01f000, 0x59300809, + 0x800409c0, 0x05000008, 0x58040208, 0x82000580, + 0x00000152, 0x05020004, 0x59a8085f, 0x48066006, + 0x1c01f000, 0x599c0416, 0x800001c0, 0x05000007, + 0x90000c84, 0x05001005, 0x800000c2, 0x800008c4, + 0x80040c00, 0x05fdf7f6, 0x59300403, 0x90000582, + 0x05fe07f2, 0x5930080a, 0x58040403, 0x82000580, + 0x000007fe, 0x05fe07ed, 0x60a00800, 0x05fdf7ec, + 0x4803c856, 0x59300c03, 0xb13805a1, 0x05000019, + 0xb13805a0, 0x05000017, 0xb13805a2, 0x0502001e, + 0x497a6205, 0x90040582, 0x05000006, 0x9004059e, + 0x0500000e, 0x90040584, 0x05020017, 0x0501f003, + 0x600c0800, 0x05d1fb0b, 0x59340200, 0x84000508, + 0x48026a00, 0x59300416, 0x84000510, 0x48026416, + 0x64066203, 0x05e9f12d, 0x64166203, 0x0501f00a, + 0x59340200, 0x8c00050e, 0x05020002, 0x497a6205, + 0x640a6203, 0x90040486, 0x05fc17c1, 0x59a8005f, + 0x48026006, 0x1c01f000, 0x4803c856, 0xb13805a1, + 0x05000003, 0xb13805a0, 0x0502000a, 0x59303403, + 0x82180580, 0x00000086, 0x05f004d3, 0x82180580, + 0x00000087, 0x05f004d0, 0x497a6205, 0x642a6203, 0x1c01f000, 0x4803c856, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x0502000a, 0x59303403, 0x82180580, - 0x00000086, 0x05f00557, 0x82180580, 0x00000087, - 0x05f00554, 0x497a6205, 0x642a6203, 0x1c01f000, - 0x4803c856, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05020007, 0x59300403, 0xb0000c91, 0x05aa1f53, - 0xb0000480, 0x05a81f51, 0x0c01f002, 0x1c01f000, - 0x0010ae9e, 0x0010ae9d, 0x0010ae9d, 0x0010aeaa, - 0x0010ae9d, 0x0010ae9d, 0x0010ae9d, 0x0010ae9d, - 0x0010ae9d, 0x0010aeaa, 0x0010ae9d, 0x0010aeab, - 0x0010aeab, 0x0010aeab, 0x0010aeab, 0x0010ae9d, - 0x0010aeae, 0x05a9ff3d, 0x59340200, 0x8c00050e, - 0x05020002, 0x497a6205, 0x59300809, 0x5804020e, - 0x8c000502, 0x05000003, 0x64126203, 0x1c01f000, - 0x640a6203, 0x1c01f000, 0x1c01f000, 0x497a6205, - 0x64366203, 0x1c01f000, 0x0005f7dc, 0x4803c856, - 0xb13805a1, 0x05000006, 0xb13805a0, 0x05020009, - 0x59cc0002, 0x8c000526, 0x05000007, 0x59300403, - 0xb0000d83, 0x05000005, 0xb0000d89, 0x05000003, - 0x05f1fd78, 0x1c01f000, 0x59a8005e, 0x48026205, - 0x640a6203, 0x5930001c, 0x80000540, 0x05000003, - 0x497a601c, 0x0801f800, 0x1c01f000, 0x497a6205, - 0x497a6009, 0x64066203, 0x65426403, 0x42000800, - 0x80000043, 0x0005f6ab, 0x4933c857, 0x4d340000, - 0x5932680a, 0x59340200, 0x8c00050e, 0x05000005, - 0x59300407, 0x90000c92, 0x05021004, 0x0c01f805, - 0x5c026800, 0x1c01f000, 0x05fdfae0, 0x05fdf7fd, - 0x0010a9ba, 0x0010aeee, 0x0010aef2, 0x0010aef5, - 0x0010c96b, 0x0010c983, 0x0010c987, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x4803c856, 0x40000000, - 0x40000000, 0x1c01f000, 0x40000000, 0x40000000, - 0x1c01f000, 0x59300008, 0x8c000536, 0x0502000b, - 0x5930001e, 0x4803c857, 0x59300416, 0x4933c857, - 0x4803c857, 0x8c000502, 0x05000005, 0x4803c857, - 0x84000540, 0x48026416, 0x1c01f000, 0x42000000, - 0xd0000000, 0x41300800, 0x05adfe2c, 0x0501f80e, - 0x0502000c, 0x59300c16, 0x59300403, 0xb0000580, - 0x05000003, 0x84040d40, 0x0501f004, 0x59a8005c, - 0x9000040a, 0x48026205, 0x84040d42, 0x48066416, - 0x1c01f000, 0x4933c857, 0x4d340000, 0x5932680a, - 0x59340a00, 0x8c04050e, 0x05a80ec0, 0x5930001e, - 0x80000540, 0x05020031, 0x59300403, 0x4803c857, - 0xb0000580, 0x05000003, 0x8d0c050e, 0x05020029, - 0x4d1c0000, 0x41323800, 0x05f1fcdd, 0x05000023, - 0x4932381e, 0x591c0416, 0x84000542, 0x48023c16, - 0x4936600a, 0x05d5fb44, 0x4926601d, 0x0501f960, - 0x591c0407, 0x90000583, 0x05000006, 0x591c0202, - 0x4802641b, 0x591c0402, 0x4802621b, 0x0501f005, - 0x591c0202, 0x4802621b, 0x591c0402, 0x4802641b, - 0x591c0017, 0x48026017, 0x491e602a, 0x64066407, - 0x64d66403, 0x64066203, 0x42000800, 0x80000040, - 0x0005feab, 0x411e6000, 0x5c023800, 0x80000580, - 0x5c026800, 0x1c01f000, 0x411e6000, 0x5c023800, - 0x59a8005e, 0x48026205, 0x90000541, 0x05fdf7f9, - 0x4933c857, 0x4d2c0000, 0x4932381e, 0x4a026202, - 0x0000ffff, 0x591e5809, 0x591c0008, 0x8c00051e, - 0x05000005, 0x8400051e, 0x48023808, 0x497a580d, - 0x0501f016, 0x592c040c, 0x8c000518, 0x05000013, - 0x84000518, 0x48025c0c, 0x4d400000, 0x592e820a, - 0x64065a0a, 0x0501fbf8, 0x49425a0a, 0x5c028000, - 0x497a580d, 0x592c040c, 0x8c000512, 0x05000007, - 0x4d2c0000, 0x84000512, 0x48025c0c, 0x592e580d, - 0x05adfa2b, 0x5c025800, 0x59a8005e, 0x48026205, - 0x591c0216, 0x48026218, 0x90000d81, 0x05000006, - 0x640a3a03, 0x90000585, 0x05000007, 0x497a6017, - 0x0501f01c, 0x591c0008, 0x84000540, 0x48023808, - 0x64123a03, 0x591c0416, 0x4803c857, 0x8400051c, - 0x84000554, 0x48023c16, 0x592c0013, 0x40001000, - 0x591c0818, 0x80040480, 0x05fe17f1, 0x591c0018, - 0x82000500, 0xfffffffc, 0x48026017, 0x48023818, + 0xb13805a0, 0x05020007, 0x59300403, 0xb0000c91, + 0x05aa19f5, 0xb0000480, 0x05a819f3, 0x0c01f002, + 0x1c01f000, 0x0010b437, 0x0010b436, 0x0010b436, + 0x0010b443, 0x0010b436, 0x0010b436, 0x0010b436, + 0x0010b436, 0x0010b436, 0x0010b443, 0x0010b436, + 0x0010b444, 0x0010b444, 0x0010b444, 0x0010b444, + 0x0010b436, 0x0010b447, 0x05a9f9df, 0x59340200, + 0x8c00050e, 0x05020002, 0x497a6205, 0x59300809, + 0x5804020e, 0x8c000502, 0x05000003, 0x64126203, + 0x1c01f000, 0x640a6203, 0x1c01f000, 0x1c01f000, + 0x497a6205, 0x64366203, 0x1c01f000, 0x0009f010, + 0x4803c856, 0xb13805a1, 0x05000006, 0xb13805a0, + 0x05020009, 0x59cc0002, 0x8c000526, 0x05000007, + 0x59300403, 0xb0000d83, 0x05000005, 0xb0000d89, + 0x05000003, 0x05f1fd11, 0x1c01f000, 0x59a80061, + 0x48026205, 0x640a6203, 0x5930001c, 0x80000540, + 0x05000003, 0x497a601c, 0x0801f800, 0x1c01f000, + 0x497a6205, 0x497a6009, 0x4a026003, 0x00500001, + 0x42000800, 0x80000043, 0x0005f6e2, 0x4933c857, + 0x4d340000, 0x5932680a, 0x59340200, 0x8c00050e, + 0x05000005, 0x59300407, 0x90000c92, 0x05021004, + 0x0c01f805, 0x5c026800, 0x1c01f000, 0x05fdfac1, + 0x05fdf7fd, 0x0010af34, 0x0010b487, 0x0010b48b, + 0x0010b48e, 0x0010d0b5, 0x0010d0cd, 0x0010d0d1, + 0x0010af34, 0x0010af34, 0x0010af34, 0x0010af34, + 0x0010af34, 0x0010af34, 0x0010af34, 0x0010af34, + 0x0010af34, 0x0010af34, 0x0010af34, 0x4803c856, + 0x40000000, 0x40000000, 0x1c01f000, 0x40000000, + 0x40000000, 0x1c01f000, 0x59300008, 0x8c000536, + 0x0502000b, 0x5930001e, 0x4803c857, 0x59300416, + 0x4933c857, 0x4803c857, 0x8c000502, 0x05000005, + 0x4803c857, 0x84000540, 0x48026416, 0x1c01f000, + 0x42000000, 0xd0000000, 0x41300800, 0x05adf92f, + 0x0501f80e, 0x0502000c, 0x59300c16, 0x59300403, + 0xb0000580, 0x05000003, 0x84040d40, 0x0501f004, + 0x59a8005f, 0x9000040a, 0x48026205, 0x84040d42, + 0x48066416, 0x1c01f000, 0x4933c857, 0x4d340000, + 0x5932680a, 0x59340a00, 0x8c04050e, 0x05a80962, + 0x5930001e, 0x80000540, 0x05020031, 0x59300403, + 0x4803c857, 0xb0000580, 0x05000003, 0x8d0c050e, + 0x05020029, 0x4d1c0000, 0x41323800, 0x05f1fc59, + 0x05000023, 0x4932381e, 0x591c0416, 0x84000542, + 0x48023c16, 0x4936600a, 0x05d5f874, 0x4926601d, + 0x0501f95f, 0x591c0407, 0x90000583, 0x05000006, + 0x591c0202, 0x4802641b, 0x591c0402, 0x4802621b, + 0x0501f005, 0x591c0202, 0x4802621b, 0x591c0402, + 0x4802641b, 0x591c0017, 0x48026017, 0x491e602a, + 0x64066407, 0x64d66403, 0x64066203, 0x42000800, + 0x80000040, 0x0005fee2, 0x411e6000, 0x5c023800, + 0x80000580, 0x5c026800, 0x1c01f000, 0x411e6000, + 0x5c023800, 0x59a80061, 0x48026205, 0x90000541, + 0x05fdf7f9, 0x4933c857, 0x4d2c0000, 0x4932381e, + 0x4a026202, 0x0000ffff, 0x591e5809, 0x591c0008, + 0x8c00051e, 0x05000005, 0x8400051e, 0x48023808, + 0x497a580d, 0x0501f016, 0x592c040c, 0x8c000518, + 0x05000013, 0x84000518, 0x48025c0c, 0x4d400000, + 0x592e820a, 0x64065a0a, 0x0501fc05, 0x49425a0a, + 0x5c028000, 0x497a580d, 0x592c040c, 0x8c000512, + 0x05000007, 0x4d2c0000, 0x84000512, 0x48025c0c, + 0x592e580d, 0x05a9fcc9, 0x5c025800, 0x59a80061, + 0x48026205, 0x591c0216, 0x48026218, 0x90000d81, + 0x05000006, 0x640a3a03, 0x90000585, 0x05000007, + 0x497a6017, 0x0501f01b, 0x591c0008, 0x84000540, + 0x48023808, 0x64123a03, 0x591c0416, 0x4803c857, + 0x8400051c, 0x84000554, 0x48023c16, 0x592c0013, + 0x40001000, 0x591c0818, 0x80040480, 0x05fe17f1, + 0x82040500, 0xfffffffc, 0x48026017, 0x48023818, 0x591c0a16, 0x4807c857, 0x90040d85, 0x05020005, 0x480bc857, 0x4803c857, 0x4a023814, 0xffffffff, 0x591c0402, 0x4802641b, 0x591c0202, 0x4802621b, 0x591e680a, 0x4936600a, 0x64066407, 0x64e66403, - 0x64066203, 0x42000800, 0x80000040, 0x0005feab, + 0x64066203, 0x42000800, 0x80000040, 0x0005fee2, 0x5c025800, 0x1c01f000, 0x4933c857, 0x59300416, 0x8c000514, 0x05000015, 0x8c00051c, 0x05020012, 0x59300018, 0x80100480, 0x05001006, 0x05000005, @@ -11287,89 +11645,89 @@ static const uint32_t isp_2500_risc_code[] = { 0x1c01f000, 0x59300c03, 0x4933c857, 0x4807c857, 0x900404b4, 0x05001005, 0x900404bc, 0x05021003, 0x80000580, 0x1c01f000, 0x90000541, 0x05fdf7fe, - 0x42000000, 0x0010e3b6, 0x0511f806, 0x4d340000, + 0x42000000, 0x00112357, 0x0511f9e9, 0x4d340000, 0x4d240000, 0x5932481d, 0x5932680a, 0x59300407, 0x90000c92, 0x05021003, 0x4803c857, 0x0c01f804, - 0x5c024800, 0x5c026800, 0x1c01f000, 0x0010aff5, - 0x0010aff7, 0x0010affa, 0x0010b035, 0x0010c948, - 0x0010c915, 0x0010c94c, 0x0010aff6, 0x0010aff5, - 0x0010aff6, 0x0010aff6, 0x0010aff6, 0x0010aff6, - 0x0010aff6, 0x0010aff6, 0x0010aff6, 0x0010aff6, - 0x0010aff6, 0x05a9fde5, 0x1c01f000, 0x40000000, + 0x5c024800, 0x5c026800, 0x1c01f000, 0x0010b58d, + 0x0010b58f, 0x0010b592, 0x0010b5cd, 0x0010d092, + 0x0010d05f, 0x0010d096, 0x0010b58e, 0x0010b58d, + 0x0010b58e, 0x0010b58e, 0x0010b58e, 0x0010b58e, + 0x0010b58e, 0x0010b58e, 0x0010b58e, 0x0010b58e, + 0x0010b58e, 0x05a9f888, 0x1c01f000, 0x40000000, 0x40000000, 0x1c01f000, 0x59300403, 0x82000d80, 0x00000085, 0x05020007, 0x4a026403, 0x0000008b, - 0x642e6203, 0x42000800, 0x80004040, 0x0005f6ab, + 0x642e6203, 0x42000800, 0x80004040, 0x0005f6e2, 0x82000d80, 0x0000008b, 0x0502002e, 0x4d3c0000, - 0x417a7800, 0x05b9fb23, 0x5c027800, 0x42000000, - 0x0010e454, 0x050dffcf, 0x05fdfcbb, 0x0500000e, + 0x417a7800, 0x05b5fe22, 0x5c027800, 0x42000000, + 0x001123f8, 0x0511f9b2, 0x05fdfcac, 0x0500000e, 0x4d2c0000, 0x59325809, 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, 0x641a5a0a, 0x497a580d, - 0x0001fb82, 0x59300a29, 0x90040d83, 0x05fc0d8d, - 0x5c025800, 0x60443000, 0x050dfd65, 0x64066403, - 0x497a6009, 0x05b9fdf6, 0x59240400, 0x8c00050a, + 0x0001fba8, 0x59300a29, 0x90040d83, 0x05fc0d8e, + 0x5c025800, 0x60443000, 0x050dff2a, 0x64066403, + 0x497a6009, 0x05b9f8fa, 0x59240400, 0x8c00050a, 0x0502000b, 0x41782800, 0x60103000, 0x4d400000, - 0x60a68000, 0x0509ff76, 0x5c028000, 0x64126407, + 0x60a68000, 0x050df925, 0x5c028000, 0x64126407, 0x641e6203, 0x6406642c, 0x1c01f000, 0x602c0800, - 0x05d1fcbd, 0x64066407, 0x64066203, 0x05e9f03e, + 0x05d1f938, 0x64066407, 0x64066203, 0x05e5f75f, 0x1c01f000, 0x59300416, 0x8c00051a, 0x05020021, 0x5930080a, 0x58040200, 0x8c00050e, 0x05000006, 0x59300a03, 0x90040590, 0x05000003, 0x90040583, - 0x05020018, 0x05f9ffcb, 0x59300203, 0x90000d89, + 0x05020018, 0x05f9ffa5, 0x59300203, 0x90000d89, 0x0500000b, 0x48026429, 0x4a026403, 0x00000085, 0x59300416, 0x8400055a, 0x8400055e, 0x48026416, - 0x64266203, 0x640a6407, 0x640e6229, 0x59a8005d, - 0x48026205, 0x42000800, 0x80004040, 0x0501fe48, - 0x0005feab, 0x4203e000, 0xb0800000, 0x6023f800, - 0x1c01f000, 0x41780800, 0x59a8105a, 0x60c80000, - 0x05e5ff32, 0x800811c0, 0x05020002, 0x60501000, - 0x480b505c, 0x59a8105b, 0x480b5050, 0x41780800, - 0x61900000, 0x05e5ff29, 0x800811c0, 0x05020002, - 0x60501000, 0x480b505d, 0x9008140a, 0x480b505e, - 0x60040800, 0x05e9fce2, 0x42000000, 0x30000000, - 0x40080800, 0x0001f93a, 0x600c0800, 0x59a8103d, - 0x05e9fccd, 0x05d5f088, 0x64a3505c, 0x6453505d, - 0x4a035050, 0x000007d0, 0x60781000, 0x480b505e, - 0x60040800, 0x05e9fcd2, 0x42000000, 0x30000000, - 0x40080800, 0x0001f93a, 0x600c0800, 0x59a8103d, - 0x05e9f4bd, 0x4933c857, 0x4d2c0000, 0x59300403, + 0x64266203, 0x640a6407, 0x640e6229, 0x59a80060, + 0x48026205, 0x42000800, 0x80004040, 0x0501fe56, + 0x0005fee2, 0x4203e000, 0xb0800000, 0x6023f800, + 0x1c01f000, 0x41780800, 0x59a8105d, 0x60c80000, + 0x05e5fe53, 0x800811c0, 0x05020002, 0x60501000, + 0x480b505f, 0x59a8105e, 0x480b5053, 0x41780800, + 0x61900000, 0x05e5fe4a, 0x800811c0, 0x05020002, + 0x60501000, 0x480b5060, 0x9008140a, 0x480b5061, + 0x60040800, 0x05e9fc08, 0x42000000, 0x30000000, + 0x40080800, 0x0001f942, 0x600c0800, 0x59a81040, + 0x05e9fbf3, 0x05d1f562, 0x64a3505f, 0x64535060, + 0x4a035053, 0x000007d0, 0x60781000, 0x480b5061, + 0x60040800, 0x05e9fbf8, 0x42000000, 0x30000000, + 0x40080800, 0x0001f942, 0x600c0800, 0x59a81040, + 0x05e9f3e3, 0x4933c857, 0x4d2c0000, 0x59300403, 0x900005be, 0x05020004, 0x59325819, 0x812e59c0, - 0x05ae0906, 0x5c025800, 0x1c01f000, 0x4933c857, + 0x05aa0ba5, 0x5c025800, 0x1c01f000, 0x4933c857, 0x813669c0, 0x0500000c, 0x59340200, 0x8c000508, 0x05000009, 0x4a026416, 0x00000100, 0x8c00050c, 0x59300008, 0x05000002, 0x84000544, 0x84000542, 0x48026008, 0x1c01f000, 0x59300416, 0x8c000510, - 0x1c01f000, 0x4937c857, 0x4d300000, 0x05f1fb60, + 0x1c01f000, 0x4937c857, 0x4d300000, 0x05f1fadd, 0x0500000d, 0x4926601d, 0x4936600a, 0x05fdffe8, - 0x64066407, 0x492e6009, 0x60240800, 0x05d1fc42, - 0x4d380000, 0x60ce7000, 0x0009f800, 0x5c027000, + 0x64066407, 0x492e6009, 0x60240800, 0x05d1f8bd, + 0x4d380000, 0x60ce7000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c580000, 0x4d3c0000, 0x59325809, - 0x91380595, 0x0502001d, 0x59a8b0b6, 0x90580c99, - 0x05001002, 0x6060b000, 0x8058b104, 0x0501fa5b, - 0x80000580, 0x0501fa6a, 0x912cac0d, 0x91cca406, - 0x050dffe3, 0x4c600000, 0x6004c000, 0x592c100e, + 0x91380595, 0x0502001d, 0x59a8b0bb, 0x90580c99, + 0x05001002, 0x6060b000, 0x8058b104, 0x0501fa69, + 0x80000580, 0x0501fa78, 0x912cac0d, 0x91cca406, + 0x0511f9c6, 0x4c600000, 0x6004c000, 0x592c100e, 0x8c080518, 0x05020006, 0x59240005, 0x592c1011, 0x80080580, 0x05020006, 0x4178c000, 0x5930100a, - 0x58081403, 0x417a7800, 0x05b9fad2, 0x5c00c000, - 0x05f1fd0e, 0x0501f005, 0x6008b000, 0x0501fa60, - 0x05f5f9eb, 0x0005ffdc, 0x5c027800, 0x5c00b000, + 0x58081403, 0x417a7800, 0x05b5fdd1, 0x5c00c000, + 0x05f1fcac, 0x0501f005, 0x6008b000, 0x0501fa6e, + 0x05f5f98d, 0x0009f810, 0x5c027800, 0x5c00b000, 0x5c025800, 0x1c01f000, 0x4933c856, 0x4a02601d, - 0x0010e512, 0x4936600a, 0x05fdffad, 0x64066407, - 0x492e6009, 0x4d380000, 0x61367000, 0x0009f800, + 0x001124b6, 0x4936600a, 0x05fdffad, 0x64066407, + 0x492e6009, 0x4d380000, 0x61367000, 0x0009f839, 0x5c027000, 0x90000541, 0x1c01f000, 0x4803c856, - 0x4d2c0000, 0x91380595, 0x05020025, 0x59a808b6, + 0x4d2c0000, 0x91380595, 0x05020025, 0x59a808bb, 0x59325809, 0x5930040d, 0x80040580, 0x05020020, 0x4c500000, 0x4c540000, 0x4c580000, 0x91cca406, 0x4050a800, 0x5930b40d, 0x9058b403, 0x8058b104, - 0x050dffe6, 0x91cca406, 0x592cb209, 0x9058b403, - 0x8058b104, 0x912cac0a, 0x050dffa5, 0x592e5801, + 0x0511f9c9, 0x91cca406, 0x592cb209, 0x9058b403, + 0x8058b104, 0x912cac0a, 0x0511f988, 0x592e5801, 0x812e59c0, 0x05fe07f9, 0x5931d82d, 0x58ef400b, 0x58ee580d, 0x4a025a08, 0x00000103, 0x58ec0009, 0x0801f800, 0x59300402, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x05f5f9b0, + 0x5c00a000, 0x5c025800, 0x1c01f000, 0x05f5f952, 0x5c025800, 0x1c01f000, 0x4933c857, 0x90040db5, - 0x05000005, 0x5930141b, 0x0501f83f, 0x05000025, - 0x0501f006, 0x4d300000, 0x5932602a, 0x0501f843, + 0x05000005, 0x5930141b, 0x0501f843, 0x05000025, + 0x0501f006, 0x4d300000, 0x5932602a, 0x0501f847, 0x5c026000, 0x0500001e, 0x591c0c07, 0x90040583, 0x05000003, 0x90040586, 0x0502001b, 0x591c0c02, 0x5930041b, 0x80040580, 0x05000009, 0x5930021b, @@ -11378,3242 +11736,3378 @@ static const uint32_t isp_2500_risc_code[] = { 0x82040580, 0x0000ffff, 0x05000005, 0x591c0202, 0x59300a1b, 0x80040580, 0x05020007, 0x591c000a, 0x5930080a, 0x80040580, 0x1c01f000, 0x417a3800, - 0x90000541, 0x1c01f000, 0x4803c856, 0x4203e000, - 0xb0800000, 0x600009fe, 0x4203f800, 0x30000000, - 0x40000000, 0x80040840, 0x05a80c90, 0x05ffb7fb, + 0x90000541, 0x1c01f000, 0x59a80c9f, 0x8c040502, + 0x0502000c, 0x4803c856, 0x4203e000, 0xb0800000, + 0x600009fe, 0x4203f800, 0x30000000, 0x40000000, + 0x80040840, 0x05a40f30, 0x05ffb7fb, 0x80040d81, 0x1c01f000, 0x4803c856, 0x4203e000, 0xb0800000, 0x4203f800, 0x20000000, 0x1c01f000, 0x59300808, 0x8c04051e, 0x592c0c0c, 0x05020002, 0x8c040518, - 0x1c01f000, 0x05fdfb66, 0x05000007, 0x800800ca, - 0x800808c8, 0x80040c00, 0x82063c00, 0x00111b00, - 0x491fc857, 0x1c01f000, 0x0501fd45, 0x05020007, + 0x1c01f000, 0x05fdfb53, 0x05000007, 0x800800ca, + 0x800808c8, 0x80040c00, 0x82063c00, 0x00115aa4, + 0x491fc857, 0x1c01f000, 0x0501fd4f, 0x05020007, 0x59301402, 0x05fdfff4, 0x05000007, 0x411c0000, 0x81300580, 0x05000003, 0x81780500, 0x0501f002, 0x81300540, 0x1c01f000, 0x4d300000, 0x83440480, - 0x000007f0, 0x05001003, 0x05d5f907, 0x0501f002, - 0x0001fb00, 0x05020008, 0x4936600a, 0x05d5f8fa, - 0x4926601d, 0x05b9f9b3, 0x80000580, 0x5c026000, - 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x4933c857, - 0x05fdfb49, 0x05a80c59, 0x4d2c0000, 0x4d340000, - 0x4d440000, 0x4c580000, 0x59325809, 0x5932680a, - 0x49425a0a, 0x05d9fe7a, 0x592e8c0a, 0x592c420b, - 0x9020050f, 0x0c01f806, 0x5c00b000, 0x5c028800, - 0x5c026800, 0x5c025800, 0x1c01f000, 0x0010b1a5, - 0x0010b1c6, 0x0010b1cc, 0x0010b1cf, 0x0010b1d7, - 0x0010b1a3, 0x0010b1a3, 0x0010b1a3, 0x0010b1da, - 0x0010b1e6, 0x0010b1e6, 0x0010b1a3, 0x0010b1a3, - 0x0010b1a3, 0x0010b1a3, 0x0010b1a3, 0x4803c857, - 0x05a9fc36, 0x814281c0, 0x05020011, 0x41785800, - 0x592c0408, 0x8c00051c, 0x05020002, 0x59345c05, - 0x442c2800, 0x59340008, 0x48002802, 0x59340009, - 0x48002801, 0x59340006, 0x48002804, 0x59340007, - 0x48002803, 0x602cb000, 0x0501f032, 0x592c020b, - 0x8c00051e, 0x6008b000, 0x0502002e, 0x9004b540, - 0x0500002c, 0x44042800, 0x5932680a, 0x59340400, - 0x48002801, 0x59340200, 0x90000501, 0x48002802, - 0x600cb000, 0x0501f023, 0x814281c0, 0x05fe07f0, - 0x59345c05, 0x442c2800, 0x6004b000, 0x0501f01d, - 0x9140b540, 0x0500001b, 0x0501f024, 0x814281c0, - 0x05020022, 0x59340200, 0x44002800, 0x59340001, - 0x48002801, 0x6008b000, 0x0501f012, 0x9140b540, - 0x0502001a, 0x0501f00f, 0x9140b540, 0x0500000d, - 0x8c20051c, 0x05020015, 0x05d5f880, 0x05000013, - 0x8c20050e, 0x05000002, 0x497a600a, 0x4178b000, - 0x497a5a0a, 0x0501f003, 0x9140b540, 0x0502000b, - 0x592c0408, 0x8400051c, 0x48025c08, 0x592c020b, - 0x82000500, 0x00003fff, 0x48025a0b, 0x0501f92b, - 0x497a6009, 0x0001f382, 0x592c020b, 0x8c00051e, - 0x6008b000, 0x05fe07f3, 0x9004b540, 0x05fc07f1, - 0x44042800, 0x6004b000, 0x05fdf7ee, 0x4937c857, - 0x4d300000, 0x05f1fa06, 0x0500000d, 0x4926601d, - 0x4936600a, 0x05fdfe8e, 0x64066407, 0x492e6009, - 0x602c0800, 0x05d1fae8, 0x4d380000, 0x610e7000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4937c857, 0x4d2c0000, 0x4d200000, - 0x59340013, 0x80024130, 0x59325809, 0x91380595, - 0x05020022, 0x59a800b6, 0x90000584, 0x0502001f, - 0x59240005, 0x592c100d, 0x80080580, 0x05020011, - 0x4d440000, 0x592e8c0a, 0x592c020b, 0x4803c856, - 0x82000500, 0x00000080, 0x84000548, 0x4d3c0000, - 0x60027820, 0x8c00050e, 0x05000002, 0x853e7d5c, - 0x05d1ffb7, 0x5c027800, 0x5c028800, 0x0501f003, - 0x4803c856, 0x05d5f831, 0x05fdfa9b, 0x05000011, - 0x4d400000, 0x60028000, 0x41780800, 0x05fdff4c, - 0x5c028000, 0x0501f00a, 0x05d5f828, 0x05fe07f7, - 0x05fdfa91, 0x05000007, 0x4c580000, 0x6008b000, - 0x0501f8fb, 0x5c00b000, 0x05f5f885, 0x0005ffdc, - 0x5c024000, 0x5c025800, 0x1c01f000, 0x4937c857, - 0x4d300000, 0x05f1f9be, 0x0500000f, 0x4926601d, - 0x4936600a, 0x05fdfe46, 0x64066407, 0x4d3c0000, - 0x4d380000, 0x417a7800, 0x05d1fa95, 0x492e6009, - 0x60127000, 0x0009f800, 0x5c027000, 0x5c027800, - 0x90000541, 0x5c026000, 0x1c01f000, 0x4937c857, - 0x4d300000, 0x05f1f9aa, 0x0500000d, 0x4926601d, - 0x4936600a, 0x05fdfe32, 0x600c0800, 0x05d1fa8e, - 0x64066407, 0x492e6009, 0x4d380000, 0x61467000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4933c857, 0x4c580000, 0x4d240000, - 0x4d200000, 0x4d400000, 0x4d440000, 0x4d3c0000, - 0x5932481d, 0x59240a00, 0x8c040500, 0x0500008b, - 0x05b9fba3, 0x59325809, 0x91383595, 0x05020056, - 0x60100800, 0x05d1fa74, 0x60040800, 0x05d1fb5b, - 0x812e59c0, 0x05020043, 0x59a800bb, 0x80000040, - 0x480350bb, 0x050dfea5, 0x05000004, 0x59240200, - 0x8400051a, 0x48024a00, 0x417a8000, 0x59cc0000, - 0x82000500, 0x00ffffff, 0x59240805, 0x4803c857, - 0x4807c857, 0x800409c0, 0x05000016, 0x80041580, - 0x05000014, 0x4c000000, 0x60aa8000, 0x59240400, + 0x000007f0, 0x05001006, 0x83440480, 0x00000800, + 0x05021003, 0x05d1fe31, 0x0501f002, 0x0001fb08, + 0x05020008, 0x4936600a, 0x05d1fe24, 0x4926601d, + 0x05b5fcab, 0x80000580, 0x5c026000, 0x1c01f000, + 0x90000541, 0x05fdf7fd, 0x4933c857, 0x05fdfb33, + 0x05a40ef5, 0x4d2c0000, 0x4d340000, 0x4d440000, + 0x4c580000, 0x59325809, 0x5932680a, 0x49425a0a, + 0x05d9fbee, 0x592e8c0a, 0x592c420b, 0x9020050f, + 0x0c01f806, 0x5c00b000, 0x5c028800, 0x5c026800, + 0x5c025800, 0x1c01f000, 0x0010b744, 0x0010b765, + 0x0010b76b, 0x0010b76e, 0x0010b776, 0x0010b742, + 0x0010b742, 0x0010b742, 0x0010b779, 0x0010b785, + 0x0010b785, 0x0010b742, 0x0010b742, 0x0010b742, + 0x0010b742, 0x0010b742, 0x4803c857, 0x05a5fed2, + 0x814281c0, 0x05020011, 0x41785800, 0x592c0408, + 0x8c00051c, 0x05020002, 0x59345c05, 0x442c2800, + 0x59340008, 0x48002802, 0x59340009, 0x48002801, + 0x59340006, 0x48002804, 0x59340007, 0x48002803, + 0x602cb000, 0x0501f032, 0x592c020b, 0x8c00051e, + 0x6008b000, 0x0502002e, 0x9004b540, 0x0500002c, + 0x44042800, 0x5932680a, 0x59340400, 0x48002801, + 0x59340200, 0x90000501, 0x48002802, 0x600cb000, + 0x0501f023, 0x814281c0, 0x05fe07f0, 0x59345c05, + 0x442c2800, 0x6004b000, 0x0501f01d, 0x9140b540, + 0x0500001b, 0x0501f024, 0x814281c0, 0x05020022, + 0x59340200, 0x44002800, 0x59340001, 0x48002801, + 0x6008b000, 0x0501f012, 0x9140b540, 0x0502001a, + 0x0501f00f, 0x9140b540, 0x0500000d, 0x8c20051c, + 0x05020015, 0x05d1fdaa, 0x05000013, 0x8c20050e, + 0x05000002, 0x497a600a, 0x4178b000, 0x497a5a0a, + 0x0501f003, 0x9140b540, 0x0502000b, 0x592c0408, + 0x8400051c, 0x48025c08, 0x592c020b, 0x82000500, + 0x00003fff, 0x48025a0b, 0x0501f932, 0x497a6009, + 0x0001f3a8, 0x592c020b, 0x8c00051e, 0x6008b000, + 0x05fe07f3, 0x9004b540, 0x05fc07f1, 0x44042800, + 0x6004b000, 0x05fdf7ee, 0x4937c857, 0x4d300000, + 0x05f1f97c, 0x0500000d, 0x4926601d, 0x4936600a, + 0x05fdfe87, 0x64066407, 0x492e6009, 0x602c0800, + 0x05cdff5c, 0x4d380000, 0x610e7000, 0x0009f839, + 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, + 0x4937c857, 0x4d2c0000, 0x4d200000, 0x59340013, + 0x80024130, 0x59325809, 0x91380595, 0x05020022, + 0x59a800bb, 0x90000584, 0x0502001f, 0x59240005, + 0x592c100d, 0x80080580, 0x05020011, 0x4d440000, + 0x592e8c0a, 0x592c020b, 0x4803c856, 0x82000500, + 0x00000080, 0x84000548, 0x4d3c0000, 0x60027820, + 0x8c00050e, 0x05000002, 0x853e7d5c, 0x05d1fcdd, + 0x5c027800, 0x5c028800, 0x0501f003, 0x4803c856, + 0x05d1fd5b, 0x05fdfa85, 0x05000011, 0x4d400000, + 0x60028000, 0x41780800, 0x05fdff4c, 0x5c028000, + 0x0501f00a, 0x05d1fd52, 0x05fe07f7, 0x05fdfa7b, + 0x05000007, 0x4c580000, 0x6008b000, 0x0501f902, + 0x5c00b000, 0x05f5f820, 0x0009f810, 0x5c024000, + 0x5c025800, 0x1c01f000, 0x4937c857, 0x4d300000, + 0x05f1f934, 0x0500000f, 0x4926601d, 0x4936600a, + 0x05fdfe3f, 0x64066407, 0x4d3c0000, 0x4d380000, + 0x417a7800, 0x05cdff09, 0x492e6009, 0x60127000, + 0x0009f839, 0x5c027000, 0x5c027800, 0x90000541, + 0x5c026000, 0x1c01f000, 0x4937c857, 0x4d300000, + 0x05f1f920, 0x0500000d, 0x4926601d, 0x4936600a, + 0x05fdfe2b, 0x600c0800, 0x05cdff02, 0x64066407, + 0x492e6009, 0x4d380000, 0x61467000, 0x0009f839, + 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, + 0x4933c857, 0x4c580000, 0x4d240000, 0x4d200000, + 0x4d400000, 0x4d440000, 0x4d3c0000, 0x5932481d, + 0x59240a00, 0x8c040500, 0x05000092, 0x05b5fea0, + 0x59325809, 0x91383595, 0x05020051, 0x60100800, + 0x05cdfee8, 0x812e59c0, 0x0502003e, 0x59a800c0, + 0x80000040, 0x480350c0, 0x0511f883, 0x05000004, + 0x59240200, 0x8400051a, 0x48024a00, 0x417a8000, + 0x05f5fc6b, 0x05000012, 0x60aa8000, 0x59240400, 0x8c00050a, 0x05020004, 0x60083000, 0x61fe89ff, - 0x0509fd0e, 0x417a7800, 0x05b9fbcb, 0x05b9fc3c, + 0x0509fec1, 0x417a7800, 0x05b5fedd, 0x05b5ff4f, 0x600a8000, 0x59cc0c08, 0x8c04051e, 0x05020004, - 0x59240a00, 0x84040d56, 0x48064a00, 0x5c000000, + 0x59240a00, 0x84040d56, 0x48064a00, 0x60040800, + 0x05d1f804, 0x59cc0000, 0x82000500, 0x00ffffff, 0x48024805, 0x40000800, 0x812000f0, 0x80040540, 0x48026813, 0x40040000, 0xb1200c80, 0x05021004, 0x49238830, 0x84000570, 0x48038832, 0x59240200, 0x8400051e, 0x82000540, 0x00000206, 0x48024a00, 0x59240400, 0x8c00050c, 0x05000004, 0x65466429, - 0x0501f84d, 0x0501f045, 0x60040000, 0x41781800, - 0x05d5fb94, 0x0501ff8c, 0x0005ffdc, 0x0501f03f, - 0x592c000c, 0x82000500, 0x00ffffff, 0x05020008, - 0x05d9fd3f, 0x59cc0000, 0x82000500, 0x00ffffff, - 0x44002800, 0x6004b000, 0x0501f850, 0x05f1fb17, - 0x0501f032, 0x812e59c0, 0x0502002d, 0x59340412, - 0x800001c0, 0x05000027, 0x80000040, 0x48026c12, - 0x59cc0c07, 0x82043500, 0x000000ff, 0x481bc857, - 0x90180583, 0x05020017, 0x59cc0207, 0x4803c857, + 0x0501f85b, 0x0501f053, 0x60040000, 0x41781800, + 0x05d5f8e0, 0x0505f8a7, 0x0009f810, 0x0501f04d, + 0x60040800, 0x05cdffe3, 0x592c000c, 0x82000500, + 0x00ffffff, 0x05020008, 0x05d9fab8, 0x59cc0000, + 0x82000500, 0x00ffffff, 0x44002800, 0x6004b000, + 0x0501f85c, 0x05f1fab3, 0x0501f03e, 0x812e59c0, + 0x05020039, 0x600c0800, 0x05b9f873, 0x05020003, + 0x0505f8f0, 0x0501f037, 0x59340412, 0x800001c0, + 0x0500002e, 0x80000040, 0x48026c12, 0x59cc0c07, + 0x82043500, 0x000000ff, 0x481bc857, 0x90180585, + 0x05000020, 0x90180583, 0x05020016, 0x59cc0207, 0x82000d00, 0x0000ff00, 0x4807c857, 0x82040580, 0x00000d00, 0x0502000f, 0x59240805, 0x82040d00, 0x00ffffff, 0x0500000b, 0x59240a00, 0x84040d48, - 0x48064a00, 0x602c0800, 0x05d1fa03, 0x64066407, - 0x64066203, 0x64066403, 0x05e5fd83, 0x0501f00f, - 0x600c0800, 0x05d1f9fc, 0x4a026202, 0x0000ffff, - 0x64066203, 0x65466403, 0x05e5fd7b, 0x0501f007, - 0x600c2800, 0x0501fe40, 0x0501f004, 0x6008b000, - 0x0501f83b, 0x05f1ffc6, 0x5c027800, 0x5c028800, - 0x5c028000, 0x5c024000, 0x5c024800, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x61f2880f, 0x42003000, - 0x00fffffc, 0x05d1fa0b, 0x05aa0ad0, 0x4936600a, - 0x05fdfd83, 0x417a7800, 0x05d1f9d5, 0x600c0800, - 0x05d1f9dd, 0x497a6c12, 0x59300429, 0x900005a1, - 0x05020003, 0x599c0208, 0x48026c12, 0x64066203, - 0x640a6403, 0x05e5f558, 0x492fc857, 0x4c580000, - 0x4c000000, 0x8058b1c0, 0x0500000a, 0x82580500, - 0xfffffff0, 0x05aa0ab9, 0x8058b0d0, 0x592c040c, - 0x82000500, 0xfffff0ff, 0x80580540, 0x48025c0c, - 0x5c000000, 0x5c00b000, 0x1c01f000, 0x492fc857, - 0x4c000000, 0x4c040000, 0x800000d8, 0x592c0c0c, - 0x82040d00, 0xffff0fff, 0x80040540, 0x48025c0c, - 0x5c000800, 0x5c000000, 0x1c01f000, 0x4933c857, - 0x4d2c0000, 0x59325809, 0x592c020b, 0x8400055e, - 0x48025a0b, 0x4c500000, 0x4c540000, 0x4c580000, - 0x05fdffda, 0x05d9fcc2, 0x64602800, 0x80142800, - 0x8058b040, 0x91cca407, 0x4014a800, 0x050dfd60, - 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, - 0x1c01f000, 0x59325809, 0x592c0208, 0x82000580, - 0x00000152, 0x1c01f000, 0x59325809, 0x592c020b, - 0x8400055c, 0x48025a0b, 0x1c01f000, 0x59300809, - 0x58040208, 0x82000500, 0x000000ff, 0xb00005b9, - 0x1c01f000, 0x5930002b, 0x80000540, 0x05ae0bb1, - 0x1c01f000, 0x59300008, 0x82000500, 0x04000800, - 0x82000580, 0x04000800, 0x05020003, 0x59300221, - 0x48025c13, 0x1c01f000, 0x592c040b, 0x82000500, - 0x0000f000, 0x82000580, 0x00003000, 0x05020003, - 0x4a026416, 0x00000100, 0x1c01f000, 0x4d2c0000, - 0x59325809, 0x59300203, 0x4933c857, 0x492fc857, - 0x493bc857, 0x4803c857, 0x90003491, 0x05aa1a5f, - 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010b390, - 0x0010b396, 0x0010b3ce, 0x0010b390, 0x0010b390, - 0x0010b390, 0x0010b390, 0x0010b390, 0x0010b391, - 0x0010b390, 0x0010b390, 0x0010b390, 0x0010b390, - 0x0010b390, 0x0010b4a6, 0x0010b390, 0x0010b390, - 0x05a9fa4a, 0xb13834a0, 0x05aa1a48, 0x493a6403, - 0x64066203, 0x05e5f4dc, 0x91380593, 0x05020010, - 0x492fc857, 0x05fdfd05, 0x05000003, 0x643a6203, - 0x0501f005, 0x592c0010, 0x800001c0, 0x05000005, - 0x640a6203, 0x59a8005c, 0x48026006, 0x1c01f000, - 0x64025a0a, 0x0001fb82, 0x0005f7dc, 0x913805a7, - 0x0500001e, 0x91380594, 0x05000018, 0x05fdfcf3, - 0x0500000c, 0xb13805a1, 0x05000004, 0xb13805a0, - 0x05fe07f3, 0x4937c857, 0x05e9fd07, 0x05f20081, - 0x59300203, 0x9000058e, 0x050000f0, 0x05a9fa23, - 0x91380595, 0x05000003, 0x91380596, 0x05aa0a1f, - 0x05e9fcfd, 0x05f20077, 0x59300203, 0x90000582, - 0x05aa0a1a, 0x0501f00d, 0x4937c857, 0x05e9f8a6, - 0x64465812, 0x0501f004, 0x4937c857, 0x05e9f8a2, - 0x64425812, 0x64c65a0a, 0x64125811, 0x0001fb82, - 0x05d5f8a4, 0x05f1f003, 0x59341400, 0x82081d00, - 0x000000ff, 0x59300c03, 0x480bc857, 0x4807c857, - 0xb0040593, 0x05000020, 0x90040582, 0x0500000f, - 0x90040581, 0x05000010, 0x90040583, 0x05000013, - 0x90040585, 0x05000014, 0x900405b3, 0x05000012, - 0x90040580, 0x05000013, 0x90040584, 0x05aa09f7, - 0x0501f8a6, 0x0501f010, 0x900c0583, 0x05000868, - 0x0501f00d, 0x900c058b, 0x0502000b, 0x601c0800, - 0x05d1f901, 0x0501f008, 0x900c0585, 0x0500087b, - 0x0501f005, 0x900c0589, 0x05000896, 0x0501f002, - 0x0501f89b, 0x654a6403, 0x59a810b6, 0x592c040f, - 0x8c000500, 0x05000002, 0x60201000, 0x592c040f, - 0x8c000516, 0x05000002, 0x90081418, 0x592c0010, - 0x497a5811, 0x497a5812, 0x80080c80, 0x05000007, - 0x05001004, 0x641e5a0a, 0x40001000, 0x0501f004, - 0x64565a0a, 0x0501f002, 0x64025a0a, 0x480a5810, - 0x4d2c0000, 0x05a9fd64, 0x0500003c, 0x5c001000, - 0x41cc0800, 0x5808040f, 0x8c000516, 0x05020002, - 0x91cc0c06, 0x58081810, 0x58082015, 0x58082816, - 0x58080004, 0x48025806, 0x48065803, 0x480a580a, - 0x480e5805, 0x48125807, 0x48165808, 0x64025801, - 0x4a025809, 0x0010150e, 0x900c1c03, 0x800c1904, - 0x50040000, 0x9c0001c0, 0x44000800, 0x80040800, - 0x800c1840, 0x05fe07fb, 0x5808040f, 0x8c000500, - 0x0500000b, 0x41cc0800, 0x8c000516, 0x05000002, - 0x91cc0c06, 0x64040800, 0x80040800, 0x46000800, - 0x00000900, 0x84000500, 0x4800140f, 0x42007000, - 0x000211a7, 0x58380000, 0x90000580, 0x0502000b, - 0x58380807, 0x58380005, 0x80040540, 0x05020007, - 0x412c1000, 0x0001f821, 0x59dc0806, 0x8c04053e, - 0x05fc07fe, 0x0001f066, 0x412c1000, 0x0001f821, - 0x850e1d5c, 0x05e1f18d, 0x5c025800, 0x64b25a0a, - 0x497a5810, 0x0001fb82, 0x0005f7dc, 0x91380595, - 0x05020008, 0x59a800d1, 0x8c000502, 0x05020007, - 0x41780800, 0x05d1f981, 0x60100800, 0x05d1f096, - 0x601c0800, 0x05d1f094, 0x05d5fc54, 0x60401000, - 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, - 0x82000580, 0x00ff0000, 0x05fc07f2, 0x60201000, - 0x05d5f84b, 0x05fc07ef, 0x592c040f, 0x84000540, - 0x48025c0f, 0x05fdf7ef, 0x91380595, 0x0502000b, - 0x59a800d1, 0x8c000502, 0x0502000a, 0x05d1f9dc, - 0x4d3c0000, 0x417a7800, 0x05d1f871, 0x5c027800, - 0x60180800, 0x05d1f078, 0x60100800, 0x05d1f076, - 0x05d5fc36, 0x60401000, 0x05020008, 0x59340002, - 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, - 0x05fc07ef, 0x60201000, 0x05d5f82d, 0x05fc07ec, - 0x592c040f, 0x84000540, 0x48025c0f, 0x05fdf7ef, - 0x60100800, 0x05d1f064, 0x91380595, 0x05020003, - 0x0509f9c4, 0x05d00c20, 0x1c01f000, 0x91380595, - 0x05020015, 0x4c580000, 0x91cc1408, 0x6008b000, - 0x91341c06, 0x05f5fbb2, 0x0502000e, 0x91cc140a, - 0x6008b000, 0x91341c08, 0x05f5fbad, 0x05020009, - 0x59342200, 0x59cc1007, 0x800811c0, 0x05000003, - 0x480a6801, 0x84102542, 0x8410251a, 0x48126a00, - 0x5c00b000, 0x1c01f000, 0x4803c856, 0xb13805a1, - 0x05000019, 0xb13805a0, 0x05000017, 0xb13805a2, - 0x05020003, 0x644a5812, 0x0501f004, 0xb13805a3, - 0x0502001b, 0x644e5812, 0x64c65a0a, 0x64125811, - 0x59cc0001, 0x48025813, 0x59cc0002, 0x48025814, - 0x59cc0003, 0x48025815, 0x59cc0004, 0x48025816, - 0x59cc0005, 0x48025817, 0x0001fb82, 0x05d1ffb1, - 0x0005f7dc, 0x592c0010, 0x800001c0, 0x05000005, - 0x59a8005c, 0x48026006, 0x640a6203, 0x1c01f000, - 0x64025a0a, 0x0001fb82, 0x0005ffdc, 0x1c01f000, - 0x42000000, 0x0010e46c, 0x050dfb0e, 0x05e9f844, - 0x59300203, 0x4933c857, 0x4803c857, 0x90000c91, - 0x05aa1906, 0x0c01f802, 0x05e9f02e, 0x0010b4e9, - 0x0010b4f2, 0x0010b4ea, 0x0010b4e8, 0x0010b4e8, - 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, - 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, - 0x0010b4e8, 0x0010b4ea, 0x0010b4e8, 0x0010b4e8, - 0x05a9f8f2, 0x1c01f000, 0x59300403, 0xb0000592, - 0x05f804d3, 0x05d1ff83, 0x59325809, 0x641a5a0a, - 0x0001fb82, 0x05edf6df, 0x59301804, 0x840c0520, - 0x48026004, 0x598c000b, 0x81300580, 0x0502000f, - 0x8c0c0520, 0x0502000f, 0x42001000, 0x0010e387, - 0x50081000, 0x58080002, 0x82000580, 0x00000100, - 0x0500000b, 0x5808000c, 0x81300580, 0x05aa08d7, - 0x4978100c, 0x0501f003, 0x8c0c0520, 0x05fe07e3, - 0x05e5fcae, 0x05fc07e1, 0x05a9f8d0, 0x05e9fb05, - 0x05fc07fc, 0x59300203, 0x90000c91, 0x05aa18cb, - 0x0c01f7c7, 0x4933c857, 0x4c500000, 0x4c540000, - 0x4c580000, 0x592c0c0b, 0x48065817, 0x59cc0809, - 0x4806580b, 0x59cc0808, 0x4806580f, 0x59a808d0, - 0x82040500, 0x000003ff, 0x800010c4, 0x8c040514, - 0x05000004, 0x59cc0002, 0x90000503, 0x80081480, - 0x480a621c, 0x412c0800, 0x05a9fc4b, 0x05a808b3, - 0x492c080d, 0x5804040c, 0x84000552, 0x84000540, - 0x48000c0c, 0x90081403, 0x80081104, 0x91cca406, - 0x912cac08, 0x60400800, 0x90080490, 0x05021003, - 0x40080800, 0x80000580, 0x4004b000, 0x4c000000, - 0x050dfbaa, 0x5c000000, 0x800001c0, 0x0500000a, - 0x412c1000, 0x4c000000, 0x05a9fc33, 0x05a8089b, - 0x492c1001, 0x912cac08, 0x5c000000, 0x40001000, - 0x05fdf7ee, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c380000, - 0x59325809, 0x5930021c, 0x48025a0c, 0x59301013, - 0x640a6203, 0x592c020e, 0x8c000500, 0x05000004, - 0x59300017, 0x592c1013, 0x80081480, 0x40080000, - 0x0501f962, 0x80001540, 0x05020007, 0x64025a0a, - 0x592c000f, 0x82000500, 0x00000c00, 0x05000009, - 0x0501f009, 0x8c08053e, 0x05000005, 0x641e5a0a, - 0x80081080, 0x80081000, 0x0501f002, 0x64565a0a, - 0x480a580b, 0x42000000, 0x001102f0, 0x50007000, - 0x5838000b, 0x80000540, 0x05020007, 0x4930700c, - 0x4930700b, 0x58380002, 0x90000580, 0x05020808, - 0x0501f004, 0x90001400, 0x45301000, 0x4930700b, - 0x5c007000, 0x5c025800, 0x1c01f000, 0x4933c857, - 0x592c000d, 0x40001000, 0x4800700a, 0x90080408, - 0x48007003, 0x592c0011, 0x592c1012, 0x592c1804, - 0x480c7006, 0x48007007, 0x48087008, 0x592c0017, - 0x592c120c, 0x80080c80, 0x05001002, 0x40001000, - 0x90081403, 0x80081104, 0x90080490, 0x05021003, - 0x80000580, 0x0501f002, 0x60401000, 0x4800700d, - 0x48087004, 0x800810c4, 0x48087005, 0x40381000, - 0x0001f021, 0x4d2c0000, 0x05a9fbd7, 0x05a8083f, - 0x42000800, 0x001102f0, 0x452c0800, 0x497a580b, - 0x497a580c, 0x497a580d, 0x4a025809, 0x0010b5a9, - 0x4a025802, 0x00000100, 0x64025801, 0x5c025800, - 0x1c01f000, 0x4833c857, 0x4d300000, 0x4d2c0000, - 0x4c5c0000, 0x4030b800, 0x585c000a, 0x80025d40, - 0x05020004, 0x585c000c, 0x4c000000, 0x0501f03b, - 0x585c0002, 0x82000580, 0x00000100, 0x0502001c, - 0x592c0801, 0x4c040000, 0x05a9fbd8, 0x5c000800, - 0x800409c0, 0x05000017, 0x4804b80a, 0x585c100d, - 0x800811c0, 0x05020004, 0x40065800, 0x05a9fbd8, - 0x0501f010, 0x90080490, 0x05021003, 0x80000580, - 0x0501f002, 0x60401000, 0x4800b80d, 0x4808b804, - 0x800810c4, 0x4808b805, 0x90040408, 0x4800b803, - 0x405c1000, 0x0001f821, 0x0501f022, 0x0501f825, - 0x585c000c, 0x80026540, 0x59300000, 0x80000d40, - 0x05020002, 0x4800b80b, 0x4800b80c, 0x497a6000, - 0x4c000000, 0x4978b80a, 0x59325809, 0x4a025a08, - 0x00000103, 0x59300402, 0x48025c0a, 0x592c100f, - 0x4c080000, 0x0001fb82, 0x0501f8cb, 0x05f9ffc1, - 0x5c001000, 0x8c080518, 0x05000003, 0x05fdf8dc, - 0x0501f002, 0x0005ffdc, 0x405c7000, 0x5c000000, - 0x80026540, 0x05000003, 0x59325809, 0x05fdff88, - 0x5c00b800, 0x5c025800, 0x5c026000, 0x1c01f000, - 0x483bc857, 0x5838000a, 0x40025800, 0x05a9fba0, - 0x5838000c, 0x80026540, 0x59300009, 0x80025d40, - 0x640a5a0a, 0x1c01f000, 0x4803c857, 0x4933c857, - 0x4d1c0000, 0x497a601e, 0x41323800, 0x40026000, - 0x4d3c0000, 0x60167800, 0x0501f838, 0x5c027800, - 0x411e6000, 0x4933c857, 0x59300416, 0x84000502, - 0x48026416, 0x5c023800, 0x1c01f000, 0x481bc857, - 0x4933c857, 0x4c5c0000, 0x4c600000, 0x4010b800, - 0x4014c000, 0x0509ff6a, 0x05b5fffd, 0x59240400, - 0x8c00050a, 0x05020006, 0x40602800, 0x405c3000, - 0x0509f986, 0x90000541, 0x0501f002, 0x80000580, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c856, - 0x4d300000, 0x42026000, 0x00111b00, 0x59a8003b, - 0x81640580, 0x05000013, 0x59300c07, 0x90040581, - 0x05000009, 0x90040584, 0x05000004, 0x90040590, - 0x05f80b17, 0x0501f007, 0x59300203, 0x90000d87, - 0x05000004, 0x4807c857, 0x05fdf98f, 0x05020807, - 0x91326430, 0x41580000, 0x81300480, 0x05fc17ec, - 0x5c026000, 0x1c01f000, 0x4933c857, 0x59300403, - 0x4803c857, 0x05e5fece, 0x4df00000, 0x59301407, - 0x59300203, 0x4803c857, 0x90080d82, 0x05000016, - 0x90080d81, 0x0500000b, 0x90080d84, 0x05000005, - 0x4933c856, 0x5c03e000, 0x05e40eb2, 0x0501f03e, - 0x90000d88, 0x0500002e, 0x90000d87, 0x0500002c, - 0x90000d81, 0x05000013, 0x90000d82, 0x05000028, - 0x90000d85, 0x05000026, 0x90000d8e, 0x05000024, - 0x05a5ff7a, 0x90000d89, 0x0500000a, 0x90000d8b, - 0x05000008, 0x90000d8a, 0x0500001d, 0x90000d8c, - 0x0500001b, 0x90000d8e, 0x05000019, 0x05a5ff6f, - 0x598c000b, 0x81300580, 0x05020003, 0x05e9f9a1, - 0x05020013, 0x59300004, 0x4803c857, 0x8c000520, - 0x05000004, 0x84000520, 0x48026004, 0x0501f00c, - 0x05e5fb3e, 0x05a60f61, 0x5c03e000, 0x05e40e89, - 0x59300407, 0x90000d82, 0x05000013, 0x05d1fdf1, - 0x05f9ff4a, 0x05f00c42, 0x0501f00f, 0x5c03e000, - 0x05e40e80, 0x59300407, 0x90000d82, 0x0500000a, - 0x5930081d, 0x58040200, 0x8c000500, 0x050002a9, - 0x05d1fde4, 0x05f9ff3d, 0x05f00c35, 0x8d3c0500, - 0x05000003, 0x0509ffc5, 0x05edf53e, 0x64066229, - 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, - 0x42000800, 0x80000040, 0x0005f6ab, 0x60007040, - 0x4203e000, 0xb0800000, 0x6033f800, 0x40000000, - 0x40000000, 0x40000000, 0x0501b004, 0x80387040, - 0x05a40f36, 0x05fdf7f9, 0x1c01f000, 0x83300480, - 0x00111a40, 0x05001006, 0x41540000, 0x81300480, - 0x05021003, 0x80000580, 0x1c01f000, 0x81780080, - 0x1c01f000, 0x59300027, 0x80000540, 0x05000006, - 0x4d2c0000, 0x40025800, 0x05a9fadc, 0x497a6027, - 0x5c025800, 0x1c01f000, 0x592c720e, 0x8c380500, - 0x05020008, 0x59307008, 0x8c380516, 0x05000005, - 0x59307009, 0x58387013, 0x59300014, 0x80380480, - 0x1c01f000, 0x59a808b6, 0x59cc2808, 0x4c5c0000, - 0x4178b800, 0x8c14051e, 0x05000002, 0x805cb800, - 0x82140500, 0x00000c00, 0x05000004, 0x905c0410, - 0x80040480, 0x05001018, 0x80001580, 0x8c140512, - 0x05000005, 0x905c0414, 0x80040480, 0x05001012, - 0x59cc100a, 0x80000580, 0x8c140510, 0x05000005, - 0x905c0418, 0x80040480, 0x0500100b, 0x59cc000b, - 0x80080400, 0x05001008, 0x05000005, 0x905c0418, - 0x80040480, 0x05001004, 0x80000580, 0x5c00b800, - 0x1c01f000, 0x42000000, 0x0010e449, 0x050df8f1, - 0x90000541, 0x05fdf7fa, 0x4933c857, 0x4937c857, - 0x4923c857, 0x4927c857, 0x492fc857, 0x48efc857, - 0x4d1c0000, 0x4d300000, 0x41323800, 0x05edfd0c, - 0x0500001f, 0x48ee602d, 0x4926601d, 0x4936600a, - 0x05fdf993, 0x591c0407, 0x90000583, 0x05000008, - 0x591c0202, 0x4803c857, 0x4802641b, 0x591c0402, - 0x4802621b, 0x4803c857, 0x0501f009, 0x591c0017, - 0x48026017, 0x591c0202, 0x4803c857, 0x4802621b, - 0x591c0402, 0x4802641b, 0x4803c857, 0x491e602a, - 0x64066407, 0x492e6009, 0x4d380000, 0x615e7000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x5c023800, 0x1c01f000, 0x4933c857, 0x493bc857, - 0x4937c857, 0x4d2c0000, 0x4c500000, 0x4c540000, - 0x4c580000, 0x59325809, 0x05f9fda7, 0x05000017, - 0x91cca406, 0x912cac0a, 0x91380596, 0x05020007, - 0x59a800b6, 0x90000588, 0x0502000e, 0x492fc857, - 0x6008b000, 0x0501f008, 0x91380595, 0x05020009, - 0x492fc857, 0x59a800b6, 0x90000598, 0x05020005, - 0x6018b000, 0x050df972, 0x05edfeac, 0x0501f003, - 0x05f1fb8b, 0x0005ffdc, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4933c857, - 0x05e5fdd3, 0x4df00000, 0x59300203, 0x90000c91, - 0x05a61e96, 0x0c01f001, 0x0010b758, 0x0010b757, - 0x0010b75d, 0x0010b775, 0x0010b75c, 0x0010b757, - 0x0010b757, 0x0010b757, 0x0010b757, 0x0010b757, - 0x0010b757, 0x0010b757, 0x0010b757, 0x0010b757, - 0x0010b757, 0x0010b757, 0x0010b75d, 0x05a5fe83, - 0x5c03e000, 0x05e40dab, 0x80000580, 0x1c01f000, - 0x05adf8ed, 0x5c03e000, 0x05e40da6, 0x8d3c0502, - 0x05020011, 0x4d2c0000, 0x59325809, 0x64165a0a, - 0x0001fb82, 0x5c025800, 0x497a6009, 0x8d3c0500, - 0x0502000b, 0x642a6229, 0x4a026403, 0x00000085, - 0x64266203, 0x640a6407, 0x42000800, 0x80004040, - 0x0005feab, 0x81780080, 0x1c01f000, 0x05edfc5d, - 0x05fdf7fd, 0x05f9f9bb, 0x05020003, 0x05e9f869, - 0x05020005, 0x05e5f95d, 0x05fc07e3, 0x05e5fcb1, - 0x05a60e5e, 0x59300203, 0x90000d83, 0x05a40e5b, - 0x90000c91, 0x05a61e59, 0x0c01f7c4, 0x4803c856, - 0x05edfc7f, 0x0500002e, 0x59300402, 0x4802621b, - 0x59a804cc, 0x84000540, 0x84000502, 0x480354cc, - 0x812e59c0, 0x05000011, 0x82600580, 0x00003000, - 0x05020003, 0x4a026416, 0x00000100, 0x592c020b, - 0x480352cd, 0x480352cc, 0x592c000f, 0x480350ce, - 0x592c020c, 0x800000c2, 0x800008c4, 0x80040400, - 0x48026006, 0x0501f00a, 0x640b50ce, 0x59a8005c, - 0x800000c4, 0x48026006, 0x417a4000, 0x61fa880f, - 0x42003000, 0x00fffffe, 0x05cdfd6e, 0x4926601d, - 0x599c0208, 0x48026c12, 0x59340002, 0x4802600b, - 0x497a641b, 0x4936600a, 0x492e6009, 0x64066407, - 0x61627000, 0x0009f800, 0x90000541, 0x1c01f000, - 0x4d2c0000, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4803c856, 0x59325809, 0x91380595, 0x050200b8, - 0x812e59c0, 0x05000003, 0x05f9fd0b, 0x05a40e1b, - 0x59a800b6, 0x82000580, 0x00000228, 0x050200ab, - 0x59cc0c07, 0x82040580, 0x00000101, 0x050200b7, - 0x59cc0a07, 0x59300402, 0x80040580, 0x050200b5, - 0x59cc0a0a, 0x82040580, 0x00000228, 0x050200b3, - 0x91ccbc0b, 0x585c0c00, 0x82040580, 0x00000101, - 0x050200b0, 0x585c0a00, 0x90040584, 0x050200af, - 0x91ccc40d, 0x58600c00, 0x82040580, 0x00000102, - 0x050200ac, 0x58600a00, 0x90040584, 0x050200ab, - 0x91cccc0f, 0x58640c00, 0x82040580, 0x00000103, - 0x05000004, 0x82040580, 0x00000203, 0x050200a5, - 0x58640a00, 0x82040580, 0x00000200, 0x050200a3, - 0x585c0801, 0x800409c0, 0x050000a2, 0x90040484, - 0x050210a0, 0x480750cf, 0x58600201, 0x800001c0, - 0x0500009f, 0x82001480, 0x00000fff, 0x0502109c, - 0x480354cd, 0x480352cc, 0x4c500000, 0x4c540000, - 0x4c580000, 0x6000b001, 0x4200a800, 0x00110672, - 0x91cca410, 0x5450a800, 0x8050a000, 0x8054a800, - 0x8058b040, 0x05fe07fc, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x40001000, 0x4c040000, 0x05b5ff22, - 0x5c000800, 0x05020005, 0x59a804cc, 0x8400054c, - 0x480354cc, 0x4803c857, 0x90040582, 0x05000055, - 0x90040583, 0x05000002, 0x0501f004, 0x59a800ce, - 0x90000582, 0x05000052, 0x812e59c0, 0x0500002b, - 0x592c1001, 0x800811c0, 0x05a40dbc, 0x4930100b, - 0x492c100a, 0x64001001, 0x4a001009, 0x0010b831, - 0x4a001003, 0x00110672, 0x4a001005, 0x00000200, - 0x592c0015, 0x48001007, 0x592c0016, 0x48001008, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c025800, - 0x0001f021, 0x4d2c0000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x5832600b, 0x813261c0, 0x05a40da3, - 0x5832580a, 0x812e59c0, 0x05a40da0, 0x49786001, - 0x58300002, 0x82000580, 0x00000100, 0x0502005a, - 0x59a80ccd, 0x48065811, 0x59a808cf, 0x48065810, - 0x64ca5a0a, 0x0001fb82, 0x0005ffdc, 0x58600a01, - 0x59a802cd, 0x80040580, 0x0502004c, 0x59a81ccc, - 0x820c1d00, 0xffffffbc, 0x840c1d46, 0x480f54cc, - 0x0501f01e, 0x59cc3407, 0x82183500, 0x000000ff, - 0x90180585, 0x0502000c, 0x59340412, 0x800001c0, - 0x05000009, 0x80000040, 0x48026c12, 0x4d2c0000, - 0x59325809, 0x0005ffdc, 0x05fdff25, 0x5c025800, - 0x0501f00e, 0x05f1fed4, 0x59a80249, 0x84000518, - 0x48035249, 0x48035449, 0x0005ffdc, 0x05fdf7e4, - 0x59a800ce, 0x90000581, 0x05fc07b0, 0x5930041b, - 0x84000548, 0x4802641b, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x5c025800, 0x1c01f000, 0x4803c856, - 0x812e59c0, 0x05fc07dc, 0x05f9fc53, 0x05a40d63, - 0x64c65a0a, 0x64625810, 0x59cc0007, 0x48025811, - 0x0001fb82, 0x05fdf7e4, 0x4807c857, 0x05fdf7ef, - 0x4807c857, 0x05fdf7ed, 0x4807c857, 0x05fdf7eb, - 0x4807c857, 0x05fdf7e9, 0x4807c857, 0x05fdf7e7, - 0x4807c857, 0x05fdf7e5, 0x4807c857, 0x05fdf7e3, - 0x4807c857, 0x05fdf7e1, 0x4807c857, 0x05fdf7df, - 0x4807c857, 0x05a5fd49, 0x05fdf7dc, 0x4803c857, - 0x05a5fd46, 0x05fdf7d9, 0x4807c857, 0x0501f80f, - 0x05fdf7d6, 0x4803c857, 0x4a006002, 0x00000100, - 0x640a5a0a, 0x0001fb82, 0x05fdf7a8, 0x59300403, - 0xb0000d98, 0x05000004, 0xb0000d9e, 0x05000002, - 0xb0000d9f, 0x1c01f000, 0x59a804cc, 0x82000500, - 0xfffffffc, 0x480354cc, 0x05d5f804, 0x05020006, - 0x05d5f814, 0x05000004, 0x64075042, 0x6006d800, - 0x05d1ff81, 0x1c01f000, 0x4933c857, 0x4d400000, - 0x60028000, 0x05b5fd62, 0x05f1fe96, 0x0500001f, - 0x59cc0408, 0x8c00051e, 0x05020009, 0x42000800, - 0x0010e512, 0x58040406, 0x8c000500, 0x05020004, - 0x59240200, 0x84000556, 0x48024a00, 0x60aa8000, - 0x59240400, 0x8c00050a, 0x05020004, 0x61fe89ff, - 0x60083000, 0x0505fedd, 0x4d3c0000, 0x600a7800, - 0x5924100b, 0x82081500, 0x00001fff, 0x41780800, - 0x05b5fe72, 0x5c027800, 0x42000000, 0x0010e454, - 0x0509ff08, 0x600a8000, 0x60100800, 0x05cdfc16, - 0x60040800, 0x05cdfcfd, 0x59cc0800, 0x82040d00, - 0x00ffffff, 0x5924100c, 0x48041001, 0x59cc0009, - 0x48024a0a, 0x48001200, 0x59cc000a, 0x48024c0a, - 0x48001400, 0x59240200, 0xb0000566, 0x48024a00, - 0x48064805, 0x49238830, 0x84040570, 0x48038832, - 0x812000f0, 0x80040540, 0x48026813, 0x60040000, - 0x05d1fd60, 0x5c028000, 0x59301009, 0x800811c0, - 0x05020009, 0x0501f823, 0x5924100b, 0x82081500, - 0x00001fff, 0x05b5feb9, 0x0501f81e, 0x0502001c, - 0x0501f018, 0x4d2c0000, 0x400a5800, 0x592c1208, - 0x82080500, 0x000000ff, 0x900005b0, 0x05020009, - 0x592c040b, 0x82000500, 0x000000ff, 0x05020003, - 0x05a9f88a, 0x0501f00a, 0x05d5ff81, 0x0501f008, - 0x592c020b, 0x80000110, 0x800001c0, 0x05020003, - 0x05a9f882, 0x0501f002, 0x05d9f93f, 0x5c025800, - 0x59300429, 0x900005a1, 0x000607dc, 0x1c01f000, - 0x4933c857, 0x4d340000, 0x4d240000, 0x4d200000, - 0x916c0583, 0x05020015, 0x599c0018, 0x8c000516, - 0x05000003, 0x05c5ff7f, 0x0501f010, 0x60100800, - 0x05cdfbc9, 0x59300429, 0x900005a1, 0x05000005, + 0x48064a00, 0x602c0800, 0x05cdfe76, 0x64066407, + 0x64066203, 0x64066403, 0x05e5fc9c, 0x0501f015, + 0x600c0800, 0x05cdfe6f, 0x4a026202, 0x0000ffff, + 0x64066203, 0x65466403, 0x05e5fc94, 0x0501f00d, + 0x64126006, 0x645a6403, 0x65466418, 0x4a026202, + 0x0000ffff, 0x0501f007, 0x600c2800, 0x0501fe4b, + 0x0501f004, 0x6008b000, 0x0501f83b, 0x05f1ff5a, + 0x5c027800, 0x5c028800, 0x5c028000, 0x5c024000, + 0x5c024800, 0x5c00b000, 0x1c01f000, 0x4933c857, + 0x61f2880f, 0x42003000, 0x00fffffc, 0x05cdfe80, + 0x05a60d65, 0x4936600a, 0x05fdfd75, 0x417a7800, + 0x05cdfe42, 0x600c0800, 0x05cdfe4a, 0x497a6c12, + 0x59300429, 0x900005a1, 0x05020003, 0x599c0208, + 0x48026c12, 0x64066203, 0x640a6403, 0x05e5f46b, + 0x492fc857, 0x4c580000, 0x4c000000, 0x8058b1c0, + 0x0500000a, 0x82580500, 0xfffffff0, 0x05a60d4e, + 0x8058b0d0, 0x592c040c, 0x82000500, 0xfffff0ff, + 0x80580540, 0x48025c0c, 0x5c000000, 0x5c00b000, + 0x1c01f000, 0x492fc857, 0x4c000000, 0x4c040000, + 0x800000d8, 0x592c0c0c, 0x82040d00, 0xffff0fff, + 0x80040540, 0x48025c0c, 0x5c000800, 0x5c000000, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x59325809, + 0x592c020b, 0x8400055e, 0x48025a0b, 0x4c500000, + 0x4c540000, 0x4c580000, 0x05fdffda, 0x05d9fa2f, + 0x64602800, 0x80142800, 0x8058b040, 0x91cca407, + 0x4014a800, 0x050dff35, 0x5c00b000, 0x5c00a800, + 0x5c00a000, 0x5c025800, 0x1c01f000, 0x59325809, + 0x592c0208, 0x82000580, 0x00000152, 0x1c01f000, + 0x59325809, 0x592c020b, 0x8400055c, 0x48025a0b, + 0x1c01f000, 0x59300809, 0x58040208, 0x82000500, + 0x000000ff, 0xb00005b9, 0x1c01f000, 0x5930002b, + 0x80000540, 0x05aa0ea9, 0x1c01f000, 0x59300008, + 0x82000500, 0x04000800, 0x82000580, 0x04000800, + 0x05020003, 0x59300221, 0x48025c13, 0x1c01f000, + 0x592c040b, 0x82000500, 0x0000f000, 0x82000580, + 0x00003000, 0x05020003, 0x4a026416, 0x00000100, + 0x1c01f000, 0x4d2c0000, 0x59325809, 0x59300203, + 0x4933c857, 0x492fc857, 0x493bc857, 0x4803c857, + 0x90003491, 0x05a61cf4, 0x0c01f803, 0x5c025800, + 0x1c01f000, 0x0010b936, 0x0010b93c, 0x0010b974, + 0x0010b936, 0x0010b936, 0x0010b936, 0x0010b936, + 0x0010b936, 0x0010b937, 0x0010b936, 0x0010b936, + 0x0010b936, 0x0010b936, 0x0010b936, 0x0010ba4d, + 0x0010b936, 0x0010b936, 0x05a5fcdf, 0xb13834a0, + 0x05a61cdd, 0x493a6403, 0x64066203, 0x05e5f3ef, + 0x91380593, 0x05020010, 0x492fc857, 0x05fdfcf7, + 0x05000003, 0x643a6203, 0x0501f005, 0x592c0010, + 0x800001c0, 0x05000005, 0x640a6203, 0x59a8005f, + 0x48026006, 0x1c01f000, 0x64025a0a, 0x0001fba8, + 0x0009f010, 0x913805a7, 0x0500001e, 0x91380594, + 0x05000018, 0x05fdfce5, 0x0500000c, 0xb13805a1, + 0x05000004, 0xb13805a0, 0x05fe07f3, 0x4937c857, + 0x05e9fc1f, 0x05f2000d, 0x59300203, 0x9000058e, + 0x050000f1, 0x05a5fcb8, 0x91380595, 0x05000003, + 0x91380596, 0x05a60cb4, 0x05e9fc15, 0x05f20003, + 0x59300203, 0x90000582, 0x05a60caf, 0x0501f00d, + 0x4937c857, 0x05e5ffbe, 0x64465812, 0x0501f004, + 0x4937c857, 0x05e5ffba, 0x64425812, 0x64c65a0a, + 0x64125811, 0x0001fba8, 0x05d1fdd3, 0x05edf772, + 0x59341400, 0x82081d00, 0x000000ff, 0x59300c03, + 0x480bc857, 0x4807c857, 0xb0040593, 0x05000020, + 0x90040582, 0x0500000f, 0x90040581, 0x05000010, + 0x90040583, 0x05000013, 0x90040585, 0x05000014, + 0x900405b3, 0x05000012, 0x90040580, 0x05000013, + 0x90040584, 0x05a60c8c, 0x0501f8a7, 0x0501f010, + 0x900c0583, 0x05000869, 0x0501f00d, 0x900c058b, + 0x0502000b, 0x601c0800, 0x05cdfd6e, 0x0501f008, + 0x900c0585, 0x0500087c, 0x0501f005, 0x900c0589, + 0x05000897, 0x0501f002, 0x0501f89c, 0x654a6403, + 0x59a810bb, 0x592c040f, 0x8c000500, 0x05000002, + 0x60201000, 0x592c040f, 0x8c000516, 0x05000002, + 0x90081418, 0x592c0010, 0x497a5811, 0x497a5812, + 0x80080c80, 0x05000008, 0x05001005, 0x641e5a0a, + 0x48065811, 0x40001000, 0x0501f004, 0x64565a0a, + 0x0501f002, 0x64025a0a, 0x480a5810, 0x4d2c0000, + 0x05a9f805, 0x0500003c, 0x5c001000, 0x41cc0800, + 0x5808040f, 0x8c000516, 0x05020002, 0x91cc0c06, + 0x58081810, 0x58082015, 0x58082816, 0x58080004, + 0x48025806, 0x48065803, 0x480a580a, 0x480e5805, + 0x48125807, 0x48165808, 0x64025801, 0x4a025809, + 0x00101580, 0x900c1c03, 0x800c1904, 0x50040000, + 0x9c0001c0, 0x44000800, 0x80040800, 0x800c1840, + 0x05fe07fb, 0x5808040f, 0x8c000500, 0x0500000b, + 0x41cc0800, 0x8c000516, 0x05000002, 0x91cc0c06, + 0x64040800, 0x80040800, 0x46000800, 0x00000900, + 0x84000500, 0x4800140f, 0x42007000, 0x000211e8, + 0x58380000, 0x90000580, 0x0502000b, 0x58380807, + 0x58380005, 0x80040540, 0x05020007, 0x412c1000, + 0x0001f829, 0x59dc0806, 0x8c04053e, 0x05fc07fe, + 0x0001f06e, 0x412c1000, 0x0001f829, 0x850e1d5c, + 0x05e1f000, 0x5c025800, 0x64b25a0a, 0x497a5810, + 0x0001fba8, 0x0009f010, 0x91380595, 0x05020008, + 0x59a800d6, 0x8c000502, 0x05020007, 0x41780800, + 0x05cdfe40, 0x60100800, 0x05cdf502, 0x601c0800, + 0x05cdf500, 0x05d5f997, 0x60401000, 0x05020008, + 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, + 0x00ff0000, 0x05fc07f2, 0x60201000, 0x05d1fd79, + 0x05fc07ef, 0x592c040f, 0x84000540, 0x48025c0f, + 0x05fdf7ef, 0x91380595, 0x0502000b, 0x59a800d6, + 0x8c000502, 0x0502000a, 0x05cdfe9b, 0x4d3c0000, + 0x417a7800, 0x05cdfcdd, 0x5c027800, 0x60180800, + 0x05cdf4e4, 0x60100800, 0x05cdf4e2, 0x05d5f979, + 0x60401000, 0x05020008, 0x59340002, 0x82000500, + 0x00ff0000, 0x82000580, 0x00ff0000, 0x05fc07ef, + 0x60201000, 0x05d1fd5b, 0x05fc07ec, 0x592c040f, + 0x84000540, 0x48025c0f, 0x05fdf7ef, 0x60100800, + 0x05cdf4d0, 0x91380595, 0x05020003, 0x0509fb34, + 0x05d008eb, 0x1c01f000, 0x91380595, 0x05020015, + 0x4c580000, 0x91cc1408, 0x6008b000, 0x91341c06, + 0x05f5fb50, 0x0502000e, 0x91cc140a, 0x6008b000, + 0x91341c08, 0x05f5fb4b, 0x05020009, 0x59342200, + 0x59cc1007, 0x800811c0, 0x05000003, 0x480a6801, + 0x84102542, 0x8410251a, 0x48126a00, 0x5c00b000, + 0x1c01f000, 0x4803c856, 0xb13805a1, 0x05000019, + 0xb13805a0, 0x05000017, 0xb13805a2, 0x05020003, + 0x644a5812, 0x0501f004, 0xb13805a3, 0x0502001b, + 0x644e5812, 0x64c65a0a, 0x64125811, 0x59cc0001, + 0x48025813, 0x59cc0002, 0x48025814, 0x59cc0003, + 0x48025815, 0x59cc0004, 0x48025816, 0x59cc0005, + 0x48025817, 0x0001fba8, 0x05d1fcdf, 0x0009f010, + 0x592c0010, 0x800001c0, 0x05000005, 0x59a8005f, + 0x48026006, 0x640a6203, 0x1c01f000, 0x64025a0a, + 0x0001fba8, 0x0009f810, 0x1c01f000, 0x42000000, + 0x00112410, 0x050dfce2, 0x05e5ff5b, 0x59300203, + 0x4933c857, 0x4803c857, 0x90000c91, 0x05a61b9a, + 0x0c01f802, 0x05e5f745, 0x0010ba90, 0x0010ba99, + 0x0010ba91, 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, + 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, + 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, + 0x0010ba91, 0x0010ba8f, 0x0010ba8f, 0x05a5fb86, + 0x1c01f000, 0x59300403, 0xb0000592, 0x05f804a6, + 0x05d1fcb1, 0x59325809, 0x641a5a0a, 0x0001fba8, + 0x05edf64d, 0x59301804, 0x840c0520, 0x48026004, + 0x598c000b, 0x81300580, 0x0502000f, 0x8c0c0520, + 0x0502000f, 0x42001000, 0x00112322, 0x50081000, + 0x58080002, 0x82000580, 0x00000100, 0x0500000b, + 0x5808000c, 0x81300580, 0x05a60b6b, 0x4978100c, + 0x0501f003, 0x8c0c0520, 0x05fe07e3, 0x05e5fbc0, + 0x05fc07e1, 0x05a5fb64, 0x05e9fa1c, 0x05fc07fc, + 0x59300203, 0x90000c91, 0x05a61b5f, 0x0c01f7c7, + 0x4933c857, 0x4c500000, 0x4c540000, 0x4c580000, + 0x592c0c0b, 0x48065817, 0x59cc0809, 0x4806580b, + 0x59cc0808, 0x4806580f, 0x59a808d5, 0x82040500, + 0x000003ff, 0x800010c4, 0x8c040514, 0x05000004, + 0x59cc0002, 0x90000503, 0x80081480, 0x480a621c, + 0x412c0800, 0x05a5feec, 0x05a40b47, 0x492c080d, + 0x5804040c, 0x84000552, 0x84000540, 0x48000c0c, + 0x90081403, 0x80081104, 0x91cca406, 0x912cac08, + 0x60400800, 0x90080490, 0x05021003, 0x40080800, + 0x80000580, 0x4004b000, 0x4c000000, 0x050dfd7e, + 0x5c000000, 0x800001c0, 0x0500000a, 0x412c1000, + 0x4c000000, 0x05a5fed4, 0x05a40b2f, 0x492c1001, + 0x912cac08, 0x5c000000, 0x40001000, 0x05fdf7ee, + 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x1c01f000, + 0x4933c857, 0x4d2c0000, 0x4c380000, 0x59325809, + 0x5930021c, 0x48025a0c, 0x59301013, 0x640a6203, + 0x592c020e, 0x8c000500, 0x05000004, 0x59300017, + 0x592c1013, 0x80081480, 0x40080000, 0x0501f961, + 0x80001540, 0x05020007, 0x64025a0a, 0x592c000f, + 0x82000500, 0x00000c00, 0x05000009, 0x0501f009, + 0x8c08053e, 0x05000005, 0x641e5a0a, 0x80081080, + 0x80081000, 0x0501f002, 0x64565a0a, 0x480a580b, + 0x42000000, 0x00114294, 0x50007000, 0x5838000b, + 0x80000540, 0x05020007, 0x4930700c, 0x4930700b, + 0x58380002, 0x90000580, 0x05020808, 0x0501f004, + 0x90001400, 0x45301000, 0x4930700b, 0x5c007000, + 0x5c025800, 0x1c01f000, 0x4933c857, 0x592c000d, + 0x40001000, 0x4800700a, 0x90080408, 0x48007003, + 0x592c0011, 0x592c1012, 0x592c1804, 0x480c7006, + 0x48007007, 0x48087008, 0x592c0017, 0x592c120c, + 0x80080c80, 0x05001002, 0x40001000, 0x90081403, + 0x80081104, 0x90080490, 0x05021003, 0x80000580, + 0x0501f002, 0x60401000, 0x4800700d, 0x48087004, + 0x800810c4, 0x48087005, 0x40381000, 0x0001f029, + 0x4d2c0000, 0x05a5fe67, 0x05a40ad3, 0x42000800, + 0x00114294, 0x452c0800, 0x497a580b, 0x497a580c, + 0x497a580d, 0x4a025809, 0x0010bb50, 0x4a025802, + 0x00000100, 0x64025801, 0x5c025800, 0x1c01f000, + 0x4833c857, 0x4d300000, 0x4d2c0000, 0x4c5c0000, + 0x4030b800, 0x585c000a, 0x80025d40, 0x05020004, + 0x585c000c, 0x4c000000, 0x0501f03b, 0x585c0002, + 0x82000580, 0x00000100, 0x0502001c, 0x592c0801, + 0x4c040000, 0x05a5fe68, 0x5c000800, 0x800409c0, + 0x05000017, 0x4804b80a, 0x585c100d, 0x800811c0, + 0x05020004, 0x40065800, 0x05a5fe68, 0x0501f010, + 0x90080490, 0x05021003, 0x80000580, 0x0501f002, + 0x60401000, 0x4800b80d, 0x4808b804, 0x800810c4, + 0x4808b805, 0x90040408, 0x4800b803, 0x405c1000, + 0x0001f829, 0x0501f022, 0x0501f825, 0x585c000c, + 0x80026540, 0x59300000, 0x80000d40, 0x05020002, + 0x4800b80b, 0x4800b80c, 0x497a6000, 0x4c000000, + 0x4978b80a, 0x59325809, 0x4a025a08, 0x00000103, + 0x59300402, 0x48025c0a, 0x592c100f, 0x4c080000, + 0x0001fba8, 0x0501f8ca, 0x05f9ffb3, 0x5c001000, + 0x8c080518, 0x05000003, 0x05fdf8ce, 0x0501f002, + 0x0009f810, 0x405c7000, 0x5c000000, 0x80026540, + 0x05000003, 0x59325809, 0x05fdff88, 0x5c00b800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x483bc857, + 0x5838000a, 0x40025800, 0x05a5fe30, 0x5838000c, + 0x80026540, 0x59300009, 0x80025d40, 0x640a5a0a, + 0x1c01f000, 0x4803c857, 0x4933c857, 0x4d1c0000, + 0x497a601e, 0x41323800, 0x40026000, 0x4d3c0000, + 0x60167800, 0x0501f837, 0x5c027800, 0x411e6000, + 0x4933c857, 0x59300416, 0x84000502, 0x48026416, + 0x5c023800, 0x1c01f000, 0x481bc857, 0x4933c857, + 0x4c5c0000, 0x4c600000, 0x4010b800, 0x4014c000, + 0x050df920, 0x05b5faf2, 0x59240400, 0x8c00050a, + 0x05020006, 0x40602800, 0x405c3000, 0x0509fb26, + 0x90000541, 0x0501f002, 0x80000580, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4d300000, + 0x42026000, 0x00115aa4, 0x0501fda4, 0x05021013, + 0x59300c07, 0x90040581, 0x05000009, 0x90040584, + 0x05000004, 0x90040590, 0x05f80aeb, 0x0501f007, + 0x59300203, 0x90000d87, 0x05000004, 0x4807c857, + 0x05fdf981, 0x05020807, 0x91326430, 0x41580000, + 0x81300480, 0x05fc17ef, 0x5c026000, 0x1c01f000, + 0x4933c857, 0x59300403, 0x4803c857, 0x05e5fde6, + 0x4df00000, 0x59301407, 0x59300203, 0x4803c857, + 0x90080d82, 0x05000016, 0x90080d81, 0x0500000b, + 0x90080d84, 0x05000005, 0x4933c856, 0x5c03e000, + 0x05e40dca, 0x0501f03e, 0x90000d88, 0x0500002e, + 0x90000d87, 0x0500002c, 0x90000d81, 0x05000013, + 0x90000d82, 0x05000028, 0x90000d85, 0x05000026, + 0x90000d8e, 0x05000024, 0x05a5fa0f, 0x90000d89, + 0x0500000a, 0x90000d8b, 0x05000008, 0x90000d8a, + 0x0500001d, 0x90000d8c, 0x0500001b, 0x90000d8e, + 0x05000019, 0x05a5fa04, 0x598c000b, 0x81300580, + 0x05020003, 0x05e9f8b9, 0x05020013, 0x59300004, + 0x4803c857, 0x8c000520, 0x05000004, 0x84000520, + 0x48026004, 0x0501f00c, 0x05e5fa51, 0x05a609f6, + 0x5c03e000, 0x05e40da1, 0x59300407, 0x90000d82, + 0x05000013, 0x05d1fb20, 0x05f9ff3d, 0x05f00bd6, + 0x0501f00f, 0x5c03e000, 0x05e40d98, 0x59300407, + 0x90000d82, 0x0500000a, 0x5930081d, 0x58040200, + 0x8c000500, 0x050002b4, 0x05d1fb13, 0x05f9ff30, + 0x05f00bc9, 0x8d3c0500, 0x05000003, 0x050df986, + 0x05edf4ad, 0x64066229, 0x4a026403, 0x00000085, + 0x64266203, 0x640a6407, 0x42000800, 0x80000040, + 0x0005f6e2, 0x60007040, 0x4203e000, 0xb0800000, + 0x6033f800, 0x40000000, 0x40000000, 0x40000000, + 0x0501b004, 0x80387040, 0x05a409cb, 0x05fdf7f9, + 0x1c01f000, 0x83300480, 0x001159e4, 0x05001006, + 0x41540000, 0x81300480, 0x05021003, 0x80000580, + 0x1c01f000, 0x81780080, 0x1c01f000, 0x59300027, + 0x80000540, 0x05000006, 0x4d2c0000, 0x40025800, + 0x05a5fd6d, 0x497a6027, 0x5c025800, 0x1c01f000, + 0x592c720e, 0x8c380500, 0x05020009, 0x59307008, + 0x8c380516, 0x05000006, 0x59307009, 0x58387013, + 0x59300014, 0x80380480, 0x05001002, 0x1c01f000, + 0x59300416, 0x8c000514, 0x05000005, 0x59300018, + 0x4803c857, 0x80380480, 0x05fe17f9, 0x59300013, + 0x4803c857, 0x05fdf7f6, 0x59a808bb, 0x59cc2808, + 0x4c5c0000, 0x4178b800, 0x8c14051e, 0x05000002, + 0x805cb800, 0x82140500, 0x00000c00, 0x05000004, + 0x905c0410, 0x80040480, 0x05001018, 0x80001580, + 0x8c140512, 0x05000005, 0x905c0414, 0x80040480, + 0x05001012, 0x59cc100a, 0x80000580, 0x8c140510, + 0x05000005, 0x905c0418, 0x80040480, 0x0500100b, + 0x59cc000b, 0x80080400, 0x05001008, 0x05000005, + 0x905c0418, 0x80040480, 0x05001004, 0x80000580, + 0x5c00b800, 0x1c01f000, 0x42000000, 0x001123ed, + 0x050dfabb, 0x90000541, 0x05fdf7fa, 0x4933c857, + 0x4937c857, 0x4923c857, 0x4927c857, 0x492fc857, + 0x48efc857, 0x4d1c0000, 0x4d300000, 0x41323800, + 0x05edfc70, 0x0500001f, 0x48ee602d, 0x4926601d, + 0x4936600a, 0x05fdf97a, 0x591c0407, 0x90000583, + 0x05000008, 0x591c0202, 0x4803c857, 0x4802641b, + 0x591c0402, 0x4802621b, 0x4803c857, 0x0501f009, + 0x591c0017, 0x48026017, 0x591c0202, 0x4803c857, + 0x4802621b, 0x591c0402, 0x4802641b, 0x4803c857, + 0x491e602a, 0x64066407, 0x492e6009, 0x4d380000, + 0x615e7000, 0x0009f839, 0x5c027000, 0x90000541, + 0x5c026000, 0x5c023800, 0x1c01f000, 0x4933c857, + 0x493bc857, 0x4937c857, 0x4d2c0000, 0x4c500000, + 0x4c540000, 0x4c580000, 0x59325809, 0x05f9fd7f, + 0x05000017, 0x91cca406, 0x912cac0a, 0x91380596, + 0x05020007, 0x59a800bb, 0x90000588, 0x0502000e, + 0x492fc857, 0x6008b000, 0x0501f008, 0x91380595, + 0x05020009, 0x492fc857, 0x59a800bb, 0x90000598, + 0x05020005, 0x6018b000, 0x050dfb3c, 0x05edfe31, + 0x0501f003, 0x05f1fb14, 0x0009f810, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x05e5fce0, 0x4df00000, 0x59300203, + 0x90000c91, 0x05a61920, 0x0c01f001, 0x0010bd09, + 0x0010bd08, 0x0010bd0e, 0x0010bd26, 0x0010bd0d, + 0x0010bd08, 0x0010bd08, 0x0010bd08, 0x0010bd08, + 0x0010bd08, 0x0010bd08, 0x0010bd08, 0x0010bd08, + 0x0010bd08, 0x0010bd08, 0x0010bd08, 0x0010bd0e, + 0x05a5f90d, 0x5c03e000, 0x05e40cb8, 0x80000580, + 0x1c01f000, 0x05a9fbda, 0x5c03e000, 0x05e40cb3, + 0x8d3c0502, 0x05020011, 0x4d2c0000, 0x59325809, + 0x64165a0a, 0x0001fba8, 0x5c025800, 0x497a6009, + 0x8d3c0500, 0x0502000b, 0x642a6229, 0x4a026403, + 0x00000085, 0x64266203, 0x640a6407, 0x42000800, + 0x80004040, 0x0005fee2, 0x81780080, 0x1c01f000, + 0x05edfbc1, 0x05fdf7fd, 0x05f9f984, 0x05020003, + 0x05e5ff76, 0x05020005, 0x05e5f865, 0x05fc07e3, + 0x05e5fbbd, 0x05a608e8, 0x59300203, 0x90000d83, + 0x05a408e5, 0x90000c91, 0x05a618e3, 0x0c01f7c4, + 0x4803c856, 0x05edfbe3, 0x0500002e, 0x59300402, + 0x4802621b, 0x59a804d1, 0x84000540, 0x84000502, + 0x480354d1, 0x812e59c0, 0x05000011, 0x82600580, + 0x00003000, 0x05020003, 0x4a026416, 0x00000100, + 0x592c020b, 0x480352d2, 0x480352d1, 0x592c000f, + 0x480350d3, 0x592c020c, 0x800000c2, 0x800008c4, + 0x80040400, 0x48026006, 0x0501f00a, 0x640b50d3, + 0x59a8005f, 0x800000c4, 0x48026006, 0x417a4000, + 0x61fa880f, 0x42003000, 0x00fffffe, 0x05cdf9d8, + 0x4926601d, 0x599c0208, 0x48026c12, 0x59340002, + 0x4802600b, 0x497a641b, 0x4936600a, 0x492e6009, + 0x64066407, 0x61627000, 0x0009f839, 0x90000541, + 0x1c01f000, 0x4d2c0000, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4803c856, 0x59325809, 0x91380595, + 0x050200b8, 0x812e59c0, 0x05000003, 0x05f9fce3, + 0x05a408a5, 0x59a800bb, 0x82000580, 0x00000228, + 0x050200ab, 0x59cc0c07, 0x82040580, 0x00000101, + 0x050200b7, 0x59cc0a07, 0x59300402, 0x80040580, + 0x050200b5, 0x59cc0a0a, 0x82040580, 0x00000228, + 0x050200b3, 0x91ccbc0b, 0x585c0c00, 0x82040580, + 0x00000101, 0x050200b0, 0x585c0a00, 0x90040584, + 0x050200af, 0x91ccc40d, 0x58600c00, 0x82040580, + 0x00000102, 0x050200ac, 0x58600a00, 0x90040584, + 0x050200ab, 0x91cccc0f, 0x58640c00, 0x82040580, + 0x00000103, 0x05000004, 0x82040580, 0x00000203, + 0x050200a5, 0x58640a00, 0x82040580, 0x00000200, + 0x050200a3, 0x585c0801, 0x800409c0, 0x050000a2, + 0x90040484, 0x050210a0, 0x480750d4, 0x58600201, + 0x800001c0, 0x0500009f, 0x82001480, 0x00000fff, + 0x0502109c, 0x480354d2, 0x480352d1, 0x4c500000, + 0x4c540000, 0x4c580000, 0x6000b001, 0x4200a800, + 0x00114616, 0x91cca410, 0x5450a800, 0x8050a000, + 0x8054a800, 0x8058b040, 0x05fe07fc, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x40001000, 0x4c040000, + 0x05b5fa18, 0x5c000800, 0x05020005, 0x59a804d1, + 0x8400054c, 0x480354d1, 0x4803c857, 0x90040582, + 0x05000055, 0x90040583, 0x05000002, 0x0501f004, + 0x59a800d3, 0x90000582, 0x05000052, 0x812e59c0, + 0x0500002b, 0x592c1001, 0x800811c0, 0x05a40846, + 0x4930100b, 0x492c100a, 0x64001001, 0x4a001009, + 0x0010bde2, 0x4a001003, 0x00114616, 0x4a001005, + 0x00000200, 0x592c0015, 0x48001007, 0x592c0016, + 0x48001008, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x5c025800, 0x0001f029, 0x4d2c0000, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x5832600b, 0x813261c0, + 0x05a4082d, 0x5832580a, 0x812e59c0, 0x05a4082a, + 0x49786001, 0x58300002, 0x82000580, 0x00000100, + 0x0502005a, 0x59a80cd2, 0x48065811, 0x59a808d4, + 0x48065810, 0x64ca5a0a, 0x0001fba8, 0x0009f810, + 0x58600a01, 0x59a802d2, 0x80040580, 0x0502004c, + 0x59a81cd1, 0x820c1d00, 0xffffffbc, 0x840c1d46, + 0x480f54d1, 0x0501f01e, 0x59cc3407, 0x82183500, + 0x000000ff, 0x90180585, 0x0502000c, 0x59340412, + 0x800001c0, 0x05000009, 0x80000040, 0x48026c12, + 0x4d2c0000, 0x59325809, 0x0009f810, 0x05fdff25, + 0x5c025800, 0x0501f00e, 0x05f1fe66, 0x59a8024c, + 0x84000518, 0x4803524c, 0x4803544c, 0x0009f810, + 0x05fdf7e4, 0x59a800d3, 0x90000581, 0x05fc07b0, + 0x5930041b, 0x84000548, 0x4802641b, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c025800, 0x1c01f000, + 0x4803c856, 0x812e59c0, 0x05fc07dc, 0x05f9fc2b, + 0x05a00fed, 0x64c65a0a, 0x64625810, 0x59cc0007, + 0x48025811, 0x0001fba8, 0x05fdf7e4, 0x4807c857, + 0x05fdf7ef, 0x4807c857, 0x05fdf7ed, 0x4807c857, + 0x05fdf7eb, 0x4807c857, 0x05fdf7e9, 0x4807c857, + 0x05fdf7e7, 0x4807c857, 0x05fdf7e5, 0x4807c857, + 0x05fdf7e3, 0x4807c857, 0x05fdf7e1, 0x4807c857, + 0x05fdf7df, 0x4807c857, 0x05a1ffd3, 0x05fdf7dc, + 0x4803c857, 0x05a1ffd0, 0x05fdf7d9, 0x4807c857, + 0x0501f80f, 0x05fdf7d6, 0x4803c857, 0x4a006002, + 0x00000100, 0x640a5a0a, 0x0001fba8, 0x05fdf7a8, + 0x59300403, 0xb0000d98, 0x05000004, 0xb0000d9e, + 0x05000002, 0xb0000d9f, 0x1c01f000, 0x59a804d1, + 0x82000500, 0xfffffffc, 0x480354d1, 0x05d1fd3d, + 0x05020006, 0x05d1fd4d, 0x05000004, 0x64075045, + 0x6006d800, 0x05d1fcb4, 0x1c01f000, 0x4933c857, + 0x4d400000, 0x60028000, 0x05b5f84d, 0x05f1fe28, + 0x0500001f, 0x59cc0408, 0x8c00051e, 0x05020009, + 0x42000800, 0x001124b6, 0x58040406, 0x8c000500, + 0x05020004, 0x59240200, 0x84000556, 0x48024a00, + 0x60aa8000, 0x59240400, 0x8c00050a, 0x05020004, + 0x61fe89ff, 0x60083000, 0x0509f873, 0x4d3c0000, + 0x600a7800, 0x5924100b, 0x82081500, 0x00001fff, + 0x41780800, 0x05b5f968, 0x5c027800, 0x42000000, + 0x001123f8, 0x050df8d2, 0x600a8000, 0x60100800, + 0x05cdf878, 0x60040800, 0x05cdf9b2, 0x59cc0800, + 0x82040d00, 0x00ffffff, 0x5924100c, 0x48041001, + 0x59cc0009, 0x48024a0a, 0x48001200, 0x59cc000a, + 0x48024c0a, 0x48001400, 0x59240200, 0xb0000566, + 0x48024a00, 0x48064805, 0x49238830, 0x84040570, + 0x48038832, 0x812000f0, 0x80040540, 0x48026813, + 0x60040000, 0x05d1fa93, 0x5c028000, 0x59301009, + 0x800811c0, 0x05020009, 0x0501f823, 0x5924100b, + 0x82081500, 0x00001fff, 0x05b5f9af, 0x0501f81e, + 0x0502001c, 0x0501f018, 0x4d2c0000, 0x400a5800, + 0x592c1208, 0x82080500, 0x000000ff, 0x900005b0, + 0x05020009, 0x592c040b, 0x82000500, 0x000000ff, + 0x05020003, 0x05a5fb10, 0x0501f00a, 0x05d5fce6, + 0x0501f008, 0x592c020b, 0x80000110, 0x800001c0, + 0x05020003, 0x05a5fb08, 0x0501f002, 0x05d5fef6, + 0x5c025800, 0x59300429, 0x900005a1, 0x000a0010, + 0x1c01f000, 0x4933c857, 0x4d340000, 0x4d240000, + 0x4d200000, 0x916c0583, 0x05020015, 0x599c0018, + 0x8c000516, 0x05000003, 0x05c5fb71, 0x0501f010, + 0x60100800, 0x05cdf82b, 0x59300429, 0x900005a1, + 0x05000005, 0x59240400, 0x8c00050c, 0x05000004, + 0x64866429, 0x05fdf9ce, 0x90000541, 0x5c024000, + 0x5c024800, 0x5c026800, 0x1c01f000, 0x80000580, + 0x05fdf7fb, 0x4d340000, 0x5932680a, 0x05cdfe78, + 0x5c026800, 0x0009f010, 0x4803c856, 0x4c5c0000, + 0x4d200000, 0x4014b800, 0x05b1ffc5, 0x59a800c0, + 0x80000040, 0x480350c0, 0x916c0582, 0x05020004, + 0x59240200, 0x8400051a, 0x48024a00, 0x59240200, + 0x82000500, 0xfffffeef, 0x84000546, 0x48024a00, + 0x497a4805, 0x4d400000, 0x60068000, 0x41781800, + 0x405c2800, 0x60040000, 0x05d1fa32, 0x60aa8000, + 0x4d3c0000, 0x600a7800, 0x05b5f805, 0x5c027800, + 0x5c028000, 0x5c024000, 0x5c00b800, 0x813261c0, + 0x05ee01d9, 0x1c01f000, 0x59303009, 0x58181a08, + 0x820c1d00, 0x000000ff, 0xb00c0588, 0x05000003, + 0xb00c05aa, 0x05020048, 0x59300004, 0x8c000516, + 0x05020045, 0x5818040c, 0x8c000500, 0x05000042, + 0x42000000, 0x00114294, 0x50006000, 0x41781800, + 0x5830200c, 0x41300000, 0x80100580, 0x05000006, + 0x40101800, 0x580c2000, 0x801021c0, 0x05fe07fa, + 0x0501f035, 0x4933c857, 0x59302000, 0x497a6000, + 0x800c19c0, 0x0502001e, 0x4933c856, 0x42007000, + 0x000211e8, 0x5830000a, 0x800001c0, 0x05000018, + 0x4978600a, 0x58380001, 0x80300580, 0x05020008, + 0x4933c856, 0x49787002, 0x4810600c, 0x801021c0, + 0x0502001d, 0x4978600b, 0x0501f01b, 0x4933c856, + 0x4810600c, 0x801021c0, 0x05020002, 0x4978600b, + 0x4c180000, 0x4c300000, 0x05a5fbf5, 0x5c006000, + 0x05fdfc08, 0x5c003000, 0x0501f00f, 0x4933c856, + 0x800c19c0, 0x05020008, 0x801021c0, 0x05000003, + 0x4810600c, 0x0501f008, 0x4978600c, 0x4978600b, + 0x0501f005, 0x48101800, 0x801021c0, 0x05020002, + 0x480c600b, 0x5818040c, 0x84000500, 0x4800340c, + 0x4978320c, 0x1c01f000, 0x42001000, 0x00112325, + 0x58080000, 0x4937c857, 0x4803c857, 0x90000580, + 0x0500001b, 0x58080005, 0x49341005, 0x80000540, + 0x05020003, 0x49341004, 0x1c01f000, 0x4803c857, + 0x49340016, 0x1c01f000, 0x42001000, 0x00112325, + 0x58080000, 0x4937c857, 0x4947c857, 0x4803c857, + 0x90000580, 0x0500001a, 0x58080003, 0x49341003, + 0x80000540, 0x05020003, 0x49341002, 0x1c01f000, + 0x4803c857, 0x49340016, 0x1c01f000, 0x4937c857, + 0x0501f83c, 0x05a00e94, 0x42001000, 0x00112325, + 0x64081000, 0x4c080000, 0x0501f8c1, 0x5c001000, + 0x05a20e8d, 0x58081001, 0x64001001, 0x4a001009, + 0x0010bffb, 0x49341003, 0x0501f010, 0x4937c857, + 0x0501f816, 0x05a00e84, 0x42001000, 0x00112325, + 0x64041000, 0x58081001, 0x64041001, 0x4a001009, + 0x0010bfd3, 0x49341003, 0x4c080000, 0x0501f8ac, + 0x5c001000, 0x05a20e78, 0x40100000, 0x800c0540, + 0x05a00e75, 0x4934100b, 0x65701005, 0x480c1007, + 0x48101008, 0x0001f029, 0x4c5c0000, 0x4c600000, + 0x4937c857, 0x8344bc00, 0x0010db80, 0x505c0000, + 0x8200c580, 0x40000000, 0x82600500, 0xe0000000, + 0x05020007, 0x82600540, 0x60000000, 0x4400b800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x8260c580, + 0x40000000, 0x4863c857, 0x80000580, 0x05fdf7f9, + 0x4c5c0000, 0x4c600000, 0x4937c857, 0x59368c03, + 0x8344bc00, 0x0010db80, 0x505c0000, 0x8200c580, + 0x20000000, 0x82600500, 0xe0000000, 0x05020007, + 0x82600540, 0x80000000, 0x4400b800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x8260c580, 0x20000000, + 0x4863c857, 0x80000580, 0x05fdf7f9, 0x4d340000, + 0x4d440000, 0x4c5c0000, 0x49786009, 0x58300002, + 0x82000580, 0x00000100, 0x05020012, 0x5830000b, + 0x80026d40, 0x4937c857, 0x0500000a, 0x59368c03, + 0x8344bc00, 0x0010db80, 0x83340540, 0x20000000, + 0x4400b800, 0x4a026815, 0x00020000, 0x497a6816, + 0x5c00b800, 0x5c028800, 0x5c026800, 0x0501f041, + 0x5830000b, 0x80026d40, 0x4803c857, 0x05fc07f9, + 0x59368c03, 0x8344bc00, 0x0010db80, 0x505c0000, + 0x82000500, 0x00ffffff, 0x82000540, 0x40000000, + 0x84000578, 0x4400b800, 0x05fdf7ee, 0x4d340000, + 0x4d2c0000, 0x4d440000, 0x4c5c0000, 0x49786009, + 0x58300002, 0x82000580, 0x00000100, 0x05020025, + 0x5830000b, 0x80026d40, 0x4937c857, 0x0500001c, + 0x59368c03, 0x8344bc00, 0x0010db80, 0x505c0000, + 0x4947c857, 0x4803c857, 0x82000d00, 0xe0000000, + 0x82000500, 0x00ffffff, 0x82041580, 0xa0000000, + 0x05020008, 0x4a026815, 0x00020000, 0x497a6816, + 0x82000540, 0x20000000, 0x4400b800, 0x0501f008, + 0x42000800, 0x40000000, 0x59340002, 0x80040540, + 0x4400b800, 0x41365800, 0x05a5f9a7, 0x5c00b800, + 0x5c028800, 0x5c025800, 0x5c026800, 0x0501f005, + 0x5830000b, 0x80026d40, 0x4937c857, 0x05fdf7f8, + 0x4d340000, 0x42001000, 0x00112325, 0x58080002, + 0x80026d40, 0x05000009, 0x4937c857, 0x59340016, + 0x48001002, 0x80000540, 0x05020002, 0x48001003, + 0x05fdff57, 0x0501f00c, 0x58080004, 0x80026d40, + 0x05000008, 0x59340016, 0x48001004, 0x80000540, + 0x05020002, 0x48001005, 0x05fdff3d, 0x0501f002, + 0x64001000, 0x5c026800, 0x1c01f000, 0x4937c857, + 0x83440c80, 0x00000800, 0x0500100c, 0x61701000, + 0x05e1fbdf, 0x59001801, 0x4c000000, 0x40040000, + 0x800c1c00, 0x5c000000, 0x59002002, 0x80102440, + 0x80000580, 0x1c01f000, 0x4947c857, 0x41781800, + 0x41782000, 0x90000541, 0x05fdf7fb, 0x4933c857, + 0x4927c857, 0x59a8024c, 0x90000543, 0x4803524c, + 0x4c5c0000, 0x4d400000, 0x59ccb800, 0x825cbd00, + 0x00ffffff, 0x60028000, 0x05b1fe4d, 0x05f1fc28, + 0x485f5040, 0x0500001d, 0x4d3c0000, 0x60aa8000, + 0x59240400, 0x8c00050a, 0x05020006, 0x59240200, + 0x84000556, 0x48024a00, 0x60083000, 0x0505fe73, + 0x600a7800, 0x05b1fe96, 0x42000000, 0x001123f8, + 0x0509fedf, 0x59cc0408, 0x8c00051e, 0x05020009, + 0x42000800, 0x001124b6, 0x58040406, 0x8c000500, + 0x05020004, 0x59a8024c, 0x84000552, 0x4803524c, + 0x600a8000, 0x5c027800, 0x41780800, 0x05c9ffb5, + 0x59240200, 0x4803c857, 0x4927c857, 0xb0000566, + 0x48024a00, 0x485e4805, 0x812000f0, 0x805c0540, + 0x48026813, 0x49238830, 0x84000570, 0x48038832, + 0x59a8124c, 0x59cc0408, 0x8c00051a, 0x05020005, + 0x84081514, 0x4a0370e5, 0x00000800, 0x0501f004, + 0x84081554, 0x4a0370e5, 0x00000c00, 0x84081548, + 0x480b524c, 0x480b524c, 0x05f9fd4f, 0x59cc0408, + 0x8c000518, 0x0500000a, 0x59a8024c, 0x84000508, + 0x8400054a, 0x4803524c, 0x49238830, 0x845c0570, + 0x48038832, 0x60100800, 0x05c9fe52, 0x59a80a4c, + 0x84040d50, 0x59cc0013, 0x8c00053e, 0x05000003, + 0x8c000536, 0x05000004, 0x59cc0017, 0x8c000536, + 0x05020002, 0x84040d10, 0x4807524c, 0x4807544c, + 0x42001800, 0x001142a2, 0x8c040508, 0x05020007, 0x59240400, 0x8c00050c, 0x05000004, 0x64866429, - 0x05fdf9d9, 0x90000541, 0x5c024000, 0x5c024800, - 0x5c026800, 0x1c01f000, 0x80000580, 0x05fdf7fb, - 0x4d340000, 0x5932680a, 0x05d1f95a, 0x5c026800, - 0x0005f7dc, 0x4803c856, 0x4c5c0000, 0x4d200000, - 0x4014b800, 0x05b5fcda, 0x59a800bb, 0x80000040, - 0x480350bb, 0x916c0582, 0x05020004, 0x59240200, - 0x8400051a, 0x48024a00, 0x59240200, 0x82000500, - 0xfffffeef, 0x84000546, 0x48024a00, 0x497a4805, - 0x4d400000, 0x60068000, 0x41781800, 0x405c2800, - 0x60040000, 0x05d1fcff, 0x60aa8000, 0x4d3c0000, - 0x600a7800, 0x05b5fd10, 0x5c027800, 0x5c028000, - 0x5c024000, 0x5c00b800, 0x813261c0, 0x05ee0275, - 0x1c01f000, 0x59303009, 0x58181a08, 0x820c1d00, - 0x000000ff, 0xb00c0588, 0x05000003, 0xb00c05aa, - 0x05020048, 0x59300004, 0x8c000516, 0x05020045, - 0x5818040c, 0x8c000500, 0x05000042, 0x42000000, - 0x001102f0, 0x50006000, 0x41781800, 0x5830200c, - 0x41300000, 0x80100580, 0x05000006, 0x40101800, - 0x580c2000, 0x801021c0, 0x05fe07fa, 0x0501f035, - 0x4933c857, 0x59302000, 0x497a6000, 0x800c19c0, - 0x0502001e, 0x4933c856, 0x42007000, 0x000211a7, - 0x5830000a, 0x800001c0, 0x05000018, 0x4978600a, - 0x58380001, 0x80300580, 0x05020008, 0x4933c856, - 0x49787002, 0x4810600c, 0x801021c0, 0x0502001d, - 0x4978600b, 0x0501f01b, 0x4933c856, 0x4810600c, - 0x801021c0, 0x05020002, 0x4978600b, 0x4c180000, - 0x4c300000, 0x05a9f944, 0x5c006000, 0x05fdfc12, - 0x5c003000, 0x0501f00f, 0x4933c856, 0x800c19c0, - 0x05020008, 0x801021c0, 0x05000003, 0x4810600c, - 0x0501f008, 0x4978600c, 0x4978600b, 0x0501f005, - 0x48101800, 0x801021c0, 0x05020002, 0x480c600b, - 0x5818040c, 0x84000500, 0x4800340c, 0x4978320c, - 0x1c01f000, 0x4933c857, 0x4927c857, 0x59a80249, - 0x90000543, 0x48035249, 0x4c5c0000, 0x4d400000, - 0x59ccb800, 0x825cbd00, 0x00ffffff, 0x60028000, - 0x05b5fc5f, 0x05f1fd93, 0x485f503d, 0x0500001d, - 0x4d3c0000, 0x60aa8000, 0x59240400, 0x8c00050a, - 0x05020006, 0x59240200, 0x84000556, 0x48024a00, - 0x60083000, 0x0505fdda, 0x600a7800, 0x05b5fc9e, - 0x42000000, 0x0010e454, 0x0509fe12, 0x59cc0408, - 0x8c00051e, 0x05020009, 0x42000800, 0x0010e512, - 0x58040406, 0x8c000500, 0x05020004, 0x59a80249, - 0x84000552, 0x48035249, 0x600a8000, 0x5c027800, - 0x41780800, 0x05cdfbfd, 0x59240200, 0x4803c857, - 0x4927c857, 0xb0000566, 0x48024a00, 0x485e4805, - 0x812000f0, 0x805c0540, 0x48026813, 0x49238830, - 0x84000570, 0x48038832, 0x59a81249, 0x59cc0408, - 0x8c00051a, 0x05020005, 0x84081514, 0x4a0370e5, - 0x00000800, 0x0501f004, 0x84081554, 0x4a0370e5, - 0x00000c00, 0x480b5249, 0x05f9fe67, 0x59cc0408, - 0x8c000518, 0x05000009, 0x59a80249, 0x8400054a, - 0x48035249, 0x49238830, 0x845c0570, 0x48038832, - 0x60100800, 0x05cdfaf0, 0x59a80a49, 0x84040d50, - 0x59cc0013, 0x8c00053e, 0x05000003, 0x8c000536, - 0x05000004, 0x59cc0017, 0x8c000536, 0x05020002, - 0x84040d10, 0x48075249, 0x48075449, 0x42001800, - 0x001102fe, 0x59240400, 0x8c00050c, 0x05000004, - 0x64866429, 0x05fdf8f4, 0x0501f009, 0x405c0800, - 0x41781000, 0x60001802, 0x60040000, 0x60028000, - 0x05d1fc38, 0x0501f830, 0x0005ffdc, 0x59a80249, - 0x4803c857, 0x8c000506, 0x05020006, 0x41781800, - 0x0509ff06, 0x05000002, 0x60401800, 0x05b5fb93, - 0x805c0110, 0x48035046, 0x48038881, 0x59a80044, - 0x80000040, 0x4803c857, 0x05001003, 0x48035044, - 0x0502001a, 0x59a80249, 0x8c000506, 0x05000004, - 0x8400050a, 0x48035249, 0x48035449, 0x42001800, - 0x0010dd46, 0x05a5feeb, 0x42001800, 0x0010dd53, - 0x05a5fee8, 0x4a035045, 0x0000ffff, 0x05e5fe5b, - 0x4a01a8e4, 0x00000080, 0x0509ff09, 0x05000004, - 0x4a038802, 0x0000ffbf, 0x0501f003, 0x4a038802, - 0x0000ffff, 0x850e1d02, 0x5c028000, 0x5c00b800, - 0x1c01f000, 0x4d440000, 0x4d340000, 0x61f2880f, - 0x05d1f82d, 0x05020003, 0x4a026c00, 0x00000707, - 0x5c026800, 0x5c028800, 0x1c01f000, 0x05f9feef, - 0x59a80098, 0x40002800, 0x59a81899, 0x800c0480, - 0x05000006, 0x59a8089a, 0x05001023, 0x80040480, - 0x0500001a, 0x05001019, 0x59aa6097, 0x41302000, - 0x59300a03, 0x90040d80, 0x0502000b, 0x64226203, - 0x800c1800, 0x480f5099, 0x91301430, 0xa0080495, - 0x0502100c, 0x480b5097, 0x05f9fee3, 0x81300540, - 0x1c01f000, 0x91326430, 0xa1300c95, 0x05001002, - 0x41526000, 0x81300584, 0x05000004, 0x05fdf7ed, - 0x49535097, 0x05fdf7f5, 0x42000000, 0x0010e443, - 0x0509fd64, 0x480fc857, 0x05f9fed3, 0x80026580, - 0x05fdf7f0, 0x8c14053e, 0x05fe07dd, 0x80000080, - 0x80000000, 0x05fdf7da, 0x4933c857, 0x4d340000, - 0x4d200000, 0x05b5fb92, 0x61f6880f, 0x42003000, - 0x00fffffd, 0x05cdfa8b, 0x05a60b50, 0x4936600a, - 0x497a6c12, 0x59300429, 0x900005a1, 0x05020003, - 0x599c0208, 0x48026c12, 0x5c024000, 0x5c026800, - 0x640e601e, 0x64066203, 0x648a6403, 0x05e1f5da, - 0x5930002b, 0x80000540, 0x05000006, 0x82000580, - 0xffffffff, 0x05000003, 0x82000580, 0xffffffff, - 0x1c01f000, 0x4927c857, 0x59240200, 0xb0000542, - 0x48024a00, 0x1c01f000, 0x4933c857, 0x59368c03, - 0x4c180000, 0x59300203, 0x90003491, 0x05a61b2f, - 0x0c01f803, 0x5c003000, 0x1c01f000, 0x0010bac0, - 0x0010c01b, 0x0010c1e5, 0x0010bac0, 0x0010bac0, - 0x0010bac0, 0x0010bac0, 0x0010bac0, 0x0010bae0, - 0x0010bac0, 0x0010bac0, 0x0010bac0, 0x0010bac0, - 0x0010bac0, 0x0010c8ad, 0x0010bac0, 0x0010bac0, - 0x05a5fb1a, 0x4933c857, 0x61fe89ff, 0x813669c0, - 0x05000002, 0x59368c03, 0x4c180000, 0x59300203, - 0x90003491, 0x05a61b11, 0x0c01f803, 0x5c003000, - 0x1c01f000, 0x0010bade, 0x0010c49f, 0x0010bade, - 0x0010bade, 0x0010bade, 0x0010bade, 0x0010bade, - 0x0010bade, 0x0010c3dd, 0x0010c9fc, 0x0010ca31, - 0x0010c9fc, 0x0010ca31, 0x0010bade, 0x0010c8be, - 0x0010bade, 0x0010bade, 0x05a5fafc, 0x05a5fafb, - 0xb13834a0, 0x05a61af9, 0x41380000, 0x493bc857, - 0x4d1c0000, 0x4d400000, 0x0c01f804, 0x5c028000, - 0x5c023800, 0x1c01f000, 0x0010bb4a, 0x0010bdc5, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bdcb, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bc52, 0x0010bc91, 0x0010bca3, - 0x0010bd04, 0x0010bd48, 0x0010bd7c, 0x0010bd9e, - 0x0010bb4a, 0x0010bb4a, 0x0010bdd0, 0x0010bb4a, - 0x0010bb4a, 0x0010bdd9, 0x0010bdde, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010be6d, 0x0010bb4a, 0x0010bb4a, 0x0010bd31, - 0x0010bb4a, 0x0010bb4a, 0x0010be43, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010be78, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bec0, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bf15, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bc32, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bc3c, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bf3e, 0x0010bf43, 0x0010bf5b, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bc48, 0x0010bb4a, 0x0010bb4a, 0x0010bb4b, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bbc5, - 0x0010bb4a, 0x0010bb4a, 0x05a5fa90, 0x4933c857, - 0x59cc0801, 0x82040580, 0x00fffffe, 0x05020416, - 0x0505ff3b, 0x05020414, 0x05b5f8b2, 0x05020412, - 0x59a804cc, 0x8c000504, 0x05000254, 0x4c5c0000, - 0x59a808b6, 0x82040580, 0x00000228, 0x050200b5, - 0x59cc0800, 0x82040d00, 0x00ffffff, 0x82040580, - 0x00fffff0, 0x050200b1, 0x59cc0801, 0x82040d00, - 0x00ffffff, 0x82040580, 0x00fffffe, 0x050200ad, - 0x59cc0c07, 0x80040910, 0x90040581, 0x050200ab, - 0x59cc0a0a, 0x82040580, 0x00000228, 0x050200af, - 0x4c600000, 0x4c640000, 0x91ccbc0b, 0x585c0c00, - 0x82040580, 0x00000101, 0x0502003f, 0x585c0a00, - 0x90040584, 0x0502003e, 0x91ccc40d, 0x58600c00, - 0x82040580, 0x00000102, 0x0502003b, 0x58600a00, - 0x90040584, 0x0502003a, 0x91cccc0f, 0x58640c00, - 0x82040580, 0x00000103, 0x05000004, 0x82040580, - 0x00000203, 0x05020036, 0x58640a00, 0x82040580, - 0x00000200, 0x05020034, 0x585c0801, 0x90040484, - 0x05021033, 0x59cc0a07, 0x4807c857, 0x4806621b, - 0x58600201, 0x4803c857, 0x800001c0, 0x05000026, - 0x82000c80, 0x00000fff, 0x05021023, 0x480354cd, - 0x480352cc, 0x60643000, 0x61fc19ff, 0x60182000, - 0x4d200000, 0x417a4000, 0x05c5fca6, 0x5c024000, - 0x585cc801, 0x5860ba01, 0x91ccc410, 0x497a641b, - 0x0509fb09, 0x59cc0c04, 0x48066202, 0x656a6403, - 0x64066203, 0x05e1fcc4, 0x59a804cc, 0x84000542, - 0x480354cc, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x4807c857, 0x05fdf7fb, 0x4807c857, - 0x05fdf7f9, 0x4807c857, 0x05fdf7f7, 0x4807c857, - 0x05fdf7f5, 0x4803c857, 0x05fdf7f3, 0x4807c857, - 0x05fdf7f1, 0x4807c857, 0x05fdf7ef, 0x4807c857, - 0x05fdf7ed, 0x4933c857, 0x59cc0801, 0x82040580, - 0x00fffffe, 0x0502039c, 0x0505fec1, 0x0502039a, - 0x05b5f838, 0x05020398, 0x0501fbcd, 0x050201db, - 0x4c5c0000, 0x59a808b6, 0x90040594, 0x0502003d, - 0x59cc0800, 0x82040d00, 0x00ffffff, 0x82040580, - 0x00fffff0, 0x05020039, 0x59cc0801, 0x82040d00, - 0x00ffffff, 0x82040580, 0x00fffffe, 0x05020035, - 0x59cc0c07, 0x80040910, 0x90040581, 0x05020033, - 0x59cc0a0a, 0x90040594, 0x05020038, 0x59cc0c07, - 0x82040d00, 0x000000ff, 0x90040582, 0x0502002d, - 0x59cc0a07, 0x4807c857, 0x4d300000, 0x05d9fead, - 0x4130b800, 0x5c026000, 0x0500002e, 0x485fc857, - 0x585c0c07, 0x90040581, 0x0502002d, 0x585c0a03, - 0x90040582, 0x0502002d, 0x585c0c03, 0xb0040598, - 0x0502002d, 0x5930000a, 0x585c080a, 0x80040580, - 0x0502002c, 0x585c041b, 0x8c000508, 0x0500002c, - 0x59a804cc, 0x84000542, 0x480354cc, 0x59cc0c04, - 0x4804ba02, 0x6578bc03, 0x6404ba03, 0x0005ffdc, - 0x405e6000, 0x05e1fc64, 0x5c00b800, 0x1c01f000, - 0x4807c857, 0x05fdf7fd, 0x4807c857, 0x05fdf7fb, - 0x4807c857, 0x05fdf7f9, 0x4807c857, 0x0501f002, - 0x4807c857, 0x641e641c, 0x657e6403, 0x6402621c, - 0x5c00b800, 0x0501f1ac, 0x4807c857, 0x05fdf7fa, - 0x4807c857, 0x640e641c, 0x05fdf7f8, 0x4807c857, - 0x640e641c, 0x05fdf7f5, 0x4807c857, 0x640e641c, - 0x05fdf7f2, 0x4807c857, 0x640e641c, 0x05fdf7ef, - 0x4807c857, 0x640e641c, 0x05fdf7ec, 0x4807c857, - 0x640e641c, 0x05fdf7e9, 0x4933c857, 0x0505fe58, - 0x05020331, 0x05b1ffcf, 0x0502032f, 0x59cc0407, - 0x4802601e, 0x65166403, 0x64066203, 0x05e1f436, - 0x4933c857, 0x0505fe4e, 0x05020327, 0x05b1ffc5, - 0x05020325, 0x0501fb5a, 0x05020168, 0x59cc0007, - 0x4802601e, 0x652a6403, 0x64066203, 0x05e1f42a, - 0x4933c857, 0x0505fe42, 0x0502031b, 0x05b1ffb9, - 0x05020319, 0x0501fb4e, 0x0502015c, 0x655a6403, - 0x64066203, 0x05e1f420, 0x4933c857, 0x05b1ffb1, - 0x05020009, 0x05cdfc75, 0x05020007, 0x5932481d, - 0x59240200, 0x90000503, 0x90000583, 0x05000006, - 0x0501f309, 0x64266403, 0x6426641c, 0x6402621c, - 0x0501f169, 0x05cdfde6, 0x05000025, 0x59340200, - 0x8c00051a, 0x05000004, 0x5934000a, 0x84000560, - 0x4802680a, 0x0505f982, 0x05020024, 0x0509fceb, - 0x05020006, 0x60a68000, 0x4d3c0000, 0x417a7800, - 0x05b1febc, 0x5c027800, 0x42000000, 0x0010e456, - 0x0509fb68, 0x41780800, 0x05cdf960, 0x64226403, - 0x600c3000, 0x59240400, 0x8c00050a, 0x0502014e, - 0x59cc400b, 0x59cc380c, 0x59cc180d, 0x59cc080e, - 0x9c2041c0, 0x9c1c39c0, 0x9c0c19c0, 0x9c0409c0, - 0x641e6203, 0x41782800, 0x0501f13c, 0x0505faef, - 0x05fe07e1, 0x64266403, 0x643a641c, 0x4a02621c, - 0x00001900, 0x0501f13c, 0x64266403, 0x640e641c, - 0x0501f139, 0x4933c857, 0x05b1ff72, 0x050202d2, - 0x05cdfc36, 0x050202d0, 0x493a6403, 0x0505f8e7, - 0x05020007, 0x641a6403, 0x59240400, 0x8c00050a, - 0x0502012d, 0x641e6203, 0x0509f10a, 0x641e6403, - 0x6426641c, 0x6402621c, 0x0501f127, 0x4933c857, - 0x05cdfc26, 0x050202c0, 0x5934000a, 0x82000500, - 0x00010000, 0x82000580, 0x00010000, 0x05060de0, - 0x05b00f58, 0x050202b8, 0x59cc0001, 0x82000500, - 0x00ffff00, 0x82000580, 0x00fffc00, 0x05020007, - 0x59a80006, 0x8c00050e, 0x05000004, 0x59240400, - 0x8c00050a, 0x05020036, 0x05cdfd8d, 0x05020003, - 0x60067800, 0x05cdf826, 0x05cdfd7c, 0x05000004, - 0x82000580, 0x00000703, 0x05020032, 0x59cc0206, - 0x90003503, 0x05020034, 0x90003494, 0x05001032, - 0x59a830b6, 0x80183480, 0x0500102f, 0x5934300a, - 0x84183516, 0x90000594, 0x05020002, 0x84183556, - 0x481a680a, 0x59cc0406, 0x90000503, 0x05020026, - 0x0505f962, 0x0502002b, 0x05cdfd4f, 0x05020006, - 0x4c600000, 0x4178c000, 0x417a7800, 0x05b1fec9, - 0x5c00c000, 0x916c0583, 0x05020006, 0x60183000, - 0x0509f89c, 0x42000000, 0x0010e455, 0x0509faf9, - 0x05cdf967, 0x642a6403, 0x60803000, 0x59cc1a0a, - 0x41780800, 0x41784000, 0x41783800, 0x59240400, - 0x8c00050a, 0x050200dc, 0x05fdf796, 0x642e6403, - 0x642e641c, 0x4a02621c, 0x00002c00, 0x0501f0d6, - 0x642e6403, 0x6426641c, 0x4a02621c, 0x00001e00, - 0x0501f0d1, 0x42000000, 0x0010e3ab, 0x0509fae1, - 0x642e6403, 0x641e641c, 0x6402621c, 0x0501f0ca, - 0x642e6403, 0x640e641c, 0x6402621c, 0x0501f0c6, - 0x4933c857, 0x05cdfbc5, 0x0502025f, 0x0505fd84, - 0x0502025d, 0x05b1fefb, 0x0502025b, 0x59cc0206, - 0x90003503, 0x0502001b, 0x90003494, 0x05001019, - 0x59a830b6, 0x80180480, 0x05001016, 0x59cc0406, - 0x90000503, 0x05020013, 0x59340400, 0x82000580, - 0x00000707, 0x05000013, 0x417a7800, 0x4c600000, - 0x4178c000, 0x05b1fe87, 0x5c00c000, 0x60283000, - 0x0509f85c, 0x42000000, 0x0010e452, 0x0509fab9, - 0x64326403, 0x41782800, 0x60843000, 0x05fdf7c4, - 0x64366403, 0x641e641c, 0x6402621c, 0x0501f09e, + 0x05f9ffe7, 0x0501f009, 0x405c0800, 0x41781000, + 0x60001802, 0x60040000, 0x60028000, 0x05d1f869, + 0x0501f830, 0x0009f810, 0x59a8024c, 0x4803c857, + 0x8c000506, 0x05020006, 0x41781800, 0x0509ffce, + 0x05000002, 0x60401800, 0x05b1fd7c, 0x805c0110, + 0x48035049, 0x48038881, 0x59a80047, 0x80000040, + 0x4803c857, 0x05001003, 0x48035047, 0x0502001a, + 0x59a8024c, 0x8c000506, 0x05000004, 0x8400050a, + 0x4803524c, 0x4803544c, 0x42001800, 0x00111ce0, + 0x05a5f86f, 0x42001800, 0x00111ced, 0x05a5f86c, + 0x4a035048, 0x0000ffff, 0x05e5fc66, 0x4a01a8e4, + 0x00000080, 0x0509ffd1, 0x05000004, 0x4a038802, + 0x0000ffbf, 0x0501f003, 0x4a038802, 0x0000ffff, + 0x850e1d02, 0x5c028000, 0x5c00b800, 0x1c01f000, + 0x4d440000, 0x4d340000, 0x61f2880f, 0x05cdfc43, + 0x05020003, 0x4a026c00, 0x00000707, 0x5c026800, + 0x5c028800, 0x1c01f000, 0x05f9fdd4, 0x59a8009b, + 0x40002800, 0x59a8189c, 0x800c0480, 0x05000006, + 0x59a8089d, 0x05001026, 0x80040480, 0x0500001d, + 0x0500101c, 0x59aa609a, 0x41302000, 0x59300a03, + 0x90040d80, 0x0502000e, 0x5930002f, 0x84000516, + 0x4802602f, 0x64226203, 0x800c1800, 0x480f509c, + 0x91301430, 0xa0080495, 0x0502100c, 0x480b509a, + 0x05f9fdc9, 0x81300540, 0x1c01f000, 0x91326430, + 0xa1300c95, 0x05001002, 0x41526000, 0x81300584, + 0x05000004, 0x05fdf7ea, 0x4953509a, 0x05fdf7f5, + 0x42000000, 0x001123e5, 0x0509fe29, 0x480fc857, + 0x05f9fdb9, 0x80026580, 0x05fdf7f0, 0x8c14053e, + 0x05fe07da, 0x80000080, 0x80000000, 0x05fdf7d7, + 0x4933c857, 0x4d340000, 0x4d200000, 0x05b1fd78, + 0x61f6880f, 0x42003000, 0x00fffffd, 0x05c9fdf0, + 0x05a20cd5, 0x4936600a, 0x497a6c12, 0x59300429, + 0x900005a1, 0x05020003, 0x599c0208, 0x48026c12, + 0x5c024000, 0x5c026800, 0x640e601e, 0x64066203, + 0x648a6403, 0x05e1f3dd, 0x5930002b, 0x80000540, + 0x05000006, 0x82000580, 0xffffffff, 0x05000003, + 0x82000580, 0xffffffff, 0x1c01f000, 0x4927c857, + 0x59240200, 0xb0000542, 0x48024a00, 0x1c01f000, + 0x4927c857, 0x4a024a00, 0x00008085, 0x599c0208, + 0x48026c12, 0x4d300000, 0x05e9ffb6, 0x5c000000, + 0x05000005, 0x641c0407, 0x4a000006, 0x00000398, + 0x0501f002, 0x40026000, 0x4936600a, 0x600c0800, + 0x05c9fd94, 0x49238830, 0x4a038832, 0xffffffff, + 0x4926601d, 0x497a6009, 0x64066407, 0x64066203, + 0x640a6403, 0x05e1f3b5, 0x82bc0580, 0x00115aa4, + 0x05000008, 0x59a8003d, 0x59a8729f, 0x80380400, + 0x59a8723e, 0x8164740e, 0x80380480, 0x0501f003, + 0x59a8003d, 0x81640480, 0x1c01f000, 0x4933c857, + 0x59368c03, 0x4c180000, 0x59300203, 0x90003491, + 0x05a21c8d, 0x0c01f803, 0x5c003000, 0x1c01f000, + 0x0010c19d, 0x0010c70d, 0x0010c8e8, 0x0010c19d, + 0x0010c19d, 0x0010c19d, 0x0010c19d, 0x0010c19d, + 0x0010c1bd, 0x0010c19d, 0x0010c19d, 0x0010c19d, + 0x0010c19d, 0x0010c19d, 0x0010cff7, 0x0010c19d, + 0x0010c19d, 0x05a1fc78, 0x4933c857, 0x61fe89ff, + 0x813669c0, 0x05000002, 0x59368c03, 0x4c180000, + 0x59300203, 0x90003491, 0x05a21c6f, 0x0c01f803, + 0x5c003000, 0x1c01f000, 0x0010c1bb, 0x0010cb9c, + 0x0010c1bb, 0x0010c1bb, 0x0010c1bb, 0x0010c1bb, + 0x0010c1bb, 0x0010c1bb, 0x0010cae0, 0x0010d146, + 0x0010d17b, 0x0010d146, 0x0010d17b, 0x0010c1bb, + 0x0010d008, 0x0010c1bb, 0x0010c1bb, 0x05a1fc5a, + 0x05a1fc59, 0xb13834a0, 0x05a21c57, 0x41380000, + 0x493bc857, 0x4d1c0000, 0x4d400000, 0x0c01f804, + 0x5c028000, 0x5c023800, 0x1c01f000, 0x0010c22b, + 0x0010c4b4, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c4ba, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c333, 0x0010c372, + 0x0010c384, 0x0010c3e5, 0x0010c429, 0x0010c45d, + 0x0010c47f, 0x0010c22b, 0x0010c22b, 0x0010c4bf, + 0x0010c22b, 0x0010c22b, 0x0010c4c8, 0x0010c4cd, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c55f, 0x0010c22b, 0x0010c22b, + 0x0010c412, 0x0010c22b, 0x0010c22b, 0x0010c52f, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c56a, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c5b2, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c607, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c313, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c31d, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c630, 0x0010c635, 0x0010c64d, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c329, 0x0010c22b, 0x0010c22b, + 0x0010c22c, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c2a6, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x05a1fbea, + 0x4933c857, 0x59cc0801, 0x82040580, 0x00fffffe, + 0x05020427, 0x0505ffa4, 0x05020425, 0x05b1fa69, + 0x05020423, 0x59a804d1, 0x8c000504, 0x05000262, + 0x4c5c0000, 0x59a808bb, 0x82040580, 0x00000228, + 0x050200b5, 0x59cc0800, 0x82040d00, 0x00ffffff, + 0x82040580, 0x00fffff0, 0x050200b1, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x82040580, 0x00fffffe, + 0x050200ad, 0x59cc0c07, 0x80040910, 0x90040581, + 0x050200ab, 0x59cc0a0a, 0x82040580, 0x00000228, + 0x050200af, 0x4c600000, 0x4c640000, 0x91ccbc0b, + 0x585c0c00, 0x82040580, 0x00000101, 0x0502003f, + 0x585c0a00, 0x90040584, 0x0502003e, 0x91ccc40d, + 0x58600c00, 0x82040580, 0x00000102, 0x0502003b, + 0x58600a00, 0x90040584, 0x0502003a, 0x91cccc0f, + 0x58640c00, 0x82040580, 0x00000103, 0x05000004, + 0x82040580, 0x00000203, 0x05020036, 0x58640a00, + 0x82040580, 0x00000200, 0x05020034, 0x585c0801, + 0x90040484, 0x05021033, 0x59cc0a07, 0x4807c857, + 0x4806621b, 0x58600201, 0x4803c857, 0x800001c0, + 0x05000026, 0x82000c80, 0x00000fff, 0x05021023, + 0x480354d2, 0x480352d1, 0x60643000, 0x61fc19ff, + 0x60182000, 0x4d200000, 0x417a4000, 0x05c1ff62, + 0x5c024000, 0x585cc801, 0x5860ba01, 0x91ccc410, + 0x497a641b, 0x0509fb8f, 0x59cc0c04, 0x48066202, + 0x656a6403, 0x64066203, 0x05e1fa9c, 0x59a804d1, + 0x84000542, 0x480354d1, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4807c857, 0x05fdf7fb, + 0x4807c857, 0x05fdf7f9, 0x4807c857, 0x05fdf7f7, + 0x4807c857, 0x05fdf7f5, 0x4803c857, 0x05fdf7f3, + 0x4807c857, 0x05fdf7f1, 0x4807c857, 0x05fdf7ef, + 0x4807c857, 0x05fdf7ed, 0x4933c857, 0x59cc0801, + 0x82040580, 0x00fffffe, 0x050203ad, 0x0505ff2a, + 0x050203ab, 0x05b1f9ef, 0x050203a9, 0x0501fbde, + 0x050201e9, 0x4c5c0000, 0x59a808bb, 0x90040594, + 0x0502003d, 0x59cc0800, 0x82040d00, 0x00ffffff, + 0x82040580, 0x00fffff0, 0x05020039, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x82040580, 0x00fffffe, + 0x05020035, 0x59cc0c07, 0x80040910, 0x90040581, + 0x05020033, 0x59cc0a0a, 0x90040594, 0x05020038, + 0x59cc0c07, 0x82040d00, 0x000000ff, 0x90040582, + 0x0502002d, 0x59cc0a07, 0x4807c857, 0x4d300000, + 0x05d9fbba, 0x4130b800, 0x5c026000, 0x0500002e, + 0x485fc857, 0x585c0c07, 0x90040581, 0x0502002d, + 0x585c0a03, 0x90040582, 0x0502002d, 0x585c0c03, + 0xb0040598, 0x0502002d, 0x5930000a, 0x585c080a, + 0x80040580, 0x0502002c, 0x585c041b, 0x8c000508, + 0x0500002c, 0x59a804d1, 0x84000542, 0x480354d1, + 0x59cc0c04, 0x4804ba02, 0x6578bc03, 0x6404ba03, + 0x0009f810, 0x405e6000, 0x05e1fa3c, 0x5c00b800, + 0x1c01f000, 0x4807c857, 0x05fdf7fd, 0x4807c857, + 0x05fdf7fb, 0x4807c857, 0x05fdf7f9, 0x4807c857, + 0x0501f002, 0x4807c857, 0x641e641c, 0x657e6403, + 0x6402621c, 0x5c00b800, 0x0501f1ba, 0x4807c857, + 0x05fdf7fa, 0x4807c857, 0x640e641c, 0x05fdf7f8, + 0x4807c857, 0x640e641c, 0x05fdf7f5, 0x4807c857, + 0x640e641c, 0x05fdf7f2, 0x4807c857, 0x640e641c, + 0x05fdf7ef, 0x4807c857, 0x640e641c, 0x05fdf7ec, + 0x4807c857, 0x640e641c, 0x05fdf7e9, 0x4933c857, + 0x0505fec1, 0x05020342, 0x05b1f986, 0x05020340, + 0x59cc0407, 0x4802601e, 0x65166403, 0x64066203, + 0x05e1f20e, 0x4933c857, 0x0505feb7, 0x05020338, + 0x05b1f97c, 0x05020336, 0x0501fb6b, 0x05020176, + 0x59cc0007, 0x4802601e, 0x652a6403, 0x64066203, + 0x05e1f202, 0x4933c857, 0x0505feab, 0x0502032c, + 0x05b1f970, 0x0502032a, 0x0501fb5f, 0x0502016a, + 0x655a6403, 0x64066203, 0x05e1f1f8, 0x4933c857, + 0x05b1f968, 0x05020009, 0x05cdf806, 0x05020007, + 0x5932481d, 0x59240200, 0x90000503, 0x90000583, + 0x05000006, 0x0501f31a, 0x64266403, 0x6426641c, + 0x6402621c, 0x0501f177, 0x05cdf9ce, 0x05000025, + 0x59340200, 0x8c00051a, 0x05000004, 0x5934000a, + 0x84000560, 0x4802680a, 0x0505f9b5, 0x05020024, + 0x0509fd85, 0x05020006, 0x60a68000, 0x4d3c0000, + 0x417a7800, 0x05b1f872, 0x5c027800, 0x42000000, + 0x001123fa, 0x0509fc02, 0x41780800, 0x05c9fce5, + 0x64226403, 0x600c3000, 0x59240400, 0x8c00050a, + 0x0502015c, 0x59cc400b, 0x59cc380c, 0x59cc180d, + 0x59cc080e, 0x9c2041c0, 0x9c1c39c0, 0x9c0c19c0, + 0x9c0409c0, 0x641e6203, 0x41782800, 0x0501f14a, + 0x0505fb53, 0x05fe07e1, 0x64266403, 0x643a641c, + 0x4a02621c, 0x00001900, 0x0501f14a, 0x64266403, + 0x640e641c, 0x0501f147, 0x4933c857, 0x05b1f929, + 0x050202e3, 0x05c9ffc7, 0x050202e1, 0x493a6403, + 0x0505f90d, 0x05020007, 0x641a6403, 0x59240400, + 0x8c00050a, 0x0502013b, 0x641e6203, 0x0509f186, + 0x641e6403, 0x6426641c, 0x6402621c, 0x0501f135, + 0x4933c857, 0x05c9ffb7, 0x050202d1, 0x5934000a, + 0x82000500, 0x00010000, 0x82000580, 0x00010000, + 0x05060e49, 0x05b0090f, 0x050202c9, 0x59cc0001, + 0x82000500, 0x00ffff00, 0x82000580, 0x00fffc00, + 0x05020007, 0x59a80006, 0x8c00050e, 0x05000004, + 0x59240400, 0x8c00050a, 0x05020036, 0x05cdf975, + 0x05020003, 0x60067800, 0x05c9fb58, 0x05cdf964, + 0x05000004, 0x82000580, 0x00000703, 0x05020032, + 0x59cc0206, 0x90003503, 0x05020034, 0x90003494, + 0x05001032, 0x59a830bb, 0x80183480, 0x0500102f, + 0x5934300a, 0x84183516, 0x90000594, 0x05020002, + 0x84183556, 0x481a680a, 0x59cc0406, 0x90000503, + 0x05020026, 0x0505f998, 0x0502002b, 0x05cdf937, + 0x05020006, 0x4c600000, 0x4178c000, 0x417a7800, + 0x05b1f87f, 0x5c00c000, 0x916c0583, 0x05020006, + 0x60183000, 0x0509f918, 0x42000000, 0x001123f9, + 0x0509fb93, 0x05c9fcec, 0x642a6403, 0x60803000, + 0x59cc1a0a, 0x41780800, 0x41784000, 0x41783800, + 0x59240400, 0x8c00050a, 0x050200ea, 0x05fdf796, + 0x642e6403, 0x642e641c, 0x4a02621c, 0x00002c00, + 0x0501f0e4, 0x642e6403, 0x6426641c, 0x4a02621c, + 0x00001e00, 0x0501f0df, 0x42000000, 0x0011234c, + 0x0509fb7b, 0x642e6403, 0x641e641c, 0x6402621c, + 0x0501f0d8, 0x642e6403, 0x640e641c, 0x6402621c, + 0x0501f0d4, 0x4933c857, 0x05c9ff56, 0x05020270, + 0x0505fded, 0x0502026e, 0x05b1f8b2, 0x0502026c, + 0x59cc0206, 0x90003503, 0x0502001b, 0x90003494, + 0x05001019, 0x59a830bb, 0x80180480, 0x05001016, + 0x59cc0406, 0x90000503, 0x05020013, 0x59340400, + 0x82000580, 0x00000707, 0x05000013, 0x417a7800, + 0x4c600000, 0x4178c000, 0x05b1f83d, 0x5c00c000, + 0x60283000, 0x0509f8d8, 0x42000000, 0x001123f6, + 0x0509fb53, 0x64326403, 0x41782800, 0x60843000, + 0x05fdf7c4, 0x64366403, 0x641e641c, 0x6402621c, + 0x0501f0ac, 0x64366403, 0x6426641c, 0x4a02621c, + 0x00001e00, 0x0501f0a7, 0x4933c857, 0x05c9ff29, + 0x05020243, 0x0505fdc0, 0x05020241, 0x05b1f885, + 0x0502023f, 0x0501fa74, 0x0502000a, 0x493a6403, + 0x0501fa7a, 0x05020003, 0x64ba6403, 0x05fdf75c, + 0x64366403, 0x641e641c, 0x6402621c, 0x0501f095, 0x64366403, 0x6426641c, 0x4a02621c, 0x00001e00, - 0x0501f099, 0x4933c857, 0x05cdfb98, 0x05020232, - 0x0505fd57, 0x05020230, 0x05b1fece, 0x0502022e, - 0x0501fa63, 0x0502000a, 0x493a6403, 0x0501fa69, - 0x05020003, 0x64ba6403, 0x05fdf75c, 0x64366403, - 0x641e641c, 0x6402621c, 0x0501f087, 0x64366403, - 0x6426641c, 0x4a02621c, 0x00001e00, 0x0501f082, - 0x4933c857, 0x05cdfb81, 0x05fe0713, 0x59240200, - 0x90000503, 0x90000583, 0x05020217, 0x05cdfceb, - 0x05020027, 0x0505f8ec, 0x0502000b, 0x643a6403, - 0x59240400, 0x8c00050a, 0x05020073, 0x61483000, - 0x59cc4008, 0x59cc3809, 0x59cc180a, 0x59cc080b, - 0x05fdf724, 0x4933c857, 0x600c3000, 0x0509f824, - 0x4d3c0000, 0x417a7800, 0x05b1fdca, 0x5c027800, - 0x42000000, 0x0010e454, 0x0509fa76, 0x59340200, - 0x84000558, 0x48026a00, 0x602c0800, 0x05c9ff82, - 0x59240400, 0x8c00050a, 0x05020057, 0x601c3000, - 0x0501f04c, 0x4933c857, 0x643e6403, 0x640e641c, - 0x4a02621c, 0x00001e00, 0x0501f053, 0x59340400, - 0x82000580, 0x00000703, 0x05fc07f7, 0x0501f02f, - 0x4933c857, 0x05cdfb4d, 0x050201e7, 0x5932481d, - 0x59240200, 0x90000503, 0x90000583, 0x050201e2, - 0x05cdfcad, 0x05020021, 0x0505f8ca, 0x05040864, - 0x05020004, 0x64426403, 0x61403000, 0x05fdf6ee, - 0x4d3c0000, 0x417a7800, 0x05b1fd9e, 0x5c027800, - 0x600c3000, 0x0505fff2, 0x42000000, 0x0010e454, - 0x0509fa48, 0x59340200, 0x84000558, 0x48026a00, - 0x05fdf7d4, 0x64466403, 0x640e641c, 0x4a02621c, - 0x00001e00, 0x0501f02c, 0x4933c857, 0x05b1fe65, - 0x05040ceb, 0x050201c4, 0x0501f9f9, 0x05020007, - 0x644a6403, 0x0501f024, 0x59340400, 0x82000580, - 0x00000703, 0x05fc07f0, 0x83340580, 0x00110210, - 0x05000008, 0x4d3c0000, 0x417a7800, 0x60a68000, - 0x05b1fd7c, 0x5c027800, 0x605c3000, 0x0505ffd0, - 0x42000000, 0x0010e454, 0x0509fa26, 0x05b5f860, - 0x59240400, 0x8c00050a, 0x0502000b, 0x60183000, - 0x60a68000, 0x4933c857, 0x64066403, 0x641e6203, - 0x41782800, 0x0501f002, 0x611a8000, 0x0505f9dc, - 0x0505f7e4, 0x4933c857, 0x64066403, 0x602c0800, - 0x05c9ff25, 0x64066203, 0x05e1f2a7, 0x4933c857, - 0x60240800, 0x05c9ff20, 0x64166403, 0x05fdf7fa, - 0x0505fcbb, 0x05020194, 0x05b1fe32, 0x05020192, - 0x0501f9c7, 0x05fe07d5, 0x64826403, 0x64066203, - 0x05e1f299, 0x05b1fe2b, 0x0502018b, 0x648e6403, - 0x64066203, 0x05e1f294, 0x0505fcad, 0x05b00e25, - 0x05020185, 0x0501f9ba, 0x05fe07c8, 0x59cc0807, - 0x82040500, 0x00ffff00, 0x0502000a, 0x59340212, - 0x82000500, 0x0000ff00, 0x05000006, 0x5932481d, - 0x59240005, 0x82000500, 0x000000ff, 0x0501f003, - 0x5932481d, 0x59240005, 0x82040d00, 0x00ffffff, - 0x80040580, 0x05020015, 0x59cc1408, 0x05f9fb62, - 0x0500002f, 0x591c0202, 0x82001580, 0x0000ffff, - 0x05000004, 0x59cc1208, 0x80080580, 0x05020028, - 0x591c000a, 0x81340580, 0x05020025, 0x591c0416, - 0x8c00051a, 0x05020018, 0x591c0407, 0x90000587, - 0x0502001f, 0x0501f02f, 0x59cc1208, 0x82080580, - 0x0000ffff, 0x05000015, 0x05f9fb4b, 0x05000018, - 0x59cc1408, 0x591c0202, 0x80080580, 0x0502002b, - 0x831c0580, 0xffffffff, 0x05000026, 0x591c000a, + 0x0501f090, 0x4933c857, 0x05c9ff12, 0x05fe0713, + 0x59240200, 0x90000503, 0x90000583, 0x05020228, + 0x05cdf8d3, 0x05020027, 0x0505f922, 0x0502000b, + 0x643a6403, 0x59240400, 0x8c00050a, 0x05020081, + 0x61483000, 0x59cc4008, 0x59cc3809, 0x59cc180a, + 0x59cc080b, 0x05fdf724, 0x4933c857, 0x600c3000, + 0x0509f8a0, 0x4d3c0000, 0x417a7800, 0x05adff80, + 0x5c027800, 0x42000000, 0x001123f8, 0x0509fb10, + 0x59340200, 0x84000558, 0x48026a00, 0x602c0800, + 0x05c9fab4, 0x59240400, 0x8c00050a, 0x05020065, + 0x601c3000, 0x0501f05a, 0x4933c857, 0x643e6403, + 0x640e641c, 0x4a02621c, 0x00001e00, 0x0501f061, + 0x59340400, 0x82000580, 0x00000703, 0x05fc07f7, + 0x0501f03d, 0x4933c857, 0x05c9fede, 0x050201f8, + 0x5932481d, 0x59240200, 0x90000503, 0x90000583, + 0x050201f3, 0x05cdf895, 0x0502002f, 0x0505f900, + 0x05040897, 0x05020004, 0x64426403, 0x61403000, + 0x05fdf6ee, 0x4d3c0000, 0x417a7800, 0x05adff54, + 0x5c027800, 0x600c3000, 0x0509f86e, 0x42000000, + 0x001123f8, 0x0509fae2, 0x59340200, 0x84000558, + 0x48026a00, 0x05fdf7d4, 0x64466403, 0x640e641c, + 0x4a02621c, 0x00001e00, 0x0501f03a, 0x4933c857, + 0x05b1f81c, 0x05040d54, 0x050201d5, 0x59cc0006, + 0x82000500, 0xff000000, 0x82000d80, 0x18000000, + 0x05020006, 0x6426641c, 0x4a02621c, 0x00002c00, + 0x64266403, 0x0501f02b, 0x82000d80, 0x81000000, + 0x05000003, 0x0501f9fc, 0x05020007, 0x644a6403, + 0x0501f024, 0x59340400, 0x82000580, 0x00000703, + 0x05fc07e2, 0x83340580, 0x001141b4, 0x05000008, + 0x4d3c0000, 0x417a7800, 0x60a68000, 0x05adff24, + 0x5c027800, 0x605c3000, 0x0509f83e, 0x42000000, + 0x001123f8, 0x0509fab2, 0x05b1fa0d, 0x59240400, + 0x8c00050a, 0x0502000b, 0x60183000, 0x60a68000, + 0x4933c857, 0x64066403, 0x641e6203, 0x41782800, + 0x0501f002, 0x611a8000, 0x0505fa34, 0x0509f052, + 0x4933c857, 0x64066403, 0x602c0800, 0x05c9fa49, + 0x64066203, 0x05e1f071, 0x4933c857, 0x60240800, + 0x05c9fa44, 0x64166403, 0x05fdf7fa, 0x0505fd16, + 0x05020197, 0x05adffdb, 0x05020195, 0x0501f9ca, + 0x05fe07d5, 0x64826403, 0x64066203, 0x05e1f063, + 0x05adffd4, 0x0502018e, 0x648e6403, 0x64066203, + 0x05e1f05e, 0x0505fd08, 0x05ac0fce, 0x05020188, + 0x0501f9bd, 0x05fe07c8, 0x59cc0807, 0x82040500, + 0x00ffff00, 0x0502000a, 0x59340212, 0x82000500, + 0x0000ff00, 0x05000006, 0x5932481d, 0x59240005, + 0x82000500, 0x000000ff, 0x0501f003, 0x5932481d, + 0x59240005, 0x82040d00, 0x00ffffff, 0x80040580, + 0x05020015, 0x59cc1408, 0x05f9fa0f, 0x0500002f, + 0x591c0202, 0x82001580, 0x0000ffff, 0x05000004, + 0x59cc1208, 0x80080580, 0x05020028, 0x591c000a, 0x81340580, 0x05020025, 0x591c0416, 0x8c00051a, - 0x05000013, 0x82000500, 0xffff1fff, 0x48023c16, - 0x491e602a, 0x0501f01b, 0x59cc1408, 0x41780000, - 0x0501fe2a, 0x05fe07ef, 0x0501f016, 0x649a6403, - 0x4a02621c, 0x00001700, 0x59cc1208, 0x82081580, - 0x0000ffff, 0x05fe079c, 0x0501f00e, 0xa11c0494, - 0x05000002, 0x0500100b, 0x591c0407, 0x90000587, - 0x05fe07f3, 0x591c0403, 0x900005a4, 0x05020005, - 0x4d300000, 0x411e6000, 0x0005ffdc, 0x5c026000, - 0x64966403, 0x05fdf78c, 0x59cc1408, 0x41780000, - 0x0501fe0e, 0x05fe07e6, 0x05fdf7fa, 0x4933c857, - 0x4d3c0000, 0x60067800, 0x05c9fe9d, 0x5c027800, - 0x4c580000, 0x6008b000, 0x91a81c02, 0x91cc140b, - 0x05f1f9fb, 0x5c00b000, 0x05000003, 0x64c66403, - 0x05fdf779, 0x0005ffdc, 0x6008b000, 0x91a81c00, - 0x91cc140d, 0x05f1f9f2, 0x0502000c, 0x05d9fc44, + 0x05020018, 0x591c0407, 0x90000587, 0x0502001f, + 0x0501f02c, 0x59cc1208, 0x82080580, 0x0000ffff, + 0x05000015, 0x05f9f9f8, 0x05000018, 0x59cc1408, + 0x591c0202, 0x80080580, 0x05020028, 0x831c0580, + 0xffffffff, 0x05000023, 0x591c000a, 0x81340580, + 0x05020022, 0x591c0416, 0x8c00051a, 0x05000013, + 0x82000500, 0xffff1fff, 0x48023c16, 0x491e602a, + 0x0501f018, 0x59cc1408, 0x41780000, 0x0501fe38, + 0x05fe07ef, 0x0501f013, 0x649a6403, 0x4a02621c, + 0x00001700, 0x59cc1208, 0x82081580, 0x0000ffff, + 0x05fe079c, 0x0501f00b, 0x591c0407, 0x90000587, + 0x05fe07f6, 0x591c0403, 0x900005a4, 0x05020005, + 0x4d300000, 0x411e6000, 0x0009f810, 0x5c026000, + 0x64966403, 0x05fdf78f, 0x59cc1408, 0x41780000, + 0x0501fe1f, 0x05fe07e9, 0x05fdf7fa, 0x4933c857, + 0x4d3c0000, 0x60067800, 0x05c9f9c4, 0x5c027800, + 0x4c580000, 0x6008b000, 0x91241c01, 0x91cc140b, + 0x05f1f854, 0x5c00b000, 0x05000003, 0x64c66403, + 0x05fdf77c, 0x0009f810, 0x6008b000, 0x91241c03, + 0x91cc140d, 0x05f1f84b, 0x0502000c, 0x05d9f946, 0x0500000a, 0x59300407, 0x90000581, 0x05020007, 0x59300403, 0x90000582, 0x05020004, 0x5930000a, - 0x81340580, 0x00040fdc, 0x05d1fa4c, 0x05020009, - 0x05d1fa56, 0x05020005, 0x64075042, 0x6006d800, - 0x05d1f9c9, 0x0501f003, 0x60040000, 0x05d1fa1c, - 0x1c01f000, 0x05b1fd97, 0x050200f7, 0x0501f92c, - 0x05fe073a, 0x493a6403, 0x0501f986, 0x05020003, - 0x64ae6403, 0x05fdf754, 0x64b26403, 0x05fdf752, - 0x4933c857, 0x05d9ff39, 0x050200eb, 0x05b1fd89, - 0x050200e9, 0x05cdfba8, 0x05fe072c, 0x59cc0408, - 0x4802641b, 0x59cc0208, 0x4802621b, 0x59cc0807, - 0x59340002, 0x82000500, 0x00ffffff, 0x80040580, - 0x0500001d, 0x5932481d, 0x59240005, 0x80040580, - 0x05020029, 0x59cc1408, 0x05f9facb, 0x0500002b, - 0x831c0580, 0xffffffff, 0x05000005, 0x0505fb01, - 0x05000026, 0x0505fed1, 0x05000024, 0x491e602a, - 0x64da6403, 0x59340200, 0x8c00050e, 0x05000009, - 0x831c0580, 0xffffffff, 0x050000c3, 0x591c0203, - 0x90001584, 0x05020003, 0x64066006, 0x1c01f000, - 0x0501f0bd, 0x59cc1208, 0x82080580, 0x0000ffff, - 0x05000008, 0x05f9fab0, 0x05000010, 0x591c0202, - 0x59cc0c08, 0x80040580, 0x0502000c, 0x05fdf7e1, - 0x59cc1408, 0x60040000, 0x0501fd9c, 0x05000007, - 0x05fdf7dc, 0x4803c856, 0x6426641c, 0x4a02621c, - 0x00001500, 0x0501f005, 0x4803c856, 0x640e641c, - 0x4a02621c, 0x00001700, 0x64de6403, 0x0501f0a2, - 0x4933c857, 0x05d9fef1, 0x050200a3, 0x05b1fd41, - 0x050200a1, 0x05cdfb60, 0x05fe06e4, 0x05cdf9f1, - 0x05000045, 0x59cc0407, 0x4802641b, 0x59cc1207, - 0x480a621b, 0x82080580, 0x0000ffff, 0x05000004, - 0x05f9fa89, 0x05000036, 0x0501f008, 0x59cc1407, - 0x60040000, 0x0501fd79, 0x05000031, 0x831c0580, - 0xffffffff, 0x0500002e, 0x59cc0c07, 0x591c0202, - 0x80040580, 0x0502002a, 0x0505fe88, 0x05000028, - 0x591c0416, 0x8c000516, 0x0502002f, 0x4d300000, - 0x411e6000, 0x05f5f927, 0x5c026000, 0x641e3a03, - 0x59cc0c09, 0x82040d00, 0x0000ff00, 0x840409c0, - 0x90040581, 0x05000009, 0x90040585, 0x0500000b, - 0x90040587, 0x05020011, 0x42000000, 0x0010e43c, - 0x0509f8e8, 0x0501f008, 0x42000000, 0x0010e43b, - 0x0509f8e4, 0x0501f007, 0x42000000, 0x0010e43a, - 0x0509f8e0, 0x591c0009, 0x80000540, 0x05000003, - 0x59cc2808, 0x0505f2a5, 0x4803c856, 0x6426641c, - 0x4a02621c, 0x00002a00, 0x0501f005, 0x4803c856, - 0x640e641c, 0x4a02621c, 0x00000300, 0x64ee6403, - 0x0501f055, 0x4803c856, 0x642e641c, 0x6402621c, - 0x05fdf7fb, 0x4803c856, 0x641e641c, 0x6402621c, - 0x05fdf7f7, 0x59cc0001, 0x82000580, 0x00fffffe, - 0x0502004d, 0x4c080000, 0x05cdf9b0, 0x05000021, - 0x05cdf991, 0x0505fbf6, 0x0502001c, 0x5932481d, - 0x59240200, 0x82000540, 0x000000e0, 0x48024a00, - 0x59a80249, 0x90000543, 0x48035249, 0x59a80046, - 0x800000d0, 0x59a8083d, 0x82040d00, 0x000000ff, - 0x80041540, 0x480b503d, 0x600c0800, 0x05e1fe12, - 0x497b504b, 0x8d0c0520, 0x05000004, 0x4a032804, - 0x000007d0, 0x0501f001, 0x0005ffdc, 0x05b1fd8e, - 0x5c001000, 0x1c01f000, 0x0505fbf3, 0x05fdf7fd, - 0x5c001000, 0x0005f7dc, 0x0501f82c, 0x05000026, - 0x653a6403, 0x64066203, 0x05e1f12f, 0x05cdfaee, - 0x05fe0666, 0x653e6403, 0x497a601e, 0x59cc0a06, - 0x82040d00, 0x000000ff, 0x800409c0, 0x05fc067e, - 0x90040581, 0x05020005, 0x59cc0808, 0x59a80005, - 0x80040580, 0x05fc0678, 0x90040582, 0x05020006, - 0x91cc140b, 0x6008b000, 0x91341c06, 0x05f1f8f0, - 0x05fc0671, 0x6406601e, 0x05fdf66f, 0x05cdfad6, - 0x05fe064e, 0x65426403, 0x59cc0207, 0x4802601e, - 0x05fdf669, 0x64066203, 0x42000800, 0x80000040, - 0x0005f6ab, 0x4803c857, 0x42000000, 0x0010e448, - 0x0509f874, 0x0005f7dc, 0x4d2c0000, 0x4c500000, - 0x4c580000, 0x4c540000, 0x59a800b6, 0x82000c80, - 0x00000841, 0x05021021, 0x05a5f9ff, 0x0500001f, - 0x492e6009, 0x59a800b6, 0x48025805, 0x90000403, - 0x80000104, 0x91cca406, 0x90000c87, 0x05001010, - 0x641e5811, 0x601cb000, 0x912c0409, 0x4000a800, - 0x0509f927, 0x412c7000, 0x800409c0, 0x05020003, - 0x49787001, 0x0501f00b, 0x05a5f9eb, 0x0500000b, - 0x492c7001, 0x40040000, 0x05fdf7f0, 0x48025811, - 0x4000b000, 0x912c0409, 0x4000a800, 0x0509f918, - 0x90000541, 0x0501f005, 0x497b50b6, 0x59325809, - 0x05a5fa07, 0x80000580, 0x5c00a800, 0x5c00b000, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4d340000, - 0x5932680a, 0x59343400, 0x4933c857, 0x4937c857, - 0x481bc857, 0x05cdfa90, 0x5c026800, 0x1c01f000, - 0x4933c857, 0x4c600000, 0x4d3c0000, 0x4d440000, - 0x4d340000, 0x0501f858, 0x05020046, 0x59cc0207, - 0x82000d00, 0x0000ff00, 0x900411c0, 0x59cc000a, - 0x82000500, 0x00ffffff, 0x80081540, 0x480a601e, - 0x8c040518, 0x05000011, 0x60203000, 0x0505fdbf, - 0x42000000, 0x0010e453, 0x0509f822, 0x59240400, - 0x8c00050a, 0x05020005, 0x60082800, 0x60903000, - 0x611a8000, 0x0501ffde, 0x6004c000, 0x417a7800, - 0x05b1fbe0, 0x0501f02d, 0x8c04051a, 0x05000029, - 0x59cc000a, 0x59cc3800, 0x821c3d00, 0x00ffffff, - 0x05d9f902, 0x05cc0aac, 0x05020022, 0x5930001d, - 0x4c000000, 0x05cdfaa0, 0x4926601d, 0x5930000a, - 0x4c000000, 0x59240c00, 0x8c04050a, 0x0502000b, - 0x59340c03, 0x59341802, 0x820c1d00, 0x00ffffff, - 0x58002403, 0x60102800, 0x60903000, 0x611a8000, - 0x41301000, 0x0501ffca, 0x4936600a, 0x60243000, - 0x0505fd98, 0x42000000, 0x0010e453, 0x0505fff5, - 0x417a7800, 0x4178c000, 0x05b1fbba, 0x5c000000, - 0x4802600a, 0x5c000000, 0x4802601d, 0x0501f003, - 0x90000541, 0x0501f002, 0x80000580, 0x5c026800, - 0x5c028800, 0x5c027800, 0x5c00c000, 0x1c01f000, - 0x4933c857, 0x59cc0206, 0x90000490, 0x05021004, - 0x6402621c, 0x90000541, 0x0501f002, 0x80000580, - 0x1c01f000, 0x4933c857, 0x6402621c, 0x59cc0407, - 0x82000500, 0x0000ff00, 0x82000580, 0x00000800, - 0x0502000d, 0x59cc0206, 0x59a808b6, 0x80040480, - 0x0500100a, 0x59cc0006, 0x82000500, 0x00ff0000, - 0x82000d80, 0x00140000, 0x05000003, 0x82000d80, - 0x00100000, 0x1c01f000, 0x42000000, 0x0010e448, - 0x0505ffc4, 0x90000541, 0x05fdf7fb, 0x59300403, - 0xb00034a0, 0x05a21dbd, 0x91383593, 0x05020006, - 0x4803c857, 0x4c000000, 0x0505fe36, 0x5c000000, - 0x0c01f029, 0x4933c857, 0x493bc857, 0x913835a7, - 0x0500000d, 0x91383594, 0x0500000b, 0xb13805a1, - 0x05000003, 0xb13805a0, 0x05a20dac, 0x05e5f88a, - 0x05ea0404, 0x59300203, 0x9000058e, 0x05f40618, - 0x05a1fda6, 0x493bc857, 0x4937c857, 0x0505fe1f, - 0x05cdf875, 0x601c0800, 0x05c9fcb3, 0x05e1fc2e, - 0x4d2c0000, 0x0505fe6d, 0x0502000d, 0x59325809, - 0x812e59c0, 0x05020003, 0x5c025800, 0x05e1f02e, - 0x05f5fc85, 0x05a00d95, 0x05f9fb11, 0x05a20d93, - 0x64c65a0a, 0x64125810, 0x0001fb82, 0x5c025800, - 0x05e9f384, 0x0010c0ad, 0x0010c0ee, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ee, 0x0010c0ff, - 0x0010c1d1, 0x0010c152, 0x0010c1d1, 0x0010c16b, - 0x0010c1d1, 0x0010c170, 0x0010c1d1, 0x0010c173, - 0x0010c1d1, 0x0010c173, 0x0010c1d1, 0x0010c1d1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ee, - 0x0010c0ad, 0x0010c1d1, 0x0010c0ad, 0x0010c0ad, - 0x0010c1d1, 0x0010c0ad, 0x0010c1b7, 0x0010c1d1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c1d1, 0x0010c1d1, 0x0010c0ad, 0x0010c1d1, - 0x0010c1d1, 0x0010c0ad, 0x0010c0fa, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c175, - 0x0010c1d1, 0x0010c0ad, 0x0010c0ad, 0x0010c19d, - 0x0010c1d1, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, - 0x0010c0e1, 0x0010c0e1, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0bc, - 0x0010c0d7, 0x0010c0ae, 0x0010c0ad, 0x0010c0ad, - 0x0010c1d1, 0x05a1fd2d, 0x4933c857, 0x05f5ffef, - 0x05000007, 0x4a02601c, 0x0010c0b7, 0x59a8005e, - 0x48026205, 0x643a6203, 0x1c01f000, 0x640a6203, - 0x59a8005c, 0x800000c4, 0x48026006, 0x1c01f000, - 0x4933c857, 0x05f5ffe1, 0x05000007, 0x4a02601c, - 0x0010c0c5, 0x59a8005e, 0x48026205, 0x643a6203, - 0x1c01f000, 0x916c0583, 0x0502000a, 0x5930041b, - 0x4803c857, 0x9000050f, 0x0500000a, 0x9000050c, - 0x05000004, 0x4803c857, 0x05f9ffd8, 0x0501f005, - 0x4803c857, 0x65726403, 0x64066203, 0x05ddf79e, - 0x4933c857, 0x0005ffdc, 0x1c01f000, 0x4933c857, - 0x05f5fbf1, 0x050000f8, 0x4d2c0000, 0x59325809, - 0x64025a0a, 0x0001fb82, 0x5c025800, 0x497a6009, - 0x0501f0f1, 0x05f5ffbd, 0x05000007, 0x59a8005e, - 0x48026205, 0x643a6203, 0x59a8005c, 0x48026006, - 0x1c01f000, 0x4d2c0000, 0x59325809, 0x05a5f8b0, - 0x5c025800, 0x0005f7dc, 0x59a8005c, 0x48026006, - 0x05f5ffae, 0x05000007, 0x4a02601c, 0x0010c0f8, - 0x59a8005e, 0x48026205, 0x643a6203, 0x1c01f000, - 0x640a6203, 0x1c01f000, 0x4d3c0000, 0x417a7800, - 0x05c9fbe7, 0x5c027800, 0x0501f0d3, 0x05cdf93b, - 0x050000d1, 0x59a80249, 0x8c000508, 0x0500000e, - 0x5932680a, 0x4c580000, 0x6008b000, 0x91a81c02, - 0x91341406, 0x05edff3e, 0x80000540, 0x5c00b000, - 0x050200c5, 0x59340200, 0x8400051a, 0x48026a00, - 0x0501f037, 0x599c0017, 0x8c00050a, 0x05020007, - 0x4d3c0000, 0x417a7800, 0x05c9fbcd, 0x5c027800, - 0x601c0800, 0x05c9fbd4, 0x59340212, 0x82000500, - 0x0000ff00, 0x0502001e, 0x83440d80, 0x000007fe, - 0x050200b1, 0x05b1fcf6, 0x05c5f9f6, 0x05000009, - 0x59240200, 0x8c00051e, 0x05000010, 0x59300809, - 0x4d300000, 0x05b1fe68, 0x5c026000, 0x0501f0a6, - 0x59a80249, 0x8c000514, 0x050000a3, 0x83240580, - 0x0010e512, 0x05020005, 0x4d300000, 0x05b1fb6d, - 0x5c026000, 0x0501f09c, 0x59a82249, 0x8c100514, - 0x05000099, 0x05b1fcd5, 0x0501f097, 0x599c0017, - 0x8c00050a, 0x05020094, 0x599c0019, 0x8c00050e, - 0x05020091, 0x416c0000, 0x90000582, 0x05020004, - 0x59a80044, 0x80000000, 0x48035044, 0x600c0800, - 0x05c9fba5, 0x64066407, 0x64066203, 0x640a6403, - 0x05ddff25, 0x4ce80000, 0x6005d000, 0x05d9fd7e, - 0x5c01d000, 0x1c01f000, 0x59340200, 0x8400051a, - 0x48026a00, 0x05cdf8dc, 0x0500007b, 0x60100800, - 0x05c9fb95, 0x0505fc46, 0x05020077, 0x05f5ff43, - 0x05000009, 0x59a8005e, 0x48026205, 0x643a6203, - 0x59a8005c, 0x48026006, 0x4a02601c, 0x0010c165, - 0x1c01f000, 0x60140800, 0x05c9fb87, 0x64066407, - 0x64066203, 0x640e6403, 0x05ddf707, 0x05cdf8cf, - 0x05020065, 0x60180800, 0x0501f86c, 0x0501f062, - 0x60100800, 0x05c9fb7c, 0x05fdf78f, 0x05c9ff3a, - 0x0501f05d, 0x4d300000, 0x05f5ff28, 0x0500000c, - 0x5930082a, 0x40066000, 0x59300416, 0x8c00051e, - 0x05020003, 0x5c026000, 0x0501f055, 0x5c026000, - 0x4a02601c, 0x0010c185, 0x0501f051, 0x5c026000, - 0x0005f7dc, 0x4c340000, 0x41306800, 0x05e9fa7c, - 0x05000012, 0x64066203, 0x647a6403, 0x58340c1b, - 0x4806641b, 0x58340a1b, 0x4806621b, 0x5834002a, - 0x4802602a, 0x5834080a, 0x4806600a, 0x5834081d, - 0x4806601d, 0x05f5fefa, 0x64126407, 0x42000800, - 0x80000040, 0x0005feab, 0x40366000, 0x5c006800, - 0x0005f7dc, 0x5930082a, 0x4807c857, 0x800409c0, - 0x05000031, 0x5804001e, 0x81300580, 0x0502002e, - 0x4978081e, 0x58041416, 0x8c080516, 0x0500002a, - 0x8c080514, 0x05000028, 0x84081516, 0x48080c16, - 0x58065809, 0x812e59c0, 0x05000023, 0x492fc857, - 0x4d300000, 0x40066000, 0x641e6203, 0x417a7800, - 0x0005fe2d, 0x5c026000, 0x0501f01b, 0x05f5fee7, - 0x000407dc, 0x5930002a, 0x80000540, 0x05000018, - 0x4c340000, 0x40006800, 0x58340407, 0x5c006800, - 0x90000583, 0x000607dc, 0x4a02601c, 0x0010c1c5, - 0x0501f00f, 0x4d300000, 0x4d1c0000, 0x5932382a, - 0x05e9fa3b, 0x05000004, 0x4a026416, 0x00000100, - 0x05f5fd84, 0x5c023800, 0x5c026000, 0x0005f7dc, - 0x05c9fb1d, 0x05f5fecd, 0x000407dc, 0x497a601c, - 0x59a8005e, 0x48026205, 0x643a6203, 0x59a8005c, - 0x48026006, 0x1c01f000, 0x4933c857, 0x4807c857, - 0x05c9fb11, 0x4d3c0000, 0x417a7800, 0x05c9fb04, - 0x5c027800, 0x5934000a, 0x84000520, 0x4802680a, - 0x05c9f6c9, 0x59340400, 0x4803c857, 0x80000110, - 0x9000348c, 0x05a21bf1, 0x91383595, 0x05020002, - 0x0c01f004, 0x91383596, 0x05a20bec, 0x0c01f00d, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x0010ce6d, 0x00109b47, 0x0010c22a, 0x0010c208, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x0010ce6d, 0x00109b47, 0x0010c22a, 0x0010c23b, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x4933c857, 0x5932481d, 0x59240400, 0x8c000508, - 0x05000014, 0x813669c0, 0x05000012, 0x59340212, - 0x82000500, 0x0000ff00, 0x0500000e, 0x599c0019, - 0x8c00050e, 0x0502000b, 0x4d3c0000, 0x417a7800, - 0x05c9facb, 0x5c027800, 0x600c0800, 0x05c9fad2, - 0x64066407, 0x64066203, 0x640a6403, 0x05ddf652, - 0x59cc0001, 0x59340802, 0x80040580, 0x82000500, - 0x00ffffff, 0x000607dc, 0x59345002, 0x05c9f861, - 0x482a6802, 0x0005f7dc, 0x4933c857, 0x59303403, - 0x9018359e, 0x0502000d, 0x91383595, 0x000607dc, - 0x4c340000, 0x5930682a, 0x803469c0, 0x05000005, - 0x58343416, 0x82183500, 0xffff1fff, 0x48186c16, - 0x5c006800, 0x0005f7dc, 0x1c01f000, 0x4933c857, - 0x05edfbfe, 0x000607dc, 0x64066203, 0x64066403, - 0x05ddf631, 0x493bc857, 0xb1380591, 0x05020007, - 0x05e1fe75, 0x05ea01ef, 0x59300203, 0x90000582, - 0x05000062, 0x05a1fb91, 0x913805a7, 0x05000015, - 0xb1380588, 0x0500000d, 0x91380594, 0x05000011, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05a20b87, - 0x05e1fe65, 0x05ea01df, 0x59300203, 0x9000058e, - 0x05000675, 0x05a1fb81, 0x05e1fe5f, 0x05ea01d9, - 0x59300203, 0x90000584, 0x0008014a, 0x05a1fb7b, - 0x4933c857, 0x59300403, 0xb0000c84, 0x05a21b77, - 0xb0000480, 0x05a01b75, 0x40027000, 0x4803c857, - 0x0c01f001, 0x0010c26d, 0x0010c26e, 0x0010c26e, - 0x0010c284, 0x05a1fb6d, 0x05e1f9fb, 0x59325809, - 0x812e59c0, 0x05000012, 0x832c0500, 0x00ff0000, - 0x0500000f, 0x640a6203, 0x5932680a, 0x59340200, - 0x8c00050e, 0x0502000a, 0x60128000, 0x0501fd0b, - 0x497a6009, 0x59300006, 0x80000540, 0x05020003, - 0x59a8005d, 0x48026006, 0x641e6203, 0x1c01f000, - 0x05e1f9e5, 0x05f5fa44, 0x05e8014a, 0x59325809, - 0x05a1ff0a, 0x05e9f147, 0x05a1fb50, 0x05f5fe13, - 0x05000005, 0x59a8005e, 0x48026205, 0x643a6203, - 0x0501f009, 0x59325809, 0x592c040e, 0x8c000502, - 0x05000004, 0x641e6203, 0x610e7000, 0x0009f000, - 0x64126203, 0x1c01f000, 0x0501fff6, 0x00080148, - 0x1c01f000, 0x05f5fe01, 0x05000007, 0x4a02601c, - 0x0010c2a5, 0x59a8005e, 0x48026205, 0x643a6203, - 0x1c01f000, 0x64066203, 0x65066403, 0x42027800, - 0x80002042, 0x0005f6ab, 0xb1380498, 0x05001008, - 0xb13805a1, 0x05000004, 0xb13805a0, 0x05000002, - 0x05a1fb2a, 0x4933c857, 0x1c01f000, 0xb1380591, - 0x05000004, 0xb1380581, 0x05a20b24, 0x1c01f000, - 0x0005fe4e, 0x0505f80e, 0x0005f7dc, 0xb1380498, - 0x05f210a1, 0xb1380492, 0x05a21b1c, 0xb1380489, - 0x05a01b1a, 0x0c01f001, 0x0010c2cc, 0x0010c2fa, - 0x0010c2cb, 0x0010c2cb, 0x0010c2cb, 0x0010c2cb, - 0x0010c2fa, 0x0010c2cb, 0x0010c318, 0x05a1fb0f, - 0x05f5fdd2, 0x0500000b, 0x59300416, 0x8c000504, - 0x05020008, 0x4a02601c, 0x0010c2d8, 0x59a8005e, - 0x48026205, 0x64426203, 0x65266403, 0x1c01f000, - 0x59325809, 0x592c040e, 0x8c00051e, 0x05000010, - 0x82000d00, 0x000000c0, 0x82040d80, 0x00000080, - 0x05000011, 0x59300804, 0x8c040518, 0x0502000e, - 0x59300416, 0x8c000516, 0x05000003, 0x641e6203, - 0x0501f011, 0x61067000, 0x0009f178, 0x641e6203, - 0x497a6006, 0x59300416, 0x8c000516, 0x0502000a, - 0x0005f64e, 0x59325809, 0x592c0c0e, 0x8c04051a, - 0x05020003, 0x0005fe4e, 0x0005f7dc, 0x0501ff99, - 0x05fc07fd, 0x1c01f000, 0x05e1f952, 0x59325809, - 0x5932680a, 0x59340200, 0x8c00050e, 0x0500000d, - 0x592c040e, 0x82000500, 0x000000c0, 0x82000580, - 0x00000080, 0x05000005, 0x592c0013, 0x59301817, - 0x800c1c80, 0x480e6017, 0x640a6203, 0x0501f00c, - 0x60128000, 0x0501fc79, 0x05f9fba3, 0x59300006, - 0x80000540, 0x05020004, 0x59a8005d, 0x800000c2, - 0x48026006, 0x497a6009, 0x641e6203, 0x1c01f000, - 0x4933c857, 0x05e1fda0, 0x05a20ac0, 0x59300203, - 0x90000582, 0x05fc078d, 0x05a1fabc, 0x641e6203, - 0x497a6006, 0x0005f64e, 0x641e6203, 0x497a6006, - 0x0005f645, 0x59300416, 0x8c00051c, 0x000a0167, - 0x59325809, 0x592c2013, 0x40080000, 0x80102480, - 0x59300017, 0x80102400, 0x48126017, 0x0009f167, - 0x8c04050e, 0x05020007, 0x641a6203, 0x0501f822, - 0x5930002b, 0x80000540, 0x05a60c01, 0x0005f645, - 0x640a6203, 0x1c01f000, 0x60040800, 0x05a5fbfc, - 0x90040581, 0x0008016c, 0x05fdf7e4, 0x83300580, - 0x00111ad0, 0x05000004, 0x59300416, 0x8c00051c, - 0x05000006, 0x59300008, 0x8c000522, 0x05a609ce, - 0x00080157, 0x1c01f000, 0x59300013, 0x80000540, - 0x00080157, 0x59325809, 0x592c040b, 0x8c000510, - 0x05000004, 0x497a6013, 0x05a5f9c3, 0x00080157, - 0x1c01f000, 0x492fc857, 0x480bc857, 0x8c08053e, - 0x05000005, 0x80081080, 0x80081000, 0x60240800, - 0x0501f002, 0x60540800, 0x480a580f, 0x1c01f000, - 0x1c01f000, 0x91380593, 0x05000003, 0x91380594, - 0x05a20a76, 0x59300416, 0x8c000516, 0x05a00a73, - 0x1c01f000, 0x05a1fa71, 0x59300009, 0x80000540, - 0x05a20a6e, 0x1c01f000, 0x59300416, 0x8c000516, - 0x05a00a6a, 0x1c01f000, 0x64126203, 0x493a6403, - 0x42000800, 0x80002001, 0x0005f6ab, 0x640e6203, - 0x493a6403, 0x05f5fd25, 0x05000007, 0x59300416, - 0x8c00050a, 0x05020004, 0x4a02601c, 0x0010c381, - 0x1c01f000, 0x0001f996, 0x59325809, 0x592c040e, - 0x8c00051e, 0x05000011, 0x82000500, 0x000000c0, - 0x82000580, 0x00000080, 0x0500000f, 0x59300416, - 0x8c000512, 0x05020009, 0x8c000510, 0x05020007, - 0x592c0410, 0x80000540, 0x05020004, 0x82080d40, - 0x80003065, 0x0005f69d, 0x82080d40, 0x80002065, - 0x0005f69d, 0x82080d40, 0x80002042, 0x0005f69d, - 0x4933c857, 0x493bc857, 0xb1380484, 0x05a21a3b, - 0xb1380481, 0x05a01a39, 0x0c01f001, 0x0010c3a6, - 0x0010c3b4, 0x0010c3c6, 0x59325809, 0x592c040e, - 0x8c00051e, 0x05000019, 0x82001d00, 0x000000c0, - 0x820c1d80, 0x000000c0, 0x05000014, 0x64066203, - 0x493a6403, 0x42000800, 0x80002042, 0x0005f6ab, - 0x59325809, 0x592c040e, 0x8c00051e, 0x0500000b, - 0x82001d00, 0x000000c0, 0x820c1d80, 0x000000c0, - 0x05000006, 0x64066203, 0x493a6403, 0x42000800, - 0x80002001, 0x0005f6ab, 0x497a6009, 0x497a6006, - 0x60128000, 0x0501f3c1, 0x59325809, 0x592c040e, - 0x8c00051e, 0x05fc07f9, 0x82001d00, 0x000000c0, - 0x820c1d80, 0x000000c0, 0x05fc07f4, 0x640e6203, - 0x493a6403, 0x05f5fccd, 0x05000007, 0x59300416, - 0x8c00050a, 0x05020004, 0x4a02601c, 0x0010c3d9, - 0x1c01f000, 0x0001f996, 0x82080d40, 0x80002065, - 0x0005f69d, 0x4933c857, 0x493bc857, 0x83380580, - 0x00000085, 0x05000005, 0x83380580, 0x00000088, - 0x05000007, 0x05a1f9f5, 0x64266203, 0x493a6403, - 0x42000800, 0x80000040, 0x0005f6ab, 0x83300580, - 0x00111a70, 0x05a209ed, 0x4d1c0000, 0x813669c0, - 0x05000003, 0x0501fe9a, 0x0502005a, 0x59cc1404, - 0x41780000, 0x0501f859, 0x05000028, 0x831c0580, - 0xffffffff, 0x05000025, 0x59cc0204, 0x82001580, - 0x0000ffff, 0x05000004, 0x591c1402, 0x80080580, - 0x0502001e, 0x05f5fc9d, 0x05000010, 0x59cc0005, - 0x8c000500, 0x0500000d, 0x4d300000, 0x411e6000, - 0x05f1fc04, 0x5c026000, 0x0500002a, 0x591c0416, - 0x8400055a, 0x48023c16, 0x59300416, 0x8400055a, - 0x48026416, 0x0501f029, 0x591c0407, 0x9000051f, - 0x90002586, 0x05000005, 0x90002584, 0x0500002a, - 0x90002591, 0x05020005, 0x497a3a05, 0x61502000, - 0x05e9f911, 0x0501f02f, 0x59240400, 0x8c00050a, - 0x05020004, 0x42023800, 0xffffffff, 0x05fdf7f8, - 0x813669c0, 0x0502000f, 0x59cc0001, 0x59cc3800, - 0x821c3d00, 0x00ffffff, 0x4c1c0000, 0x05d5fca3, - 0x5c003800, 0x0502001f, 0x05b1f9fa, 0x0502001d, - 0x05c9f8e4, 0x0502001b, 0x4926601d, 0x4936600a, - 0x4a026403, 0x00000087, 0x59cc1204, 0x82081580, - 0x0000ffff, 0x05020003, 0x4a026403, 0x00000086, - 0x4d2c0000, 0x0505f986, 0x05cdf8d1, 0x5c025800, - 0x0501f00c, 0x591c0403, 0x900005b8, 0x05fc07d8, - 0x591c0203, 0x90000587, 0x05fe07d8, 0x4d300000, - 0x411e6000, 0x05e5ff87, 0x5c026000, 0x05fdf7d3, - 0x5c023800, 0x1c01f000, 0x4933c857, 0x480bc857, - 0x4c5c0000, 0x4000b800, 0x42002800, 0x00111b00, - 0x41300000, 0x80140580, 0x0500001c, 0x58140203, - 0x90000580, 0x05000019, 0x58140202, 0x80080580, - 0x05020016, 0x58140203, 0x9000058f, 0x05000013, - 0x58141c07, 0x900c0585, 0x05000010, 0x8c5c0500, - 0x05000003, 0x900c0587, 0x0500000c, 0x5930200a, - 0x5814000a, 0x800001c0, 0x0500000d, 0x82001d80, - 0x00110210, 0x0500000a, 0x801021c0, 0x05000003, - 0x80100580, 0x05000011, 0x90142c30, 0x41540000, - 0x80140480, 0x05021020, 0x05fdf7de, 0x5814002a, - 0x801021c0, 0x05000005, 0x58102002, 0x82102500, - 0x00ffffff, 0x05fdf7f3, 0x8c5c0500, 0x05fe07f3, - 0x5930202a, 0x05fdf7ef, 0x40163800, 0x8c5c0500, - 0x05000007, 0x4c080000, 0x4c140000, 0x0505f8df, - 0x5c002800, 0x5c001000, 0x05fc07e8, 0x831c0580, - 0xffffffff, 0x05000006, 0x591c000a, 0x800001c0, - 0x05020003, 0x5930000a, 0x4802380a, 0x81300540, - 0x0501f009, 0x8c5c0500, 0x05000007, 0x40080800, - 0x42023800, 0xffffffff, 0x05cdf87e, 0x05fc07f0, - 0x80000580, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x83300580, 0x00111a40, 0x05020037, 0x64026203, - 0x91380593, 0x0502002c, 0x59300403, 0x82000580, - 0x00000092, 0x05a20931, 0x59a8009d, 0x59325809, - 0x812e59c0, 0x05000005, 0x812c0580, 0x05a2092b, - 0x592c0000, 0x497a5800, 0x800001c0, 0x05000004, - 0x4803509d, 0x05e5fe13, 0x0501f003, 0x497b509d, - 0x497b509e, 0x812e59c0, 0x0500001e, 0x592c0208, - 0xb0000595, 0x05a004d5, 0x91380593, 0x0502000d, - 0x592c0817, 0x82040580, 0xffffffff, 0x05000007, - 0xa0040494, 0x05021005, 0x05000004, 0x64180c07, - 0x64000c07, 0x49780806, 0x64025a0a, 0x0001f382, - 0x64c65a0a, 0x64125815, 0x4a025816, 0x000000ff, - 0x0001f382, 0x913805a7, 0x05000003, 0x91380594, - 0x05a20906, 0x493bc857, 0x05ddff93, 0x05fdf7cf, - 0x1c01f000, 0x4933c857, 0x91380593, 0x0502000c, - 0x59300403, 0x4803c857, 0x82000c80, 0x00000085, - 0x05a018fa, 0x82000c80, 0x00000093, 0x05a218f7, - 0x82000480, 0x00000085, 0x0c01f01c, 0x913805a7, - 0x0500000f, 0x91380594, 0x0500000d, 0x493bc857, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05020007, - 0x05e1fbc9, 0x05e60743, 0x59300203, 0x9000058e, - 0x050003ca, 0x05a1f8e5, 0x05e5f73e, 0x493bc857, - 0x05ddff71, 0x59325809, 0x812e59c0, 0x05e406d5, - 0x64c65a0a, 0x64125815, 0x4a025816, 0x000000ff, - 0x0001fb82, 0x05e5f6cf, 0x0010c510, 0x0010c514, - 0x0010c514, 0x0010c510, 0x0010c510, 0x0010c510, - 0x0010c510, 0x0010c510, 0x0010c510, 0x0010c510, - 0x0010c510, 0x0010c510, 0x0010c510, 0x0010c511, - 0x05a1f8ca, 0x59325809, 0x64025a0a, 0x0001fb82, - 0x0005f7dc, 0x4933c857, 0x42000000, 0x0010e464, - 0x0505fac4, 0x0501fdae, 0x497a6205, 0x602e8000, - 0x0501f805, 0x641a6407, 0x641e6203, 0x497a6006, - 0x1c01f000, 0x4933c857, 0x4943c857, 0x59300407, - 0x90000587, 0x05020002, 0x1c01f000, 0x05ddffec, - 0x4df00000, 0x05f1ffa0, 0x0500000c, 0x9140058c, + 0x81340580, 0x00080810, 0x05cdfe4a, 0x0502000f, + 0x59a80807, 0x8c04050e, 0x05000004, 0x41202000, + 0x60401101, 0x05c1fc24, 0x05cdfe4e, 0x05020005, + 0x64075045, 0x6006d800, 0x05cdfdbb, 0x0501f003, + 0x60040000, 0x05cdfe0e, 0x1c01f000, 0x05adff3d, + 0x050200f7, 0x0501f92c, 0x05fe0737, 0x493a6403, + 0x0501f986, 0x05020003, 0x64ae6403, 0x05fdf751, + 0x64b26403, 0x05fdf74f, 0x4933c857, 0x05d9fc61, + 0x050200eb, 0x05adff2f, 0x050200e9, 0x05c9ff7f, + 0x05fe0729, 0x59cc0408, 0x4802641b, 0x59cc0208, + 0x4802621b, 0x59cc0807, 0x59340002, 0x82000500, + 0x00ffffff, 0x80040580, 0x0500001d, 0x5932481d, + 0x59240005, 0x80040580, 0x05020029, 0x59cc1408, + 0x05f9f975, 0x0500002b, 0x831c0580, 0xffffffff, + 0x05000005, 0x0505fb59, 0x05000026, 0x0505ff3c, + 0x05000024, 0x491e602a, 0x64da6403, 0x59340200, + 0x8c00050e, 0x05000009, 0x831c0580, 0xffffffff, + 0x050000c3, 0x591c0203, 0x90001584, 0x05020003, + 0x64066006, 0x1c01f000, 0x0501f0bd, 0x59cc1208, + 0x82080580, 0x0000ffff, 0x05000008, 0x05f9f95a, + 0x05000010, 0x591c0202, 0x59cc0c08, 0x80040580, + 0x0502000c, 0x05fdf7e1, 0x59cc1408, 0x60040000, + 0x0501fda7, 0x05000007, 0x05fdf7dc, 0x4803c856, + 0x6426641c, 0x4a02621c, 0x00001500, 0x0501f005, + 0x4803c856, 0x640e641c, 0x4a02621c, 0x00001700, + 0x64de6403, 0x0501f0a2, 0x4933c857, 0x05d9fc19, + 0x050200a3, 0x05adfee7, 0x050200a1, 0x05c9ff37, + 0x05fe06e1, 0x05c9fd71, 0x05000045, 0x59cc0407, + 0x4802641b, 0x59cc1207, 0x480a621b, 0x82080580, + 0x0000ffff, 0x05000004, 0x05f9f933, 0x05000036, + 0x0501f008, 0x59cc1407, 0x60040000, 0x0501fd84, + 0x05000031, 0x831c0580, 0xffffffff, 0x0500002e, + 0x59cc0c07, 0x591c0202, 0x80040580, 0x0502002a, + 0x0505fef3, 0x05000028, 0x591c0416, 0x8c000516, + 0x0502002f, 0x4d300000, 0x411e6000, 0x05f1ffa7, + 0x5c026000, 0x641e3a03, 0x59cc0c09, 0x82040d00, + 0x0000ff00, 0x840409c0, 0x90040581, 0x05000009, + 0x90040585, 0x0500000b, 0x90040587, 0x05020011, + 0x42000000, 0x001123dd, 0x0509f971, 0x0501f008, + 0x42000000, 0x001123dc, 0x0509f96d, 0x0501f007, + 0x42000000, 0x001123db, 0x0509f969, 0x591c0009, + 0x80000540, 0x05000003, 0x59cc2808, 0x0505f2fd, + 0x4803c856, 0x6426641c, 0x4a02621c, 0x00002a00, + 0x0501f005, 0x4803c856, 0x640e641c, 0x4a02621c, + 0x00000300, 0x64ee6403, 0x0501f055, 0x4803c856, + 0x642e641c, 0x6402621c, 0x05fdf7fb, 0x4803c856, + 0x641e641c, 0x6402621c, 0x05fdf7f7, 0x59cc0001, + 0x82000580, 0x00fffffe, 0x0502004d, 0x4c080000, + 0x05c9fd30, 0x05000021, 0x05c9fd11, 0x0505fc4e, + 0x0502001c, 0x5932481d, 0x59240200, 0x82000540, + 0x000000e2, 0x48024a00, 0x59a8024c, 0x90000543, + 0x4803524c, 0x59a80049, 0x800000d0, 0x59a80840, + 0x82040d00, 0x000000ff, 0x80041540, 0x480b5040, + 0x600c0800, 0x05e1fbde, 0x497b504e, 0x8d0c0520, + 0x05000004, 0x4a032804, 0x000007d0, 0x0501f001, + 0x0009f810, 0x05adff34, 0x5c001000, 0x1c01f000, + 0x0505fc4b, 0x05fdf7fd, 0x5c001000, 0x0009f010, + 0x0501f82c, 0x05000026, 0x653a6403, 0x64066203, + 0x05ddf6f6, 0x05c9fec5, 0x05fe0663, 0x653e6403, + 0x497a601e, 0x59cc0a06, 0x82040d00, 0x000000ff, + 0x800409c0, 0x05fc067b, 0x90040581, 0x05020005, + 0x59cc0808, 0x59a80005, 0x80040580, 0x05fc0675, + 0x90040582, 0x05020006, 0x91cc140b, 0x6008b000, + 0x91341c06, 0x05edff43, 0x05fc066e, 0x6406601e, + 0x05fdf66c, 0x05c9fead, 0x05fe064b, 0x65426403, + 0x59cc0207, 0x4802601e, 0x05fdf666, 0x64066203, + 0x42000800, 0x80000040, 0x0005f6e2, 0x4803c857, + 0x42000000, 0x001123ec, 0x0509f8fd, 0x0009f010, + 0x4d2c0000, 0x4c500000, 0x4c580000, 0x4c540000, + 0x59a800bb, 0x82000c80, 0x00000841, 0x05021021, + 0x05a1fb44, 0x0500001f, 0x492e6009, 0x59a800bb, + 0x48025805, 0x90000403, 0x80000104, 0x91cca406, + 0x90000c87, 0x05001010, 0x641e5811, 0x601cb000, + 0x912c0409, 0x4000a800, 0x0509f9b0, 0x412c7000, + 0x800409c0, 0x05020003, 0x49787001, 0x0501f00b, + 0x05a1fb30, 0x0500000b, 0x492c7001, 0x40040000, + 0x05fdf7f0, 0x48025811, 0x4000b000, 0x912c0409, + 0x4000a800, 0x0509f9a1, 0x90000541, 0x0501f005, + 0x497b50bb, 0x59325809, 0x05a1fb4c, 0x80000580, + 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x5c025800, + 0x1c01f000, 0x4d340000, 0x5932680a, 0x59343400, + 0x4933c857, 0x4937c857, 0x481bc857, 0x05c9fe67, + 0x5c026800, 0x1c01f000, 0x4933c857, 0x4c600000, + 0x4d3c0000, 0x4d440000, 0x4d340000, 0x0501f858, + 0x05020046, 0x59cc0207, 0x82000d00, 0x0000ff00, + 0x900411c0, 0x59cc000a, 0x82000500, 0x00ffffff, + 0x80081540, 0x480a601e, 0x8c040518, 0x05000011, + 0x60203000, 0x0505fe2a, 0x42000000, 0x001123f7, + 0x0509f8ab, 0x59240400, 0x8c00050a, 0x05020005, + 0x60082800, 0x60903000, 0x611a8000, 0x0505f833, + 0x6004c000, 0x417a7800, 0x05adfd85, 0x0501f02d, + 0x8c04051a, 0x05000029, 0x59cc000a, 0x59cc3800, + 0x821c3d00, 0x00ffffff, 0x05d5fdbc, 0x05c80e83, + 0x05020022, 0x5930001d, 0x4c000000, 0x05c9fe77, + 0x4926601d, 0x5930000a, 0x4c000000, 0x59240c00, + 0x8c04050a, 0x0502000b, 0x59340c03, 0x59341802, + 0x820c1d00, 0x00ffffff, 0x58002403, 0x60102800, + 0x60903000, 0x611a8000, 0x41301000, 0x0505f81f, + 0x4936600a, 0x60243000, 0x0505fe03, 0x42000000, + 0x001123f7, 0x0509f87e, 0x417a7800, 0x4178c000, + 0x05adfd5f, 0x5c000000, 0x4802600a, 0x5c000000, + 0x4802601d, 0x0501f003, 0x90000541, 0x0501f002, + 0x80000580, 0x5c026800, 0x5c028800, 0x5c027800, + 0x5c00c000, 0x1c01f000, 0x4933c857, 0x59cc0206, + 0x90000490, 0x05021004, 0x6402621c, 0x90000541, + 0x0501f002, 0x80000580, 0x1c01f000, 0x4933c857, + 0x6402621c, 0x59cc0407, 0x82000500, 0x0000ff00, + 0x82000580, 0x00000800, 0x0502000d, 0x59cc0206, + 0x59a808bb, 0x80040480, 0x0500100a, 0x59cc0006, + 0x82000500, 0x00ff0000, 0x82000d80, 0x00140000, + 0x05000003, 0x82000d80, 0x00100000, 0x1c01f000, + 0x42000000, 0x001123ec, 0x0509f84d, 0x90000541, + 0x05fdf7fb, 0x59300403, 0xb00034a0, 0x059e1f06, + 0x91383593, 0x05020006, 0x4803c857, 0x4c000000, + 0x0505feab, 0x5c000000, 0x0c01f029, 0x4933c857, + 0x493bc857, 0x913835a7, 0x0500000d, 0x91383594, + 0x0500000b, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x059e0ef5, 0x05e1fe56, 0x05ea0244, 0x59300203, + 0x9000058e, 0x05f404bf, 0x059dfeef, 0x493bc857, + 0x4937c857, 0x0505fe94, 0x05c9fbf5, 0x601c0800, + 0x05c5ffd4, 0x05e1f9fa, 0x4d2c0000, 0x0505fee2, + 0x0502000d, 0x59325809, 0x812e59c0, 0x05020003, + 0x5c025800, 0x05ddf5f5, 0x05f5fb1c, 0x059c0ede, + 0x05f9f9c5, 0x059e0edc, 0x64c65a0a, 0x64125810, + 0x0001fba8, 0x5c025800, 0x05e9f1a7, 0x0010c79f, + 0x0010c7e0, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c7e0, 0x0010c7f1, 0x0010c8d4, 0x0010c855, + 0x0010c8d4, 0x0010c86e, 0x0010c8d4, 0x0010c873, + 0x0010c8d4, 0x0010c876, 0x0010c8d4, 0x0010c876, + 0x0010c8d4, 0x0010c8d4, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7e0, 0x0010c79f, 0x0010c8d4, + 0x0010c79f, 0x0010c79f, 0x0010c8d4, 0x0010c79f, + 0x0010c8ba, 0x0010c8d4, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c8d4, 0x0010c8d4, + 0x0010c79f, 0x0010c8d4, 0x0010c8d4, 0x0010c79f, + 0x0010c7ec, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c878, 0x0010c8d4, 0x0010c79f, + 0x0010c79f, 0x0010c8a0, 0x0010c8d4, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c7d3, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7d3, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7d3, 0x0010c7d3, 0x0010c7d3, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7d3, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7ae, 0x0010c7c9, 0x0010c7a0, + 0x0010c79f, 0x0010c79f, 0x0010c8d4, 0x059dfe76, + 0x4933c857, 0x05f5fe95, 0x05000007, 0x4a02601c, + 0x0010c7a9, 0x59a80061, 0x48026205, 0x643a6203, + 0x1c01f000, 0x640a6203, 0x59a8005f, 0x800000c4, + 0x48026006, 0x1c01f000, 0x4933c857, 0x05f5fe87, + 0x05000007, 0x4a02601c, 0x0010c7b7, 0x59a80061, + 0x48026205, 0x643a6203, 0x1c01f000, 0x916c0583, + 0x0502000a, 0x5930041b, 0x4803c857, 0x9000050f, + 0x0500000a, 0x9000050c, 0x05000004, 0x4803c857, + 0x05f9fe97, 0x0501f005, 0x4803c857, 0x65726403, + 0x64066203, 0x05ddf565, 0x4933c857, 0x0009f810, + 0x1c01f000, 0x4933c857, 0x05f5fa88, 0x05000109, + 0x4d2c0000, 0x59325809, 0x64025a0a, 0x0001fba8, + 0x5c025800, 0x497a6009, 0x0501f102, 0x05f5fe63, + 0x05000007, 0x59a80061, 0x48026205, 0x643a6203, + 0x59a8005f, 0x48026006, 0x1c01f000, 0x4d2c0000, + 0x59325809, 0x05a1f9f5, 0x5c025800, 0x0009f010, + 0x59a8005f, 0x48026006, 0x05f5fe54, 0x05000007, + 0x4a02601c, 0x0010c7ea, 0x59a80061, 0x48026205, + 0x643a6203, 0x1c01f000, 0x640a6203, 0x1c01f000, + 0x4d3c0000, 0x417a7800, 0x05c5ff08, 0x5c027800, + 0x0501f0e4, 0x05c9fd12, 0x050000e2, 0x59a8024c, + 0x8c000508, 0x0500000e, 0x5932680a, 0x4c580000, + 0x6008b000, 0x91241c01, 0x91341406, 0x05edfd91, + 0x80000540, 0x5c00b000, 0x050200d6, 0x59340200, + 0x8400051a, 0x48026a00, 0x0501f048, 0x599c0017, + 0x8c00050a, 0x0502000b, 0x4d3c0000, 0x417a7800, + 0x05c5feee, 0x5c027800, 0x59340212, 0x82000500, + 0x0000ff00, 0x0502001c, 0x601c0800, 0x05c5fef1, + 0x83440d80, 0x000007fe, 0x050200c2, 0x05adfea0, + 0x05c1fcaa, 0x05000009, 0x59240200, 0x8c00051e, + 0x0500000c, 0x59300809, 0x4d300000, 0x05b1f81d, + 0x5c026000, 0x0501f0b7, 0x05b1f8bf, 0x05020005, + 0x4d300000, 0x05adfd17, 0x5c026000, 0x0501f0b1, + 0x59a8224c, 0x8c100514, 0x050000ae, 0x05adfe83, + 0x0501f0ac, 0x599c0019, 0x8c00050e, 0x05000004, + 0x601c0800, 0x05c5fed3, 0x0501f0a6, 0x050200a5, + 0x59340c00, 0x82040d00, 0x000000ff, 0x4937c857, + 0x4807c857, 0x90040486, 0x0502100f, 0x4d3c0000, + 0x4d400000, 0x60a68000, 0x417a7800, 0x916c0583, + 0x05020006, 0x602c3000, 0x0505fca2, 0x42000000, + 0x001123f5, 0x0505ff16, 0x05adfb81, 0x5c028000, + 0x5c027800, 0x916c0582, 0x05020004, 0x59a80047, + 0x80000000, 0x48035047, 0x600c0800, 0x05c5feb5, + 0x64066407, 0x64066203, 0x640a6403, 0x05ddfcdb, + 0x4ce80000, 0x6005d000, 0x05d9fa95, 0x5c01d000, + 0x1c01f000, 0x59340200, 0x8400051a, 0x48026a00, + 0x05c9fca2, 0x0500007b, 0x60100800, 0x05c5fea5, + 0x0505fca0, 0x05020077, 0x05f5fdd8, 0x05000009, + 0x59a80061, 0x48026205, 0x643a6203, 0x59a8005f, + 0x48026006, 0x4a02601c, 0x0010c868, 0x1c01f000, + 0x60140800, 0x05c5fe97, 0x64066407, 0x64066203, + 0x640e6403, 0x05ddf4bd, 0x05c9fc95, 0x05020065, + 0x60180800, 0x0501f86c, 0x0501f062, 0x60100800, + 0x05c5fe8c, 0x05fdf77e, 0x05c9faa9, 0x0501f05d, + 0x4d300000, 0x05f5fdbd, 0x0500000c, 0x5930082a, + 0x40066000, 0x59300416, 0x8c00051e, 0x05020003, + 0x5c026000, 0x0501f055, 0x5c026000, 0x4a02601c, + 0x0010c888, 0x0501f051, 0x5c026000, 0x0009f010, + 0x4c340000, 0x41306800, 0x05e9f88e, 0x05000012, + 0x64066203, 0x647a6403, 0x58340c1b, 0x4806641b, + 0x58340a1b, 0x4806621b, 0x5834002a, 0x4802602a, + 0x5834080a, 0x4806600a, 0x5834081d, 0x4806601d, + 0x05f5fd8f, 0x64126407, 0x42000800, 0x80000040, + 0x0005fee2, 0x40366000, 0x5c006800, 0x0009f010, + 0x5930082a, 0x4807c857, 0x800409c0, 0x05000031, + 0x5804001e, 0x81300580, 0x0502002e, 0x4978081e, + 0x58041416, 0x8c080516, 0x0500002a, 0x8c080514, + 0x05000028, 0x84081516, 0x48080c16, 0x58065809, + 0x812e59c0, 0x05000023, 0x492fc857, 0x4d300000, + 0x40066000, 0x641e6203, 0x417a7800, 0x0005fe63, + 0x5c026000, 0x0501f01b, 0x05f5fd7c, 0x00080010, + 0x5930002a, 0x80000540, 0x05000018, 0x4c340000, + 0x40006800, 0x58340407, 0x5c006800, 0x90000583, + 0x000a0010, 0x4a02601c, 0x0010c8c8, 0x0501f00f, + 0x4d300000, 0x4d1c0000, 0x5932382a, 0x05e9f84d, + 0x05000004, 0x4a026416, 0x00000100, 0x05f5fc1a, + 0x5c023800, 0x5c026000, 0x0009f010, 0x05c5fe2d, + 0x05f5fd62, 0x00080010, 0x497a601c, 0x59a80061, + 0x48026205, 0x643a6203, 0x59a8005f, 0x48026006, + 0x1c01f000, 0x4933c857, 0x4807c857, 0x05c5fe21, + 0x4d3c0000, 0x417a7800, 0x05c5fe14, 0x5c027800, + 0x5934000a, 0x84000520, 0x4802680a, 0x05c9f238, + 0x59340400, 0x4803c857, 0x80000110, 0x9000348c, + 0x059e1d29, 0x91383595, 0x05020002, 0x0c01f004, + 0x91383596, 0x059e0d24, 0x0c01f00d, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x0010d5d4, + 0x0010a081, 0x0010c92d, 0x0010c90b, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x0010d5d4, + 0x0010a081, 0x0010c92d, 0x0010c93e, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x4933c857, + 0x5932481d, 0x59240400, 0x8c000508, 0x05000014, + 0x813669c0, 0x05000012, 0x59340212, 0x82000500, + 0x0000ff00, 0x0500000e, 0x599c0019, 0x8c00050e, + 0x0502000b, 0x4d3c0000, 0x417a7800, 0x05c5fddb, + 0x5c027800, 0x600c0800, 0x05c5fde2, 0x64066407, + 0x64066203, 0x640a6403, 0x05ddf408, 0x59cc0001, + 0x59340802, 0x80040580, 0x82000500, 0x00ffffff, + 0x000a0010, 0x59345002, 0x05c5fb55, 0x482a6802, + 0x0009f010, 0x4933c857, 0x59303403, 0x9018359e, + 0x0502000d, 0x91383595, 0x000a0010, 0x4c340000, + 0x5930682a, 0x803469c0, 0x05000005, 0x58343416, + 0x82183500, 0xffff1fff, 0x48186c16, 0x5c006800, + 0x0009f010, 0x1c01f000, 0x4933c857, 0x05edfa3e, + 0x000a0010, 0x64066203, 0x64066403, 0x05ddf3e7, + 0x493bc857, 0xb1380591, 0x05020007, 0x05e1fc30, + 0x05ea001e, 0x59300203, 0x90000582, 0x05000062, + 0x059dfcc9, 0x913805a7, 0x05000015, 0xb1380588, + 0x0500000d, 0x91380594, 0x05000011, 0xb13805a1, + 0x05000003, 0xb13805a0, 0x059e0cbf, 0x05e1fc20, + 0x05ea000e, 0x59300203, 0x9000058e, 0x050006bc, + 0x059dfcb9, 0x05e1fc1a, 0x05ea0008, 0x59300203, + 0x90000584, 0x00080183, 0x059dfcb3, 0x4933c857, + 0x59300403, 0xb0000c84, 0x059e1caf, 0xb0000480, + 0x059c1cad, 0x40027000, 0x4803c857, 0x0c01f001, + 0x0010c970, 0x0010c971, 0x0010c971, 0x0010c987, + 0x059dfca5, 0x05ddffb6, 0x59325809, 0x812e59c0, + 0x05000012, 0x832c0500, 0x00ff0000, 0x0500000f, + 0x640a6203, 0x5932680a, 0x59340200, 0x8c00050e, + 0x0502000a, 0x60128000, 0x0501fd4d, 0x497a6009, + 0x59300006, 0x80000540, 0x05020003, 0x59a80060, + 0x48026006, 0x641e6203, 0x1c01f000, 0x05ddffa0, + 0x05f5f8ca, 0x05e4075c, 0x59325809, 0x05a1f83e, + 0x05e5f759, 0x059dfc88, 0x05f5fca8, 0x05000005, + 0x59a80061, 0x48026205, 0x643a6203, 0x0501f009, + 0x59325809, 0x592c040e, 0x8c000502, 0x05000004, + 0x641e6203, 0x610e7000, 0x0009f039, 0x64126203, + 0x1c01f000, 0x0505f83d, 0x00080181, 0x1c01f000, + 0x05f5fc96, 0x05000007, 0x4a02601c, 0x0010c9a8, + 0x59a80061, 0x48026205, 0x643a6203, 0x1c01f000, + 0x64066203, 0x65066403, 0x42027800, 0x80002042, + 0x0005f6e2, 0xb1380498, 0x05001008, 0xb13805a1, + 0x05000004, 0xb13805a0, 0x05000002, 0x059dfc62, + 0x4933c857, 0x1c01f000, 0xb1380591, 0x05000004, + 0xb1380581, 0x059e0c5c, 0x1c01f000, 0x0005fe84, + 0x0505f855, 0x0009f010, 0xb1380498, 0x05ee16e2, + 0xb1380492, 0x059e1c54, 0xb1380489, 0x059c1c52, + 0x0c01f001, 0x0010c9cf, 0x0010c9fd, 0x0010c9ce, + 0x0010c9ce, 0x0010c9ce, 0x0010c9ce, 0x0010c9fd, + 0x0010c9ce, 0x0010ca1b, 0x059dfc47, 0x05f5fc67, + 0x0500000b, 0x59300416, 0x8c000504, 0x05020008, + 0x4a02601c, 0x0010c9db, 0x59a80061, 0x48026205, + 0x64426203, 0x65266403, 0x1c01f000, 0x59325809, + 0x592c040e, 0x8c00051e, 0x05000010, 0x82000d00, + 0x000000c0, 0x82040d80, 0x00000080, 0x05000011, + 0x59300804, 0x8c040518, 0x0502000e, 0x59300416, + 0x8c000516, 0x05000003, 0x641e6203, 0x0501f011, + 0x61067000, 0x0009f1b1, 0x641e6203, 0x497a6006, + 0x59300416, 0x8c000516, 0x0502000a, 0x0005f684, + 0x59325809, 0x592c0c0e, 0x8c04051a, 0x05020003, + 0x0005fe84, 0x0009f010, 0x0501ffe0, 0x05fc07fd, + 0x1c01f000, 0x05ddff0d, 0x59325809, 0x5932680a, + 0x59340200, 0x8c00050e, 0x0500000d, 0x592c040e, + 0x82000500, 0x000000c0, 0x82000580, 0x00000080, + 0x05000005, 0x592c0013, 0x59301817, 0x800c1c80, + 0x480e6017, 0x640a6203, 0x0501f00c, 0x60128000, + 0x0501fcbb, 0x05f9fa46, 0x59300006, 0x80000540, + 0x05020004, 0x59a80060, 0x800000c2, 0x48026006, + 0x497a6009, 0x641e6203, 0x1c01f000, 0x4933c857, + 0x05e1fb5b, 0x059e0bf8, 0x59300203, 0x90000582, + 0x05fc078d, 0x059dfbf4, 0x641e6203, 0x497a6006, + 0x0005f684, 0x641e6203, 0x497a6006, 0x0005f67b, + 0x59300416, 0x8c00051c, 0x000a01a0, 0x59325809, + 0x592c2013, 0x40080000, 0x80102480, 0x59300017, + 0x80102400, 0x48126017, 0x0009f1a0, 0x8c04050e, + 0x05020007, 0x641a6203, 0x0501f822, 0x5930002b, + 0x80000540, 0x05a20d9c, 0x0005f67b, 0x640a6203, + 0x1c01f000, 0x60040800, 0x05a1fd97, 0x90040581, + 0x000801a5, 0x05fdf7e4, 0x83300580, 0x00115a74, + 0x05000004, 0x59300416, 0x8c00051c, 0x05000006, + 0x59300008, 0x8c000522, 0x05a20b67, 0x00080190, + 0x1c01f000, 0x59300013, 0x80000540, 0x00080190, + 0x59325809, 0x592c040b, 0x8c000510, 0x05000004, + 0x497a6013, 0x05a1fb5c, 0x00080190, 0x1c01f000, + 0x492fc857, 0x480bc857, 0x8c08053e, 0x05000005, + 0x80081080, 0x80081000, 0x60240800, 0x0501f002, + 0x60540800, 0x480a580f, 0x1c01f000, 0x1c01f000, + 0x91380593, 0x05000003, 0x91380594, 0x059e0bae, + 0x59300416, 0x8c000516, 0x059c0bab, 0x1c01f000, + 0x059dfba9, 0x59300009, 0x80000540, 0x059e0ba6, + 0x1c01f000, 0x59300416, 0x8c000516, 0x059c0ba2, + 0x1c01f000, 0x64126203, 0x493a6403, 0x42000800, + 0x80002001, 0x0005f6e2, 0x640e6203, 0x493a6403, + 0x05f5fbba, 0x05000007, 0x59300416, 0x8c00050a, + 0x05020004, 0x4a02601c, 0x0010ca84, 0x1c01f000, + 0x0001f99e, 0x59325809, 0x592c040e, 0x8c00051e, + 0x05000011, 0x82000500, 0x000000c0, 0x82000580, + 0x00000080, 0x0500000f, 0x59300416, 0x8c000512, + 0x05020009, 0x8c000510, 0x05020007, 0x592c0410, + 0x80000540, 0x05020004, 0x82080d40, 0x80003065, + 0x0005f6d4, 0x82080d40, 0x80002065, 0x0005f6d4, + 0x82080d40, 0x80002042, 0x0005f6d4, 0x4933c857, + 0x493bc857, 0xb1380484, 0x059e1b73, 0xb1380481, + 0x059c1b71, 0x0c01f001, 0x0010caa9, 0x0010cab7, + 0x0010cac9, 0x59325809, 0x592c040e, 0x8c00051e, + 0x05000019, 0x82001d00, 0x000000c0, 0x820c1d80, + 0x000000c0, 0x05000014, 0x64066203, 0x493a6403, + 0x42000800, 0x80002042, 0x0005f6e2, 0x59325809, + 0x592c040e, 0x8c00051e, 0x0500000b, 0x82001d00, + 0x000000c0, 0x820c1d80, 0x000000c0, 0x05000006, + 0x64066203, 0x493a6403, 0x42000800, 0x80002001, + 0x0005f6e2, 0x497a6009, 0x497a6006, 0x60128000, + 0x0501f403, 0x59325809, 0x592c040e, 0x8c00051e, + 0x05fc07f9, 0x82001d00, 0x000000c0, 0x820c1d80, + 0x000000c0, 0x05fc07f4, 0x640e6203, 0x493a6403, + 0x05f5fb62, 0x05000007, 0x59300416, 0x8c00050a, + 0x05020004, 0x4a02601c, 0x0010cadc, 0x1c01f000, + 0x0001f99e, 0x82080d40, 0x80002065, 0x0005f6d4, + 0x4933c857, 0x493bc857, 0x83380580, 0x00000085, + 0x05000005, 0x83380580, 0x00000088, 0x05000007, + 0x059dfb2d, 0x64266203, 0x493a6403, 0x42000800, + 0x80000040, 0x0005f6e2, 0x83300580, 0x00115a14, + 0x059e0b25, 0x4d1c0000, 0x813669c0, 0x05000003, + 0x0501fee1, 0x05020054, 0x59cc1404, 0x41780000, + 0x0501f853, 0x0500002c, 0x831c0580, 0xffffffff, + 0x05000029, 0x59cc0204, 0x82001580, 0x0000ffff, + 0x05000004, 0x591c1402, 0x80080580, 0x05020022, + 0x05f5fb32, 0x05000010, 0x59cc0005, 0x8c000500, + 0x0500000d, 0x4d300000, 0x411e6000, 0x05f1fa73, + 0x5c026000, 0x05000024, 0x591c0416, 0x8400055a, + 0x48023c16, 0x59300416, 0x8400055a, 0x48026416, + 0x0501f023, 0x591c0407, 0x9000051f, 0x90002586, + 0x05000005, 0x90002584, 0x05000024, 0x90002591, + 0x05020009, 0x497a3a05, 0x61502000, 0x05e5ff40, + 0x05000029, 0x42000000, 0x001123ec, 0x0505fc34, + 0x0501f025, 0x59240400, 0x8c00050a, 0x05020004, + 0x42023800, 0xffffffff, 0x05fdf7f4, 0x813669c0, + 0x05020005, 0x4926601d, 0x42026800, 0x001141b4, + 0x4936600a, 0x4a026403, 0x00000087, 0x59cc1204, + 0x82081580, 0x0000ffff, 0x05020003, 0x4a026403, + 0x00000086, 0x4d2c0000, 0x0505f9e8, 0x05c9fca9, + 0x5c025800, 0x0501f00c, 0x591c0403, 0x900005b8, + 0x05fc07de, 0x591c0203, 0x90000587, 0x05fe07e2, + 0x4d300000, 0x411e6000, 0x05e5fd9f, 0x5c026000, + 0x05fdf7dd, 0x5c023800, 0x1c01f000, 0x4933c857, + 0x480bc857, 0x4c5c0000, 0x4000b800, 0x42002800, + 0x00115aa4, 0x41300000, 0x80140580, 0x0500001c, + 0x58140203, 0x90000580, 0x05000019, 0x58140202, + 0x80080580, 0x05020016, 0x58140203, 0x9000058f, + 0x05000013, 0x58141c07, 0x900c0585, 0x05000010, + 0x8c5c0500, 0x05000003, 0x900c0587, 0x0500000c, + 0x5930200a, 0x5814000a, 0x800001c0, 0x0500000d, + 0x82001d80, 0x001141b4, 0x0500000a, 0x801021c0, + 0x05000003, 0x80100580, 0x05000011, 0x90142c30, + 0x41540000, 0x80140480, 0x05021020, 0x05fdf7de, + 0x5814002a, 0x801021c0, 0x05000005, 0x58102002, + 0x82102500, 0x00ffffff, 0x05fdf7f3, 0x8c5c0500, + 0x05fe07f3, 0x5930202a, 0x05fdf7ef, 0x40163800, + 0x8c5c0500, 0x05000007, 0x4c080000, 0x4c140000, + 0x0505f93f, 0x5c002800, 0x5c001000, 0x05fc07e8, + 0x831c0580, 0xffffffff, 0x05000006, 0x591c000a, + 0x800001c0, 0x05020003, 0x5930000a, 0x4802380a, + 0x81300540, 0x0501f009, 0x8c5c0500, 0x05000007, + 0x40080800, 0x42023800, 0xffffffff, 0x05c9fc56, + 0x05fc07f0, 0x80000580, 0x5c00b800, 0x1c01f000, + 0x4933c857, 0x83300580, 0x001159e4, 0x05020037, + 0x64026203, 0x91380593, 0x0502002c, 0x59300403, + 0x82000580, 0x00000092, 0x059e0a6f, 0x59a800a0, + 0x59325809, 0x812e59c0, 0x05000005, 0x812c0580, + 0x059e0a69, 0x592c0000, 0x497a5800, 0x800001c0, + 0x05000004, 0x480350a0, 0x05e5fc0a, 0x0501f003, + 0x497b50a0, 0x497b50a1, 0x812e59c0, 0x0500001e, + 0x592c0208, 0xb0000595, 0x059c060f, 0x91380593, + 0x0502000d, 0x592c0817, 0x82040580, 0xffffffff, + 0x05000007, 0xa0040494, 0x05021005, 0x05000004, + 0x64180c07, 0x64000c07, 0x49780806, 0x64025a0a, + 0x0001f3a8, 0x64c65a0a, 0x64125815, 0x4a025816, + 0x000000ff, 0x0001f3a8, 0x913805a7, 0x05000003, + 0x91380594, 0x059e0a44, 0x493bc857, 0x05ddfd54, + 0x05fdf7cf, 0x1c01f000, 0x4933c857, 0x91380593, + 0x0502000c, 0x59300403, 0x4803c857, 0x82000c80, + 0x00000085, 0x059c1a38, 0x82000c80, 0x00000093, + 0x059e1a35, 0x82000480, 0x00000085, 0x0c01f01c, + 0x913805a7, 0x0500000f, 0x91380594, 0x0500000d, + 0x493bc857, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x05020007, 0x05e1f98a, 0x05e60578, 0x59300203, + 0x9000058e, 0x05000417, 0x059dfa23, 0x05e5f573, + 0x493bc857, 0x05ddfd32, 0x59325809, 0x812e59c0, + 0x05e404ed, 0x64c65a0a, 0x64125815, 0x4a025816, + 0x000000ff, 0x0001fba8, 0x05e5f4e7, 0x0010cc0d, + 0x0010cc11, 0x0010cc11, 0x0010cc0d, 0x0010cc0d, + 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, + 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, + 0x0010cc0e, 0x059dfa08, 0x59325809, 0x64025a0a, + 0x0001fba8, 0x0009f010, 0x4933c857, 0x42000000, + 0x00112408, 0x0505fb42, 0x0501fdfb, 0x497a6205, + 0x602e8000, 0x0501f805, 0x641a6407, 0x641e6203, + 0x497a6006, 0x1c01f000, 0x4933c857, 0x4943c857, + 0x59300407, 0x90000587, 0x05020002, 0x1c01f000, + 0x05ddfdad, 0x4df00000, 0x59300407, 0x90000586, + 0x05020005, 0x59300203, 0x90000588, 0x05020002, + 0x497a6009, 0x05f1fe25, 0x0500000c, 0x9140058c, 0x0500000a, 0x59300809, 0x58040000, 0x80001540, 0x05000006, 0x49780800, 0x4d2c0000, 0x400a5800, - 0x0501fa52, 0x5c025800, 0x05f1fc05, 0x90000c91, - 0x05a218a2, 0x0c01f001, 0x0010c563, 0x0010c566, - 0x0010c54b, 0x0010c570, 0x0010c57c, 0x0010c54b, - 0x0010c54b, 0x0010c54b, 0x0010c54b, 0x0010c54b, - 0x0010c54b, 0x0010c54b, 0x0010c54b, 0x0010c54b, - 0x0010c54b, 0x0010c54b, 0x0010c54b, 0x05f9f966, - 0x4d400000, 0x5930002b, 0x80000540, 0x05000004, - 0x41400800, 0x05a5f9e6, 0x40068000, 0x4d2c0000, - 0x59325809, 0x05f1ff74, 0x05000006, 0x592c040b, - 0x8c000510, 0x05000002, 0x05ddf9f3, 0x0501fa2b, - 0x4c5c0000, 0x5930b80a, 0x05e5fe72, 0x485e600a, - 0x5c00b800, 0x5c025800, 0x5c028000, 0x5c03e000, - 0x05dc07a0, 0x1c01f000, 0x598c000b, 0x81300580, - 0x05020003, 0x05e1faa7, 0x0502000e, 0x05ddfc4b, - 0x05fc07df, 0x05ddfebf, 0x0500000a, 0x05a1f86b, - 0x05f1fbc0, 0x05020003, 0x05e1fa6e, 0x05020005, - 0x05ddfb62, 0x05fc07d6, 0x05ddfeb6, 0x05a20863, - 0x59300203, 0x90000c91, 0x05a21860, 0x0c01f7bf, - 0x05a5facd, 0x05fdf7ce, 0x4933c857, 0x4d240000, - 0x4c5c0000, 0x4d440000, 0x4d340000, 0x4c580000, - 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x59cc0007, - 0x4c000000, 0x59cc0001, 0x82000500, 0x00ffffff, - 0x82000d80, 0x00fffffe, 0x5c000000, 0x05020005, - 0x801c0d80, 0x05020054, 0x42000000, 0x00fffffe, - 0x05d5fb3a, 0x05c80ce4, 0x0502004f, 0x4178b800, - 0x91cc1408, 0x6008b000, 0x91341c06, 0x05edfaac, - 0x05000002, 0x6004b800, 0x5930001d, 0x4c000000, - 0x05c9fcd1, 0x4926601d, 0x5930000a, 0x4c000000, - 0x59242c00, 0x8c14050a, 0x05020011, 0x81342d80, - 0x05000002, 0x60102800, 0x58002403, 0x59340c03, - 0x59341802, 0x820c1d00, 0x00ffffff, 0x60143000, - 0x59cc4008, 0x59cc3809, 0x9c2041c0, 0x9c1c39c0, - 0x611a8000, 0x41301000, 0x0501f9f5, 0x8c5c0500, - 0x0502001f, 0x4936600a, 0x83440d80, 0x000007fe, - 0x0502000f, 0x60683000, 0x0501ffc5, 0x42000000, - 0x0010e451, 0x0505fa1b, 0x4d3c0000, 0x4d400000, - 0x60a68000, 0x05b1f852, 0x602a7800, 0x05b1f89e, + 0x0501fa93, 0x5c025800, 0x5930001e, 0x800001c0, + 0x05f60f6d, 0x05f1fa78, 0x90000c91, 0x059e19d6, + 0x0c01f001, 0x0010cc6a, 0x0010cc6d, 0x0010cc52, + 0x0010cc77, 0x0010cc83, 0x0010cc52, 0x0010cc52, + 0x0010cc52, 0x0010cc52, 0x0010cc52, 0x0010cc52, + 0x0010cc52, 0x0010cc52, 0x0010cc52, 0x0010cc52, + 0x0010cc52, 0x0010cc52, 0x05f9f805, 0x4d400000, + 0x5930002b, 0x80000540, 0x05000004, 0x41400800, + 0x05a1fb7d, 0x40068000, 0x4d2c0000, 0x59325809, + 0x05f1fdf6, 0x05000006, 0x592c040b, 0x8c000510, + 0x05000002, 0x05d9ffa0, 0x0501fa69, 0x4c5c0000, + 0x5930b80a, 0x05e5fc80, 0x485e600a, 0x5c00b800, + 0x5c025800, 0x5c028000, 0x5c03e000, 0x05dc0557, + 0x1c01f000, 0x598c000b, 0x81300580, 0x05020003, + 0x05e1f85e, 0x0502000e, 0x05ddf9fd, 0x05fc07df, + 0x05ddfc75, 0x0500000a, 0x059df99f, 0x05f1fa33, + 0x05020003, 0x05e1f825, 0x05020005, 0x05ddf914, + 0x05fc07d6, 0x05ddfc6c, 0x059e0997, 0x59300203, + 0x90000c91, 0x059e1994, 0x0c01f7bf, 0x05a1fc64, + 0x05fdf7ce, 0x4933c857, 0x4d240000, 0x4c5c0000, + 0x4d440000, 0x4d340000, 0x4c580000, 0x59cc3800, + 0x821c3d00, 0x00ffffff, 0x59cc0007, 0x4c000000, + 0x59cc0001, 0x82000500, 0x00ffffff, 0x82000d80, + 0x00fffffe, 0x5c000000, 0x05020005, 0x801c0d80, + 0x05020061, 0x42000000, 0x00fffffe, 0x05d1ffdf, + 0x05c808a6, 0x0502005c, 0x4178b800, 0x83440580, + 0x000007fe, 0x05000007, 0x91cc1408, 0x6008b000, + 0x91341c06, 0x05edf8e7, 0x05000002, 0x6004b800, + 0x5930001d, 0x4c000000, 0x05c9f890, 0x4926601d, + 0x5930000a, 0x4c000000, 0x59242c00, 0x8c14050a, + 0x05020018, 0x81342d80, 0x05000002, 0x60102800, + 0x58002403, 0x59340c03, 0x59341802, 0x820c1d00, + 0x00ffffff, 0x60143000, 0x59cc4008, 0x59cc3809, + 0x9c2041c0, 0x9c1c39c0, 0x611a8000, 0x82100580, + 0x000007fe, 0x05020005, 0x59240200, 0x82000500, + 0xfffffe7f, 0x48024a00, 0x41301000, 0x0501fa2b, + 0x8c5c0500, 0x05020022, 0x4936600a, 0x83440d80, + 0x000007fe, 0x05020012, 0x60683000, 0x0505f811, + 0x42000000, 0x001123f5, 0x0505fa85, 0x4d3c0000, + 0x4d400000, 0x60a68000, 0x59240a00, 0x84040d02, + 0x48064a00, 0x05adf9da, 0x602a7800, 0x05adfa30, 0x5c028000, 0x5c027800, 0x0501f00d, 0x602c3000, - 0x0501ffb7, 0x42000000, 0x0010e451, 0x0505fa0d, + 0x0505f800, 0x42000000, 0x001123f5, 0x0505fa74, 0x4d3c0000, 0x4d400000, 0x60a68000, 0x417a7800, - 0x05adfd58, 0x5c028000, 0x5c027800, 0x5c000000, + 0x05a9fedb, 0x5c028000, 0x5c027800, 0x5c000000, 0x4802600a, 0x5c000000, 0x4802601d, 0x59cc0007, 0x83440d80, 0x000007fe, 0x05020005, 0x42000000, 0x00fffffe, 0x4a026c00, 0x00000707, 0x48026802, 0x80000580, 0x5c00b000, 0x5c026800, 0x5c028800, 0x5c00b800, 0x5c024800, 0x1c01f000, 0x4933c857, - 0x4c040000, 0x59a800b6, 0xb00005b4, 0x05020040, - 0x59cc0a08, 0x82040480, 0x00000100, 0x05001033, - 0x59cc0c08, 0x82040500, 0x00008000, 0x05000035, - 0x59a80041, 0x80000540, 0x05020009, 0x5930100a, + 0x4c040000, 0x59a800bb, 0xb00005b4, 0x05020043, + 0x59cc0a08, 0x82040480, 0x00000100, 0x05001036, + 0x59cc0c08, 0x82040500, 0x00008000, 0x05000038, + 0x59a80044, 0x80000540, 0x05020009, 0x5930100a, 0x58080212, 0x82000500, 0x0000ff00, 0x05000004, - 0x82040500, 0x00000800, 0x0500002a, 0x59cc0c09, - 0x80040840, 0x05001024, 0x59a80a49, 0x8c040506, - 0x05000004, 0x59cc0c0f, 0x8c04051e, 0x05020012, - 0x59cc0a17, 0x800409c0, 0x05020012, 0x59cc0a18, - 0x82040480, 0x00000100, 0x05001014, 0x59cc0c18, - 0x800409c0, 0x0502000e, 0x59cc0c19, 0x80040840, - 0x05001011, 0x59cc0c1a, 0x80040840, 0x05001011, - 0x0501f017, 0x4a02621c, 0x00000100, 0x0501f012, - 0x4a02621c, 0x00000300, 0x0501f00f, 0x4a02621c, - 0x00000500, 0x0501f00c, 0x4a02621c, 0x00000700, - 0x0501f009, 0x4a02621c, 0x00000900, 0x0501f006, - 0x4a02621c, 0x00000f00, 0x0501f003, 0x4a02621c, - 0x00002d00, 0x90000541, 0x0501f002, 0x80000580, - 0x5c000800, 0x1c01f000, 0x59cc0407, 0x4803c857, - 0x82000580, 0x00000800, 0x05000002, 0x6402621c, - 0x1c01f000, 0x4933c857, 0x4c580000, 0x59cc000c, - 0x59340802, 0x82040d00, 0x00ffffff, 0x80040580, - 0x0502000a, 0x91cc1408, 0x6008b000, 0x91341c06, - 0x05edf9ff, 0x05020005, 0x91cc140a, 0x6008b000, - 0x91341c08, 0x05edf9fa, 0x5c00b000, 0x1c01f000, - 0x4933c857, 0x4c580000, 0x91cc140b, 0x6008b000, - 0x91341c06, 0x05edf9f2, 0x05020008, 0x91cc140d, - 0x6008b000, 0x91341c08, 0x05edf9ed, 0x05000014, - 0x4933c856, 0x4933c856, 0x4933c857, 0x59340009, - 0x4803c857, 0x5934000e, 0x4803c857, 0x59340008, - 0x4803c857, 0x5934000d, 0x4803c857, 0x59340007, - 0x4803c857, 0x5934000c, 0x4803c857, 0x59340006, - 0x4803c857, 0x5934000b, 0x4803c857, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x4947c857, 0x4943c857, - 0x4c600000, 0x05ddfe9e, 0x4df00000, 0x4d2c0000, - 0x4d300000, 0x4d340000, 0x4c580000, 0x0501f8d3, - 0x4130c000, 0x42026000, 0x00111b00, 0x59a8003b, - 0x8060c1c0, 0x05000005, 0x82601580, 0x00111a70, - 0x05000002, 0x80000040, 0x81640480, 0x05021092, - 0x40600000, 0x81300580, 0x0500008a, 0x0501fa1a, - 0x05020088, 0x812649c0, 0x05000004, 0x5930001d, - 0x81240580, 0x05020083, 0x5932680a, 0x05e5fb73, - 0x05000080, 0x59300407, 0x90000c92, 0x059e1f43, - 0x0c01f001, 0x0010c714, 0x0010c6ac, 0x0010c6ba, - 0x0010c6c4, 0x0010c6ac, 0x0010c6ba, 0x0010c6ec, - 0x0010c6f9, 0x0010c6ab, 0x0010c6ab, 0x0010c6ff, - 0x0010c6ab, 0x0010c6ab, 0x0010c6ab, 0x0010c6ab, - 0x0010c710, 0x0010c70a, 0x0010c708, 0x059dff2f, - 0x59300403, 0xb0000583, 0x05f40ca4, 0x0501ffa7, - 0x05f1ff0b, 0x05000005, 0x05f1ff18, 0x0502005d, - 0x05e9fc0f, 0x0501f05b, 0x05adfcbd, 0x05f1ff13, - 0x05e80c0b, 0x0501f057, 0x59325809, 0x05f1fe0e, - 0x05000054, 0x49425a0a, 0x497a5c0d, 0x0001fb82, - 0x59300229, 0x90000583, 0x05f00ee6, 0x0501f04d, - 0x05f9fa99, 0x59300008, 0x8c000500, 0x05000003, - 0x05a5f981, 0x0501f007, 0x59300203, 0x90000584, - 0x05a4097d, 0x59300203, 0x90000584, 0x05a4097a, - 0x59325809, 0x05f1fdf8, 0x0500003e, 0x592c0208, - 0x82000500, 0x000000ff, 0x90000594, 0x05f20ed1, - 0x05f5ffd9, 0x0005f9f3, 0x05d1fd2e, 0x4a025a08, - 0x00000103, 0x592c040c, 0x8c000512, 0x05000006, - 0x4d2c0000, 0x592c000d, 0x40025800, 0x05a1fab8, - 0x5c025800, 0x49425a0a, 0x497a580d, 0x0501fc4a, - 0x05f5fc75, 0x05f1ff3b, 0x0001fb82, 0x0501f025, - 0x59300203, 0x90000584, 0x05a4095b, 0x59325809, - 0x05f1fdd9, 0x0500001f, 0x49425a0a, 0x0501fc3e, - 0x05f5ffbd, 0x0005f9f3, 0x05f5fc67, 0x0001fb82, - 0x0501f018, 0x59300203, 0x90000591, 0x05020019, - 0x59300429, 0x48026203, 0x0501f016, 0x59300203, - 0x90000584, 0x05a40948, 0x59325809, 0x05f1fdc6, - 0x0500000c, 0x49425a0a, 0x0001fb82, 0x0501f009, - 0x59325819, 0x05a1fa92, 0x05a5ffff, 0x59325809, - 0x05f1fdbd, 0x05000003, 0x49425a0a, 0x0001fb82, - 0x05e5fcc0, 0x8d3c051c, 0x05000002, 0x497a600a, - 0x91326430, 0x41580000, 0x81300480, 0x05fc1771, - 0x0501f002, 0x41526000, 0x8d3c0518, 0x0500002b, - 0x59a80898, 0x59a80099, 0x80040480, 0x05000027, - 0x81300800, 0x41540000, 0x80040480, 0x05021023, - 0x5930000a, 0x800001c0, 0x05fe0765, 0x0001fb00, - 0x05fe07ec, 0x59340802, 0x82040d00, 0x00ffffff, - 0x5930002a, 0x80040580, 0x05fe07e6, 0x59340813, - 0x59301029, 0x80040582, 0x82000500, 0x00ffffff, - 0x0500000c, 0x0505f9bf, 0x42000800, 0x0010e512, - 0x58040005, 0x80080580, 0x82000500, 0x00ffffff, - 0x05fc07d8, 0x90040c0d, 0x8058b040, 0x05fe07f9, - 0x59300203, 0x90000588, 0x05020002, 0x0501fe69, - 0x4936600a, 0x05fdf74e, 0x5c00b000, 0x5c026800, - 0x5c026000, 0x5c025800, 0x5c03e000, 0x05dc0db9, - 0x5c00c000, 0x1c01f000, 0x4933c857, 0x813261c0, - 0x05000025, 0x83300d80, 0x00111a70, 0x05000022, - 0x8d3c0506, 0x05020020, 0x59300c07, 0x90040581, - 0x05000008, 0x90040582, 0x0502001b, 0x59300229, - 0x90000581, 0x05020018, 0x59300c18, 0x0501f002, - 0x59300c03, 0x900405b9, 0x05000003, 0x900405b5, - 0x05020011, 0x4d300000, 0x4d1c0000, 0x5932602a, - 0x4933c857, 0x05f5f9f9, 0x059c0e70, 0x591c001e, - 0x497a381e, 0x591c0c16, 0x84040d02, 0x48063c16, - 0x5c023800, 0x5c026000, 0x81300580, 0x059e0e67, - 0x497a602a, 0x1c01f000, 0x5c000000, 0x4c000000, - 0x4803c857, 0x4d3c0000, 0x60067800, 0x05c5fd68, - 0x5c027800, 0x4c580000, 0x6008b000, 0x5930181d, - 0x900c1c01, 0x91cc140b, 0x05edf8c5, 0x5c00b000, - 0x80000540, 0x1c01f000, 0x492fc857, 0x4943c857, - 0x59a8000c, 0x812c0480, 0x05001014, 0x59a8000a, - 0x812c0480, 0x05021011, 0x4d400000, 0x592c0000, - 0x80005d40, 0x0500000a, 0x497a5800, 0x49425a0a, - 0x4c2c0000, 0x0001fb82, 0x5c025800, 0x9140058c, - 0x05fe07f7, 0x60128000, 0x05fdf7f5, 0x49425a0a, - 0x5c028000, 0x0001f382, 0x1c01f000, 0x61fc21ff, - 0x5930100a, 0x800811c0, 0x05000002, 0x58082403, - 0x41301000, 0x0501f006, 0x41781000, 0x41442000, - 0x0501f003, 0x41781000, 0x61fc21ff, 0x5c000000, - 0x4c000000, 0x4803c857, 0x480bc857, 0x4813c857, - 0x492fc857, 0x4943c857, 0x4d2c0000, 0x4c040000, - 0x4c080000, 0x4c0c0000, 0x4c100000, 0x4c140000, - 0x4c180000, 0x4c1c0000, 0x4c200000, 0x05a1f9c7, - 0x059c0e1e, 0x5c004000, 0x5c003800, 0x5c003000, - 0x5c002800, 0x5c002000, 0x5c001800, 0x5c001000, - 0x5c000800, 0x05011000, 0x912c0408, 0x4803c840, + 0x82040500, 0x00000800, 0x0500002d, 0x59cc0c09, + 0x80040840, 0x05001027, 0x59a80a4c, 0x8c040506, + 0x05000004, 0x59cc0c0f, 0x8c04051e, 0x05020015, + 0x59cc0a17, 0x800409c0, 0x05020015, 0x59cc0a18, + 0x82040480, 0x00000100, 0x05001017, 0x59a80807, + 0x8c040508, 0x05020004, 0x59cc0c18, 0x800409c0, + 0x0502000e, 0x59cc0c19, 0x80040840, 0x05001011, + 0x59cc0c1a, 0x80040840, 0x05001011, 0x0501f017, + 0x4a02621c, 0x00000100, 0x0501f012, 0x4a02621c, + 0x00000300, 0x0501f00f, 0x4a02621c, 0x00000500, + 0x0501f00c, 0x4a02621c, 0x00000700, 0x0501f009, + 0x4a02621c, 0x00000900, 0x0501f006, 0x4a02621c, + 0x00000f00, 0x0501f003, 0x4a02621c, 0x00002d00, + 0x90000541, 0x0501f002, 0x80000580, 0x5c000800, + 0x1c01f000, 0x59cc0407, 0x4803c857, 0x82000580, + 0x00000800, 0x05000002, 0x6402621c, 0x1c01f000, + 0x4933c857, 0x4c580000, 0x59cc000c, 0x59340802, + 0x82040d00, 0x00ffffff, 0x80040580, 0x0502000a, + 0x91cc1408, 0x6008b000, 0x91341c06, 0x05edf82d, + 0x05020005, 0x91cc140a, 0x6008b000, 0x91341c08, + 0x05edf828, 0x5c00b000, 0x1c01f000, 0x4933c857, + 0x4c580000, 0x91cc140b, 0x6008b000, 0x91341c06, + 0x05edf820, 0x05020008, 0x91cc140d, 0x6008b000, + 0x91341c08, 0x05edf81b, 0x05000014, 0x4933c856, + 0x4933c856, 0x4933c857, 0x59340009, 0x4803c857, + 0x5934000e, 0x4803c857, 0x59340008, 0x4803c857, + 0x5934000d, 0x4803c857, 0x59340007, 0x4803c857, + 0x5934000c, 0x4803c857, 0x59340006, 0x4803c857, + 0x5934000b, 0x4803c857, 0x5c00b000, 0x1c01f000, + 0x4933c857, 0x4947c857, 0x4943c857, 0x4c600000, + 0x05ddfc45, 0x4df00000, 0x4d2c0000, 0x4d300000, + 0x4d340000, 0x4c580000, 0x0501f901, 0x4130c000, + 0x40be6000, 0x59a8003d, 0x8060c1c0, 0x05000004, + 0x80bc1498, 0x05001002, 0x80000040, 0x81640480, + 0x05021090, 0x40600000, 0x81300580, 0x05000088, + 0x0501fa4f, 0x05020086, 0x812649c0, 0x05000004, + 0x5930001d, 0x81240580, 0x05020081, 0x5932680a, + 0x05e5f94e, 0x0500007e, 0x59300407, 0x90000c92, + 0x059e1869, 0x0c01f001, 0x0010ce27, 0x0010cdc1, + 0x0010cdcf, 0x0010cdd9, 0x0010cdc1, 0x0010cdcf, + 0x0010ce01, 0x0010ce0e, 0x0010cdc0, 0x0010cdc0, + 0x0010ce14, 0x0010cdc0, 0x0010cdc0, 0x0010cdc0, + 0x0010cdc0, 0x0010ce23, 0x0010ce1d, 0x0010ce1d, + 0x059df855, 0x59300403, 0xb0000583, 0x05f40b35, + 0x0501fff9, 0x05f1fd8f, 0x05000005, 0x05f1fd9c, + 0x0502005b, 0x05e9fa34, 0x0501f059, 0x05a9fe3f, + 0x05f1fd97, 0x05e80a30, 0x0501f055, 0x59325809, + 0x05f1fc82, 0x05000052, 0x49425a0a, 0x497a5c0d, + 0x0001fba8, 0x59300229, 0x90000583, 0x05f00d6a, + 0x0501f04b, 0x05f9f935, 0x59300008, 0x8c000500, + 0x05000003, 0x05a1fb0a, 0x0501f007, 0x59300203, + 0x90000584, 0x05a00b06, 0x59300203, 0x90000584, + 0x05a00b03, 0x59325809, 0x05f1fc6c, 0x0500003c, + 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, + 0x05f20d55, 0x05f5fe6a, 0x0005fa1a, 0x05d1f9a1, + 0x4a025a08, 0x00000103, 0x592c040c, 0x8c000512, + 0x05000006, 0x4d2c0000, 0x592c000d, 0x40025800, + 0x059dfbda, 0x5c025800, 0x49425a0a, 0x497a580d, + 0x0501fc7f, 0x05f5fb06, 0x05f1fdbf, 0x0001fba8, + 0x0501f023, 0x59300203, 0x90000584, 0x05a00ae4, + 0x59325809, 0x05f1fc4d, 0x0500001d, 0x49425a0a, + 0x0501fc73, 0x05f5fe4e, 0x0005fa1a, 0x05f5faf8, + 0x0001fba8, 0x0501f016, 0x59300203, 0x90000591, + 0x05020017, 0x59300429, 0x48026203, 0x0501f014, + 0x59300203, 0x90000584, 0x05a00ad1, 0x59325809, + 0x05f1fc3a, 0x0500000a, 0x49425a0a, 0x0001fba8, + 0x0501f007, 0x05a5f95d, 0x59325809, 0x05f1fc33, + 0x05000003, 0x49425a0a, 0x0001fba8, 0x05e5fac2, + 0x8d3c051c, 0x05000002, 0x497a600a, 0x91326430, + 0x41580000, 0x81300480, 0x05fc1773, 0x0501f002, + 0x41526000, 0x8d3c0518, 0x0500002c, 0x59a8089b, + 0x59a8009c, 0x80040480, 0x05000028, 0x81300800, + 0x41540000, 0x80040480, 0x05021024, 0x5930000a, + 0x800001c0, 0x05fe0767, 0x0001fb08, 0x05fe07ec, + 0x59340802, 0x82040d00, 0x00ffffff, 0x5930002a, + 0x80040580, 0x05fe07e6, 0x59340013, 0x59301029, + 0x80080580, 0x82000500, 0x00ffffff, 0x0500000c, + 0x0505fa27, 0x42000800, 0x001124b6, 0x58040005, + 0x80080580, 0x82000500, 0x00ffffff, 0x05fc07d8, + 0x90040c0d, 0x8058b040, 0x05fe07f9, 0x59300203, + 0x90000588, 0x05020003, 0x0501feb3, 0x497a6009, + 0x4936600a, 0x05fdf74f, 0x82bc0580, 0x00115aa4, + 0x0500002f, 0x42026000, 0x00115aa4, 0x59a8029f, + 0x8060c1c0, 0x05000007, 0x806014af, 0x05021005, + 0x82601580, 0x00115a14, 0x05000002, 0x80000040, + 0x59a8123e, 0x80080480, 0x05021021, 0x81300598, + 0x0500001c, 0x0501f982, 0x0502001a, 0x812649c0, + 0x05000004, 0x5930001d, 0x81240580, 0x05020015, + 0x5932680a, 0x05e5f881, 0x05000012, 0x59300407, + 0x90000d84, 0x05020003, 0x0501ff43, 0x0501f009, + 0x90000d91, 0x0502000b, 0x05a5f8fc, 0x59325809, + 0x05f1fbd2, 0x05000003, 0x49425a0a, 0x0001fba8, + 0x05e5fa61, 0x8d3c051c, 0x05000002, 0x497a600a, + 0x91326430, 0x813004af, 0x05fc17e1, 0x5c00b000, + 0x5c026800, 0x5c026000, 0x5c025800, 0x5c03e000, + 0x05dc0b32, 0x5c00c000, 0x1c01f000, 0x4933c857, + 0x813261c0, 0x05000025, 0x83300d80, 0x00115a14, + 0x05000022, 0x8d3c0506, 0x05020020, 0x59300c07, + 0x90040581, 0x05000008, 0x90040582, 0x0502001b, + 0x59300229, 0x90000581, 0x05020018, 0x59300c18, + 0x0501f002, 0x59300c03, 0x900405b9, 0x05000003, + 0x900405b5, 0x05020011, 0x4d300000, 0x4d1c0000, + 0x5932602a, 0x4933c857, 0x05f5f850, 0x05980f66, + 0x591c001e, 0x497a381e, 0x591c0c16, 0x84040d02, + 0x48063c16, 0x5c023800, 0x5c026000, 0x81300580, + 0x059a0f5d, 0x497a602a, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4d3c0000, 0x60067800, + 0x05c5f836, 0x5c027800, 0x4c580000, 0x6008b000, + 0x5930181d, 0x900c1c01, 0x91cc140b, 0x05e9fec5, + 0x5c00b000, 0x80000540, 0x1c01f000, 0x492fc857, + 0x4943c857, 0x59a8000c, 0x812c0480, 0x05021003, + 0x05f1fb96, 0x05000014, 0x59a8000a, 0x812c0480, + 0x05021011, 0x4d400000, 0x592c0000, 0x80005d40, + 0x0500000a, 0x497a5800, 0x49425a0a, 0x4c2c0000, + 0x0001fba8, 0x5c025800, 0x9140058c, 0x05fe07f7, + 0x60128000, 0x05fdf7f5, 0x49425a0a, 0x5c028000, + 0x0001f3a8, 0x1c01f000, 0x61fc21ff, 0x5930100a, + 0x800811c0, 0x05000002, 0x58082403, 0x41301000, + 0x0501f006, 0x41781000, 0x41442000, 0x0501f003, + 0x41781000, 0x61fc21ff, 0x5c000000, 0x4c000000, + 0x4803c857, 0x480bc857, 0x4813c857, 0x492fc857, + 0x4943c857, 0x4d2c0000, 0x4c040000, 0x4c080000, + 0x4c0c0000, 0x4c100000, 0x4c140000, 0x4c180000, + 0x4c1c0000, 0x4c200000, 0x059dfab7, 0x05980f12, + 0x5c004000, 0x5c003800, 0x5c003000, 0x5c002800, + 0x5c002000, 0x5c001800, 0x5c001000, 0x5c000800, + 0x05011000, 0x912c0408, 0x4803c840, 0x6443c842, + 0x40000000, 0x05fd17ff, 0x4a025808, 0x0000010d, + 0x800811c0, 0x05000019, 0x914005a9, 0x05020013, + 0x90180582, 0x05000009, 0x90180583, 0x05000007, + 0x90180588, 0x05000005, 0x90180586, 0x05000006, + 0x90180589, 0x05020009, 0x4a02580d, 0xffffffff, + 0x0501f007, 0x5808280a, 0x58140002, 0x82000500, + 0x00ffffff, 0x48025816, 0x480a580d, 0x58080202, + 0x48025c17, 0x0501f005, 0x4a02580d, 0xffffffff, + 0x4a025c17, 0x0000ffff, 0xb1400586, 0x05000002, + 0x41782800, 0x480e5810, 0x48065811, 0x48225812, + 0x481e5813, 0x481a5c0c, 0xb1400586, 0x05020007, + 0x901805a0, 0x05020005, 0x59a8024c, 0x8c000508, + 0x05000002, 0x84142d46, 0x49425a0c, 0x48125a0a, + 0x82100580, 0x0000ffff, 0x05000029, 0x4d440000, + 0x4d340000, 0x4c140000, 0x4c180000, 0x40128800, + 0x83440480, 0x000007f0, 0x05001006, 0x83440480, + 0x00000800, 0x05021003, 0x05c5fdf0, 0x0501f002, + 0x0001fb08, 0x059a0ec0, 0x59340002, 0x82000500, + 0x00ffffff, 0x48025816, 0x5c003000, 0x5c002800, + 0xb1400586, 0x05020010, 0x901805a0, 0x0502000e, + 0x84142d48, 0x59344006, 0x59343807, 0x59341808, + 0x59340809, 0x9c2041c0, 0x9c1c39c0, 0x9c0c19c0, + 0x9c0409c0, 0x480e580e, 0x4806580f, 0x48225812, + 0x481e5813, 0x5c026800, 0x5c028800, 0x48165a0b, + 0x497a5800, 0x497a5c08, 0x812000d0, 0x48025c14, + 0x0501fcc2, 0x5c025800, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x480bc857, 0x480fc857, + 0x4813c857, 0x4817c857, 0x4d2c0000, 0x4c080000, + 0x4c0c0000, 0x4c100000, 0x4c140000, 0x059dfa36, + 0x05980e91, 0x5c002800, 0x5c002000, 0x5c001800, + 0x5c001000, 0x05011000, 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, 0x05fd17ff, 0x4a025808, - 0x0000010d, 0x800811c0, 0x05000019, 0x914005a9, - 0x05020013, 0x90180582, 0x05000009, 0x90180583, - 0x05000007, 0x90180588, 0x05000005, 0x90180586, - 0x05000006, 0x90180589, 0x05020009, 0x4a02580d, - 0xffffffff, 0x0501f007, 0x5808280a, 0x58140002, - 0x82000500, 0x00ffffff, 0x48025816, 0x480a580d, - 0x58080202, 0x48025c17, 0x0501f005, 0x4a02580d, - 0xffffffff, 0x4a025c17, 0x0000ffff, 0xb1400586, - 0x05000002, 0x41782800, 0x480e5810, 0x48065811, - 0x48225812, 0x481e5813, 0x481a5c0c, 0xb1400586, - 0x05020007, 0x901805a0, 0x05020005, 0x59a80249, - 0x8c000508, 0x05000002, 0x84142d46, 0x49425a0c, - 0x48125a0a, 0x82100580, 0x0000ffff, 0x05000026, - 0x4d440000, 0x4d340000, 0x4c140000, 0x4c180000, - 0x40128800, 0x83440480, 0x000007f0, 0x05001003, - 0x05c9fa71, 0x0501f002, 0x0001fb00, 0x059e0dcf, - 0x59340002, 0x82000500, 0x00ffffff, 0x48025816, - 0x5c003000, 0x5c002800, 0xb1400586, 0x05020010, - 0x901805a0, 0x0502000e, 0x84142d48, 0x59344006, - 0x59343807, 0x59341808, 0x59340809, 0x9c2041c0, - 0x9c1c39c0, 0x9c0c19c0, 0x9c0409c0, 0x480e580e, - 0x4806580f, 0x48225812, 0x481e5813, 0x5c026800, - 0x5c028800, 0x48165a0b, 0x497a5800, 0x497a5c08, - 0x812000d0, 0x48025c14, 0x0501fcaf, 0x5c025800, - 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, - 0x480bc857, 0x480fc857, 0x4813c857, 0x4817c857, - 0x4d2c0000, 0x4c080000, 0x4c0c0000, 0x4c100000, - 0x4c140000, 0x05a1f949, 0x059c0da0, 0x5c002800, - 0x5c002000, 0x5c001800, 0x5c001000, 0x05011000, - 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, - 0x05fd17ff, 0x4a025808, 0x0000010d, 0x65265a0c, - 0x480a5a0e, 0x480e5c0e, 0x48125a0f, 0x48165c0f, - 0x82080580, 0x00008014, 0x05020054, 0x820c0580, - 0x0000ffff, 0x05020051, 0x90100586, 0x0502004f, - 0x4d240000, 0x42024800, 0x0010e512, 0x59240005, - 0x5c024800, 0x05cdf855, 0x05000009, 0x82000d00, - 0x00ffff00, 0x05020006, 0x82000c00, 0x00102853, - 0x50040800, 0x80040910, 0x48065a10, 0x82000d00, - 0x0000ffff, 0x48065c10, 0x80000120, 0x48025a11, - 0x59a80249, 0x82001500, 0x00003500, 0x480a5a12, - 0x8c000502, 0x05000016, 0x8c000506, 0x05000006, - 0x90000d0a, 0x90040d8a, 0x05020003, 0x64065c11, - 0x0501f018, 0x8c00050a, 0x05000006, 0x90000d22, - 0x90040da2, 0x05020003, 0x640e5c11, 0x0501f011, - 0x8c000508, 0x05000006, 0x90000d12, 0x90040d92, - 0x05020003, 0x640a5c11, 0x0501f00a, 0x05cdf82b, - 0x05020003, 0x64125c11, 0x0501f006, 0x8c000506, - 0x05000003, 0x64165c11, 0x0501f002, 0x64025c11, - 0x59a8005c, 0x48025c12, 0x59a8005d, 0x48025a13, - 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, - 0x05020003, 0x64025c13, 0x0501f00c, 0x82040580, - 0x00008000, 0x05020003, 0x64065c13, 0x0501f007, - 0x82040580, 0x00010000, 0x05020003, 0x640e5c13, - 0x0501f002, 0x64125c13, 0x0501fc37, 0x5c025800, - 0x1c01f000, 0x5930080a, 0x800409c0, 0x05000004, - 0x58040403, 0x81440580, 0x1c01f000, 0x90000541, - 0x05fdf7fe, 0x4933c857, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x0502000c, 0x5932680a, 0x59340200, - 0x8c00050e, 0x05020002, 0x497a6205, 0x5930001c, - 0x80000540, 0x000407dc, 0x497a601c, 0x0801f800, - 0x1c01f000, 0x1c01f000, 0x4933c857, 0xb13805a1, - 0x05000003, 0xb13805a0, 0x05e60372, 0x59303403, - 0x82180580, 0x00000086, 0x05e4030a, 0x82180580, - 0x00000087, 0x05e40307, 0x497a6205, 0x642a6203, - 0x1c01f000, 0x4933c857, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x05020008, 0x59300c03, 0x4807c857, - 0xb004048a, 0x059e1d05, 0xb0040481, 0x059c1d03, - 0x0c01f002, 0x1c01f000, 0x0010c8e7, 0x0010c8e4, - 0x0010c8f4, 0x0010c8e3, 0x0010c8e3, 0x0010c8e3, - 0x0010c8e3, 0x0010c8e3, 0x0010c8f4, 0x059dfcf7, - 0x497a6205, 0x64126203, 0x1c01f000, 0x497a6205, - 0x59325809, 0x832c0500, 0x00ff0000, 0x05000004, - 0x592c0c0e, 0x8c04051a, 0x05020003, 0x0005fe4e, - 0x0005f7dc, 0x0501f99f, 0x05fc07fd, 0x1c01f000, - 0x497a6205, 0x59cc0002, 0x90000530, 0x90000590, - 0x05f006dc, 0x5930001c, 0x80000540, 0x05000004, + 0x0000010d, 0x65265a0c, 0x480a5a0e, 0x480e5c0e, + 0x48125a0f, 0x48165c0f, 0x82080580, 0x00008014, + 0x05020054, 0x820c0580, 0x0000ffff, 0x05020051, + 0x90100586, 0x0502004f, 0x4d240000, 0x42024800, + 0x001124b6, 0x59240005, 0x5c024800, 0x05c9fbf5, + 0x05000009, 0x82000d00, 0x00ffff00, 0x05020006, + 0x82000c00, 0x001028fb, 0x50040800, 0x80040910, + 0x48065a10, 0x82000d00, 0x0000ffff, 0x48065c10, + 0x80000120, 0x48025a11, 0x59a8024c, 0x82001500, + 0x00003500, 0x480a5a12, 0x8c000502, 0x05000016, + 0x8c000506, 0x05000006, 0x90000d0a, 0x90040d8a, + 0x05020003, 0x64065c11, 0x0501f018, 0x8c00050a, + 0x05000006, 0x90000d22, 0x90040da2, 0x05020003, + 0x640e5c11, 0x0501f011, 0x8c000508, 0x05000006, + 0x90000d12, 0x90040d92, 0x05020003, 0x640a5c11, + 0x0501f00a, 0x05c9fbcb, 0x05020003, 0x64125c11, + 0x0501f006, 0x8c000506, 0x05000003, 0x64165c11, + 0x0501f002, 0x64025c11, 0x59a8005f, 0x48025c12, + 0x59a80060, 0x48025a13, 0x59c40801, 0x82040d00, + 0x00018000, 0x90040580, 0x05020003, 0x64025c13, + 0x0501f00c, 0x82040580, 0x00008000, 0x05020003, + 0x64065c13, 0x0501f007, 0x82040580, 0x00010000, + 0x05020003, 0x640e5c13, 0x0501f002, 0x64125c13, + 0x0501fc4a, 0x5c025800, 0x1c01f000, 0x5930080a, + 0x800409c0, 0x05000004, 0x58040403, 0x81440580, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x4933c857, + 0xb13805a1, 0x05000003, 0xb13805a0, 0x0502000c, + 0x5932680a, 0x59340200, 0x8c00050e, 0x05020002, + 0x497a6205, 0x5930001c, 0x80000540, 0x00080010, 0x497a601c, 0x0801f800, 0x1c01f000, 0x1c01f000, - 0x4933c857, 0x493bc857, 0xb13805a1, 0x05000006, - 0xb13805a0, 0x05e6032f, 0x59cc0002, 0x8c000526, - 0x0500000c, 0x59300403, 0x4803c857, 0xb0000589, - 0x059e0cce, 0x497a6205, 0x5930001c, 0x80000540, - 0x05000004, 0x497a601c, 0x0801f800, 0x1c01f000, - 0x1c01f000, 0x4933c857, 0x59300403, 0x82000d80, - 0x00000085, 0x05020007, 0x4a026403, 0x0000008b, - 0x642e6203, 0x42000800, 0x80000040, 0x0005f6ab, - 0x82000d80, 0x0000008b, 0x05020025, 0x4d3c0000, - 0x417a7800, 0x05adfa07, 0x5c027800, 0x42000000, - 0x0010e454, 0x0501feb3, 0x59325809, 0x812e59c0, - 0x05000006, 0x832c0500, 0x00ff0000, 0x05000003, - 0x60128000, 0x05fdfe55, 0x60443000, 0x0501fc50, - 0x05adfce3, 0x59240400, 0x8c00050a, 0x0502000a, - 0x41782800, 0x60103000, 0x60a68000, 0x05fdfe64, - 0x6406642c, 0x64126407, 0x64066403, 0x641e6203, - 0x1c01f000, 0x602c0800, 0x05c5fbab, 0x64066407, - 0x64066403, 0x64066203, 0x05d9f72b, 0x1c01f000, - 0x4933c857, 0x40000000, 0x40000000, 0x1c01f000, - 0x4933c857, 0x59300a03, 0x9004058e, 0x05000003, - 0x90040590, 0x05020019, 0x0501f975, 0x05edfeb9, - 0x59300203, 0x90000d89, 0x0500000b, 0x48026429, - 0x4a026403, 0x00000085, 0x59300416, 0x8400055a, - 0x8400055e, 0x48026416, 0x64266203, 0x64166407, - 0x641a6229, 0x5932680a, 0x59340200, 0x8c00050e, - 0x05020003, 0x59a8005d, 0x48026006, 0x42000800, - 0x80000040, 0x0005feab, 0x1c01f000, 0x4933c857, - 0x4c040000, 0x59300403, 0x90000d9e, 0x05020012, - 0x800000d0, 0x59300a18, 0x82040d00, 0x000000ff, - 0x80040540, 0x4803c857, 0x48026418, 0x4a026403, - 0x00000085, 0x64266203, 0x64166407, 0x64126229, - 0x59a8005d, 0x48026006, 0x42000800, 0x80000040, - 0x0005feab, 0x5c000800, 0x1c01f000, 0x4933c857, - 0x40000000, 0x40000000, 0x1c01f000, 0x59300416, - 0x8c00050c, 0x0502000a, 0x4933c857, 0x4803c857, - 0x8c000518, 0x05000006, 0x8c000512, 0x05f20586, - 0x0501f937, 0x0005fe4e, 0x0005ffdc, 0x1c01f000, - 0x591c0407, 0x4803c857, 0x90000c89, 0x0502100b, - 0x0c01f001, 0x0010c9a2, 0x0010c9a2, 0x0010c9a2, - 0x0010c9a4, 0x0010c9a2, 0x0010c9a4, 0x0010c9a4, - 0x0010c9a2, 0x0010c9a4, 0x80000580, 0x1c01f000, - 0x90000541, 0x1c01f000, 0x591c0407, 0x9000051f, - 0x90000586, 0x0500000a, 0x4803c857, 0x64ee6403, - 0x6426641c, 0x4a02621c, 0x00002a00, 0x64066203, - 0x42000800, 0x80000040, 0x0005f6ab, 0x4803c856, - 0x4c040000, 0x4c140000, 0x4d300000, 0x411e6000, - 0x0501f90f, 0x497a6205, 0x59300416, 0x4803c857, - 0x82000500, 0xffffadff, 0x48026416, 0x497a6405, - 0x5c026000, 0x059dffc1, 0x059c0c18, 0x5c002800, - 0x5c000800, 0x05011000, 0x912c0408, 0x4803c840, - 0x6443c842, 0x40000000, 0x05fd17ff, 0x4a025808, - 0x0000010d, 0x497a5800, 0x65165a0c, 0x491e580d, - 0x59300402, 0x48025c0b, 0x5930041b, 0x48025c0f, - 0x591c0416, 0x84000556, 0x48023c16, 0x591c180a, - 0x580c0403, 0x48025a0a, 0x580c0002, 0x82000500, - 0x00ffffff, 0x48025816, 0x59cc0404, 0x48025c17, - 0x497a5a0b, 0x4816580e, 0x48065a0f, 0x580c0013, - 0x82000500, 0xff000000, 0x80000120, 0x48025c14, - 0x0501faf1, 0x493a6403, 0x4d400000, 0x61168000, - 0x591c0202, 0x4c000000, 0x4d300000, 0x411e6000, - 0x05fdfb31, 0x5c026000, 0x5c000000, 0x48023a02, - 0x5c028000, 0x491e602a, 0x4932381e, 0x641a3c07, - 0x641e3a03, 0x497a3806, 0x497a3a05, 0x1c01f000, - 0x4933c857, 0x91380593, 0x0502000a, 0x59300403, - 0x4803c857, 0x82000d80, 0x00000085, 0x05000026, - 0x82000d80, 0x0000008b, 0x05000023, 0x059dfbd3, - 0x913805a7, 0x0502000a, 0x05ddfa5f, 0x4d2c0000, - 0x4d400000, 0x59325809, 0x60128000, 0x05fdfd77, - 0x5c028000, 0x5c025800, 0x1c01f000, 0x91380594, - 0x05fc07f6, 0xb13805a1, 0x05000009, 0xb13805a0, - 0x05000007, 0x83380580, 0x00000089, 0x05000004, - 0x83380580, 0x0000008a, 0x05e60216, 0x05ddfe9a, - 0x05e60214, 0x59300a03, 0x9004058e, 0x05fc069b, - 0x9004058a, 0x0500000c, 0x9004058c, 0x0500000a, - 0x059dfbb2, 0x05f1fe75, 0x05000005, 0x643a6203, - 0x59a8005e, 0x48026205, 0x1c01f000, 0x642a6203, - 0x1c01f000, 0x83380480, 0x00000093, 0x0502100b, - 0x83380480, 0x00000085, 0x05001008, 0x83380580, - 0x00000089, 0x05000008, 0x83380580, 0x0000008a, - 0x05000031, 0x059dfb9d, 0x493bc857, 0x4933c857, - 0x05e5f1f4, 0x4933c857, 0x4c340000, 0x05f1fe5b, - 0x0500000b, 0x59300416, 0x8c00051a, 0x05000008, - 0x641a6407, 0x59300429, 0x90000d8e, 0x05020002, - 0x60080000, 0x48026203, 0x0501f01d, 0x59300c16, - 0x4c040000, 0x41306800, 0x05e5f9b1, 0x5c000800, - 0x05000015, 0x48066416, 0x64066203, 0x647a6403, - 0x59cc0c07, 0x4806641b, 0x59cc0a07, 0x4806621b, + 0x4933c857, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x05e6015a, 0x59303403, 0x82180580, 0x00000086, + 0x05e400d5, 0x82180580, 0x00000087, 0x05e400d2, + 0x497a6205, 0x642a6203, 0x1c01f000, 0x4933c857, + 0xb13805a1, 0x05000003, 0xb13805a0, 0x05020008, + 0x59300c03, 0x4807c857, 0xb004048a, 0x059a1df6, + 0xb0040481, 0x05981df4, 0x0c01f002, 0x1c01f000, + 0x0010d031, 0x0010d02e, 0x0010d03e, 0x0010d02d, + 0x0010d02d, 0x0010d02d, 0x0010d02d, 0x0010d02d, + 0x0010d03e, 0x0599fde8, 0x497a6205, 0x64126203, + 0x1c01f000, 0x497a6205, 0x59325809, 0x832c0500, + 0x00ff0000, 0x05000004, 0x592c0c0e, 0x8c04051a, + 0x05020003, 0x0005fe84, 0x0009f010, 0x0501f99f, + 0x05fc07fd, 0x1c01f000, 0x497a6205, 0x59cc0002, + 0x90000530, 0x90000590, 0x05f0052a, 0x5930001c, + 0x80000540, 0x05000004, 0x497a601c, 0x0801f800, + 0x1c01f000, 0x1c01f000, 0x4933c857, 0x493bc857, + 0xb13805a1, 0x05000006, 0xb13805a0, 0x05e60117, + 0x59cc0002, 0x8c000526, 0x0500000c, 0x59300403, + 0x4803c857, 0xb0000589, 0x059a0dbf, 0x497a6205, + 0x5930001c, 0x80000540, 0x05000004, 0x497a601c, + 0x0801f800, 0x1c01f000, 0x1c01f000, 0x4933c857, + 0x59300403, 0x82000d80, 0x00000085, 0x05020007, + 0x4a026403, 0x0000008b, 0x642e6203, 0x42000800, + 0x80000040, 0x0005f6e2, 0x82000d80, 0x0000008b, + 0x05020025, 0x4d3c0000, 0x417a7800, 0x05a9fb54, + 0x5c027800, 0x42000000, 0x001123f8, 0x0501fee4, + 0x59325809, 0x812e59c0, 0x05000006, 0x832c0500, + 0x00ff0000, 0x05000003, 0x60128000, 0x05fdfe50, + 0x60443000, 0x0501fc63, 0x05a9fe35, 0x59240400, + 0x8c00050a, 0x0502000a, 0x41782800, 0x60103000, + 0x60a68000, 0x05fdfe61, 0x6406642c, 0x64126407, + 0x64066403, 0x641e6203, 0x1c01f000, 0x602c0800, + 0x05c1fe74, 0x64066407, 0x64066403, 0x64066203, + 0x05d9f49a, 0x1c01f000, 0x4933c857, 0x40000000, + 0x40000000, 0x1c01f000, 0x4933c857, 0x59300a03, + 0x9004058e, 0x05000003, 0x90040590, 0x05020019, + 0x0501f975, 0x05edfce1, 0x59300203, 0x90000d89, + 0x0500000b, 0x48026429, 0x4a026403, 0x00000085, + 0x59300416, 0x8400055a, 0x8400055e, 0x48026416, + 0x64266203, 0x64166407, 0x641a6229, 0x5932680a, + 0x59340200, 0x8c00050e, 0x05020003, 0x59a80060, + 0x48026006, 0x42000800, 0x80000040, 0x0005fee2, + 0x1c01f000, 0x4933c857, 0x4c040000, 0x59300403, + 0x90000d9e, 0x05020012, 0x800000d0, 0x59300a18, + 0x82040d00, 0x000000ff, 0x80040540, 0x4803c857, + 0x48026418, 0x4a026403, 0x00000085, 0x64266203, + 0x64166407, 0x64126229, 0x59a80060, 0x48026006, + 0x42000800, 0x80000040, 0x0005fee2, 0x5c000800, + 0x1c01f000, 0x4933c857, 0x40000000, 0x40000000, + 0x1c01f000, 0x59300416, 0x8c00050c, 0x0502000a, + 0x4933c857, 0x4803c857, 0x8c000518, 0x05000006, + 0x8c000512, 0x05f203d5, 0x0501f937, 0x0005fe84, + 0x0009f810, 0x1c01f000, 0x591c0407, 0x4803c857, + 0x90000c89, 0x0502100b, 0x0c01f001, 0x0010d0ec, + 0x0010d0ec, 0x0010d0ec, 0x0010d0ee, 0x0010d0ec, + 0x0010d0ee, 0x0010d0ee, 0x0010d0ec, 0x0010d0ee, + 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, + 0x591c0407, 0x9000051f, 0x90000586, 0x0500000a, + 0x4803c857, 0x64ee6403, 0x6426641c, 0x4a02621c, + 0x00002a00, 0x64066203, 0x42000800, 0x80000040, + 0x0005f6e2, 0x4803c856, 0x4c040000, 0x4c140000, + 0x4d300000, 0x411e6000, 0x0501f90f, 0x497a6205, + 0x59300416, 0x4803c857, 0x82000500, 0xffffadff, + 0x48026416, 0x497a6405, 0x5c026000, 0x059df8ae, + 0x05980d09, 0x5c002800, 0x5c000800, 0x05011000, + 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, + 0x05fd17ff, 0x4a025808, 0x0000010d, 0x497a5800, + 0x65165a0c, 0x491e580d, 0x59300402, 0x48025c0b, + 0x5930041b, 0x48025c0f, 0x591c0416, 0x84000556, + 0x48023c16, 0x591c180a, 0x580c0403, 0x48025a0a, + 0x580c0002, 0x82000500, 0x00ffffff, 0x48025816, + 0x59cc0404, 0x48025c17, 0x497a5a0b, 0x4816580e, + 0x48065a0f, 0x580c0013, 0x82000500, 0xff000000, + 0x80000120, 0x48025c14, 0x0501fb04, 0x493a6403, + 0x4d400000, 0x61168000, 0x591c0202, 0x4c000000, + 0x4d300000, 0x411e6000, 0x05fdfae4, 0x5c026000, + 0x5c000000, 0x48023a02, 0x5c028000, 0x491e602a, + 0x4932381e, 0x641a3c07, 0x641e3a03, 0x497a3806, + 0x497a3a05, 0x1c01f000, 0x4933c857, 0x91380593, + 0x0502000a, 0x59300403, 0x4803c857, 0x82000d80, + 0x00000085, 0x05000026, 0x82000d80, 0x0000008b, + 0x05000023, 0x0599fcc4, 0x913805a7, 0x0502000a, + 0x05d9ffd3, 0x4d2c0000, 0x4d400000, 0x59325809, + 0x60128000, 0x05fdfd72, 0x5c028000, 0x5c025800, + 0x1c01f000, 0x91380594, 0x05fc07f6, 0xb13805a1, + 0x05000009, 0xb13805a0, 0x05000007, 0x83380580, + 0x00000089, 0x05000004, 0x83380580, 0x0000008a, + 0x05e207fe, 0x05ddfc0e, 0x05e207fc, 0x59300a03, + 0x9004058e, 0x05fc069b, 0x9004058a, 0x0500000c, + 0x9004058c, 0x0500000a, 0x0599fca3, 0x05f1fcc3, + 0x05000005, 0x643a6203, 0x59a80061, 0x48026205, + 0x1c01f000, 0x642a6203, 0x1c01f000, 0x83380480, + 0x00000093, 0x0502100b, 0x83380480, 0x00000085, + 0x05001008, 0x83380580, 0x00000089, 0x05000008, + 0x83380580, 0x0000008a, 0x05000031, 0x0599fc8e, + 0x493bc857, 0x4933c857, 0x05e1f7dc, 0x4933c857, + 0x4c340000, 0x05f1fca9, 0x0500000b, 0x59300416, + 0x8c00051a, 0x05000008, 0x641a6407, 0x59300429, + 0x90000d8e, 0x05020002, 0x60080000, 0x48026203, + 0x0501f01d, 0x59300c16, 0x4c040000, 0x41306800, + 0x05e1ff7c, 0x5c000800, 0x05000015, 0x48066416, + 0x64066203, 0x647a6403, 0x59cc0c07, 0x4806641b, + 0x59cc0a07, 0x4806621b, 0x5834080a, 0x4806600a, + 0x5834081d, 0x4806601d, 0x05f1fc8c, 0x05000004, + 0x59300416, 0x84000550, 0x48026416, 0x64126407, + 0x42000800, 0x80000040, 0x0005fee2, 0x40366000, + 0x0009f810, 0x5c006800, 0x1c01f000, 0x4933c857, + 0x59300416, 0x8c00051a, 0x0502001a, 0x59300418, + 0x82000d00, 0x0000ff00, 0x900409c0, 0x9004059e, + 0x05020014, 0x4c340000, 0x41306800, 0x05e1ff55, + 0x0500000e, 0x493a6403, 0x64066203, 0x64126407, + 0x5834041b, 0x4802641b, 0x5834021b, 0x4802621b, 0x5834080a, 0x4806600a, 0x5834081d, 0x4806601d, - 0x05f1fe3e, 0x05000004, 0x59300416, 0x84000550, - 0x48026416, 0x64126407, 0x42000800, 0x80000040, - 0x0005feab, 0x40366000, 0x0005ffdc, 0x5c006800, - 0x1c01f000, 0x4933c857, 0x59300416, 0x8c00051a, - 0x0502001a, 0x59300418, 0x82000d00, 0x0000ff00, - 0x900409c0, 0x9004059e, 0x05020014, 0x4c340000, - 0x41306800, 0x05e5f98a, 0x0500000e, 0x493a6403, - 0x64066203, 0x64126407, 0x5834041b, 0x4802641b, - 0x5834021b, 0x4802621b, 0x5834080a, 0x4806600a, - 0x5834081d, 0x4806601d, 0x05f1fe09, 0x05d9fdea, - 0x40366000, 0x5c006800, 0x0005f7dc, 0x5930080a, - 0x58040200, 0x8c00051a, 0x059e0c13, 0x1c01f000, - 0x05c5fe2e, 0x05000019, 0x640a6203, 0x59300416, - 0x84000558, 0x48026416, 0x8c000512, 0x05000004, - 0x59a8005e, 0x48026205, 0x0501f006, 0x59a8085e, - 0x59a8005c, 0x80040400, 0x9000041e, 0x48026205, - 0x5930000a, 0x90000c11, 0x50040000, 0x80000540, - 0x05000003, 0x90000c00, 0x05fdf7fc, 0x45300800, - 0x497a6000, 0x90000541, 0x1c01f000, 0x82100500, - 0xfffffeef, 0x05020017, 0x4d2c0000, 0x4937c857, - 0x59340811, 0x91341411, 0x800409c0, 0x0500000c, - 0x40040000, 0x81300580, 0x05000004, 0x90041400, - 0x58040800, 0x05fdf7f9, 0x59300800, 0x497a6000, - 0x44041000, 0x0005fe4e, 0x0501f002, 0x4933c857, - 0x5c025800, 0x492e6009, 0x0005fe4e, 0x0005f7dc, - 0x492fc857, 0x641a5a0a, 0x0001f382, 0x4c340000, - 0x5930000a, 0x800001c0, 0x0500000f, 0x90006c11, - 0x50340000, 0x80000540, 0x05000009, 0x81300580, - 0x05000004, 0x50340000, 0x90006c00, 0x05fdf7f9, - 0x59300000, 0x44006800, 0x497a6000, 0x5c006800, - 0x1c01f000, 0x59300c07, 0x90040585, 0x05fc07fc, - 0x90040591, 0x05fc07fa, 0x90040586, 0x05fc07f8, - 0x90040581, 0x05fc07f6, 0x059dfaf8, 0x4c340000, - 0x0501f81a, 0x0502000f, 0x90006c11, 0x50340000, - 0x80000540, 0x05000009, 0x81300580, 0x05000004, - 0x50340000, 0x90006c00, 0x05fdf7f9, 0x59300000, - 0x44006800, 0x497a6000, 0x5c006800, 0x1c01f000, - 0x59300c07, 0x90040585, 0x05fc07fc, 0x90040591, - 0x05fc07fa, 0x90040586, 0x05fc07f8, 0x90040581, - 0x05fc07f6, 0x059dfadd, 0x4c5c0000, 0x4c600000, - 0x5930000a, 0x800001c0, 0x0500000c, 0x5800bc03, - 0x825cbc00, 0x0010d400, 0x505cb800, 0x805cb9c0, - 0x05000006, 0x805cc580, 0x05020004, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x4933c857, 0x4803c857, - 0x485fc857, 0x905cbd41, 0x05fdf7f9, 0x4933c857, - 0x4c080000, 0x4c0c0000, 0x4c580000, 0x59a81046, - 0x59cc1807, 0x820c1d00, 0x00ffffff, 0x800c0110, - 0x80083580, 0x0502000c, 0x91cc1408, 0x6008b000, - 0x5930000a, 0x90001c06, 0x05e9fd25, 0x05020006, - 0x91cc140a, 0x6008b000, 0x5930000a, 0x90001c08, - 0x05e9fd1f, 0x5c00b000, 0x5c001800, 0x5c001000, - 0x1c01f000, 0x4933c856, 0x493a6403, 0x05c1feaa, - 0x05adf195, 0x4933c857, 0x492fc857, 0x5930080a, - 0x58040200, 0x8c00051e, 0x05000004, 0x592c020c, - 0x84000558, 0x48025a0c, 0x1c01f000, 0x59e0180f, - 0x599c0413, 0x800c1000, 0x80080580, 0x05020002, - 0x41781000, 0x59e00010, 0x59e00810, 0x80040d80, - 0x05fe07fd, 0x80080580, 0x05000018, 0x4c080000, - 0x80102040, 0x0500000e, 0x599c0413, 0x80081000, + 0x05f1fc57, 0x05d9fb59, 0x40366000, 0x5c006800, + 0x0009f010, 0x5930080a, 0x58040200, 0x8c00051a, + 0x059a0cf8, 0x1c01f000, 0x05c5f956, 0x05000019, + 0x640a6203, 0x59300416, 0x84000558, 0x48026416, + 0x8c000512, 0x05000004, 0x59a80061, 0x48026205, + 0x0501f006, 0x59a80861, 0x59a8005f, 0x80040400, + 0x9000041e, 0x48026205, 0x5930000a, 0x90000c11, + 0x50040000, 0x80000540, 0x05000003, 0x90000c00, + 0x05fdf7fc, 0x45300800, 0x497a6000, 0x90000541, + 0x1c01f000, 0x82100500, 0xfffffeef, 0x05020017, + 0x4d2c0000, 0x4937c857, 0x59340811, 0x91341411, + 0x800409c0, 0x0500000c, 0x40040000, 0x81300580, + 0x05000004, 0x90041400, 0x58040800, 0x05fdf7f9, + 0x59300800, 0x497a6000, 0x44041000, 0x0005fe84, + 0x0501f002, 0x4933c857, 0x5c025800, 0x492e6009, + 0x0005fe84, 0x0009f010, 0x492fc857, 0x641a5a0a, + 0x0001f3a8, 0x4c340000, 0x5930000a, 0x800001c0, + 0x0500000f, 0x90006c11, 0x50340000, 0x80000540, + 0x05000009, 0x81300580, 0x05000004, 0x50340000, + 0x90006c00, 0x05fdf7f9, 0x59300000, 0x44006800, + 0x497a6000, 0x5c006800, 0x1c01f000, 0x59300c07, + 0x90040585, 0x05fc07fc, 0x90040591, 0x05fc07fa, + 0x90040586, 0x05fc07f8, 0x90040581, 0x05fc07f6, + 0x0599fbe9, 0x4c340000, 0x0501f81a, 0x0502000f, + 0x90006c11, 0x50340000, 0x80000540, 0x05000009, + 0x81300580, 0x05000004, 0x50340000, 0x90006c00, + 0x05fdf7f9, 0x59300000, 0x44006800, 0x497a6000, + 0x5c006800, 0x1c01f000, 0x59300c07, 0x90040585, + 0x05fc07fc, 0x90040591, 0x05fc07fa, 0x90040586, + 0x05fc07f8, 0x90040581, 0x05fc07f6, 0x0599fbce, + 0x4c5c0000, 0x4c600000, 0x5930000a, 0x800001c0, + 0x0500000c, 0x5800bc03, 0x825cbc00, 0x0010db80, + 0x505cb800, 0x805cb9c0, 0x05000006, 0x805cc580, + 0x05020004, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x4933c857, 0x4803c857, 0x485fc857, 0x905cbd41, + 0x05fdf7f9, 0x4933c857, 0x4c080000, 0x4c0c0000, + 0x4c580000, 0x59a81049, 0x59cc1807, 0x820c1d00, + 0x00ffffff, 0x800c0110, 0x80083580, 0x0502000c, + 0x91cc1408, 0x6008b000, 0x5930000a, 0x90001c06, + 0x05e9fb20, 0x05020006, 0x91cc140a, 0x6008b000, + 0x5930000a, 0x90001c08, 0x05e9fb1a, 0x5c00b000, + 0x5c001800, 0x5c001000, 0x1c01f000, 0x4933c856, + 0x493a6403, 0x05c1f957, 0x05a9f2e3, 0x4933c857, + 0x492fc857, 0x5930080a, 0x58040200, 0x8c00051e, + 0x05000004, 0x592c020c, 0x84000558, 0x48025a0c, + 0x1c01f000, 0x59e0180f, 0x599c0413, 0x800c1000, 0x80080580, 0x05020002, 0x41781000, 0x59e00010, 0x59e00810, 0x80040d80, 0x05fe07fd, 0x80080580, - 0x05fe07f4, 0x5c001000, 0x0501f008, 0x599c0814, - 0x599c1015, 0x800c00cc, 0x80040c00, 0x90081440, - 0x5c001800, 0x90000541, 0x4803c857, 0x1c01f000, - 0x59300203, 0x4933c857, 0x4937c857, 0x493bc857, - 0x4803c857, 0x90003491, 0x059e1a74, 0x0c01f001, - 0x0010cb79, 0x0010cc6e, 0x0010cb79, 0x0010cb79, - 0x0010cb79, 0x0010cb79, 0x0010cb79, 0x0010cbe2, - 0x0010cb7a, 0x0010cb79, 0x0010cb79, 0x0010cb79, - 0x0010cb79, 0x0010cb79, 0x0010cccb, 0x0010cb79, - 0x0010cb79, 0x059dfa61, 0xb138058c, 0x059e0a5f, - 0x05c5fd4e, 0x05020020, 0x59a80a49, 0x5932481d, - 0x59240200, 0x82000500, 0x000000e0, 0x82000580, - 0x00000080, 0x05000018, 0x8c040512, 0x05000028, - 0x59cc0806, 0x82040d00, 0xff000000, 0x82040580, - 0x03000000, 0x0500001c, 0x82040580, 0x50000000, - 0x05000004, 0x82040580, 0x52000000, 0x000607dc, - 0x83340580, 0x00110210, 0x05000005, 0x4d3c0000, - 0x417a7800, 0x05a9ff93, 0x5c027800, 0x64066403, - 0x0501f010, 0x59cc0806, 0x82040d00, 0xff000000, - 0x82040580, 0x03000000, 0x05000007, 0x82040580, - 0x50000000, 0x05000004, 0x82040580, 0x52000000, - 0x000607dc, 0x64266403, 0x6426641c, 0x6402621c, - 0x64126407, 0x64066203, 0x05d9f4c3, 0x59240400, - 0x8c00050a, 0x05020020, 0x0501fd7e, 0x0502001e, - 0x59cc0806, 0x4807c857, 0x82040d00, 0xff000000, - 0x82040580, 0x03000000, 0x05000013, 0x82040580, - 0x20000000, 0x05000010, 0x82040580, 0x21000000, - 0x0500000d, 0x82040580, 0x24000000, 0x0500000a, - 0x82040580, 0x50000000, 0x05000007, 0x82040580, - 0x52000000, 0x05000004, 0x82040580, 0x05000000, - 0x05020007, 0x9c0431c0, 0x611a8000, 0x60042800, - 0x05fdfbcf, 0x0501f913, 0x059c0a08, 0x61442000, - 0x05e5f959, 0x59cc0000, 0x82000500, 0x00ffffff, - 0x82000580, 0x00ffffff, 0x05000004, 0x641e6203, - 0x493a6403, 0x1c01f000, 0x59325819, 0x812e59c0, - 0x059e0dbb, 0x0005f7dc, 0x4d2c0000, 0x4c580000, - 0x4c500000, 0x4c540000, 0x4dcc0000, 0x41385000, - 0xb13805a0, 0x0500007f, 0xb13805a1, 0x0500007d, - 0xb1380594, 0x059e09ed, 0x59325809, 0x592c0c0f, - 0x82040d00, 0x0000e000, 0x82040580, 0x00002000, - 0x05020066, 0x59300819, 0x800409c0, 0x05000015, - 0x58041408, 0x42039800, 0x00111772, 0x9008049c, - 0x05001002, 0x606c1000, 0x41cca800, 0x9004a409, - 0x90080490, 0x05021004, 0x4008b000, 0x0501fca4, - 0x0501f008, 0x80001000, 0x603cb000, 0x0501fca0, - 0x58040801, 0x800409c0, 0x05fe07f5, 0x059df9cf, - 0x83340580, 0x00110210, 0x0500004c, 0x59344c00, + 0x05000018, 0x4c080000, 0x80102040, 0x0500000e, + 0x599c0413, 0x80081000, 0x80080580, 0x05020002, + 0x41781000, 0x59e00010, 0x59e00810, 0x80040d80, + 0x05fe07fd, 0x80080580, 0x05fe07f4, 0x5c001000, + 0x0501f008, 0x599c0814, 0x599c1015, 0x800c00cc, + 0x80040c00, 0x90081440, 0x5c001800, 0x90000541, + 0x4803c857, 0x1c01f000, 0x59300203, 0x4933c857, + 0x4937c857, 0x493bc857, 0x4803c857, 0x90003491, + 0x059a1b65, 0x0c01f001, 0x0010d2c3, 0x0010d3cb, + 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, + 0x0010d2c3, 0x0010d32d, 0x0010d2c4, 0x0010d2c3, + 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, + 0x0010d428, 0x0010d2c3, 0x0010d2c3, 0x0599fb52, + 0xb138058c, 0x059a0b50, 0x05c5f876, 0x05020020, + 0x59a80a4c, 0x5932481d, 0x59240200, 0x82000500, + 0x000000e0, 0x82000580, 0x00000080, 0x05000018, + 0x8c040512, 0x05000028, 0x59cc0806, 0x82040d00, + 0xff000000, 0x82040580, 0x03000000, 0x0500001c, + 0x82040580, 0x50000000, 0x05000004, 0x82040580, + 0x52000000, 0x000a0010, 0x83340580, 0x001141b4, + 0x05000005, 0x4d3c0000, 0x417a7800, 0x05a9f8e0, + 0x5c027800, 0x64066403, 0x0501f010, 0x59cc0806, + 0x82040d00, 0xff000000, 0x82040580, 0x03000000, + 0x05000007, 0x82040580, 0x50000000, 0x05000004, + 0x82040580, 0x52000000, 0x000a0010, 0x64266403, + 0x6426641c, 0x6402621c, 0x64126407, 0x64066203, + 0x05d9f232, 0x59240400, 0x8c00050a, 0x05020020, + 0x0501fdaf, 0x0502001e, 0x59cc0806, 0x4807c857, + 0x82040d00, 0xff000000, 0x82040580, 0x03000000, + 0x05000013, 0x82040580, 0x20000000, 0x05000010, + 0x82040580, 0x21000000, 0x0500000d, 0x82040580, + 0x24000000, 0x0500000a, 0x82040580, 0x50000000, + 0x05000007, 0x82040580, 0x52000000, 0x05000004, + 0x82040580, 0x05000000, 0x05020007, 0x9c0431c0, + 0x611a8000, 0x60042800, 0x05fdfbcc, 0x0501f92a, + 0x05980af9, 0x61442000, 0x05e1ff41, 0x0502000a, + 0x59cc0000, 0x82000500, 0x00ffffff, 0x82000580, + 0x00ffffff, 0x00080010, 0x641e6203, 0x493a6403, + 0x1c01f000, 0x42000000, 0x001123ec, 0x0501fc2c, + 0x0009f010, 0x4d2c0000, 0x4c580000, 0x4c500000, + 0x4c540000, 0x4dcc0000, 0x41385000, 0xb13805a0, + 0x05000091, 0xb13805a1, 0x0500008f, 0xb1380594, + 0x059a0add, 0x59325809, 0x592c0c0f, 0x82040d00, + 0x0000e000, 0x82040580, 0x00002000, 0x0502007d, + 0x83340580, 0x001141b4, 0x0500007a, 0x59344c00, 0x592c0c0d, 0x4807c857, 0x4827c857, 0x82040d00, 0x000000ff, 0x90040583, 0x0500001d, 0x90040585, - 0x05000021, 0x900405a0, 0x0500002c, 0xb0040592, - 0x05000036, 0xb0040590, 0x05000036, 0x900405a1, - 0x05000003, 0x900405a4, 0x05020038, 0x82240500, + 0x05000042, 0x900405a0, 0x0500004b, 0xb0040592, + 0x05000064, 0xb0040590, 0x05000064, 0x900405a1, + 0x05000003, 0x900405a4, 0x05020066, 0x82240500, 0x0000ff00, 0x82000580, 0x00000700, 0x05000005, - 0x60240800, 0x05c5f8c4, 0x60305000, 0x0501f02f, + 0x60240800, 0x05c1fba3, 0x60305000, 0x0501f05d, 0x64c65a0a, 0x64265811, 0x59340400, 0x48025812, - 0x0001fb82, 0x05e1ff9f, 0x0501f036, 0x41780800, - 0x05c5f9a2, 0x600c0800, 0x05c5f8b7, 0x60205000, - 0x0501f022, 0x59cc3800, 0x821c3d00, 0x00ffffff, - 0x4c1c0000, 0x05adf9eb, 0x5c003800, 0x0502001b, - 0x59cc0007, 0x05d5f947, 0x05020018, 0x4a026c00, - 0x00000707, 0x0501f015, 0x82240500, 0x0000ff00, - 0x82000580, 0x00000700, 0x05fc07e2, 0x82240500, - 0x000000ff, 0x90000589, 0x05fc07de, 0x05c5f9fc, - 0x60285000, 0x0501f009, 0x60385000, 0x0501f002, - 0x60405000, 0x82240500, 0x0000ff00, 0x82000580, - 0x00000700, 0x05fc07d3, 0x482a6403, 0x64066203, - 0x592c0011, 0x48026013, 0x497a6015, 0x59a8005d, - 0x48026006, 0x417a7800, 0x05d9fc0f, 0x59325819, - 0x812e59c0, 0x05000003, 0x059dfd35, 0x497a6019, - 0x5c039800, 0x5c00a800, 0x5c00a000, 0x5c00b000, - 0x5c025800, 0x1c01f000, 0x4d2c0000, 0x59325809, - 0x91380593, 0x05020038, 0x492fc857, 0x59300c03, - 0xb0040594, 0x0500002a, 0x90040590, 0x05000025, - 0x9004058e, 0x05000023, 0x59341400, 0x82081d00, - 0x0000ff00, 0x82081500, 0x000000ff, 0x90040588, - 0x0500000d, 0x9004058c, 0x05000014, 0x9004058a, - 0x059e0956, 0x820c0580, 0x00000700, 0x05000018, - 0x90080589, 0x05000016, 0x60180800, 0x05c5f862, - 0x0501f013, 0x592c0c0f, 0x8c040514, 0x05000005, - 0x90080583, 0x0502000e, 0x05c5fa00, 0x05fdf7f7, - 0x600c0000, 0x0501f002, 0x60240000, 0x80080580, - 0x05020007, 0x60100800, 0x05c5f853, 0x0501f004, - 0x59340200, 0x8400051a, 0x48026a00, 0x05f1fbff, - 0x05000005, 0x59a8005e, 0x48026006, 0x643a6203, - 0x0501f025, 0x64025a0a, 0x0001fb82, 0x0005ffdc, - 0x0501f021, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05020008, 0x5c025800, 0x05ddfc0b, 0x05e20785, - 0x59300203, 0x9000058e, 0x05000019, 0x059df927, - 0x913805a7, 0x05000009, 0x91380594, 0x059e0923, - 0x492fc857, 0x05d9ffb0, 0x60c68000, 0x60100800, - 0x61fc1001, 0x0501f006, 0x492fc857, 0x05d9ffaa, - 0x60c68000, 0x60100800, 0x60401000, 0x49425a0a, - 0x48065811, 0x480a5812, 0x0001fb82, 0x05c5ffa9, - 0x05e1ff08, 0x5c025800, 0x1c01f000, 0x4933c857, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05020009, - 0x4d2c0000, 0x59325809, 0x812e59c0, 0x05000003, - 0x64025a0a, 0x0001fb82, 0x0005ffdc, 0x5c025800, - 0x1c01f000, 0x492fc857, 0x42007000, 0x000211a7, - 0x58380806, 0x492c7006, 0x800409c0, 0x05020003, - 0x492c7007, 0x0001f030, 0x492c0800, 0x1c01f000, - 0x4d2c0000, 0x4c580000, 0x4c500000, 0x4c540000, - 0x4933c857, 0x4937c857, 0x59cc0806, 0x4807c857, - 0x82040d00, 0xff000000, 0x82040580, 0x03000000, - 0x0500000d, 0x82040580, 0x05000000, 0x0500000a, - 0x82040580, 0x21000000, 0x05000027, 0x82040580, - 0x24000000, 0x05000024, 0x82040580, 0x20000000, - 0x05020025, 0x059dfc85, 0x05000023, 0x492fc857, - 0x492e6019, 0x59a8b0b6, 0x9058b41b, 0x8258b500, - 0xfffffffc, 0x8058b104, 0x485a5c08, 0x412c7800, - 0x41cca000, 0x90580490, 0x05021004, 0x912cac09, - 0x0501fb9b, 0x0501f010, 0x40580800, 0x603cb000, - 0x912cac09, 0x0501fb96, 0x9004b48f, 0x059dfc6f, - 0x05000004, 0x492c7801, 0x412c7800, 0x05fdf7f2, - 0x59325819, 0x059dfc82, 0x497a6019, 0x80000580, - 0x0501f005, 0x59340200, 0x84000554, 0x48026a00, - 0x90000541, 0x5c00a800, 0x5c00a000, 0x5c00b000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x492fc857, - 0x4d2c0000, 0x59300a03, 0x90040587, 0x05020006, - 0x59325819, 0x812e59c0, 0x059e0c6d, 0x0005ffdc, - 0x0501f02d, 0x9004058e, 0x05000023, 0x90040581, - 0x059e08a6, 0x05d9ffde, 0x4df00000, 0x598c000b, + 0x0001fba8, 0x05e1fd80, 0x0501f05f, 0x05011000, + 0x4a03c840, 0x00115716, 0x646fc842, 0x42039800, + 0x00115716, 0x05011000, 0x5930081a, 0x5930120c, + 0x59301c0c, 0x5930200d, 0x48079801, 0x480b9a07, + 0x480f9a09, 0x48139808, 0x5930000e, 0x5930080f, + 0x59301010, 0x59301811, 0x59302012, 0x4803980a, + 0x4807980b, 0x480b980c, 0x480f980d, 0x4813980e, + 0x59300013, 0x59300814, 0x59301015, 0x59301a16, + 0x48039813, 0x48079814, 0x480b9817, 0x480f9a18, + 0x41780800, 0x05c1fcb3, 0x600c0800, 0x05c1fb75, + 0x60205000, 0x0501f02f, 0x59303819, 0x4c1c0000, + 0x05a9fb34, 0x5c003800, 0x0502002a, 0x5930000c, + 0x05d1fde4, 0x05020027, 0x4a026c00, 0x00000707, + 0x0501f024, 0x82240500, 0x0000ff00, 0x82000580, + 0x00000700, 0x05fc07c3, 0x82240500, 0x000000ff, + 0x90000589, 0x05fc07bf, 0x05011000, 0x4a03c840, + 0x00115716, 0x642fc842, 0x42039800, 0x00115716, + 0x05011000, 0x5930081a, 0x5930100c, 0x59301a0d, + 0x5930240d, 0x48079801, 0x480b9806, 0x480f9a07, + 0x48139a0a, 0x05c1fd00, 0x60285000, 0x0501f009, + 0x60385000, 0x0501f002, 0x60405000, 0x82240500, + 0x0000ff00, 0x82000580, 0x00000700, 0x05fc07a5, + 0x482a6403, 0x64066203, 0x592c0011, 0x48026013, + 0x497a6015, 0x59a80060, 0x48026006, 0x417a7800, + 0x05d9f966, 0x5c039800, 0x5c00a800, 0x5c00a000, + 0x5c00b000, 0x5c025800, 0x1c01f000, 0x4d2c0000, + 0x59325809, 0x91380593, 0x05020038, 0x492fc857, + 0x59300c03, 0xb0040594, 0x0500002a, 0x90040590, + 0x05000025, 0x9004058e, 0x05000023, 0x59341400, + 0x82081d00, 0x0000ff00, 0x82081500, 0x000000ff, + 0x90040588, 0x0500000d, 0x9004058c, 0x05000014, + 0x9004058a, 0x059a0a34, 0x820c0580, 0x00000700, + 0x05000018, 0x90080589, 0x05000016, 0x60180800, + 0x05c1fb18, 0x0501f013, 0x592c0c0f, 0x8c040514, + 0x05000005, 0x90080583, 0x0502000e, 0x05c1fd09, + 0x05fdf7f7, 0x600c0000, 0x0501f002, 0x60240000, + 0x80080580, 0x05020007, 0x60100800, 0x05c1fb09, + 0x0501f004, 0x59340200, 0x8400051a, 0x48026a00, + 0x05f1fa3a, 0x05000005, 0x59a80061, 0x48026006, + 0x643a6203, 0x0501f025, 0x64025a0a, 0x0001fba8, + 0x0009f810, 0x0501f021, 0xb13805a1, 0x05000003, + 0xb13805a0, 0x05020008, 0x5c025800, 0x05ddf96c, + 0x05e2055a, 0x59300203, 0x9000058e, 0x05000019, + 0x0599fa05, 0x913805a7, 0x05000009, 0x91380594, + 0x059a0a01, 0x492fc857, 0x05d9fd11, 0x60c68000, + 0x60100800, 0x61fc1001, 0x0501f006, 0x492fc857, + 0x05d9fd0b, 0x60c68000, 0x60100800, 0x60401000, + 0x49425a0a, 0x48065811, 0x480a5812, 0x0001fba8, + 0x05c5fb21, 0x05e1fcc0, 0x5c025800, 0x1c01f000, + 0x4933c857, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x05020009, 0x4d2c0000, 0x59325809, 0x812e59c0, + 0x05000003, 0x64025a0a, 0x0001fba8, 0x0009f810, + 0x5c025800, 0x1c01f000, 0x492fc857, 0x0501fa52, + 0x0502000c, 0x42007000, 0x000211e8, 0x58380806, + 0x492c7006, 0x800409c0, 0x05020004, 0x492c7007, + 0x0001f838, 0x0501f002, 0x492c0800, 0x80000580, + 0x1c01f000, 0x4933c857, 0x4937c857, 0x59cc0000, + 0x82000500, 0x00ffffff, 0x48026019, 0x59cc0001, + 0x82000500, 0x00ffffff, 0x4802601a, 0x59cc0806, + 0x4807c857, 0x82040d00, 0xff000000, 0x82040580, + 0x03000000, 0x05000014, 0x82040580, 0x05000000, + 0x0500002a, 0x82040580, 0x21000000, 0x05000029, + 0x82040580, 0x24000000, 0x05000026, 0x82040580, + 0x20000000, 0x05020027, 0x59cc0006, 0x59cc0a07, + 0x59cc120a, 0x4802600c, 0x4806620d, 0x480a640d, + 0x0501f01c, 0x59cc0207, 0x59cc0a09, 0x59cc1008, + 0x4802620c, 0x4806640c, 0x480a600d, 0x59cc000a, + 0x59cc080b, 0x59cc100c, 0x4802600e, 0x4806600f, + 0x480a6010, 0x59cc000d, 0x59cc080e, 0x59cc1013, + 0x48026011, 0x48066012, 0x480a6013, 0x59cc0014, + 0x59cc0817, 0x59cc1218, 0x48026014, 0x48066015, + 0x480a6216, 0x0501f003, 0x59cc0007, 0x4802600c, + 0x59340200, 0x84000554, 0x48026a00, 0x90000541, + 0x1c01f000, 0x4933c857, 0x492fc857, 0x4d2c0000, + 0x59300a03, 0x90040587, 0x05020003, 0x0009f810, + 0x0501f02a, 0x9004058e, 0x05000023, 0x90040581, + 0x059a0981, 0x05d9fd3c, 0x4df00000, 0x598c000b, 0x81300580, 0x05020010, 0x59300004, 0x8c000520, 0x05000004, 0x84000520, 0x48026004, 0x0501f011, - 0x42001000, 0x0010e387, 0x50081000, 0x58080002, - 0x82000580, 0x00000100, 0x05020009, 0x05ddfac9, - 0x05020018, 0x59300004, 0x8c000520, 0x05000005, - 0x84000520, 0x48026004, 0x0501f003, 0x05a5f9ba, - 0x05d9fc66, 0x5c03e000, 0x05d80fb2, 0x05edff76, - 0x059c0886, 0x59325809, 0x64165a0a, 0x0001fb82, - 0x05c5ff18, 0x59325819, 0x812e59c0, 0x059e0c40, - 0x05e1fe74, 0x80000580, 0x5c025800, 0x1c01f000, - 0x5c03e000, 0x05d80fa3, 0x59300c07, 0x90040591, - 0x05fc07c5, 0x05fdf7f9, 0x4c040000, 0x59340200, - 0x4803c857, 0x8c00051c, 0x05000009, 0x59cc0805, - 0x591c001b, 0x4803c857, 0x80040580, 0x05000004, - 0x80000580, 0x4803c856, 0x0501f002, 0x90000541, - 0x5c000800, 0x1c01f000, 0x4c000000, 0x4c0c0000, - 0x4c100000, 0x61fc19ff, 0x60102000, 0x0501f010, + 0x42001000, 0x00112322, 0x50081000, 0x58080002, + 0x82000580, 0x00000100, 0x05020009, 0x05ddf827, + 0x05020015, 0x59300004, 0x8c000520, 0x05000005, + 0x84000520, 0x48026004, 0x0501f003, 0x05a1facb, + 0x05d9f9bf, 0x5c03e000, 0x05d80d10, 0x05edfd9f, + 0x05980961, 0x59325809, 0x64165a0a, 0x0001fba8, + 0x05c5fa8d, 0x05e1fc2c, 0x80000580, 0x5c025800, + 0x1c01f000, 0x5c03e000, 0x05d80d04, 0x59300c07, + 0x90040591, 0x05fc07cb, 0x05fdf7f9, 0x4c040000, + 0x59340200, 0x4803c857, 0x8c00051c, 0x05000009, + 0x59cc0805, 0x591c001b, 0x4803c857, 0x80040580, + 0x05000004, 0x80000580, 0x4803c856, 0x0501f002, + 0x90000541, 0x5c000800, 0x1c01f000, 0x4c000000, + 0x4c0c0000, 0x4c100000, 0x61fc19ff, 0x60102000, + 0x0501f010, 0x4c000000, 0x4c0c0000, 0x4c100000, + 0x5930200a, 0x58101c03, 0x60102000, 0x0501f009, 0x4c000000, 0x4c0c0000, 0x4c100000, 0x5930200a, - 0x58101c03, 0x60102000, 0x0501f009, 0x4c000000, - 0x4c0c0000, 0x4c100000, 0x5930200a, 0x801021c0, - 0x059c0852, 0x58101c03, 0x601c2000, 0x480fc857, - 0x4813c857, 0x481bc857, 0x05adf889, 0x05bdfab9, - 0x5c002000, 0x5c001800, 0x5c000000, 0x1c01f000, - 0x8d0c0520, 0x05000009, 0x4d400000, 0x4d200000, - 0x61fe4001, 0x850e1d44, 0x60aa8000, 0x05fdfa0e, - 0x5c024000, 0x5c028000, 0x1c01f000, 0x59a80249, - 0x8c000508, 0x05000005, 0x599c0017, 0x8c00050a, - 0x05020002, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x5930042c, 0x84000540, 0x4802642c, 0x1c01f000, - 0x4c640000, 0x05f1fb95, 0x59300203, 0x90000588, - 0x05020010, 0x60c8c800, 0x42000000, 0x20000000, - 0x41300800, 0x059dff7d, 0x0500000a, 0x59300203, - 0x90000588, 0x05020007, 0x60780000, 0x80000040, - 0x05fe07ff, 0x8064c840, 0x05fe07f4, 0x059df81b, - 0x05f1fb8d, 0x5c00c800, 0x1c01f000, 0x059dfbbf, - 0x059c0816, 0x59340403, 0x49265805, 0x49365806, - 0x65565a08, 0x48025c0a, 0x4a025c0b, 0x00001000, - 0x05f1fad2, 0x05000003, 0x4a025c0b, 0x00003000, - 0x59340802, 0x82040d00, 0x00ffffff, 0x59300403, - 0x82000580, 0x00000086, 0x42000000, 0x85000000, - 0x05020003, 0x42000000, 0x84000000, 0x80040540, - 0x4802580d, 0x59240005, 0x4802580e, 0x42000000, - 0x00990000, 0x59300c07, 0x90040d85, 0x05000002, - 0x8400052e, 0x59300c16, 0x8c04051a, 0x05000002, - 0x84000528, 0x4802580f, 0x497a5810, 0x59cc0004, - 0x48025811, 0x497a5812, 0x42000800, 0x00030300, - 0x59300403, 0x82000580, 0x00000086, 0x05020006, - 0x59cc0004, 0x48025814, 0x4a025815, 0x0000ffff, - 0x41780800, 0x48065813, 0x1c01f000, 0x492fc857, - 0x59a8289d, 0x801429c0, 0x05000055, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x4d2c0000, 0x4d300000, - 0x42026000, 0x00111a40, 0x592c0c0a, 0x592c100d, - 0x82081500, 0x00ffffff, 0x592c180e, 0x592c2011, - 0x40165800, 0x4014c000, 0x4014c800, 0x592c0208, - 0x82000580, 0x00000155, 0x05020035, 0x592c040a, - 0x80040580, 0x05020032, 0x592c000d, 0x82000500, - 0x00ffffff, 0x80080580, 0x0502002d, 0x592c000e, - 0x82000500, 0x00ffffff, 0x800c0580, 0x05020028, - 0x592c0011, 0x80100580, 0x05020025, 0x4c040000, - 0x4c080000, 0x4c0c0000, 0x4c100000, 0x40640000, - 0x812c0580, 0x05020014, 0x59300203, 0x90000580, - 0x0500000d, 0x59300009, 0x800001c0, 0x0500000a, - 0x05d9fee3, 0x4df00000, 0x05d9fde4, 0x05d9fbad, - 0x05020002, 0x64026203, 0x5c03e000, 0x05d80ecd, - 0x497a6009, 0x592cc800, 0x4064c000, 0x4064b800, - 0x0501f003, 0x592cb800, 0x485cc000, 0x64165a0a, - 0x0001fb82, 0x405e5800, 0x5c002000, 0x5c001800, - 0x5c001000, 0x5c000800, 0x0501f003, 0x412cc000, - 0x592e5800, 0x812e59c0, 0x05fe07c5, 0x4867509d, - 0x4863509e, 0x05e1fc7b, 0x5c026000, 0x5c025800, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x602c0800, 0x0501f004, 0x60100800, 0x0501f002, - 0x60040800, 0x4d2c0000, 0x59325809, 0x812e59c0, - 0x0500000f, 0x592c0208, 0x82000500, 0x000000ff, - 0x9000058e, 0x0502000a, 0x592c0000, 0x48026009, - 0x497a5800, 0x48065a0c, 0x05cdfd9c, 0x05000003, - 0x05fdfe71, 0x0501f002, 0x0001fb82, 0x5c025800, - 0x1c01f000, 0x4d2c0000, 0x4803c856, 0x0501f83b, - 0x05020038, 0x91380595, 0x05020027, 0x59a800b6, - 0x90000594, 0x05020022, 0x59cc0c07, 0x82040580, - 0x00000102, 0x05020029, 0x59cc0a07, 0x5930021b, - 0x80040580, 0x05020027, 0x59cc0a0a, 0x90040594, - 0x05020026, 0x916c0583, 0x05020002, 0x05adf86c, - 0x05edfe45, 0x0500000d, 0x59325809, 0x59a80ccd, - 0x48065a0b, 0x59a808cf, 0x4806580f, 0x64025a0a, - 0x59a804cc, 0x90000503, 0x90000583, 0x05000002, - 0x64ca5a0a, 0x0001fb82, 0x59a804cc, 0x8400050c, - 0x480354cc, 0x4803c857, 0x0005ffdc, 0x5c025800, - 0x1c01f000, 0x4803c856, 0x05edfe2f, 0x05fc07f7, - 0x59325809, 0x64c65a0a, 0x64625810, 0x59cc0007, - 0x48025811, 0x05fdf7f0, 0x4807c857, 0x05fdf7f4, - 0x4807c857, 0x05fdf7f2, 0x4807c857, 0x05fdf7f0, - 0x4803c857, 0x05fdf7ee, 0x59300403, 0xb0000d9a, - 0x05000004, 0xb0000d9b, 0x05000002, 0xb0000d9c, - 0x1c01f000, 0x4933c857, 0x4867c857, 0x485fc857, - 0x4863c857, 0x4c500000, 0x4c540000, 0x4c580000, - 0x4d3c0000, 0x59327c1b, 0x5924100b, 0x82081500, - 0x00001fff, 0x405c0000, 0x80080580, 0x0500002b, - 0x480bc857, 0x4d400000, 0x4d3c0000, 0x4c080000, - 0x60aa8000, 0x600a7800, 0x41780800, 0x05adf87b, - 0x5c001000, 0x5c027800, 0x5c028000, 0x59a802cc, - 0x40000800, 0x82000540, 0x0f000000, 0x4802480b, - 0x853e7d40, 0x4c580000, 0x0501fa22, 0x42001800, - 0x0010e51f, 0x8058b040, 0x05000013, 0x580c200b, - 0x82100500, 0x00001fff, 0x80080580, 0x0502000c, - 0x580c0200, 0x82000500, 0x00008001, 0x82000580, - 0x00008001, 0x05000006, 0x82102500, 0xffffe000, - 0x80100541, 0x4800180b, 0x4803c857, 0x900c1c0d, - 0x05fdf7ed, 0x5c00b000, 0x6000b001, 0x4060a000, - 0x4200a800, 0x00110672, 0x50500000, 0x50540800, - 0x80040580, 0x05000002, 0x853e7d42, 0x5450a800, - 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07f7, - 0x59a800cf, 0x80640580, 0x0500001f, 0x59a814cc, - 0x480bc857, 0x90081503, 0x90081583, 0x05020009, - 0x90640582, 0x05000018, 0x90640583, 0x05020011, - 0x59a800ce, 0x90000582, 0x05000013, 0x0501f00d, - 0x90640581, 0x05000010, 0x90640582, 0x05020005, - 0x59a800ce, 0x90000582, 0x0502000b, 0x0501f008, - 0x59a800ce, 0x90000581, 0x05000007, 0x0501f004, - 0x4803c856, 0x853e7d46, 0x0501f003, 0x4803c856, - 0x853e7d44, 0x4867c857, 0x493fc857, 0x486750cf, - 0x493e641b, 0x5c027800, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x1c01f000, 0x4817c857, 0x4c000000, - 0x4c040000, 0x8c14052a, 0x05000004, 0x59880123, - 0x80000000, 0x48031123, 0x8c14052e, 0x05000004, - 0x59880124, 0x80000000, 0x48031124, 0x8c14052c, - 0x05000013, 0x40140000, 0x82000500, 0x00070000, - 0x82000d80, 0x00030000, 0x0500000d, 0x82000d80, - 0x00040000, 0x0500000a, 0x82000d80, 0x00050000, - 0x05000007, 0x59880005, 0x80000000, 0x48031005, - 0x59880125, 0x80000000, 0x48031125, 0x5c000800, - 0x5c000000, 0x1c01f000, 0x4817c857, 0x4c000000, - 0x4c040000, 0x8c14052a, 0x05000004, 0x59880126, - 0x80000000, 0x48031126, 0x8c14052e, 0x05000004, - 0x59880127, 0x80000000, 0x48031127, 0x8c14052c, - 0x05000013, 0x40140000, 0x82000500, 0x00070000, - 0x82000d80, 0x00030000, 0x0500000d, 0x82000d80, - 0x00040000, 0x0500000a, 0x82000d80, 0x00050000, + 0x801021c0, 0x05980930, 0x58101c03, 0x601c2000, + 0x480fc857, 0x4813c857, 0x481bc857, 0x05a9f9c8, + 0x05b9fcf9, 0x5c002000, 0x5c001800, 0x5c000000, + 0x1c01f000, 0x8d0c0520, 0x05000009, 0x4d400000, + 0x4d200000, 0x61fe4001, 0x850e1d44, 0x60aa8000, + 0x05fdf9f8, 0x5c024000, 0x5c028000, 0x1c01f000, + 0x59a8024c, 0x8c000508, 0x05000005, 0x599c0017, + 0x8c00050a, 0x05020002, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x5930042c, 0x84000540, 0x4802642c, + 0x1c01f000, 0x4c640000, 0x05f1f9d0, 0x4df00000, + 0x59300203, 0x90000588, 0x05020010, 0x60c8c800, + 0x42000000, 0x20000000, 0x41300800, 0x059df8bb, + 0x0500000a, 0x59300203, 0x90000588, 0x05020007, + 0x60780000, 0x80000040, 0x05fe07ff, 0x8064c840, + 0x05fe07f4, 0x0599f8f8, 0x5c03e000, 0x05f009ca, + 0x5c00c800, 0x1c01f000, 0x0599fc97, 0x059808f2, + 0x61fc01ff, 0x83340d80, 0x001141b4, 0x05000002, + 0x59340403, 0x49265805, 0x49365806, 0x65565a08, + 0x48025c0a, 0x4a025c0b, 0x00001000, 0x59a808d5, + 0x82040d00, 0x0000f000, 0x82040480, 0x00002000, + 0x05001003, 0x4a025c0b, 0x00003000, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x59300403, 0x82000580, + 0x00000086, 0x42000000, 0x85000000, 0x05020003, + 0x42000000, 0x84000000, 0x80040540, 0x4802580d, + 0x59240005, 0x4802580e, 0x42000000, 0x00990000, + 0x59300c07, 0x90040d85, 0x05000002, 0x8400052e, + 0x59300c16, 0x8c04051a, 0x05000002, 0x84000528, + 0x4802580f, 0x497a5810, 0x59cc0004, 0x48025811, + 0x497a5812, 0x42000800, 0x00030300, 0x59300403, + 0x82000580, 0x00000086, 0x05020006, 0x59cc0004, + 0x48025814, 0x4a025815, 0x0000ffff, 0x41780800, + 0x48065813, 0x1c01f000, 0x492fc857, 0x59a828a0, + 0x801429c0, 0x05000055, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4d2c0000, 0x4d300000, 0x42026000, + 0x001159e4, 0x592c0c0a, 0x592c100d, 0x82081500, + 0x00ffffff, 0x592c180e, 0x592c2011, 0x40165800, + 0x4014c000, 0x4014c800, 0x592c0208, 0x82000580, + 0x00000155, 0x05020035, 0x592c040a, 0x80040580, + 0x05020032, 0x592c000d, 0x82000500, 0x00ffffff, + 0x80080580, 0x0502002d, 0x592c000e, 0x82000500, + 0x00ffffff, 0x800c0580, 0x05020028, 0x592c0011, + 0x80100580, 0x05020025, 0x4c040000, 0x4c080000, + 0x4c0c0000, 0x4c100000, 0x40640000, 0x812c0580, + 0x05020014, 0x59300203, 0x90000580, 0x0500000d, + 0x59300009, 0x800001c0, 0x0500000a, 0x05d9fc3a, + 0x4df00000, 0x05d9fb3a, 0x05d9f8ff, 0x05020002, + 0x64026203, 0x5c03e000, 0x05d80c24, 0x497a6009, + 0x592cc800, 0x4064c000, 0x4064b800, 0x0501f003, + 0x592cb800, 0x485cc000, 0x64165a0a, 0x0001fba8, + 0x405e5800, 0x5c002000, 0x5c001800, 0x5c001000, + 0x5c000800, 0x0501f003, 0x412cc000, 0x592e5800, + 0x812e59c0, 0x05fe07c5, 0x486750a0, 0x486350a1, + 0x05e1fa08, 0x5c026000, 0x5c025800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x602c0800, + 0x0501f004, 0x60100800, 0x0501f002, 0x60040800, + 0x4d2c0000, 0x59325809, 0x812e59c0, 0x0500000f, + 0x592c0208, 0x82000500, 0x000000ff, 0x9000058e, + 0x0502000a, 0x592c0000, 0x48026009, 0x497a5800, + 0x48065a0c, 0x05cdf9bd, 0x05000003, 0x05fdfe67, + 0x0501f002, 0x0001fba8, 0x5c025800, 0x1c01f000, + 0x4d2c0000, 0x4803c856, 0x0501f83b, 0x05020038, + 0x91380595, 0x05020027, 0x59a800bb, 0x90000594, + 0x05020022, 0x59cc0c07, 0x82040580, 0x00000102, + 0x05020029, 0x59cc0a07, 0x5930021b, 0x80040580, + 0x05020027, 0x59cc0a0a, 0x90040594, 0x05020026, + 0x916c0583, 0x05020002, 0x05a9f9ac, 0x05edfc67, + 0x0500000d, 0x59325809, 0x59a80cd2, 0x48065a0b, + 0x59a808d4, 0x4806580f, 0x64025a0a, 0x59a804d1, + 0x90000503, 0x90000583, 0x05000002, 0x64ca5a0a, + 0x0001fba8, 0x59a804d1, 0x8400050c, 0x480354d1, + 0x4803c857, 0x0009f810, 0x5c025800, 0x1c01f000, + 0x4803c856, 0x05edfc51, 0x05fc07f7, 0x59325809, + 0x64c65a0a, 0x64625810, 0x59cc0007, 0x48025811, + 0x05fdf7f0, 0x4807c857, 0x05fdf7f4, 0x4807c857, + 0x05fdf7f2, 0x4807c857, 0x05fdf7f0, 0x4803c857, + 0x05fdf7ee, 0x59300403, 0xb0000d9a, 0x05000004, + 0xb0000d9b, 0x05000002, 0xb0000d9c, 0x1c01f000, + 0x4933c857, 0x4867c857, 0x485fc857, 0x4863c857, + 0x4c500000, 0x4c540000, 0x4c580000, 0x4d3c0000, + 0x59327c1b, 0x5924100b, 0x82081500, 0x00001fff, + 0x405c0000, 0x80080580, 0x0500002b, 0x480bc857, + 0x4d400000, 0x4d3c0000, 0x4c080000, 0x60aa8000, + 0x600a7800, 0x41780800, 0x05a9f9bb, 0x5c001000, + 0x5c027800, 0x5c028000, 0x59a802d1, 0x40000800, + 0x82000540, 0x0f000000, 0x4802480b, 0x853e7d40, + 0x4c580000, 0x0501fa36, 0x42001800, 0x001124c3, + 0x8058b040, 0x05000013, 0x580c200b, 0x82100500, + 0x00001fff, 0x80080580, 0x0502000c, 0x580c0200, + 0x82000500, 0x00008001, 0x82000580, 0x00008001, + 0x05000006, 0x82102500, 0xffffe000, 0x80100541, + 0x4800180b, 0x4803c857, 0x900c1c0d, 0x05fdf7ed, + 0x5c00b000, 0x6000b001, 0x4060a000, 0x4200a800, + 0x00114616, 0x50500000, 0x50540800, 0x80040580, + 0x05000002, 0x853e7d42, 0x5450a800, 0x8050a000, + 0x8054a800, 0x8058b040, 0x05fe07f7, 0x59a800d4, + 0x80640580, 0x0500001f, 0x59a814d1, 0x480bc857, + 0x90081503, 0x90081583, 0x05020009, 0x90640582, + 0x05000018, 0x90640583, 0x05020011, 0x59a800d3, + 0x90000582, 0x05000013, 0x0501f00d, 0x90640581, + 0x05000010, 0x90640582, 0x05020005, 0x59a800d3, + 0x90000582, 0x0502000b, 0x0501f008, 0x59a800d3, + 0x90000581, 0x05000007, 0x0501f004, 0x4803c856, + 0x853e7d46, 0x0501f003, 0x4803c856, 0x853e7d44, + 0x4867c857, 0x493fc857, 0x486750d4, 0x493e641b, + 0x5c027800, 0x5c00b000, 0x5c00a800, 0x5c00a000, + 0x1c01f000, 0x412c7800, 0x60047000, 0x583c7801, + 0x803c79c0, 0x05000003, 0x80387000, 0x05fdf7fc, + 0x599c0413, 0x80380480, 0x05021003, 0x80000580, + 0x1c01f000, 0x81780000, 0x1c01f000, 0x4817c857, + 0x4c000000, 0x4c040000, 0x8c14052a, 0x05000004, + 0x59880126, 0x80000000, 0x48031126, 0x8c14052e, + 0x05000004, 0x59880127, 0x80000000, 0x48031127, + 0x82140500, 0x00070000, 0x82000d80, 0x00050000, + 0x05020005, 0x42000000, 0x0011235f, 0x0501f8ac, + 0x0501f00f, 0x8c14052c, 0x0500000d, 0x82000d80, + 0x00030000, 0x0500000a, 0x82000d80, 0x00040000, 0x05000007, 0x59880005, 0x80000000, 0x48031005, 0x59880128, 0x80000000, 0x48031128, 0x5c000800, - 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000, - 0x8c04052c, 0x05000004, 0x59880111, 0x80000000, - 0x48031111, 0x8c04052a, 0x05000004, 0x59880112, - 0x80000000, 0x48031112, 0x8c040528, 0x05000004, - 0x59880113, 0x80000000, 0x48031113, 0x8c040526, + 0x5c000000, 0x1c01f000, 0x4817c857, 0x4c000000, + 0x4c040000, 0x8c14052a, 0x05000004, 0x59880129, + 0x80000000, 0x48031129, 0x8c14052e, 0x05000004, + 0x5988012a, 0x80000000, 0x4803112a, 0x82140500, + 0x00070000, 0x82000d80, 0x00050000, 0x05020005, + 0x42000000, 0x0011235f, 0x0501f885, 0x0501f00f, + 0x8c14052c, 0x0500000d, 0x82000d80, 0x00030000, + 0x0500000a, 0x82000d80, 0x00040000, 0x05000007, + 0x59880005, 0x80000000, 0x48031005, 0x5988012b, + 0x80000000, 0x4803112b, 0x5c000800, 0x5c000000, + 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c04052c, 0x05000004, 0x59880114, 0x80000000, 0x48031114, - 0x8c040524, 0x05000004, 0x59880115, 0x80000000, - 0x48031115, 0x8c040522, 0x05000004, 0x59880116, - 0x80000000, 0x48031116, 0x8c040520, 0x05000004, - 0x59880117, 0x80000000, 0x48031117, 0x5c000000, - 0x1c01f000, 0x4807c857, 0x4c000000, 0x59880118, - 0x80000000, 0x48031118, 0x5c000000, 0x1c01f000, - 0x4807c857, 0x4c000000, 0x8c04051c, 0x05000004, - 0x59880119, 0x80000000, 0x48031119, 0x8c04051a, - 0x05000004, 0x5988011a, 0x80000000, 0x4803111a, - 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000, - 0x8c040518, 0x05000004, 0x5988011b, 0x80000000, - 0x4803111b, 0x8c040516, 0x05000004, 0x5988011c, - 0x80000000, 0x4803111c, 0x8c040514, 0x05000004, + 0x8c04052a, 0x05000004, 0x59880115, 0x80000000, + 0x48031115, 0x8c040528, 0x05000004, 0x59880116, + 0x80000000, 0x48031116, 0x8c040526, 0x05000004, + 0x59880117, 0x80000000, 0x48031117, 0x8c040524, + 0x05000004, 0x59880118, 0x80000000, 0x48031118, + 0x8c040522, 0x05000004, 0x59880119, 0x80000000, + 0x48031119, 0x8c040520, 0x05000004, 0x5988011a, + 0x80000000, 0x4803111a, 0x5c000000, 0x1c01f000, + 0x4807c857, 0x4c000000, 0x5988011b, 0x80000000, + 0x4803111b, 0x5c000000, 0x1c01f000, 0x4807c857, + 0x4c000000, 0x8c04051c, 0x05000004, 0x5988011c, + 0x80000000, 0x4803111c, 0x8c04051a, 0x05000004, 0x5988011d, 0x80000000, 0x4803111d, 0x5c000000, - 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040510, + 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040518, 0x05000004, 0x5988011e, 0x80000000, 0x4803111e, - 0x8c04050c, 0x05000004, 0x5988011f, 0x80000000, - 0x4803111f, 0x5c000000, 0x1c01f000, 0x4807c857, - 0x4c000000, 0x8c040508, 0x05000004, 0x59880120, - 0x80000000, 0x48031120, 0x8c040504, 0x05000004, - 0x59880121, 0x80000000, 0x48031121, 0x5c000000, - 0x1c01f000, 0x4807c856, 0x4c000000, 0x598800ea, - 0x80000000, 0x480310ea, 0x5c000000, 0x1c01f000, - 0x5c036000, 0x4db00000, 0x49b3c857, 0x4c040000, - 0x50000800, 0x80040800, 0x05001002, 0x44040000, - 0x5c000800, 0x1c01f000, 0x480fc857, 0x4c000000, - 0x900c0580, 0x05020004, 0x42000000, 0x0010e411, - 0x0501f012, 0x820c0580, 0x00001001, 0x05020004, - 0x42000000, 0x0010e412, 0x0501f00c, 0x820c0580, - 0x00001002, 0x05020004, 0x42000000, 0x0010e413, - 0x0501f006, 0x820c0c80, 0x0000201c, 0x059a1ddf, - 0x900c051f, 0x0c01f804, 0x05fdffde, 0x5c000000, - 0x1c01f000, 0x0010d01d, 0x0010d020, 0x0010d023, - 0x0010d026, 0x0010d029, 0x0010d02c, 0x0010d02f, - 0x0010d032, 0x0010d035, 0x0010d038, 0x0010d03b, - 0x0010d03e, 0x0010d041, 0x0010d044, 0x0010d047, - 0x0010d04a, 0x0010d04d, 0x0010d050, 0x0010d053, - 0x0010d056, 0x0010d059, 0x0010d05c, 0x0010d05f, - 0x0010d062, 0x0010d065, 0x0010d068, 0x0010d06b, - 0x0010d06e, 0x42000000, 0x0010e414, 0x1c01f000, - 0x42000000, 0x0010e415, 0x1c01f000, 0x42000000, - 0x0010e416, 0x1c01f000, 0x42000000, 0x0010e417, - 0x1c01f000, 0x42000000, 0x0010e418, 0x1c01f000, - 0x42000000, 0x0010e419, 0x1c01f000, 0x42000000, - 0x0010e41a, 0x1c01f000, 0x42000000, 0x0010e41b, - 0x1c01f000, 0x42000000, 0x0010e41c, 0x1c01f000, - 0x42000000, 0x0010e41d, 0x1c01f000, 0x42000000, - 0x0010e41e, 0x1c01f000, 0x42000000, 0x0010e41f, - 0x1c01f000, 0x42000000, 0x0010e420, 0x1c01f000, - 0x42000000, 0x0010e421, 0x1c01f000, 0x42000000, - 0x0010e422, 0x1c01f000, 0x42000000, 0x0010e423, - 0x1c01f000, 0x42000000, 0x0010e424, 0x1c01f000, - 0x42000000, 0x0010e425, 0x1c01f000, 0x42000000, - 0x0010e426, 0x1c01f000, 0x42000000, 0x0010e427, - 0x1c01f000, 0x42000000, 0x0010e428, 0x1c01f000, - 0x42000000, 0x0010e429, 0x1c01f000, 0x42000000, - 0x0010e42a, 0x1c01f000, 0x42000000, 0x0010e42b, - 0x1c01f000, 0x42000000, 0x0010e42c, 0x1c01f000, - 0x42000000, 0x0010e42d, 0x1c01f000, 0x42000000, - 0x0010e42e, 0x1c01f000, 0x42000000, 0x0010e42f, - 0x1c01f000, 0x480fc857, 0x4c000000, 0x900c0581, - 0x05020004, 0x42000000, 0x0010e394, 0x0501f00f, - 0x900c0582, 0x05020004, 0x42000000, 0x0010e395, - 0x0501f00a, 0x900c0583, 0x05020004, 0x42000000, - 0x0010e396, 0x0501f005, 0x900c0584, 0x05020004, - 0x42000000, 0x0010e397, 0x05fdff56, 0x5c000000, - 0x1c01f000, 0x4c000000, 0x59a80249, 0x4803c857, - 0x59240a00, 0x8c04050a, 0x05000010, 0x8c000506, - 0x05000004, 0x42000000, 0x0010e39f, 0x0501f011, - 0x8c00050a, 0x05000004, 0x42000000, 0x0010e39e, - 0x0501f00c, 0x8c000508, 0x05000004, 0x42000000, - 0x0010e3a1, 0x0501f007, 0x05c9f810, 0x05000006, - 0x8c000506, 0x05020004, 0x42000000, 0x0010e3a0, - 0x05fdff38, 0x5c000000, 0x1c01f000, 0x8058b1c0, - 0x05980d32, 0x5450a800, 0x8050a000, 0x8054a800, - 0x8058b040, 0x05fe07fc, 0x1c01f000, 0x8058b1c0, - 0x05980d2a, 0x4450a800, 0x8054a800, 0x8058b040, - 0x05fe07fd, 0x1c01f000, 0x4813c857, 0x4817c857, - 0x40140000, 0x80100480, 0x059a1d20, 0x497bc841, - 0x41787000, 0x42006800, 0x00140000, 0x59a800ca, - 0x8c000500, 0x05000003, 0x42006800, 0x0013a000, - 0x4837c857, 0x8010048d, 0x05021005, 0x8014048d, - 0x05001003, 0x40147000, 0x80342840, 0x61fc7801, - 0x40100000, 0x80140480, 0x82006d00, 0xffffff00, - 0x05020002, 0x40007800, 0x4813c840, 0x483fc842, - 0x05011000, 0x40100000, 0x803c2400, 0x40100000, - 0x80140580, 0x05fe07f3, 0x45782800, 0x803871c0, - 0x05000005, 0x40382800, 0x41787000, 0x80102000, - 0x05fdf7eb, 0x1c01f000, 0x8058b1c0, 0x05980cf7, - 0x50500000, 0x9c0001c0, 0x4400a800, 0x8050a000, - 0x8054a800, 0x8058b040, 0x05fe07fa, 0x1c01f000, - 0x4c000000, 0x59a80007, 0x8c00051c, 0x5c000000, - 0x1c01f000, 0x59a80007, 0x8c000518, 0x1c01f000, - 0x4200b000, 0x0010e511, 0x5058b000, 0x1c01f000, - 0x42006800, 0x0010e512, 0x58340406, 0x8c000502, - 0x05fc07f8, 0x6004b000, 0x1c01f000, 0x61906800, - 0x80346840, 0x05000006, 0x64070000, 0x40000000, - 0x59807000, 0x8c380500, 0x05fc07fa, 0x1c01f000, - 0x4c040000, 0x05fdfff6, 0x05020003, 0x80040840, - 0x05fe07fd, 0x5c000800, 0x1c01f000, 0x640f0000, - 0x40000000, 0x59800000, 0x8c000500, 0x05fc07fc, - 0x1c01f000, 0x42006800, 0x0010e512, 0x58340406, - 0x8c000504, 0x1c01f000, 0x42006800, 0x0010e511, - 0x50346800, 0x42007000, 0x0010e512, 0x58380200, - 0x8c000500, 0x05020004, 0x9038740d, 0x80346840, - 0x05fe07fb, 0x1c01f000, 0x42006800, 0x0010e512, - 0x58340406, 0x8c000508, 0x1c01f000, 0x42006800, - 0x0010e512, 0x58340406, 0x8c00050a, 0x1c01f000, - 0x59a80006, 0x8c000516, 0x1c01f000, 0x599c0017, - 0x8c00051e, 0x1c01f000, 0x42006800, 0x0010e511, - 0x50346800, 0x59cc7000, 0x42007800, 0x0010e512, - 0x583c0005, 0x80380580, 0x82000500, 0x00ffffff, - 0x05000006, 0x80346840, 0x05000003, 0x903c7c0d, - 0x05fdf7f8, 0x90000541, 0x1c01f000, 0x59a86a49, - 0x8c34050a, 0x0500000a, 0x8c340514, 0x05000008, - 0x42006800, 0x0010e511, 0x50346800, 0xb0340481, - 0x05001004, 0x599c0017, 0x8c00050a, 0x1c01f000, - 0x80000580, 0x05fdf7fe, 0x59a80006, 0x8c000518, - 0x05000002, 0x8d0c0520, 0x1c01f000, 0x00000001, - 0x00000002, 0x00000004, 0x00000008, 0x00000010, - 0x00000020, 0x00000040, 0x00000080, 0x00000100, - 0x00000200, 0x00000400, 0x00000800, 0x00001000, - 0x00002000, 0x00004000, 0x00008000, 0x00010000, - 0x00020000, 0x00040000, 0x00080000, 0x00100000, - 0x00200000, 0x00400000, 0x00800000, 0x01000000, - 0x02000000, 0x04000000, 0x08000000, 0x10000000, - 0x20000000, 0x40000000, 0x80000000, 0x0010e512, - 0x0010e51f, 0x0010e52c, 0x0010e539, 0x0010e546, - 0x0010e553, 0x0010e560, 0x0010e56d, 0x0010e57a, - 0x0010e587, 0x0010e594, 0x0010e5a1, 0x0010e5ae, - 0x0010e5bb, 0x0010e5c8, 0x0010e5d5, 0x0010e5e2, - 0x0010e5ef, 0x0010e5fc, 0x0010e609, 0x0010e616, - 0x0010e623, 0x0010e630, 0x0010e63d, 0x0010e64a, - 0x0010e657, 0x0010e664, 0x0010e671, 0x0010e67e, - 0x0010e68b, 0x0010e698, 0x0010e6a5, 0x0010e6b2, - 0x0010e6bf, 0x0010e6cc, 0x0010e6d9, 0x0010e6e6, - 0x0010e6f3, 0x0010e700, 0x0010e70d, 0x0010e71a, - 0x0010e727, 0x0010e734, 0x0010e741, 0x0010e74e, - 0x0010e75b, 0x0010e768, 0x0010e775, 0x0010e782, - 0x0010e78f, 0x0010e79c, 0x0010e7a9, 0x0010e7b6, - 0x0010e7c3, 0x0010e7d0, 0x0010e7dd, 0x0010e7ea, - 0x0010e7f7, 0x0010e804, 0x0010e811, 0x0010e81e, - 0x0010e82b, 0x0010e838, 0x0010e845, 0x0010e852, - 0x0010e85f, 0x0010e86c, 0x0010e879, 0x0010e886, - 0x0010e893, 0x0010e8a0, 0x0010e8ad, 0x0010e8ba, - 0x0010e8c7, 0x0010e8d4, 0x0010e8e1, 0x0010e8ee, - 0x0010e8fb, 0x0010e908, 0x0010e915, 0x0010e922, - 0x0010e92f, 0x0010e93c, 0x0010e949, 0x0010e956, - 0x0010e963, 0x0010e970, 0x0010e97d, 0x0010e98a, - 0x0010e997, 0x0010e9a4, 0x0010e9b1, 0x0010e9be, - 0x0010e9cb, 0x0010e9d8, 0x0010e9e5, 0x0010e9f2, - 0x0010e9ff, 0x0010ea0c, 0x0010ea19, 0x0010ea26, - 0x0010ea33, 0x0010ea40, 0x0010ea4d, 0x0010ea5a, - 0x0010ea67, 0x0010ea74, 0x0010ea81, 0x0010ea8e, - 0x0010ea9b, 0x0010eaa8, 0x0010eab5, 0x0010eac2, - 0x0010eacf, 0x0010eadc, 0x0010eae9, 0x0010eaf6, - 0x0010eb03, 0x0010eb10, 0x0010eb1d, 0x0010eb2a, - 0x0010eb37, 0x0010eb44, 0x0010eb51, 0x0010eb5e, - 0x0010eb6b, 0x0010eb78, 0x0010eb85, 0x0010eb92, - 0x0010eb9f, 0x0010ebac, 0x0010ebb9, 0x0010ebc6, - 0x0010ebd3, 0x0010ebe0, 0x0010ebed, 0x0010ebfa, - 0x0010ec07, 0x0010ec14, 0x0010ec21, 0x0010ec2e, - 0x0010ec3b, 0x0010ec48, 0x0010ec55, 0x0010ec62, - 0x0010ec6f, 0x0010ec7c, 0x0010ec89, 0x0010ec96, - 0x0010eca3, 0x0010ecb0, 0x0010ecbd, 0x0010ecca, - 0x0010ecd7, 0x0010ece4, 0x0010ecf1, 0x0010ecfe, - 0x0010ed0b, 0x0010ed18, 0x0010ed25, 0x0010ed32, - 0x0010ed3f, 0x0010ed4c, 0x0010ed59, 0x0010ed66, - 0x0010ed73, 0x0010ed80, 0x0010ed8d, 0x0010ed9a, - 0x0010eda7, 0x0010edb4, 0x0010edc1, 0x0010edce, - 0x0010eddb, 0x0010ede8, 0x0010edf5, 0x0010ee02, - 0x0010ee0f, 0x0010ee1c, 0x0010ee29, 0x0010ee36, - 0x0010ee43, 0x0010ee50, 0x0010ee5d, 0x0010ee6a, - 0x0010ee77, 0x0010ee84, 0x0010ee91, 0x0010ee9e, - 0x0010eeab, 0x0010eeb8, 0x0010eec5, 0x0010eed2, - 0x0010eedf, 0x0010eeec, 0x0010eef9, 0x0010ef06, - 0x0010ef13, 0x0010ef20, 0x0010ef2d, 0x0010ef3a, - 0x0010ef47, 0x0010ef54, 0x0010ef61, 0x0010ef6e, - 0x0010ef7b, 0x0010ef88, 0x0010ef95, 0x0010efa2, - 0x0010efaf, 0x0010efbc, 0x0010efc9, 0x0010efd6, - 0x0010efe3, 0x0010eff0, 0x0010effd, 0x0010f00a, - 0x0010f017, 0x0010f024, 0x0010f031, 0x0010f03e, - 0x0010f04b, 0x0010f058, 0x0010f065, 0x0010f072, - 0x0010f07f, 0x0010f08c, 0x0010f099, 0x0010f0a6, - 0x0010f0b3, 0x0010f0c0, 0x0010f0cd, 0x0010f0da, - 0x0010f0e7, 0x0010f0f4, 0x0010f101, 0x0010f10e, - 0x0010f11b, 0x0010f128, 0x0010f135, 0x0010f142, - 0x0010f14f, 0x0010f15c, 0x0010f169, 0x0010f176, - 0x0010f183, 0x0010f190, 0x0010f19d, 0x0010f1aa, - 0x0010f1b7, 0x0010f1c4, 0x0010f1d1, 0x0010f1de, - 0x0010f1eb, 0x0010f1f8, 0x0010f205, 0x40000000, - 0x600070e0, 0x60007820, 0x4a007016, 0x00010001, - 0x58380016, 0x8c000500, 0x05fc07fc, 0x600c4000, - 0x60003002, 0x64807808, 0x583c2808, 0x8c14053e, - 0x05000004, 0x80183040, 0x05fe07fc, 0x0501f00d, - 0x583c2808, 0x82140500, 0x20000400, 0x82000580, - 0x00000400, 0x05020005, 0x82140500, 0x00000300, - 0x90000580, 0x05000007, 0x80204040, 0x05fe07ee, - 0x4a007016, 0x00010000, 0x90000541, 0x0501f040, - 0x650c7808, 0x583c0009, 0x8c000500, 0x05000005, - 0x60002000, 0x4a007016, 0x00010000, 0x0501f037, - 0x65007808, 0x583c5809, 0x65047808, 0x583c6009, - 0x65087808, 0x583c6809, 0x4a007016, 0x00010000, - 0x82102d00, 0xf0000000, 0x90140580, 0x05000002, - 0x0501f020, 0x60202800, 0x60003000, 0x803000c8, - 0x40003800, 0x8030010a, 0x801c3d80, 0x40300000, - 0x80180580, 0x80100400, 0x801c0400, 0x802c5c00, - 0x803400c8, 0x40003800, 0x8034010a, 0x801c3d80, - 0x40340000, 0x80180580, 0x801c0400, 0x80306400, - 0x802c00c8, 0x40003800, 0x802c010a, 0x801c3d80, - 0x402c0000, 0x80180580, 0x801c0400, 0x80346c00, - 0x82183400, 0x9e3779b9, 0x80142840, 0x05fe07e4, - 0x0502000b, 0x402c0000, 0x80040580, 0x05fe07c7, - 0x40300000, 0x80080580, 0x05fe07c4, 0x40340000, - 0x800c0580, 0x05fe07c1, 0x80000580, 0x1c01f000, - 0x1c01f000, 0x42005000, 0x7ff4c000, 0x58280800, - 0x58281001, 0x58281802, 0x58282003, 0x05fdff98, - 0x05020807, 0x82101d00, 0x0fffffff, 0x480fc021, - 0x900c01c0, 0x4803c022, 0x1c01f000, 0x497bc021, - 0x497bc022, 0x4a03c020, 0x00004020, 0x4a03c011, - 0x40200011, 0x6016d800, 0x05027011, 0x59e00020, - 0x90000582, 0x0502000e, 0x05006000, 0x4203e000, - 0x40000000, 0x59e00017, 0x60000800, 0x8c00050a, - 0x05a20bd4, 0x8d0c0530, 0x05a20bc7, 0x05a20bc9, - 0x6403c017, 0x4203e000, 0x30000001, 0x0599fcb5, - 0x05fdf7ff, 0x59a808d1, 0x8c100502, 0x05000003, - 0x84040d42, 0x0501f007, 0x8c100504, 0x05000003, - 0x84040d44, 0x0501f003, 0x8c100500, 0x84040d40, - 0x480750d1, 0x1c01f000, 0x59a800d1, 0x8c000502, - 0x05000009, 0x4a0350d2, 0x0000008b, 0x4a0350d3, - 0x0000008b, 0x4a0350d4, 0x0000008b, 0x641350d5, - 0x0501f00c, 0x8c000504, 0x05000006, 0x65bf50d2, - 0x65bf50d3, 0x65df50d4, 0x640350d5, 0x0501f005, - 0x64cf50d2, 0x64cf50d3, 0x649750d4, 0x640350d5, - 0x1c01f000, 0x9d56cdac, 0x00000000, 0x00000000, - 0x00112000, 0x0000317e, 0x00000000, 0x00000000, - 0x00020000, 0x000011a6, 0x916c0583, 0x01020177, - 0x42000000, 0x0010dd03, 0x50000000, 0x800001c0, - 0x05020a3e, 0x0501f9fb, 0x0501ffd5, 0x0501fb93, - 0x8d0c0516, 0x05000f50, 0x8d0c0516, 0x05000e06, - 0x59a800a2, 0x80000540, 0x01060ac5, 0x0505fc83, - 0x05fdf7ee, 0x835c0480, 0x00000104, 0x010411a5, - 0x416a5800, 0x592ed000, 0x497a5800, 0x497a5801, - 0x815eb840, 0x812e59c0, 0x1c01f000, 0x42007000, - 0x000211a7, 0x58380004, 0x49781000, 0x64001002, - 0x48087004, 0x80000d40, 0x05020006, 0x48087005, - 0x58380000, 0x80000540, 0x0500000a, 0x1c01f000, - 0x48080800, 0x05fdf7fb, 0x42007000, 0x000211a7, - 0x58380000, 0x80000540, 0x05000002, 0x1c01f000, - 0x58380807, 0x800409c0, 0x01060234, 0x58380005, - 0x80006d40, 0x05020002, 0x1c01f000, 0x58340000, - 0x48347001, 0x80000540, 0x05020002, 0x48007004, - 0x48007005, 0x4a03b805, 0x30000002, 0x58340007, - 0x59dc0806, 0x4803b800, 0x58340008, 0x4803b801, - 0x58340806, 0x4807b81f, 0x58340805, 0x58341003, - 0x58340001, 0x48047002, 0x48087003, 0x480bb803, - 0x8c000500, 0x05020004, 0x64087000, 0x6407c824, - 0x0501f004, 0x64047000, 0x6503c824, 0x0105f25b, - 0x58380802, 0x600011fe, 0x82040480, 0x0000ff00, - 0x05021003, 0x40041000, 0x80000580, 0x48007002, - 0x480bb802, 0x4a03b805, 0x10000002, 0x1c01f000, - 0x59dc0806, 0x4a03b805, 0x20000000, 0x8c04053e, - 0x05000009, 0x8c040508, 0x01020dda, 0x42007000, - 0x000211a7, 0x58380000, 0x90001484, 0x0c001003, - 0x0101fdda, 0x1c01f000, 0x00020036, 0x00020078, - 0x0002007f, 0x001014e8, 0x82040d00, 0x43200f80, - 0x01060268, 0x58380002, 0x80000540, 0x05000008, - 0x0105f25b, 0x82040d00, 0x43200f80, 0x01060268, - 0x58380002, 0x80000540, 0x05fe07d6, 0x58386001, - 0x58300009, 0x4a006002, 0x00000100, 0x64007000, - 0x80001540, 0x05fc07ab, 0x59dc0000, 0x48006007, - 0x59dc0001, 0x48006008, 0x0809f800, 0x05fdf79f, - 0x84040d1e, 0x59e00017, 0x8c00050c, 0x05020007, - 0x59a818a0, 0x800400c4, 0x800c1c00, 0x580c0003, - 0x8c000500, 0x05000008, 0x59a800a2, 0x4c000000, - 0x0105fab6, 0x5c000000, 0x80000540, 0x01060280, - 0x1c01f000, 0x4d2c0000, 0x4c040000, 0x4c0c0000, - 0x05fdff71, 0x5c001800, 0x5c000800, 0x05000014, - 0x82040400, 0x0010df60, 0x50000000, 0x48025806, - 0x64025801, 0x64125805, 0x64065804, 0x900c0402, - 0x48025803, 0x580c0000, 0x48025807, 0x580c0001, - 0x48025808, 0x4a025809, 0x000200bf, 0x4806580a, - 0x412c1000, 0x5c025800, 0x05fdf765, 0x5c025800, - 0x0105f2b6, 0x58300802, 0x82040580, 0x00000100, - 0x01060275, 0x4d2c0000, 0x40325800, 0x0105f993, - 0x5c025800, 0x0105f280, 0x59b800ea, 0x82000d00, - 0xf2000038, 0x010603f7, 0x8c000510, 0x010403f6, - 0x59ba60e0, 0x81300182, 0x0502104c, 0x05002030, - 0x8532653e, 0x59300407, 0x90000583, 0x0502002a, - 0x59300203, 0x90000584, 0x05020027, 0x59325809, - 0x59300004, 0x4a025a08, 0x00000103, 0x497a580d, - 0x8c00053e, 0x0502001a, 0x59300008, 0x82000500, - 0x04000800, 0x82000580, 0x04000800, 0x05000017, - 0x0501fa9c, 0x59325827, 0x812e59c0, 0x01060993, - 0x5932680a, 0x0505fef1, 0x5934000f, 0x8d0c0512, - 0x05020005, 0x5934140b, 0x80081040, 0x05001002, - 0x480a6c0b, 0x80000540, 0x05020a19, 0x59b800ea, - 0x8c000510, 0x05fe07d7, 0x1c01f000, 0x0145f8b9, - 0x05fc07e6, 0x0105f3ef, 0x59300221, 0x48025c13, - 0x05fdf7e8, 0x61567000, 0x0501f024, 0x83326500, - 0x3fffffff, 0x59300407, 0x90000583, 0x05020015, - 0x59325809, 0x5932680a, 0x4a025a08, 0x00000103, - 0x497a580d, 0x0501fa77, 0x59325827, 0x812e59c0, - 0x01060992, 0x0505fecd, 0x5934000f, 0x8d0c0512, - 0x05020005, 0x5934140b, 0x80081040, 0x05001002, - 0x480a6c0b, 0x80000540, 0x050209f5, 0x05fdf7dc, - 0x61527000, 0x0501f009, 0x83300500, 0x60000000, - 0x05000013, 0x81326580, 0x8000013a, 0x82000400, - 0x00100bfb, 0x50027000, 0x59300c07, 0x90040580, - 0x010403ef, 0x90040582, 0x010403ef, 0x59300004, - 0x8c00053e, 0x05020003, 0x0505fed4, 0x05fdf7c8, - 0x0145f8b9, 0x05fc07fd, 0x0105f3ef, 0x83300500, - 0x1f000000, 0x010403f1, 0x81326580, 0x80000130, - 0x90000c97, 0x01021dda, 0x1201f000, 0x00100bff, - 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff, - 0x80040d40, 0x4807c857, 0x59b800ea, 0x8c000516, - 0x0106051a, 0x480770e1, 0x1c01f000, 0x59325809, - 0x412c7000, 0x58380a08, 0x82040d00, 0x000000ff, - 0xb00405a8, 0x01040786, 0xb00405aa, 0x01040786, - 0xb00405ba, 0x0104079f, 0xb00405b2, 0x0104079f, - 0x58380a08, 0x9004050f, 0x82000c00, 0x001012ac, - 0x50044000, 0x0c01f001, 0x00100f85, 0x00100f85, - 0x00020168, 0x00100f85, 0x00100f85, 0x00100f85, - 0x00100f85, 0x00100f85, 0x00020176, 0x00100fa5, - 0x00100f85, 0x00100f85, 0x00100f85, 0x00100f85, - 0x00100f85, 0x00100f85, 0x5838040e, 0x8c000500, - 0x01000dda, 0x50200000, 0x80387c00, 0x583c1002, - 0x583c2800, 0x583c2001, 0x58380a0b, 0x58383013, - 0x59303808, 0x58380011, 0x48026014, 0x0501f00e, - 0x5838020e, 0x8c000502, 0x01040785, 0x50200000, - 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002, - 0x592c0a0b, 0x592c3013, 0x59303808, 0x497a6014, - 0x497a6015, 0x48166010, 0x48126011, 0x480a6012, - 0x481a6013, 0x80040840, 0x4806600f, 0x010607cc, - 0x841c3d40, 0x481e6008, 0x1c01f000, 0x4d2c0000, - 0x59325809, 0x592c0a08, 0x4807c857, 0x82040d00, - 0x000000ff, 0x9004050f, 0x1201f000, 0x001010f0, - 0x41787800, 0x59325809, 0x592c0c0e, 0x8c040502, - 0x01080120, 0x592c0011, 0x592c1013, 0x592c0a08, - 0x480a6013, 0x48026014, 0x48026015, 0x82040d00, - 0x000000ff, 0xb00405b2, 0x01080126, 0xb00405ba, - 0x01080126, 0x412c3000, 0x9004050f, 0x82000400, - 0x001012ac, 0x50003800, 0x8c3c050e, 0x05000002, - 0x801c3800, 0x501c0000, 0x592c1a0b, 0x4802600c, - 0x481a600d, 0x481e600e, 0x480e600f, 0x843c7d4a, - 0x403c1000, 0x1c01f000, 0x59e00004, 0x8c00050e, - 0x05fe06ac, 0x1c01f000, 0x42001000, 0x001105e7, - 0x5808000a, 0x80000540, 0x010a06ac, 0x4a001003, - 0x001105f1, 0x4c080000, 0x0501f812, 0x5c001000, - 0x4814100a, 0x480c1007, 0x48101008, 0x64001001, - 0x64101005, 0x64041004, 0x05fdf655, 0x58300802, - 0x82040580, 0x00000100, 0x010a06bb, 0x82300580, - 0x001105e7, 0x010a06b6, 0x4978600a, 0x1c01f000, - 0x61901800, 0x800c1840, 0x05000006, 0x64070000, - 0x40000000, 0x59800000, 0x8c000500, 0x05fc07fa, - 0x01080706, 0x600028f4, 0x58142024, 0x58141823, - 0x58142825, 0x64030000, 0x1c01f000, 0x4c000000, - 0x4df00000, 0x4203e000, 0xb0100000, 0x41f00000, - 0x81fe1500, 0x8d080512, 0x010e092d, 0x8d08051c, - 0x05060ccd, 0x8d080518, 0x05060d00, 0x8d08051a, - 0x05fe0ed6, 0x83080500, 0x00000d00, 0x05020804, - 0x5c03e000, 0x5c000000, 0x1801f000, 0x8d080516, - 0x010a0f6d, 0x8d080514, 0x05fe0fbc, 0x8d080508, - 0x010a0b68, 0x8d080500, 0x05060c27, 0x8d08050c, - 0x010e0830, 0x8d08050a, 0x010a049f, 0x1c01f000, - 0x42000000, 0x0010dd09, 0x50000000, 0x8c000504, - 0x05000013, 0x8c000508, 0x05020004, 0x8c000502, - 0x05020002, 0x1c01f000, 0x4df00000, 0x4203e000, - 0x50000000, 0x42034000, 0x0010dceb, 0x59a0001e, - 0x59a1d806, 0x84000502, 0x4803401e, 0x58ec0009, - 0x0801f800, 0x5c03e000, 0x1c01f000, 0x05027002, - 0x05026002, 0x1c01f000, 0x4df00000, 0x4203e000, - 0x50000000, 0x59e00020, 0xb0000d85, 0x05000003, - 0xb0000d84, 0x05020007, 0x4803c857, 0x42000800, - 0x000211a7, 0x58040800, 0x90040d80, 0x05020019, - 0x0105f982, 0x05000017, 0x412dd800, 0x48efc857, - 0x0125f8b5, 0x42034000, 0x0010dceb, 0x49a1d80b, - 0x48ef4006, 0x59a0001e, 0x84000544, 0x4803401e, - 0x59e00020, 0x4803c857, 0x59e00021, 0x4803c857, - 0x59e00022, 0x4803c857, 0x59e00023, 0x4803c857, - 0x59e00024, 0x4803c857, 0x0115f957, 0x0115f96f, - 0x5c03e000, 0x1c01f000, 0x4c5c0000, 0x4da00000, - 0x4df00000, 0x4203e000, 0x50000000, 0x05006062, - 0x42034000, 0x0010dceb, 0x59a01018, 0x59a01819, - 0x800c19c0, 0x05020009, 0x59a0381c, 0x801c39c0, - 0x01000dda, 0x49a3c857, 0x481fc857, 0x59a0041d, - 0x801c3c00, 0x0501f00a, 0x59a0041a, 0x90000402, - 0x4803441a, 0x90000c97, 0x05001003, 0x497b441a, - 0x41780000, 0x59a03817, 0x801c3c00, 0x401cb800, - 0x80081040, 0x480b4018, 0x581c0200, 0x4803c021, - 0x581c0401, 0x4803c022, 0x581c0201, 0x4803c023, - 0x581c0400, 0x4803c020, 0x900001c0, 0x90000552, - 0x4803c011, 0x8d0c0530, 0x0500000f, 0x4c080000, - 0x4c0c0000, 0x4c1c0000, 0x59e00017, 0x8c00050a, - 0x05000004, 0x60000800, 0x05fdfe16, 0x0501f003, - 0x8c000500, 0x05fe0f3d, 0x5c003800, 0x5c001800, - 0x5c001000, 0x6403c017, 0x4203e000, 0x30000001, - 0x800c19c0, 0x05000007, 0x800c1840, 0x480f4019, - 0x0502001b, 0x497b441a, 0x497b421a, 0x0501f018, - 0x800811c0, 0x0502000a, 0x4d2c0000, 0x59a2581c, - 0x0105f992, 0x5c025800, 0x497b401c, 0x497b401b, - 0x497b441d, 0x497b421d, 0x0501f00d, 0x59a0041d, - 0x90000402, 0x90000c96, 0x4803441d, 0x05001008, - 0x4d2c0000, 0x59a2581c, 0x592c3817, 0x481f401c, - 0x497b441d, 0x0105f992, 0x5c025800, 0x8d0c052a, - 0x05000009, 0x60083800, 0x42000800, 0x25000000, - 0x585c1800, 0x585c3001, 0x900c19c0, 0x901831c0, - 0x0101fea6, 0x5c03e000, 0x5c034000, 0x5c00b800, - 0x1c01f000, 0x8d0c0520, 0x05000003, 0x59a80005, - 0x8c000516, 0x1c01f000, 0x910c0503, 0x012a02dd, - 0x59340400, 0x82000580, 0x00000606, 0x012a02b7, - 0x5934000d, 0x80027d40, 0x012a02e6, 0x592c1003, - 0x5808020a, 0x8c000500, 0x05000005, 0x592c1813, - 0x5808000d, 0x800c0400, 0x4800100d, 0x5934000f, - 0x59341203, 0x80080540, 0x05020021, 0x8d0c0512, - 0x05000010, 0x0505fcf0, 0x05000017, 0x59a800d2, - 0x80000040, 0x05fe07ff, 0x492e6009, 0x4936600a, - 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, - 0x20000000, 0x4801a8e1, 0x80000580, 0x1c01f000, - 0x5934000b, 0x80001920, 0x82000500, 0x0000ffff, - 0x800c0480, 0x0502100a, 0x800c1800, 0x480e6c0b, - 0x05fdf7e9, 0x8d0c0512, 0x05020005, 0x59341c0b, - 0x800c1840, 0x480e6c0b, 0x59341203, 0x0501f803, - 0x80000580, 0x1c01f000, 0x800811c0, 0x05020002, - 0x64066a03, 0x59340010, 0x492e6810, 0x80000d40, - 0x05020008, 0x492e680f, 0x592c040a, 0x800000c2, - 0x800018c4, 0x800c0400, 0x48025807, 0x1c01f000, - 0x492c0800, 0x05fdf7f9, 0x83440c80, 0x00000800, - 0x05021009, 0x83440400, 0x0010d400, 0x50000000, - 0x80000540, 0x05000004, 0x40026800, 0x80000580, - 0x1c01f000, 0x90000541, 0x1c01f000, 0x59340203, - 0x80000540, 0x05020036, 0x4d300000, 0x4d2c0000, - 0x5934000f, 0x80025d40, 0x0500002f, 0x0505fcaa, - 0x05000021, 0x592c0000, 0x4802680f, 0x80000540, - 0x05020002, 0x48026810, 0x592c2a08, 0x4936600a, - 0x4c080000, 0x012dfdc8, 0x5c001000, 0x05000025, - 0x492e6009, 0x8d0c0512, 0x05000010, 0x58d400ea, - 0x8c000516, 0x05fe07fe, 0x83300400, 0x20000000, - 0x4801a8e1, 0x8d0c0512, 0x05fe07e6, 0x5934000b, - 0x80001120, 0x82000500, 0x0000ffff, 0x80080480, - 0x05fc17e0, 0x0501f010, 0x80081000, 0x480a6c0b, - 0x05fdf7ef, 0x4c080000, 0x012dfdc8, 0x05020008, - 0x42000000, 0x0010e444, 0x0165ffdc, 0x015dfa53, - 0x05000003, 0x5c001000, 0x05fdf7d7, 0x5c001000, - 0x64066a03, 0x5c025800, 0x5c026000, 0x1c01f000, - 0x497a5800, 0x4932580d, 0x4a026007, 0x00068000, - 0x641e6203, 0x0501f802, 0x05fdf7df, 0x592e440b, - 0x83224500, 0x000000ff, 0x83200400, 0x0010d17b, - 0x50024800, 0x4926601d, 0x592c0210, 0x48026202, - 0x59240206, 0x8c000510, 0x012a070a, 0x8d0c050e, - 0x012a0708, 0x59240200, 0x8c000516, 0x012a0706, - 0x59340200, 0x8c000518, 0x012a0704, 0x64025a0a, - 0x8c000508, 0x012a0702, 0x492e6009, 0x4d3c0000, - 0x417a7800, 0x0505fac6, 0x5c027800, 0x1c01f000, - 0x58040001, 0x49680800, 0x49780801, 0x815eb800, - 0x4006d000, 0x80000d40, 0x05fe07fa, 0x497a5801, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x1c01f000, 0x59980005, 0x48032823, 0x59d8010b, - 0x48033006, 0x1c01f000, 0x59980005, 0x59747408, - 0x58387100, 0x483aec02, 0x4802e803, 0x1c01f000, - 0x592c0408, 0x8c00051e, 0x012e0618, 0x497a5800, - 0x8d0c0516, 0x05020003, 0x0501fa49, 0x0501f011, - 0x8d0c0526, 0x0502000d, 0x0502d007, 0x592c0001, - 0x492fb107, 0x80000d40, 0x05fe0fda, 0x0500e1c4, - 0x1c01f000, 0x0500e9c2, 0x05fcd7f9, 0x42000000, - 0x0010e3a8, 0x0165ffdf, 0x0501fa39, 0x0500da49, - 0x0500e1bb, 0x59d80105, 0x82000d00, 0x01238780, - 0x05020257, 0x1c01f000, 0x59980003, 0x0c01f001, - 0x000203a8, 0x000203a9, 0x00020421, 0x00020461, - 0x000203b7, 0x000204de, 0x1c01f000, 0x4df00000, - 0x4203e000, 0x50000000, 0x05026a8e, 0x05006003, - 0x8d0c0520, 0x05020b35, 0x830c0580, 0x00080800, - 0x82000500, 0x00080800, 0x05000a2e, 0x5c03e000, + 0x8c040516, 0x05000004, 0x5988011f, 0x80000000, + 0x4803111f, 0x8c040514, 0x05000004, 0x59880120, + 0x80000000, 0x48031120, 0x5c000000, 0x1c01f000, + 0x4807c857, 0x4c000000, 0x8c040510, 0x05000004, + 0x59880121, 0x80000000, 0x48031121, 0x8c04050c, + 0x05000004, 0x59880122, 0x80000000, 0x48031122, + 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000, + 0x8c040508, 0x05000004, 0x59880123, 0x80000000, + 0x48031123, 0x8c040504, 0x05000004, 0x59880124, + 0x80000000, 0x48031124, 0x5c000000, 0x1c01f000, + 0x4807c856, 0x4c000000, 0x598800ed, 0x80000000, + 0x480310ed, 0x5c000000, 0x1c01f000, 0x5c036000, + 0x4db00000, 0x49b3c857, 0x4c040000, 0x50000800, + 0x80040800, 0x05001002, 0x44040000, 0x5c000800, + 0x1c01f000, 0x480fc857, 0x4c000000, 0x900c0580, + 0x05020004, 0x42000000, 0x001123b2, 0x0501f012, + 0x820c0580, 0x00001001, 0x05020004, 0x42000000, + 0x001123b3, 0x0501f00c, 0x820c0580, 0x00001002, + 0x05020004, 0x42000000, 0x001123b4, 0x0501f006, + 0x820c0c80, 0x0000201c, 0x05961e9f, 0x900c051f, + 0x0c01f804, 0x05fdffde, 0x5c000000, 0x1c01f000, + 0x0010d798, 0x0010d79b, 0x0010d79e, 0x0010d7a1, + 0x0010d7a4, 0x0010d7a7, 0x0010d7aa, 0x0010d7ad, + 0x0010d7b0, 0x0010d7b3, 0x0010d7b6, 0x0010d7b9, + 0x0010d7bc, 0x0010d7bf, 0x0010d7c2, 0x0010d7c5, + 0x0010d7c8, 0x0010d7cb, 0x0010d7ce, 0x0010d7d1, + 0x0010d7d4, 0x0010d7d7, 0x0010d7da, 0x0010d7dd, + 0x0010d7e0, 0x0010d7e3, 0x0010d7e6, 0x0010d7e9, + 0x42000000, 0x001123b5, 0x1c01f000, 0x42000000, + 0x001123b6, 0x1c01f000, 0x42000000, 0x001123b7, + 0x1c01f000, 0x42000000, 0x001123b8, 0x1c01f000, + 0x42000000, 0x001123b9, 0x1c01f000, 0x42000000, + 0x001123ba, 0x1c01f000, 0x42000000, 0x001123bb, + 0x1c01f000, 0x42000000, 0x001123bc, 0x1c01f000, + 0x42000000, 0x001123bd, 0x1c01f000, 0x42000000, + 0x001123be, 0x1c01f000, 0x42000000, 0x001123bf, + 0x1c01f000, 0x42000000, 0x001123c0, 0x1c01f000, + 0x42000000, 0x001123c1, 0x1c01f000, 0x42000000, + 0x001123c2, 0x1c01f000, 0x42000000, 0x001123c3, + 0x1c01f000, 0x42000000, 0x001123c4, 0x1c01f000, + 0x42000000, 0x001123c5, 0x1c01f000, 0x42000000, + 0x001123c6, 0x1c01f000, 0x42000000, 0x001123c7, + 0x1c01f000, 0x42000000, 0x001123c8, 0x1c01f000, + 0x42000000, 0x001123c9, 0x1c01f000, 0x42000000, + 0x001123ca, 0x1c01f000, 0x42000000, 0x001123cb, + 0x1c01f000, 0x42000000, 0x001123cc, 0x1c01f000, + 0x42000000, 0x001123cd, 0x1c01f000, 0x42000000, + 0x001123ce, 0x1c01f000, 0x42000000, 0x001123cf, + 0x1c01f000, 0x42000000, 0x001123d0, 0x1c01f000, + 0x480fc857, 0x4c000000, 0x900c0585, 0x05020004, + 0x42000000, 0x00112335, 0x0501f00f, 0x900c0582, + 0x05020004, 0x42000000, 0x00112336, 0x0501f00a, + 0x900c0583, 0x05020004, 0x42000000, 0x00112337, + 0x0501f005, 0x900c0584, 0x05020004, 0x42000000, + 0x00112338, 0x05fdff56, 0x5c000000, 0x1c01f000, + 0x4c000000, 0x59a8024c, 0x4803c857, 0x59240a00, + 0x8c04050a, 0x05000010, 0x8c000506, 0x05000004, + 0x42000000, 0x00112340, 0x0501f011, 0x8c00050a, + 0x05000004, 0x42000000, 0x0011233f, 0x0501f00c, + 0x8c000508, 0x05000004, 0x42000000, 0x00112342, + 0x0501f007, 0x05c5fb7f, 0x05000006, 0x8c000506, + 0x05020004, 0x42000000, 0x00112341, 0x05fdff38, + 0x5c000000, 0x1c01f000, 0x8058b1c0, 0x05940df2, + 0x5450a800, 0x8050a000, 0x8054a800, 0x8058b040, + 0x05fe07fc, 0x1c01f000, 0x8058b1c0, 0x05940dea, + 0x4450a800, 0x8054a800, 0x8058b040, 0x05fe07fd, + 0x1c01f000, 0x4813c857, 0x4817c857, 0x40140000, + 0x80100480, 0x05961de0, 0x497bc841, 0x41787000, + 0x42006800, 0x00140000, 0x59a800cf, 0x8c000500, + 0x05000003, 0x42006800, 0x0013a000, 0x4837c857, + 0x8010048d, 0x05021005, 0x8014048d, 0x05001003, + 0x40147000, 0x80342840, 0x61fc7801, 0x40100000, + 0x80140480, 0x82006d00, 0xffffff00, 0x05020002, + 0x40007800, 0x4813c840, 0x483fc842, 0x05011000, + 0x40100000, 0x803c2400, 0x40100000, 0x80140580, + 0x05fe07f3, 0x45782800, 0x803871c0, 0x05000005, + 0x40382800, 0x41787000, 0x80102000, 0x05fdf7eb, + 0x1c01f000, 0x8058b1c0, 0x05940db7, 0x50500000, + 0x9c0001c0, 0x4400a800, 0x8050a000, 0x8054a800, + 0x8058b040, 0x05fe07fa, 0x1c01f000, 0x4c000000, + 0x59a80007, 0x8c00051c, 0x5c000000, 0x1c01f000, + 0x59a80007, 0x8c000518, 0x1c01f000, 0x4200b000, + 0x001124b5, 0x5058b000, 0x1c01f000, 0x42006800, + 0x001124b6, 0x58340406, 0x8c000502, 0x05fc07f8, + 0x6004b000, 0x1c01f000, 0x61906800, 0x80346840, + 0x05000006, 0x64070000, 0x40000000, 0x59807000, + 0x8c380500, 0x05fc07fa, 0x1c01f000, 0x4c040000, + 0x05fdfff6, 0x05020003, 0x80040840, 0x05fe07fd, + 0x5c000800, 0x1c01f000, 0x640f0000, 0x40000000, + 0x59800000, 0x8c000500, 0x05fc07fc, 0x1c01f000, + 0x42006800, 0x001124b6, 0x58340406, 0x8c000504, + 0x1c01f000, 0x42006800, 0x001124b5, 0x50346800, + 0x42007000, 0x001124b6, 0x58380200, 0x8c000500, + 0x05020004, 0x9038740d, 0x80346840, 0x05fe07fb, + 0x1c01f000, 0x42006800, 0x001124b6, 0x58340406, + 0x8c000508, 0x1c01f000, 0x42006800, 0x001124b6, + 0x58340406, 0x8c00050a, 0x1c01f000, 0x59a80006, + 0x8c000516, 0x1c01f000, 0x599c0017, 0x8c00051e, + 0x1c01f000, 0x42006800, 0x001124b5, 0x50346800, + 0x59cc7000, 0x42007800, 0x001124b6, 0x583c0005, + 0x80380580, 0x82000500, 0x00ffffff, 0x05000006, + 0x80346840, 0x05000003, 0x903c7c0d, 0x05fdf7f8, + 0x90000541, 0x1c01f000, 0x59a86a4c, 0x8c34050a, + 0x0500000a, 0x8c340514, 0x05000008, 0x42006800, + 0x001124b5, 0x50346800, 0xb0340481, 0x05001004, + 0x599c0017, 0x8c00050a, 0x1c01f000, 0x80000580, + 0x05fdf7fe, 0x59a80006, 0x8c000518, 0x05000002, + 0x8d0c0520, 0x1c01f000, 0x599c0019, 0x8c00050c, + 0x1c01f000, 0x00000001, 0x00000002, 0x00000004, + 0x00000008, 0x00000010, 0x00000020, 0x00000040, + 0x00000080, 0x00000100, 0x00000200, 0x00000400, + 0x00000800, 0x00001000, 0x00002000, 0x00004000, + 0x00008000, 0x00010000, 0x00020000, 0x00040000, + 0x00080000, 0x00100000, 0x00200000, 0x00400000, + 0x00800000, 0x01000000, 0x02000000, 0x04000000, + 0x08000000, 0x10000000, 0x20000000, 0x40000000, + 0x80000000, 0x001124b6, 0x001124c3, 0x001124d0, + 0x001124dd, 0x001124ea, 0x001124f7, 0x00112504, + 0x00112511, 0x0011251e, 0x0011252b, 0x00112538, + 0x00112545, 0x00112552, 0x0011255f, 0x0011256c, + 0x00112579, 0x00112586, 0x00112593, 0x001125a0, + 0x001125ad, 0x001125ba, 0x001125c7, 0x001125d4, + 0x001125e1, 0x001125ee, 0x001125fb, 0x00112608, + 0x00112615, 0x00112622, 0x0011262f, 0x0011263c, + 0x00112649, 0x00112656, 0x00112663, 0x00112670, + 0x0011267d, 0x0011268a, 0x00112697, 0x001126a4, + 0x001126b1, 0x001126be, 0x001126cb, 0x001126d8, + 0x001126e5, 0x001126f2, 0x001126ff, 0x0011270c, + 0x00112719, 0x00112726, 0x00112733, 0x00112740, + 0x0011274d, 0x0011275a, 0x00112767, 0x00112774, + 0x00112781, 0x0011278e, 0x0011279b, 0x001127a8, + 0x001127b5, 0x001127c2, 0x001127cf, 0x001127dc, + 0x001127e9, 0x001127f6, 0x00112803, 0x00112810, + 0x0011281d, 0x0011282a, 0x00112837, 0x00112844, + 0x00112851, 0x0011285e, 0x0011286b, 0x00112878, + 0x00112885, 0x00112892, 0x0011289f, 0x001128ac, + 0x001128b9, 0x001128c6, 0x001128d3, 0x001128e0, + 0x001128ed, 0x001128fa, 0x00112907, 0x00112914, + 0x00112921, 0x0011292e, 0x0011293b, 0x00112948, + 0x00112955, 0x00112962, 0x0011296f, 0x0011297c, + 0x00112989, 0x00112996, 0x001129a3, 0x001129b0, + 0x001129bd, 0x001129ca, 0x001129d7, 0x001129e4, + 0x001129f1, 0x001129fe, 0x00112a0b, 0x00112a18, + 0x00112a25, 0x00112a32, 0x00112a3f, 0x00112a4c, + 0x00112a59, 0x00112a66, 0x00112a73, 0x00112a80, + 0x00112a8d, 0x00112a9a, 0x00112aa7, 0x00112ab4, + 0x00112ac1, 0x00112ace, 0x00112adb, 0x00112ae8, + 0x00112af5, 0x00112b02, 0x00112b0f, 0x00112b1c, + 0x00112b29, 0x00112b36, 0x00112b43, 0x00112b50, + 0x00112b5d, 0x00112b6a, 0x00112b77, 0x00112b84, + 0x00112b91, 0x00112b9e, 0x00112bab, 0x00112bb8, + 0x00112bc5, 0x00112bd2, 0x00112bdf, 0x00112bec, + 0x00112bf9, 0x00112c06, 0x00112c13, 0x00112c20, + 0x00112c2d, 0x00112c3a, 0x00112c47, 0x00112c54, + 0x00112c61, 0x00112c6e, 0x00112c7b, 0x00112c88, + 0x00112c95, 0x00112ca2, 0x00112caf, 0x00112cbc, + 0x00112cc9, 0x00112cd6, 0x00112ce3, 0x00112cf0, + 0x00112cfd, 0x00112d0a, 0x00112d17, 0x00112d24, + 0x00112d31, 0x00112d3e, 0x00112d4b, 0x00112d58, + 0x00112d65, 0x00112d72, 0x00112d7f, 0x00112d8c, + 0x00112d99, 0x00112da6, 0x00112db3, 0x00112dc0, + 0x00112dcd, 0x00112dda, 0x00112de7, 0x00112df4, + 0x00112e01, 0x00112e0e, 0x00112e1b, 0x00112e28, + 0x00112e35, 0x00112e42, 0x00112e4f, 0x00112e5c, + 0x00112e69, 0x00112e76, 0x00112e83, 0x00112e90, + 0x00112e9d, 0x00112eaa, 0x00112eb7, 0x00112ec4, + 0x00112ed1, 0x00112ede, 0x00112eeb, 0x00112ef8, + 0x00112f05, 0x00112f12, 0x00112f1f, 0x00112f2c, + 0x00112f39, 0x00112f46, 0x00112f53, 0x00112f60, + 0x00112f6d, 0x00112f7a, 0x00112f87, 0x00112f94, + 0x00112fa1, 0x00112fae, 0x00112fbb, 0x00112fc8, + 0x00112fd5, 0x00112fe2, 0x00112fef, 0x00112ffc, + 0x00113009, 0x00113016, 0x00113023, 0x00113030, + 0x0011303d, 0x0011304a, 0x00113057, 0x00113064, + 0x00113071, 0x0011307e, 0x0011308b, 0x00113098, + 0x001130a5, 0x001130b2, 0x001130bf, 0x001130cc, + 0x001130d9, 0x001130e6, 0x001130f3, 0x00113100, + 0x0011310d, 0x0011311a, 0x00113127, 0x00113134, + 0x00113141, 0x0011314e, 0x0011315b, 0x00113168, + 0x00113175, 0x00113182, 0x0011318f, 0x0011319c, + 0x001131a9, 0x40000000, 0x600070e0, 0x60007820, + 0x4a007016, 0x00010001, 0x58380016, 0x8c000500, + 0x05fc07fc, 0x600c4000, 0x60003002, 0x64807808, + 0x583c2808, 0x8c14053e, 0x05000004, 0x80183040, + 0x05fe07fc, 0x0501f00d, 0x583c2808, 0x82140500, + 0x20000400, 0x82000580, 0x00000400, 0x05020005, + 0x82140500, 0x00000300, 0x90000580, 0x05000007, + 0x80204040, 0x05fe07ee, 0x4a007016, 0x00010000, + 0x90000541, 0x0501f040, 0x650c7808, 0x583c0009, + 0x8c000500, 0x05000005, 0x60002000, 0x4a007016, + 0x00010000, 0x0501f037, 0x65007808, 0x583c5809, + 0x65047808, 0x583c6009, 0x65087808, 0x583c6809, + 0x4a007016, 0x00010000, 0x82102d00, 0xf0000000, + 0x90140580, 0x05000002, 0x0501f020, 0x60202800, + 0x60003000, 0x803000c8, 0x40003800, 0x8030010a, + 0x801c3d80, 0x40300000, 0x80180580, 0x80100400, + 0x801c0400, 0x802c5c00, 0x803400c8, 0x40003800, + 0x8034010a, 0x801c3d80, 0x40340000, 0x80180580, + 0x801c0400, 0x80306400, 0x802c00c8, 0x40003800, + 0x802c010a, 0x801c3d80, 0x402c0000, 0x80180580, + 0x801c0400, 0x80346c00, 0x82183400, 0x9e3779b9, + 0x80142840, 0x05fe07e4, 0x0502000b, 0x402c0000, + 0x80040580, 0x05fe07c7, 0x40300000, 0x80080580, + 0x05fe07c4, 0x40340000, 0x800c0580, 0x05fe07c1, + 0x80000580, 0x1c01f000, 0x1c01f000, 0x42005000, + 0x7ff4c000, 0x58280800, 0x58281001, 0x58281802, + 0x58282003, 0x481350ec, 0x05fdff97, 0x05020807, + 0x82101d00, 0x0fffffff, 0x480fc021, 0x900c01c0, + 0x4803c022, 0x1c01f000, 0x497bc021, 0x497bc022, + 0x4a03c020, 0x00004020, 0x4a03c011, 0x40200011, + 0x6016d800, 0x05027011, 0x59e00020, 0x90000582, + 0x0502000e, 0x05006000, 0x4203e000, 0x40000000, + 0x59e00017, 0x60000800, 0x8c00050a, 0x059e0cc6, + 0x8d0c0530, 0x059e0cb9, 0x059e0cbb, 0x6403c017, + 0x4203e000, 0x30000001, 0x0595fd65, 0x05fdf7ff, + 0x59a808d6, 0x8c100502, 0x05000003, 0x84040d42, + 0x0501f007, 0x8c100504, 0x05000003, 0x84040d44, + 0x0501f003, 0x8c100500, 0x84040d40, 0x480750d6, + 0x1c01f000, 0x59a800d6, 0x8c000502, 0x05000009, + 0x4a0350d7, 0x0000008b, 0x4a0350d8, 0x0000008b, + 0x4a0350d9, 0x0000008b, 0x641350da, 0x0501f00c, + 0x8c000504, 0x05000006, 0x65bf50d7, 0x65bf50d8, + 0x65df50d9, 0x640350da, 0x0501f005, 0x64cf50d7, + 0x64cf50d8, 0x649750d9, 0x640350da, 0x1c01f000, + 0x909963d2, 0x00000000, 0x00000000, 0x00116000, + 0x0000320d, 0x00000000, 0x00000000, 0x00020000, + 0x000011e7, 0x916c0583, 0x010201aa, 0x42000000, + 0x00111c89, 0x50000000, 0x800001c0, 0x05020a46, + 0x0501fa03, 0x0501fffc, 0x0501fbb9, 0x8d0c0516, + 0x05000f77, 0x8d0c0516, 0x05000e2c, 0x59a800a5, + 0x80000540, 0x01060b27, 0x0505fcb9, 0x80ddb9c0, + 0x05000007, 0x4df00000, 0x4203e000, 0x50000000, + 0x58de5801, 0x0135fba1, 0x5c03e000, 0x05fdf7e6, + 0x835c0480, 0x00000104, 0x010411dc, 0x416a5800, + 0x592ed000, 0x497a5800, 0x497a5801, 0x815eb840, + 0x812e59c0, 0x1c01f000, 0x42007000, 0x000211e8, + 0x58380004, 0x49781000, 0x64001002, 0x48087004, + 0x80000d40, 0x05020006, 0x48087005, 0x58380000, + 0x80000540, 0x0500000a, 0x1c01f000, 0x48080800, + 0x05fdf7fb, 0x42007000, 0x000211e8, 0x58380000, + 0x80000540, 0x05000002, 0x1c01f000, 0x58380807, + 0x800409c0, 0x01060291, 0x58380005, 0x80006d40, + 0x05020002, 0x1c01f000, 0x58340000, 0x48347001, + 0x80000540, 0x05020002, 0x48007004, 0x48007005, + 0x4a03b805, 0x30000002, 0x58340007, 0x59dc0806, + 0x4803b800, 0x58340008, 0x4803b801, 0x58340806, + 0x4807b81f, 0x58340805, 0x58341003, 0x58340001, + 0x48047002, 0x48087003, 0x480bb803, 0x8c000500, + 0x05020004, 0x64087000, 0x6407c824, 0x0501f004, + 0x64047000, 0x6503c824, 0x0105f2bd, 0x58380802, + 0x600011fe, 0x82040480, 0x0000ff00, 0x05021003, + 0x40041000, 0x80000580, 0x48007002, 0x480bb802, + 0x4a03b805, 0x10000002, 0x1c01f000, 0x59dc0806, + 0x4a03b805, 0x20000000, 0x8c04053e, 0x05000009, + 0x8c040508, 0x01020e15, 0x42007000, 0x000211e8, + 0x58380000, 0x90001484, 0x0c001003, 0x0101fe15, + 0x1c01f000, 0x0002003e, 0x00020080, 0x00020087, + 0x00101557, 0x82040d00, 0x43200f80, 0x010602ca, + 0x58380002, 0x80000540, 0x05000008, 0x0105f2bd, + 0x82040d00, 0x43200f80, 0x010602ca, 0x58380002, + 0x80000540, 0x05fe07d6, 0x58386001, 0x58300009, + 0x4a006002, 0x00000100, 0x64007000, 0x80001540, + 0x05fc07ab, 0x59dc0000, 0x48006007, 0x59dc0001, + 0x48006008, 0x0809f800, 0x05fdf79f, 0x84040d1e, + 0x59e00017, 0x8c00050c, 0x05020007, 0x59a818a3, + 0x800400c4, 0x800c1c00, 0x580c0003, 0x8c000500, + 0x05000008, 0x59a800a5, 0x4c000000, 0x0105fb18, + 0x5c000000, 0x80000540, 0x010602e2, 0x1c01f000, + 0x4d2c0000, 0x4c040000, 0x4c0c0000, 0x05fdff71, + 0x5c001800, 0x5c000800, 0x05000014, 0x82040400, + 0x00111efa, 0x50000000, 0x48025806, 0x64025801, + 0x64125805, 0x64065804, 0x900c0402, 0x48025803, + 0x580c0000, 0x48025807, 0x580c0001, 0x48025808, + 0x4a025809, 0x000200c7, 0x4806580a, 0x412c1000, + 0x5c025800, 0x05fdf765, 0x5c025800, 0x0105f318, + 0x58300802, 0x82040580, 0x00000100, 0x010602d7, + 0x4d2c0000, 0x40325800, 0x0105f9ca, 0x5c025800, + 0x0105f2e2, 0x59b800ea, 0x82000d00, 0xf2000038, + 0x0106048a, 0x8c000510, 0x01040489, 0x59ba60e0, + 0x81300182, 0x0502104c, 0x05002030, 0x8532653e, + 0x59300407, 0x90000583, 0x0502002a, 0x59300203, + 0x90000584, 0x05020027, 0x59325809, 0x59300004, + 0x4a025a08, 0x00000103, 0x497a580d, 0x8c00053e, + 0x0502001a, 0x59300008, 0x82000500, 0x04000800, + 0x82000580, 0x04000800, 0x05000017, 0x0501faba, + 0x59325827, 0x812e59c0, 0x010609ca, 0x5932680a, + 0x0505ff1d, 0x5934000f, 0x8d0c0512, 0x05020005, + 0x5934140b, 0x80081040, 0x05001002, 0x480a6c0b, + 0x80000540, 0x05020a37, 0x59b800ea, 0x8c000510, + 0x05fe07d7, 0x1c01f000, 0x0145fd77, 0x05fc07e6, + 0x0105f482, 0x59300221, 0x48025c13, 0x05fdf7e8, + 0x61567000, 0x0501f024, 0x83326500, 0x3fffffff, + 0x59300407, 0x90000583, 0x05020015, 0x59325809, + 0x5932680a, 0x4a025a08, 0x00000103, 0x497a580d, + 0x0501fa95, 0x59325827, 0x812e59c0, 0x010609c9, + 0x0505fef9, 0x5934000f, 0x8d0c0512, 0x05020005, + 0x5934140b, 0x80081040, 0x05001002, 0x480a6c0b, + 0x80000540, 0x05020a13, 0x05fdf7dc, 0x61527000, + 0x0501f009, 0x83300500, 0x60000000, 0x05000013, + 0x81326580, 0x8000013a, 0x82000400, 0x00100c8e, + 0x50027000, 0x59300c07, 0x90040580, 0x01040482, + 0x90040582, 0x01040482, 0x59300004, 0x8c00053e, + 0x05020003, 0x0505ff05, 0x05fdf7c8, 0x0145fd77, + 0x05fc07fd, 0x0105f482, 0x83300500, 0x1f000000, + 0x01040484, 0x81326580, 0x80000130, 0x90000c9b, + 0x01021e15, 0x1201f000, 0x00100c92, 0x82000500, + 0xf0000000, 0x82040d00, 0x0fffffff, 0x80040d40, + 0x4807c857, 0x59b800ea, 0x8c000516, 0x010605b6, + 0x480770e1, 0x1c01f000, 0x59325809, 0x412c7000, + 0x58380a08, 0x82040d00, 0x000000ff, 0xb00405a8, + 0x01080024, 0xb00405aa, 0x01080024, 0xb00405ba, + 0x0108003d, 0xb00405b2, 0x0108003d, 0x58380a08, + 0x9004050f, 0x82000c00, 0x0010004b, 0x50044000, + 0x0c01f001, 0x00101023, 0x00101023, 0x00020170, + 0x00101023, 0x00101023, 0x00101023, 0x00101023, + 0x00101023, 0x0002017e, 0x00101043, 0x00101023, + 0x00101023, 0x00101023, 0x00101023, 0x00101023, + 0x00101023, 0x5838040e, 0x8c000500, 0x01000e15, + 0x50200000, 0x80387c00, 0x583c1002, 0x583c2800, + 0x583c2001, 0x58380a0b, 0x58383013, 0x59303808, + 0x58380011, 0x48026014, 0x0501f00e, 0x5838020e, + 0x8c000502, 0x01080023, 0x50200000, 0x80387c00, + 0x583c2800, 0x583c2001, 0x583c1002, 0x592c0a0b, + 0x592c3013, 0x59303808, 0x497a6014, 0x497a6015, + 0x48166010, 0x48126011, 0x480a6012, 0x481a6013, + 0x80040840, 0x4806600f, 0x010a006a, 0x841c3d40, + 0x481e6008, 0x1c01f000, 0x4d2c0000, 0x59325809, + 0x592c0a08, 0x4807c857, 0x82040d00, 0x000000ff, + 0x9004050f, 0x1201f000, 0x0010118f, 0x41787800, + 0x59325809, 0x592c0c0e, 0x8c040502, 0x010801bf, + 0x592c0011, 0x592c1013, 0x592c0a08, 0x480a6013, + 0x48026014, 0x48026015, 0x82040d00, 0x000000ff, + 0xb00405b2, 0x010801c5, 0xb00405ba, 0x010801c5, + 0x412c3000, 0x9004050f, 0x82000400, 0x0010004b, + 0x50003800, 0x8c3c050e, 0x05000002, 0x801c3800, + 0x501c0000, 0x592c1a0b, 0x4802600c, 0x481a600d, + 0x481e600e, 0x480e600f, 0x843c7d4a, 0x403c1000, + 0x1c01f000, 0x59e00004, 0x8c00050e, 0x05fe06ac, + 0x1c01f000, 0x42001000, 0x0011458b, 0x5808000a, + 0x80000540, 0x010a071d, 0x4a001003, 0x00114595, + 0x4c080000, 0x0501f812, 0x5c001000, 0x4814100a, + 0x480c1007, 0x48101008, 0x64001001, 0x64101005, + 0x64041004, 0x05fdf655, 0x58300802, 0x82040580, + 0x00000100, 0x010a072c, 0x82300580, 0x0011458b, + 0x010a0727, 0x4978600a, 0x1c01f000, 0x61901800, + 0x800c1840, 0x05000006, 0x64070000, 0x40000000, + 0x59800000, 0x8c000500, 0x05fc07fa, 0x01080777, + 0x600028f4, 0x58142024, 0x58141823, 0x58142825, + 0x64030000, 0x1c01f000, 0x4c000000, 0x4df00000, + 0x4203e000, 0xb0100000, 0x41f00000, 0x81fe1500, + 0x8d080512, 0x010e09a4, 0x8d08051c, 0x05060cfc, + 0x8d080518, 0x05060d2f, 0x8d08051a, 0x05fe0ed6, + 0x83080500, 0x00000d00, 0x05020804, 0x5c03e000, + 0x5c000000, 0x1801f000, 0x8d080516, 0x010a0fde, + 0x8d080514, 0x05fe0fbc, 0x8d080508, 0x010a0bdb, + 0x8d080500, 0x05060c55, 0x8d08050c, 0x010e08a1, + 0x8d08050a, 0x010a050e, 0x1c01f000, 0x42000000, + 0x00111c8f, 0x50000000, 0x8c000504, 0x05000013, + 0x8c000508, 0x05020004, 0x8c000502, 0x05020002, 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x59d8110a, 0x59d8010a, 0x80080580, 0x05fe07fd, - 0x59742c08, 0x59740003, 0x480aec09, 0x48082800, - 0x80000540, 0x05002011, 0x05000007, 0x59980004, - 0x90000585, 0x0500000d, 0x59a8009b, 0x81640580, - 0x0502000a, 0x58140100, 0x80080d80, 0x0500001f, - 0x59740c02, 0x80040d80, 0x0500000e, 0x59980805, - 0x4802ec02, 0x4806e803, 0x0500ead1, 0x8d0c0524, - 0x05020003, 0x5c03e000, 0x1c01f000, 0x59d8010b, - 0x59d8110a, 0x80080580, 0x05000010, 0x05fc67fa, - 0x05006013, 0x59740a09, 0x59e00017, 0x8c00050a, - 0x05020012, 0x8c04051e, 0x05020005, 0x59741202, - 0x800810e0, 0x90081554, 0x480bc011, 0x4807c017, - 0x4203e000, 0x30000001, 0x4a02e803, 0xffff0000, - 0x850e1d24, 0x0500eab6, 0x05fdf7e7, 0x850e1d64, - 0x0500eab3, 0x05fdf7e4, 0x4c040000, 0x05fdfc9d, - 0x5c000800, 0x8c04051e, 0x05fc07ed, 0x5c03e000, - 0x1c01f000, 0x592c0c08, 0x58040000, 0x58040900, - 0x80040580, 0x05000019, 0x592c0402, 0x80040580, - 0x05000005, 0x59980005, 0x48025803, 0x48065c02, - 0x1c01f000, 0x05006013, 0x592c0a09, 0x4a025803, - 0xffff0000, 0x59e00017, 0x8c00050a, 0x0502000e, - 0x8c04051e, 0x05020005, 0x592c0202, 0x800000e0, - 0x90000554, 0x4803c011, 0x4807c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x4a025803, 0xffff0000, - 0x1c01f000, 0x4c040000, 0x05fdfc76, 0x5c000800, - 0x8c04051e, 0x05fc07f1, 0x1c01f000, 0x4df00000, - 0x4203e000, 0x50000000, 0x59940023, 0x80000540, - 0x05002012, 0x05000007, 0x59980004, 0x90000585, - 0x0500000e, 0x59a8009b, 0x81640580, 0x0502000b, - 0x59d8010b, 0x59d8110a, 0x80080d80, 0x05000023, - 0x59980806, 0x80040d80, 0x05000013, 0x59980805, - 0x48072823, 0x48033006, 0x0500ea55, 0x8d0c0524, - 0x05020005, 0x8d0c0526, 0x050209a6, 0x5c03e000, - 0x1c01f000, 0x59d8110a, 0x59d8010a, 0x80080580, - 0x05fe07fd, 0x59d8010b, 0x80080580, 0x0500000f, - 0x05fc67f5, 0x05006012, 0x800810e0, 0x90081553, - 0x480bc011, 0x60040800, 0x59e00017, 0x8c00050a, - 0x0502000e, 0x8d0c0530, 0x0502000e, 0x6407c017, - 0x4203e000, 0x30000001, 0x4a032823, 0xffff0000, - 0x850e1d24, 0x0500ea36, 0x05fdf7e3, 0x850e1d64, - 0x0500ea33, 0x05fdf7e0, 0x05fdfc36, 0x05fdf7f4, - 0x8c000500, 0x05fe0d5d, 0x05fdf7f1, 0x4df00000, - 0x4203e000, 0x50000000, 0x59b800e4, 0x8c000518, - 0x0502001b, 0x830c0500, 0x00140000, 0x0502001b, - 0x59940023, 0x80000540, 0x0500200c, 0x05000017, - 0x59980004, 0x90000585, 0x05000008, 0x59a8009b, - 0x81640580, 0x05020005, 0x59a80099, 0x59a80898, - 0x80040580, 0x0500000c, 0x0500ea15, 0x05006004, - 0x8d0c0524, 0x0502000a, 0x0501fa4a, 0x8d0c0526, - 0x05020964, 0x5c03e000, 0x1c01f000, 0x4a0370e4, - 0x00002000, 0x850e1d68, 0x0500604c, 0x59d8090a, - 0x59d8010a, 0x80041580, 0x05fe07fd, 0x59d8190b, - 0x800c1580, 0x59981006, 0x480f3006, 0x05000037, - 0x0501f844, 0x59980007, 0x483b3007, 0x0500000d, - 0x8d0c0528, 0x05020021, 0x80380580, 0x05020004, - 0x40080000, 0x800c0580, 0x0500001c, 0x59980005, - 0x48032823, 0x830e1d00, 0xffebffff, 0x05fdf7e0, - 0x8d0c0528, 0x05020004, 0x40080000, 0x800c0580, - 0x05fe07f7, 0x800408e0, 0x90040d53, 0x60041000, - 0x4807c011, 0x59e00017, 0x8c00050a, 0x0502000f, - 0x8d0c0530, 0x05020012, 0x480bc017, 0x4203e000, - 0x30000001, 0x4a032823, 0xffff0000, 0x830e1d00, - 0xffebffff, 0x05fdf7ca, 0x800408e0, 0x90040d5d, - 0x60001000, 0x05fdf7ef, 0x4c080000, 0x40080800, - 0x05fdfbd8, 0x5c001000, 0x05fdf7f0, 0x8c000500, - 0x05fc07ee, 0x4c080000, 0x40080800, 0x05fdfcfb, - 0x5c001000, 0x05fdf7e9, 0x0501f80e, 0x59980007, - 0x483b3007, 0x05fc07e8, 0x80380580, 0x05000003, - 0x8d0c0528, 0x05fc07ce, 0x912801c0, 0x90000d5c, - 0x60001000, 0x05fdf7d7, 0x850e1d64, 0x05fdf7a7, - 0x59e0000f, 0x59e0680f, 0x80346d80, 0x05fe07fd, - 0x40025000, 0x59e00010, 0x59e07010, 0x80387580, - 0x05fe07fd, 0x40007000, 0x81280580, 0x1c01f000, + 0x42034000, 0x00111c71, 0x59a0001e, 0x59a1d806, + 0x84000502, 0x4803401e, 0x58ec0009, 0x0801f800, + 0x5c03e000, 0x1c01f000, 0x05027002, 0x05026002, + 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, + 0x59e00020, 0xb0000d85, 0x05000003, 0xb0000d84, + 0x05020007, 0x4803c857, 0x42000800, 0x000211e8, + 0x58040800, 0x90040d80, 0x05020019, 0x0105f9b9, + 0x05000017, 0x412dd800, 0x48efc857, 0x0125fa58, + 0x42034000, 0x00111c71, 0x49a1d80b, 0x48ef4006, + 0x59a0001e, 0x84000544, 0x4803401e, 0x59e00020, + 0x4803c857, 0x59e00021, 0x4803c857, 0x59e00022, + 0x4803c857, 0x59e00023, 0x4803c857, 0x59e00024, + 0x4803c857, 0x0115f9ff, 0x0115fa17, 0x5c03e000, + 0x1c01f000, 0x4c5c0000, 0x4da00000, 0x4df00000, + 0x4203e000, 0x50000000, 0x05006062, 0x42034000, + 0x00111c71, 0x59a01018, 0x59a01819, 0x800c19c0, + 0x05020009, 0x59a0381c, 0x801c39c0, 0x01000e15, + 0x49a3c857, 0x481fc857, 0x59a0041d, 0x801c3c00, + 0x0501f00a, 0x59a0041a, 0x90000402, 0x4803441a, + 0x90000c97, 0x05001003, 0x497b441a, 0x41780000, + 0x59a03817, 0x801c3c00, 0x401cb800, 0x80081040, + 0x480b4018, 0x581c0200, 0x4803c021, 0x581c0401, + 0x4803c022, 0x581c0201, 0x4803c023, 0x581c0400, + 0x4803c020, 0x900001c0, 0x90000552, 0x4803c011, + 0x8d0c0530, 0x0500000f, 0x4c080000, 0x4c0c0000, + 0x4c1c0000, 0x59e00017, 0x8c00050a, 0x05000004, + 0x60000800, 0x05fdfe16, 0x0501f003, 0x8c000500, + 0x05fe0f3d, 0x5c003800, 0x5c001800, 0x5c001000, + 0x6403c017, 0x4203e000, 0x30000001, 0x800c19c0, + 0x05000007, 0x800c1840, 0x480f4019, 0x0502001b, + 0x497b441a, 0x497b421a, 0x0501f018, 0x800811c0, + 0x0502000a, 0x4d2c0000, 0x59a2581c, 0x0105f9c9, + 0x5c025800, 0x497b401c, 0x497b401b, 0x497b441d, + 0x497b421d, 0x0501f00d, 0x59a0041d, 0x90000402, + 0x90000c96, 0x4803441d, 0x05001008, 0x4d2c0000, + 0x59a2581c, 0x592c3817, 0x481f401c, 0x497b441d, + 0x0105f9c9, 0x5c025800, 0x8d0c052a, 0x05000009, + 0x60083800, 0x42000800, 0x25000000, 0x585c1800, + 0x585c3001, 0x900c19c0, 0x901831c0, 0x0101fed5, + 0x5c03e000, 0x5c034000, 0x5c00b800, 0x1c01f000, + 0x8d0c0520, 0x05000003, 0x59a80005, 0x8c000516, + 0x1c01f000, 0x910c0503, 0x012a04d4, 0x59340400, + 0x82000580, 0x00000606, 0x012a04ae, 0x5934000d, + 0x80027d40, 0x012a04dd, 0x592c1003, 0x5808720a, + 0x8c380500, 0x05000005, 0x592c1813, 0x5808000d, + 0x800c0400, 0x4800100d, 0x5934000f, 0x59341203, + 0x80080540, 0x05020021, 0x8d0c0512, 0x05000010, + 0x0505fd1f, 0x05000017, 0x59a800d7, 0x80000040, + 0x05fe07ff, 0x492e6009, 0x4936600a, 0x58d400ea, + 0x8c000516, 0x05fe07fe, 0x83300400, 0x20000000, + 0x4801a8e1, 0x80000580, 0x1c01f000, 0x5934000b, + 0x80001920, 0x82000500, 0x0000ffff, 0x800c0480, + 0x0502100a, 0x800c1800, 0x480e6c0b, 0x05fdf7e9, + 0x8d0c0512, 0x05020005, 0x59341c0b, 0x800c1840, + 0x480e6c0b, 0x59341203, 0x0501f803, 0x80000580, + 0x1c01f000, 0x800811c0, 0x05020002, 0x64066a03, + 0x59340010, 0x492e6810, 0x80000d40, 0x05020008, + 0x492e680f, 0x592c040a, 0x800000c2, 0x800018c4, + 0x800c0400, 0x48025807, 0x1c01f000, 0x492c0800, + 0x05fdf7f9, 0x59a800ad, 0x81440480, 0x05021024, + 0x83442400, 0x0010db80, 0x50100000, 0x80000d40, + 0x0500001f, 0x82000d00, 0xe0000000, 0x0500001e, + 0x8d0c0538, 0x0500001a, 0x82000500, 0x00ffffff, + 0x82041d80, 0x20000000, 0x05000017, 0x82041d80, + 0x80000000, 0x05020007, 0x84040d7a, 0x4c000000, + 0x80040540, 0x44002000, 0x5c000000, 0x0501f00e, + 0x82041d80, 0xa0000000, 0x0500000b, 0x82041d80, + 0x40000000, 0x05020006, 0x4c040000, 0x012df81b, + 0x5c000800, 0x40340000, 0x05000003, 0x90000541, + 0x1c01f000, 0x40026800, 0x80000580, 0x05fdf7fd, + 0x59340203, 0x80000540, 0x05020036, 0x4d300000, + 0x4d2c0000, 0x5934000f, 0x80025d40, 0x0500002f, + 0x0505fcbb, 0x05000021, 0x592c0000, 0x4802680f, + 0x80000540, 0x05020002, 0x48026810, 0x592c2a08, + 0x4936600a, 0x4c080000, 0x0131f8a2, 0x5c001000, + 0x05000025, 0x492e6009, 0x8d0c0512, 0x05000010, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, + 0x20000000, 0x4801a8e1, 0x8d0c0512, 0x05fe07e6, + 0x5934000b, 0x80001120, 0x82000500, 0x0000ffff, + 0x80080480, 0x05fc17e0, 0x0501f010, 0x80081000, + 0x480a6c0b, 0x05fdf7ef, 0x4c080000, 0x0131f8a2, + 0x05020008, 0x42000000, 0x001123e6, 0x0169ff57, + 0x0161f906, 0x05000003, 0x5c001000, 0x05fdf7d7, + 0x5c001000, 0x64066a03, 0x5c025800, 0x5c026000, + 0x1c01f000, 0x497a5800, 0x4932580d, 0x4a026007, + 0x00068000, 0x641e6203, 0x0501f802, 0x05fdf7df, + 0x592e440b, 0x83224500, 0x000000ff, 0x83200400, + 0x0010d8f9, 0x50024800, 0x4926601d, 0x592c0210, + 0x48026202, 0x59240206, 0x8c000510, 0x012e0170, + 0x8d0c050e, 0x012e016e, 0x59240200, 0x8c000516, + 0x012e016c, 0x59340200, 0x8c000518, 0x012e016a, + 0x64025a0a, 0x8c000508, 0x012e0168, 0x492e6009, + 0x4d3c0000, 0x417a7800, 0x0505fad6, 0x5c027800, + 0x1c01f000, 0x58040001, 0x49680800, 0x49780801, + 0x815eb800, 0x4006d000, 0x80000d40, 0x05fe07fa, + 0x497a5801, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x1c01f000, 0x59980005, 0x48032823, + 0x59d8010b, 0x48033006, 0x1c01f000, 0x59980005, + 0x59747408, 0x58387100, 0x483aec02, 0x4802e803, + 0x1c01f000, 0x592c0408, 0x8c00051e, 0x013200fc, + 0x497a5800, 0x8d0c0516, 0x05020003, 0x0501fa49, + 0x0501f011, 0x8d0c0526, 0x0502000d, 0x0502d007, + 0x592c0001, 0x492fb107, 0x80000d40, 0x05fe0fda, + 0x0500e1c4, 0x1c01f000, 0x0500e9c2, 0x05fcd7f9, + 0x42000000, 0x00112349, 0x0169ff5a, 0x0501fa39, + 0x0500da49, 0x0500e1bb, 0x59d80105, 0x82000d00, + 0x01238780, 0x05020257, 0x1c01f000, 0x59980003, + 0x0c01f001, 0x000203ce, 0x000203cf, 0x00020447, + 0x00020487, 0x000203dd, 0x00020504, 0x1c01f000, + 0x4df00000, 0x4203e000, 0x50000000, 0x05026a8e, + 0x05006003, 0x8d0c0520, 0x05020b35, 0x830c0580, + 0x00080800, 0x82000500, 0x00080800, 0x05000a2e, + 0x5c03e000, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x59d8110a, 0x59d8010a, 0x80080580, + 0x05fe07fd, 0x59742c08, 0x59740003, 0x480aec09, + 0x48082800, 0x80000540, 0x05002011, 0x05000007, + 0x59980004, 0x90000585, 0x0500000d, 0x59a8009e, + 0x81640580, 0x0502000a, 0x58140100, 0x80080d80, + 0x0500001f, 0x59740c02, 0x80040d80, 0x0500000e, + 0x59980805, 0x4802ec02, 0x4806e803, 0x0500ead1, + 0x8d0c0524, 0x05020003, 0x5c03e000, 0x1c01f000, + 0x59d8010b, 0x59d8110a, 0x80080580, 0x05000010, + 0x05fc67fa, 0x05006013, 0x59740a09, 0x59e00017, + 0x8c00050a, 0x05020012, 0x8c04051e, 0x05020005, + 0x59741202, 0x800810e0, 0x90081554, 0x480bc011, + 0x4807c017, 0x4203e000, 0x30000001, 0x4a02e803, + 0xffff0000, 0x850e1d24, 0x0500eab6, 0x05fdf7e7, + 0x850e1d64, 0x0500eab3, 0x05fdf7e4, 0x4c040000, + 0x05fdfc7f, 0x5c000800, 0x8c04051e, 0x05fc07ed, + 0x5c03e000, 0x1c01f000, 0x592c0c08, 0x592c0409, + 0x58040900, 0x80040580, 0x05000019, 0x592c0402, + 0x80040580, 0x05000005, 0x59980005, 0x48025803, + 0x48065c02, 0x1c01f000, 0x05006013, 0x592c0a09, + 0x4a025803, 0xffff0000, 0x59e00017, 0x8c00050a, + 0x0502000e, 0x8c04051e, 0x05020005, 0x592c0202, + 0x800000e0, 0x90000554, 0x4803c011, 0x4807c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x4a025803, + 0xffff0000, 0x1c01f000, 0x4c040000, 0x05fdfc58, + 0x5c000800, 0x8c04051e, 0x05fc07f1, 0x1c01f000, + 0x4df00000, 0x4203e000, 0x50000000, 0x59940023, + 0x80000540, 0x05002012, 0x05000007, 0x59980004, + 0x90000585, 0x0500000e, 0x59a8009e, 0x81640580, + 0x0502000b, 0x59d8010b, 0x59d8110a, 0x80080d80, + 0x05000023, 0x59980806, 0x80040d80, 0x05000013, + 0x59980805, 0x48072823, 0x48033006, 0x0500ea55, + 0x8d0c0524, 0x05020005, 0x8d0c0526, 0x050209a6, + 0x5c03e000, 0x1c01f000, 0x59d8110a, 0x59d8010a, + 0x80080580, 0x05fe07fd, 0x59d8010b, 0x80080580, + 0x0500000f, 0x05fc67f5, 0x05006012, 0x800810e0, + 0x90081553, 0x480bc011, 0x60040800, 0x59e00017, + 0x8c00050a, 0x0502000e, 0x8d0c0530, 0x0502000e, + 0x6407c017, 0x4203e000, 0x30000001, 0x4a032823, + 0xffff0000, 0x850e1d24, 0x0500ea36, 0x05fdf7e3, + 0x850e1d64, 0x0500ea33, 0x05fdf7e0, 0x05fdfc18, + 0x05fdf7f4, 0x8c000500, 0x05fe0d3f, 0x05fdf7f1, 0x4df00000, 0x4203e000, 0x50000000, 0x59b800e4, - 0x8c000518, 0x05020067, 0x59d8110a, 0x59d8010a, - 0x80080580, 0x05fe07fd, 0x59742c08, 0x59740003, - 0x480aec09, 0x48082800, 0x80000540, 0x05002015, - 0x0500000b, 0x59980004, 0x90000585, 0x05000011, - 0x59a8009b, 0x81640580, 0x0502000e, 0x59a80099, - 0x59a80898, 0x80040580, 0x0500002a, 0x58140100, - 0x80080d80, 0x05000013, 0x59740c02, 0x80040d80, - 0x05000024, 0x59980805, 0x4802ec02, 0x4806e803, - 0x0500e9a3, 0x8d0c0524, 0x05020019, 0x05006007, - 0x8d0c0528, 0x0502000b, 0x59940023, 0x80000540, - 0x05000008, 0x0501f9bb, 0x5c03e000, 0x1c01f000, - 0x4a02e803, 0xffff0000, 0x850e1d24, 0x0500e994, - 0x05fdffc0, 0x59980007, 0x483b3007, 0x05000031, - 0x80380580, 0x05000024, 0x8d0c0528, 0x05020022, - 0x59980005, 0x48032823, 0x05fdf7f0, 0x59d8010b, - 0x59d8110a, 0x80080580, 0x05fc07ee, 0x05fc67eb, - 0x05006016, 0x59740a09, 0x59e00017, 0x8c00050a, - 0x05020028, 0x8c04051e, 0x05020005, 0x59741202, - 0x800810e0, 0x90081554, 0x480bc011, 0x4807c017, - 0x4203e000, 0x30000001, 0x4a02e803, 0xffff0000, - 0x4a032823, 0xffff0000, 0x830e1d00, 0xffebffff, - 0x0500e96f, 0x05fdf7d5, 0x850e1d64, 0x0500e96c, - 0x05fdf7d2, 0x05fc67d1, 0x912801c0, 0x90000d5c, - 0x4807c011, 0x59e00017, 0x8c00050a, 0x60000800, - 0x05fe0b50, 0x6403c017, 0x4203e000, 0x30000001, - 0x4a032823, 0xffff0000, 0x850e1d28, 0x05fdf7c3, - 0x4a0370e4, 0x00002000, 0x850e1d68, 0x05fdf797, - 0x4c040000, 0x05fdfb43, 0x5c000800, 0x8c04051e, - 0x05fc07d7, 0x5c03e000, 0x1c01f000, 0x59d81108, - 0x835c0480, 0x00000104, 0x0500101c, 0x0502b01a, - 0x480bb007, 0x05fce7fa, 0x59d80105, 0x82000500, - 0x01238780, 0x05020096, 0x8d0c0522, 0x0500001f, - 0x8d0c0516, 0x0502000c, 0x59d8090a, 0x59d8010a, - 0x80040580, 0x05fe07fd, 0x59741003, 0x59740408, - 0x48040000, 0x4806ec09, 0x800811c0, 0x05fc260f, - 0x1c01f000, 0x59940023, 0x80000540, 0x05fc2606, - 0x1c01f000, 0x0500f00a, 0x49681000, 0x400ad000, - 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, - 0x48039000, 0x05fee7e1, 0x05fdf7d9, 0x480ba807, - 0x05fee7de, 0x05fdf7d6, 0x05006024, 0x850e1d24, - 0x59d8010a, 0x59d8090a, 0x80040580, 0x05fe07fd, - 0x8d0c0516, 0x05000016, 0x59d8010b, 0x59d8110b, - 0x80081580, 0x05fe07fd, 0x80040580, 0x0500000f, - 0x800408e0, 0x8d0c0520, 0x05020016, 0x90040d53, - 0x4807c011, 0x59740a09, 0x59e00017, 0x8c00050a, - 0x05020031, 0x8d0c0530, 0x05020033, 0x4807c017, - 0x4203e000, 0x30000001, 0x1c01f000, 0x59740408, - 0x4806ec09, 0x48040000, 0x59740a02, 0x800408e0, - 0x90040d54, 0x05fdf7ef, 0x850e1d64, 0x1c01f000, - 0x59e0000f, 0x59b818e4, 0x59e0100f, 0x80081580, - 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, 0x81281580, - 0x05000012, 0x40025000, 0x820c0500, 0x04000000, - 0x850e1d34, 0x810e1d40, 0x90040d5d, 0x4807c011, - 0x59e00017, 0x60000800, 0x8c00050a, 0x0502000e, - 0x8d0c0530, 0x05020010, 0x6403c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x40001000, 0x400c0000, - 0x810c0580, 0x8c000534, 0x40080000, 0x05fe07ea, - 0x05fdf7cb, 0x4c040000, 0x05fdfaca, 0x5c000800, - 0x05fdf7cf, 0x8c000500, 0x05fc07cd, 0x4c040000, - 0x05fdfbee, 0x5c000800, 0x05fdf7c9, 0x592c2802, - 0x801429c0, 0x0500000d, 0x58140804, 0x592c0001, - 0x492c2804, 0x800409c0, 0x05000005, 0x492c0800, - 0x80000d40, 0x05fe058f, 0x1c01f000, 0x492c2805, - 0x850e1d66, 0x05fdf7fb, 0x492fc857, 0x0105f19b, - 0x0502d00c, 0x59740805, 0x58040000, 0x4807b107, - 0x80000d40, 0x05020005, 0x4802e804, 0x850e1d26, - 0x4802e805, 0x1c01f000, 0x05fcd7f8, 0x05fdf7fd, - 0x59d80105, 0x82000500, 0x01238780, 0x05020004, - 0x42000000, 0x0010e3a8, 0x0165f7df, 0x4803c857, - 0x485fc857, 0x8c00050e, 0x01020dd3, 0x4203e000, - 0x50000000, 0x6010b900, 0x0101f5de, 0x4a03b104, - 0x10000000, 0x592c4408, 0x592c1409, 0x800800cc, - 0x592c2006, 0x80100400, 0x4803b100, 0x497bb102, - 0x59d80101, 0x4813b100, 0x592c0007, 0x4803b101, - 0x592c0208, 0x82000540, 0x00400000, 0x4803b103, - 0x58200900, 0x480bb10a, 0x4807b10b, 0x592c0001, - 0x4803b11f, 0x4a03b104, 0x10000001, 0x412ee800, + 0x8c000518, 0x0502001b, 0x830c0500, 0x00140000, + 0x0502001b, 0x59940023, 0x80000540, 0x0500200c, + 0x05000017, 0x59980004, 0x90000585, 0x05000008, + 0x59a8009e, 0x81640580, 0x05020005, 0x59a8009c, + 0x59a8089b, 0x80040580, 0x0500000c, 0x0500ea15, + 0x05006004, 0x8d0c0524, 0x0502000a, 0x0501fa4a, + 0x8d0c0526, 0x05020964, 0x5c03e000, 0x1c01f000, + 0x4a0370e4, 0x00002000, 0x850e1d68, 0x0500604c, + 0x59d8090a, 0x59d8010a, 0x80041580, 0x05fe07fd, + 0x59d8190b, 0x800c1580, 0x59981006, 0x480f3006, + 0x05000037, 0x0501f844, 0x59980007, 0x483b3007, + 0x0500000d, 0x8d0c0528, 0x05020021, 0x80380580, + 0x05020004, 0x40080000, 0x800c0580, 0x0500001c, + 0x59980005, 0x48032823, 0x830e1d00, 0xffebffff, + 0x05fdf7e0, 0x8d0c0528, 0x05020004, 0x40080000, + 0x800c0580, 0x05fe07f7, 0x800408e0, 0x90040d53, + 0x60041000, 0x4807c011, 0x59e00017, 0x8c00050a, + 0x0502000f, 0x8d0c0530, 0x05020012, 0x480bc017, + 0x4203e000, 0x30000001, 0x4a032823, 0xffff0000, + 0x830e1d00, 0xffebffff, 0x05fdf7ca, 0x800408e0, + 0x90040d5d, 0x60001000, 0x05fdf7ef, 0x4c080000, + 0x40080800, 0x05fdfbba, 0x5c001000, 0x05fdf7f0, + 0x8c000500, 0x05fc07ee, 0x4c080000, 0x40080800, + 0x05fdfcdd, 0x5c001000, 0x05fdf7e9, 0x0501f80e, + 0x59980007, 0x483b3007, 0x05fc07e8, 0x80380580, + 0x05000003, 0x8d0c0528, 0x05fc07ce, 0x912801c0, + 0x90000d5c, 0x60001000, 0x05fdf7d7, 0x850e1d64, + 0x05fdf7a7, 0x59e0000f, 0x59e0680f, 0x80346d80, + 0x05fe07fd, 0x40025000, 0x59e00010, 0x59e07010, + 0x80387580, 0x05fe07fd, 0x40007000, 0x81280580, 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x59741408, 0x58080900, 0x4807b10b, 0x8d0c0524, - 0x0502001a, 0x59d80106, 0x80000540, 0x05020017, - 0x59d80105, 0x82000500, 0x00006000, 0x05020013, - 0x599af808, 0x817ef9c0, 0x05000010, 0x41765800, - 0x592e5800, 0x592c1005, 0x800811c0, 0x05000006, - 0x412c0000, 0x81740580, 0x05fe0fcd, 0x05fdffb1, - 0x0501f006, 0x592c0003, 0x80000540, 0x05fc0dc6, - 0x817ef840, 0x05fe07f3, 0x5c03e000, 0x1c01f000, - 0x05fce71b, 0x59d80105, 0x82000500, 0x01238780, - 0x05fe07b7, 0x8d0c0524, 0x05020002, 0x1c01f000, - 0x59d8010a, 0x59d8090a, 0x80040580, 0x05fe07fd, - 0x850e1d24, 0x8d0c0516, 0x05000013, 0x59d8010b, - 0x80040580, 0x0500000f, 0x800408e0, 0x8d0c0520, - 0x05020014, 0x90040d53, 0x4807c011, 0x59740a09, - 0x59e00017, 0x8c00050a, 0x05020028, 0x8d0c0530, - 0x0502002a, 0x4807c017, 0x4203e000, 0x30000001, - 0x1c01f000, 0x59740408, 0x4806ec09, 0x48040000, - 0x59740a02, 0x800408e0, 0x90040d54, 0x05fdf7ef, - 0x59e0000f, 0x59b818e4, 0x59e0100f, 0x80081580, - 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, 0x81281580, - 0x0500001c, 0x40025000, 0x820c0500, 0x04000000, - 0x850e1d34, 0x810e1d40, 0x90040d5d, 0x4807c011, - 0x59e00017, 0x60000800, 0x8c00050a, 0x05020007, - 0x8d0c0530, 0x05020009, 0x6403c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x4c040000, 0x05fdfa15, - 0x5c000800, 0x05fdf7d8, 0x8c000500, 0x05fc07d6, - 0x4c040000, 0x05fdfb39, 0x5c000800, 0x05fdf7d2, - 0x40001000, 0x400c0000, 0x810c0580, 0x8c000534, - 0x40080000, 0x05fe07e0, 0x05fdf7c3, 0x59da5908, - 0x496a5800, 0x412ed000, 0x815eb800, 0x05fce7fc, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x59d8090b, 0x59980006, 0x48073006, 0x80040480, - 0x05020004, 0x59940023, 0x80000540, 0x05022003, - 0x59980805, 0x48072823, 0x59d80105, 0x82000500, - 0x01238780, 0x05fe0752, 0x1c01f000, 0x59da5908, - 0x496a5800, 0x412ed000, 0x815eb800, 0x05fce7fc, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x59740c08, 0x58040900, 0x4807b10b, 0x59740402, - 0x4806ec02, 0x80040480, 0x05020004, 0x59740003, - 0x80000540, 0x05022003, 0x59980805, 0x4806e803, - 0x59d8090a, 0x59d8010a, 0x80040580, 0x05fe07fd, - 0x59740408, 0x48040000, 0x4806ec09, 0x59d80105, - 0x82000500, 0x01238780, 0x05fe0731, 0x1c01f000, - 0x59981007, 0x59e00010, 0x59e00810, 0x80041d80, - 0x05fe07fd, 0x80080580, 0x0500000d, 0x48073007, + 0x59b800e4, 0x8c000518, 0x05020067, 0x59d8110a, + 0x59d8010a, 0x80080580, 0x05fe07fd, 0x59742c08, + 0x59740003, 0x480aec09, 0x48082800, 0x80000540, + 0x05002015, 0x0500000b, 0x59980004, 0x90000585, + 0x05000011, 0x59a8009e, 0x81640580, 0x0502000e, + 0x59a8009c, 0x59a8089b, 0x80040580, 0x0500002a, + 0x58140100, 0x80080d80, 0x05000013, 0x59740c02, + 0x80040d80, 0x05000024, 0x59980805, 0x4802ec02, + 0x4806e803, 0x0500e9a3, 0x8d0c0524, 0x05020019, + 0x05006007, 0x8d0c0528, 0x0502000b, 0x59940023, + 0x80000540, 0x05000008, 0x0501f9bb, 0x5c03e000, + 0x1c01f000, 0x4a02e803, 0xffff0000, 0x850e1d24, + 0x0500e994, 0x05fdffc0, 0x59980007, 0x483b3007, + 0x05000031, 0x80380580, 0x05000024, 0x8d0c0528, + 0x05020022, 0x59980005, 0x48032823, 0x05fdf7f0, + 0x59d8010b, 0x59d8110a, 0x80080580, 0x05fc07ee, + 0x05fc67eb, 0x05006016, 0x59740a09, 0x59e00017, + 0x8c00050a, 0x05020028, 0x8c04051e, 0x05020005, + 0x59741202, 0x800810e0, 0x90081554, 0x480bc011, + 0x4807c017, 0x4203e000, 0x30000001, 0x4a02e803, + 0xffff0000, 0x4a032823, 0xffff0000, 0x830e1d00, + 0xffebffff, 0x0500e96f, 0x05fdf7d5, 0x850e1d64, + 0x0500e96c, 0x05fdf7d2, 0x05fc67d1, 0x912801c0, + 0x90000d5c, 0x4807c011, 0x59e00017, 0x8c00050a, + 0x60000800, 0x05fe0b32, 0x6403c017, 0x4203e000, + 0x30000001, 0x4a032823, 0xffff0000, 0x850e1d28, + 0x05fdf7c3, 0x4a0370e4, 0x00002000, 0x850e1d68, + 0x05fdf797, 0x4c040000, 0x05fdfb25, 0x5c000800, + 0x8c04051e, 0x05fc07d7, 0x5c03e000, 0x1c01f000, + 0x59d81108, 0x835c0480, 0x00000104, 0x0500101c, + 0x0502b01a, 0x480bb007, 0x05fce7fa, 0x59d80105, + 0x82000500, 0x01238780, 0x05020096, 0x8d0c0522, + 0x0500001f, 0x8d0c0516, 0x0502000c, 0x59d8090a, + 0x59d8010a, 0x80040580, 0x05fe07fd, 0x59741003, + 0x59740408, 0x48040000, 0x4806ec09, 0x800811c0, + 0x05fc260f, 0x1c01f000, 0x59940023, 0x80000540, + 0x05fc2606, 0x1c01f000, 0x0500f00a, 0x49681000, + 0x400ad000, 0x815eb800, 0x59c80000, 0x82000540, + 0x00001200, 0x48039000, 0x05fee7e1, 0x05fdf7d9, + 0x480ba807, 0x05fee7de, 0x05fdf7d6, 0x05006024, + 0x850e1d24, 0x59d8010a, 0x59d8090a, 0x80040580, + 0x05fe07fd, 0x8d0c0516, 0x05000016, 0x59d8010b, + 0x59d8110b, 0x80081580, 0x05fe07fd, 0x80040580, + 0x0500000f, 0x800408e0, 0x8d0c0520, 0x05020016, + 0x90040d53, 0x4807c011, 0x59740a09, 0x59e00017, + 0x8c00050a, 0x05020031, 0x8d0c0530, 0x05020033, + 0x4807c017, 0x4203e000, 0x30000001, 0x1c01f000, + 0x59740408, 0x4806ec09, 0x48040000, 0x59740a02, + 0x800408e0, 0x90040d54, 0x05fdf7ef, 0x850e1d64, + 0x1c01f000, 0x59e0000f, 0x59b818e4, 0x59e0100f, + 0x80081580, 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, + 0x81281580, 0x05000012, 0x40025000, 0x820c0500, + 0x04000000, 0x850e1d34, 0x810e1d40, 0x90040d5d, + 0x4807c011, 0x59e00017, 0x60000800, 0x8c00050a, + 0x0502000e, 0x8d0c0530, 0x05020010, 0x6403c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x40001000, + 0x400c0000, 0x810c0580, 0x8c000534, 0x40080000, + 0x05fe07ea, 0x05fdf7cb, 0x4c040000, 0x05fdfaac, + 0x5c000800, 0x05fdf7cf, 0x8c000500, 0x05fc07cd, + 0x4c040000, 0x05fdfbd0, 0x5c000800, 0x05fdf7c9, + 0x592c2802, 0x801429c0, 0x0500000d, 0x58140804, + 0x592c0001, 0x492c2804, 0x800409c0, 0x05000005, + 0x492c0800, 0x80000d40, 0x05fe058f, 0x1c01f000, + 0x492c2805, 0x850e1d66, 0x05fdf7fb, 0x492fc857, + 0x0105f1d2, 0x0502d00c, 0x59740805, 0x58040000, + 0x4807b107, 0x80000d40, 0x05020005, 0x4802e804, + 0x850e1d26, 0x4802e805, 0x1c01f000, 0x05fcd7f8, + 0x05fdf7fd, 0x59d80105, 0x82000500, 0x01238780, + 0x05020004, 0x42000000, 0x00112349, 0x0169f75a, + 0x4803c857, 0x485fc857, 0x8c00050e, 0x01020e0e, + 0x4203e000, 0x50000000, 0x6010b900, 0x0101f619, + 0x4a03b104, 0x10000000, 0x592c4408, 0x592c1409, + 0x800800cc, 0x592c2006, 0x80100400, 0x4803b100, + 0x497bb102, 0x59d80101, 0x4813b100, 0x592c0007, + 0x4803b101, 0x592c0208, 0x82000540, 0x00400000, + 0x4803b103, 0x58200900, 0x480bb10a, 0x4807b10b, + 0x592c0001, 0x4803b11f, 0x4a03b104, 0x10000001, + 0x412ee800, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x59741408, 0x58080900, 0x4807b10b, + 0x8d0c0524, 0x0502001a, 0x59d80106, 0x80000540, + 0x05020017, 0x59d80105, 0x82000500, 0x00006000, + 0x05020013, 0x599af808, 0x817ef9c0, 0x05000010, + 0x41765800, 0x592e5800, 0x592c1005, 0x800811c0, + 0x05000006, 0x412c0000, 0x81740580, 0x05fe0fcd, + 0x05fdffb1, 0x0501f006, 0x592c0003, 0x80000540, + 0x05fc0dc6, 0x817ef840, 0x05fe07f3, 0x5c03e000, + 0x1c01f000, 0x05fce71b, 0x59d80105, 0x82000500, + 0x01238780, 0x05fe07b7, 0x8d0c0524, 0x05020002, + 0x1c01f000, 0x59d8010a, 0x59d8090a, 0x80040580, + 0x05fe07fd, 0x850e1d24, 0x8d0c0516, 0x05000013, + 0x59d8010b, 0x80040580, 0x0500000f, 0x800408e0, + 0x8d0c0520, 0x05020014, 0x90040d53, 0x4807c011, + 0x59740a09, 0x59e00017, 0x8c00050a, 0x05020028, + 0x8d0c0530, 0x0502002a, 0x4807c017, 0x4203e000, + 0x30000001, 0x1c01f000, 0x59740408, 0x4806ec09, + 0x48040000, 0x59740a02, 0x800408e0, 0x90040d54, + 0x05fdf7ef, 0x59e0000f, 0x59b818e4, 0x59e0100f, + 0x80081580, 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, + 0x81281580, 0x0500001c, 0x40025000, 0x820c0500, + 0x04000000, 0x850e1d34, 0x810e1d40, 0x90040d5d, + 0x4807c011, 0x59e00017, 0x60000800, 0x8c00050a, + 0x05020007, 0x8d0c0530, 0x05020009, 0x6403c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x4c040000, + 0x05fdf9f7, 0x5c000800, 0x05fdf7d8, 0x8c000500, + 0x05fc07d6, 0x4c040000, 0x05fdfb1b, 0x5c000800, + 0x05fdf7d2, 0x40001000, 0x400c0000, 0x810c0580, + 0x8c000534, 0x40080000, 0x05fe07e0, 0x05fdf7c3, + 0x59da5908, 0x496a5800, 0x412ed000, 0x815eb800, + 0x05fce7fc, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x59d8090b, 0x59980006, 0x48073006, + 0x80040480, 0x05020004, 0x59940023, 0x80000540, + 0x05022003, 0x59980805, 0x48072823, 0x59d80105, + 0x82000500, 0x01238780, 0x05fe0752, 0x1c01f000, + 0x59da5908, 0x496a5800, 0x412ed000, 0x815eb800, + 0x05fce7fc, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x59740c08, 0x58040900, 0x4807b10b, + 0x59740402, 0x4806ec02, 0x80040480, 0x05020004, + 0x59740003, 0x80000540, 0x05022003, 0x59980805, + 0x4806e803, 0x59d8090a, 0x59d8010a, 0x80040580, + 0x05fe07fd, 0x59740408, 0x48040000, 0x4806ec09, + 0x59d80105, 0x82000500, 0x01238780, 0x05fe0731, + 0x1c01f000, 0x59981007, 0x59e00010, 0x59e00810, + 0x80041d80, 0x05fe07fd, 0x80080580, 0x0500000d, + 0x48073007, 0x59e0000f, 0x59e0100f, 0x80081d80, + 0x05fe07fd, 0x81280580, 0x0500000d, 0x400a5000, + 0x40080000, 0x80040580, 0x05fe04a0, 0x1c01f000, 0x59e0000f, 0x59e0100f, 0x80081d80, 0x05fe07fd, - 0x81280580, 0x0500000d, 0x400a5000, 0x40080000, - 0x80040580, 0x05fe04a0, 0x1c01f000, 0x59e0000f, - 0x59e0100f, 0x80081d80, 0x05fe07fd, 0x81280580, - 0x05fc07fa, 0x400a5000, 0x59940023, 0x80000540, - 0x05fc27f3, 0x1c01f000, 0x59e0000f, 0x59b818e4, - 0x59e0100f, 0x80080d80, 0x05fe07fc, 0x8c0c050c, - 0x05fe07fa, 0x81280580, 0x05020006, 0x400c0000, - 0x810c0580, 0x8c000534, 0x05020002, 0x1c01f000, - 0x820c0500, 0x04000000, 0x850e1d34, 0x810e1d40, - 0x400a5000, 0x900811c0, 0x9008155c, 0x480bc011, - 0x59e00017, 0x60000800, 0x8c00050a, 0x05020007, - 0x8d0c0530, 0x05020007, 0x6403c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x05fdf98e, 0x05fdf7fb, - 0x8c000500, 0x05fe0ab5, 0x05fdf7f8, 0x4d2c0000, - 0x599af802, 0x817ef9c0, 0x05000008, 0x40f25800, - 0x592c020a, 0x8c000500, 0x05020806, 0x592e5801, - 0x817ef840, 0x05fe07fb, 0x5c025800, 0x1c01f000, - 0x59c40001, 0x82000500, 0x00018000, 0x82000d80, - 0x00018000, 0x05020004, 0x42000800, 0x64000000, - 0x0501f00f, 0x82000d80, 0x00010000, 0x05020004, - 0x42000800, 0x32000000, 0x0501f009, 0x82000d80, - 0x00008000, 0x05020004, 0x42000800, 0x19000000, - 0x0501f003, 0x42000800, 0x0c800000, 0x592c1411, - 0x013dff72, 0x40041000, 0x40000800, 0x61a00007, - 0x013dff8e, 0x480a580f, 0x1c01f000, 0x592c020a, - 0x84000502, 0x592c080d, 0x48025a0a, 0x4806580e, - 0x800409c0, 0x05000020, 0x592c000f, 0x80041480, - 0x0500100f, 0x0500001b, 0x82080480, 0x000003e8, - 0x05001018, 0x480a580d, 0x592c0210, 0x80000040, - 0x05000015, 0x80000040, 0x05000003, 0x48025a10, - 0x1c01f000, 0x64065a10, 0x1c01f000, 0x80081080, - 0x80081000, 0x82080480, 0x000003e8, 0x05001009, - 0x497a580d, 0x592c0210, 0x90000402, 0x82001500, - 0x00000f00, 0x05020005, 0x48025a10, 0x1c01f000, - 0x497a580d, 0x1c01f000, 0x4a025a10, 0x000000ff, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x599af802, 0x817ef9c0, 0x0500003e, 0x4178c000, - 0x59d8080b, 0x59d8000b, 0x80040580, 0x05fe07fd, - 0x58f00200, 0x48040100, 0x4805e20c, 0x59d8000a, - 0x80040580, 0x05020033, 0x59d80005, 0x82000500, - 0x00006000, 0x0502002f, 0x0500c02e, 0x91700582, - 0x0500002c, 0x91700588, 0x0500002a, 0x40f25800, - 0x592e5801, 0x592cba0a, 0x592c000d, 0x80000540, - 0x05000005, 0x8c5c0502, 0x05020003, 0x4200c000, - 0xffffffff, 0x592c4200, 0x592c020c, 0x58201000, - 0x40002000, 0x80080580, 0x05000014, 0x412c0000, - 0x80f00580, 0x05020009, 0x8c5c0502, 0x05000003, - 0x80600000, 0x05000013, 0x0501f81d, 0x480bb00a, - 0x5c03e000, 0x1c01f000, 0x8c5c0502, 0x05020014, - 0x4a03b004, 0x10000000, 0x4971e410, 0x0501f831, - 0x5c03e000, 0x1c01f000, 0x817ef840, 0x05fe07dd, - 0x80600000, 0x05000003, 0x80625d58, 0x05020003, - 0x5c03e000, 0x1c01f000, 0x592c4200, 0x592c220c, - 0x58201000, 0x592cba0a, 0x05fdf7ee, 0x8060c1c0, - 0x05fe07f2, 0x412cc000, 0x05fdf7f0, 0x916c0583, - 0x05020017, 0x8c5c0500, 0x05000007, 0x8c5c0502, - 0x05020005, 0x592c000d, 0x592c080f, 0x80040480, - 0x05001010, 0x40100000, 0x80080c80, 0x05021003, - 0x592c040a, 0x80040c00, 0x592c0210, 0x80041c80, - 0x05021002, 0x1c01f000, 0x80101400, 0x592c040a, - 0x80080480, 0x05001002, 0x40001000, 0x1c01f000, - 0x845cbd42, 0x485e5a0a, 0x40101000, 0x1c01f000, - 0x801000cc, 0x592c2808, 0x80140400, 0x4803b000, - 0x497bb002, 0x59d80001, 0x4817b000, 0x592c0009, - 0x4803b001, 0x4813b00b, 0x592ee410, 0x592c040a, - 0x82000540, 0x00400000, 0x4803b003, 0x05fdffd4, - 0x480bb00a, 0x592c000b, 0x4803b01f, 0x4a03b004, - 0x10000001, 0x412de000, 0x1c01f000, 0x41700000, - 0x0c01f001, 0x001064bd, 0x000207ec, 0x001064bd, - 0x000208b8, 0x001064bc, 0x001064bc, 0x001064bc, - 0x001064bc, 0x00106bd4, 0x05010035, 0x59980000, - 0x80000540, 0x013604e2, 0x0502c01f, 0x6062f800, - 0x4df00000, 0x4203e000, 0x50000000, 0x49db3001, - 0x59da5808, 0x592c2a08, 0x58f00812, 0x800409c0, - 0x05000031, 0x58f0000b, 0x48025804, 0x48065802, - 0x48f25803, 0x497a5800, 0x497a5801, 0x82140500, - 0x000000ff, 0xb0000cbb, 0x05021024, 0x0c01f838, - 0x5c03e000, 0x817ef840, 0x05000007, 0x916c0583, - 0x05020005, 0x91700581, 0x0502000e, 0x05010015, - 0x05fcc7e4, 0x0500fb2c, 0x0500b317, 0x59d40005, - 0x82000500, 0x43238780, 0x01360079, 0x59d80005, - 0x82000500, 0x43238780, 0x0136007f, 0x1c01f000, - 0x91700583, 0x0500089d, 0x91700581, 0x05fe07f2, - 0x05010004, 0x05fcc7d3, 0x05fdf7ef, 0x6062f800, - 0x4df00000, 0x4203e000, 0x50000000, 0x49d73001, - 0x59d65808, 0x05fdf7d0, 0x0131fd24, 0x5c03e000, - 0x05fdf7e5, 0x592c0408, 0x82001500, 0x000000ff, - 0x80000110, 0x82000c00, 0x0010de60, 0x50040800, - 0x480a5c08, 0x800409c0, 0x05fe07c7, 0x80000540, - 0x01000dda, 0x42000800, 0x0010de60, 0x50040800, - 0x48065802, 0x0131fd39, 0x05fdf7ca, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x001065b0, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106532, 0x00106524, 0x00106524, - 0x00106524, 0x001065cd, 0x00106524, 0x00106524, - 0x00106524, 0x00020a44, 0x00106524, 0x0010677c, - 0x00106524, 0x00106524, 0x00106524, 0x000208d9, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106576, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x0010688b, - 0x00106a51, 0x00106524, 0x0010680e, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106858, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106ba1, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x001067db, 0x00106b6a, 0x00106524, - 0x00106b97, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x000208e4, - 0x00106524, 0x000208ec, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00020ad5, 0x00106524, 0x00106524, - 0x00020c45, 0x00106524, 0x00106524, 0x00106524, - 0x00106c2c, 0x000208ec, 0x835c0480, 0x00000104, - 0x013014d5, 0x4df00000, 0x4203e000, 0x50000000, - 0x59981001, 0x58080005, 0x82000d00, 0x43238780, - 0x0136007f, 0x8c000508, 0x013004bf, 0x580a5808, - 0x592c0208, 0x58f00812, 0x800409c0, 0x013004c1, - 0x48065802, 0x497a5800, 0x497a5801, 0x82000500, - 0x000000ff, 0xb0000c8b, 0x013214be, 0x1201f800, - 0x001064d9, 0x5c03e000, 0x91700583, 0x05fc07e3, - 0x0500fa65, 0x0500b250, 0x1c01f000, 0x80140110, - 0x80000040, 0x0500013d, 0x0130152b, 0x4a01e007, - 0x00020a18, 0x4801e400, 0x492de002, 0x492de003, - 0x600ee000, 0x1c01f000, 0x497a5805, 0x80140110, - 0x80000040, 0x0130052b, 0x0130152b, 0x4a01e007, - 0x0002097f, 0x05fdf7f4, 0x497a5805, 0x80140110, - 0x80000040, 0x0132052b, 0x592c020b, 0x82000480, - 0x00001001, 0x01321539, 0x592c0017, 0xb0000580, - 0x01320539, 0x4d2c0000, 0x05f9ff1f, 0x05000011, - 0x412c6800, 0x5c025800, 0x600ae000, 0x42001000, - 0x001102f2, 0x592c0804, 0x592c2015, 0x592c2816, - 0x90340405, 0x48001003, 0x48041006, 0x48101007, - 0x48141008, 0x4834100a, 0x492c100b, 0x05f9f718, - 0x5c025800, 0x492de005, 0x6022e000, 0x4a01e004, - 0x00020910, 0x1c01f000, 0x6006e000, 0x412c6800, - 0x58f25805, 0x05fdf7e9, 0x4d2c0000, 0x5832580b, - 0x592c5a08, 0x4978600b, 0x812e59c0, 0x0130056e, - 0x58300002, 0x82000580, 0x00000100, 0x01320554, - 0x42000000, 0x001102f1, 0x50007000, 0x5830680a, - 0x58340005, 0x592c0809, 0x80040580, 0x01320558, - 0x58340806, 0x58341007, 0x58341808, 0x48065815, - 0x480a5816, 0x480e5817, 0x822c0d80, 0x0000016a, - 0x0502000e, 0x592c0a0e, 0x58342c09, 0x5834180f, - 0x58342010, 0x58341011, 0x8c040504, 0x0502000e, - 0x8c140510, 0x05020011, 0x480c680c, 0x4810680d, - 0x4808680e, 0x0501f037, 0x592c0c0e, 0x90040d04, - 0x592c040b, 0x80000110, 0x90000508, 0x80040d40, - 0x05fdf7ee, 0x82080500, 0xffff0003, 0x01320558, - 0x8c140510, 0x05000016, 0x58343812, 0x58344013, - 0x58343014, 0x8c040506, 0x05000004, 0x82180500, - 0xffff0003, 0x01320558, 0x8c040504, 0x05020009, - 0x8c040506, 0x0500001f, 0x481c7007, 0x48207008, - 0x40181000, 0x60483000, 0x607c3800, 0x0501f00f, - 0x481c7011, 0x48207012, 0x48187013, 0x60303000, - 0x60203800, 0x8c140510, 0x05000006, 0x603c3000, - 0x60683800, 0x8c040506, 0x05020002, 0x60603800, - 0x480c7007, 0x48107008, 0x481c7010, 0x592c0804, - 0x48047006, 0x492c700b, 0x4818700e, 0x4834700c, - 0x48365801, 0x65286808, 0x5c025800, 0x0135f3c3, - 0x48365801, 0x65286808, 0x6006e000, 0x40341000, - 0x822c0580, 0x0000016a, 0x05020004, 0x0501f80e, - 0x5c025800, 0x1c01f000, 0x0501f96d, 0x5c025800, - 0x1c01f000, 0x592c0001, 0x80001540, 0x0130052b, - 0x58080a08, 0x82040d00, 0x000000ff, 0xb004058a, - 0x01320532, 0x58080409, 0x8c000510, 0x0500008f, - 0x4d2c0000, 0x4c080000, 0x05f9fe8b, 0x5c001000, - 0x05000008, 0x412c6800, 0x5c025800, 0x48365805, - 0x592c5a0e, 0x0501f80e, 0x05000084, 0x0131f539, - 0x5c025800, 0x492de005, 0x6022e000, 0x4a01e004, - 0x0002099c, 0x1c01f000, 0x6006e000, 0x412c6800, - 0x58f25805, 0x592c1001, 0x05fdf7f1, 0x592c220b, - 0x5808480c, 0x5808040d, 0x80004540, 0x0500004c, - 0x80102480, 0x0500004a, 0x05001049, 0x90200483, - 0x05001007, 0x0500000b, 0x0500100c, 0x40004000, - 0x58081001, 0x90200485, 0x05fdf7fb, 0x40200000, - 0x0c01f001, 0x000209f1, 0x000209cb, 0x000209cf, - 0x58081001, 0x0501f008, 0x40200000, 0x0c01f001, - 0x000209bf, 0x000209c3, 0x000209c7, 0x000209cb, - 0x000209cf, 0x60240800, 0x42001800, 0x001012a3, - 0x0501f010, 0x60300800, 0x42001800, 0x001012a4, - 0x0501f00c, 0x603c0800, 0x42001800, 0x001012a5, - 0x0501f008, 0x60480800, 0x42001800, 0x001012a6, - 0x0501f004, 0x60540800, 0x42001800, 0x001012a7, - 0x40080000, 0x80043c00, 0x581c2800, 0x581c3001, - 0x581c3802, 0x8c2c0502, 0x0500000e, 0x80102040, - 0x0500000c, 0x90040595, 0x05000004, 0x90040c03, - 0x800c1800, 0x0501f007, 0x58081001, 0x800811c0, - 0x01000dda, 0x60240800, 0x42001800, 0x001012a3, - 0x48046809, 0x4808680a, 0x480c680b, 0x4810680c, - 0x4814680d, 0x4818680e, 0x481c680f, 0x48246810, - 0x64046811, 0x80000580, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x592c0208, 0x82000500, 0x000000ff, - 0xb00005a8, 0x05000007, 0x90000582, 0x05000005, - 0x90000598, 0x05000003, 0x90000588, 0x05020018, - 0x592c0001, 0x80001540, 0x05000015, 0x58080208, - 0x82000500, 0x000000ff, 0xb000058a, 0x05020010, - 0x58080409, 0x8c000510, 0x0500000d, 0x592c0005, - 0x4d2c0000, 0x80025d40, 0x59a8000c, 0x812c0480, - 0x05001008, 0x59a8000a, 0x812c0480, 0x05021005, - 0x0105f992, 0x5c025800, 0x497a5805, 0x1c01f000, + 0x81280580, 0x05fc07fa, 0x400a5000, 0x59940023, + 0x80000540, 0x05fc27f3, 0x1c01f000, 0x59e0000f, + 0x59b818e4, 0x59e0100f, 0x80080d80, 0x05fe07fc, + 0x8c0c050c, 0x05fe07fa, 0x81280580, 0x05020006, + 0x400c0000, 0x810c0580, 0x8c000534, 0x05020002, + 0x1c01f000, 0x820c0500, 0x04000000, 0x850e1d34, + 0x810e1d40, 0x400a5000, 0x900811c0, 0x9008155c, + 0x480bc011, 0x59e00017, 0x60000800, 0x8c00050a, + 0x05020007, 0x8d0c0530, 0x05020007, 0x6403c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x05fdf970, + 0x05fdf7fb, 0x8c000500, 0x05fe0a97, 0x05fdf7f8, + 0x4d2c0000, 0x599af802, 0x817ef9c0, 0x05000008, + 0x40f25800, 0x592c020a, 0x8c000500, 0x05020806, + 0x592e5801, 0x817ef840, 0x05fe07fb, 0x5c025800, + 0x1c01f000, 0x59c40001, 0x82000500, 0x00018000, + 0x82000d80, 0x00018000, 0x05020004, 0x42000800, + 0x00100000, 0x0501f00f, 0x82000d80, 0x00010000, + 0x05020004, 0x42000800, 0x00080000, 0x0501f009, + 0x82000d80, 0x00008000, 0x05020004, 0x42000800, + 0x00040000, 0x0501f003, 0x42000800, 0x00020000, + 0x592c1411, 0x0141fc2b, 0x40041000, 0x40000800, + 0x60280000, 0x0141fc47, 0x800810c8, 0x480a580f, + 0x1c01f000, 0x592c020a, 0x84000502, 0x592c080d, + 0x48025a0a, 0x4806580e, 0x800409c0, 0x05000020, + 0x592c000f, 0x80041480, 0x0500100f, 0x0500001b, + 0x82080480, 0x000003e8, 0x05001018, 0x480a580d, + 0x592c0210, 0x80000040, 0x05000015, 0x80000040, + 0x05000003, 0x48025a10, 0x1c01f000, 0x64065a10, + 0x1c01f000, 0x80081080, 0x80081000, 0x82080480, + 0x000003e8, 0x05001009, 0x497a580d, 0x592c0210, + 0x90000402, 0x82001500, 0x00000f00, 0x05020005, + 0x48025a10, 0x1c01f000, 0x497a580d, 0x1c01f000, + 0x4a025a10, 0x000000ff, 0x1c01f000, 0x4df00000, + 0x4203e000, 0x50000000, 0x599af802, 0x817ef9c0, + 0x0500003e, 0x4178c000, 0x59d8080b, 0x59d8000b, + 0x80040580, 0x05fe07fd, 0x58f00200, 0x48040100, + 0x4805e20c, 0x59d8000a, 0x80040580, 0x05020033, + 0x59d80005, 0x82000500, 0x00006000, 0x0502002f, + 0x0500c02e, 0x91700582, 0x0500002c, 0x91700588, + 0x0500002a, 0x40f25800, 0x592e5801, 0x592cba0a, + 0x592c000d, 0x80000540, 0x05000005, 0x8c5c0502, + 0x05020003, 0x4200c000, 0xffffffff, 0x592c4200, + 0x592c020c, 0x58201000, 0x40002000, 0x80080580, + 0x05000014, 0x412c0000, 0x80f00580, 0x05020009, + 0x8c5c0502, 0x05000003, 0x80600000, 0x05000013, + 0x0501f81d, 0x480bb00a, 0x5c03e000, 0x1c01f000, + 0x8c5c0502, 0x05020014, 0x4a03b004, 0x10000000, + 0x4971e410, 0x0501f831, 0x5c03e000, 0x1c01f000, + 0x817ef840, 0x05fe07dd, 0x80600000, 0x05000003, + 0x80625d58, 0x05020003, 0x5c03e000, 0x1c01f000, + 0x592c4200, 0x592c220c, 0x58201000, 0x592cba0a, + 0x05fdf7ee, 0x8060c1c0, 0x05fe07f2, 0x412cc000, + 0x05fdf7f0, 0x916c0583, 0x05020017, 0x8c5c0500, + 0x05000007, 0x8c5c0502, 0x05020005, 0x592c000d, + 0x592c080f, 0x80040480, 0x05001010, 0x40100000, + 0x80080c80, 0x05021003, 0x592c040a, 0x80040c00, + 0x592c0210, 0x80041c80, 0x05021002, 0x1c01f000, + 0x80101400, 0x592c040a, 0x80080480, 0x05001002, + 0x40001000, 0x1c01f000, 0x845cbd42, 0x485e5a0a, + 0x40101000, 0x1c01f000, 0x801000cc, 0x592c2808, + 0x80140400, 0x4803b000, 0x497bb002, 0x59d80001, + 0x4817b000, 0x592c0009, 0x4803b001, 0x4813b00b, + 0x592ee410, 0x592c040a, 0x82000540, 0x00400000, + 0x4803b003, 0x05fdffd4, 0x480bb00a, 0x592c000b, + 0x4803b01f, 0x4a03b004, 0x10000001, 0x412de000, + 0x1c01f000, 0x41700000, 0x0c01f001, 0x001067ad, + 0x00020813, 0x001067ad, 0x000208df, 0x001067ac, + 0x001067ac, 0x001067ac, 0x001067ac, 0x00106f40, + 0x05010035, 0x59980000, 0x80000540, 0x013a006a, + 0x0502c01f, 0x6062f800, 0x4df00000, 0x4203e000, + 0x50000000, 0x49db3001, 0x59da5808, 0x592c2a08, + 0x58f00812, 0x800409c0, 0x05000031, 0x58f0000b, + 0x48025804, 0x48065802, 0x48f25803, 0x497a5800, + 0x497a5801, 0x82140500, 0x000000ff, 0xb0000cbb, + 0x05021024, 0x0c01f838, 0x5c03e000, 0x817ef840, + 0x05000007, 0x916c0583, 0x05020005, 0x91700581, + 0x0502000e, 0x05010015, 0x05fcc7e4, 0x0500fb3b, + 0x0500b326, 0x59d40005, 0x82000500, 0x43238780, + 0x0136038f, 0x59d80005, 0x82000500, 0x43238780, + 0x01360395, 0x1c01f000, 0x91700583, 0x0500089d, + 0x91700581, 0x05fe07f2, 0x05010004, 0x05fcc7d3, + 0x05fdf7ef, 0x6062f800, 0x4df00000, 0x4203e000, + 0x50000000, 0x49d73001, 0x59d65808, 0x05fdf7d0, + 0x0135f814, 0x5c03e000, 0x05fdf7e5, 0x592c0408, + 0x82001500, 0x000000ff, 0x80000110, 0x82000c00, + 0x00111dfa, 0x50040800, 0x480a5c08, 0x800409c0, + 0x05fe07c7, 0x80000540, 0x01000e15, 0x42000800, + 0x00111dfa, 0x50040800, 0x48065802, 0x0135f829, + 0x05fdf7ca, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x0010689d, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106822, + 0x00106814, 0x00106814, 0x00106814, 0x001068be, + 0x00106814, 0x00106814, 0x00106814, 0x00020a7a, + 0x00106814, 0x00106a8e, 0x00106814, 0x00106814, + 0x00106814, 0x00020900, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106866, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106ba1, 0x00106db9, 0x00106814, + 0x00106b21, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106b6e, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106f0d, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106aed, + 0x00106ed2, 0x00106814, 0x00106f02, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x0002090b, 0x00106814, 0x00020913, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00020b0b, + 0x00106814, 0x00106814, 0x00020c7b, 0x00106814, + 0x00106814, 0x00106814, 0x00106fb4, 0x00020913, + 0x835c0480, 0x00000104, 0x013017c5, 0x4df00000, + 0x4203e000, 0x50000000, 0x59981001, 0x58080005, + 0x82000d00, 0x43238780, 0x01360395, 0x8c000508, + 0x013007af, 0x580a5808, 0x592c0208, 0x58f00812, + 0x800409c0, 0x013007b1, 0x48065802, 0x497a5800, + 0x497a5801, 0x82000500, 0x000000ff, 0xb0000c8b, + 0x013217ae, 0x1201f800, 0x001067c9, 0x5c03e000, + 0x91700583, 0x05fc07e3, 0x0500fa74, 0x0500b25f, + 0x1c01f000, 0x80140110, 0x80000040, 0x0500013f, + 0x0134101b, 0x4a01e007, 0x00020a41, 0x4801e400, + 0x492de002, 0x492de003, 0x600ee000, 0x1c01f000, + 0x497a5805, 0x80140110, 0x80000040, 0x0134001b, + 0x0134101b, 0x4a01e007, 0x000209a6, 0x05fdf7f4, + 0x497a5805, 0x80140110, 0x80000040, 0x0136001b, + 0x592c020b, 0x82000480, 0x00001001, 0x01361029, + 0x592c0017, 0xb0000580, 0x01360029, 0x4d2c0000, + 0x05f9ff00, 0x05000011, 0x412c6800, 0x5c025800, + 0x600ae000, 0x42001000, 0x00114296, 0x592c0804, + 0x592c2015, 0x592c2816, 0x90340405, 0x48001003, + 0x48041006, 0x48101007, 0x48141008, 0x4834100a, + 0x492c100b, 0x05f9f6f9, 0x5c025800, 0x492de005, + 0x6022e000, 0x4a01e004, 0x00020937, 0x1c01f000, + 0x6006e000, 0x412c6800, 0x58f25805, 0x05fdf7e9, + 0x4d2c0000, 0x5832580b, 0x592c5a08, 0x4978600b, + 0x812e59c0, 0x0134005e, 0x58300002, 0x82000580, + 0x00000100, 0x01360044, 0x42000000, 0x00114295, + 0x50007000, 0x5830680a, 0x58340005, 0x592c0809, + 0x80040580, 0x01360048, 0x58340806, 0x58341007, + 0x58341808, 0x48065815, 0x480a5816, 0x480e5817, + 0x822c0d80, 0x0000016a, 0x0502000e, 0x592c0a0e, + 0x58342c09, 0x5834180f, 0x58342010, 0x58341011, + 0x8c040504, 0x0502000e, 0x8c140510, 0x05020011, + 0x480c680c, 0x4810680d, 0x4808680e, 0x0501f037, + 0x592c0c0e, 0x90040d04, 0x592c040b, 0x80000110, + 0x90000508, 0x80040d40, 0x05fdf7ee, 0x82080500, + 0xffff0003, 0x01360048, 0x8c140510, 0x05000016, + 0x58343812, 0x58344013, 0x58343014, 0x8c040506, + 0x05000004, 0x82180500, 0xffff0003, 0x01360048, + 0x8c040504, 0x05020009, 0x8c040506, 0x0500001f, + 0x481c7007, 0x48207008, 0x40181000, 0x60483000, + 0x607c3800, 0x0501f00f, 0x481c7011, 0x48207012, + 0x48187013, 0x60303000, 0x60203800, 0x8c140510, + 0x05000006, 0x603c3000, 0x60683800, 0x8c040506, + 0x05020002, 0x60603800, 0x480c7007, 0x48107008, + 0x481c7010, 0x592c0804, 0x48047006, 0x492c700b, + 0x4818700e, 0x4834700c, 0x48365801, 0x65286808, + 0x5c025800, 0x0135f72f, 0x48365801, 0x65286808, + 0x6006e000, 0x40341000, 0x822c0580, 0x0000016a, + 0x05020004, 0x0501f80e, 0x5c025800, 0x1c01f000, + 0x0501f97c, 0x5c025800, 0x1c01f000, 0x592c0001, + 0x80001540, 0x0134001b, 0x58080a08, 0x82040d00, + 0x000000ff, 0xb004058a, 0x01360022, 0x58080409, + 0x8c000510, 0x05000091, 0x4d2c0000, 0x4c080000, + 0x05f9fe6c, 0x5c001000, 0x05000008, 0x412c6800, + 0x5c025800, 0x48365805, 0x592c5a0e, 0x0501f80e, + 0x05000086, 0x0135f029, 0x5c025800, 0x492de005, + 0x6022e000, 0x4a01e004, 0x000209c3, 0x1c01f000, + 0x6006e000, 0x412c6800, 0x58f25805, 0x592c1001, + 0x05fdf7f1, 0x592c220b, 0x5808480c, 0x5808040d, + 0x80004540, 0x0500004c, 0x80102480, 0x0500004a, + 0x05001049, 0x90200483, 0x05001007, 0x0500000b, + 0x0500100c, 0x40004000, 0x58081001, 0x90200485, + 0x05fdf7fb, 0x40200000, 0x0c01f001, 0x00020a18, + 0x000209f2, 0x000209f6, 0x58081001, 0x0501f008, + 0x40200000, 0x0c01f001, 0x000209e6, 0x000209ea, + 0x000209ee, 0x000209f2, 0x000209f6, 0x60240800, + 0x42001800, 0x00100042, 0x0501f010, 0x60300800, + 0x42001800, 0x00100043, 0x0501f00c, 0x603c0800, + 0x42001800, 0x00100044, 0x0501f008, 0x60480800, + 0x42001800, 0x00100045, 0x0501f004, 0x60540800, + 0x42001800, 0x00100046, 0x40080000, 0x80043c00, + 0x581c2800, 0x581c3001, 0x581c3802, 0x8c2c0502, + 0x0500000e, 0x80102040, 0x0500000c, 0x90040595, + 0x05000004, 0x90040c03, 0x800c1800, 0x0501f007, + 0x58081001, 0x800811c0, 0x01000e15, 0x60240800, + 0x42001800, 0x00100042, 0x48046809, 0x4808680a, + 0x480c680b, 0x4810680c, 0x4814680d, 0x4818680e, + 0x481c680f, 0x48246810, 0x64046811, 0x80000580, + 0x1c01f000, 0x90000541, 0x1c01f000, 0x592c0208, + 0x82000500, 0x000000ff, 0xb00005a8, 0x05000007, + 0x90000582, 0x05000005, 0x90000598, 0x05000003, + 0x90000588, 0x0502001a, 0x592c0001, 0x80001540, + 0x05000017, 0x58080208, 0x82000500, 0x000000ff, + 0xb000058a, 0x05020012, 0x58080409, 0x8c000510, + 0x0500000f, 0x592c0005, 0x4d2c0000, 0x80025d40, + 0x59a8000c, 0x812c0480, 0x05021003, 0x0159fa66, + 0x05000008, 0x59a8000a, 0x812c0480, 0x05021005, + 0x0105f9c9, 0x5c025800, 0x497a5805, 0x1c01f000, 0x5c025800, 0x05fdf7fe, 0x592e8a0a, 0x83440c80, - 0x000007f0, 0x01321539, 0x8d0c050e, 0x0132057e, - 0x592e4414, 0x81224110, 0x83440400, 0x0010d400, - 0x50000000, 0x80026d40, 0x01300591, 0x59340013, - 0x80000130, 0x81200580, 0x01320591, 0x599c0018, - 0x8c00052a, 0x05000005, 0x592c0003, 0x5800040c, - 0x81200580, 0x01320591, 0x5934000a, 0x8c00052e, - 0x01320597, 0x05fdf885, 0x01320593, 0x1c01f000, - 0x58f00803, 0x58f00400, 0x48065800, 0x492c0801, - 0x492de003, 0x80000040, 0x4801e400, 0x05000002, - 0x1c01f000, 0x58f25802, 0x58f00007, 0x6006e000, - 0x0801f800, 0x1c01f000, 0x80140110, 0x0130052b, - 0x80000040, 0x05020009, 0x592c240e, 0x8c100504, - 0x0500000a, 0x592c020b, 0x82000c80, 0x00001001, - 0x01321539, 0x0135f3b1, 0x4a01e007, 0x00020a53, - 0x05fdf68d, 0x592c240e, 0x592c040b, 0x8c000510, - 0x0500000d, 0x0169f933, 0x0502000b, 0x59a800df, - 0x492f50df, 0x492fc857, 0x4803c857, 0x80000d40, - 0x05000003, 0x492c0800, 0x1c01f000, 0x492f50de, - 0x1c01f000, 0x592e8a0a, 0x417a7800, 0x592e440b, - 0x83224500, 0x000000ff, 0x83200580, 0x000000ff, - 0x01300716, 0x83200400, 0x0010d17b, 0x50024800, - 0x83440c80, 0x000007f0, 0x0132170d, 0x83440c00, - 0x0010d400, 0x50040000, 0x80026d40, 0x01300711, - 0x59340013, 0x80000130, 0x81200580, 0x01320711, - 0x59340002, 0x592c080c, 0x80040580, 0x82000500, - 0x00ffffff, 0x01320539, 0x59243a00, 0x901c0503, - 0x90000583, 0x05000004, 0x59340200, 0x8c00050e, - 0x0130070a, 0x592c040b, 0x8c000510, 0x0500001b, - 0x592c080d, 0x59a802dd, 0x80041480, 0x0130172f, - 0x59a804dd, 0x80000000, 0x80041480, 0x0132172f, - 0x0139fa9c, 0x01300539, 0x59300407, 0x800001c0, - 0x01320539, 0x497a580c, 0x4936600a, 0x59340002, - 0x82000500, 0x00ffffff, 0x4802600b, 0x641a6407, - 0x4926601d, 0x492e6017, 0x592c040e, 0x8c00051e, - 0x01320539, 0x1c01f000, 0x592e600d, 0x497a580c, - 0x83300480, 0x00111b00, 0x0130172f, 0xa1300495, - 0x013216d4, 0x592c0a10, 0x59300202, 0x80040580, - 0x0132072f, 0x4936600a, 0x4926601d, 0x8c10051c, - 0x013206c8, 0x59240206, 0x8c000510, 0x01320747, - 0x8d0c050e, 0x013206b4, 0x8c1c0516, 0x0132073e, - 0x59340200, 0x8c000518, 0x0132072c, 0x59300c07, - 0x90040586, 0x0132074a, 0xa1300494, 0x05021008, - 0x05000007, 0x592c040e, 0x8c00051e, 0x05000004, - 0x59300203, 0x90000587, 0x01320744, 0x8c100508, - 0x013206aa, 0x59300809, 0x497a5807, 0x64025a0a, - 0x800409c0, 0x013206af, 0x59300416, 0x8c000516, - 0x01320732, 0x492e6009, 0x0501f359, 0x497a5805, - 0x80140110, 0x0130052b, 0x80000040, 0x0130052b, - 0x592c0a0b, 0x82040c80, 0x00001001, 0x01321539, - 0x4a01e007, 0x00020ae1, 0x05fdf5ff, 0x592c0001, - 0x80001540, 0x0130052b, 0x58080a08, 0x82040d00, - 0x000000ff, 0xb004058a, 0x01320532, 0x58080409, - 0x8c000510, 0x05020021, 0x6006e000, 0x592c240e, - 0x8c100504, 0x05fc0765, 0x592c0208, 0x82000580, - 0x0000017a, 0x05fc0761, 0x40087800, 0x592c020b, - 0x82000480, 0x00001001, 0x01321539, 0x583c180c, - 0x583c200d, 0x583c100e, 0x82080500, 0xffff0003, - 0x01320539, 0x600ae000, 0x42000000, 0x001102f1, - 0x50007000, 0x64207010, 0x592c0804, 0x48047006, - 0x480c7007, 0x48107008, 0x492c700b, 0x6430700e, - 0x483c700c, 0x0135f3c3, 0x592c240e, 0x8c100504, - 0x01320539, 0x4d2c0000, 0x4c080000, 0x05f9fd06, - 0x5c001000, 0x0500000e, 0x412c6800, 0x5c025800, - 0x592c5c0e, 0x802c5942, 0x48365805, 0x05fdfe88, - 0x05fc0739, 0x0131f539, 0x6006e000, 0x412c6800, - 0x58f25805, 0x592c1001, 0x05fdf7f6, 0x5c025800, - 0x492de005, 0x6022e000, 0x4a01e004, 0x00020b1c, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x0502b00b, 0x835c0480, 0x00000104, 0x0500100c, - 0x815eb840, 0x416a5800, 0x592ed000, 0x492fb007, - 0x497a5800, 0x497a5801, 0x05fcb7f7, 0x59d80005, - 0x82000500, 0x43238780, 0x0136007f, 0x5c03e000, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x0502f00b, 0x835c0480, 0x00000104, 0x0500100c, - 0x815eb840, 0x416a5800, 0x592ed000, 0x492fa807, - 0x497a5800, 0x497a5801, 0x05fcf7f7, 0x59d40005, - 0x82000500, 0x43238780, 0x01360079, 0x5c03e000, - 0x1c01f000, 0x40307000, 0x5838000b, 0x80025d40, - 0x0500001c, 0x58380002, 0x82000580, 0x00000100, - 0x0500001d, 0x4c380000, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000592, 0x0500000f, 0xb00005a0, - 0x0500000d, 0x90000588, 0x0500000b, 0x592c020c, - 0x8400054e, 0x48025a0c, 0x497a5c0c, 0x497a5c0d, - 0x640a5a0a, 0x4a025a08, 0x00000103, 0x05fdf819, - 0x0501f003, 0x64425a0a, 0x05fdf816, 0x5c007000, - 0x6006e000, 0x4a007002, 0x00000100, 0x49787010, - 0x1c01f000, 0x58380004, 0x90000483, 0x05000081, - 0x58381010, 0x8c080500, 0x05020014, 0x8c080506, - 0x05020037, 0x600cb000, 0x912cac15, 0x5838000a, - 0x5838100d, 0x8008a400, 0x4c380000, 0x0169f8a7, - 0x5c007000, 0x5838000d, 0x90000403, 0x4800700d, - 0x64047010, 0x58380004, 0x90000483, 0x48007004, - 0x90000583, 0x0500006b, 0x5838000e, 0x80001d40, - 0x05020026, 0x4c380000, 0x05f9fc87, 0x5c007000, - 0x05000012, 0x4a025a08, 0x0000010a, 0x60241800, - 0x480c700e, 0x5838000c, 0x80000540, 0x05020002, - 0x5838000b, 0x40000800, 0x492c0801, 0x492c700c, - 0x603c0800, 0x0501f019, 0x6022e000, 0x4a01e004, - 0x00020ba8, 0x1c01f000, 0x6022e000, 0x4a01e004, - 0x00020bac, 0x1c01f000, 0x600ae000, 0x6e007000, - 0x001102f1, 0x0501f06b, 0x600ae000, 0x42000000, - 0x001102f1, 0x50007000, 0x05fdf7e3, 0x84081540, - 0x48087010, 0x5838180e, 0x583a580c, 0x400c0000, - 0x60600800, 0x80040c80, 0x58381004, 0x5838000f, - 0x41783000, 0x80000540, 0x05020004, 0x84183540, - 0x90081483, 0x05000037, 0x40080000, 0x80040480, - 0x05001002, 0x40080800, 0x4004b000, 0x412c0000, - 0x800c0400, 0x4000a800, 0x5838000a, 0x5838100d, - 0x8008a400, 0x4c080000, 0x4c040000, 0x4c0c0000, - 0x4c380000, 0x0169f8a7, 0x5c007000, 0x5c001800, - 0x5c000800, 0x40040000, 0x58381004, 0x80080480, - 0x48007004, 0x90000583, 0x05000002, 0x84183500, - 0x5c000000, 0x80041400, 0xb00804a0, 0x05020003, - 0x84183542, 0x41781000, 0x400c0000, 0x80041c00, - 0x900c0498, 0x05020003, 0x84183544, 0x40001800, - 0x40080800, 0x4804700d, 0x480c700e, 0x40180000, - 0x0c01f001, 0x00020bf3, 0x00020bf6, 0x00020bf4, - 0x00020bf3, 0x00020b8f, 0x00020bf6, 0x00020bf4, - 0x00020bf3, 0x0101fdda, 0x5838100f, 0x0135f3c3, - 0x5838080d, 0x90040402, 0x5838100a, 0x80080400, - 0x50001000, 0x800811c0, 0x05020041, 0x58381810, - 0x8c0c0506, 0x0502000b, 0x6006e000, 0x583a580b, - 0x4978700b, 0x49787010, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000592, 0x05fc064b, 0x05fdf60f, - 0x8c0c0502, 0x05020028, 0x8c0c0508, 0x05000016, - 0x5838080c, 0x5838000e, 0x80002d40, 0x0502000b, - 0x4c380000, 0x0105f971, 0x5c007000, 0x05fc078b, - 0x412c0800, 0x583a580c, 0x48065801, 0x4a000a08, - 0x0000010a, 0x60242800, 0x58381811, 0x58382012, - 0x58381013, 0x80040c05, 0x480c0800, 0x48100801, - 0x48080802, 0x6006e000, 0x583a580b, 0x4978700b, - 0x49787010, 0x592c0208, 0x82000d00, 0x000000ff, - 0xb00405b2, 0x05fc0628, 0x592c1001, 0xb00405ba, - 0x05fe0559, 0x58080409, 0x8c000510, 0x05fc0622, - 0x05fdf6dd, 0x8c0c0504, 0x05fe07ef, 0x840c1d44, - 0x480c7010, 0x58381811, 0x58382012, 0x58381013, - 0x480c7007, 0x48107008, 0x0135f3c3, 0x5838000a, - 0x80040c00, 0x90381c07, 0x54041800, 0x80040800, - 0x800c1800, 0x54041800, 0x0135f3c3, 0x80140110, - 0x0130052b, 0x80000040, 0x0130052b, 0x4a01e007, - 0x00020c4c, 0x05fdf494, 0x4d2c0000, 0x0105f971, - 0x412c6800, 0x5c025800, 0x05000006, 0x48365805, - 0x90346c01, 0x0501f80c, 0x05fc05c4, 0x0131f539, - 0x492de006, 0x6022e000, 0x4a01e004, 0x00020c5b, - 0x1c01f000, 0x6006e000, 0x412c6800, 0x58f25806, - 0x05fdf7f3, 0x592c4812, 0x592c020b, 0x80004540, - 0x05000023, 0x592c040b, 0x80002540, 0x05000020, - 0x592c7001, 0x80204040, 0x05000008, 0x90200485, - 0x05001006, 0x58387001, 0x803871c0, 0x05000018, - 0x80004540, 0x05fe07fa, 0x82204400, 0x001012a3, - 0x50200000, 0x80380c00, 0x58042800, 0x58043001, - 0x58043802, 0x4838680d, 0x4800680c, 0x49786814, - 0x49786815, 0x48146810, 0x48186811, 0x481c6812, - 0x4820680e, 0x48246813, 0x80102040, 0x4810680f, - 0x05020005, 0x80000580, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x80204000, 0x50201800, 0x800c19c0, - 0x0502000a, 0x58380001, 0x80007540, 0x05fc07f8, - 0x58380208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50004000, 0x50201800, 0x4820680e, 0x480c680c, - 0x4838680d, 0x05fdf7ec, 0x4df00000, 0x4203e000, - 0x50000000, 0x5994002e, 0x80000540, 0x05000183, - 0x4c000000, 0x5c000000, 0x59947824, 0x4803282f, - 0x803c0480, 0x05001004, 0x05000003, 0x48032824, - 0x0501f05f, 0x417a0800, 0x81060800, 0x82000400, - 0x000003e8, 0x05fc27fd, 0x48032824, 0x59940032, - 0x80000d40, 0x05000006, 0x80040840, 0x48072832, - 0x05020003, 0x59940033, 0x0801f800, 0x59a8001c, - 0x8400057e, 0x4803501c, 0x59a80022, 0x8400057e, - 0x48035022, 0x59a8000f, 0x8400057e, 0x4803500f, - 0x59a80010, 0x8400057e, 0x48035010, 0x0125f91f, - 0x0502000a, 0x59a80878, 0x800409c0, 0x05000007, - 0xa0040c81, 0x48075078, 0x05000002, 0x05021003, - 0x497b5078, 0x013dfecc, 0x59a800a7, 0x8c000500, - 0x0500000e, 0x59a80878, 0x800409c0, 0x0500000b, - 0xa0040c81, 0x48075078, 0x05000002, 0x05021007, - 0x497b5078, 0x42000000, 0x0010dd09, 0x50000800, - 0x84040d48, 0x44040000, 0x59a800b8, 0x81041400, - 0x480b50b8, 0x59a808ba, 0x81040c01, 0x82040480, - 0x00028f5a, 0x05001002, 0x41780800, 0x480750ba, - 0x81040040, 0x05000002, 0x4907c857, 0x59e40852, - 0x59a800b9, 0x80040580, 0x05000004, 0x480bc857, - 0x59e40052, 0x480350b9, 0x59940030, 0x81040400, - 0x48032830, 0x0139ff8b, 0x5998b002, 0x8058b1c0, - 0x05000008, 0x40f25800, 0x592e5801, 0x592c020a, - 0x8c000500, 0x05fe0a3a, 0x8058b040, 0x05fe07fb, - 0x59940000, 0x90000580, 0x05020005, 0x59940030, - 0x48032831, 0x497b2830, 0x64072800, 0x4c0c0000, - 0x58d400e5, 0x8c000514, 0x05000013, 0x59940807, - 0x59941006, 0x5994002f, 0x80081c80, 0x05001004, - 0x05000003, 0x480f2806, 0x0501f00b, 0x80040840, - 0x48072807, 0x05020004, 0x59940008, 0x0801f800, - 0x0501f005, 0x400c0000, 0x900c1c0a, 0x05fc27f8, - 0x480f2806, 0x5c001800, 0x4d180000, 0x59c80040, - 0x8c000534, 0x05020025, 0x417a3000, 0x91947c09, - 0x60042000, 0x58d400e5, 0x80100500, 0x05020007, - 0x801020c4, 0x903c7c05, 0x811a3000, 0x91180585, - 0x05fe07f9, 0x0501f019, 0x583c0801, 0x583c1000, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48007800, 0x80000040, 0x05fe17f2, 0x80040840, - 0x48047801, 0x05000006, 0x9000040a, 0x48007800, - 0x05fc27fb, 0xb004053f, 0x05fdf7ea, 0x583c0004, - 0x4c3c0000, 0x4c100000, 0x0801f800, 0x5c002000, - 0x5c007800, 0x05fdf7e3, 0x5c023000, 0x8d0c0516, - 0x05020017, 0x8d0c0522, 0x0500001e, 0x5998b008, - 0x8058b1c0, 0x05000012, 0x41765800, 0x592e5800, - 0x592c0003, 0x80001540, 0x05000006, 0x05002008, - 0x5994002f, 0x80080480, 0x05021004, 0x497a5803, - 0x05f9fea5, 0x0501f002, 0x48025803, 0x8058b040, - 0x05fe07f3, 0x8d0c0520, 0x0500000a, 0x59940023, - 0x80001540, 0x05000007, 0x05002006, 0x5994002f, - 0x80080480, 0x05021002, 0x80000580, 0x48032823, - 0x59940026, 0x80000d40, 0x05000012, 0x59941025, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48032825, 0x80000040, 0x0502100a, 0x80040840, - 0x48072826, 0x05020004, 0x59940027, 0x0801f800, - 0x0501f004, 0x9000040a, 0x48032825, 0x05fc27f8, - 0x59940004, 0x80000d40, 0x05000012, 0x59941003, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48032803, 0x80000040, 0x0502100a, 0x80040840, - 0x48072804, 0x05020004, 0x59940005, 0x0801f800, - 0x0501f004, 0x9000040a, 0x48032803, 0x05fc27f8, - 0x59940029, 0x80000d40, 0x05000012, 0x59941028, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48032828, 0x80000040, 0x0502100a, 0x80040840, - 0x48072829, 0x05020004, 0x5994002a, 0x0801f800, - 0x0501f004, 0x90000401, 0x48032828, 0x05fc27f8, - 0x5994002c, 0x80000d40, 0x05000012, 0x5994102b, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x4803282b, 0x80000040, 0x0502100a, 0x80040840, - 0x4807282c, 0x05020004, 0x5994002d, 0x0801f800, - 0x0501f004, 0x9000040a, 0x4803282b, 0x05fc27f8, - 0x59a8081c, 0x8c04053e, 0x0500001b, 0x84040d3e, - 0x4807501c, 0x05000018, 0x5994002f, 0x4c000000, - 0x82000400, 0x000003e8, 0x4803282f, 0x80040480, - 0x05001004, 0x05000003, 0x4803501c, 0x0501f00c, - 0x4c000000, 0x013df83f, 0x013c08af, 0x5c000000, - 0x59a8081b, 0x80040400, 0x05fc27ff, 0x800001c0, - 0x05020002, 0x40040000, 0x4803501c, 0x5c000000, - 0x4803282f, 0x59a8080f, 0x8c04053e, 0x05000021, - 0x84040d3e, 0x4807500f, 0x0500001e, 0x5994002f, - 0x4c000000, 0x82000400, 0x000003e8, 0x4803282f, - 0x80040480, 0x05001009, 0x05000008, 0x4803500f, - 0x4c000000, 0x59a8100d, 0x5808040b, 0x8c000514, - 0x5c000000, 0x0500000d, 0x4c000000, 0x60480000, - 0x59a8100d, 0x013dfb92, 0x013c08af, 0x5c000000, - 0x90000400, 0x05fc27ff, 0x800001c0, 0x05020002, - 0x60000000, 0x4803500f, 0x5c000000, 0x4803282f, - 0x59a80810, 0x8c04053e, 0x05000023, 0x84040d3e, - 0x48075010, 0x05000020, 0x5994002f, 0x4c000000, - 0x82000400, 0x000003e8, 0x4803282f, 0x80040480, - 0x05001009, 0x05000008, 0x48035010, 0x4c000000, - 0x59a8100e, 0x5808040b, 0x8c000514, 0x5c000000, - 0x0500000f, 0x4c000000, 0x60500000, 0x59a8100e, - 0x013dfb92, 0x013c08af, 0x5c000000, 0x82000400, - 0x000927c0, 0x05fc27fe, 0x800001c0, 0x05020003, - 0x42000000, 0x000927c0, 0x48035010, 0x5c000000, - 0x4803282f, 0x5994082e, 0x5994002f, 0x80040480, - 0x01001dda, 0x4803282e, 0x59940000, 0x0c01f001, - 0x00020e25, 0x001076d4, 0x00107743, 0x5c03e000, - 0x1c01f000, 0x5994002e, 0x80000000, 0x4803282e, - 0x4203e000, 0x70000000, 0x1c01f000, 0x813e79c0, - 0x05020016, 0x59a800d4, 0x80000040, 0x05fe07ff, - 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x91300400, - 0x4801a8e1, 0x592c1003, 0x5808020a, 0x8c000500, - 0x0500000a, 0x592c1c0e, 0x820c1d00, 0x000000c0, - 0xb00c1d80, 0x05000005, 0x592c1813, 0x5808000d, - 0x800c0400, 0x4800100d, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x4807c857, 0x59302a03, - 0x98140486, 0x05000005, 0x601c2800, 0x0501f003, - 0x60040800, 0x601c2800, 0x59325809, 0x832c0580, - 0x00110228, 0x0500001f, 0x832c0500, 0x00ff0000, - 0x05000025, 0x592c1000, 0x59301808, 0x59302027, - 0x801021c0, 0x05020039, 0x592c040e, 0x480a6009, - 0x48166203, 0x8c000510, 0x0502001c, 0x48065a0a, - 0x820c0500, 0x04000800, 0x82000580, 0x04000800, - 0x0500002b, 0xa1300494, 0x05021009, 0x05000008, - 0x592c040e, 0x8c00051e, 0x05020005, 0x013dff4d, - 0x59300202, 0x48025a10, 0x4932580d, 0x05f9fd11, - 0x417a7800, 0x59300009, 0x82000d80, 0x00110228, - 0x05020003, 0x58040000, 0x48026009, 0x80025d40, - 0x05fe07b3, 0x1c01f000, 0x832c0580, 0x00110228, - 0x05fc07f4, 0x592c040b, 0x8c000510, 0x05fe07f1, - 0x98040481, 0x05fe07de, 0x456a5800, 0x412ed000, - 0x815eb800, 0x592c0001, 0x80000d40, 0x05020006, + 0x000007f0, 0x0502101e, 0x8d0c050e, 0x0136006e, + 0x592e4414, 0x81224110, 0x83440480, 0x000007f0, + 0x0502101e, 0x83440400, 0x0010db80, 0x50000000, + 0x80026d40, 0x0134007e, 0x59340013, 0x80000130, + 0x81200580, 0x0136007e, 0x599c0018, 0x8c00052a, + 0x05000005, 0x592c0003, 0x5800040c, 0x81200580, + 0x0136007e, 0x5934000a, 0x8c00052e, 0x01360084, + 0x05fdf861, 0x01360080, 0x1c01f000, 0x83440c80, + 0x00000800, 0x01341029, 0x59a800ad, 0x81440480, + 0x01361029, 0x05fdf7dd, 0x05fdf89f, 0x05fc07e7, + 0x0135f07e, 0x58f00803, 0x58f00400, 0x48065800, + 0x492c0801, 0x492de003, 0x80000040, 0x4801e400, + 0x05000002, 0x1c01f000, 0x58f25802, 0x58f00007, + 0x6006e000, 0x0801f800, 0x1c01f000, 0x80140110, + 0x0134001b, 0x80000040, 0x05020009, 0x592c240e, + 0x8c100504, 0x0500000a, 0x592c020b, 0x82000c80, + 0x00001001, 0x01361029, 0x0135f71d, 0x4a01e007, + 0x00020a89, 0x05fdf67e, 0x592c240e, 0x592c040b, + 0x8c000510, 0x0500000d, 0x016df8ae, 0x0502000b, + 0x59a800e4, 0x492f50e4, 0x492fc857, 0x4803c857, + 0x80000d40, 0x05000003, 0x492c0800, 0x1c01f000, + 0x492f50e3, 0x1c01f000, 0x592e8a0a, 0x417a7800, + 0x592e440b, 0x83224500, 0x000000ff, 0x83200580, + 0x000000ff, 0x0134021e, 0x83200400, 0x0010d8f9, + 0x50024800, 0x83440c80, 0x000007f0, 0x01361215, + 0x83440c00, 0x0010db80, 0x50040000, 0x80026d40, + 0x01340219, 0x59340013, 0x80000130, 0x81200580, + 0x01360219, 0x59340002, 0x592c080c, 0x80040580, + 0x82000500, 0x00ffffff, 0x01360029, 0x59243a00, + 0x901c0503, 0x90000583, 0x05000004, 0x59340200, + 0x8c00050e, 0x01340212, 0x592c040b, 0x8c000510, + 0x0500001b, 0x592c080d, 0x59a802e2, 0x80041480, + 0x0134123a, 0x59a804e2, 0x80000000, 0x80041480, + 0x0136123a, 0x0139fe8a, 0x01340029, 0x59300407, + 0x800001c0, 0x01360029, 0x497a580c, 0x4936600a, + 0x59340002, 0x82000500, 0x00ffffff, 0x4802600b, + 0x641a6407, 0x4926601d, 0x492e6017, 0x592c040e, + 0x8c00051e, 0x01360029, 0x1c01f000, 0x592e600d, + 0x497a580c, 0x813004af, 0x0134123a, 0xa1300495, + 0x013611dc, 0x592c0a10, 0x59300202, 0x80040580, + 0x0136023a, 0x4936600a, 0x4926601d, 0x8c10051c, + 0x013601ce, 0x59240206, 0x8c000510, 0x01360252, + 0x8d0c050e, 0x013601ba, 0x8c1c0516, 0x01360249, + 0x59340200, 0x8c000518, 0x01360234, 0x59300c07, + 0x90040586, 0x01360255, 0xa1300494, 0x05021009, + 0xa1300496, 0x05001007, 0x592c040e, 0x8c00051e, + 0x05000004, 0x59300203, 0x90000587, 0x0136024f, + 0x8c100508, 0x013601b0, 0x59300809, 0x497a5807, + 0x64025a0a, 0x800409c0, 0x013601b5, 0x59300416, + 0x8c000516, 0x0136023d, 0x492e6009, 0x0501f359, + 0x497a5805, 0x80140110, 0x0134001b, 0x80000040, + 0x0134001b, 0x592c0a0b, 0x82040c80, 0x00001001, + 0x01361029, 0x4a01e007, 0x00020b17, 0x05fdf5f0, + 0x592c0001, 0x80001540, 0x0134001b, 0x58080a08, + 0x82040d00, 0x000000ff, 0xb004058a, 0x01360022, + 0x58080409, 0x8c000510, 0x05020021, 0x6006e000, + 0x592c240e, 0x8c100504, 0x05fc0765, 0x592c0208, + 0x82000580, 0x0000017a, 0x05fc0761, 0x40087800, + 0x592c020b, 0x82000480, 0x00001001, 0x01361029, + 0x583c180c, 0x583c200d, 0x583c100e, 0x82080500, + 0xffff0003, 0x01360029, 0x600ae000, 0x42000000, + 0x00114295, 0x50007000, 0x64207010, 0x592c0804, + 0x48047006, 0x480c7007, 0x48107008, 0x492c700b, + 0x6430700e, 0x483c700c, 0x0135f72f, 0x592c240e, + 0x8c100504, 0x01360029, 0x4d2c0000, 0x4c080000, + 0x05f9fcd8, 0x5c001000, 0x0500000e, 0x412c6800, + 0x5c025800, 0x592c5c0e, 0x802c5942, 0x48365805, + 0x05fdfe79, 0x05fc0739, 0x0135f029, 0x6006e000, + 0x412c6800, 0x58f25805, 0x592c1001, 0x05fdf7f6, + 0x5c025800, 0x492de005, 0x6022e000, 0x4a01e004, + 0x00020b52, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x0502b00b, 0x835c0480, 0x00000104, + 0x0500100c, 0x815eb840, 0x416a5800, 0x592ed000, + 0x492fb007, 0x497a5800, 0x497a5801, 0x05fcb7f7, + 0x59d80005, 0x82000500, 0x43238780, 0x01360395, + 0x5c03e000, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x0502f00b, 0x835c0480, 0x00000104, + 0x0500100c, 0x815eb840, 0x416a5800, 0x592ed000, + 0x492fa807, 0x497a5800, 0x497a5801, 0x05fcf7f7, + 0x59d40005, 0x82000500, 0x43238780, 0x0136038f, + 0x5c03e000, 0x1c01f000, 0x40307000, 0x5838000b, + 0x80025d40, 0x0500001c, 0x58380002, 0x82000580, + 0x00000100, 0x0500001d, 0x4c380000, 0x592c0208, + 0x82000500, 0x000000ff, 0x90000592, 0x0500000f, + 0xb00005a0, 0x0500000d, 0x90000588, 0x0500000b, + 0x592c020c, 0x8400054e, 0x48025a0c, 0x497a5c0c, + 0x497a5c0d, 0x640a5a0a, 0x4a025a08, 0x00000103, + 0x05fdf809, 0x0501f003, 0x64425a0a, 0x05fdf806, + 0x5c007000, 0x6006e000, 0x4a007002, 0x00000100, + 0x49787010, 0x1c01f000, 0x58380004, 0x90000483, + 0x05000081, 0x58381010, 0x8c080500, 0x05020014, + 0x8c080506, 0x05020037, 0x600cb000, 0x912cac15, + 0x5838000a, 0x5838100d, 0x8008a400, 0x4c380000, + 0x0501fe18, 0x5c007000, 0x5838000d, 0x90000403, + 0x4800700d, 0x64047010, 0x58380004, 0x90000483, + 0x48007004, 0x90000583, 0x0500006b, 0x5838000e, + 0x80001d40, 0x05020026, 0x4c380000, 0x05f9fc59, + 0x5c007000, 0x05000012, 0x4a025a08, 0x0000010a, + 0x60241800, 0x480c700e, 0x5838000c, 0x80000540, + 0x05020002, 0x5838000b, 0x40000800, 0x492c0801, + 0x492c700c, 0x603c0800, 0x0501f019, 0x6022e000, + 0x4a01e004, 0x00020bde, 0x1c01f000, 0x6022e000, + 0x4a01e004, 0x00020be2, 0x1c01f000, 0x600ae000, + 0x6e007000, 0x00114295, 0x0501f06b, 0x600ae000, + 0x42000000, 0x00114295, 0x50007000, 0x05fdf7e3, + 0x84081540, 0x48087010, 0x5838180e, 0x583a580c, + 0x400c0000, 0x60600800, 0x80040c80, 0x58381004, + 0x5838000f, 0x41783000, 0x80000540, 0x05020004, + 0x84183540, 0x90081483, 0x05000037, 0x40080000, + 0x80040480, 0x05001002, 0x40080800, 0x4004b000, + 0x412c0000, 0x800c0400, 0x4000a800, 0x5838000a, + 0x5838100d, 0x8008a400, 0x4c080000, 0x4c040000, + 0x4c0c0000, 0x4c380000, 0x0501fdca, 0x5c007000, + 0x5c001800, 0x5c000800, 0x40040000, 0x58381004, + 0x80080480, 0x48007004, 0x90000583, 0x05000002, + 0x84183500, 0x5c000000, 0x80041400, 0xb00804a0, + 0x05020003, 0x84183542, 0x41781000, 0x400c0000, + 0x80041c00, 0x900c0498, 0x05020003, 0x84183544, + 0x40001800, 0x40080800, 0x4804700d, 0x480c700e, + 0x40180000, 0x0c01f001, 0x00020c29, 0x00020c2c, + 0x00020c2a, 0x00020c29, 0x00020bc5, 0x00020c2c, + 0x00020c2a, 0x00020c29, 0x0101fe15, 0x5838100f, + 0x0135f72f, 0x5838080d, 0x90040402, 0x5838100a, + 0x80080400, 0x50001000, 0x800811c0, 0x05020041, + 0x58381810, 0x8c0c0506, 0x0502000b, 0x6006e000, + 0x583a580b, 0x4978700b, 0x49787010, 0x592c0208, + 0x82000500, 0x000000ff, 0x90000592, 0x05fc064b, + 0x05fdf602, 0x8c0c0502, 0x05020028, 0x8c0c0508, + 0x05000016, 0x5838080c, 0x5838000e, 0x80002d40, + 0x0502000b, 0x4c380000, 0x0105f9a8, 0x5c007000, + 0x05fc078b, 0x412c0800, 0x583a580c, 0x48065801, + 0x4a000a08, 0x0000010a, 0x60242800, 0x58381811, + 0x58382012, 0x58381013, 0x80040c05, 0x480c0800, + 0x48100801, 0x48080802, 0x6006e000, 0x583a580b, + 0x4978700b, 0x49787010, 0x592c0208, 0x82000d00, + 0x000000ff, 0xb00405b2, 0x05fc0628, 0x592c1001, + 0xb00405ba, 0x05fe054a, 0x58080409, 0x8c000510, + 0x05fc0622, 0x05fdf6dd, 0x8c0c0504, 0x05fe07ef, + 0x840c1d44, 0x480c7010, 0x58381811, 0x58382012, + 0x58381013, 0x480c7007, 0x48107008, 0x0135f72f, + 0x5838000a, 0x80040c00, 0x90381c07, 0x54041800, + 0x80040800, 0x800c1800, 0x54041800, 0x0135f72f, + 0x80140110, 0x0134001b, 0x80000040, 0x0134001b, + 0x4a01e007, 0x00020c82, 0x05fdf485, 0x4d2c0000, + 0x0105f9a8, 0x412c6800, 0x5c025800, 0x05000006, + 0x48365805, 0x90346c01, 0x0501f80c, 0x05fc05b7, + 0x0135f029, 0x492de006, 0x6022e000, 0x4a01e004, + 0x00020c91, 0x1c01f000, 0x6006e000, 0x412c6800, + 0x58f25806, 0x05fdf7f3, 0x592c4812, 0x592c020b, + 0x80004540, 0x05000023, 0x592c040b, 0x80002540, + 0x05000020, 0x592c7001, 0x80204040, 0x05000008, + 0x90200485, 0x05001006, 0x58387001, 0x803871c0, + 0x05000018, 0x80004540, 0x05fe07fa, 0x82204400, + 0x00100042, 0x50200000, 0x80380c00, 0x58042800, + 0x58043001, 0x58043802, 0x4838680d, 0x4800680c, + 0x49786814, 0x49786815, 0x48146810, 0x48186811, + 0x481c6812, 0x4820680e, 0x48246813, 0x80102040, + 0x4810680f, 0x05020005, 0x80000580, 0x1c01f000, + 0x90000541, 0x1c01f000, 0x80204000, 0x50201800, + 0x800c19c0, 0x0502000a, 0x58380001, 0x80007540, + 0x05fc07f8, 0x58380208, 0x9000050f, 0x82000400, + 0x0010004b, 0x50004000, 0x50201800, 0x4820680e, + 0x480c680c, 0x4838680d, 0x05fdf7ec, 0x4df00000, + 0x4203e000, 0x50000000, 0x5994002f, 0x80000540, + 0x05000183, 0x4c000000, 0x5c000000, 0x59947824, + 0x48032830, 0x803c0480, 0x05001004, 0x05000003, + 0x48032824, 0x0501f05f, 0x417a0800, 0x81060800, + 0x82000400, 0x000003e8, 0x05fc27fd, 0x48032824, + 0x59940033, 0x80000d40, 0x05000006, 0x80040840, + 0x48072833, 0x05020003, 0x59940034, 0x0801f800, + 0x59a8001e, 0x8400057e, 0x4803501e, 0x59a80024, + 0x8400057e, 0x48035024, 0x59a80011, 0x8400057e, + 0x48035011, 0x59a80012, 0x8400057e, 0x48035012, + 0x0125fac5, 0x0502000a, 0x59a8087b, 0x800409c0, + 0x05000007, 0xa0040c81, 0x4807507b, 0x05000002, + 0x05021003, 0x497b507b, 0x0141fb83, 0x59a800aa, + 0x8c000500, 0x0500000e, 0x59a8087b, 0x800409c0, + 0x0500000b, 0xa0040c81, 0x4807507b, 0x05000002, + 0x05021007, 0x497b507b, 0x42000000, 0x00111c8f, + 0x50000800, 0x84040d48, 0x44040000, 0x59a800bd, + 0x81041400, 0x480b50bd, 0x59a808bf, 0x81040c01, + 0x82040480, 0x00028f5a, 0x05001002, 0x41780800, + 0x480750bf, 0x81040040, 0x05000002, 0x4907c857, + 0x59e40852, 0x59a800be, 0x80040580, 0x05000004, + 0x480bc857, 0x59e40052, 0x480350be, 0x59940031, + 0x81040400, 0x48032831, 0x013dfbef, 0x5998b002, + 0x8058b1c0, 0x05000008, 0x40f25800, 0x592e5801, + 0x592c020a, 0x8c000500, 0x05fe0a2b, 0x8058b040, + 0x05fe07fb, 0x59940000, 0x90000580, 0x05020005, + 0x59940031, 0x48032832, 0x497b2831, 0x64072800, + 0x4c0c0000, 0x58d400e5, 0x8c000514, 0x05000013, + 0x59940807, 0x59941006, 0x59940030, 0x80081c80, + 0x05001004, 0x05000003, 0x480f2806, 0x0501f00b, + 0x80040840, 0x48072807, 0x05020004, 0x59940008, + 0x0801f800, 0x0501f005, 0x400c0000, 0x900c1c0a, + 0x05fc27f8, 0x480f2806, 0x5c001800, 0x4d180000, + 0x59c80040, 0x8c000534, 0x05020025, 0x417a3000, + 0x91947c09, 0x60042000, 0x58d400e5, 0x80100500, + 0x05020007, 0x801020c4, 0x903c7c05, 0x811a3000, + 0x91180585, 0x05fe07f9, 0x0501f019, 0x583c0801, + 0x583c1000, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48007800, 0x80000040, 0x05fe17f2, + 0x80040840, 0x48047801, 0x05000006, 0x9000040a, + 0x48007800, 0x05fc27fb, 0xb004053f, 0x05fdf7ea, + 0x583c0004, 0x4c3c0000, 0x4c100000, 0x0801f800, + 0x5c002000, 0x5c007800, 0x05fdf7e3, 0x5c023000, + 0x8d0c0516, 0x05020017, 0x8d0c0522, 0x0500001e, + 0x5998b008, 0x8058b1c0, 0x05000012, 0x41765800, + 0x592e5800, 0x592c0003, 0x80001540, 0x05000006, + 0x05002008, 0x59940030, 0x80080480, 0x05021004, + 0x497a5803, 0x05f9fe95, 0x0501f002, 0x48025803, + 0x8058b040, 0x05fe07f3, 0x8d0c0520, 0x0500000a, + 0x59940023, 0x80001540, 0x05000007, 0x05002006, + 0x59940030, 0x80080480, 0x05021002, 0x80000580, + 0x48032823, 0x59940026, 0x80000d40, 0x05000012, + 0x59941025, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48032825, 0x80000040, 0x0502100a, + 0x80040840, 0x48072826, 0x05020004, 0x59940027, + 0x0801f800, 0x0501f004, 0x9000040a, 0x48032825, + 0x05fc27f8, 0x59940004, 0x80000d40, 0x05000012, + 0x59941003, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48032803, 0x80000040, 0x0502100a, + 0x80040840, 0x48072804, 0x05020004, 0x59940005, + 0x0801f800, 0x0501f004, 0x9000040a, 0x48032803, + 0x05fc27f8, 0x5994002a, 0x80000d40, 0x05000012, + 0x59941028, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48032828, 0x80000040, 0x0502100a, + 0x80040840, 0x4807282a, 0x05020004, 0x5994002b, + 0x0801f800, 0x0501f004, 0x9000040a, 0x48032828, + 0x05fc27f8, 0x5994002d, 0x80000d40, 0x05000012, + 0x5994102c, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x4803282c, 0x80000040, 0x0502100a, + 0x80040840, 0x4807282d, 0x05020004, 0x5994002e, + 0x0801f800, 0x0501f004, 0x9000040a, 0x4803282c, + 0x05fc27f8, 0x59a8081e, 0x8c04053e, 0x0500001b, + 0x84040d3e, 0x4807501e, 0x05000018, 0x59940030, + 0x4c000000, 0x82000400, 0x000003e8, 0x48032830, + 0x80040480, 0x05001004, 0x05000003, 0x4803501e, + 0x0501f00c, 0x4c000000, 0x013dfcff, 0x013c0d6f, + 0x5c000000, 0x59a8081d, 0x80040400, 0x05fc27ff, + 0x800001c0, 0x05020002, 0x40040000, 0x4803501e, + 0x5c000000, 0x48032830, 0x59a80811, 0x8c04053e, + 0x05000021, 0x84040d3e, 0x48075011, 0x0500001e, + 0x59940030, 0x4c000000, 0x82000400, 0x000003e8, + 0x48032830, 0x80040480, 0x05001009, 0x05000008, + 0x48035011, 0x4c000000, 0x59a8100f, 0x5808040b, + 0x8c000514, 0x5c000000, 0x0500000d, 0x4c000000, + 0x60480000, 0x59a8100f, 0x0141f852, 0x013c0d6f, + 0x5c000000, 0x90000400, 0x05fc27ff, 0x800001c0, + 0x05020002, 0x60000000, 0x48035011, 0x5c000000, + 0x48032830, 0x59a80812, 0x8c04053e, 0x05000023, + 0x84040d3e, 0x48075012, 0x05000020, 0x59940030, + 0x4c000000, 0x82000400, 0x000003e8, 0x48032830, + 0x80040480, 0x05001009, 0x05000008, 0x48035012, + 0x4c000000, 0x59a81010, 0x5808040b, 0x8c000514, + 0x5c000000, 0x0500000f, 0x4c000000, 0x60500000, + 0x59a81010, 0x0141f852, 0x013c0d6f, 0x5c000000, + 0x82000400, 0x000927c0, 0x05fc27fe, 0x800001c0, + 0x05020003, 0x42000000, 0x000927c0, 0x48035012, + 0x5c000000, 0x48032830, 0x5994082f, 0x59940030, + 0x80040480, 0x01001e15, 0x4803282f, 0x59940000, + 0x0c01f001, 0x00020e5b, 0x00107aee, 0x00107ba7, + 0x5c03e000, 0x1c01f000, 0x5994002f, 0x80000000, + 0x4803282f, 0x4203e000, 0x70000000, 0x1c01f000, + 0x813e79c0, 0x05020016, 0x59a800d9, 0x80000040, + 0x05fe07ff, 0x58d400ea, 0x8c000516, 0x05fe07fe, + 0x91300400, 0x4801a8e1, 0x592c1003, 0x5808720a, + 0x8c380500, 0x0500000a, 0x592c1c0e, 0x820c1d00, + 0x000000c0, 0xb00c1d80, 0x05000005, 0x592c1813, + 0x5808000d, 0x800c0400, 0x4800100d, 0x1c01f000, + 0x5c000000, 0x4c000000, 0x4803c857, 0x4807c857, + 0x59302a03, 0x98140486, 0x05000005, 0x601c2800, + 0x0501f003, 0x60040800, 0x601c2800, 0x59325809, + 0x832c0580, 0x001141cc, 0x05000020, 0x832c0500, + 0x00ff0000, 0x05000026, 0x592c1000, 0x59301808, + 0x59302027, 0x801021c0, 0x0502003a, 0x592c040e, + 0x480a6009, 0x48166203, 0x8c000510, 0x0502001d, + 0x48065a0a, 0x820c0500, 0x04000800, 0x82000580, + 0x04000800, 0x0500002c, 0xa1300494, 0x0502100a, + 0xa1300496, 0x05001008, 0x592c040e, 0x8c00051e, + 0x05020005, 0x0141fc01, 0x59300202, 0x48025a10, + 0x4932580d, 0x05f9fd00, 0x417a7800, 0x59300009, + 0x82000d80, 0x001141cc, 0x05020003, 0x58040000, + 0x48026009, 0x80025d40, 0x05fe07b2, 0x1c01f000, + 0x832c0580, 0x001141cc, 0x05fc07f4, 0x592c040b, + 0x8c000510, 0x05fe07f1, 0x98040481, 0x05fe07dd, + 0x456a5800, 0x412ed000, 0x815eb800, 0x592c0001, + 0x80000d40, 0x05020006, 0x59c80000, 0x82000540, + 0x00001200, 0x48039000, 0x05fdf7e4, 0x05f9fcca, + 0x05fdf7e2, 0x59300021, 0x48025c13, 0x05fdf7d3, + 0x497a6027, 0x45682000, 0x4012d000, 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x05fdf7e4, 0x05f9fcdb, 0x05fdf7e2, 0x59300021, - 0x48025c13, 0x05fdf7d4, 0x497a6027, 0x45682000, - 0x4012d000, 0x815eb800, 0x59c80000, 0x82000540, - 0x00001200, 0x48039000, 0x05fdf7c0, 0x59300416, - 0x8c000510, 0x05000002, 0x84040d52, 0x48066004, - 0x497a6000, 0x497a6001, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x83300400, 0xa0000000, 0x4801a8e1, - 0x1c01f000, 0x59300416, 0x8c000510, 0x05000002, - 0x84040d52, 0x59300004, 0x82000500, 0x00000100, - 0x80040d40, 0x48066004, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x83300400, 0x40000000, 0x4801a8e1, - 0x1c01f000, 0x58d400ea, 0x82001500, 0x32000018, - 0x01420562, 0x8c000510, 0x0500002f, 0x58d410e0, - 0x82080500, 0xfffff000, 0x0502000d, 0x900a350f, - 0x80081108, 0x480bc857, 0x90080487, 0x01021dda, - 0x90080481, 0x01001dda, 0x1201f000, 0x00108566, - 0x84040d10, 0x48066004, 0x0501f019, 0x840a653e, - 0x59300804, 0x8c040520, 0x05fc07fa, 0x82040d00, - 0xfffefeff, 0x48066004, 0x8c08053e, 0x05020009, - 0x8c040514, 0x05000004, 0x05fdff72, 0x0501f8ff, - 0x0501f00b, 0x604e7000, 0x0501f920, 0x0501f008, - 0x8c040514, 0x05000004, 0x05fdff6a, 0x0501f8f7, - 0x0501f003, 0x61267000, 0x0501f918, 0x58d400ea, - 0x82001500, 0x32000018, 0x01420562, 0x8c000510, - 0x05fe07d3, 0x1c01f000, 0x59bc00ea, 0x82001500, - 0xb2000018, 0x0142058c, 0x8c000510, 0x05000009, - 0x59bc10e0, 0x80080108, 0x900a350f, 0x9800048b, - 0x05000005, 0x4803c857, 0x1201f000, 0x00108590, - 0x1c01f000, 0x4d300000, 0x59bc00ea, 0x8c000510, - 0x05fc07fe, 0x59be60e0, 0x813261c0, 0x01000dda, - 0x59300804, 0x8c04051c, 0x05020068, 0x59300027, - 0x80006d40, 0x05000065, 0x83180400, 0x00020f72, - 0x50001000, 0x5808020f, 0x8c000500, 0x0502005d, - 0x58340811, 0x8c040500, 0x0502002b, 0x5808000e, - 0x50000000, 0x48001003, 0x5808080c, 0x80040c80, - 0x58340011, 0x8c000504, 0x05000007, 0x5834200d, - 0x5834280e, 0x48101007, 0x48141008, 0x84000504, - 0x48006811, 0x5834180c, 0x5834300f, 0x58345010, - 0x40180000, 0x80284480, 0x05021002, 0x40280000, - 0x80000104, 0x80044480, 0x05001002, 0x40000800, - 0xb0040480, 0x05001002, 0x61000800, 0x48041004, - 0x800408c4, 0x48041005, 0x40040000, 0x80285480, - 0x48286810, 0x80184c80, 0x05000016, 0x4824680f, - 0x802851c0, 0x05000015, 0x05f9f8e5, 0x5c026000, - 0x1c01f000, 0x84040d00, 0x48046811, 0x5808080b, - 0x5834200d, 0x5834280e, 0x59301809, 0x580c3004, - 0x48181006, 0x48041003, 0x48101007, 0x48141008, - 0x49301010, 0x48341011, 0x60000801, 0x05fdf7d6, - 0x800c1840, 0x05020005, 0x58340011, 0x84000542, - 0x48006811, 0x05fdf7e9, 0x5834700a, 0x5834200b, - 0x80102000, 0x50100000, 0x80000540, 0x05000010, - 0x80383400, 0x58183800, 0x58184001, 0x58184802, - 0x4810680b, 0x480c680c, 0x481c680d, 0x4820680e, - 0x4824680f, 0x802851c0, 0x05fc07ec, 0x58340011, - 0x84000544, 0x48006811, 0x05fdf7d4, 0x58387001, - 0x4838680a, 0x42002000, 0x001012a3, 0x05fdf7ea, - 0x84000542, 0x4800120f, 0x4933c857, 0x05fdf7cc, - 0x0010e32d, 0x0010e33f, 0x0010e351, 0x0010e363, - 0x0010e375, 0x5830020f, 0x8c000500, 0x0502001b, - 0x58307810, 0x803c79c0, 0x05000030, 0x58300002, - 0x82000580, 0x00000100, 0x0502002e, 0x583c0c07, - 0x90040586, 0x05000003, 0x90040583, 0x05020027, - 0x58300804, 0x58300003, 0x80040c00, 0x5830000b, - 0x80047c80, 0x823c7d80, 0x00000080, 0x05020002, - 0x40000800, 0x5830000e, 0x44040000, 0x5830000d, - 0x480378e7, 0x1c01f000, 0x4803c856, 0x4978620f, - 0x8c000502, 0x05fc07fc, 0x4803c856, 0x4c300000, - 0x0141fd13, 0x5c006000, 0x58300c0f, 0x800410ca, - 0x82081400, 0x00007600, 0x4a001014, 0x00090000, - 0x800410c8, 0x82081400, 0x0000bf32, 0x58080005, - 0x84000500, 0x48001005, 0x5830000b, 0x5830080e, - 0x44000800, 0x0141fd04, 0x483fc857, 0x05fdf7e6, - 0x4d300000, 0x4d2c0000, 0x4d3c0000, 0x4c300000, - 0x58326010, 0x4933c857, 0x59325809, 0x592c020c, - 0x8400054e, 0x48025a0c, 0x417a7800, 0x0155f815, - 0x5c006000, 0x5c027800, 0x5c025800, 0x5c026000, - 0x05fdf7d5, 0x59a8029c, 0x81640480, 0x05001015, - 0x41626000, 0x41580000, 0x59300a03, 0x90040d80, - 0x05020007, 0x64226203, 0x8166c840, 0x9132c430, - 0x81600480, 0x05021008, 0x1c01f000, 0x91326430, - 0x81300c80, 0x05fc17f5, 0x42026000, 0x00111b00, - 0x05fdf7f2, 0x837ac540, 0x00111b00, 0x1c01f000, - 0x42000000, 0x0010e442, 0x0165ffdc, 0x4967c857, - 0x80026580, 0x1c01f000, 0x83300480, 0x00111b00, - 0x01001dda, 0x41580000, 0x81300480, 0x0502100a, - 0x457a6000, 0x4a026202, 0x0000ffff, 0x05011000, - 0x91300403, 0x4803c840, 0x64b7c842, 0x8166c800, - 0x1c01f000, 0x41540000, 0x81300480, 0x01021dda, - 0xa1300494, 0x05021005, 0x05000004, 0x64026203, - 0x497a6006, 0x1c01f000, 0x59a80098, 0x49335097, - 0x80000000, 0x48035098, 0x457a6000, 0x4a026202, + 0x05fdf7bf, 0x59300416, 0x8c000510, 0x05000002, + 0x84040d52, 0x48066004, 0x497a6000, 0x497a6001, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, + 0xa0000000, 0x4801a8e1, 0x1c01f000, 0x59300416, + 0x8c000510, 0x05000002, 0x84040d52, 0x59300004, + 0x82000500, 0x00000100, 0x80040d40, 0x48066004, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, + 0x40000000, 0x4801a8e1, 0x1c01f000, 0x58d400ea, + 0x82001500, 0x32000018, 0x01460220, 0x8c000510, + 0x0500002f, 0x58d410e0, 0x82080500, 0xfffff000, + 0x0502000d, 0x900a350f, 0x80081108, 0x480bc857, + 0x90080487, 0x01021e15, 0x90080481, 0x01001e15, + 0x1201f000, 0x00108a24, 0x84040d10, 0x48066004, + 0x0501f019, 0x840a653e, 0x59300804, 0x8c040520, + 0x05fc07fa, 0x82040d00, 0xfffefeff, 0x48066004, + 0x8c08053e, 0x05020009, 0x8c040514, 0x05000004, + 0x05fdff71, 0x0501f8fc, 0x0501f00b, 0x604e7000, + 0x0501f922, 0x0501f008, 0x8c040514, 0x05000004, + 0x05fdff69, 0x0501f8f4, 0x0501f003, 0x61267000, + 0x0501f91a, 0x58d400ea, 0x82001500, 0x32000018, + 0x01460220, 0x8c000510, 0x05fe07d3, 0x1c01f000, + 0x59bc00ea, 0x82001500, 0xb2000018, 0x0146024a, + 0x8c000510, 0x05000009, 0x59bc10e0, 0x80080108, + 0x900a350f, 0x9800048b, 0x05000005, 0x4803c857, + 0x1201f000, 0x00108a4e, 0x1c01f000, 0x4d300000, + 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, + 0x813261c0, 0x01000e15, 0x59300804, 0x8c04051c, + 0x05020068, 0x59300027, 0x80006d40, 0x05000065, + 0x83180400, 0x00020fa9, 0x50001000, 0x5808020f, + 0x8c000500, 0x0502005d, 0x58340811, 0x8c040500, + 0x0502002b, 0x5808000e, 0x50000000, 0x48001003, + 0x5808080c, 0x80040c80, 0x58340011, 0x8c000504, + 0x05000007, 0x5834200d, 0x5834280e, 0x48101007, + 0x48141008, 0x84000504, 0x48006811, 0x5834180c, + 0x5834300f, 0x58345010, 0x40180000, 0x80284480, + 0x05021002, 0x40280000, 0x80000104, 0x80044480, + 0x05001002, 0x40000800, 0xb0040480, 0x05001002, + 0x61000800, 0x48041004, 0x800408c4, 0x48041005, + 0x40040000, 0x80285480, 0x48286810, 0x80184c80, + 0x05000016, 0x4824680f, 0x802851c0, 0x05000015, + 0x05f9f8b6, 0x5c026000, 0x1c01f000, 0x84040d00, + 0x48046811, 0x5808080b, 0x5834200d, 0x5834280e, + 0x59301809, 0x580c3004, 0x48181006, 0x48041003, + 0x48101007, 0x48141008, 0x49301010, 0x48341011, + 0x60000801, 0x05fdf7d6, 0x800c1840, 0x05020005, + 0x58340011, 0x84000542, 0x48006811, 0x05fdf7e9, + 0x5834700a, 0x5834200b, 0x80102000, 0x50100000, + 0x80000540, 0x05000010, 0x80383400, 0x58183800, + 0x58184001, 0x58184802, 0x4810680b, 0x480c680c, + 0x481c680d, 0x4820680e, 0x4824680f, 0x802851c0, + 0x05fc07ec, 0x58340011, 0x84000544, 0x48006811, + 0x05fdf7d4, 0x58387001, 0x4838680a, 0x42002000, + 0x00100042, 0x05fdf7ea, 0x84000542, 0x4800120f, + 0x4933c857, 0x05fdf7cc, 0x001122c8, 0x001122da, + 0x001122ec, 0x001122fe, 0x00112310, 0x5830020f, + 0x8c000500, 0x0502001b, 0x58307810, 0x803c79c0, + 0x05000030, 0x58300002, 0x82000580, 0x00000100, + 0x0502002e, 0x583c0c07, 0x90040586, 0x05000003, + 0x90040583, 0x05020027, 0x58300804, 0x58300003, + 0x80040c00, 0x5830000b, 0x80047c80, 0x823c7d80, + 0x00000080, 0x05020002, 0x40000800, 0x5830000e, + 0x44040000, 0x5830000d, 0x480378e7, 0x1c01f000, + 0x4803c856, 0x4978620f, 0x8c000502, 0x05fc07fc, + 0x4803c856, 0x4c300000, 0x0145f9d1, 0x5c006000, + 0x58300c0f, 0x800410ca, 0x82081400, 0x00007600, + 0x4a001014, 0x00090000, 0x800410c8, 0x82081400, + 0x0000bf32, 0x58080005, 0x84000500, 0x48001005, + 0x5830000b, 0x5830080e, 0x44000800, 0x0145f9c2, + 0x483fc857, 0x05fdf7e6, 0x4d300000, 0x4d2c0000, + 0x4d3c0000, 0x4c300000, 0x58326010, 0x4933c857, + 0x59325809, 0x592c020c, 0x8400054e, 0x48025a0c, + 0x417a7800, 0x0155fd87, 0x5c006000, 0x5c027800, + 0x5c025800, 0x5c026000, 0x05fdf7d5, 0x816404a0, + 0x05001013, 0x41626000, 0x41580000, 0x59300a03, + 0x90040d80, 0x05020007, 0x64226203, 0x8166c840, + 0x9132c430, 0x81600480, 0x05021007, 0x1c01f000, + 0x91326430, 0x81300c80, 0x05fc17f5, 0x40be6000, + 0x05fdf7f3, 0x80bec56f, 0x1c01f000, 0x42000000, + 0x001123e4, 0x0169ff57, 0x4967c857, 0x80026580, + 0x1c01f000, 0x813004af, 0x014c10c4, 0x41580000, + 0x81300480, 0x0502100a, 0x457a6000, 0x4a026202, + 0x0000ffff, 0x05011000, 0x91300403, 0x4803c840, + 0x64b3c842, 0x8166c800, 0x1c01f000, 0x41540000, + 0x81300480, 0x01021e15, 0xa1300494, 0x05021008, + 0x5930102f, 0x82080580, 0x00000800, 0x4802602f, + 0x64026203, 0x497a6006, 0x1c01f000, 0x59a8009b, + 0x80000000, 0x4803509b, 0x5930102f, 0x82080580, + 0x00000800, 0x4802602f, 0x457a6000, 0x4a026202, 0x0000ffff, 0x05011000, 0x91300403, 0x4803c840, - 0x64b7c842, 0x1c01f000, 0x4d340000, 0x4d240000, + 0x64b3c842, 0x1c01f000, 0x4d340000, 0x4d240000, 0x5932481d, 0x5932680a, 0x59300407, 0x9000051f, 0x0c01f804, 0x5c024800, 0x5c026800, 0x1c01f000, - 0x0010942a, 0x00109439, 0x00109453, 0x0002102a, - 0x0010baa6, 0x0010bac1, 0x0002111a, 0x0010942a, - 0x00109439, 0x00107f71, 0x0010949b, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010946b, - 0x0010b373, 0x0010cb60, 0x0010942a, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010942a, - 0x59300203, 0x90000c91, 0x01021dda, 0x0c01f001, - 0x0010946a, 0x0010a076, 0x0002103f, 0x0010a2f9, - 0x0010a3aa, 0x0010946a, 0x0010946a, 0x0010946a, - 0x0010a062, 0x0010946a, 0x0010946a, 0x0010946a, - 0x0010946a, 0x0010a5a1, 0x0010ae80, 0x0010946a, - 0x0010aeaf, 0xb1380498, 0x05021006, 0xb1380480, + 0x0010995c, 0x0010996b, 0x00109985, 0x00021063, + 0x0010c183, 0x0010c19e, 0x00021153, 0x0010995c, + 0x0010996b, 0x0010842a, 0x001099cd, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010999d, + 0x0010b919, 0x0010d2aa, 0x0010995c, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010995c, + 0x59300203, 0x90000c91, 0x01021e15, 0x0c01f001, + 0x0010999c, 0x0010a5bb, 0x00021078, 0x0010a83d, + 0x0010a8ee, 0x0010999c, 0x0010999c, 0x0010999c, + 0x0010a5a7, 0x0010999c, 0x0010999c, 0x0010999c, + 0x0010999c, 0x0010ab13, 0x0010b419, 0x0010999c, + 0x0010b448, 0xb1380498, 0x05021006, 0xb1380480, 0x05001004, 0x4d2c0000, 0x0c01f803, 0x5c025800, - 0x1c01f000, 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, - 0x0010a0f0, 0x0010a0f0, 0x0010a0f1, 0x0010a1ed, - 0x0010a0f0, 0x0010a23e, 0x0010a0f0, 0x0010a0f0, - 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, - 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, - 0x0010a1f1, 0x0002105f, 0x0010a0f0, 0x0010a1f0, - 0x0010a1f2, 0x59325809, 0x59300008, 0x8c000536, + 0x1c01f000, 0x0010a634, 0x0010a634, 0x0010a634, + 0x0010a634, 0x0010a634, 0x0010a635, 0x0010a731, + 0x0010a634, 0x0010a782, 0x0010a634, 0x0010a634, + 0x0010a634, 0x0010a634, 0x0010a634, 0x0010a634, + 0x0010a634, 0x0010a634, 0x0010a634, 0x0010a634, + 0x0010a735, 0x00021098, 0x0010a634, 0x0010a734, + 0x0010a736, 0x59325809, 0x59300008, 0x8c000536, 0x0500000f, 0x497a580d, 0x41782800, 0x60303000, 0x60443800, 0x4c5c0000, 0x592cb805, 0x0501f84c, - 0x4d2c0000, 0x405e5800, 0x0105f992, 0x5c025800, + 0x4d2c0000, 0x405e5800, 0x0105f9c9, 0x5c025800, 0x497a5805, 0x5c00b800, 0x0501f01c, 0x59300813, 0x59301402, 0x59340200, 0x8c00050e, 0x05020023, 0x0501f82f, 0x05000005, 0x4a025a08, 0x00000103, 0x497a580d, 0x0501f009, 0x4a025a08, 0x00000103, - 0x64025a0a, 0x497a580d, 0x40040000, 0x0159feba, - 0x80000d40, 0x01520b78, 0x4806580b, 0x480a5c0a, + 0x64025a0a, 0x497a580d, 0x40040000, 0x015dfc60, + 0x80000d40, 0x015608bc, 0x4806580b, 0x480a5c0a, 0x59300008, 0x82000500, 0x04000800, 0x82000580, - 0x04000800, 0x05000017, 0x05f9faf6, 0x0159feb1, + 0x04000800, 0x05000017, 0x05f9fae3, 0x015dfc57, 0x5934000f, 0x8d0c0512, 0x05020005, 0x5934140b, 0x80081040, 0x05001002, 0x480a6c0b, 0x80000540, - 0x05fa0a77, 0x05fdf745, 0x592c020e, 0x8c000502, + 0x05fa0a64, 0x05fdf740, 0x592c020e, 0x8c000502, 0x05fc07dc, 0x800409c0, 0x05fc07e0, 0x592c020c, - 0x8c00050e, 0x05fe07dd, 0x4933c857, 0x0155f703, + 0x8c00050e, 0x05fe07dd, 0x4933c857, 0x0159f49c, 0x59300221, 0x48025c13, 0x05fdf7e8, 0x592c020e, 0x8c000500, 0x0500000d, 0x59300017, 0x592c3813, 0x801c3c80, 0x05000009, 0x64565a0a, 0x8c1c053e, @@ -14629,2070 +15123,2092 @@ static const uint32_t isp_2500_risc_code[] = { 0x812c3c00, 0x50180000, 0x44003800, 0x401cc000, 0x901cc401, 0x585c0813, 0x800409c0, 0x0500003d, 0x4807c857, 0x8c04053e, 0x05020025, 0x5930002b, - 0x80000540, 0x05000018, 0x015dfa98, 0x0500002e, + 0x80000540, 0x05000018, 0x0161f94e, 0x0500002e, 0x4c040000, 0x4c080000, 0x4c0c0000, 0x4c100000, 0x4c140000, 0x40002800, 0x58141003, 0x40040000, - 0x80081480, 0x48082803, 0x40140000, 0x0105ff10, + 0x80081480, 0x48082803, 0x40140000, 0x0105ffae, 0x5c002800, 0x5c002000, 0x5c001800, 0x5c001000, 0x5c000800, 0x592c020a, 0x80000540, 0x0502000b, 0x0501f005, 0x592c040c, 0x8c00051c, 0x05000002, 0x592c0806, 0x4807c857, 0x592c020a, 0x82000540, 0x00001500, 0x48025a0a, 0x0501f016, 0x5930002b, - 0x80000540, 0x0500000e, 0x015dfa98, 0x0500000a, + 0x80000540, 0x0500000e, 0x0161f94e, 0x0500000a, 0x592c020a, 0x82000540, 0x00000700, 0x48025a0a, - 0x5930002b, 0x4c040000, 0x0105ff10, 0x5c000800, + 0x5930002b, 0x4c040000, 0x0105ffae, 0x5c000800, 0x0501f008, 0x64465a0a, 0x05fdf7fa, 0x4807c856, 0x592c020a, 0x82000540, 0x00000700, 0x48025a0a, 0x4404c000, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x59300203, 0x90003491, 0x01021dda, 0x0c01f001, - 0x0010badf, 0x0002112f, 0x0010c2aa, 0x0010c2bb, - 0x0002114a, 0x0010badf, 0x0010c39c, 0x00021178, - 0x0010badf, 0x0010badf, 0x0010badf, 0x0010badf, - 0x0010badf, 0x0010badf, 0x0010c8cd, 0x0010badf, - 0x0010c900, 0x91380593, 0x01620241, 0x59300403, - 0xb0027484, 0x01021dda, 0xb0000480, 0x01001dda, - 0x0c01f001, 0x0010c28a, 0x0002113b, 0x0010c28b, - 0x0010c29d, 0x0159f89e, 0x05000005, 0x59a8005e, + 0x59300203, 0x90003491, 0x01021e15, 0x0c01f001, + 0x0010c1bc, 0x00021168, 0x0010c9ad, 0x0010c9be, + 0x00021183, 0x0010c1bc, 0x0010ca9f, 0x000211b1, + 0x0010c1bc, 0x0010c1bc, 0x0010c1bc, 0x0010c1bc, + 0x0010c1bc, 0x0010c1bc, 0x0010d017, 0x0010c1bc, + 0x0010d04a, 0x91380593, 0x01660144, 0x59300403, + 0xb0027484, 0x01021e15, 0xb0000480, 0x01001e15, + 0x0c01f001, 0x0010c98d, 0x00021174, 0x0010c98e, + 0x0010c9a0, 0x0159fe36, 0x05000005, 0x59a80061, 0x48026205, 0x643a6203, 0x1c01f000, 0x59325809, 0x832c0500, 0x00ff0000, 0x05000004, 0x592c0c0e, - 0x8c04051a, 0x0162029a, 0x05fdfd06, 0x05fdf693, + 0x8c04051a, 0x0166019d, 0x05fdfd03, 0x05fdf68e, 0xb1380498, 0x05001007, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x01020dda, 0x4933c857, 0x1c01f000, - 0xb1380588, 0x05000004, 0xb1380593, 0x0160033f, - 0x0101fdda, 0x83300580, 0x00111ad0, 0x05020008, - 0x497a6205, 0x59301202, 0x41780000, 0x0161fc4e, - 0x01600354, 0x411e6000, 0x0161f31f, 0x5930002b, + 0xb13805a0, 0x01020e15, 0x4933c857, 0x1c01f000, + 0xb1380588, 0x05000004, 0xb1380593, 0x01640242, + 0x0101fe15, 0x83300580, 0x00115a74, 0x05020008, + 0x497a6205, 0x59301202, 0x41780000, 0x0165fb4b, + 0x01640257, 0x411e6000, 0x0165f222, 0x5930002b, 0x59301013, 0x5930080a, 0x58040a00, 0x8c04050e, - 0x01620325, 0x800811c0, 0x01620330, 0x5930002b, - 0x80000540, 0x0162033a, 0x59325809, 0x592c040e, - 0x8c00051e, 0x0160031f, 0x64066203, 0x65066403, + 0x01660228, 0x800811c0, 0x01660233, 0x5930002b, + 0x80000540, 0x0166023d, 0x59325809, 0x592c040e, + 0x8c00051e, 0x01640222, 0x64066203, 0x65066403, 0x42000800, 0x80002042, 0x8c00051a, 0x05020002, - 0x84040d54, 0x05fdf534, 0xb1380498, 0x01621360, - 0xb1380480, 0x01601361, 0x0c01f001, 0x0010c369, - 0x00021191, 0x0010c372, 0x0010c377, 0x0010c369, - 0x0010c369, 0x0010c369, 0x0010c369, 0x0010c36a, - 0x0010c36e, 0x0010c36e, 0x0010c369, 0x0010c369, - 0x0010c369, 0x0010c369, 0x0010c36e, 0x0010c369, - 0x0010c36e, 0x0010c369, 0x0010c36a, 0x64066203, - 0x493a6403, 0x42000800, 0x80002042, 0x05fdf516, + 0x84040d54, 0x05fdf532, 0xb1380498, 0x01661263, + 0xb1380480, 0x01641264, 0x0c01f001, 0x0010ca6c, + 0x000211ca, 0x0010ca75, 0x0010ca7a, 0x0010ca6c, + 0x0010ca6c, 0x0010ca6c, 0x0010ca6c, 0x0010ca6d, + 0x0010ca71, 0x0010ca71, 0x0010ca6c, 0x0010ca6c, + 0x0010ca6c, 0x0010ca6c, 0x0010ca71, 0x0010ca6c, + 0x0010ca71, 0x0010ca6c, 0x0010ca6d, 0x64066203, + 0x493a6403, 0x42000800, 0x80002042, 0x05fdf514, + 0x8058b1c0, 0x01000e15, 0x5450a800, 0x8050a000, + 0x8054a800, 0x8058b040, 0x05fe07fc, 0x1c01f000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00960114, + 0x00000000, 0x00000000, 0x00000000, 0x81cffae4, 0x00000000, 0x00000000, 0x00000000, 0x00000005, 0xfffffffb, 0x02800004, 0x00000000, 0x0000c000, - 0x00000aa2, 0x073fca5a, 0x0705a5a5, 0x01928009, + 0x00000adf, 0x073fca5a, 0x0705a5a5, 0x01928009, 0x070ff0e1, 0x03800006, 0x053f2aaa, 0x070aaaaa, - 0x073f3aaa, 0x070aaaaa, 0x05958014, 0x05308000, - 0x05008000, 0x0600902f, 0x04a007df, 0x0202f051, - 0x042e4020, 0x07840018, 0x028f0361, 0x033e5000, - 0x03020000, 0x068d0025, 0x079306e2, 0x039206e4, - 0x050fb056, 0x040010e6, 0x002fb008, 0x060ff0e6, - 0x00580401, 0x054880ff, 0x06810023, 0x008c04f2, - 0x008a04f1, 0x048b04ef, 0x069f0029, 0x039809b1, - 0x069f0029, 0x079909af, 0x058e8014, 0x07840018, - 0x0678aae5, 0x04004051, 0x06818275, 0x079a0014, - 0x030430d4, 0x04052051, 0x0448b043, 0x06810034, - 0x00252080, 0x022a5001, 0x06780043, 0x030e0000, - 0x030450ff, 0x06780043, 0x03019000, 0x03a182b7, - 0x0481892c, 0x027c0045, 0x03020000, 0x0781812d, - 0x0590803f, 0x0291092a, 0x010410a6, 0x06600052, - 0x030d60ff, 0x05601041, 0x050f80ff, 0x032fa071, - 0x060ff032, 0x055c0441, 0x0681004f, 0x070ff0d1, - 0x055c0403, 0x034a88ff, 0x05818944, 0x01800114, - 0x07480000, 0x07810936, 0x0149b000, 0x0781005f, - 0x06600a01, 0x050f80ff, 0x053fa809, 0x0600001c, - 0x07f00000, 0x030ef039, 0x02860934, 0x07600339, - 0x07601839, 0x050f80ff, 0x063fa051, 0x06000002, - 0x05481000, 0x04818068, 0x06780043, 0x070000f0, - 0x06810073, 0x037c00ff, 0x06000010, 0x04818932, - 0x02800073, 0x06780043, 0x070000f0, 0x037c00ff, - 0x07000030, 0x06810073, 0x06780043, 0x070000f0, - 0x037c00ff, 0x06000020, 0x06810073, 0x02800932, - 0x0379ff00, 0x070fffff, 0x06780043, 0x07f00000, - 0x075a0000, 0x020ef001, 0x02860934, 0x05484000, - 0x02a182da, 0x03680c00, 0x0581897b, 0x04600452, - 0x030d60ff, 0x002fb001, 0x070ff069, 0x00868089, - 0x060ff079, 0x055c0441, 0x07810014, 0x012fb000, - 0x060560fb, 0x0280008f, 0x060ff079, 0x028682b5, - 0x070ff069, 0x055c0441, 0x07810014, 0x060560fb, - 0x070ff0d1, 0x0700f0ff, 0x04600252, 0x030d60ff, - 0x070ff00f, 0x055c040c, 0x058180fa, 0x070ff0d1, - 0x045c040d, 0x054b08ff, 0x07818105, 0x04600801, - 0x050f80ff, 0x053fa809, 0x0600004f, 0x03070039, - 0x0007b001, 0x03079041, 0x0307a000, 0x07489000, - 0x06818134, 0x068d00a4, 0x0207c004, 0x0107d005, - 0x0107e006, 0x0207f007, 0x02080008, 0x01081009, - 0x0108200a, 0x0208300b, 0x018680bb, 0x0448d07a, - 0x058180bb, 0x0448b07a, 0x0681093d, 0x0049707a, - 0x058180bb, 0x04604679, 0x050f80ff, 0x053fa809, - 0x06000001, 0x01680703, 0x076c0303, 0x0481893d, - 0x072d5003, 0x033e5000, 0x05002000, 0x0049107a, - 0x068100c7, 0x070ff00a, 0x0054040b, 0x058280c6, - 0x078d00c3, 0x0008200b, 0x032ff000, 0x010770ff, - 0x0108400c, 0x0208500d, 0x0678007a, 0x06000008, - 0x068100da, 0x078d00cc, 0x04603e79, 0x050f80ff, - 0x073fa041, 0x0600004a, 0x0049707a, 0x01a18a0f, - 0x068d00d3, 0x0678007a, 0x07f00000, 0x010880ff, - 0x02386008, 0x03010000, 0x028000e0, 0x068d00da, - 0x0678007a, 0x07f00000, 0x010880ff, 0x03386000, - 0x03010000, 0x072e6300, 0x020ef07f, 0x03860014, - 0x070ff07d, 0x0450047c, 0x050f80ff, 0x002fa819, - 0x078d00e7, 0x02080001, 0x00081002, 0x0678007a, - 0x05000200, 0x068100ef, 0x0049107a, 0x02a182d3, - 0x01082003, 0x078d00f0, 0x0448b07a, 0x078100f6, - 0x0338600c, 0x03010000, 0x028000f8, 0x02386004, - 0x03010000, 0x072e6c00, 0x03800014, 0x04600252, - 0x030d60ff, 0x07f00000, 0x07f00000, 0x0400e0d0, - 0x0648300e, 0x07810096, 0x072e500c, 0x00208001, - 0x05a007e4, 0x03800014, 0x06780043, 0x070000f0, - 0x0781093f, 0x050020ff, 0x027c0002, 0x06000010, - 0x04810110, 0x027c0002, 0x07000030, 0x04810110, - 0x0380093f, 0x0500d0d1, 0x0279ff0d, 0x070000ff, - 0x0380009a, 0x060ff032, 0x055c0441, 0x0681004f, - 0x020ef002, 0x03860924, 0x04602602, 0x050f80ff, + 0x073f3aaa, 0x070aaaaa, 0x04958016, 0x05308000, + 0x05008000, 0x0600902f, 0x070ff02e, 0x055c0409, + 0x02a1880d, 0x0202f051, 0x042e4020, 0x0684001a, + 0x028f037c, 0x033e5000, 0x03020000, 0x078d0027, + 0x04930701, 0x01920703, 0x050fb056, 0x040010e6, + 0x002fb008, 0x060ff0e6, 0x00580401, 0x054880ff, + 0x06810025, 0x028c050d, 0x038a050c, 0x078b050a, + 0x079f002b, 0x039809ed, 0x079f002b, 0x079909eb, + 0x048e8016, 0x0684001a, 0x0678aae5, 0x04004051, + 0x0681828c, 0x069a0016, 0x030430d4, 0x04052051, + 0x0448b043, 0x07810036, 0x00252080, 0x022a5001, + 0x06780043, 0x030e0000, 0x030450ff, 0x06780043, + 0x03019000, 0x03a182d8, 0x05818960, 0x027c0045, + 0x03020000, 0x07818135, 0x05908041, 0x0291095e, + 0x010410a6, 0x06600052, 0x030d60ff, 0x05601041, + 0x050f80ff, 0x032fa071, 0x060ff032, 0x055c0441, + 0x06810051, 0x070ff0d1, 0x055c0403, 0x034a88ff, + 0x05818978, 0x0080011c, 0x07480000, 0x0781096a, + 0x0149b000, 0x06810061, 0x06600a01, 0x050f80ff, + 0x053fa809, 0x0600001c, 0x07f00000, 0x030ef039, + 0x02860968, 0x07600339, 0x07601839, 0x050f80ff, + 0x063fa051, 0x06000002, 0x05481000, 0x0581806a, + 0x06780043, 0x070000f0, 0x06810075, 0x037c00ff, + 0x06000010, 0x05818966, 0x02800075, 0x06780043, + 0x070000f0, 0x037c00ff, 0x07000030, 0x06810075, + 0x06780043, 0x070000f0, 0x037c00ff, 0x06000020, + 0x06810075, 0x03800966, 0x0379ff00, 0x070fffff, + 0x06780043, 0x07f00000, 0x075a0000, 0x020ef001, + 0x02860968, 0x05484000, 0x02a182fd, 0x03680c00, + 0x058189b7, 0x04600452, 0x030d60ff, 0x002fb001, + 0x070ff069, 0x0186808b, 0x060ff079, 0x055c0441, + 0x06810016, 0x012fb000, 0x060560fb, 0x02800091, + 0x060ff079, 0x038682d4, 0x070ff069, 0x055c0441, + 0x06810016, 0x060560fb, 0x070ff0d1, 0x0700f0ff, + 0x04600252, 0x030d60ff, 0x070ff00f, 0x055c040c, + 0x058180fc, 0x070ff0d1, 0x045c040d, 0x054b08ff, + 0x0681810d, 0x04600801, 0x050f80ff, 0x053fa809, + 0x0600004f, 0x03070039, 0x0007b001, 0x03079041, + 0x0307a000, 0x07489000, 0x0781813c, 0x078d00a6, + 0x0207c004, 0x0107d005, 0x0107e006, 0x0207f007, + 0x02080008, 0x01081009, 0x0108200a, 0x0208300b, + 0x018680bd, 0x0448d07a, 0x058180bd, 0x0448b07a, + 0x07810971, 0x0049707a, 0x058180bd, 0x04604679, + 0x050f80ff, 0x053fa809, 0x06000001, 0x01680703, + 0x076c0303, 0x05818971, 0x072d5003, 0x033e5000, + 0x05002000, 0x0049107a, 0x078100c9, 0x070ff00a, + 0x0054040b, 0x048280c8, 0x078d00c5, 0x0008200b, + 0x032ff000, 0x010770ff, 0x0108400c, 0x0208500d, + 0x0678007a, 0x06000008, 0x068100dc, 0x068d00ce, + 0x04603e79, 0x050f80ff, 0x073fa041, 0x0600004a, + 0x0049707a, 0x01a18a4b, 0x068d00d5, 0x0678007a, + 0x07f00000, 0x010880ff, 0x02386008, 0x03010000, + 0x038000e2, 0x068d00dc, 0x0678007a, 0x07f00000, + 0x010880ff, 0x03386000, 0x03010000, 0x072e6300, + 0x020ef07f, 0x02860016, 0x070ff07d, 0x0450047c, + 0x050f80ff, 0x002fa819, 0x068d00e9, 0x02080001, + 0x00081002, 0x0678007a, 0x05000200, 0x068100f1, + 0x0049107a, 0x03a182f6, 0x01082003, 0x068d00f2, + 0x0448b07a, 0x068100f8, 0x0338600c, 0x03010000, + 0x038000fa, 0x02386004, 0x03010000, 0x072e6c00, + 0x02800016, 0x04600252, 0x030d60ff, 0x07f00000, + 0x07f00000, 0x0400e0d0, 0x0648300e, 0x06810098, + 0x072e500c, 0x00208001, 0x062d6002, 0x050fd00c, + 0x07f00000, 0x07f00000, 0x070ff0d1, 0x050fd0ff, + 0x05a00812, 0x02800016, 0x06780043, 0x070000f0, + 0x06810973, 0x050020ff, 0x027c0002, 0x06000010, + 0x05810118, 0x027c0002, 0x07000030, 0x05810118, + 0x02800973, 0x0500d0d1, 0x0279ff0d, 0x070000ff, + 0x0380009c, 0x060ff032, 0x055c0441, 0x06810051, + 0x020ef002, 0x02860958, 0x04602602, 0x050f80ff, 0x053fa811, 0x06000008, 0x060ff0d0, 0x055c0411, - 0x0179feff, 0x0700ffff, 0x05818924, 0x0448b043, - 0x0481012c, 0x072d6000, 0x0179fd12, 0x0600001f, + 0x0179feff, 0x0700ffff, 0x04818958, 0x0448b043, + 0x04810134, 0x072d6000, 0x0179fd12, 0x0600001f, 0x060ff0d0, 0x0379fcff, 0x0600001f, 0x055c0412, - 0x05818924, 0x0280004f, 0x027c0045, 0x03040000, - 0x0481013d, 0x027c0045, 0x03080000, 0x0681092a, - 0x0380003f, 0x06600a79, 0x050f80ff, 0x053fa80a, - 0x06000010, 0x028000a4, 0x05601041, 0x050f80ff, - 0x032fa071, 0x0280004f, 0x0204a051, 0x06780043, - 0x070000f0, 0x037c00ff, 0x06000010, 0x07818266, - 0x06600052, 0x030d60ff, 0x00948926, 0x050fb056, - 0x044880e6, 0x05818014, 0x060ff0d0, 0x0179feff, - 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x07810924, - 0x053f2000, 0x07030000, 0x019d8014, 0x070ff093, - 0x045a0201, 0x070ff093, 0x045c0401, 0x06818152, + 0x04818958, 0x02800051, 0x027c0045, 0x03040000, + 0x04810145, 0x027c0045, 0x03080000, 0x0681095e, + 0x03800041, 0x06600a79, 0x050f80ff, 0x053fa80a, + 0x06000010, 0x038000a6, 0x05601041, 0x050f80ff, + 0x032fa071, 0x02800051, 0x0204a051, 0x06780043, + 0x070000f0, 0x037c00ff, 0x06000010, 0x0781827d, + 0x06600052, 0x030d60ff, 0x0194895a, 0x050fb056, + 0x044880e6, 0x04818016, 0x060ff0d0, 0x0179feff, + 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x06810958, + 0x053f2000, 0x07030000, 0x009d8016, 0x070ff093, + 0x045a0201, 0x070ff093, 0x045c0401, 0x0781815a, 0x02046092, 0x04002046, 0x060ff002, 0x045c0401, - 0x0703a0ff, 0x04600202, 0x00540401, 0x07828160, + 0x0703a0ff, 0x04600202, 0x00540401, 0x06828168, 0x04500425, 0x070060ff, 0x0730ffff, 0x0700000f, - 0x0742000f, 0x048102ad, 0x07a0090c, 0x0648a002, - 0x07818163, 0x00047089, 0x070ff047, 0x045c0443, - 0x077800ff, 0x07f00000, 0x068182ab, 0x07780047, - 0x0500e000, 0x04818913, 0x070ff006, 0x008601f1, + 0x0742000f, 0x058102c6, 0x06a00940, 0x0648a002, + 0x0681816b, 0x00047089, 0x070ff047, 0x045c0443, + 0x077800ff, 0x07f00000, 0x068182c2, 0x07780047, + 0x0500e600, 0x05818947, 0x070ff006, 0x01860200, 0x0179fe47, 0x0700000f, 0x010480ff, 0x056c7048, - 0x0681817c, 0x007a0d4a, 0x04003801, 0x0220f001, - 0x00800189, 0x07608e48, 0x034a60ff, 0x0700f0ff, + 0x07818184, 0x007a0d4a, 0x04003801, 0x0220f001, + 0x00800191, 0x07608e48, 0x034a60ff, 0x0700f0ff, 0x074b88ff, 0x037000ff, 0x07000600, 0x05500448, 0x074d00ff, 0x045a044a, 0x0304a0ff, 0x070ff00f, - 0x01540406, 0x048201f1, 0x04031051, 0x0349c0e4, - 0x048101e0, 0x062d6001, 0x07f00000, 0x060ff0d0, - 0x034900ff, 0x068181e0, 0x072e500c, 0x062d6002, + 0x01540406, 0x05820200, 0x04031051, 0x0349c0e4, + 0x048101ef, 0x062d6001, 0x07f00000, 0x060ff0d0, + 0x034900ff, 0x068181ef, 0x072e500c, 0x062d6002, 0x07f00000, 0x0204f0d0, 0x0079fe4f, 0x070000ff, - 0x050580ff, 0x01540436, 0x078281d8, 0x060ff058, - 0x0054043b, 0x058201d8, 0x072d6000, 0x044b044f, + 0x050580ff, 0x01540436, 0x078281e7, 0x060ff058, + 0x0054043b, 0x058201e7, 0x072d6000, 0x044b044f, 0x050580ff, 0x0004d0d0, 0x0379ff4d, 0x0700ffff, - 0x0104e0d1, 0x0379ff4e, 0x0700ffff, 0x079081a6, - 0x0291092a, 0x0500e0a6, 0x0279ff0e, 0x0700ffff, + 0x0104e0d1, 0x0379ff4e, 0x0700ffff, 0x069081ae, + 0x0291095e, 0x0500e0a6, 0x0279ff0e, 0x0700ffff, 0x04600e0e, 0x050f80ff, 0x032fa009, 0x07f00000, - 0x074b0000, 0x056c0e00, 0x048101dc, 0x0660060e, + 0x074b0000, 0x056c0e00, 0x058101eb, 0x0660060e, 0x050f80ff, 0x032fa009, 0x0379ff00, 0x070000ff, - 0x076c0000, 0x068181da, 0x06602e0e, 0x050f80ff, - 0x032fa009, 0x030ef000, 0x028681bf, 0x066a0331, - 0x00201008, 0x0460040e, 0x050f80ff, 0x032fa009, - 0x07780000, 0x07ffff00, 0x045a0458, 0x070000ff, + 0x076c0000, 0x068181e9, 0x06602e0e, 0x050f80ff, + 0x032fa009, 0x030ef000, 0x028681c7, 0x066a0331, + 0x04605e0e, 0x050f80ff, 0x032fa009, 0x07780000, + 0x06000008, 0x048101ce, 0x0045e04a, 0x00201008, + 0x0460040e, 0x050f80ff, 0x032fa009, 0x07780000, + 0x07ffff00, 0x045a0458, 0x070000ff, 0x04002051, + 0x06003051, 0x01204000, 0x07305000, 0x07000060, + 0x03206009, 0x05007022, 0x0460040e, 0x050f80ff, + 0x032fa042, 0x07f00000, 0x0405804f, 0x0460520e, + 0x050f80ff, 0x053fa812, 0x06000026, 0x00800213, + 0x066a0531, 0x018001ee, 0x046a0731, 0x018001ee, + 0x066a0931, 0x018001ee, 0x046a0b31, 0x0405804f, + 0x04950210, 0x07a0031d, 0x02868213, 0x06780043, + 0x070000f0, 0x037c00ff, 0x07000030, 0x0481020e, + 0x0134bfff, 0x070fffff, 0x0104102e, 0x050fd041, + 0x07602e41, 0x050f80ff, 0x06000051, 0x032fa00a, + 0x01800236, 0x07608e48, 0x034a60ff, 0x00540425, + 0x05810205, 0x06828208, 0x06a00379, 0x02209016, + 0x0380097e, 0x0495020e, 0x07a0031d, 0x0086020e, + 0x0202f00e, 0x052e4030, 0x040fd02f, 0x06a00379, + 0x02800016, 0x0400e02f, 0x042e4020, 0x0202f051, + 0x0004100e, 0x0079fe31, 0x070000ff, 0x0481022c, + 0x06602e0e, 0x050f80ff, 0x06780031, 0x06000004, + 0x0481021f, 0x04300ead, 0x010deadd, 0x0080022a, + 0x07000033, 0x032fa00a, 0x0079fe58, 0x070000ff, + 0x070000ff, 0x04602c0e, 0x050f80ff, 0x017a0100, + 0x03400000, 0x032fa00a, 0x0080022c, 0x032fa00a, + 0x07f00000, 0x044b8c31, 0x045a040e, 0x0104b0ff, + 0x004980e5, 0x07818236, 0x06780043, 0x070000f0, + 0x037c00ff, 0x07000030, 0x078109b4, 0x024a6c46, + 0x04500423, 0x050070ff, 0x03620024, 0x050080ff, + 0x04004046, 0x0700500f, 0x03206000, 0x05601048, + 0x0700a0ff, 0x0700900a, 0x070ff005, 0x04500446, + 0x00540425, 0x05820269, 0x07601e22, 0x050f80ff, + 0x063fa032, 0x06000002, 0x03203000, 0x01204000, + 0x03205000, 0x0120b000, 0x0320c000, 0x07601841, + 0x050f80ff, 0x043fa852, 0x06000001, 0x070ff056, + 0x056c02ff, 0x050fb0ff, 0x070560ff, 0x03079041, + 0x05601041, 0x050f80ff, 0x073fa011, 0x0600003d, + 0x06780043, 0x07f00000, 0x065a007a, 0x010880ff, + 0x033e5000, 0x05002000, 0x06a00316, 0x048d0262, + 0x0208a04a, 0x0108b04b, 0x02386001, 0x03010000, + 0x072e6300, 0x028000e3, 0x0500d00a, 0x05500405, + 0x014a68ff, 0x070090ff, 0x0154040a, 0x0700c0ff, + 0x0600a023, 0x0500b024, 0x02206001, 0x07601e22, + 0x050f80ff, 0x063fa04a, 0x06000002, 0x07f00000, + 0x07601822, 0x050f80ff, 0x043fa819, 0x06000001, + 0x0600a00d, 0x0080024c, 0x06780043, 0x070000f0, + 0x050010ff, 0x027c0001, 0x07000030, 0x05810287, + 0x027c0001, 0x06000020, 0x0781094e, 0x03800966, + 0x0548e0e4, 0x0781094e, 0x0334a000, 0x03080000, + 0x0180014b, 0x074860ff, 0x068182ad, 0x054880ff, + 0x06810016, 0x070ff056, 0x050fb0ff, 0x044880e5, + 0x04810298, 0x067800e6, 0x07000041, 0x04818016, + 0x0180029f, 0x056c02ff, 0x050fb0ff, 0x070560ff, + 0x072e5300, 0x067800e6, 0x07000041, 0x04818016, + 0x072d5003, 0x033e5000, 0x05002000, 0x06780043, + 0x07f00000, 0x010880ff, 0x050fd0ff, 0x058d02a6, + 0x03386005, 0x03010000, 0x033e6000, 0x0700000c, + 0x052e5200, 0x02800016, 0x069a0016, 0x05301fff, + 0x0700000f, 0x06420001, 0x058102c6, 0x06a00940, + 0x0648a002, 0x068182b0, 0x062e5080, 0x04001089, + 0x040fd002, 0x040fd001, 0x02499001, 0x048102ef, + 0x070ff0d4, 0x050fd0ff, 0x045c0401, 0x077800ff, + 0x07f00000, 0x068182ef, 0x02800016, 0x06009051, + 0x057b8509, 0x06000002, 0x00800815, 0x06009051, + 0x077b8d09, 0x06000002, 0x00800815, 0x06009051, + 0x077b9509, 0x06000002, 0x00800815, 0x03209000, + 0x00800815, 0x06009051, 0x057ba109, 0x06000002, + 0x00800815, 0x06009051, 0x077ba909, 0x06000002, + 0x00800815, 0x06780043, 0x07009000, 0x068182e3, + 0x00498043, 0x048102e3, 0x0648a0e5, 0x058102e4, + 0x027c0045, 0x03040000, 0x048102e6, 0x075c00ff, + 0x07c00000, 0x056a02ff, 0x008002e3, 0x018002e2, + 0x06780075, 0x06000c07, 0x05810882, 0x06009051, + 0x077bcf09, 0x06000002, 0x070fc0ff, 0x05a00800, + 0x070fc0ff, 0x05308000, 0x0700a000, 0x05a00812, + 0x033e5000, 0x0700000c, 0x02800016, 0x070ff003, + 0x01540477, 0x068282fb, 0x07003077, 0x060ff051, + 0x010770ff, 0x07c00000, 0x04602601, 0x050f80ff, + 0x063fa029, 0x06000008, 0x02015010, 0x02016051, + 0x00017051, 0x00011051, 0x07601e41, 0x050f80ff, + 0x053fa83a, 0x06000008, 0x07f00000, 0x05601041, + 0x050f80ff, 0x01464000, 0x032fa00a, 0x05007011, + 0x05008012, 0x06009013, 0x0700a014, 0x0400b015, + 0x0600c016, 0x0500d017, 0x07c00000, 0x072d5003, + 0x06601879, 0x050f80ff, 0x068d0319, 0x063fa051, + 0x0600003e, 0x07c00000, 0x06005051, 0x0400e02c, + 0x0660060e, 0x050f80ff, 0x032fa009, 0x0379ff00, + 0x070000ff, 0x076c0000, 0x07810330, 0x0660600e, + 0x0500e0ff, 0x034000ff, 0x01540427, 0x06820362, + 0x03400005, 0x070ff005, 0x055c0428, 0x06810364, + 0x0280031f, 0x06a00368, 0x04605e0e, 0x050f80ff, + 0x012fa809, 0x06780001, 0x06000008, 0x06810338, + 0x0045e04a, 0x06600052, 0x030d60ff, 0x0460040e, + 0x050f80ff, 0x0004d0d0, 0x0379ff4d, 0x0700ffff, + 0x0104e0d1, 0x0379ff4e, 0x0700ffff, 0x062d6002, + 0x032fa009, 0x0204f0d0, 0x064b004f, 0x07780000, + 0x07ffff00, 0x045a044f, 0x070000ff, 0x00201008, 0x04002051, 0x06003051, 0x01204000, 0x07305000, - 0x07000060, 0x03206009, 0x05007022, 0x0460040e, - 0x050f80ff, 0x032fa042, 0x07f00000, 0x0405804f, - 0x0460520e, 0x050f80ff, 0x053fa812, 0x06000026, - 0x018001fc, 0x066a0531, 0x008001df, 0x046a0731, - 0x008001df, 0x066a0931, 0x008001df, 0x046a0b31, - 0x0405804f, 0x059501f9, 0x05a002fa, 0x038681fc, - 0x06780043, 0x070000f0, 0x037c00ff, 0x07000030, - 0x048101f7, 0x0134bfff, 0x070fffff, 0x0104102e, - 0x050fd041, 0x07602e41, 0x050f80ff, 0x06000051, - 0x032fa00a, 0x0080021f, 0x049501f7, 0x05a002fa, - 0x008601f7, 0x0202f00e, 0x052e4030, 0x040fd02f, - 0x06a0035e, 0x03800014, 0x0400e02f, 0x042e4020, - 0x0202f051, 0x0004100e, 0x0079fe31, 0x070000ff, - 0x04810215, 0x06602e0e, 0x050f80ff, 0x06780031, - 0x06000004, 0x04810208, 0x04300ead, 0x010deadd, - 0x00800213, 0x07000033, 0x032fa00a, 0x0079fe58, - 0x070000ff, 0x070000ff, 0x04602c0e, 0x050f80ff, - 0x017a0100, 0x03400000, 0x032fa00a, 0x00800215, - 0x032fa00a, 0x07f00000, 0x044b8c31, 0x045a040e, - 0x0104b0ff, 0x004980e5, 0x0681821f, 0x06780043, - 0x070000f0, 0x037c00ff, 0x07000030, 0x07810978, - 0x024a6c46, 0x04500423, 0x050070ff, 0x03620024, - 0x050080ff, 0x04004046, 0x0700500f, 0x03206000, - 0x05601048, 0x0700a0ff, 0x0700900a, 0x070ff005, - 0x04500446, 0x00540425, 0x04820252, 0x07601e22, - 0x050f80ff, 0x063fa032, 0x06000002, 0x03203000, - 0x01204000, 0x03205000, 0x0120b000, 0x0320c000, - 0x07601841, 0x050f80ff, 0x043fa852, 0x06000001, - 0x070ff056, 0x056c02ff, 0x050fb0ff, 0x070560ff, - 0x03079041, 0x05601041, 0x050f80ff, 0x073fa011, - 0x0600003d, 0x06780043, 0x07f00000, 0x065a007a, - 0x010880ff, 0x033e5000, 0x05002000, 0x05a002f3, - 0x058d024b, 0x0208a04a, 0x0108b04b, 0x02386001, - 0x03010000, 0x072e6300, 0x038000e1, 0x0500d00a, - 0x05500405, 0x014a68ff, 0x070090ff, 0x0154040a, - 0x0700c0ff, 0x0600a023, 0x0500b024, 0x02206001, - 0x07601e22, 0x050f80ff, 0x063fa04a, 0x06000002, - 0x07f00000, 0x07601822, 0x050f80ff, 0x043fa819, - 0x06000001, 0x0600a00d, 0x01800235, 0x06780043, - 0x070000f0, 0x050010ff, 0x027c0001, 0x07000030, - 0x04810270, 0x027c0001, 0x06000020, 0x0681091a, - 0x02800932, 0x0548e0e4, 0x0681091a, 0x0334a000, - 0x03080000, 0x00800143, 0x074860ff, 0x07818296, - 0x054880ff, 0x07810014, 0x070ff056, 0x050fb0ff, - 0x044880e5, 0x05810281, 0x067800e6, 0x07000041, - 0x05818014, 0x01800288, 0x056c02ff, 0x050fb0ff, - 0x070560ff, 0x072e5300, 0x067800e6, 0x07000041, - 0x05818014, 0x072d5003, 0x033e5000, 0x05002000, - 0x06780043, 0x07f00000, 0x010880ff, 0x050fd0ff, - 0x048d028f, 0x03386005, 0x03010000, 0x033e6000, - 0x0700000c, 0x052e5200, 0x03800014, 0x079a0014, - 0x05301fff, 0x0700000f, 0x06420001, 0x048102ad, - 0x07a0090c, 0x0648a002, 0x07818299, 0x062e5080, - 0x04001089, 0x040fd002, 0x040fd001, 0x02499001, - 0x058102cc, 0x070ff0d4, 0x050fd0ff, 0x045c0401, - 0x077800ff, 0x07f00000, 0x078182cc, 0x03800014, - 0x002092ab, 0x018007e7, 0x002092ad, 0x018007e7, - 0x012092af, 0x018007e7, 0x03209000, 0x018007e7, - 0x002092b3, 0x018007e7, 0x002092b5, 0x018007e7, - 0x06780043, 0x07009000, 0x068182c2, 0x00498043, - 0x048102c2, 0x0648a0e5, 0x058102c3, 0x027c0045, - 0x03040000, 0x058102c5, 0x075c00ff, 0x07c00000, - 0x056a02ff, 0x008002c2, 0x008002c1, 0x06780075, - 0x06000c07, 0x04810852, 0x012092c6, 0x070fc0ff, - 0x05a007d2, 0x070fc0ff, 0x05308000, 0x0700a000, - 0x05a007e4, 0x033e5000, 0x0700000c, 0x03800014, - 0x070ff003, 0x01540477, 0x078282d8, 0x07003077, - 0x060ff051, 0x010770ff, 0x07c00000, 0x04602601, - 0x050f80ff, 0x063fa029, 0x06000008, 0x02015010, - 0x02016051, 0x00017051, 0x00011051, 0x07601e41, - 0x050f80ff, 0x053fa83a, 0x06000008, 0x07f00000, - 0x05601041, 0x050f80ff, 0x01464000, 0x032fa00a, - 0x05007011, 0x05008012, 0x06009013, 0x0700a014, - 0x0400b015, 0x0600c016, 0x0500d017, 0x07c00000, - 0x072d5003, 0x06601879, 0x050f80ff, 0x058d02f6, - 0x063fa051, 0x0600003e, 0x07c00000, 0x06005051, - 0x0400e02c, 0x0660060e, 0x050f80ff, 0x032fa009, - 0x0379ff00, 0x070000ff, 0x076c0000, 0x0681031c, - 0x0660600e, 0x0500e0ff, 0x034000ff, 0x01540427, - 0x07820347, 0x03400005, 0x070ff005, 0x055c0428, - 0x06810349, 0x056c0805, 0x078182fc, 0x040f8029, - 0x053fa809, 0x07000024, 0x07f00000, 0x06600649, - 0x050f80ff, 0x032fa009, 0x0379ff00, 0x070000ff, - 0x076c0000, 0x078182fc, 0x07a0034d, 0x0400e049, - 0x0380031d, 0x07a0034d, 0x06600052, 0x030d60ff, - 0x0460040e, 0x050f80ff, 0x0004d0d0, 0x0379ff4d, - 0x0700ffff, 0x0104e0d1, 0x0379ff4e, 0x0700ffff, - 0x062d6002, 0x032fa009, 0x0204f0d0, 0x064b004f, - 0x07780000, 0x07ffff00, 0x045a044f, 0x070000ff, - 0x00201008, 0x04002051, 0x06003051, 0x01204000, - 0x07305000, 0x06000068, 0x03206009, 0x05007022, - 0x0460040e, 0x050f80ff, 0x032fa042, 0x07f00000, - 0x0460520e, 0x050f80ff, 0x053fa812, 0x06000026, - 0x050010d1, 0x0660360e, 0x050f80ff, 0x012fa80a, - 0x060ff00e, 0x055c042e, 0x0781034b, 0x07c00000, - 0x0400e026, 0x02800308, 0x0500e02e, 0x0380031d, - 0x0400e051, 0x02800346, 0x050f802b, 0x053fa809, - 0x06000016, 0x07f00000, 0x0340002d, 0x050f802b, - 0x053fa80a, 0x06000016, 0x07f00000, 0x0660600e, - 0x0302c0ff, 0x034000ff, 0x01540427, 0x0782035c, - 0x07c00000, 0x0202c026, 0x0280035b, 0x053f2000, - 0x03020000, 0x07c00000, 0x022a5002, 0x077800e4, - 0x07000005, 0x068184df, 0x010440d7, 0x0678aae5, - 0x06000051, 0x01a18974, 0x05908369, 0x029103f2, - 0x030400a6, 0x04600e40, 0x050f80ff, 0x022fa029, - 0x07f00000, 0x074b0000, 0x076c0600, 0x048183f4, - 0x060ff002, 0x01580403, 0x04810420, 0x070ff044, - 0x045c0404, 0x034a88ff, 0x058183f6, 0x0349f044, - 0x07818422, 0x0049b001, 0x07810381, 0x0448e001, - 0x06810383, 0x028003f8, 0x02495001, 0x048183f8, - 0x030100d8, 0x062da001, 0x0149e044, 0x07810393, - 0x018f8387, 0x0700f0d7, 0x062da001, 0x0149e00f, - 0x0681038f, 0x008f838c, 0x05a004bb, 0x048183a4, - 0x0778000f, 0x07a00000, 0x03a18412, 0x048183a4, - 0x06480001, 0x078103c3, 0x0448e001, 0x078103a9, - 0x00491001, 0x0681840d, 0x06005010, 0x05780105, + 0x06000068, 0x03206009, 0x05007022, 0x0460040e, + 0x050f80ff, 0x032fa042, 0x07f00000, 0x0460520e, + 0x050f80ff, 0x053fa812, 0x06000026, 0x050010d1, + 0x0660360e, 0x050f80ff, 0x012fa80a, 0x060ff00e, + 0x055c042e, 0x07810366, 0x07c00000, 0x0400e026, + 0x0380032b, 0x0500e02e, 0x02800338, 0x0400e051, + 0x02800361, 0x050f802b, 0x053fa809, 0x06000016, + 0x07f00000, 0x0340002d, 0x050f802b, 0x053fa80a, + 0x06000016, 0x07f00000, 0x0660600e, 0x0302c0ff, + 0x034000ff, 0x01540427, 0x07820377, 0x07c00000, + 0x0202c026, 0x02800376, 0x053f2000, 0x03020000, + 0x07c00000, 0x022a5002, 0x077800e4, 0x07000005, + 0x078184fa, 0x010440d7, 0x0678aae5, 0x06000051, + 0x00a189b0, 0x05908384, 0x0091040d, 0x030400a6, + 0x04600e40, 0x050f80ff, 0x022fa029, 0x07f00000, + 0x074b0000, 0x076c0600, 0x0781840f, 0x060ff002, + 0x01580403, 0x0481043b, 0x070ff044, 0x045c0404, + 0x034a88ff, 0x07818411, 0x0349f044, 0x0681843d, + 0x0049b001, 0x0781039c, 0x0448e001, 0x0681039e, + 0x00800413, 0x02495001, 0x06818413, 0x030100d8, + 0x062da001, 0x0149e044, 0x068103ae, 0x008f83a2, + 0x0700f0d7, 0x062da001, 0x0149e00f, 0x078103aa, + 0x008f83a7, 0x04a004d6, 0x048183bf, 0x0778000f, + 0x07a00000, 0x03a1842d, 0x048183bf, 0x06480001, + 0x078103de, 0x0448e001, 0x068103c4, 0x00491001, + 0x07818428, 0x06005010, 0x05780105, 0x07ffff00, + 0x06006051, 0x06601402, 0x050f80ff, 0x053fa812, + 0x06000002, 0x0245f040, 0x078403bd, 0x020e0040, + 0x053f2000, 0x05008000, 0x0693001a, 0x0292001a, + 0x02800016, 0x060ff079, 0x045c0440, 0x048183c8, + 0x0644f07a, 0x002fb008, 0x060ff079, 0x045c0440, + 0x048183cd, 0x0644f07a, 0x002fb008, 0x0644f001, + 0x06489001, 0x068103d5, 0x04600440, 0x050f80ff, + 0x073fa00a, 0x06000008, 0x06a009b0, 0x04601040, + 0x050f80ff, 0x012fa80a, 0x03200003, 0x06600c40, + 0x050f80ff, 0x032fa00a, 0x028003bf, 0x020ef002, + 0x01860400, 0x04600840, 0x050f80ff, 0x053fa809, + 0x06000002, 0x05780105, 0x00800440, 0x017c0105, + 0x05000400, 0x07818400, 0x04602602, 0x050f80ff, + 0x053fa809, 0x06000002, 0x07f00000, 0x06602e40, + 0x050f80ff, 0x070ff005, 0x053fa809, 0x06000002, + 0x055c0405, 0x07818400, 0x06005010, 0x05780105, 0x07ffff00, 0x06006051, 0x06601402, 0x050f80ff, - 0x053fa812, 0x06000002, 0x0245f040, 0x068403a2, - 0x020e0040, 0x053f2000, 0x05008000, 0x07930018, - 0x03920018, 0x03800014, 0x060ff079, 0x045c0440, - 0x048183ad, 0x0644f07a, 0x002fb008, 0x060ff079, - 0x045c0440, 0x058183b2, 0x0644f07a, 0x002fb008, - 0x0644f001, 0x06489001, 0x068103ba, 0x04600440, - 0x050f80ff, 0x073fa00a, 0x06000008, 0x07a00974, - 0x04601040, 0x050f80ff, 0x012fa80a, 0x03200003, - 0x06600c40, 0x050f80ff, 0x032fa00a, 0x028003a4, - 0x020ef002, 0x028603e5, 0x04600840, 0x050f80ff, - 0x053fa809, 0x06000002, 0x05780105, 0x00800440, - 0x017c0105, 0x05000400, 0x048183e5, 0x04602602, - 0x050f80ff, 0x053fa809, 0x06000002, 0x07f00000, - 0x06602e40, 0x050f80ff, 0x070ff005, 0x053fa809, - 0x06000002, 0x055c0405, 0x048183e5, 0x06005010, - 0x05780105, 0x07ffff00, 0x06006051, 0x06601402, - 0x050f80ff, 0x053fa812, 0x06000002, 0x007a0140, - 0x07c00000, 0x028003a2, 0x0644f001, 0x04601040, - 0x050f80ff, 0x012fa80a, 0x05308000, 0x03040000, - 0x04600440, 0x050f80ff, 0x073fa00a, 0x06000008, - 0x06009040, 0x04a007df, 0x028003a4, 0x02209002, - 0x018004c5, 0x03209000, 0x018004c5, 0x02209004, - 0x018004c5, 0x04a004e9, 0x062da001, 0x0149e044, - 0x04810408, 0x018f83fc, 0x0700f0d7, 0x062da001, - 0x0149e00f, 0x04810404, 0x028f8401, 0x05a004bb, - 0x048183a4, 0x0778000f, 0x07a00000, 0x03a18412, - 0x048183a4, 0x05308000, 0x05002000, 0x06009040, - 0x04a007df, 0x028003a4, 0x05308000, 0x05004000, - 0x06009040, 0x04a007df, 0x028003a4, 0x0700600f, - 0x0379ff06, 0x0700ffff, 0x05602603, 0x050f80ff, - 0x053fa809, 0x06000008, 0x0179fe11, 0x0700ffff, - 0x055c0406, 0x0781841e, 0x07c00000, 0x056a02ff, - 0x0180041d, 0x02209008, 0x018004c5, 0x053f2000, - 0x05008000, 0x02495001, 0x07818495, 0x012f200c, - 0x029d8426, 0x04600840, 0x050f80ff, 0x053fa809, - 0x07000003, 0x0448e007, 0x06818492, 0x0721f000, - 0x0249f007, 0x04810432, 0x0245f01f, 0x06000002, - 0x0049b001, 0x0781843c, 0x05601c00, 0x050f80ff, - 0x012fa809, 0x06480001, 0x05810495, 0x04481001, - 0x07818495, 0x06602840, 0x050f80ff, 0x012fa809, - 0x020ef001, 0x03868495, 0x059c0495, 0x070050d8, - 0x062da001, 0x06306002, 0x05000430, 0x04600440, - 0x050f80ff, 0x053fa812, 0x06000002, 0x028f844a, - 0x050040d8, 0x062da001, 0x0149e044, 0x0481045b, - 0x028f844f, 0x0700f0d7, 0x062da001, 0x0149e00f, - 0x04810457, 0x028f8454, 0x05a004bb, 0x0681848c, - 0x0778000f, 0x07a00000, 0x03a18412, 0x0681848c, - 0x05602600, 0x050f80ff, 0x073fa009, 0x06000001, - 0x060ff004, 0x00540402, 0x05820490, 0x06005051, - 0x06006051, 0x04602640, 0x050f80ff, 0x063fa01a, - 0x06000002, 0x07f00000, 0x06600a40, 0x050f80ff, - 0x073fa00a, 0x07000003, 0x04487007, 0x0481047a, - 0x060ff002, 0x00540404, 0x0682847a, 0x002f2008, - 0x05308000, 0x07005000, 0x06009040, 0x04a007df, - 0x04008004, 0x05a007e4, 0x03800018, 0x06780007, - 0x02800040, 0x06818489, 0x0079c107, 0x07ffffff, - 0x007a0b07, 0x03800000, 0x04780104, 0x07ffff00, - 0x04810485, 0x02455007, 0x04600840, 0x050f80ff, - 0x053fa80a, 0x07000003, 0x060ff040, 0x045a041f, - 0x030e30ff, 0x002f2008, 0x07930018, 0x03920018, - 0x03800014, 0x04004002, 0x00800462, 0x002f2008, - 0x03209000, 0x018004c5, 0x002f2008, 0x04a004e9, - 0x062da001, 0x07f00000, 0x038f8499, 0x030100d8, - 0x062da001, 0x0149e044, 0x058104aa, 0x028f849e, - 0x0700f0d7, 0x062da001, 0x0149e00f, 0x058104a6, - 0x038f84a3, 0x05a004bb, 0x05818018, 0x0778000f, - 0x07a00000, 0x03a18412, 0x05818018, 0x05308000, - 0x07005000, 0x06009040, 0x04a007df, 0x04008010, - 0x05a007e4, 0x03800018, 0x05602603, 0x050f80ff, - 0x053fa809, 0x06000008, 0x07780044, 0x073f0000, - 0x055c0411, 0x077800ff, 0x07ff0000, 0x07c00000, - 0x07602803, 0x050f80ff, 0x053fa809, 0x06000008, - 0x070ff0d8, 0x062da001, 0x055c0411, 0x0379fcff, - 0x0600001f, 0x07c00000, 0x050fd009, 0x040fd040, - 0x053f2000, 0x05008000, 0x05308000, 0x03013000, - 0x04a007df, 0x010440d7, 0x0349f044, 0x058104d2, - 0x062da001, 0x018f04d2, 0x03e00000, 0x062da001, - 0x0149e044, 0x07810018, 0x018f04d7, 0x03e00000, - 0x0700f0d7, 0x062da001, 0x0149e00f, 0x07810018, - 0x018f04dd, 0x03e00000, 0x062da001, 0x03800018, - 0x069084df, 0x0249c0e5, 0x07810018, 0x062da001, - 0x07f00000, 0x07f00000, 0x033e5000, 0x070c0000, - 0x018f04e2, 0x02800016, 0x050020d8, 0x04600440, - 0x050f80ff, 0x073fa00a, 0x06000001, 0x07c00000, - 0x002fb001, 0x008004f2, 0x012fb000, 0x03075087, - 0x058d04f3, 0x03386000, 0x03020000, 0x04482075, - 0x0781059c, 0x0648a0e6, 0x06810543, 0x0642007f, - 0x07810541, 0x0340007e, 0x060ff038, 0x0154047e, - 0x02d00531, 0x0560027d, 0x050f80ff, 0x032fa009, - 0x030ef000, 0x0186084d, 0x0107d000, 0x05601000, - 0x050f80ff, 0x032fa009, 0x03681e00, 0x076c14ff, - 0x0581850f, 0x0007e038, 0x0727c009, 0x02800515, - 0x03681e00, 0x04500420, 0x050f80ff, 0x073fa009, - 0x0700003f, 0x008004fd, 0x070ff07d, 0x0450047c, - 0x050f80ff, 0x002fa819, 0x068d0519, 0x02080001, - 0x00081002, 0x0678007a, 0x05000200, 0x07810521, - 0x0049107a, 0x02a182d3, 0x01082003, 0x078d0522, - 0x0448b07a, 0x0481852a, 0x0249007a, 0x0781052d, - 0x07780003, 0x03800000, 0x0781052d, 0x0338600c, - 0x03010000, 0x0280052f, 0x02386004, 0x03010000, - 0x072e6c00, 0x0380059c, 0x02800537, 0x03800539, - 0x0280053b, 0x0280053d, 0x0380053f, 0x03800500, - 0x0727c009, 0x02800515, 0x0727c00c, 0x02800515, - 0x0727c00f, 0x02800515, 0x0727c012, 0x02800515, - 0x0627c015, 0x02800515, 0x052e6800, 0x0380059c, - 0x044880e6, 0x04810886, 0x070ff088, 0x0179feff, - 0x070fffff, 0x03a18821, 0x06818816, 0x0249607a, - 0x0781884b, 0x060ff083, 0x02868846, 0x013e6200, - 0x07000003, 0x0448b07a, 0x06810567, 0x0049707a, - 0x06810558, 0x004940e6, 0x06810567, 0x072e6300, - 0x02800567, 0x04604679, 0x050f80ff, 0x032fa009, - 0x03680600, 0x076c00ff, 0x04818567, 0x068d055e, - 0x05001099, 0x060ff001, 0x064b0001, 0x045c0401, - 0x0179feff, 0x070000ff, 0x06810567, 0x0245a07a, - 0x068d0567, 0x008c04f2, 0x0648307a, 0x048185f2, - 0x0279127a, 0x01040222, 0x016d02ff, 0x058185d1, - 0x00798075, 0x0700f50f, 0x058185d1, 0x06483075, - 0x078105d1, 0x04602679, 0x0049b07a, 0x07810578, - 0x04602670, 0x050f80ff, 0x053fa812, 0x07000041, - 0x078d057b, 0x004940e6, 0x06810580, 0x072e6300, - 0x03800014, 0x0049707a, 0x07810584, 0x0049807a, - 0x07810014, 0x02386001, 0x07030000, 0x0648f07a, - 0x0781059a, 0x04600479, 0x050f80ff, 0x053fa809, - 0x06000002, 0x05780105, 0x07ffff00, 0x06006051, - 0x0760147b, 0x050f80ff, 0x053fa812, 0x06000002, - 0x0245f079, 0x06840594, 0x020e0079, 0x033e6a00, - 0x0700aa0a, 0x02079051, 0x03800014, 0x0444e07a, - 0x02800649, 0x078d059c, 0x008c04f2, 0x038005b8, - 0x060ff0e6, 0x077800ff, 0x07000050, 0x058185b8, - 0x02799075, 0x0500fd0f, 0x037c00ff, 0x04000808, - 0x058185b8, 0x0049107a, 0x058185b8, 0x06601879, - 0x0049b07a, 0x068105ae, 0x06601870, 0x050f80ff, - 0x063fa052, 0x0600003e, 0x078d05b1, 0x02386001, - 0x07030000, 0x033e6a00, 0x0700aa0a, 0x02079051, - 0x03800014, 0x0648c0e6, 0x048185d9, 0x0448e0e6, - 0x068105ce, 0x022095bc, 0x02490075, 0x078182cc, - 0x004920e6, 0x078105c9, 0x04a008d5, 0x05001088, - 0x00700101, 0x03100000, 0x00088001, 0x033e6000, - 0x07000088, 0x018008c5, 0x02386001, 0x07030000, - 0x033e6000, 0x06000008, 0x028006b9, 0x02799075, - 0x0700f50f, 0x07810014, 0x06601879, 0x0049b07a, - 0x068105d5, 0x06601870, 0x050080ff, 0x06309052, - 0x0600003e, 0x028005e0, 0x04602679, 0x0049b07a, - 0x078105dd, 0x04602670, 0x050080ff, 0x05309812, - 0x07000041, 0x0648007a, 0x068105f2, 0x04488075, - 0x048185f2, 0x0678007a, 0x04000108, 0x078105ee, - 0x04603e79, 0x050f80ff, 0x068d05e9, 0x073fa042, - 0x0600004a, 0x068d05ec, 0x02086051, 0x040f8008, - 0x070fa009, 0x0049107a, 0x01a186bb, 0x00798075, - 0x0600f507, 0x07818869, 0x0448b075, 0x078105f9, - 0x02493075, 0x05810865, 0x004940e6, 0x07810611, - 0x02386001, 0x030e0000, 0x05001087, 0x00494001, - 0x07810603, 0x04780b01, 0x01204000, 0x0681060e, - 0x0249f076, 0x07810609, 0x06a00a7f, 0x0647f076, - 0x004940e6, 0x0781060f, 0x03386000, 0x030e0000, - 0x033e6000, 0x0700c000, 0x03800014, 0x06a00a2c, - 0x03386000, 0x030e0000, 0x0648c0e6, 0x05818624, - 0x068d0613, 0x02386001, 0x07030000, 0x0049107a, - 0x0681061a, 0x020ef083, 0x03860624, 0x06483075, - 0x078106b7, 0x0279007a, 0x01080200, 0x01a107d2, - 0x05308000, 0x07060000, 0x06009079, 0x04a007df, - 0x038006b7, 0x06483075, 0x058107fc, 0x068d0626, - 0x02386001, 0x07030000, 0x0444e07a, 0x0648307a, - 0x0581865f, 0x0448707a, 0x07810690, 0x0448107a, - 0x05818690, 0x0648f07a, 0x06810649, 0x05a007d2, - 0x04008079, 0x0049b07a, 0x07810639, 0x04602670, - 0x04a007f2, 0x0380063a, 0x04a007f1, 0x0186865a, - 0x0049107a, 0x0581865a, 0x04600408, 0x050f80ff, - 0x053fa809, 0x06000002, 0x05780105, 0x07ffff00, - 0x0760147b, 0x050f80ff, 0x053fa812, 0x06000002, - 0x05a007db, 0x038006b7, 0x0760187b, 0x050f80ff, - 0x032fa009, 0x0349c000, 0x04818658, 0x04601079, - 0x050f80ff, 0x073fa00a, 0x0600003d, 0x07f00000, - 0x06600a79, 0x050f80ff, 0x053fa80a, 0x06000010, - 0x038006b7, 0x0046e07a, 0x03800690, 0x06009008, - 0x05308000, 0x05004000, 0x04a007df, 0x038006b7, + 0x053fa812, 0x06000002, 0x007a0140, 0x07c00000, + 0x038003bd, 0x0644f001, 0x04601040, 0x050f80ff, + 0x012fa80a, 0x05308000, 0x03040000, 0x04600440, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x06009040, + 0x04a0080d, 0x028003bf, 0x02209002, 0x008004e0, + 0x03209000, 0x008004e0, 0x02209004, 0x008004e0, + 0x06a00504, 0x062da001, 0x0149e044, 0x04810423, + 0x038f8417, 0x0700f0d7, 0x062da001, 0x0149e00f, + 0x0481041f, 0x028f841c, 0x04a004d6, 0x048183bf, + 0x0778000f, 0x07a00000, 0x03a1842d, 0x048183bf, + 0x05308000, 0x05002000, 0x06009040, 0x04a0080d, + 0x028003bf, 0x05308000, 0x05004000, 0x06009040, + 0x04a0080d, 0x028003bf, 0x0700600f, 0x0379ff06, + 0x0700ffff, 0x05602603, 0x050f80ff, 0x053fa809, + 0x06000008, 0x0179fe11, 0x0700ffff, 0x055c0406, + 0x07818439, 0x07c00000, 0x056a02ff, 0x00800438, + 0x02209008, 0x008004e0, 0x053f2000, 0x05008000, + 0x02495001, 0x068184b0, 0x012f200c, 0x039d8441, + 0x04600840, 0x050f80ff, 0x053fa809, 0x07000003, + 0x0448e007, 0x068184ad, 0x0721f000, 0x0249f007, + 0x0581044d, 0x0245f01f, 0x06000002, 0x0049b001, + 0x06818457, 0x05601c00, 0x050f80ff, 0x012fa809, + 0x06480001, 0x048104b0, 0x04481001, 0x068184b0, + 0x06602840, 0x050f80ff, 0x012fa809, 0x020ef001, + 0x028684b0, 0x049c04b0, 0x070050d8, 0x062da001, + 0x06306002, 0x05000430, 0x04600440, 0x050f80ff, + 0x053fa812, 0x06000002, 0x038f8465, 0x050040d8, + 0x062da001, 0x0149e044, 0x04810476, 0x038f846a, + 0x0700f0d7, 0x062da001, 0x0149e00f, 0x05810472, + 0x038f846f, 0x04a004d6, 0x068184a7, 0x0778000f, + 0x07a00000, 0x03a1842d, 0x068184a7, 0x05602600, + 0x050f80ff, 0x073fa009, 0x06000001, 0x060ff004, + 0x00540402, 0x048204ab, 0x06005051, 0x06006051, + 0x04602640, 0x050f80ff, 0x063fa01a, 0x06000002, + 0x07f00000, 0x06600a40, 0x050f80ff, 0x073fa00a, + 0x07000003, 0x04487007, 0x05810495, 0x060ff002, + 0x00540404, 0x07828495, 0x002f2008, 0x05308000, + 0x07005000, 0x06009040, 0x04a0080d, 0x04008004, + 0x05a00812, 0x0280001a, 0x06780007, 0x02800040, + 0x068184a4, 0x0079c107, 0x07ffffff, 0x007a0b07, + 0x03800000, 0x04780104, 0x07ffff00, 0x058104a0, + 0x02455007, 0x04600840, 0x050f80ff, 0x053fa80a, + 0x07000003, 0x060ff040, 0x045a041f, 0x030e30ff, + 0x002f2008, 0x0693001a, 0x0292001a, 0x02800016, + 0x04004002, 0x0180047d, 0x002f2008, 0x03209000, + 0x008004e0, 0x002f2008, 0x06a00504, 0x062da001, + 0x07f00000, 0x038f84b4, 0x030100d8, 0x062da001, + 0x0149e044, 0x058104c5, 0x028f84b9, 0x0700f0d7, + 0x062da001, 0x0149e00f, 0x048104c1, 0x038f84be, + 0x04a004d6, 0x0481801a, 0x0778000f, 0x07a00000, + 0x03a1842d, 0x0481801a, 0x05308000, 0x07005000, + 0x06009040, 0x04a0080d, 0x04008010, 0x05a00812, + 0x0280001a, 0x05602603, 0x050f80ff, 0x053fa809, + 0x06000008, 0x07780044, 0x073f0000, 0x055c0411, + 0x077800ff, 0x07ff0000, 0x07c00000, 0x07602803, + 0x050f80ff, 0x053fa809, 0x06000008, 0x070ff0d8, + 0x062da001, 0x055c0411, 0x0379fcff, 0x0600001f, + 0x07c00000, 0x050fd009, 0x040fd040, 0x053f2000, + 0x05008000, 0x05308000, 0x03013000, 0x04a0080d, + 0x010440d7, 0x0349f044, 0x058104ed, 0x062da001, + 0x018f04ed, 0x03e00000, 0x062da001, 0x0149e044, + 0x0681001a, 0x008f04f2, 0x03e00000, 0x0700f0d7, + 0x062da001, 0x0149e00f, 0x0681001a, 0x008f04f8, + 0x03e00000, 0x062da001, 0x0280001a, 0x079084fa, + 0x0249c0e5, 0x0681001a, 0x062da001, 0x07f00000, + 0x07f00000, 0x033e5000, 0x070c0000, 0x008f04fd, + 0x03800018, 0x050020d8, 0x04600440, 0x050f80ff, + 0x073fa00a, 0x06000001, 0x07c00000, 0x002fb001, + 0x0280050d, 0x012fb000, 0x03075087, 0x068d050e, + 0x03386000, 0x03020000, 0x04482075, 0x078105b7, + 0x0648a0e6, 0x0681055e, 0x0642007f, 0x0781055c, + 0x0340007e, 0x060ff038, 0x0154047e, 0x02d0054c, + 0x0560027d, 0x050f80ff, 0x032fa009, 0x030ef000, + 0x0186087b, 0x0107d000, 0x05601000, 0x050f80ff, + 0x032fa009, 0x03681e00, 0x076c14ff, 0x0481852a, + 0x0007e038, 0x0727c009, 0x03800530, 0x03681e00, + 0x04500420, 0x050f80ff, 0x073fa009, 0x0700003f, + 0x03800518, 0x070ff07d, 0x0450047c, 0x050f80ff, + 0x002fa819, 0x068d0534, 0x02080001, 0x00081002, + 0x0678007a, 0x05000200, 0x0781053c, 0x0049107a, + 0x03a182f6, 0x01082003, 0x068d053d, 0x0448b07a, + 0x04818545, 0x0249007a, 0x07810548, 0x07780003, + 0x03800000, 0x07810548, 0x0338600c, 0x03010000, + 0x0280054a, 0x02386004, 0x03010000, 0x072e6c00, + 0x038005b7, 0x02800552, 0x02800554, 0x03800556, + 0x02800558, 0x0380055a, 0x0380051b, 0x0727c009, + 0x03800530, 0x0727c00c, 0x03800530, 0x0727c00f, + 0x03800530, 0x0727c012, 0x03800530, 0x0627c015, + 0x03800530, 0x052e6800, 0x038005b7, 0x044880e6, + 0x048108ba, 0x070ff088, 0x0179feff, 0x070fffff, + 0x02a1884f, 0x07818844, 0x0249607a, 0x06818879, + 0x060ff083, 0x03868874, 0x013e6200, 0x07000003, + 0x0448b07a, 0x07810582, 0x0049707a, 0x06810573, + 0x004940e6, 0x07810582, 0x072e6300, 0x03800582, + 0x04604679, 0x050f80ff, 0x032fa009, 0x03680600, + 0x076c00ff, 0x05818582, 0x068d0579, 0x05001099, + 0x060ff001, 0x064b0001, 0x045c0401, 0x0179feff, + 0x070000ff, 0x07810582, 0x0245a07a, 0x078d0582, + 0x028c050d, 0x0648307a, 0x05818611, 0x0279127a, + 0x01040222, 0x016d02ff, 0x058185ee, 0x00798075, + 0x0700f50f, 0x058185ee, 0x06483075, 0x078105ee, + 0x04602679, 0x0049b07a, 0x07810593, 0x04602670, + 0x050f80ff, 0x053fa812, 0x07000041, 0x078d0596, + 0x004940e6, 0x0681059b, 0x072e6300, 0x02800016, + 0x0049707a, 0x0781059f, 0x0049807a, 0x06810016, + 0x02386001, 0x07030000, 0x0648f07a, 0x068105b5, + 0x04600479, 0x050f80ff, 0x053fa809, 0x06000002, + 0x05780105, 0x07ffff00, 0x06006051, 0x0760147b, + 0x050f80ff, 0x053fa812, 0x06000002, 0x0245f079, + 0x078405af, 0x020e0079, 0x033e6a00, 0x0700aa0a, + 0x02079051, 0x02800016, 0x0444e07a, 0x02800668, + 0x078d05b7, 0x028c050d, 0x028005d3, 0x060ff0e6, + 0x077800ff, 0x07000050, 0x048185d3, 0x02799075, + 0x0500fd0f, 0x037c00ff, 0x04000808, 0x048185d3, + 0x0049107a, 0x048185d3, 0x06601879, 0x0049b07a, + 0x078105c9, 0x06601870, 0x050f80ff, 0x063fa052, + 0x0600003e, 0x078d05cc, 0x02386001, 0x07030000, + 0x033e6a00, 0x0700aa0a, 0x02079051, 0x02800016, + 0x0648c0e6, 0x058185f6, 0x0448e0e6, 0x078105eb, + 0x06009051, 0x077baf09, 0x07000005, 0x02490075, + 0x068182ef, 0x004920e6, 0x068105e6, 0x07a00909, + 0x05001088, 0x00700101, 0x03100000, 0x00088001, + 0x033e6000, 0x07000088, 0x018008f9, 0x02386001, + 0x07030000, 0x033e6000, 0x06000008, 0x038006d8, + 0x02799075, 0x0700f50f, 0x06810016, 0x06601879, + 0x0049b07a, 0x068105f2, 0x06601870, 0x050080ff, + 0x06309052, 0x0600003e, 0x038005ff, 0x0648307a, + 0x05818611, 0x04602679, 0x0049b07a, 0x078105fc, + 0x04602670, 0x050080ff, 0x05309812, 0x07000041, + 0x0648007a, 0x07810611, 0x04488075, 0x05818611, + 0x0678007a, 0x04000108, 0x0681060d, 0x04603e79, + 0x050f80ff, 0x068d0608, 0x073fa042, 0x0600004a, + 0x068d060b, 0x02086051, 0x040f8008, 0x070fa009, + 0x0049107a, 0x00a186da, 0x00798075, 0x0600f507, + 0x0681889d, 0x0448b075, 0x07810618, 0x02493075, + 0x05810895, 0x004940e6, 0x07810630, 0x02386001, + 0x030e0000, 0x05001087, 0x00494001, 0x07810622, + 0x04780b01, 0x01204000, 0x0781062d, 0x0249f076, + 0x07810628, 0x07a00abb, 0x0647f076, 0x004940e6, + 0x0781062e, 0x03386000, 0x030e0000, 0x033e6000, + 0x0700c000, 0x02800016, 0x06a00a68, 0x03386000, + 0x030e0000, 0x0648c0e6, 0x04818643, 0x068d0632, + 0x02386001, 0x07030000, 0x0049107a, 0x07810639, + 0x020ef083, 0x02860643, 0x06483075, 0x068106d6, + 0x0279007a, 0x01080200, 0x01a10800, 0x05308000, + 0x07060000, 0x06009079, 0x04a0080d, 0x028006d6, + 0x06483075, 0x0481082a, 0x068d0645, 0x02386001, + 0x07030000, 0x0444e07a, 0x0648307a, 0x0581867e, + 0x0448707a, 0x078106af, 0x0448107a, 0x058186af, + 0x0648f07a, 0x06810668, 0x05a00800, 0x04008079, + 0x0049b07a, 0x06810658, 0x04602670, 0x04a00820, + 0x03800659, 0x04a0081f, 0x00868679, 0x0049107a, + 0x04818679, 0x04600408, 0x050f80ff, 0x053fa809, + 0x06000002, 0x05780105, 0x07ffff00, 0x0760147b, + 0x050f80ff, 0x053fa812, 0x06000002, 0x05a00809, + 0x028006d6, 0x0760187b, 0x050f80ff, 0x032fa009, + 0x0349c000, 0x05818677, 0x04601079, 0x050f80ff, + 0x073fa00a, 0x0600003d, 0x07f00000, 0x06600a79, + 0x050f80ff, 0x053fa80a, 0x06000010, 0x028006d6, + 0x0046e07a, 0x038006af, 0x06009008, 0x05308000, + 0x05004000, 0x04a0080d, 0x028006d6, 0x06600679, + 0x050f80ff, 0x00201007, 0x012fa80a, 0x0046047a, + 0x034630ff, 0x050020ff, 0x06003051, 0x04601079, + 0x050f80ff, 0x073fa012, 0x06000001, 0x07f00000, 0x07601e7b, 0x050f80ff, 0x032fa011, 0x070ff000, 0x04500401, 0x030460ff, 0x060ff025, 0x00540446, - 0x06820673, 0x030460ff, 0x052e40c0, 0x04092046, - 0x0349a0e4, 0x04818670, 0x003e4080, 0x0700c000, - 0x03800674, 0x003e4080, 0x05008000, 0x03800674, - 0x04092046, 0x070ff03a, 0x01868678, 0x013e4000, - 0x07000003, 0x06a0035e, 0x06600679, 0x050f80ff, - 0x00201007, 0x012fa80a, 0x0046047a, 0x034630ff, - 0x050020ff, 0x06003051, 0x04601079, 0x050f80ff, - 0x073fa012, 0x06000001, 0x07f00000, 0x06602e79, - 0x050f80ff, 0x032fa009, 0x030ef000, 0x0286068f, - 0x06009079, 0x05308000, 0x03016000, 0x04a007df, - 0x038006b7, 0x0049407a, 0x078106b2, 0x079c06b1, - 0x04008079, 0x04a007f1, 0x018686b1, 0x06600679, - 0x050f80ff, 0x063fa029, 0x06000001, 0x0349f003, - 0x058186b1, 0x07780006, 0x07ffff00, 0x037c00ff, - 0x07000600, 0x058186b1, 0x0079fe02, 0x070000ff, - 0x056c08ff, 0x058186b1, 0x0246007a, 0x0400707a, - 0x06600679, 0x050f80ff, 0x04302001, 0x04000410, - 0x05303442, 0x02080002, 0x063fa032, 0x06000001, - 0x020e3079, 0x038006b7, 0x0447407a, 0x05a007d2, - 0x05308000, 0x03020000, 0x06009079, 0x04a007df, - 0x033e6a00, 0x0700aa0a, 0x02079051, 0x03800014, - 0x06605679, 0x050f80ff, 0x032fa009, 0x070ff000, - 0x038606d4, 0x057dfeff, 0x07ffffff, 0x078106d4, - 0x050f8000, 0x012fa811, 0x0079fe02, 0x070000ff, - 0x077d66ff, 0x060000dc, 0x058186d4, 0x060ff001, - 0x008686d5, 0x064b0002, 0x06420002, 0x060ff002, - 0x05500400, 0x050f80ff, 0x05004084, 0x073fa00a, - 0x06000002, 0x07c00000, 0x04600201, 0x050f80ff, - 0x073fa009, 0x06000001, 0x0079fe02, 0x070000ff, - 0x077d72ff, 0x070000dd, 0x058186d4, 0x064b0002, - 0x06420002, 0x06000001, 0x028006ce, 0x0605004c, - 0x028006e6, 0x079306e2, 0x05a007d8, 0x054bc450, - 0x068106e9, 0x02d006ea, 0x028006e9, 0x038006fa, - 0x038006fc, 0x0080078c, 0x0180079f, 0x01800709, - 0x038006fc, 0x01800756, 0x038006fa, 0x008007a7, - 0x018007a3, 0x038006fa, 0x018007aa, 0x008007c7, - 0x01800778, 0x038006fa, 0x038006fa, 0x032096fa, - 0x018007e7, 0x073c3fff, 0x0700000f, 0x0379ff50, - 0x070fffff, 0x060ff079, 0x055c0450, 0x0581079c, - 0x002fb008, 0x060ff079, 0x055c0450, 0x0481079b, - 0x05a007ca, 0x00800794, 0x0179fe50, 0x070fffff, - 0x070050ff, 0x060ff079, 0x055c0405, 0x04810713, - 0x002fb008, 0x060ff079, 0x055c0405, 0x06818798, - 0x073c3fff, 0x0700000f, 0x070ff087, 0x017980ff, - 0x0600f507, 0x07818722, 0x02203040, 0x05002087, - 0x0049d002, 0x07818722, 0x002fb008, 0x07006087, - 0x002fb008, 0x0149d006, 0x05810750, 0x05930727, - 0x01257000, 0x052e4003, 0x072e5030, 0x0304c050, - 0x02400057, 0x06740057, 0x06000004, 0x0782001b, - 0x004940e6, 0x01a18a72, 0x0049107a, 0x01a186bb, - 0x04002083, 0x07003084, 0x04004085, 0x04602679, - 0x0049b07a, 0x05810736, 0x04602670, 0x050f80ff, - 0x063fa01a, 0x06000001, 0x05a007d2, 0x05a008de, - 0x033e6a00, 0x0700aa0a, 0x062e5020, 0x07a0090c, - 0x02798102, 0x070000ff, 0x007c8002, 0x07000055, - 0x0581074d, 0x072e50c0, 0x0648a002, 0x0581074d, - 0x040fd002, 0x058d0748, 0x03386006, 0x03010000, - 0x033e6000, 0x0700000c, 0x003e4002, 0x07000a00, - 0x028006b9, 0x07420003, 0x0681871a, 0x00798002, - 0x0600f507, 0x07818722, 0x0180072b, 0x0493075d, - 0x01257000, 0x073c3fff, 0x0700000f, 0x052e4003, - 0x072e5030, 0x0304c050, 0x067800e6, 0x07000041, - 0x04810762, 0x05a008e7, 0x0681876d, 0x002fb008, - 0x067800e6, 0x07000041, 0x04810768, 0x05a008e7, - 0x0681876d, 0x062e5020, 0x003e4002, 0x07000a00, - 0x03e00000, 0x03800014, 0x06740057, 0x07000018, - 0x0782001b, 0x05a008de, 0x033e6a00, 0x0700aa0a, - 0x002fb008, 0x05a008de, 0x033e6a00, 0x0700aa0a, - 0x00800768, 0x0379ff50, 0x070fffff, 0x060ff079, - 0x055c0450, 0x0781877e, 0x0245507a, 0x002fb008, - 0x060ff079, 0x055c0450, 0x06818783, 0x0245507a, - 0x002fb008, 0x05601050, 0x050f80ff, 0x012fa809, - 0x02455001, 0x05601050, 0x050f80ff, 0x012fa80a, - 0x01800795, 0x0795879c, 0x0179fe50, 0x070fffff, - 0x045c042f, 0x0781879c, 0x0202f051, 0x042e4020, - 0x01800795, 0x002fb008, 0x003e4002, 0x07000a00, - 0x0380001b, 0x0693879b, 0x062e5020, 0x042e4002, - 0x002fb008, 0x013e4000, 0x05000e00, 0x0380001b, - 0x0179fe50, 0x070fffff, 0x010210ff, 0x0380001b, - 0x0179fe50, 0x070fffff, 0x050340ff, 0x01800795, - 0x023e5008, 0x05000800, 0x0380001b, 0x0179fe50, - 0x070fffff, 0x0102e0ff, 0x05602c2e, 0x050f80ff, - 0x05222000, 0x07223000, 0x05224000, 0x07225000, - 0x07226000, 0x05227000, 0x05228000, 0x07229000, - 0x0722a000, 0x0522b000, 0x063fa051, 0x07000011, - 0x0202c026, 0x0522d000, 0x052e400c, 0x0560402e, - 0x050f80ff, 0x032fa021, 0x04032002, 0x07033003, - 0x07420000, 0x07036000, 0x0403b001, 0x0380001b, - 0x030430d4, 0x062e5008, 0x00800279, 0x05601050, - 0x050f80ff, 0x032fa009, 0x03460000, 0x008007d5, - 0x0246007a, 0x0045207a, 0x008007d3, 0x0246007a, - 0x0600007a, 0x04601079, 0x050f80ff, 0x032fa00a, - 0x07c00000, 0x039287d8, 0x070500e1, 0x07c00000, - 0x0245f008, 0x048407dc, 0x020e0008, 0x07c00000, - 0x070ff009, 0x065a0008, 0x058407e1, 0x020e0008, - 0x07c00000, 0x058407e4, 0x020e0008, 0x07c00000, - 0x05308000, 0x0500d000, 0x04a007df, 0x04a007ec, - 0x03800014, 0x052e4300, 0x072e500c, 0x073c3fff, - 0x0700000f, 0x07c00000, 0x04602608, 0x050f80ff, - 0x032fa011, 0x076a0000, 0x078187fa, 0x066a0001, - 0x058107fa, 0x06006051, 0x07c00000, 0x02206001, - 0x07c00000, 0x0678007a, 0x06000020, 0x06818804, - 0x0049107a, 0x04810804, 0x073c3fff, 0x0700000f, - 0x02800626, 0x040fd079, 0x0648307a, 0x05810809, - 0x06a0096b, 0x0080080e, 0x05a007cf, 0x05308000, - 0x05001000, 0x06009079, 0x04a007df, 0x048d080e, - 0x040fd079, 0x033e6a00, 0x0600aa0e, 0x02079051, - 0x03386006, 0x03010000, 0x03800014, 0x052e6200, - 0x0648307a, 0x0581081b, 0x06a0096b, 0x018008c5, - 0x05a007cf, 0x05308000, 0x05001000, 0x06009079, - 0x04a007df, 0x018008c5, 0x050010ff, 0x0448b07a, - 0x0481082f, 0x0049107a, 0x0481082f, 0x048d0826, - 0x04604679, 0x050f80ff, 0x032fa009, 0x03680600, - 0x056c02ff, 0x0681882f, 0x046c1001, 0x04810831, - 0x056a02ff, 0x07c00000, 0x04a00834, 0x075c00ff, - 0x07c00000, 0x048d0834, 0x060ff07c, 0x070ff07d, - 0x070ff07e, 0x060ff07f, 0x060ff080, 0x070ff081, - 0x070ff082, 0x060ff083, 0x070ff084, 0x060ff085, - 0x0338600c, 0x03010000, 0x038a8841, 0x058d0842, - 0x03386000, 0x03020000, 0x07c00000, 0x06483075, - 0x0781884b, 0x0448d07a, 0x078187fc, 0x040fd079, - 0x052e6200, 0x038005d1, 0x0648307a, 0x068182b3, - 0x05a007d2, 0x0120984d, 0x018007e7, 0x04002089, + 0x0782069f, 0x030460ff, 0x052e40c0, 0x04092046, + 0x0349a0e4, 0x0581869c, 0x003e4080, 0x0700c000, + 0x038006a0, 0x003e4080, 0x05008000, 0x038006a0, + 0x04092046, 0x070ff03a, 0x008686a4, 0x013e4000, + 0x07000003, 0x06a00379, 0x06602e79, 0x050f80ff, + 0x032fa009, 0x030ef000, 0x028606ae, 0x06009079, + 0x05308000, 0x03016000, 0x04a0080d, 0x028006d6, + 0x0049407a, 0x078106d1, 0x069c06d0, 0x04008079, + 0x04a0081f, 0x008686d0, 0x06600679, 0x050f80ff, + 0x063fa029, 0x06000001, 0x0349f003, 0x048186d0, + 0x07780006, 0x07ffff00, 0x037c00ff, 0x07000600, + 0x048186d0, 0x0079fe02, 0x070000ff, 0x056c08ff, + 0x048186d0, 0x0246007a, 0x0400707a, 0x06600679, + 0x050f80ff, 0x04302001, 0x04000410, 0x05303442, + 0x02080002, 0x063fa032, 0x06000001, 0x020e3079, + 0x028006d6, 0x0447407a, 0x05a00800, 0x05308000, + 0x03020000, 0x06009079, 0x04a0080d, 0x033e6a00, + 0x0700aa0a, 0x02079051, 0x02800016, 0x06605679, + 0x050f80ff, 0x032fa009, 0x070ff000, 0x038606f3, + 0x057dfeff, 0x07ffffff, 0x078106f3, 0x050f8000, + 0x012fa811, 0x0079fe02, 0x070000ff, 0x077d66ff, + 0x060000dc, 0x058186f3, 0x060ff001, 0x008686f4, + 0x064b0002, 0x06420002, 0x060ff002, 0x05500400, + 0x050f80ff, 0x05004084, 0x073fa00a, 0x06000002, + 0x07c00000, 0x04600201, 0x050f80ff, 0x073fa009, + 0x06000001, 0x0079fe02, 0x070000ff, 0x077d72ff, + 0x070000dd, 0x058186f3, 0x064b0002, 0x06420002, + 0x06000001, 0x038006ed, 0x0605004c, 0x01800705, + 0x04930701, 0x05a00806, 0x054bc450, 0x04810708, + 0x01d00709, 0x00800708, 0x00800719, 0x0180071d, + 0x018007bd, 0x008007d0, 0x0080072a, 0x0180071d, + 0x01800787, 0x00800719, 0x018007d4, 0x00800719, + 0x00800719, 0x018007d7, 0x018007f5, 0x018007a9, + 0x00800719, 0x00800719, 0x06009051, 0x037a3309, + 0x06000007, 0x00800815, 0x073c3fff, 0x0700000f, + 0x0379ff50, 0x070fffff, 0x060ff079, 0x055c0450, + 0x048107cd, 0x002fb008, 0x060ff079, 0x055c0450, + 0x058107cc, 0x04a007f8, 0x018007c5, 0x0179fe50, + 0x070fffff, 0x070050ff, 0x060ff079, 0x055c0405, + 0x0481073d, 0x002fb008, 0x060ff079, 0x055c0405, + 0x0481073d, 0x050fd005, 0x05601005, 0x050f80ff, + 0x032fa009, 0x03460000, 0x05601005, 0x050f80ff, + 0x032fa00a, 0x018007c9, 0x073c3fff, 0x0700000f, + 0x070ff087, 0x017980ff, 0x0600f507, 0x0681874c, + 0x02203040, 0x05002087, 0x0049d002, 0x0681874c, + 0x002fb008, 0x07006087, 0x002fb008, 0x0149d006, + 0x05810781, 0x04930751, 0x01257000, 0x052e4003, + 0x072e5030, 0x0304c050, 0x02400057, 0x06740057, + 0x06000004, 0x0782001d, 0x004940e6, 0x00a18aae, + 0x0448b07a, 0x0481075e, 0x04603e79, 0x050f80ff, + 0x048d075b, 0x073fa042, 0x0600004a, 0x0049107a, + 0x00a186da, 0x04002083, 0x07003084, 0x04004085, + 0x04602679, 0x0049b07a, 0x04810767, 0x04602670, + 0x050f80ff, 0x063fa01a, 0x06000001, 0x05a00800, + 0x07a00912, 0x033e6a00, 0x0700aa0a, 0x062e5020, + 0x06a00940, 0x02798102, 0x070000ff, 0x007c8002, + 0x07000055, 0x0581077e, 0x072e50c0, 0x0648a002, + 0x0581077e, 0x040fd002, 0x048d0779, 0x03386006, + 0x03010000, 0x033e6000, 0x0700000c, 0x003e4002, + 0x07000a00, 0x038006d8, 0x07420003, 0x07818744, + 0x00798002, 0x0600f507, 0x0681874c, 0x01800755, + 0x0593078e, 0x01257000, 0x073c3fff, 0x0700000f, + 0x052e4003, 0x072e5030, 0x0304c050, 0x067800e6, + 0x07000041, 0x05810793, 0x07a0091b, 0x0681879e, + 0x002fb008, 0x067800e6, 0x07000041, 0x05810799, + 0x07a0091b, 0x0681879e, 0x062e5020, 0x003e4002, + 0x07000a00, 0x03e00000, 0x02800016, 0x06740057, + 0x07000018, 0x0782001d, 0x07a00912, 0x033e6a00, + 0x0700aa0a, 0x002fb008, 0x07a00912, 0x033e6a00, + 0x0700aa0a, 0x01800799, 0x0379ff50, 0x070fffff, + 0x060ff079, 0x055c0450, 0x078187af, 0x0245507a, + 0x002fb008, 0x060ff079, 0x055c0450, 0x078187b4, + 0x0245507a, 0x002fb008, 0x05601050, 0x050f80ff, + 0x012fa809, 0x02455001, 0x05601050, 0x050f80ff, + 0x012fa80a, 0x018007c6, 0x069587cd, 0x0179fe50, + 0x070fffff, 0x045c042f, 0x068187cd, 0x0202f051, + 0x042e4020, 0x018007c6, 0x002fb008, 0x003e4002, + 0x07000a00, 0x0380001d, 0x079387cc, 0x062e5020, + 0x042e4002, 0x002fb008, 0x013e4000, 0x05000e00, + 0x0380001d, 0x0179fe50, 0x070fffff, 0x010210ff, + 0x0380001d, 0x023e5008, 0x05000800, 0x0380001d, + 0x0179fe50, 0x070fffff, 0x0102e0ff, 0x05602c2e, + 0x050f80ff, 0x05222000, 0x07223000, 0x05224000, + 0x07225000, 0x07226000, 0x05227000, 0x05228000, + 0x0722a000, 0x0522b000, 0x060ff029, 0x063fa051, + 0x07000011, 0x030290ff, 0x0202c026, 0x0522d000, + 0x052e400c, 0x0560402e, 0x050f80ff, 0x032fa021, + 0x04032002, 0x07033003, 0x07420000, 0x07036000, + 0x0403b001, 0x0380001d, 0x030430d4, 0x062e5008, + 0x01800290, 0x05601050, 0x050f80ff, 0x032fa009, + 0x03460000, 0x01800803, 0x0246007a, 0x0045207a, + 0x00800801, 0x0246007a, 0x0600007a, 0x04601079, + 0x050f80ff, 0x032fa00a, 0x07c00000, 0x03928806, + 0x070500e1, 0x07c00000, 0x0245f008, 0x0584080a, + 0x020e0008, 0x07c00000, 0x070ff009, 0x065a0008, + 0x0584080f, 0x020e0008, 0x07c00000, 0x05840812, + 0x020e0008, 0x07c00000, 0x05308000, 0x0500d000, + 0x04a0080d, 0x04a0081a, 0x02800016, 0x052e4300, + 0x072e500c, 0x073c3fff, 0x0700000f, 0x07c00000, + 0x04602608, 0x050f80ff, 0x032fa011, 0x076a0000, + 0x07818828, 0x066a0001, 0x05810828, 0x06006051, + 0x07c00000, 0x02206001, 0x07c00000, 0x0678007a, + 0x06000020, 0x06818832, 0x0049107a, 0x04810832, + 0x073c3fff, 0x0700000f, 0x02800645, 0x040fd079, + 0x0648307a, 0x04810837, 0x06a009a7, 0x0180083c, + 0x04a007fd, 0x05308000, 0x05001000, 0x06009079, + 0x04a0080d, 0x058d083c, 0x040fd079, 0x033e6a00, + 0x0600aa0e, 0x02079051, 0x03386006, 0x03010000, + 0x02800016, 0x052e6200, 0x0648307a, 0x04810849, + 0x06a009a7, 0x018008f9, 0x04a007fd, 0x05308000, + 0x05001000, 0x06009079, 0x04a0080d, 0x018008f9, + 0x050010ff, 0x0448b07a, 0x0481085d, 0x0049107a, + 0x0481085d, 0x048d0854, 0x04604679, 0x050f80ff, + 0x032fa009, 0x03680600, 0x056c02ff, 0x0681885d, + 0x046c1001, 0x0581085f, 0x056a02ff, 0x07c00000, + 0x04a00862, 0x075c00ff, 0x07c00000, 0x048d0862, + 0x060ff07c, 0x070ff07d, 0x070ff07e, 0x060ff07f, + 0x060ff080, 0x070ff081, 0x070ff082, 0x060ff083, + 0x070ff084, 0x060ff085, 0x0338600c, 0x03010000, + 0x038a886f, 0x048d0870, 0x03386000, 0x03020000, + 0x07c00000, 0x06483075, 0x06818879, 0x0448d07a, + 0x0681882a, 0x040fd079, 0x052e6200, 0x038005ee, + 0x0648307a, 0x068182d0, 0x05a00800, 0x06009051, + 0x017af709, 0x06000008, 0x00800815, 0x04002089, 0x04780102, 0x07f00000, 0x05001088, 0x04740101, 0x03100000, 0x04780101, 0x07f00000, 0x060ff002, - 0x045c0401, 0x06818867, 0x00088001, 0x033e6000, + 0x045c0401, 0x07818899, 0x00088001, 0x033e6000, 0x070000c0, 0x0220901a, 0x05308000, 0x01012000, - 0x04a007df, 0x018008c0, 0x01209865, 0x018007e7, - 0x00209867, 0x018002ca, 0x040fd075, 0x040fd07a, - 0x040fd079, 0x0648307a, 0x05810874, 0x06780075, - 0x06000007, 0x07818881, 0x00494075, 0x07818874, - 0x06a0096b, 0x06486075, 0x078182b1, 0x00494075, - 0x06818894, 0x02490075, 0x078182c6, 0x04487075, - 0x06818889, 0x0448b07a, 0x04810880, 0x00492075, - 0x0781889f, 0x00800897, 0x05308000, 0x03010000, - 0x06009079, 0x04a007df, 0x03800014, 0x0448e0e6, - 0x0581859c, 0x018002af, 0x0648307a, 0x078188c0, - 0x004940e6, 0x01a18a72, 0x05308000, 0x0500e000, - 0x06009079, 0x04a007df, 0x04008089, 0x05a007e4, - 0x018008c0, 0x00208007, 0x05a007e4, 0x03800014, - 0x05a007cf, 0x05308000, 0x0700f000, 0x06009079, - 0x07000088, 0x04a008a8, 0x04a007df, 0x03800014, - 0x004940e6, 0x01a18a72, 0x05308000, 0x01011000, - 0x06009079, 0x07000088, 0x04a008a8, 0x04a007df, - 0x03800014, 0x03386000, 0x07030000, 0x07f00000, - 0x048d08ab, 0x033e6a00, 0x0600aa0e, 0x02079051, - 0x040fd075, 0x0448b075, 0x058108b7, 0x02493075, - 0x058108b7, 0x05301005, 0x03010000, 0x008008b9, + 0x04a0080d, 0x008008f4, 0x06009051, 0x077b2b09, + 0x06000008, 0x00800815, 0x06009051, 0x077b3309, + 0x06000008, 0x018002ed, 0x040fd075, 0x040fd07a, + 0x040fd079, 0x0648307a, 0x048108a8, 0x06780075, + 0x06000007, 0x068188b5, 0x00494075, 0x068188a8, + 0x06a009a7, 0x06486075, 0x068182ce, 0x00494075, + 0x068188c8, 0x02490075, 0x078182e7, 0x04487075, + 0x078188bd, 0x0448b07a, 0x058108b4, 0x00492075, + 0x068188d3, 0x008008cb, 0x05308000, 0x03010000, + 0x06009079, 0x04a0080d, 0x02800016, 0x0448e0e6, + 0x058185b7, 0x018002ca, 0x0648307a, 0x068188f4, + 0x004940e6, 0x00a18aae, 0x05308000, 0x0500e000, + 0x06009079, 0x04a0080d, 0x04008089, 0x05a00812, + 0x008008f4, 0x00208007, 0x05a00812, 0x02800016, + 0x04a007fd, 0x05308000, 0x0700f000, 0x06009079, + 0x07000088, 0x04a008dc, 0x04a0080d, 0x02800016, + 0x004940e6, 0x00a18aae, 0x05308000, 0x01011000, + 0x06009079, 0x07000088, 0x04a008dc, 0x04a0080d, + 0x02800016, 0x03386000, 0x07030000, 0x07f00000, + 0x048d08df, 0x033e6a00, 0x0600aa0e, 0x02079051, + 0x040fd075, 0x0448b075, 0x058108eb, 0x02493075, + 0x058108eb, 0x05301005, 0x03010000, 0x018008ed, 0x05301006, 0x03010000, 0x05002087, 0x06485002, - 0x068188b9, 0x0744c000, 0x01088000, 0x02086001, - 0x07c00000, 0x05001088, 0x040fd001, 0x04a008d5, + 0x078188ed, 0x0744c000, 0x01088000, 0x02086001, + 0x07c00000, 0x05001088, 0x040fd001, 0x07a00909, 0x0644c001, 0x00088001, 0x070fc0ff, 0x033e6a00, - 0x0600aa0e, 0x004920e6, 0x068188cb, 0x02079051, - 0x048d08cb, 0x060ff089, 0x034990ff, 0x058108d2, - 0x03386005, 0x03010000, 0x03800014, 0x03386006, - 0x03010000, 0x03800014, 0x048d08d5, 0x03386000, - 0x07030000, 0x07f00000, 0x048d08d9, 0x070ff087, - 0x074850ff, 0x068188da, 0x07c00000, 0x058d08de, - 0x02386001, 0x07030000, 0x07f00000, 0x058d08e2, - 0x070ff087, 0x074850ff, 0x068188e3, 0x07c00000, - 0x05002087, 0x0049d002, 0x078188f6, 0x002fb008, - 0x067800e6, 0x07000041, 0x002fb008, 0x078188f6, - 0x07a0090c, 0x0448e002, 0x058108f9, 0x0648a002, - 0x05818903, 0x06486002, 0x048108fd, 0x02400057, - 0x056a02ff, 0x07c00000, 0x07a0090c, 0x06788102, - 0x06000004, 0x078188f6, 0x04002089, 0x070ff0d4, - 0x045c0402, 0x077800ff, 0x07f00000, 0x078188f6, - 0x00202010, 0x018c08f6, 0x07f00000, 0x06420002, - 0x04818904, 0x05a008de, 0x033e6a00, 0x0700aa0a, + 0x0600aa0e, 0x004920e6, 0x078188ff, 0x02079051, + 0x058d08ff, 0x060ff089, 0x034990ff, 0x07810906, + 0x03386005, 0x03010000, 0x02800016, 0x03386006, + 0x03010000, 0x02800016, 0x078d0909, 0x03386000, + 0x07030000, 0x07f00000, 0x068d090d, 0x070ff087, + 0x074850ff, 0x0481890e, 0x07c00000, 0x078d0912, + 0x02386001, 0x07030000, 0x07f00000, 0x068d0916, + 0x070ff087, 0x074850ff, 0x05818917, 0x07c00000, + 0x05002087, 0x0049d002, 0x0481892a, 0x002fb008, + 0x067800e6, 0x07000041, 0x002fb008, 0x0481892a, + 0x06a00940, 0x0448e002, 0x0781092d, 0x0648a002, + 0x04818937, 0x06486002, 0x06810931, 0x02400057, + 0x056a02ff, 0x07c00000, 0x06a00940, 0x06788102, + 0x06000004, 0x0481892a, 0x04002089, 0x070ff0d4, + 0x045c0402, 0x077800ff, 0x07f00000, 0x0481892a, + 0x00202010, 0x028c092a, 0x07f00000, 0x06420002, + 0x04818938, 0x07a00912, 0x033e6a00, 0x0700aa0a, 0x07c00000, 0x07f00000, 0x060ff0a2, 0x045a0202, - 0x060ff0a2, 0x045c0402, 0x0481890d, 0x07c00000, - 0x06a0035e, 0x03495047, 0x07810918, 0x0320901d, - 0x0280094a, 0x0220901f, 0x0280094a, 0x014980e4, - 0x05818014, 0x013e4000, 0x07003000, 0x05600e35, - 0x050f80ff, 0x07a00990, 0x01208003, 0x05a007e4, - 0x02800932, 0x03209009, 0x0280094a, 0x03209011, - 0x0280094a, 0x02209007, 0x0280094a, 0x03209003, - 0x0280094a, 0x00497043, 0x05818928, 0x00494043, - 0x07810924, 0x02209001, 0x0280094a, 0x0220900d, - 0x0280094a, 0x0320900f, 0x0280094a, 0x03493000, - 0x0681093b, 0x027c0045, 0x070a0000, 0x06810946, - 0x0220900b, 0x0280094a, 0x0320900c, 0x02800940, - 0x02209013, 0x05308000, 0x01012000, 0x04a007df, - 0x01800288, 0x03209005, 0x0280094a, 0x072e500c, - 0x00208002, 0x05a007e4, 0x03800014, 0x0349c0e4, - 0x06810967, 0x072d6000, 0x07f00000, 0x060000d0, + 0x060ff0a2, 0x045c0402, 0x05818941, 0x07c00000, + 0x06a00379, 0x03495047, 0x0681094c, 0x0320901d, + 0x0380097e, 0x0220901f, 0x0380097e, 0x014980e4, + 0x04818016, 0x013e4000, 0x07003000, 0x05600e35, + 0x050f80ff, 0x07a009cc, 0x01208003, 0x05a00812, + 0x03800966, 0x03209009, 0x0380097e, 0x03209011, + 0x0380097e, 0x02209007, 0x0380097e, 0x03209003, + 0x0380097e, 0x00497043, 0x0581895c, 0x00494043, + 0x06810958, 0x02209001, 0x0380097e, 0x0220900d, + 0x0380097e, 0x0320900f, 0x0380097e, 0x03493000, + 0x0781096f, 0x027c0045, 0x070a0000, 0x0681097a, + 0x0220900b, 0x0380097e, 0x0320900c, 0x03800974, + 0x02209013, 0x05308000, 0x01012000, 0x04a0080d, + 0x0180029f, 0x03209005, 0x0380097e, 0x072e500c, + 0x00208002, 0x05a00812, 0x02800016, 0x0349c0e4, + 0x0681099b, 0x072d6000, 0x07f00000, 0x060000d0, 0x0379ff00, 0x0700ffff, 0x04605232, 0x050f80ff, 0x032fa00a, 0x070000d1, 0x0379ff00, 0x0700ffff, 0x04605432, 0x050f80ff, 0x032fa00a, 0x062d6002, 0x07f00000, 0x0204f0d0, 0x0079fe4f, 0x070000ff, 0x074b0a00, 0x044b044f, 0x075a0000, 0x04600432, - 0x050f80ff, 0x032fa00a, 0x00041032, 0x03800044, - 0x05308000, 0x01012000, 0x04a007df, 0x00800279, - 0x06a0035e, 0x070ff02e, 0x045c0479, 0x06810973, - 0x05308000, 0x05008000, 0x06009079, 0x04a007df, - 0x07c00000, 0x053f2000, 0x0700c000, 0x019d8974, - 0x07c00000, 0x033e5000, 0x0700f000, 0x0280097f, - 0x004980e5, 0x0581807e, 0x033e5000, 0x05008000, - 0x050f8035, 0x07a00990, 0x00017008, 0x01018009, + 0x050f80ff, 0x032fa00a, 0x00041032, 0x02800046, + 0x07780047, 0x05000700, 0x037c00ff, 0x07000500, + 0x058189a3, 0x05308000, 0x03019000, 0x038009a5, + 0x05308000, 0x01012000, 0x04a0080d, 0x01800290, + 0x06a00379, 0x070ff02e, 0x045c0479, 0x078109af, + 0x05308000, 0x05008000, 0x06009079, 0x04a0080d, + 0x07c00000, 0x053f2000, 0x0700c000, 0x009d89b0, + 0x07c00000, 0x033e5000, 0x0700f000, 0x038009bb, + 0x004980e5, 0x04818080, 0x033e5000, 0x05008000, + 0x050f8035, 0x07a009cc, 0x00017008, 0x01018009, 0x033e5000, 0x07000c00, 0x05308000, 0x07006000, - 0x07009041, 0x04a007df, 0x033e5000, 0x07003000, - 0x05008017, 0x07009018, 0x0249a0e5, 0x0681821f, - 0x0380007e, 0x06600052, 0x030d60ff, 0x07f00000, + 0x07009041, 0x04a0080d, 0x033e5000, 0x07003000, + 0x05008017, 0x07009018, 0x0249a0e5, 0x07818236, + 0x02800080, 0x06600052, 0x030d60ff, 0x07f00000, 0x07f00000, 0x000110d0, 0x010120d1, 0x04600252, 0x030d60ff, 0x07f00000, 0x07f00000, 0x020130d0, 0x010140d1, 0x04600452, 0x030d60ff, 0x010170d4, 0x07f00000, 0x020150d0, 0x030160d1, 0x053fa83a, 0x06000008, 0x07c00000, 0x07600c41, 0x050f80ff, 0x01202003, 0x073fa00a, 0x06000001, 0x07f00000, - 0x05601041, 0x050f80ff, 0x032fa071, 0x01800139, - 0x002fb001, 0x038009b2, 0x012fb000, 0x02386001, - 0x030e0000, 0x03076087, 0x069f09b5, 0x03386000, - 0x03020000, 0x00498076, 0x04818a07, 0x00497076, - 0x048189c1, 0x04482076, 0x048189d3, 0x02496076, - 0x058189f6, 0x02800a04, 0x075a00ff, 0x069f09c2, + 0x05601041, 0x050f80ff, 0x032fa071, 0x01800141, + 0x002fb001, 0x038009ee, 0x012fb000, 0x02386001, + 0x030e0000, 0x03076087, 0x069f09f1, 0x03386000, + 0x03020000, 0x00498076, 0x04818a43, 0x00497076, + 0x048189fd, 0x04482076, 0x05818a0f, 0x02496076, + 0x04818a32, 0x02800a40, 0x075a00ff, 0x069f09fe, 0x03386000, 0x03010000, 0x033e6000, 0x07003000, - 0x00492076, 0x06810a04, 0x00491076, 0x04818a04, - 0x02490076, 0x04818a04, 0x0249a0e6, 0x078109d1, - 0x06a00a7f, 0x028009fb, 0x0245f076, 0x02800a04, - 0x004980e6, 0x06810a0d, 0x070ff074, 0x028609e5, + 0x00492076, 0x06810a40, 0x00491076, 0x04818a40, + 0x02490076, 0x04818a40, 0x0249a0e6, 0x06810a0d, + 0x07a00abb, 0x02800a37, 0x0245f076, 0x02800a40, + 0x004980e6, 0x06810a49, 0x070ff074, 0x03860a21, 0x070ff072, 0x05500471, 0x050f80ff, 0x002fa819, - 0x079f09db, 0x02080001, 0x00081002, 0x01082003, - 0x06a00a49, 0x02860a0d, 0x06a00a2c, 0x0249a0e6, - 0x048189fb, 0x02800a04, 0x06a00a2c, 0x033e6000, - 0x07002200, 0x030ef003, 0x018689ed, 0x033e6000, - 0x07002e00, 0x0045807a, 0x0249a0e6, 0x068109f1, - 0x04a007d3, 0x038009ff, 0x0648c0e6, 0x06810a04, - 0x03386000, 0x030e0000, 0x02800580, 0x06a00a2c, - 0x030ef003, 0x008689fb, 0x070ff074, 0x028609ea, - 0x033e6000, 0x07002200, 0x0249a0e6, 0x06810a04, + 0x079f0a17, 0x02080001, 0x00081002, 0x01082003, + 0x06a00a85, 0x02860a49, 0x06a00a68, 0x0249a0e6, + 0x04818a37, 0x02800a40, 0x06a00a68, 0x033e6000, + 0x07002200, 0x030ef003, 0x00868a29, 0x033e6000, + 0x07002e00, 0x0045807a, 0x0249a0e6, 0x07810a2d, + 0x04a00801, 0x02800a3b, 0x0648c0e6, 0x06810a40, + 0x03386000, 0x030e0000, 0x0280059b, 0x06a00a68, + 0x030ef003, 0x00868a37, 0x070ff074, 0x02860a26, + 0x033e6000, 0x07002200, 0x0249a0e6, 0x06810a40, 0x03386000, 0x030e0000, 0x033e6000, 0x05008000, - 0x03800611, 0x03386000, 0x030e0000, 0x02800029, + 0x03800630, 0x03386000, 0x030e0000, 0x0380002b, 0x040fd079, 0x033e6000, 0x0500a200, 0x03386000, - 0x030e0000, 0x00800897, 0x02209a0d, 0x018007e7, + 0x030e0000, 0x008008cb, 0x02209a49, 0x00800815, 0x02386001, 0x030e0000, 0x06604e79, 0x050f80ff, 0x032fa009, 0x03070000, 0x06601270, 0x050f80ff, 0x053fa821, 0x06000038, 0x07f00000, 0x04601a70, - 0x050f80ff, 0x032fa021, 0x060ff002, 0x02860a2a, - 0x069f0a1f, 0x03080000, 0x00081001, 0x00082002, + 0x050f80ff, 0x032fa021, 0x060ff002, 0x03860a66, + 0x069f0a5b, 0x03080000, 0x00081001, 0x00082002, 0x03083003, 0x070ff087, 0x033e6000, 0x07000300, 0x03386000, 0x030e0000, 0x07c00000, 0x0045807a, - 0x03800a27, 0x06604e79, 0x050f80ff, 0x032fa009, + 0x03800a63, 0x06604e79, 0x050f80ff, 0x032fa009, 0x03070000, 0x06601270, 0x050f80ff, 0x053fa822, - 0x06000038, 0x069f0a34, 0x070ff087, 0x0149d0ff, - 0x04818a40, 0x06000080, 0x05001081, 0x05002082, + 0x06000038, 0x069f0a70, 0x070ff087, 0x0149d0ff, + 0x04818a7c, 0x06000080, 0x05001081, 0x05002082, 0x06003083, 0x04601a70, 0x050f80ff, 0x032fa022, 0x07c00000, 0x0131ef00, 0x0700000f, 0x070ff087, - 0x0149d0ff, 0x06810a34, 0x0742001e, 0x05818a42, - 0x050fd0ff, 0x02800a40, 0x07420074, 0x06810a5e, - 0x02400073, 0x060ff038, 0x00540473, 0x03d00a60, + 0x0149d0ff, 0x06810a70, 0x0742001e, 0x05818a7e, + 0x050fd0ff, 0x02800a7c, 0x07420074, 0x07810a9a, + 0x02400073, 0x060ff038, 0x00540473, 0x03d00a9c, 0x05600272, 0x050f80ff, 0x032fa009, 0x030ef000, - 0x02860a70, 0x01072000, 0x05601000, 0x050f80ff, - 0x032fa009, 0x03681e00, 0x076c14ff, 0x04818a70, + 0x03860aac, 0x01072000, 0x05601000, 0x050f80ff, + 0x032fa009, 0x03681e00, 0x076c14ff, 0x05818aac, 0x02073038, 0x05271009, 0x07c00000, 0x022ff001, - 0x02800a5d, 0x03800a66, 0x02800a68, 0x03800a6a, - 0x03800a6c, 0x02800a6e, 0x02800a4f, 0x05271009, - 0x02800a5d, 0x0527100c, 0x02800a5d, 0x0527100f, - 0x02800a5d, 0x05271012, 0x02800a5d, 0x04271015, - 0x02800a5d, 0x032ff000, 0x02800a5d, 0x02386001, - 0x030e0000, 0x05001087, 0x069f0a75, 0x00494001, - 0x07810a7b, 0x03386000, 0x030e0000, 0x07c00000, + 0x03800a99, 0x02800aa2, 0x02800aa4, 0x03800aa6, + 0x02800aa8, 0x03800aaa, 0x03800a8b, 0x05271009, + 0x03800a99, 0x0527100c, 0x03800a99, 0x0527100f, + 0x03800a99, 0x05271012, 0x03800a99, 0x04271015, + 0x03800a99, 0x032ff000, 0x03800a99, 0x02386001, + 0x030e0000, 0x05001087, 0x079f0ab1, 0x00494001, + 0x07810ab7, 0x03386000, 0x030e0000, 0x07c00000, 0x03386000, 0x03010000, 0x033e6000, 0x07003000, - 0x00208080, 0x0301a087, 0x0049401a, 0x04818a89, - 0x0049701a, 0x05818a9f, 0x06420008, 0x04818a80, - 0x0760031e, 0x00208080, 0x0049d01a, 0x07810a90, - 0x06420008, 0x04818a80, 0x0760031d, 0x00208080, - 0x02800a80, 0x00208070, 0x0301a087, 0x0049401a, - 0x06810a80, 0x01208060, 0x0301a087, 0x0049401a, - 0x06810a80, 0x06a00a2c, 0x033e6000, 0x07002200, - 0x069f0a9b, 0x03386000, 0x030e0000, 0x07c00000, - 0x06a00a2c, 0x02800a9b, 0xe2cab9fe, 0x02800004, - 0x00000000, 0x00008000, 0x00000703, 0x033d0aaa, - 0x070aaaaa, 0x013d1aaa, 0x070aaaaa, 0x050f801e, - 0x012fa8d1, 0x050f801e, 0x043fa889, 0x0700000f, - 0x03200005, 0x07420000, 0x050fb000, 0x050f801e, - 0x073fa011, 0x06000038, 0x050f801e, 0x053fa859, - 0x0700003a, 0x050fe000, 0x0481800e, 0x07840024, - 0x0595801d, 0x030e0011, 0x072e4200, 0x03800018, - 0x02920040, 0x068b0023, 0x028a0064, 0x0778aae7, - 0x06000001, 0x01a18536, 0x079a0053, 0x05908018, - 0x010170e1, 0x03640a17, 0x0482803d, 0x070ff017, - 0x02d0002a, 0x02800032, 0x02800034, 0x02800037, - 0x0380003a, 0x0280003d, 0x0280003d, 0x0280003d, - 0x0280003d, 0x03e00000, 0x03800018, 0x04908034, - 0x030160e1, 0x0380003f, 0x04908037, 0x030150e1, - 0x0380003f, 0x0590803a, 0x010140e1, 0x0380003f, - 0x060fc013, 0x06a006f4, 0x03800018, 0x014940e4, - 0x00a18043, 0x03800024, 0x02681e0d, 0x050fb0ff, - 0x04600875, 0x050f80ff, 0x053fa809, 0x06000001, - 0x05488003, 0x04818052, 0x0400800d, 0x0120d000, - 0x013e4000, 0x05000200, 0x06009075, 0x04002076, - 0x06a006e0, 0x07c00000, 0x000170e3, 0x050fe017, - 0x05878059, 0x0547f417, 0x0301f0ff, 0x01800235, - 0x054bc417, 0x050fb0ff, 0x03640aff, 0x04828061, - 0x0179fe17, 0x070fffff, 0x030750ff, 0x01800472, - 0x050fd017, 0x06a006f4, 0x0380001d, 0x00018098, - 0x07480018, 0x04818079, 0x05481018, 0x04818076, - 0x05482018, 0x04818073, 0x07483018, 0x04818070, - 0x002fb004, 0x030190cc, 0x0380007b, 0x012fb003, - 0x020190cb, 0x0380007b, 0x002fb002, 0x030190ca, - 0x0380007b, 0x002fb001, 0x030190c9, 0x0380007b, - 0x012fb000, 0x020190c8, 0x00017086, 0x01491017, - 0x07810084, 0x05a001a0, 0x07781817, 0x05000200, - 0x037c00ff, 0x05000200, 0x0581012e, 0x078b0084, - 0x03385000, 0x03020000, 0x07780017, 0x0043dc07, - 0x078181e2, 0x056c0478, 0x05810147, 0x056c0278, - 0x07810090, 0x05278000, 0x0180012e, 0x05278000, - 0x07483017, 0x04810131, 0x05482017, 0x04810138, - 0x0448b076, 0x0681811c, 0x06601875, 0x050f80ff, - 0x073fa022, 0x0600003e, 0x06000080, 0x05001081, - 0x05002082, 0x06003083, 0x00683e76, 0x076c0aff, - 0x048180a7, 0x05004084, 0x04602075, 0x050f80ff, - 0x022fa02a, 0x038000aa, 0x04602075, 0x050f80ff, - 0x032fa022, 0x04487076, 0x0581011b, 0x04604675, - 0x050f80ff, 0x032fa009, 0x03680600, 0x050010ff, - 0x056c02ff, 0x058180f3, 0x07000090, 0x074b0000, - 0x050fe000, 0x038600ee, 0x0560027b, 0x050f80ff, - 0x032fa009, 0x07f00000, 0x07601400, 0x050f80ff, - 0x032fa009, 0x07f00000, 0x074b0000, 0x070ff08d, - 0x0179feff, 0x070000ff, 0x055c0400, 0x078100f3, - 0x070ff017, 0x037a00ff, 0x05000400, 0x010170ff, - 0x04604075, 0x050f80ff, 0x034a8400, 0x034a8800, - 0x05780100, 0x070000ff, 0x055a0400, 0x074b0a00, - 0x077bff00, 0x070000ff, 0x032fa00a, 0x07f00000, - 0x04603e75, 0x050f80ff, 0x07300fff, 0x070fffff, - 0x032fa00a, 0x07f00000, 0x04604a75, 0x050f80ff, - 0x0700008d, 0x017a0100, 0x07ffff00, 0x032fa00a, - 0x07f00000, 0x04604c75, 0x050f80ff, 0x07300fff, - 0x070fffff, 0x032fa00a, 0x07f00000, 0x06604275, - 0x050f80ff, 0x06000013, 0x032fa00a, 0x0245a076, - 0x008001ea, 0x04603875, 0x050f80ff, 0x05002071, - 0x073fa00a, 0x06000001, 0x066c0001, 0x06818115, - 0x05482017, 0x04810115, 0x070ff09a, 0x017910ff, - 0x03088888, 0x057d10ff, 0x03088888, 0x04810115, - 0x070ff09a, 0x045a0201, 0x070ff09a, 0x045c0401, - 0x048180fd, 0x050020ff, 0x060000fb, 0x06483001, - 0x07818109, 0x00680e01, 0x055c0400, 0x0481010e, - 0x004a4001, 0x02400002, 0x046c0e02, 0x06818104, - 0x00800115, 0x040fd002, 0x052e400c, 0x040080fb, - 0x046a6108, 0x06009075, 0x04002076, 0x06a006e0, - 0x04603e75, 0x050f80ff, 0x053fa842, 0x06000045, - 0x048b0119, 0x02085013, 0x05278000, 0x02075013, - 0x060ff0fb, 0x00d0011f, 0x01800124, 0x00800126, - 0x01800128, 0x0080012a, 0x0080012c, 0x062d0020, - 0x0180012e, 0x062d0080, 0x0180012e, 0x052d0200, - 0x0180012e, 0x052d0800, 0x0180012e, 0x033d0000, - 0x06000002, 0x03920024, 0x0584801d, 0x02800023, - 0x040fe07f, 0x00860140, 0x05a00160, 0x0192012e, - 0x040fe07f, 0x07a68160, 0x0180012e, 0x0760187b, - 0x050f80ff, 0x032fa009, 0x0744f000, 0x0760187b, - 0x050f80ff, 0x032fa00a, 0x02800097, 0x052e400c, - 0x040080fb, 0x046aa108, 0x06009075, 0x04002076, - 0x06a006e0, 0x0180012e, 0x04278001, 0x05482017, - 0x04810154, 0x048b014a, 0x060ff086, 0x0349f0ff, - 0x0581807b, 0x07483017, 0x04810151, 0x050fd0ff, - 0x040fe07f, 0x07a68160, 0x0180012e, 0x05004084, - 0x05a00217, 0x0192012e, 0x070ff07d, 0x0450047c, - 0x056004ff, 0x050f80ff, 0x032fa009, 0x070ff000, - 0x00540479, 0x030790ff, 0x00800138, 0x04487076, - 0x04810168, 0x04605875, 0x050f80ff, 0x032fa009, - 0x060ff079, 0x01540400, 0x0180016a, 0x060ff079, - 0x0054047a, 0x05820199, 0x05810199, 0x070ff07d, - 0x0450047c, 0x050f80ff, 0x002fa819, 0x048b0170, - 0x02080001, 0x00081002, 0x01082003, 0x058b0174, - 0x04487076, 0x0481017a, 0x02385001, 0x03010000, - 0x0080017c, 0x03385000, 0x03010000, 0x03400078, - 0x070ff003, 0x04500479, 0x030790ff, 0x0340007e, - 0x0642007f, 0x05810199, 0x070ff07e, 0x050f80ff, - 0x032fa009, 0x050fe000, 0x02868198, 0x070ff07d, - 0x056002ff, 0x050f80ff, 0x032fa009, 0x0107d000, - 0x0186019a, 0x0560107d, 0x050f80ff, 0x032fa009, - 0x03681e00, 0x0550041b, 0x050f80ff, 0x032fa009, - 0x0107e000, 0x070ff07e, 0x01800184, 0x0307c000, - 0x07c00000, 0x052e400c, 0x040080fb, 0x046aa108, - 0x06009075, 0x04002076, 0x028006e0, 0x060ff075, - 0x008601e0, 0x060ff073, 0x00540419, 0x058201b7, - 0x058101c3, 0x050010ff, 0x00202010, 0x00642001, - 0x068281ab, 0x04002001, 0x040f8073, 0x024a3c02, - 0x017a02ff, 0x06000c98, 0x070fa0ff, 0x060ff002, - 0x06500073, 0x03610072, 0x045c0473, 0x078181c6, - 0x03073072, 0x018001c6, 0x036100ff, 0x050010ff, - 0x03610072, 0x00540473, 0x057dfeff, 0x07ffffff, - 0x01400203, 0x00202010, 0x01642003, 0x068281ab, - 0x05002003, 0x008001ab, 0x04002013, 0x04001013, - 0x01294000, 0x07480077, 0x078181e1, 0x06604e75, - 0x050f80ff, 0x053fa809, 0x06000001, 0x07f00000, - 0x07602203, 0x050f80ff, 0x053fa809, 0x06000001, - 0x05481003, 0x078181dd, 0x060ff002, 0x04500401, - 0x016480ff, 0x078281e1, 0x07440077, 0x040080fb, - 0x006b6108, 0x06009075, 0x07a006db, 0x018001e1, - 0x060ff002, 0x045c0401, 0x078181e1, 0x01294000, - 0x07c00000, 0x040fd075, 0x050fd017, 0x060ff086, - 0x077800ff, 0x07000060, 0x037c00ff, 0x07000060, - 0x078181e4, 0x04487076, 0x04810201, 0x07780017, - 0x0243d807, 0x06818201, 0x06601875, 0x050f80ff, - 0x073fa022, 0x0600003e, 0x0249a076, 0x078181fa, - 0x058b01f5, 0x04603e75, 0x050f80ff, 0x053fa842, - 0x06000045, 0x052e400c, 0x040080fb, 0x026b4108, - 0x06009075, 0x04002076, 0x06a006e0, 0x03800024, - 0x06601875, 0x050f80ff, 0x073fa022, 0x0600003e, - 0x052e400c, 0x04600875, 0x050f80ff, 0x053fa809, - 0x06000001, 0x05488003, 0x05810211, 0x0400d0fb, - 0x066a810d, 0x013e4000, 0x07000300, 0x03800024, - 0x040080fb, 0x066a8108, 0x06009075, 0x04002076, - 0x06a006e0, 0x03800024, 0x0240007f, 0x0742007e, - 0x050f807e, 0x032fa009, 0x050fe000, 0x02868231, - 0x070ff07d, 0x055c047b, 0x04810226, 0x0760007d, - 0x050f80ff, 0x032fa009, 0x050fe000, 0x02868226, - 0x070ff07b, 0x0107d0ff, 0x0560107d, 0x050f80ff, - 0x032fa009, 0x03681e00, 0x0450041c, 0x0107e0ff, - 0x050f80ff, 0x032fa009, 0x050fe000, 0x01860233, - 0x0307c000, 0x07c00000, 0x040fd075, 0x028006f4, - 0x0460081f, 0x050f80ff, 0x032fa039, 0x01021000, - 0x03020005, 0x01018006, 0x01683e21, 0x00d0023d, - 0x0080025d, 0x018002f5, 0x0280032f, 0x038003d8, - 0x00800261, 0x0080025d, 0x0080025d, 0x0080025d, + 0x04008051, 0x00610108, 0x0301a087, 0x0049401a, + 0x05818ac6, 0x0049701a, 0x04818adc, 0x06420008, + 0x05818abd, 0x0760031e, 0x00610108, 0x0049d01a, + 0x06810acd, 0x06420008, 0x05818abd, 0x0760031d, + 0x00610108, 0x03800abd, 0x00208070, 0x0301a087, + 0x0049401a, 0x07810abd, 0x01208060, 0x0301a087, + 0x0049401a, 0x07810abd, 0x06a00a68, 0x033e6000, + 0x07002200, 0x079f0ad8, 0x03386000, 0x030e0000, + 0x07c00000, 0x06a00a68, 0x03800ad8, 0x8e579a58, + 0x02800004, 0x00000000, 0x00008000, 0x0000070b, + 0x033d0aaa, 0x070aaaaa, 0x013d1aaa, 0x070aaaaa, + 0x050f801e, 0x012fa8d1, 0x050f801e, 0x043fa889, + 0x0700000f, 0x03200005, 0x07420000, 0x050fb000, + 0x050f801e, 0x073fa011, 0x06000038, 0x050f801e, + 0x053fa859, 0x0700003a, 0x050fe000, 0x0481800e, + 0x07840024, 0x0595801d, 0x030e0011, 0x072e4200, + 0x03800018, 0x02920040, 0x068b0023, 0x028a0064, + 0x0778aae7, 0x06000001, 0x00a1853d, 0x079a0053, + 0x05908018, 0x010170e1, 0x03640a17, 0x0482803d, + 0x070ff017, 0x02d0002a, 0x02800032, 0x02800034, + 0x02800037, 0x0380003a, 0x0280003d, 0x0280003d, + 0x0280003d, 0x0280003d, 0x03e00000, 0x03800018, + 0x04908034, 0x030160e1, 0x0380003f, 0x04908037, + 0x030150e1, 0x0380003f, 0x0590803a, 0x010140e1, + 0x0380003f, 0x060fc013, 0x06a006fb, 0x03800018, + 0x014940e4, 0x00a18043, 0x03800024, 0x02681e0d, + 0x050fb0ff, 0x04600875, 0x050f80ff, 0x053fa809, + 0x06000001, 0x05488003, 0x04818052, 0x0400800d, + 0x0120d000, 0x013e4000, 0x05000200, 0x06009075, + 0x04002076, 0x07a006e7, 0x07c00000, 0x000170e3, + 0x050fe017, 0x05878059, 0x0547f417, 0x0301f0ff, + 0x01800235, 0x054bc417, 0x050fb0ff, 0x03640aff, + 0x04828061, 0x0179fe17, 0x070fffff, 0x030750ff, + 0x01800472, 0x050fd017, 0x06a006fb, 0x0380001d, + 0x00018098, 0x07480018, 0x04818079, 0x05481018, + 0x04818076, 0x05482018, 0x04818073, 0x07483018, + 0x04818070, 0x002fb004, 0x030190cc, 0x0380007b, + 0x012fb003, 0x020190cb, 0x0380007b, 0x002fb002, + 0x030190ca, 0x0380007b, 0x002fb001, 0x030190c9, + 0x0380007b, 0x012fb000, 0x020190c8, 0x00017086, + 0x01491017, 0x07810084, 0x05a001a0, 0x07781817, + 0x05000200, 0x037c00ff, 0x05000200, 0x0581012e, + 0x078b0084, 0x03385000, 0x03020000, 0x07780017, + 0x0043dc07, 0x078181e2, 0x056c0478, 0x05810147, + 0x056c0278, 0x07810090, 0x05278000, 0x0180012e, + 0x05278000, 0x07483017, 0x04810131, 0x05482017, + 0x04810138, 0x0448b076, 0x0681811c, 0x06601875, + 0x050f80ff, 0x073fa022, 0x0600003e, 0x06000080, + 0x05001081, 0x05002082, 0x06003083, 0x00683e76, + 0x076c0aff, 0x048180a7, 0x05004084, 0x04602075, + 0x050f80ff, 0x022fa02a, 0x038000aa, 0x04602075, + 0x050f80ff, 0x032fa022, 0x04487076, 0x0581011b, + 0x04604675, 0x050f80ff, 0x032fa009, 0x03680600, + 0x050010ff, 0x056c02ff, 0x058180f3, 0x07000090, + 0x074b0000, 0x050fe000, 0x038600ee, 0x0560027b, + 0x050f80ff, 0x032fa009, 0x07f00000, 0x07601400, + 0x050f80ff, 0x032fa009, 0x07f00000, 0x074b0000, + 0x070ff08d, 0x0179feff, 0x070000ff, 0x055c0400, + 0x078100f3, 0x070ff017, 0x037a00ff, 0x05000400, + 0x010170ff, 0x04604075, 0x050f80ff, 0x034a8400, + 0x034a8800, 0x05780100, 0x070000ff, 0x055a0400, + 0x074b0a00, 0x077bff00, 0x070000ff, 0x032fa00a, + 0x07f00000, 0x04603e75, 0x050f80ff, 0x07300fff, + 0x070fffff, 0x032fa00a, 0x07f00000, 0x04604a75, + 0x050f80ff, 0x0700008d, 0x017a0100, 0x07ffff00, + 0x032fa00a, 0x07f00000, 0x04604c75, 0x050f80ff, + 0x07300fff, 0x070fffff, 0x032fa00a, 0x07f00000, + 0x06604275, 0x050f80ff, 0x06000013, 0x032fa00a, + 0x0245a076, 0x008001ea, 0x04603875, 0x050f80ff, + 0x05002071, 0x073fa00a, 0x06000001, 0x066c0001, + 0x06818115, 0x05482017, 0x04810115, 0x070ff09a, + 0x017910ff, 0x03088888, 0x057d10ff, 0x03088888, + 0x04810115, 0x070ff09a, 0x045a0201, 0x070ff09a, + 0x045c0401, 0x048180fd, 0x050020ff, 0x060000fb, + 0x06483001, 0x07818109, 0x00680e01, 0x055c0400, + 0x0481010e, 0x004a4001, 0x02400002, 0x046c0e02, + 0x06818104, 0x00800115, 0x040fd002, 0x052e400c, + 0x040080fb, 0x046a6108, 0x06009075, 0x04002076, + 0x07a006e7, 0x04603e75, 0x050f80ff, 0x053fa842, + 0x06000045, 0x048b0119, 0x02085013, 0x05278000, + 0x02075013, 0x060ff0fb, 0x00d0011f, 0x01800124, + 0x00800126, 0x01800128, 0x0080012a, 0x0080012c, + 0x062d0020, 0x0180012e, 0x062d0080, 0x0180012e, + 0x052d0200, 0x0180012e, 0x052d0800, 0x0180012e, + 0x033d0000, 0x06000002, 0x03920024, 0x0584801d, + 0x02800023, 0x040fe07f, 0x00860140, 0x05a00160, + 0x0192012e, 0x040fe07f, 0x07a68160, 0x0180012e, + 0x0760187b, 0x050f80ff, 0x032fa009, 0x0744f000, + 0x0760187b, 0x050f80ff, 0x032fa00a, 0x02800097, + 0x052e400c, 0x040080fb, 0x046aa108, 0x06009075, + 0x04002076, 0x07a006e7, 0x0180012e, 0x04278001, + 0x05482017, 0x04810154, 0x048b014a, 0x060ff086, + 0x0349f0ff, 0x0581807b, 0x07483017, 0x04810151, + 0x050fd0ff, 0x040fe07f, 0x07a68160, 0x0180012e, + 0x05004084, 0x05a00217, 0x0192012e, 0x070ff07d, + 0x0450047c, 0x056004ff, 0x050f80ff, 0x032fa009, + 0x070ff000, 0x00540479, 0x030790ff, 0x00800138, + 0x04487076, 0x04810168, 0x04605875, 0x050f80ff, + 0x032fa009, 0x060ff079, 0x01540400, 0x0180016a, + 0x060ff079, 0x0054047a, 0x05820199, 0x05810199, + 0x070ff07d, 0x0450047c, 0x050f80ff, 0x002fa819, + 0x048b0170, 0x02080001, 0x00081002, 0x01082003, + 0x058b0174, 0x04487076, 0x0481017a, 0x02385001, + 0x03010000, 0x0080017c, 0x03385000, 0x03010000, + 0x03400078, 0x070ff003, 0x04500479, 0x030790ff, + 0x0340007e, 0x0642007f, 0x05810199, 0x070ff07e, + 0x050f80ff, 0x032fa009, 0x050fe000, 0x02868198, + 0x070ff07d, 0x056002ff, 0x050f80ff, 0x032fa009, + 0x0107d000, 0x0186019a, 0x0560107d, 0x050f80ff, + 0x032fa009, 0x03681e00, 0x0550041b, 0x050f80ff, + 0x032fa009, 0x0107e000, 0x070ff07e, 0x01800184, + 0x0307c000, 0x07c00000, 0x052e400c, 0x040080fb, + 0x046aa108, 0x06009075, 0x04002076, 0x038006e7, + 0x060ff075, 0x008601e0, 0x060ff073, 0x00540419, + 0x058201b7, 0x058101c3, 0x050010ff, 0x00202010, + 0x00642001, 0x068281ab, 0x04002001, 0x040f8073, + 0x024a3c02, 0x017a02ff, 0x06000c98, 0x070fa0ff, + 0x060ff002, 0x06500073, 0x03610072, 0x045c0473, + 0x078181c6, 0x03073072, 0x018001c6, 0x036100ff, + 0x050010ff, 0x03610072, 0x00540473, 0x057dfeff, + 0x07ffffff, 0x01400203, 0x00202010, 0x01642003, + 0x068281ab, 0x05002003, 0x008001ab, 0x04002013, + 0x04001013, 0x01294000, 0x07480077, 0x078181e1, + 0x06604e75, 0x050f80ff, 0x053fa809, 0x06000001, + 0x07f00000, 0x07602203, 0x050f80ff, 0x053fa809, + 0x06000001, 0x05481003, 0x078181dd, 0x060ff002, + 0x04500401, 0x016480ff, 0x078281e1, 0x07440077, + 0x040080fb, 0x006b6108, 0x06009075, 0x07a006e2, + 0x018001e1, 0x060ff002, 0x045c0401, 0x078181e1, + 0x01294000, 0x07c00000, 0x040fd075, 0x050fd017, + 0x060ff086, 0x077800ff, 0x07000060, 0x037c00ff, + 0x07000060, 0x078181e4, 0x04487076, 0x04810201, + 0x07780017, 0x0243d807, 0x06818201, 0x06601875, + 0x050f80ff, 0x073fa022, 0x0600003e, 0x0249a076, + 0x078181fa, 0x058b01f5, 0x04603e75, 0x050f80ff, + 0x053fa842, 0x06000045, 0x052e400c, 0x040080fb, + 0x026b4108, 0x06009075, 0x04002076, 0x07a006e7, + 0x03800024, 0x06601875, 0x050f80ff, 0x073fa022, + 0x0600003e, 0x052e400c, 0x04600875, 0x050f80ff, + 0x053fa809, 0x06000001, 0x05488003, 0x05810211, + 0x0400d0fb, 0x066a810d, 0x013e4000, 0x07000300, + 0x03800024, 0x040080fb, 0x066a8108, 0x06009075, + 0x04002076, 0x07a006e7, 0x03800024, 0x0240007f, + 0x0742007e, 0x050f807e, 0x032fa009, 0x050fe000, + 0x02868231, 0x070ff07d, 0x055c047b, 0x04810226, + 0x0760007d, 0x050f80ff, 0x032fa009, 0x050fe000, + 0x02868226, 0x070ff07b, 0x0107d0ff, 0x0560107d, + 0x050f80ff, 0x032fa009, 0x03681e00, 0x0450041c, + 0x0107e0ff, 0x050f80ff, 0x032fa009, 0x050fe000, + 0x01860233, 0x0307c000, 0x07c00000, 0x040fd075, + 0x028006fb, 0x0460081f, 0x050f80ff, 0x032fa039, + 0x01021000, 0x03020005, 0x01018006, 0x01683e21, + 0x00d0023d, 0x0080025d, 0x018002f5, 0x0280032f, + 0x038003d8, 0x00800261, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, - 0x0080025d, 0x0080025d, 0x00800413, 0x0080025d, + 0x0080025d, 0x0080025d, 0x0080025d, 0x00800413, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, - 0x050fd0ff, 0x06a006f4, 0x03800018, 0x0380001d, - 0x01494021, 0x06818434, 0x0400701f, 0x05a00466, - 0x007a0101, 0x07060000, 0x04601c20, 0x050f80ff, - 0x053fa809, 0x07000003, 0x04484007, 0x048102b9, - 0x06485007, 0x048102b9, 0x04601020, 0x050f80ff, - 0x073fa009, 0x07000003, 0x0769ff06, 0x076c3006, - 0x04810289, 0x056cd006, 0x04810289, 0x04601c20, - 0x050f80ff, 0x053fa809, 0x07000003, 0x06780007, - 0x070000ff, 0x075a0005, 0x04601020, 0x050f80ff, - 0x053fa809, 0x07000003, 0x0469fe07, 0x05780105, - 0x07ffff00, 0x075a0005, 0x030b6005, 0x018002a3, - 0x04601c20, 0x050f80ff, 0x053fa809, 0x07000003, - 0x00464007, 0x02465007, 0x07f00000, 0x04601c20, - 0x050f80ff, 0x053fa80a, 0x07000003, 0x07f00000, + 0x0080025d, 0x050fd0ff, 0x06a006fb, 0x03800018, + 0x0380001d, 0x01494021, 0x06818434, 0x0400701f, + 0x05a00466, 0x007a0101, 0x07060000, 0x04601c20, + 0x050f80ff, 0x053fa809, 0x07000003, 0x04484007, + 0x048102b9, 0x06485007, 0x048102b9, 0x04601020, + 0x050f80ff, 0x073fa009, 0x07000003, 0x0769ff06, + 0x076c3006, 0x04810289, 0x056cd006, 0x04810289, 0x04601c20, 0x050f80ff, 0x053fa809, 0x07000003, - 0x07f00000, 0x07f00000, 0x04601620, 0x050f80ff, - 0x053fa809, 0x07000003, 0x05780105, 0x07ffff00, - 0x044b0407, 0x075a0005, 0x0460041f, 0x050f80ff, - 0x053fa80a, 0x06000002, 0x07f00000, 0x0460041f, - 0x050f80ff, 0x053fa809, 0x07000003, 0x07303000, - 0x06008280, 0x0460081f, 0x050f80ff, 0x053fa809, - 0x07000003, 0x007a0107, 0x03400000, 0x0460081f, - 0x050f80ff, 0x053fa80a, 0x07000003, 0x018002bb, - 0x07303000, 0x07008290, 0x03496021, 0x068182bf, - 0x06006013, 0x018002c6, 0x02400010, 0x048102bf, - 0x06006010, 0x0660361f, 0x050f80ff, 0x073fa00a, - 0x07000003, 0x072d0003, 0x039b82c6, 0x069382cb, + 0x06780007, 0x070000ff, 0x075a0005, 0x04601020, + 0x050f80ff, 0x053fa809, 0x07000003, 0x0469fe07, + 0x05780105, 0x07ffff00, 0x075a0005, 0x030b6005, + 0x018002a3, 0x04601c20, 0x050f80ff, 0x053fa809, + 0x07000003, 0x00464007, 0x02465007, 0x07f00000, + 0x04601c20, 0x050f80ff, 0x053fa80a, 0x07000003, + 0x07f00000, 0x04601c20, 0x050f80ff, 0x053fa809, + 0x07000003, 0x07f00000, 0x07f00000, 0x04601620, + 0x050f80ff, 0x053fa809, 0x07000003, 0x05780105, + 0x07ffff00, 0x044b0407, 0x075a0005, 0x0460041f, + 0x050f80ff, 0x053fa80a, 0x06000002, 0x07f00000, + 0x0460041f, 0x050f80ff, 0x053fa809, 0x07000003, + 0x07303000, 0x06008280, 0x0460081f, 0x050f80ff, + 0x053fa809, 0x07000003, 0x007a0107, 0x03400000, + 0x0460081f, 0x050f80ff, 0x053fa80a, 0x07000003, + 0x018002bb, 0x07303000, 0x07008290, 0x03496021, + 0x068182bf, 0x06006013, 0x018002c6, 0x02400010, + 0x048102bf, 0x06006010, 0x0660361f, 0x050f80ff, + 0x073fa00a, 0x07000003, 0x072d0003, 0x039b82c6, + 0x069382cb, 0x073aa000, 0x06000004, 0x010b1000, + 0x000b2001, 0x020b3002, 0x010b4003, 0x020b5004, + 0x030b6005, 0x010b7006, 0x069382e6, 0x07602818, + 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, + 0x070000ff, 0x007a0101, 0x07500000, 0x000b8001, + 0x04780102, 0x07ffff00, 0x020b9002, 0x009702e3, + 0x063aa020, 0x0700001e, 0x008002ec, 0x063aa020, + 0x06000016, 0x008002ec, 0x029782ea, 0x063aa020, + 0x07000012, 0x008002ec, 0x063aa020, 0x0600001a, + 0x070ff0f6, 0x03687eff, 0x068182ec, 0x06601820, + 0x050f10ff, 0x063f3008, 0x06000008, 0x062d0002, + 0x01800260, 0x04007013, 0x05a00466, 0x007a0101, + 0x07050000, 0x07303000, 0x07008890, 0x074d0005, + 0x06006013, 0x072d0003, 0x029b82fd, 0x04938302, 0x073aa000, 0x06000004, 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, 0x020b5004, 0x030b6005, - 0x010b7006, 0x069382e6, 0x07602818, 0x050f80ff, + 0x010b7006, 0x04938316, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x000b8001, 0x04780102, - 0x07ffff00, 0x020b9002, 0x009702e3, 0x063aa020, - 0x0700001e, 0x008002ec, 0x063aa020, 0x06000016, - 0x008002ec, 0x029782ea, 0x063aa020, 0x07000012, - 0x008002ec, 0x063aa020, 0x0600001a, 0x070ff0f6, - 0x03687eff, 0x068182ec, 0x06601820, 0x050f10ff, - 0x063f3008, 0x06000008, 0x062d0002, 0x01800260, - 0x04007013, 0x05a00466, 0x007a0101, 0x07050000, - 0x07303000, 0x07008890, 0x074d0005, 0x06006013, - 0x072d0003, 0x029b82fd, 0x04938302, 0x073aa000, + 0x07ffff00, 0x020b9002, 0x06602220, 0x050f80ff, + 0x022fa019, 0x04001002, 0x04002013, 0x0660281f, + 0x050f80ff, 0x032fa00a, 0x05938328, 0x0500b01e, + 0x0660050b, 0x040f800b, 0x022fa01a, 0x073aa00c, + 0x06000016, 0x07300003, 0x06000008, 0x01800409, + 0x050f801e, 0x022fa01a, 0x073aa00c, 0x07000012, + 0x07300003, 0x06000008, 0x01800409, 0x04007013, + 0x05a00466, 0x007a0101, 0x03070000, 0x04602c1f, + 0x050f80ff, 0x073fa009, 0x06000004, 0x02499008, + 0x0781033c, 0x07303000, 0x07008890, 0x0280033e, + 0x07303000, 0x04008980, 0x05007003, 0x04601620, + 0x050f80ff, 0x073fa009, 0x07000003, 0x03499006, + 0x0781034e, 0x0379ff05, 0x070000ff, 0x06602220, + 0x050f80ff, 0x073fa009, 0x07000003, 0x07780006, + 0x07ffff00, 0x075a0005, 0x074d0005, 0x06006013, + 0x072d0003, 0x019b8350, 0x05938355, 0x073aa000, 0x06000004, 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, 0x020b5004, 0x030b6005, 0x010b7006, - 0x04938316, 0x07602818, 0x050f80ff, 0x012fa809, + 0x0493836b, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x000b8001, 0x04780102, 0x07ffff00, - 0x020b9002, 0x06602220, 0x050f80ff, 0x022fa019, - 0x04001002, 0x04002013, 0x0660281f, 0x050f80ff, - 0x032fa00a, 0x05938328, 0x0500b01e, 0x0660050b, - 0x040f800b, 0x022fa01a, 0x073aa00c, 0x06000016, - 0x07300003, 0x06000008, 0x01800409, 0x050f801e, - 0x022fa01a, 0x073aa00c, 0x07000012, 0x07300003, - 0x06000008, 0x01800409, 0x04007013, 0x05a00466, - 0x007a0101, 0x03070000, 0x04602c1f, 0x050f80ff, - 0x073fa009, 0x06000004, 0x02499008, 0x0781033c, - 0x07303000, 0x07008890, 0x0280033e, 0x07303000, - 0x04008980, 0x05007003, 0x04601620, 0x050f80ff, - 0x073fa009, 0x07000003, 0x03499006, 0x0781034e, - 0x0379ff05, 0x070000ff, 0x06602220, 0x050f80ff, - 0x073fa009, 0x07000003, 0x07780006, 0x07ffff00, - 0x075a0005, 0x074d0005, 0x06006013, 0x072d0003, - 0x019b8350, 0x05938355, 0x073aa000, 0x06000004, - 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, - 0x020b5004, 0x030b6005, 0x010b7006, 0x0493836b, - 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, - 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, - 0x000b8001, 0x04780102, 0x07ffff00, 0x020b9002, - 0x0500b01e, 0x0660050b, 0x04601c20, 0x050f80ff, - 0x032fa021, 0x07f00000, 0x064b0002, 0x02499008, - 0x06810373, 0x0644c002, 0x054b0400, 0x050040ff, - 0x06698104, 0x0581838b, 0x06000013, 0x04001013, - 0x04780102, 0x06000010, 0x06003013, 0x04004013, - 0x06005013, 0x06006013, 0x04007013, 0x00644015, - 0x07820384, 0x04448002, 0x02205008, 0x05938387, - 0x040f800b, 0x03800388, 0x050f801e, 0x032fa042, - 0x04008015, 0x038003cc, 0x046c8004, 0x0581839c, - 0x01208018, 0x06780002, 0x07000003, 0x0581839f, - 0x06003001, 0x06000013, 0x04001013, 0x04004013, - 0x06005013, 0x05938399, 0x040f800b, 0x0380039a, - 0x050f801e, 0x022fa032, 0x038003cc, 0x040fd01f, - 0x06a006f4, 0x03800018, 0x0379ff03, 0x070000ff, - 0x04488002, 0x078103a6, 0x070ff003, 0x04500408, - 0x050080ff, 0x0379ff00, 0x070000ff, 0x06489002, - 0x068103ad, 0x070ff000, 0x04500408, 0x050080ff, - 0x07005003, 0x05004000, 0x06003001, 0x06000013, - 0x04001013, 0x049383b5, 0x040f800b, 0x028003b6, - 0x050f801e, 0x022fa032, 0x07f00000, 0x06602420, - 0x050f80ff, 0x022fa031, 0x07f00000, 0x049383bf, - 0x06600c0b, 0x038003c0, 0x07600c1e, 0x050f80ff, - 0x022fa032, 0x02680608, 0x078103cc, 0x016408ff, - 0x057dfeff, 0x07ffffff, 0x034000ff, 0x045a0407, - 0x010b40ff, 0x06600908, 0x0669f908, 0x049383d0, - 0x027a0008, 0x05000160, 0x038003d2, 0x027a0008, - 0x04000120, 0x070aa0ff, 0x024a2408, 0x037a00ff, - 0x06000080, 0x070000ff, 0x01800409, 0x04007013, - 0x05a00466, 0x007a0101, 0x07030000, 0x07303000, - 0x07008190, 0x06006013, 0x028003e0, 0x072d0003, - 0x009b83e0, 0x049383e5, 0x073aa000, 0x06000004, - 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, - 0x020b5004, 0x030b6005, 0x010b7006, 0x06938401, + 0x020b9002, 0x0500b01e, 0x0660050b, 0x04601c20, + 0x050f80ff, 0x032fa021, 0x07f00000, 0x064b0002, + 0x02499008, 0x06810373, 0x0644c002, 0x054b0400, + 0x050040ff, 0x06698104, 0x0581838b, 0x06000013, + 0x04001013, 0x04780102, 0x06000010, 0x06003013, + 0x04004013, 0x06005013, 0x06006013, 0x04007013, + 0x00644015, 0x07820384, 0x04448002, 0x02205008, + 0x05938387, 0x040f800b, 0x03800388, 0x050f801e, + 0x032fa042, 0x04008015, 0x038003cc, 0x046c8004, + 0x0581839c, 0x01208018, 0x06780002, 0x07000003, + 0x0581839f, 0x06003001, 0x06000013, 0x04001013, + 0x04004013, 0x06005013, 0x05938399, 0x040f800b, + 0x0380039a, 0x050f801e, 0x022fa032, 0x038003cc, + 0x040fd01f, 0x06a006fb, 0x03800018, 0x0379ff03, + 0x070000ff, 0x04488002, 0x078103a6, 0x070ff003, + 0x04500408, 0x050080ff, 0x0379ff00, 0x070000ff, + 0x06489002, 0x068103ad, 0x070ff000, 0x04500408, + 0x050080ff, 0x07005003, 0x05004000, 0x06003001, + 0x06000013, 0x04001013, 0x049383b5, 0x040f800b, + 0x028003b6, 0x050f801e, 0x022fa032, 0x07f00000, + 0x06602420, 0x050f80ff, 0x022fa031, 0x07f00000, + 0x049383bf, 0x06600c0b, 0x038003c0, 0x07600c1e, + 0x050f80ff, 0x022fa032, 0x02680608, 0x078103cc, + 0x016408ff, 0x057dfeff, 0x07ffffff, 0x034000ff, + 0x045a0407, 0x010b40ff, 0x06600908, 0x0669f908, + 0x049383d0, 0x027a0008, 0x05000160, 0x038003d2, + 0x027a0008, 0x04000120, 0x070aa0ff, 0x024a2408, + 0x037a00ff, 0x06000080, 0x070000ff, 0x01800409, + 0x04007013, 0x05a00466, 0x007a0101, 0x07030000, + 0x07303000, 0x07008190, 0x06006013, 0x028003e0, + 0x072d0003, 0x009b83e0, 0x049383e5, 0x073aa000, + 0x06000004, 0x010b1000, 0x000b2001, 0x020b3002, + 0x010b4003, 0x020b5004, 0x030b6005, 0x010b7006, + 0x06938401, 0x07602818, 0x050f80ff, 0x012fa809, + 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, + 0x07500000, 0x000b8001, 0x04780102, 0x07ffff00, + 0x020b9002, 0x073ff000, 0x06000007, 0x029703fe, + 0x037a00ff, 0x06000080, 0x070aa0ff, 0x062d0002, + 0x01800260, 0x073ff000, 0x07000003, 0x01970406, + 0x037a00ff, 0x06000080, 0x070aa0ff, 0x062d0002, + 0x01800260, 0x070ff0f6, 0x03687eff, 0x07818409, + 0x0793840f, 0x040f100b, 0x00800410, 0x050f101e, + 0x070f3000, 0x062d0002, 0x01800260, 0x073aa000, + 0x06000002, 0x072d0003, 0x029b8415, 0x070ff0f6, + 0x036830ff, 0x07818417, 0x070ff0f6, 0x036830ff, + 0x0681841a, 0x0660301f, 0x070f00ff, 0x0693842f, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, - 0x000b8001, 0x04780102, 0x07ffff00, 0x020b9002, - 0x073ff000, 0x06000007, 0x029703fe, 0x037a00ff, - 0x06000080, 0x070aa0ff, 0x062d0002, 0x01800260, - 0x073ff000, 0x07000003, 0x01970406, 0x037a00ff, - 0x06000080, 0x070aa0ff, 0x062d0002, 0x01800260, - 0x070ff0f6, 0x03687eff, 0x07818409, 0x0793840f, - 0x040f100b, 0x00800410, 0x050f101e, 0x070f3000, - 0x062d0002, 0x01800260, 0x073aa000, 0x06000002, - 0x072d0003, 0x029b8415, 0x070ff0f6, 0x036830ff, - 0x07818417, 0x070ff0f6, 0x036830ff, 0x0681841a, - 0x0660301f, 0x070f00ff, 0x0693842f, 0x07602818, - 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, - 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, - 0x04780102, 0x07ffff00, 0x020b0002, 0x07300c00, - 0x07000005, 0x00800431, 0x07300c00, 0x07000005, - 0x070f3000, 0x062d0002, 0x01800260, 0x05474021, - 0x04602620, 0x050f80ff, 0x053fa809, 0x07000003, - 0x06780007, 0x07ffff00, 0x0481043d, 0x03455021, - 0x04602a20, 0x050f80ff, 0x063fa019, 0x06000002, - 0x06003013, 0x01497021, 0x07818455, 0x04601620, - 0x050f80ff, 0x053fa809, 0x06000001, 0x0379ff03, - 0x070000ff, 0x07420003, 0x04600220, 0x050f80ff, - 0x012fa809, 0x040fe001, 0x0186045a, 0x03200009, - 0x0760141b, 0x050f80ff, 0x073fa009, 0x06000001, - 0x04008013, 0x0660181f, 0x050f80ff, 0x022fa04a, - 0x01800263, 0x012080c0, 0x0600901f, 0x05002021, - 0x06a006e0, 0x01800260, 0x06489076, 0x05810463, - 0x02200020, 0x00800464, 0x03200000, 0x06006075, - 0x0180046c, 0x07489021, 0x0581046a, 0x03200030, - 0x0080046b, 0x03200011, 0x0600601f, 0x07a005ac, - 0x05600406, 0x050f80ff, 0x053fa809, 0x06000002, - 0x07c00000, 0x04600875, 0x050f80ff, 0x032fa039, + 0x060af001, 0x04780102, 0x07ffff00, 0x020b0002, + 0x07300c00, 0x07000005, 0x00800431, 0x07300c00, + 0x07000005, 0x070f3000, 0x062d0002, 0x01800260, + 0x05474021, 0x04602620, 0x050f80ff, 0x053fa809, + 0x07000003, 0x06780007, 0x07ffff00, 0x0481043d, + 0x03455021, 0x04602a20, 0x050f80ff, 0x063fa019, + 0x06000002, 0x06003013, 0x01497021, 0x07818455, + 0x04601620, 0x050f80ff, 0x053fa809, 0x06000001, + 0x0379ff03, 0x070000ff, 0x07420003, 0x04600220, + 0x050f80ff, 0x012fa809, 0x040fe001, 0x0186045a, + 0x03200009, 0x0760141b, 0x050f80ff, 0x073fa009, + 0x06000001, 0x04008013, 0x0660181f, 0x050f80ff, + 0x022fa04a, 0x01800263, 0x012080c0, 0x0600901f, + 0x05002021, 0x07a006e7, 0x01800260, 0x06489076, + 0x05810463, 0x02200020, 0x00800464, 0x03200000, + 0x06006075, 0x0180046c, 0x07489021, 0x0581046a, + 0x03200030, 0x0080046b, 0x03200011, 0x0600601f, + 0x06a005b3, 0x05600406, 0x050f80ff, 0x053fa809, + 0x06000002, 0x07c00000, 0x04600875, 0x050f80ff, + 0x032fa039, 0x07780000, 0x02800040, 0x037c00ff, + 0x03800000, 0x0481047c, 0x02075013, 0x008004a4, 0x03076000, 0x0107b005, 0x01018006, 0x0448b076, - 0x0781847e, 0x06602475, 0x050f80ff, 0x053fa811, - 0x0700003c, 0x00077013, 0x050fe078, 0x0386849a, - 0x04a0049e, 0x0092049d, 0x060ff0fb, 0x00d00485, - 0x0080048a, 0x0180048d, 0x01800490, 0x01800493, - 0x01800496, 0x072d0030, 0x029b848a, 0x0280052f, - 0x072d00c0, 0x039b848d, 0x0280052f, 0x072d0300, - 0x039b8490, 0x0280052f, 0x072d0c00, 0x039b8493, - 0x0280052f, 0x033d0000, 0x07000003, 0x039b8496, - 0x0280052f, 0x040fd075, 0x050fd078, 0x06a006f4, - 0x0380001d, 0x048b049e, 0x03385000, 0x07030000, + 0x06818485, 0x06602475, 0x050f80ff, 0x053fa811, + 0x0700003c, 0x00077013, 0x050fe078, 0x028684a1, + 0x05a004a5, 0x009204a4, 0x060ff0fb, 0x00d0048c, + 0x00800491, 0x00800494, 0x00800497, 0x0180049a, + 0x0080049d, 0x072d0030, 0x029b8491, 0x03800536, + 0x072d00c0, 0x029b8494, 0x03800536, 0x072d0300, + 0x029b8497, 0x03800536, 0x072d0c00, 0x039b849a, + 0x03800536, 0x033d0000, 0x07000003, 0x029b849d, + 0x03800536, 0x040fd075, 0x050fd078, 0x06a006fb, + 0x0380001d, 0x058b04a5, 0x03385000, 0x07030000, 0x05600818, 0x050f80ff, 0x032fa009, 0x07f00000, - 0x054b0400, 0x0308a0ff, 0x029884ad, 0x04693e76, - 0x076c0aff, 0x068184ad, 0x07288200, 0x008004b0, + 0x054b0400, 0x0308a0ff, 0x039884b4, 0x04693e76, + 0x076c0aff, 0x078184b4, 0x07288200, 0x018004b7, 0x0179fe00, 0x070000ff, 0x010880ff, 0x0560087b, 0x050f80ff, 0x012fa809, 0x0609f001, 0x0448b076, - 0x048104df, 0x05601c7b, 0x050f80ff, 0x002fa819, - 0x02790076, 0x03010000, 0x068184d5, 0x02025001, - 0x06483001, 0x048104d5, 0x04600475, 0x050f80ff, + 0x048104e6, 0x05601c7b, 0x050f80ff, 0x002fa819, + 0x02790076, 0x03010000, 0x068184dc, 0x02025001, + 0x06483001, 0x048104dc, 0x04600475, 0x050f80ff, 0x053fa809, 0x06000002, 0x07f00000, 0x054b0405, 0x05780105, 0x07ffff00, 0x075a0005, 0x050fd005, 0x040fd07a, 0x06602475, 0x050f80ff, 0x053fa811, 0x0700003c, 0x06306002, 0x05000430, 0x04600475, - 0x050f80ff, 0x053fa812, 0x06000002, 0x008004df, + 0x050f80ff, 0x053fa812, 0x06000002, 0x008004e6, 0x02080002, 0x01081003, 0x064b0001, 0x00082001, 0x02083001, 0x02079001, 0x0207a001, 0x00084013, - 0x0207f013, 0x0280051f, 0x06485076, 0x07810500, + 0x0207f013, 0x02800526, 0x06485076, 0x06810507, 0x02465076, 0x06601875, 0x050f80ff, 0x073fa021, 0x0600003e, 0x070ff07d, 0x0450047c, 0x050f80ff, - 0x002fa819, 0x048b04ea, 0x02080001, 0x00081002, - 0x01082003, 0x03079003, 0x04487076, 0x048104f8, - 0x00498076, 0x01a18527, 0x04605875, 0x050f80ff, - 0x032fa009, 0x03083000, 0x018004f9, 0x0208307a, - 0x0340007e, 0x0642007f, 0x0681050e, 0x070ff07e, - 0x05a00184, 0x0092850e, 0x02800526, 0x078b0500, + 0x002fa819, 0x048b04f1, 0x02080001, 0x00081002, + 0x01082003, 0x03079003, 0x04487076, 0x058104ff, + 0x00498076, 0x01a1852e, 0x04605875, 0x050f80ff, + 0x032fa009, 0x03083000, 0x03800500, 0x0208307a, + 0x0340007e, 0x0642007f, 0x06810515, 0x070ff07e, + 0x05a00184, 0x00928515, 0x0380052d, 0x068b0507, 0x06601875, 0x050f80ff, 0x073fa041, 0x0600003e, - 0x07f00000, 0x04487076, 0x0781050c, 0x04605875, + 0x07f00000, 0x04487076, 0x06810513, 0x04605875, 0x050f80ff, 0x032fa009, 0x03083000, 0x00498076, - 0x01a18527, 0x06602875, 0x050f80ff, 0x073fa009, - 0x06000007, 0x0008400e, 0x04487076, 0x0681051f, - 0x0007100e, 0x068b0516, 0x04603e75, 0x050f80ff, - 0x053fa841, 0x06000045, 0x078b051b, 0x02385001, - 0x03010000, 0x03800522, 0x068b051f, 0x03385000, - 0x03010000, 0x04278001, 0x040fe07f, 0x02860526, + 0x01a1852e, 0x06602875, 0x050f80ff, 0x073fa009, + 0x06000007, 0x0008400e, 0x04487076, 0x06810526, + 0x0007100e, 0x078b051d, 0x04603e75, 0x050f80ff, + 0x053fa841, 0x06000045, 0x078b0522, 0x02385001, + 0x03010000, 0x02800529, 0x068b0526, 0x03385000, + 0x03010000, 0x04278001, 0x040fe07f, 0x0386052d, 0x01800160, 0x07c00000, 0x04094013, 0x03073072, 0x07440077, 0x040080fb, 0x006b6108, 0x06009075, - 0x07a006db, 0x07c00000, 0x00683e76, 0x06810534, - 0x0448d076, 0x068105df, 0x03800635, 0x07a006cf, - 0x0080049d, 0x06000013, 0x00201001, 0x00202002, - 0x0778aae7, 0x06000001, 0x06810585, 0x050fb000, - 0x070ff000, 0x03d0053f, 0x03800559, 0x02800554, - 0x0280054f, 0x0280054a, 0x03800544, 0x077800e7, - 0x06000001, 0x07810582, 0x072e7200, 0x030190cc, - 0x0280055d, 0x016880e7, 0x07810582, 0x042e7080, - 0x020190cb, 0x0280055d, 0x016820e7, 0x07810582, - 0x042e7020, 0x030190ca, 0x0280055d, 0x016808e7, - 0x07810582, 0x042e7008, 0x030190c9, 0x0280055d, - 0x016802e7, 0x07810582, 0x042e7002, 0x020190c8, - 0x07480077, 0x07810582, 0x03460077, 0x060ff075, - 0x03860582, 0x06003094, 0x0748a003, 0x05818582, + 0x07a006e2, 0x07c00000, 0x00683e76, 0x0681053b, + 0x0448d076, 0x068105e6, 0x0380063c, 0x06a006d6, + 0x008004a4, 0x06000013, 0x00201001, 0x00202002, + 0x0778aae7, 0x06000001, 0x0681058c, 0x050fb000, + 0x070ff000, 0x02d00546, 0x03800560, 0x0280055b, + 0x03800556, 0x02800551, 0x0380054b, 0x077800e7, + 0x06000001, 0x06810589, 0x072e7200, 0x030190cc, + 0x02800564, 0x016880e7, 0x06810589, 0x042e7080, + 0x020190cb, 0x02800564, 0x016820e7, 0x06810589, + 0x042e7020, 0x030190ca, 0x02800564, 0x016808e7, + 0x06810589, 0x042e7008, 0x030190c9, 0x02800564, + 0x016802e7, 0x06810589, 0x042e7002, 0x020190c8, + 0x07480077, 0x06810589, 0x03460077, 0x060ff075, + 0x02860589, 0x06003094, 0x0748a003, 0x04818589, 0x01683e03, 0x02203010, 0x01540403, 0x014a1a03, - 0x060ff073, 0x00540419, 0x0682058f, 0x07810595, - 0x050010ff, 0x01540403, 0x07820571, 0x06003001, + 0x060ff073, 0x00540419, 0x07820596, 0x0781059c, + 0x050010ff, 0x01540403, 0x07820578, 0x06003001, 0x034a3c03, 0x017a02ff, 0x06000c98, 0x040f8073, 0x070fa0ff, 0x070ff003, 0x06500073, 0x03610072, - 0x045c0473, 0x0481857c, 0x03073072, 0x05394000, + 0x045c0473, 0x04818583, 0x03073072, 0x05394000, 0x07000090, 0x07f00000, 0x06003094, 0x07489003, - 0x04818586, 0x03400000, 0x076c0a00, 0x05818539, - 0x07c00000, 0x060ff073, 0x00540419, 0x0681059b, - 0x07820599, 0x01683e03, 0x02203010, 0x01540403, - 0x014a1a03, 0x0280056d, 0x03610072, 0x00540473, - 0x057dfeff, 0x07ffffff, 0x034000ff, 0x0280056d, - 0x040fd075, 0x040fd073, 0x040fd019, 0x03800582, - 0x040fd075, 0x028006f4, 0x06604e75, 0x050f80ff, + 0x0581858d, 0x03400000, 0x076c0a00, 0x04818540, + 0x07c00000, 0x060ff073, 0x00540419, 0x068105a2, + 0x078205a0, 0x01683e03, 0x02203010, 0x01540403, + 0x014a1a03, 0x03800574, 0x03610072, 0x00540473, + 0x057dfeff, 0x07ffffff, 0x034000ff, 0x03800574, + 0x040fd075, 0x040fd073, 0x040fd019, 0x02800589, + 0x040fd075, 0x028006fb, 0x06604e75, 0x050f80ff, 0x053fa809, 0x06000001, 0x07f00000, 0x07602203, 0x050f80ff, 0x053fa809, 0x06000001, 0x05481003, - 0x05818582, 0x07440077, 0x040080fb, 0x006b6108, - 0x06009075, 0x07a006db, 0x03800582, 0x009785ba, + 0x04818589, 0x07440077, 0x040080fb, 0x006b6108, + 0x06009075, 0x07a006e2, 0x02800589, 0x009785c1, 0x07602418, 0x050f80ff, 0x012fa809, 0x06780001, 0x070000ff, 0x075a0000, 0x05602618, 0x050f80ff, 0x012fa809, 0x060ff001, 0x0569feff, 0x054b08ff, 0x075a0000, 0x05600418, 0x050f80ff, 0x012fa809, - 0x040fe007, 0x008685c1, 0x01204000, 0x028005d6, + 0x040fe007, 0x008685c8, 0x01204000, 0x038005dd, 0x05600e06, 0x050f80ff, 0x073fa009, 0x06000002, 0x07f00000, 0x064d0004, 0x00700104, 0x03010000, - 0x06780004, 0x07ff0000, 0x076c00ff, 0x058185cf, + 0x06780004, 0x07ff0000, 0x076c00ff, 0x048185d6, 0x00700104, 0x03010000, 0x064d0004, 0x05600e06, 0x050f80ff, 0x073fa00a, 0x06000002, 0x07f00000, 0x044b0804, 0x0279ff01, 0x0700ffff, 0x05602618, 0x050f80ff, 0x073fa009, 0x06000001, 0x0279ff02, 0x0700ffff, 0x07c00000, 0x04007075, 0x0448b076, - 0x068105fe, 0x02790076, 0x03010000, 0x058185e7, - 0x06483025, 0x048185fe, 0x06489076, 0x078105eb, - 0x03200030, 0x028005ec, 0x03200011, 0x06006075, + 0x07810605, 0x02790076, 0x03010000, 0x058185ee, + 0x06483025, 0x05818605, 0x06489076, 0x068105f2, + 0x03200030, 0x038005f3, 0x03200011, 0x06006075, 0x05a0046c, 0x007a0101, 0x07060000, 0x07303000, - 0x07008290, 0x02496076, 0x058185f6, 0x06006013, - 0x03800611, 0x02400010, 0x078105f6, 0x06006010, + 0x07008290, 0x02496076, 0x048185fd, 0x06006013, + 0x03800618, 0x02400010, 0x068105fd, 0x06006010, 0x06603675, 0x050f80ff, 0x073fa00a, 0x07000003, - 0x03800611, 0x0600007a, 0x02493076, 0x04818607, + 0x03800618, 0x0600007a, 0x02493076, 0x0481860e, 0x06602e75, 0x050f80ff, 0x032fa009, 0x060ff07a, 0x05500400, 0x070000ff, 0x06473076, 0x06602e75, 0x050f80ff, 0x032fa00a, 0x05a0045f, 0x007a0101, 0x03010000, 0x06303008, 0x05008000, 0x0600600e, - 0x072d0003, 0x019b8611, 0x04938616, 0x073a0000, + 0x072d0003, 0x019b8618, 0x0593861d, 0x073a0000, 0x06000001, 0x050a4000, 0x060a5001, 0x060a6002, 0x050a7003, 0x040a8004, 0x070a9005, 0x050ae006, - 0x0593862d, 0x07602818, 0x050f80ff, 0x012fa809, + 0x04938634, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, 0x04780102, 0x07ffff00, - 0x020b0002, 0x053079a0, 0x0700000f, 0x0280062f, - 0x053079a0, 0x0600000e, 0x06489076, 0x06810632, - 0x06446007, 0x060a0007, 0x062d0002, 0x0080049d, - 0x00683e76, 0x076c0aff, 0x07810677, 0x04007013, - 0x06489076, 0x0681063d, 0x03200030, 0x0280063e, + 0x020b0002, 0x053079a0, 0x0700000f, 0x03800636, + 0x053079a0, 0x0600000e, 0x06489076, 0x07810639, + 0x06446007, 0x060a0007, 0x062d0002, 0x008004a4, + 0x00683e76, 0x076c0aff, 0x0781067e, 0x04007013, + 0x06489076, 0x07810644, 0x03200030, 0x02800645, 0x03200011, 0x06006075, 0x05a0046c, 0x007a0101, 0x03070000, 0x04602c75, 0x050f80ff, 0x053fa809, - 0x06000001, 0x03499003, 0x0781064d, 0x07303000, - 0x07008890, 0x053079a0, 0x0700000c, 0x02800651, + 0x06000001, 0x03499003, 0x06810654, 0x07303000, + 0x07008890, 0x053079a0, 0x0700000c, 0x02800658, 0x07303000, 0x04008980, 0x04307920, 0x0700000c, - 0x074d0005, 0x06006013, 0x072d0003, 0x019b8653, - 0x04938658, 0x073a0000, 0x06000001, 0x050a4000, + 0x074d0005, 0x06006013, 0x072d0003, 0x019b865a, + 0x0593865f, 0x073a0000, 0x06000001, 0x050a4000, 0x060a5001, 0x060a6002, 0x050a7003, 0x040a8004, - 0x070a9005, 0x050ae006, 0x0593866f, 0x07602818, + 0x070a9005, 0x050ae006, 0x04938676, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, 0x04780102, 0x07ffff00, 0x020b0002, 0x007a0107, - 0x07000030, 0x03800671, 0x007a0107, 0x06000020, - 0x06489076, 0x07810674, 0x06446007, 0x060a0007, - 0x062d0002, 0x0080049d, 0x06602e75, 0x050f80ff, + 0x07000030, 0x03800678, 0x007a0107, 0x06000020, + 0x06489076, 0x0781067b, 0x06446007, 0x060a0007, + 0x062d0002, 0x008004a4, 0x06602e75, 0x050f80ff, 0x032fa009, 0x060ff07a, 0x05500400, 0x070000ff, 0x06473076, 0x06602e75, 0x050f80ff, 0x032fa00a, 0x04007075, 0x05a0045f, 0x007a0101, 0x03010000, 0x06303008, 0x07008800, 0x074d0005, 0x06600a75, 0x050f80ff, 0x073fa009, 0x07000003, 0x07f00000, 0x054b0406, 0x045a0404, 0x050040ff, 0x0600600e, - 0x072d0003, 0x009b8691, 0x05938696, 0x073aa000, + 0x072d0003, 0x009b8698, 0x0493869d, 0x073aa000, 0x06000004, 0x050a4000, 0x060a5001, 0x060a6002, 0x050a7003, 0x040a8004, 0x070a9005, 0x050ae006, - 0x049386ad, 0x07602818, 0x050f80ff, 0x012fa809, + 0x059386b4, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, 0x04780102, 0x07ffff00, - 0x020b0002, 0x04307920, 0x0700000f, 0x038006af, + 0x020b0002, 0x04307920, 0x0700000f, 0x028006b6, 0x04307920, 0x0600000e, 0x06307d20, 0x0600000e, - 0x0648c076, 0x048186b5, 0x04307920, 0x0600000e, - 0x06489076, 0x078106b8, 0x06446007, 0x060a0007, - 0x062d0002, 0x0080049d, 0x072d0003, 0x019b86bb, - 0x070ff0f6, 0x03687eff, 0x058186bd, 0x050f2074, - 0x06489076, 0x068106c4, 0x06446007, 0x060a0007, - 0x040070fb, 0x049386c8, 0x066a9007, 0x050f40ff, - 0x062d0002, 0x0080049d, 0x01208060, 0x0600901f, - 0x05002021, 0x028006e0, 0x040080fb, 0x066ae108, - 0x06009075, 0x04002076, 0x028006e0, 0x03201100, - 0x048486d9, 0x06420001, 0x048186d5, 0x028006f7, - 0x020e0008, 0x07c00000, 0x03201100, 0x058486ed, - 0x06420001, 0x048186dc, 0x028006f7, 0x050fd009, - 0x040fd008, 0x03201100, 0x058486e7, 0x06420001, - 0x048186e3, 0x028006f7, 0x007a0102, 0x04000101, + 0x0648c076, 0x048186bc, 0x04307920, 0x0600000e, + 0x06489076, 0x068106bf, 0x06446007, 0x060a0007, + 0x062d0002, 0x008004a4, 0x072d0003, 0x009b86c2, + 0x070ff0f6, 0x03687eff, 0x048186c4, 0x050f2074, + 0x06489076, 0x068106cb, 0x06446007, 0x060a0007, + 0x040070fb, 0x059386cf, 0x066a9007, 0x050f40ff, + 0x062d0002, 0x008004a4, 0x01208060, 0x0600901f, + 0x05002021, 0x038006e7, 0x040080fb, 0x066ae108, + 0x06009075, 0x04002076, 0x038006e7, 0x03201100, + 0x048486e0, 0x06420001, 0x048186dc, 0x038006ff, + 0x020e0008, 0x07c00000, 0x03201100, 0x048486f4, + 0x06420001, 0x048186e3, 0x038006ff, 0x050fd009, + 0x040fd008, 0x03201100, 0x058486ee, 0x06420001, + 0x048186ea, 0x038006ff, 0x007a0102, 0x04000101, 0x05600809, 0x050f80ff, 0x073fa00a, 0x06000001, - 0x020e0008, 0x068406f1, 0x030e0009, 0x07c00000, + 0x020e0008, 0x068406f8, 0x030e0009, 0x07c00000, 0x01011009, 0x052e4300, 0x07c00000, 0x052e400f, - 0x01208090, 0x038006d4, 0x070fc0ff, 0x040f8013, - 0x032fa009, 0x038006fa, 0x05008006, 0x05007005, - 0x06006004, 0x07005003, 0x04004002, 0x06003001, - 0x07c00000, 0xf06a0be7, 0x02800004, 0x00000000, - 0x0000a000, 0x00000621, 0x033d0aaa, 0x070aaaaa, - 0x013d1aaa, 0x070aaaaa, 0x008c041c, 0x048e04cb, - 0x058d04d7, 0x028f053e, 0x02910013, 0x040f7029, - 0x02860013, 0x066c001f, 0x07810559, 0x066c0a1f, - 0x06810586, 0x040f702f, 0x0386001d, 0x06000010, - 0x050fb000, 0x066c0079, 0x068105c7, 0x0398001d, - 0x03400000, 0x076c0a00, 0x04818016, 0x07960021, - 0x05998021, 0x06a0009e, 0x02800008, 0x050f7012, - 0x04a683f7, 0x04908008, 0x030150e1, 0x06780015, - 0x07fffff0, 0x06810064, 0x0079fe15, 0x031fffff, - 0x030160ff, 0x064bd415, 0x03d0002d, 0x0180019f, - 0x038000d4, 0x03800035, 0x02800040, 0x0380004b, - 0x03800056, 0x02800076, 0x02800076, 0x040f7025, - 0x01868039, 0x02026016, 0x0280003d, 0x06600025, - 0x050f80ff, 0x073fa00a, 0x0600000b, 0x02025016, - 0x02400029, 0x03800078, 0x050f7021, 0x01868044, - 0x00022016, 0x03800048, 0x07600021, 0x050f80ff, - 0x073fa00a, 0x0600000b, 0x00021016, 0x02400029, - 0x03800078, 0x040f7023, 0x0086804f, 0x00024016, - 0x03800053, 0x06600023, 0x050f80ff, 0x073fa00a, - 0x0600000b, 0x02023016, 0x02400029, 0x03800078, - 0x04600816, 0x050f80ff, 0x012fa839, 0x06780004, - 0x07ffff00, 0x037c00ff, 0x05000700, 0x06810062, - 0x0448e001, 0x04818062, 0x07a000bb, 0x03800078, - 0x040fd016, 0x03800078, 0x0279f015, 0x07ffffff, - 0x04818076, 0x060ff015, 0x03d00069, 0x03800071, - 0x02800073, 0x02800076, 0x02800076, 0x02800076, - 0x02800076, 0x02800076, 0x02800076, 0x03e00000, - 0x02800008, 0x04908073, 0x010140e1, 0x03800078, - 0x060fc010, 0x06a00619, 0x02800008, 0x072e4800, - 0x03016011, 0x0186807e, 0x060fc010, 0x07c00000, - 0x00011010, 0x0647f016, 0x072d000c, 0x009b8080, - 0x04600816, 0x050f80ff, 0x012fa839, 0x0249f001, - 0x04818097, 0x06780004, 0x07ffff00, 0x037c00ff, - 0x07000300, 0x0481809b, 0x0448e001, 0x0481809b, - 0x0079c101, 0x07ffffff, 0x007a0b01, 0x03800000, - 0x04600816, 0x050f80ff, 0x012fa80a, 0x062d0008, - 0x038000bb, 0x062d0008, 0x00011016, 0x052e4c00, - 0x07c00000, 0x062d0008, 0x040fd016, 0x07c00000, - 0x030160eb, 0x0249f016, 0x0481807f, 0x04600816, - 0x050f80ff, 0x012fa839, 0x01494005, 0x068100b6, - 0x06783f01, 0x03800060, 0x027c0501, 0x02800020, - 0x0581809c, 0x040f7025, 0x018680af, 0x02026016, - 0x028000b3, 0x06600025, 0x050f80ff, 0x073fa00a, - 0x0600000b, 0x02025016, 0x02400029, 0x07c00000, - 0x06783f01, 0x03800060, 0x007c0b01, 0x03800000, - 0x0581809c, 0x06601807, 0x070030ff, 0x050f80ff, - 0x012fa809, 0x050f8003, 0x073fa00a, 0x0600000b, - 0x040f7001, 0x038600c9, 0x04600201, 0x050f80ff, - 0x073fa00a, 0x0600000b, 0x07c00000, 0x050f702e, - 0x008680ce, 0x0002e016, 0x0202f016, 0x028000d3, - 0x0760002e, 0x050f80ff, 0x073fa00a, 0x0600000b, - 0x0002e016, 0x07c00000, 0x0430e004, 0x03080000, - 0x06601216, 0x050f80ff, 0x073fa011, 0x07000005, - 0x07f00000, 0x0660000b, 0x050f80ff, 0x022fa019, - 0x0700c000, 0x0279ff02, 0x0700ffff, 0x00017002, - 0x0760280a, 0x050f80ff, 0x012fa809, 0x0079fe01, - 0x0700ffff, 0x055c0417, 0x0781818d, 0x0400d010, - 0x0548e00c, 0x078100ed, 0x0245600e, 0x0548400c, - 0x078100f5, 0x07300000, 0x05001000, 0x04602c16, - 0x050f80ff, 0x032fa00a, 0x0644900e, 0x0560100a, - 0x050f80ff, 0x032fa039, 0x02015002, 0x064b0015, - 0x0379ff03, 0x070000ff, 0x01018003, 0x05420418, - 0x07818100, 0x0045700e, 0x0179fe06, 0x070000ff, - 0x0700f0ff, 0x06006010, 0x04007010, 0x0760280a, + 0x04008013, 0x026b2108, 0x038006db, 0x070fc0ff, + 0x040f8013, 0x032fa009, 0x00800702, 0x05008006, + 0x05007005, 0x06006004, 0x07005003, 0x04004002, + 0x06003001, 0x07c00000, 0xd3228c85, 0x02800004, + 0x00000000, 0x0000a000, 0x0000062a, 0x033d0aaa, + 0x070aaaaa, 0x013d1aaa, 0x070aaaaa, 0x008c041c, + 0x058e04cc, 0x058d04d8, 0x038f0541, 0x02910013, + 0x040f7029, 0x02860013, 0x066c001f, 0x0781055c, + 0x066c0a1f, 0x0781058b, 0x040f702f, 0x0386001d, + 0x06000010, 0x050fb000, 0x066c0079, 0x068105ce, + 0x0398001d, 0x03400000, 0x076c0a00, 0x04818016, + 0x07960021, 0x05998021, 0x06a0009e, 0x02800008, + 0x050f7012, 0x04a683f7, 0x04908008, 0x030150e1, + 0x06780015, 0x07fffff0, 0x06810064, 0x0079fe15, + 0x031fffff, 0x030160ff, 0x064bd415, 0x03d0002d, + 0x0180019f, 0x038000d4, 0x03800035, 0x02800040, + 0x0380004b, 0x03800056, 0x02800076, 0x02800076, + 0x040f7025, 0x01868039, 0x02026016, 0x0280003d, + 0x06600025, 0x050f80ff, 0x073fa00a, 0x0600000b, + 0x02025016, 0x02400029, 0x03800078, 0x050f7021, + 0x01868044, 0x00022016, 0x03800048, 0x07600021, + 0x050f80ff, 0x073fa00a, 0x0600000b, 0x00021016, + 0x02400029, 0x03800078, 0x040f7023, 0x0086804f, + 0x00024016, 0x03800053, 0x06600023, 0x050f80ff, + 0x073fa00a, 0x0600000b, 0x02023016, 0x02400029, + 0x03800078, 0x04600816, 0x050f80ff, 0x012fa839, + 0x06780004, 0x07ffff00, 0x037c00ff, 0x05000700, + 0x06810062, 0x0448e001, 0x04818062, 0x07a000bb, + 0x03800078, 0x040fd016, 0x03800078, 0x0279f015, + 0x07ffffff, 0x04818076, 0x060ff015, 0x03d00069, + 0x03800071, 0x02800073, 0x02800076, 0x02800076, + 0x02800076, 0x02800076, 0x02800076, 0x02800076, + 0x03e00000, 0x02800008, 0x04908073, 0x010140e1, + 0x03800078, 0x060fc010, 0x07a00622, 0x02800008, + 0x072e4800, 0x03016011, 0x0186807e, 0x060fc010, + 0x07c00000, 0x00011010, 0x0647f016, 0x072d000c, + 0x009b8080, 0x04600816, 0x050f80ff, 0x012fa839, + 0x0249f001, 0x04818097, 0x06780004, 0x07ffff00, + 0x037c00ff, 0x07000300, 0x0481809b, 0x0448e001, + 0x0481809b, 0x0079c101, 0x07ffffff, 0x007a0b01, + 0x03800000, 0x04600816, 0x050f80ff, 0x012fa80a, + 0x062d0008, 0x038000bb, 0x062d0008, 0x00011016, + 0x052e4c00, 0x07c00000, 0x062d0008, 0x040fd016, + 0x07c00000, 0x030160eb, 0x0249f016, 0x0481807f, + 0x04600816, 0x050f80ff, 0x012fa839, 0x01494005, + 0x068100b6, 0x06783f01, 0x03800060, 0x027c0501, + 0x02800020, 0x0581809c, 0x040f7025, 0x018680af, + 0x02026016, 0x028000b3, 0x06600025, 0x050f80ff, + 0x073fa00a, 0x0600000b, 0x02025016, 0x02400029, + 0x07c00000, 0x06783f01, 0x03800060, 0x007c0b01, + 0x03800000, 0x0581809c, 0x06601807, 0x070030ff, + 0x050f80ff, 0x012fa809, 0x050f8003, 0x073fa00a, + 0x0600000b, 0x040f7001, 0x038600c9, 0x04600201, + 0x050f80ff, 0x073fa00a, 0x0600000b, 0x07c00000, + 0x050f702e, 0x008680ce, 0x0002e016, 0x0202f016, + 0x028000d3, 0x0760002e, 0x050f80ff, 0x073fa00a, + 0x0600000b, 0x0002e016, 0x07c00000, 0x0430e004, + 0x03080000, 0x06601216, 0x050f80ff, 0x073fa011, + 0x07000005, 0x07f00000, 0x0660000b, 0x050f80ff, + 0x022fa019, 0x0700c000, 0x0279ff02, 0x0700ffff, + 0x00017002, 0x0760280a, 0x050f80ff, 0x012fa809, + 0x0079fe01, 0x0700ffff, 0x055c0417, 0x0781818d, + 0x0400d010, 0x0548e00c, 0x078100ed, 0x0245600e, + 0x0548400c, 0x078100f5, 0x07300000, 0x05001000, + 0x04602c16, 0x050f80ff, 0x032fa00a, 0x0644900e, + 0x0560100a, 0x050f80ff, 0x032fa039, 0x02015002, + 0x064b0015, 0x0379ff03, 0x070000ff, 0x01018003, + 0x05420418, 0x07818100, 0x0045700e, 0x0179fe06, + 0x070000ff, 0x0700f0ff, 0x06006010, 0x04007010, + 0x0760280a, 0x050f80ff, 0x073fa009, 0x06000004, + 0x07f00000, 0x064b8408, 0x040080ce, 0x04500408, 0x050f80ff, 0x073fa009, 0x06000004, 0x07f00000, - 0x064b8408, 0x040080ce, 0x04500408, 0x050f80ff, - 0x073fa009, 0x06000004, 0x07f00000, 0x04603216, - 0x050f80ff, 0x063fa02a, 0x06000002, 0x0769ff00, - 0x076c9000, 0x0481011a, 0x076cd400, 0x0781811b, - 0x0444b00e, 0x0368060f, 0x01d0011d, 0x0080013e, - 0x01800139, 0x00800140, 0x01800121, 0x056cea00, - 0x0781818d, 0x0748300f, 0x05810135, 0x0560260a, - 0x050f80ff, 0x073fa009, 0x06000002, 0x06005010, - 0x06006010, 0x04602616, 0x050f80ff, 0x063fa01a, - 0x06000002, 0x07f00000, 0x0760180a, 0x050f80ff, - 0x053fa812, 0x06000002, 0x07f00000, 0x027a030d, - 0x03080000, 0x0444b00e, 0x01800139, 0x007a010e, - 0x07001800, 0x076c3000, 0x03a182e4, 0x07818172, - 0x0220f002, 0x01800147, 0x0120d081, 0x007a010e, - 0x05001000, 0x076c3000, 0x03a182e4, 0x07818172, - 0x0220f004, 0x0548400c, 0x0581014e, 0x0220f00e, - 0x0444100d, 0x0748600c, 0x0581014e, 0x0444200d, - 0x056cea00, 0x05810153, 0x0548700c, 0x05810153, - 0x0644900d, 0x024a1815, 0x004a2c15, 0x04500415, - 0x070030ff, 0x0700000f, 0x017a0100, 0x05004000, - 0x0400100e, 0x05304000, 0x07000030, 0x04002010, - 0x0600500d, 0x0700600a, 0x0400700b, 0x05008017, - 0x06600616, 0x050f80ff, 0x022fa04a, 0x0448b00e, - 0x05818056, 0x050f7027, 0x0286816b, 0x00028016, - 0x0180016f, 0x07600027, 0x050f80ff, 0x073fa00a, - 0x0600000b, 0x00027016, 0x02400029, 0x03800078, - 0x040fd016, 0x050fd00a, 0x0560100a, 0x050f80ff, - 0x032fa009, 0x05780100, 0x07ffff00, 0x017a0700, - 0x06000001, 0x050f80ff, 0x032fa00a, 0x07f00000, - 0x0760140a, 0x050f80ff, 0x022fa019, 0x05780100, - 0x07ffff00, 0x076a0500, 0x00202001, 0x0560260a, - 0x050f80ff, 0x012fa809, 0x06003010, 0x0760140a, - 0x050f80ff, 0x032fa022, 0x00800197, 0x050fd00a, - 0x0560100a, 0x050f80ff, 0x032fa009, 0x0379ff00, - 0x0380ffff, 0x0145b000, 0x0560100a, 0x050f80ff, - 0x032fa00a, 0x07303000, 0x07000030, 0x04600e16, - 0x050f80ff, 0x053fa80a, 0x06000001, 0x06a003e6, - 0x03800078, 0x06600616, 0x050f80ff, 0x012fa841, - 0x0079fe01, 0x070000ff, 0x070090ff, 0x0400d010, - 0x0600a007, 0x0400b008, 0x0560100a, 0x050f80ff, - 0x032fa009, 0x0769ff00, 0x0660000b, 0x050f80ff, - 0x073fa009, 0x07000006, 0x07f00000, 0x04602c16, - 0x050f80ff, 0x053fa809, 0x0600000b, 0x07479017, - 0x056c0e09, 0x058101bd, 0x076c0c09, 0x058101bd, - 0x050fd009, 0x06a00619, 0x03800078, 0x05601c0a, - 0x050f80ff, 0x053fa809, 0x06000007, 0x07f00000, - 0x074b000f, 0x0748300f, 0x058101ca, 0x07446000, - 0x04602c16, 0x050f80ff, 0x053fa80a, 0x0600000b, - 0x0368060f, 0x01d001cc, 0x008001d0, 0x0180024b, - 0x00800208, 0x0180027d, 0x0748f00f, 0x0581027b, - 0x0530e042, 0x02080002, 0x0578400f, 0x06000020, - 0x017c40ff, 0x06000020, 0x068181dc, 0x0748500c, - 0x048101dc, 0x03459017, 0x04602c16, 0x050f80ff, - 0x053fa80a, 0x0600000b, 0x0569800f, 0x078181e8, - 0x0548d00f, 0x068181e5, 0x0644a00e, 0x056c0e09, - 0x058101f3, 0x0080027f, 0x050010ff, 0x046c8001, - 0x078181fa, 0x056c0e09, 0x058101f3, 0x0560200a, - 0x050f80ff, 0x012fa809, 0x04780101, 0x07ffff00, - 0x0481027f, 0x01498017, 0x058101f6, 0x0644900e, - 0x06300001, 0x04000410, 0x05a00295, 0x03800035, - 0x026d0001, 0x048101fd, 0x0180027d, 0x0530e042, - 0x02080002, 0x01498017, 0x04810202, 0x0644900e, + 0x04603216, 0x050f80ff, 0x063fa02a, 0x06000002, + 0x0769ff00, 0x076c9000, 0x0481011a, 0x076cd400, + 0x0781811b, 0x0444b00e, 0x0368060f, 0x01d0011d, + 0x0080013e, 0x01800139, 0x00800140, 0x01800121, + 0x056cea00, 0x0781818d, 0x0748300f, 0x05810135, + 0x0560260a, 0x050f80ff, 0x073fa009, 0x06000002, + 0x06005010, 0x06006010, 0x04602616, 0x050f80ff, + 0x063fa01a, 0x06000002, 0x07f00000, 0x0760180a, + 0x050f80ff, 0x053fa812, 0x06000002, 0x07f00000, + 0x027a030d, 0x03080000, 0x0444b00e, 0x01800139, + 0x007a010e, 0x07001800, 0x076c3000, 0x03a182e4, + 0x07818172, 0x0220f002, 0x01800147, 0x0120d081, + 0x007a010e, 0x05001000, 0x076c3000, 0x03a182e4, + 0x07818172, 0x0220f004, 0x0548400c, 0x0581014e, + 0x0220f00e, 0x0444100d, 0x0748600c, 0x0581014e, + 0x0444200d, 0x056cea00, 0x05810153, 0x0548700c, + 0x05810153, 0x0644900d, 0x024a1815, 0x004a2c15, + 0x04500415, 0x070030ff, 0x0700000f, 0x017a0100, + 0x05004000, 0x0400100e, 0x05304000, 0x07000030, + 0x04002010, 0x0600500d, 0x0700600a, 0x0400700b, + 0x05008017, 0x06600616, 0x050f80ff, 0x022fa04a, + 0x0448b00e, 0x05818056, 0x050f7027, 0x0286816b, + 0x00028016, 0x0180016f, 0x07600027, 0x050f80ff, + 0x073fa00a, 0x0600000b, 0x00027016, 0x02400029, + 0x03800078, 0x040fd016, 0x050fd00a, 0x0560100a, + 0x050f80ff, 0x032fa009, 0x05780100, 0x07ffff00, + 0x017a0700, 0x06000001, 0x050f80ff, 0x032fa00a, + 0x07f00000, 0x0760140a, 0x050f80ff, 0x022fa019, + 0x05780100, 0x07ffff00, 0x076a0500, 0x00202001, + 0x0560260a, 0x050f80ff, 0x012fa809, 0x06003010, + 0x0760140a, 0x050f80ff, 0x032fa022, 0x00800197, + 0x050fd00a, 0x0560100a, 0x050f80ff, 0x032fa009, + 0x0379ff00, 0x0380ffff, 0x0145b000, 0x0560100a, + 0x050f80ff, 0x032fa00a, 0x07303000, 0x07000030, + 0x04600e16, 0x050f80ff, 0x053fa80a, 0x06000001, + 0x06a003e6, 0x03800078, 0x06600616, 0x050f80ff, + 0x012fa841, 0x0079fe01, 0x070000ff, 0x070090ff, + 0x0400d010, 0x0600a007, 0x0400b008, 0x0560100a, + 0x050f80ff, 0x032fa009, 0x0769ff00, 0x0660000b, + 0x050f80ff, 0x073fa009, 0x07000006, 0x07f00000, + 0x04602c16, 0x050f80ff, 0x053fa809, 0x0600000b, + 0x07479017, 0x056c0e09, 0x058101bd, 0x076c0c09, + 0x058101bd, 0x050fd009, 0x07a00622, 0x03800078, + 0x05601c0a, 0x050f80ff, 0x053fa809, 0x06000007, + 0x07f00000, 0x074b000f, 0x0748300f, 0x058101ca, + 0x07446000, 0x04602c16, 0x050f80ff, 0x053fa80a, + 0x0600000b, 0x0368060f, 0x01d001cc, 0x008001d0, + 0x0180024b, 0x00800208, 0x0180027d, 0x0748f00f, + 0x0581027b, 0x0530e042, 0x02080002, 0x0578400f, + 0x06000020, 0x017c40ff, 0x06000020, 0x068181dc, + 0x0748500c, 0x048101dc, 0x03459017, 0x04602c16, + 0x050f80ff, 0x053fa80a, 0x0600000b, 0x0569800f, + 0x078181e8, 0x0548d00f, 0x068181e5, 0x0644a00e, + 0x056c0e09, 0x058101f3, 0x0080027f, 0x050010ff, + 0x046c8001, 0x078181fa, 0x056c0e09, 0x058101f3, + 0x0560200a, 0x050f80ff, 0x012fa809, 0x04780101, + 0x07ffff00, 0x0481027f, 0x01498017, 0x058101f6, + 0x0644900e, 0x06300001, 0x04000410, 0x05a00295, + 0x03800035, 0x026d0001, 0x048101fd, 0x0180027d, + 0x0530e042, 0x02080002, 0x01498017, 0x04810202, + 0x0644900e, 0x05a002b2, 0x06818279, 0x07300003, + 0x05000430, 0x05a00295, 0x03800056, 0x0630e445, + 0x02080002, 0x056c0e09, 0x0681827f, 0x0748f00f, + 0x04810215, 0x0569800f, 0x0781827d, 0x0548d00f, + 0x07818217, 0x007a010e, 0x06000010, 0x0180021d, + 0x0246a00e, 0x0180021d, 0x0246a00e, 0x0748500f, + 0x0581021d, 0x0748500c, 0x0581021d, 0x03459017, + 0x0349a017, 0x07818224, 0x04602c16, 0x050f80ff, + 0x053fa80a, 0x0600000b, 0x0180022e, 0x0747a017, + 0x05001017, 0x0760220a, 0x050f80ff, 0x073fa009, + 0x06000001, 0x07f00000, 0x04602c16, 0x050f80ff, + 0x012fa812, 0x01498017, 0x05810233, 0x0644900e, + 0x0279ff0e, 0x07ffffeb, 0x0448700e, 0x04810245, + 0x06601216, 0x050f80ff, 0x012fa809, 0x07f00000, + 0x04600201, 0x050f80ff, 0x012fa809, 0x07f00000, + 0x06601401, 0x050f80ff, 0x012fa809, 0x060ff001, + 0x075a00ff, 0x04810245, 0x0279ff0e, 0x07ffffeb, 0x05a002b2, 0x06818279, 0x07300003, 0x05000430, - 0x05a00295, 0x03800056, 0x0630e445, 0x02080002, - 0x056c0e09, 0x0681827f, 0x0748f00f, 0x04810215, - 0x0569800f, 0x0781827d, 0x0548d00f, 0x07818217, - 0x007a010e, 0x06000010, 0x0180021d, 0x0246a00e, - 0x0180021d, 0x0246a00e, 0x0748500f, 0x0581021d, - 0x0748500c, 0x0581021d, 0x03459017, 0x0349a017, - 0x07818224, 0x04602c16, 0x050f80ff, 0x053fa80a, - 0x0600000b, 0x0180022e, 0x0747a017, 0x05001017, - 0x0760220a, 0x050f80ff, 0x073fa009, 0x06000001, - 0x07f00000, 0x04602c16, 0x050f80ff, 0x012fa812, - 0x01498017, 0x05810233, 0x0644900e, 0x0279ff0e, - 0x07ffffeb, 0x0448700e, 0x04810245, 0x06601216, - 0x050f80ff, 0x012fa809, 0x07f00000, 0x04600201, - 0x050f80ff, 0x012fa809, 0x07f00000, 0x06601401, - 0x050f80ff, 0x012fa809, 0x060ff001, 0x075a00ff, - 0x04810245, 0x0279ff0e, 0x07ffffeb, 0x05a002b2, - 0x06818279, 0x07300003, 0x05000430, 0x05a00295, - 0x03800056, 0x056c0e09, 0x0681827f, 0x0430e001, - 0x02080002, 0x0644000d, 0x0447400d, 0x0748f00f, - 0x05810265, 0x0569800f, 0x0781827d, 0x0578400f, - 0x06000020, 0x017c40ff, 0x06000020, 0x0681825e, - 0x0748500c, 0x0481025e, 0x03459017, 0x01800265, - 0x0049100d, 0x07818265, 0x0548700c, 0x07818265, - 0x07486000, 0x07818265, 0x0045400d, 0x04602c16, - 0x050f80ff, 0x053fa80a, 0x0600000b, 0x05a002b2, - 0x06818279, 0x01498017, 0x04810275, 0x0644900e, - 0x0444100d, 0x0630000e, 0x04000420, 0x0748600c, - 0x05810277, 0x0444200d, 0x01800277, 0x06300004, - 0x04000420, 0x05a00295, 0x03800035, 0x02200010, - 0x00800280, 0x02200001, 0x00800280, 0x03200006, - 0x00800280, 0x02200004, 0x040fd016, 0x050fd00a, - 0x050fd000, 0x0760140a, 0x050f80ff, 0x032fa00a, - 0x07f00000, 0x04600e16, 0x050f80ff, 0x053fa809, - 0x06000001, 0x05780103, 0x070000ff, 0x017a0103, - 0x07000600, 0x04600e16, 0x050f80ff, 0x053fa80a, - 0x06000001, 0x06a003e6, 0x03800078, 0x0760140a, - 0x050f80ff, 0x053fa809, 0x06000001, 0x07f00000, - 0x074b0003, 0x034a1803, 0x014a2c03, 0x05500403, - 0x070030ff, 0x0400100e, 0x04002010, 0x04600e16, - 0x050f80ff, 0x073fa009, 0x06000002, 0x0600500d, - 0x0700600a, 0x0400700b, 0x0460040b, 0x050f80ff, - 0x073fa009, 0x06000004, 0x0279ff08, 0x0700ffff, - 0x06600616, 0x050f80ff, 0x022fa04a, 0x07c00000, - 0x03681e00, 0x070090ff, 0x076c2400, 0x048102cd, - 0x056cf400, 0x048102ba, 0x076ce400, 0x068182df, - 0x0748000f, 0x058102bd, 0x0444b00d, 0x0548100f, - 0x058102c0, 0x0444700e, 0x06a00364, 0x078182e2, - 0x0760220a, 0x050f80ff, 0x0448b00d, 0x058102c9, - 0x073fa009, 0x06000004, 0x008002d3, 0x043fa819, - 0x06000002, 0x05008005, 0x008002d3, 0x0760220a, - 0x050f80ff, 0x043fa819, 0x06000002, 0x05008005, - 0x0500100a, 0x06780007, 0x07ffff00, 0x058102d7, - 0x0245500e, 0x0560160a, 0x050f80ff, 0x053fa809, - 0x06000001, 0x0379ff03, 0x070000ff, 0x01018003, - 0x03800318, 0x040fd016, 0x050fd00a, 0x02800619, - 0x056a02ff, 0x07c00000, 0x0447400e, 0x03681e00, - 0x070090ff, 0x076c3000, 0x07810312, 0x076c9000, - 0x07810312, 0x056cea00, 0x068182ef, 0x02209008, - 0x03800312, 0x056cd000, 0x058102f6, 0x076cd400, - 0x058102f6, 0x040fd016, 0x050fd00a, 0x02800619, - 0x0748000f, 0x058102f9, 0x0444700e, 0x0548100f, - 0x058102fc, 0x0444b00d, 0x06a00364, 0x05818311, - 0x0448700d, 0x05818317, 0x0644500e, 0x070ff009, + 0x05a00295, 0x03800056, 0x056c0e09, 0x0681827f, + 0x0430e001, 0x02080002, 0x0644000d, 0x0447400d, + 0x0748f00f, 0x05810265, 0x0569800f, 0x0781827d, + 0x0578400f, 0x06000020, 0x017c40ff, 0x06000020, + 0x0681825e, 0x0748500c, 0x0481025e, 0x03459017, + 0x01800265, 0x0049100d, 0x07818265, 0x0548700c, + 0x07818265, 0x07486000, 0x07818265, 0x0045400d, + 0x04602c16, 0x050f80ff, 0x053fa80a, 0x0600000b, + 0x05a002b2, 0x06818279, 0x01498017, 0x04810275, + 0x0644900e, 0x0444100d, 0x0630000e, 0x04000420, + 0x0748600c, 0x05810277, 0x0444200d, 0x01800277, + 0x06300004, 0x04000420, 0x05a00295, 0x03800035, + 0x02200010, 0x00800280, 0x02200001, 0x00800280, + 0x03200006, 0x00800280, 0x02200004, 0x040fd016, + 0x050fd00a, 0x050fd000, 0x0760140a, 0x050f80ff, + 0x032fa00a, 0x07f00000, 0x04600e16, 0x050f80ff, + 0x053fa809, 0x06000001, 0x05780103, 0x070000ff, + 0x017a0103, 0x07000600, 0x04600e16, 0x050f80ff, + 0x053fa80a, 0x06000001, 0x06a003e6, 0x03800078, + 0x0760140a, 0x050f80ff, 0x053fa809, 0x06000001, + 0x07f00000, 0x074b0003, 0x034a1803, 0x014a2c03, + 0x05500403, 0x070030ff, 0x0400100e, 0x04002010, + 0x04600e16, 0x050f80ff, 0x073fa009, 0x06000002, + 0x0600500d, 0x0700600a, 0x0400700b, 0x0460040b, + 0x050f80ff, 0x073fa009, 0x06000004, 0x0279ff08, + 0x0700ffff, 0x06600616, 0x050f80ff, 0x022fa04a, + 0x07c00000, 0x03681e00, 0x070090ff, 0x076c2400, + 0x048102cd, 0x056cf400, 0x048102ba, 0x076ce400, + 0x068182df, 0x0748000f, 0x058102bd, 0x0444b00d, + 0x0548100f, 0x058102c0, 0x0444700e, 0x06a00364, + 0x078182e2, 0x0760220a, 0x050f80ff, 0x0448b00d, + 0x058102c9, 0x073fa009, 0x06000004, 0x008002d3, + 0x043fa819, 0x06000002, 0x05008005, 0x008002d3, + 0x0760220a, 0x050f80ff, 0x043fa819, 0x06000002, + 0x05008005, 0x0500100a, 0x06780007, 0x07ffff00, + 0x058102d7, 0x0245500e, 0x0560160a, 0x050f80ff, + 0x053fa809, 0x06000001, 0x0379ff03, 0x070000ff, + 0x01018003, 0x03800318, 0x040fd016, 0x050fd00a, + 0x03800622, 0x056a02ff, 0x07c00000, 0x0447400e, + 0x03681e00, 0x070090ff, 0x076c3000, 0x07810312, + 0x076c9000, 0x07810312, 0x056cea00, 0x068182ef, + 0x02209008, 0x03800312, 0x056cd000, 0x058102f6, + 0x076cd400, 0x058102f6, 0x040fd016, 0x050fd00a, + 0x03800622, 0x0748000f, 0x058102f9, 0x0444700e, + 0x0548100f, 0x058102fc, 0x0444b00d, 0x06a00364, + 0x05818311, 0x0448700d, 0x05818317, 0x0644500e, + 0x070ff009, 0x0550041b, 0x050f80ff, 0x073fa009, + 0x06000001, 0x0320000c, 0x02400002, 0x04488004, + 0x0781030c, 0x02400002, 0x0320000f, 0x07003018, + 0x06601816, 0x050f80ff, 0x032fa022, 0x075c00ff, + 0x07c00000, 0x0500100a, 0x0560260a, 0x050f80ff, + 0x053fa809, 0x07000003, 0x04008010, 0x06a00320, + 0x0481831f, 0x07003018, 0x06601816, 0x050f80ff, + 0x022fa04a, 0x075c00ff, 0x07c00000, 0x070ff009, 0x0550041b, 0x050f80ff, 0x073fa009, 0x06000001, - 0x0320000c, 0x02400002, 0x04488004, 0x0781030c, - 0x02400002, 0x0320000f, 0x07003018, 0x06601816, - 0x050f80ff, 0x032fa022, 0x075c00ff, 0x07c00000, - 0x0500100a, 0x0560260a, 0x050f80ff, 0x053fa809, - 0x07000003, 0x04008010, 0x06a00320, 0x0481831f, - 0x07003018, 0x06601816, 0x050f80ff, 0x022fa04a, - 0x075c00ff, 0x07c00000, 0x070ff009, 0x0550041b, - 0x050f80ff, 0x073fa009, 0x06000001, 0x0448b00d, - 0x04818329, 0x0448700e, 0x0781032d, 0x02400002, - 0x0049700d, 0x0781032d, 0x02400002, 0x07a0033c, - 0x0581833a, 0x060ff001, 0x05500400, 0x050f80ff, - 0x063fa019, 0x06000002, 0x07f00000, 0x07420018, - 0x0681033b, 0x02400002, 0x07a0033c, 0x0681033b, - 0x056a02ff, 0x07c00000, 0x070ff01d, 0x00540402, - 0x03d0033f, 0x02800345, 0x03800347, 0x02800349, - 0x0380034b, 0x0380034d, 0x0280034f, 0x03200009, - 0x02800362, 0x0320000c, 0x02800362, 0x0320000f, - 0x02800362, 0x03200012, 0x02800362, 0x02200015, - 0x02800362, 0x04600201, 0x050f80ff, 0x012fa809, - 0x040f7001, 0x0286035e, 0x04601001, 0x050f80ff, - 0x073fa009, 0x06000001, 0x02681e02, 0x0550041b, - 0x050f80ff, 0x073fa009, 0x06000001, 0x0380033c, - 0x040fd016, 0x040fd002, 0x056a02ff, 0x03800363, - 0x075c00ff, 0x07c00000, 0x0560020a, 0x050f80ff, - 0x053fa809, 0x06000007, 0x050f700f, 0x038603e4, - 0x0560100f, 0x050f80ff, 0x053fa809, 0x06000004, - 0x0769ff09, 0x056c9409, 0x058183e4, 0x05602a0a, - 0x050f80ff, 0x063fa019, 0x07000003, 0x07000006, - 0x0079fe07, 0x070000ff, 0x050010ff, 0x0760120f, - 0x050f80ff, 0x063fa019, 0x06000002, 0x0379ff05, - 0x070000ff, 0x074b0c05, 0x055a0405, 0x070050ff, - 0x0079fe04, 0x070000ff, 0x050020ff, 0x064b0c04, - 0x045a0402, 0x050020ff, 0x064b0004, 0x04487004, - 0x06810392, 0x0379ff05, 0x070000ff, 0x04488004, - 0x04818398, 0x04007010, 0x04008010, 0x04444004, - 0x04488004, 0x068103ad, 0x02680604, 0x076c06ff, - 0x04818398, 0x00464004, 0x0045700d, 0x0045800e, - 0x05601a0f, 0x050f80ff, 0x073fa009, 0x0700000c, - 0x07f00000, 0x074b0018, 0x07600a0a, 0x050f80ff, - 0x053fa809, 0x06000001, 0x050f80ff, 0x073fa00a, - 0x06000008, 0x07f00000, 0x06604e16, 0x050f80ff, - 0x053fa80a, 0x06000001, 0x07f00000, 0x04605816, - 0x050f80ff, 0x073fa00a, 0x07000003, 0x06486004, - 0x058183c5, 0x04780107, 0x07ffff00, 0x004a8c07, - 0x04780107, 0x07ff0000, 0x004a8007, 0x045a0407, - 0x045a0404, 0x050040ff, 0x06780008, 0x07ff00ff, - 0x0279ff08, 0x0700ff00, 0x014c80ff, 0x044d8008, - 0x045a0408, 0x070030ff, 0x028003dc, 0x04780107, - 0x07ffff00, 0x0079fe08, 0x070000ff, 0x045a0407, - 0x050070ff, 0x06780007, 0x07ff00ff, 0x0279ff07, - 0x0700ff00, 0x054d80ff, 0x004c8007, 0x045a0407, - 0x070030ff, 0x04780108, 0x07ffff00, 0x004a8c08, - 0x04780108, 0x07ff0000, 0x004a8008, 0x045a0408, - 0x045a0404, 0x050040ff, 0x04603e16, 0x050f80ff, - 0x022fa032, 0x0500100f, 0x05007006, 0x01681f09, - 0x075c00ff, 0x07c00000, 0x056a02ff, 0x07c00000, - 0x050f7012, 0x038603ed, 0x06600013, 0x050f80ff, - 0x073fa00a, 0x0600000b, 0x07c00000, 0x070ff0e2, - 0x077800ff, 0x033e0000, 0x077400ff, 0x031a0000, - 0x05820412, 0x05810412, 0x00012016, 0x02013016, - 0x07c00000, 0x070ff0e2, 0x077800ff, 0x033e0000, - 0x077400ff, 0x031a0000, 0x078203ff, 0x078103ff, - 0x07c00000, 0x03016012, 0x06600016, 0x050f80ff, - 0x032fa009, 0x07f00000, 0x06600016, 0x050f80ff, - 0x073fa00a, 0x06000008, 0x050f7000, 0x0186040c, - 0x01012000, 0x0080040e, 0x00012010, 0x02013010, - 0x04600816, 0x050f80ff, 0x073fa009, 0x06000007, - 0x0647f00e, 0x007a010e, 0x04000101, 0x04600816, - 0x050f80ff, 0x073fa00a, 0x06000007, 0x072e0030, - 0x020e0016, 0x07c00000, 0x0391000a, 0x0784001d, - 0x022c0004, 0x046c041f, 0x04810431, 0x046c021f, - 0x05810481, 0x066c0c1f, 0x05810493, 0x046c081f, - 0x058104a5, 0x066c061f, 0x048104bf, 0x0721f000, - 0x0202c010, 0x0202a010, 0x02020010, 0x052e5800, - 0x02b60079, 0x058d04d7, 0x0380000c, 0x040f702a, - 0x0086042a, 0x06000010, 0x04001010, 0x0760182b, - 0x050f80ff, 0x032fa012, 0x07f00000, 0x0460082a, - 0x050f80ff, 0x053fa809, 0x06000001, 0x07780003, - 0x03400000, 0x05810471, 0x0560102b, 0x050f80ff, - 0x032fa009, 0x0769ff00, 0x076c3000, 0x05810448, - 0x056cd000, 0x07818471, 0x05601c2b, 0x050f80ff, - 0x032fa009, 0x05444000, 0x07445000, 0x032fa00a, - 0x06300002, 0x05000430, 0x0660062a, 0x050f80ff, - 0x032fa00a, 0x07f00000, 0x0560262b, 0x050f80ff, - 0x032fa009, 0x04001010, 0x04002010, 0x0460262a, - 0x050f80ff, 0x022fa01a, 0x07f00000, 0x06600a2a, - 0x050f80ff, 0x012fa80a, 0x07f00000, 0x0460082a, - 0x050f80ff, 0x012fa80a, 0x0079c101, 0x07ffffff, - 0x007a0b01, 0x03800000, 0x05780100, 0x07ffff00, - 0x0581046c, 0x02455001, 0x0460082a, 0x050f80ff, - 0x012fa80a, 0x0201602a, 0x07a000bb, 0x06420029, + 0x0448b00d, 0x04818329, 0x0448700e, 0x0781032d, + 0x02400002, 0x0049700d, 0x0781032d, 0x02400002, + 0x07a0033c, 0x0581833a, 0x060ff001, 0x05500400, + 0x050f80ff, 0x063fa019, 0x06000002, 0x07f00000, + 0x07420018, 0x0681033b, 0x02400002, 0x07a0033c, + 0x0681033b, 0x056a02ff, 0x07c00000, 0x070ff01d, + 0x00540402, 0x03d0033f, 0x02800345, 0x03800347, + 0x02800349, 0x0380034b, 0x0380034d, 0x0280034f, + 0x03200009, 0x02800362, 0x0320000c, 0x02800362, + 0x0320000f, 0x02800362, 0x03200012, 0x02800362, + 0x02200015, 0x02800362, 0x04600201, 0x050f80ff, + 0x012fa809, 0x040f7001, 0x0286035e, 0x04601001, + 0x050f80ff, 0x073fa009, 0x06000001, 0x02681e02, + 0x0550041b, 0x050f80ff, 0x073fa009, 0x06000001, + 0x0380033c, 0x040fd016, 0x040fd002, 0x056a02ff, + 0x03800363, 0x075c00ff, 0x07c00000, 0x0560020a, + 0x050f80ff, 0x053fa809, 0x06000007, 0x050f700f, + 0x038603e4, 0x0560100f, 0x050f80ff, 0x053fa809, + 0x06000004, 0x0769ff09, 0x056c9409, 0x058183e4, + 0x05602a0a, 0x050f80ff, 0x063fa019, 0x07000003, + 0x07000006, 0x0079fe07, 0x070000ff, 0x050010ff, + 0x0760120f, 0x050f80ff, 0x063fa019, 0x06000002, + 0x0379ff05, 0x070000ff, 0x074b0c05, 0x055a0405, + 0x070050ff, 0x0079fe04, 0x070000ff, 0x050020ff, + 0x064b0c04, 0x045a0402, 0x050020ff, 0x064b0004, + 0x04487004, 0x06810392, 0x0379ff05, 0x070000ff, + 0x04488004, 0x04818398, 0x04007010, 0x04008010, + 0x04444004, 0x04488004, 0x068103ad, 0x02680604, + 0x076c06ff, 0x04818398, 0x00464004, 0x0045700d, + 0x0045800e, 0x05601a0f, 0x050f80ff, 0x073fa009, + 0x0700000c, 0x07f00000, 0x074b0018, 0x07600a0a, + 0x050f80ff, 0x053fa809, 0x06000001, 0x050f80ff, + 0x073fa00a, 0x06000008, 0x07f00000, 0x06604e16, + 0x050f80ff, 0x053fa80a, 0x06000001, 0x07f00000, + 0x04605816, 0x050f80ff, 0x073fa00a, 0x07000003, + 0x06486004, 0x058183c5, 0x04780107, 0x07ffff00, + 0x004a8c07, 0x04780107, 0x07ff0000, 0x004a8007, + 0x045a0407, 0x045a0404, 0x050040ff, 0x06780008, + 0x07ff00ff, 0x0279ff08, 0x0700ff00, 0x014c80ff, + 0x044d8008, 0x045a0408, 0x070030ff, 0x028003dc, + 0x04780107, 0x07ffff00, 0x0079fe08, 0x070000ff, + 0x045a0407, 0x050070ff, 0x06780007, 0x07ff00ff, + 0x0279ff07, 0x0700ff00, 0x054d80ff, 0x004c8007, + 0x045a0407, 0x070030ff, 0x04780108, 0x07ffff00, + 0x004a8c08, 0x04780108, 0x07ff0000, 0x004a8008, + 0x045a0408, 0x045a0404, 0x050040ff, 0x04603e16, + 0x050f80ff, 0x022fa032, 0x0500100f, 0x05007006, + 0x01681f09, 0x075c00ff, 0x07c00000, 0x056a02ff, + 0x07c00000, 0x050f7012, 0x038603ed, 0x06600013, + 0x050f80ff, 0x073fa00a, 0x0600000b, 0x07c00000, + 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, + 0x031a0000, 0x05820412, 0x05810412, 0x00012016, + 0x02013016, 0x07c00000, 0x070ff0e2, 0x077800ff, + 0x033e0000, 0x077400ff, 0x031a0000, 0x078203ff, + 0x078103ff, 0x07c00000, 0x03016012, 0x06600016, + 0x050f80ff, 0x032fa009, 0x07f00000, 0x06600016, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x050f7000, + 0x0186040c, 0x01012000, 0x0080040e, 0x00012010, + 0x02013010, 0x04600816, 0x050f80ff, 0x073fa009, + 0x06000007, 0x0647f00e, 0x007a010e, 0x04000101, + 0x04600816, 0x050f80ff, 0x073fa00a, 0x06000007, + 0x072e0030, 0x020e0016, 0x07c00000, 0x0391000a, + 0x0784001d, 0x022c0004, 0x046c041f, 0x04810432, + 0x046c021f, 0x05810482, 0x066c0c1f, 0x04810494, + 0x046c081f, 0x058104a6, 0x066c061f, 0x058104c0, + 0x0721f000, 0x0202c010, 0x0202a010, 0x02020010, + 0x052e5800, 0x02b60079, 0x058d04d8, 0x0380000c, + 0x0380001d, 0x040f702a, 0x0086042a, 0x06000010, + 0x04001010, 0x0760182b, 0x050f80ff, 0x032fa012, + 0x07f00000, 0x0460082a, 0x050f80ff, 0x053fa809, + 0x06000001, 0x07780003, 0x03400000, 0x05810472, + 0x0560102b, 0x050f80ff, 0x032fa009, 0x0769ff00, + 0x076c3000, 0x04810449, 0x056cd000, 0x07818472, + 0x05601c2b, 0x050f80ff, 0x032fa009, 0x05444000, + 0x07445000, 0x032fa00a, 0x06300002, 0x05000430, + 0x0660062a, 0x050f80ff, 0x032fa00a, 0x07f00000, + 0x0560262b, 0x050f80ff, 0x032fa009, 0x04001010, + 0x04002010, 0x0460262a, 0x050f80ff, 0x022fa01a, + 0x07f00000, 0x06600a2a, 0x050f80ff, 0x012fa80a, + 0x07f00000, 0x0460082a, 0x050f80ff, 0x012fa80a, + 0x0079c101, 0x07ffffff, 0x007a0b01, 0x03800000, + 0x05780100, 0x07ffff00, 0x0481046d, 0x02455001, + 0x0460082a, 0x050f80ff, 0x012fa80a, 0x0201602a, + 0x07a000bb, 0x06420029, 0x0660002a, 0x050f80ff, + 0x053fa809, 0x06000001, 0x050f7003, 0x0086047f, + 0x01028003, 0x0660002a, 0x050f80ff, 0x073fa00a, + 0x06000008, 0x008004c1, 0x00028010, 0x00027010, + 0x008004c1, 0x040f702a, 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, 0x053fa809, 0x06000001, - 0x050f7003, 0x0186047e, 0x01028003, 0x0660002a, - 0x050f80ff, 0x073fa00a, 0x06000008, 0x018004c0, - 0x00028010, 0x00027010, 0x018004c0, 0x040f702a, + 0x050f7003, 0x00860491, 0x03026003, 0x0660002a, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x008004c1, + 0x02026010, 0x02025010, 0x008004c1, 0x040f702a, 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, - 0x053fa809, 0x06000001, 0x050f7003, 0x01860490, - 0x03026003, 0x0660002a, 0x050f80ff, 0x073fa00a, - 0x06000008, 0x018004c0, 0x02026010, 0x02025010, - 0x018004c0, 0x040f702a, 0x00860429, 0x06420029, + 0x053fa809, 0x06000001, 0x050f7003, 0x018604a3, + 0x01024003, 0x0660002a, 0x050f80ff, 0x073fa00a, + 0x06000008, 0x018004b7, 0x00024010, 0x02023010, + 0x018004b7, 0x040f702a, 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, 0x053fa809, 0x06000001, - 0x050f7003, 0x008604a2, 0x01024003, 0x0660002a, - 0x050f80ff, 0x073fa00a, 0x06000008, 0x008004b6, - 0x00024010, 0x02023010, 0x008004b6, 0x040f702a, - 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, - 0x053fa809, 0x06000001, 0x050f7003, 0x018604b4, - 0x01022003, 0x0660002a, 0x050f80ff, 0x073fa00a, - 0x06000008, 0x008004b6, 0x00022010, 0x00021010, - 0x0647f020, 0x007a0120, 0x04000101, 0x06a0054a, - 0x0400802a, 0x06a005fe, 0x02948429, 0x0721f005, - 0x0080042a, 0x0080042f, 0x0647f020, 0x06486020, - 0x078184c5, 0x06a0054a, 0x00800429, 0x007a0120, - 0x04000101, 0x06a0054a, 0x0400802a, 0x06a005fe, - 0x00800429, 0x0391000a, 0x070ff0e2, 0x077800ff, - 0x033e0000, 0x077400ff, 0x031a0000, 0x0682842f, - 0x040fd02a, 0x052e4003, 0x00208010, 0x06a005fe, - 0x0080042f, 0x0784001d, 0x030150c0, 0x0448e015, - 0x05818505, 0x0648f015, 0x068184fd, 0x02490015, - 0x078184f5, 0x00491015, 0x078184ed, 0x00492015, - 0x0781053c, 0x033d0000, 0x07000003, 0x019b853c, - 0x033d0000, 0x06000002, 0x073c0000, 0x06000040, - 0x052e5200, 0x02200004, 0x0380050c, 0x072d0c00, - 0x039b84e1, 0x052d0800, 0x073c0000, 0x06000020, - 0x062e5080, 0x03200003, 0x0380050c, 0x072d0300, - 0x029b84df, 0x052d0200, 0x073c0000, 0x06000010, - 0x062e5020, 0x02200002, 0x0380050c, 0x072d00c0, - 0x039b84dd, 0x062d0080, 0x073c0000, 0x06000008, - 0x062e5008, 0x02200001, 0x0380050c, 0x072d0030, - 0x039b84db, 0x062d0020, 0x073c0000, 0x06000004, - 0x062e5002, 0x06000010, 0x0784001d, 0x0392000c, - 0x050fb000, 0x040f707c, 0x02860538, 0x046c0279, - 0x0581851d, 0x0448b07a, 0x07810524, 0x06000010, - 0x04001010, 0x0760187b, 0x050f80ff, 0x032fa012, - 0x0046b07a, 0x02b60079, 0x03800527, 0x066c0079, - 0x07810522, 0x040fd07c, 0x06a00619, 0x02800008, - 0x040fd07c, 0x03800527, 0x0045207a, 0x0279ff7a, - 0x07ffd7ff, 0x0007d010, 0x0647f07a, 0x0648607a, - 0x04818532, 0x0448707a, 0x07810530, 0x040f70fb, - 0x01868530, 0x0644f07a, 0x07a00550, 0x02800538, - 0x007a017a, 0x04000101, 0x07a00550, 0x0400807c, - 0x0245f008, 0x06a005fe, 0x07279000, 0x0007e010, - 0x0207c010, 0x0207a010, 0x008c041c, 0x0380000c, + 0x050f7003, 0x008604b5, 0x01022003, 0x0660002a, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x018004b7, + 0x00022010, 0x00021010, 0x0647f020, 0x007a0120, + 0x04000101, 0x07a0054d, 0x0400802a, 0x07a00605, + 0x02948429, 0x0721f005, 0x0080042a, 0x00800431, + 0x0647f020, 0x06486020, 0x078184c6, 0x07a0054d, + 0x00800429, 0x007a0120, 0x04000101, 0x07a0054d, + 0x0400802a, 0x07a00605, 0x00800429, 0x0391001d, + 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, + 0x031a0000, 0x06828431, 0x040fd02a, 0x052e4003, + 0x00208010, 0x07a00605, 0x00800431, 0x0784001d, + 0x030150c0, 0x0448e015, 0x05818506, 0x0648f015, + 0x068184fe, 0x02490015, 0x078184f6, 0x00491015, + 0x078184ee, 0x00492015, 0x06810540, 0x033d0000, + 0x07000003, 0x009b8540, 0x033d0000, 0x06000002, + 0x073c0000, 0x06000040, 0x052e5200, 0x02200004, + 0x0280050d, 0x072d0c00, 0x039b84e2, 0x052d0800, + 0x073c0000, 0x06000020, 0x062e5080, 0x03200003, + 0x0280050d, 0x072d0300, 0x029b84e0, 0x052d0200, + 0x073c0000, 0x06000010, 0x062e5020, 0x02200002, + 0x0280050d, 0x072d00c0, 0x039b84de, 0x062d0080, + 0x073c0000, 0x06000008, 0x062e5008, 0x02200001, + 0x0280050d, 0x072d0030, 0x029b84dc, 0x062d0020, + 0x073c0000, 0x06000004, 0x062e5002, 0x06000010, + 0x0784001d, 0x0392000c, 0x050fb000, 0x040f707c, + 0x03860539, 0x046c0279, 0x0581851e, 0x0448b07a, + 0x06810525, 0x06000010, 0x04001010, 0x0760187b, + 0x050f80ff, 0x032fa012, 0x0046b07a, 0x02b60079, + 0x03800528, 0x066c0079, 0x06810523, 0x040fd07c, + 0x07a00622, 0x02800008, 0x040fd07c, 0x03800528, + 0x0045207a, 0x0279ff7a, 0x07ffd7ff, 0x0007d010, + 0x0647f07a, 0x0648607a, 0x05818533, 0x0448707a, + 0x06810531, 0x040f70fb, 0x00868531, 0x0644f07a, + 0x07a00553, 0x03800539, 0x007a017a, 0x04000101, + 0x07a00553, 0x0400807c, 0x0245f008, 0x07a00605, + 0x07279000, 0x0007e010, 0x0207c010, 0x0207a010, + 0x008c041c, 0x058d04d8, 0x0380000c, 0x0380001d, 0x0392000c, 0x070ff0e2, 0x077800ff, 0x033e0000, - 0x077400ff, 0x031a0000, 0x0582853c, 0x070fc0ff, - 0x052e400c, 0x00208020, 0x06a005fe, 0x0380053c, + 0x077400ff, 0x031a0000, 0x04828540, 0x070fc0ff, + 0x052e400c, 0x00208020, 0x07a00605, 0x02800540, 0x06000020, 0x05001014, 0x0460082a, 0x050f80ff, 0x032fa012, 0x07c00000, 0x0600007a, 0x040010a2, 0x044b0801, 0x070ff014, 0x065a0001, 0x0460087c, 0x050f80ff, 0x032fa012, 0x07c00000, 0x050f7024, - 0x02860564, 0x070ff0e2, 0x077800ff, 0x033e0000, + 0x02860567, 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, 0x031a0000, 0x04828013, 0x0721f006, - 0x0302a024, 0x028005ad, 0x050f7022, 0x02860573, - 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, - 0x031a0000, 0x04828013, 0x0302a022, 0x06a005b9, - 0x04488020, 0x0781059c, 0x040fd02a, 0x0202a010, - 0x02020010, 0x040f7026, 0x03860581, 0x0202a026, - 0x06a005b9, 0x04488020, 0x0581857d, 0x0621f001, - 0x00683e20, 0x048185ae, 0x0280059d, 0x040fd02a, - 0x0202a010, 0x0002b010, 0x02020010, 0x050f7028, - 0x028605b6, 0x0621f002, 0x0302a028, 0x028005ad, + 0x0302a024, 0x038005b2, 0x050f7022, 0x03860577, 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, - 0x031a0000, 0x04828013, 0x050f7024, 0x02860591, - 0x0721f006, 0x0302a024, 0x028005ad, 0x050f7022, - 0x028605b6, 0x0302a022, 0x06a005b9, 0x04488020, - 0x0781059c, 0x040fd02a, 0x0202a010, 0x0002b010, - 0x02020010, 0x028005b6, 0x0621f004, 0x070ff0e2, - 0x077800ff, 0x033e0000, 0x077400ff, 0x031a0000, - 0x048285a8, 0x01208060, 0x0600902a, 0x04002020, - 0x07a00605, 0x028005b6, 0x0202a010, 0x02020010, - 0x0002b010, 0x0721f000, 0x028005b6, 0x06a005b9, - 0x0400102a, 0x0245f001, 0x06a005bf, 0x050f801e, - 0x0320000a, 0x022017d0, 0x032fa012, 0x072e5c00, - 0x008c041c, 0x058d04d7, 0x02800013, 0x0460082a, - 0x050f80ff, 0x022fa031, 0x03020000, 0x0102b005, - 0x07c00000, 0x01200100, 0x079a05c3, 0x060f0001, - 0x07c00000, 0x07420000, 0x058185c0, 0x060fc010, - 0x02800619, 0x0392001d, 0x0207c02f, 0x0460087c, + 0x031a0000, 0x04828013, 0x0302a022, 0x06a005bf, + 0x04488020, 0x068105a1, 0x040fd02a, 0x0202a010, + 0x02020010, 0x038005be, 0x040f7026, 0x02860586, + 0x0202a026, 0x06a005bf, 0x04488020, 0x05818581, + 0x0621f001, 0x00683e20, 0x048185b3, 0x028005a2, + 0x040fd02a, 0x0202a010, 0x0002b010, 0x02020010, + 0x038005be, 0x050f7028, 0x038605bb, 0x0621f002, + 0x0302a028, 0x038005b2, 0x070ff0e2, 0x077800ff, + 0x033e0000, 0x077400ff, 0x031a0000, 0x04828013, + 0x050f7024, 0x03860596, 0x0721f006, 0x0302a024, + 0x038005b2, 0x050f7022, 0x038605bb, 0x0302a022, + 0x06a005bf, 0x04488020, 0x068105a1, 0x040fd02a, + 0x0202a010, 0x0002b010, 0x02020010, 0x038005be, + 0x0621f004, 0x070ff0e2, 0x077800ff, 0x033e0000, + 0x077400ff, 0x031a0000, 0x048285ad, 0x01208060, + 0x0600902a, 0x04002020, 0x06a0060d, 0x038005bb, + 0x0202a010, 0x02020010, 0x0002b010, 0x0721f000, + 0x038005bb, 0x06a005bf, 0x0400102a, 0x0245f001, + 0x07a005c5, 0x050f801e, 0x0320000a, 0x022017d0, + 0x032fa012, 0x072e5c00, 0x008c041c, 0x058d04d8, + 0x02800013, 0x0380001d, 0x0460082a, 0x050f80ff, + 0x022fa031, 0x03020000, 0x0102b005, 0x07c00000, + 0x07300000, 0x06000008, 0x079a05ca, 0x060f0001, + 0x07c00000, 0x07420000, 0x048185c7, 0x060fc010, + 0x03800622, 0x0392001d, 0x0207c02f, 0x0460087c, 0x050f80ff, 0x032fa039, 0x0307a000, 0x0107b005, 0x0307f006, 0x0660007c, 0x050020ff, 0x050f80ff, - 0x032fa011, 0x0302f000, 0x008685df, 0x0202f001, - 0x018685dd, 0x0002e010, 0x0660187f, 0x050f80ff, - 0x073fa00a, 0x06000008, 0x028005e5, 0x0002e001, - 0x028005e5, 0x040f7001, 0x038605d8, 0x0760002e, + 0x032fa011, 0x0302f000, 0x008685e6, 0x0202f001, + 0x018685e4, 0x0002e010, 0x0660187f, 0x050f80ff, + 0x073fa00a, 0x06000008, 0x028005ec, 0x0002e001, + 0x028005ec, 0x040f7001, 0x028605df, 0x0760002e, 0x050f80ff, 0x012fa80a, 0x0002e001, 0x06000010, 0x04001010, 0x040f8002, 0x032fa012, 0x06279001, 0x0400107c, 0x060ff0fb, 0x054bc8ff, 0x065a0001, - 0x06a005bf, 0x0320000a, 0x022011f4, 0x00202004, - 0x06003010, 0x0249507a, 0x078105f6, 0x0020200e, + 0x07a005c5, 0x0320000a, 0x022011f4, 0x00202004, + 0x06003010, 0x0249507a, 0x068105fd, 0x0020200e, 0x050f8078, 0x032fa022, 0x030e5077, 0x008c041c, - 0x058d04d7, 0x040f702f, 0x00868013, 0x0380001d, - 0x03201100, 0x05848603, 0x06420001, 0x058185ff, - 0x0280061c, 0x020e0008, 0x07c00000, 0x050fd009, - 0x040fd008, 0x03201100, 0x0584860c, 0x06420001, - 0x04818608, 0x0280061c, 0x007a0102, 0x04000101, - 0x05600809, 0x050f80ff, 0x073fa00a, 0x06000001, - 0x020e0008, 0x05848617, 0x06420001, 0x04818613, - 0x0280061c, 0x030e0009, 0x07c00000, 0x052e400f, - 0x00208040, 0x028005fe, 0x070fc0ff, 0x040f8010, - 0x032fa009, 0x0280061f, 0x45c0c10d, 0x00000000, - 0x00000000, 0x0000400e, 0x00000808, 0x00000803, - 0x00011f0f, 0x02080b02, 0xe6e5610b, 0x7f04e630, - 0x7f028001, 0x30e2e500, 0x017e04e4, 0x007e0280, - 0x08605fee, 0xe4f7f953, 0x0b80fef5, 0x16120a7f, - 0xf7f953b3, 0x7530fe75, 0xf5e408fc, 0x08f943fd, - 0x06000222, 0x000f1f01, 0x75002003, 0xf5e40151, - 0xf553f552, 0x7f7ef552, 0x3d040204, 0x520536c2, - 0x94d352e5, 0x7505400c, 0x36d20152, 0x740c0790, - 0x74a3f007, 0xf5e4f0ff, 0x90f0a30c, 0xa3f01407, - 0x200b75f0, 0xf5e409f5, 0xd308e508, 0x03403094, - 0x12090402, 0x0b150600, 0x047008e5, 0x0280017f, - 0x09e5007f, 0x017e0470, 0x007e0280, 0x05605fee, - 0xd2f31712, 0xf7e15335, 0x094508e5, 0x250be5ff, - 0x24e025e0, 0xe482f583, 0x83f50734, 0xe285f0ef, - 0xd352e520, 0x0d400194, 0xe02a1b12, 0x4064a054, - 0x04020370, 0xf8f95300, 0xe4709490, 0x10f5e0f0, - 0x1e1209af, 0xef08af74, 0x82f50844, 0xe0808375, - 0x44ef29f5, 0x7582f507, 0xf5e09e83, 0xd3405422, - 0x1e400094, 0xf05429e5, 0x1b122170, 0x8044e02a, - 0x5422e5f0, 0x70086530, 0x2a1b1209, 0xf0bf54e0, - 0x1b120980, 0xf040742a, 0x12000402, 0x8375491b, - 0xf0ff74ae, 0x007e08af, 0xf50744ef, 0xe5fde082, - 0x25e0250b, 0xf58124e0, 0x0734e482, 0xf0ed83f5, - 0xe00e0790, 0x44eff004, 0x7582f507, 0xf5e09883, - 0x5a1b1228, 0x1b120c40, 0x0144e02a, 0x02691b12, - 0x08affb03, 0x8074007e, 0x8dcdefcd, 0xe083f582, - 0x120ae030, 0x44e02a1b, 0x0402f020, 0x2a1b1200, - 0xf0df54e0, 0x12ae44ee, 0xe430711b, 0x00040203, - 0x1b129e74, 0x03e0203c, 0x8f000402, 0xe0838e82, - 0x0203e020, 0x1b120004, 0x1044e02a, 0x4408e5f0, - 0x7582f506, 0x44e09e83, 0x08aff004, 0x44ef007e, - 0xe082f506, 0x1234e220, 0x44e02a1b, 0xe4e5f008, - 0x7d04e630, 0x7d028001, 0xc37ee500, 0x04500494, - 0x0280017c, 0x4dec007c, 0x35c20560, 0xee000402, - 0x1b12d244, 0xf0404471, 0x12000402, 0x54e02a1b, - 0x1b12f0f7, 0xd2837549, 0xf0bf54e0, 0xe0140790, - 0x7ee5f004, 0x7e750370, 0x7e08af01, 0x5a1b1200, - 0x1b121240, 0x0144e02a, 0xe0291b12, 0x1b120254, - 0x00040269, 0xe02a1b12, 0x1b120244, 0xfe54e029, - 0xee35c2f0, 0x828f8044, 0xf5e083f5, 0x44e35417, - 0x9074f010, 0x4408e5fc, 0x82f5fd07, 0x54e0838c, - 0x0207903f, 0xc054e0f0, 0x838c828d, 0x129274f0, - 0x07903c1b, 0x501b1203, 0x1b128274, 0x0407903c, - 0x74501b12, 0x3c1b12b4, 0x12050790, 0x9474501b, - 0x4408e5fe, 0x411b1206, 0xe03010f5, 0x8037d204, - 0xe537c202, 0x8f7f5410, 0xf0838e82, 0x12304430, - 0x80543a1b, 0x400094d3, 0x8039d204, 0x8f39c202, - 0xe0838e82, 0x12f08044, 0x40543a1b, 0x400094d3, - 0x803ad204, 0x8f3ac202, 0xe0838e82, 0x74f04044, - 0x08e5fe92, 0x1b120644, 0x04e73041, 0x028038d2, - 0x828f38c2, 0x54e0838e, 0x1e12f07f, 0x0af5e407, - 0x80020320, 0x03433003, 0x20171912, 0x03800202, - 0x12034230, 0x3030970c, 0x17191206, 0x12970c12, - 0x1b124f0d, 0xfb54e02a, 0xc30ae5f0, 0x46400194, - 0x1208e143, 0x44e02a1b, 0xe4e5f004, 0x122ae720, - 0x8375491b, 0x0854e0d2, 0x400094d3, 0x80017f04, - 0xe5007f02, 0x0194c30a, 0x017e0440, 0x007e0280, - 0x05605eef, 0x80981d12, 0x491b1217, 0xe0d28375, - 0x02f00844, 0x1b120004, 0xd2837549, 0xf0f754e0, - 0x7f071e12, 0xb3161208, 0x12fe8e74, 0x838e491b, - 0x5410f5e0, 0x10e5f0fe, 0xe5ff0144, 0x44edfd08, - 0xef82f507, 0x5410e5f0, 0x44edfffe, 0xef82f507, - 0x75481b12, 0x44e08683, 0x481b1210, 0xf01044e0, - 0xe02a1b12, 0x0144fd54, 0x2a1b12ff, 0x691b12ef, - 0xe50c3230, 0xf5084408, 0x82837582, 0xaff00574, - 0x5918120b, 0x08251074, 0x000208f5, 0xe5090585, - 0x0794d309, 0x00020350, 0xd37ee582, 0x04400094, - 0x0280017f, 0x7ee5007f, 0x50fa94c3, 0x80017e04, - 0xee007e02, 0x0502605f, 0x0b35307e, 0x7f01e143, - 0xb3161209, 0x53580002, 0x0002fee1, 0x8f6a8e58, - 0x8d6c8c6b, 0x016e756d, 0x75016f75, 0xf5e40170, - 0xf574f573, 0x2f079075, 0xf53cf5f0, 0xf546f53e, - 0xf53df547, 0xe56ff53f, 0xe50e706f, 0x126a456b, - 0x83753707, 0x803a7480, 0x37071208, 0x74808375, - 0x3607121a, 0xe0868375, 0xe4f00844, 0x74c36ef5, - 0xff6e953f, 0x75680812, 0xf0ef8283, 0x12741912, - 0x33e5d308, 0x070912f0, 0x40be0812, 0x706fe5e1, - 0x3707120b, 0x74808375, 0x0980f036, 0x75370712, - 0x16748083, 0x016e75f0, 0x75370712, 0x6ee5b483, - 0x741912f0, 0x6e253f74, 0x34e482f5, 0xe583f500, - 0xbf74f033, 0x82f56e25, 0x120034e4, 0xd840be08, - 0xf570f5e4, 0xf547f546, 0x0709126e, 0xfee083f5, - 0xe0d30812, 0x0024007c, 0xfe3eecff, 0xefd33bad, - 0x509cee9d, 0x80017b04, 0xe5007b02, 0x7a047070, - 0x7a028001, 0x605aeb00, 0x466e8506, 0xd3017075, - 0x9cee9def, 0x017f0450, 0x007f0280, 0x01b470e5, - 0x80017e04, 0xef007e02, 0x8503605e, 0x6e05476e, - 0x7f646ee5, 0x46e5a370, 0x47e50560, 0x85037eb4, - 0x6fe54746, 0x46850870, 0x77478576, 0x74c30e80, - 0xf546957f, 0x7f74c378, 0x79f54795, 0x37706fe5, - 0x476546e5, 0x73750c70, 0x01747501, 0x3df53cf5, - 0xf5e43580, 0x47e5c34e, 0x3cf54695, 0x71f513c3, - 0x72f54625, 0x403f94c3, 0x3df5e405, 0x74c34080, - 0xf572953f, 0xe537803d, 0x70476546, 0x0173750f, - 0xf5017575, 0x753ff53e, 0x2280014e, 0xc34ef5e4, - 0x469547e5, 0x13c33ef5, 0x462571f5, 0x94d372f5, - 0xe405503f, 0x06803ff5, 0xc12472e5, 0x6f053ff5, - 0x94c36fe5, 0x02035002, 0x6de57304, 0x02706c45, - 0x74e50480, 0x07907545, 0x017ff02f, 0x04603ee5, - 0x14703ce5, 0xf53cf5e4, 0xf53ef53d, 0xdf08123f, - 0x02f00470, 0x7a80b106, 0x95c33ce5, 0xe507403e, - 0xff3e953c, 0xe5c30680, 0xff3c953e, 0x95d376e5, - 0x85054079, 0x03807a76, 0xe57a7985, 0x7895c377, - 0x77850550, 0x8503807b, 0x7be57b78, 0x407a95d3, - 0x957be530, 0xf53cf57a, 0x7be5c33e, 0x07907a95, - 0x3ce5f019, 0x71f513c3, 0x72f57a25, 0x403f94c3, - 0x3df5e405, 0x74c31f80, 0xf572953f, 0x803ff53d, - 0x3cf5e414, 0x07903ef5, 0x0812f019, 0xf00370df, - 0x01740380, 0x680812f0, 0xe0d08375, 0xadfe0f54, - 0x7e02703c, 0x020fbe07, 0xfbee807e, 0x749bd3ef, - 0x4098f880, 0x3cf5e41f, 0x08123ef5, 0xf00370df, - 0x01741280, 0xfb08e5f0, 0xf50744eb, 0xd2837582, - 0xf01044e0, 0xebfb08e5, 0x82f50944, 0xed9e8375, - 0x0744ebf0, 0x837582f5, 0x12f0edca, 0x83756808, - 0x22f0efcc, 0x074408e5, 0x837582f5, 0xf054e0bc, - 0x4408e5f0, 0x7582f507, 0x54e0be83, 0x08e5f0f0, - 0x82f50744, 0xe0c08375, 0xe5f0f054, 0xf5074408, - 0x90f02282, 0xfee02807, 0x82f5e0a3, 0x8522838e, - 0x41854242, 0x40408541, 0xf52fc074, 0x3e027482, - 0x42e583f5, 0x2fe074f0, 0x027482f5, 0x2283f53e, - 0xfd2942e5, 0xe5fc33e4, 0xec9dc33c, 0x74f88064, - 0xf5229880, 0x0790e083, 0xfd1f5422, 0xe0a3fae0, - 0x838a82f5, 0x9022f0ed, 0xfce02207, 0x82f5e0a3, - 0x9022838c, 0xedff2407, 0xf0cf0744, 0x22f0efa3, - 0x85383885, 0x3a853939, 0x2fc0743a, 0x027482f5, - 0x2283f53e, 0xff260790, 0xcf0744ed, 0xf0efa3f0, - 0xa074f022, 0x7482f52f, 0x83f53e02, 0x25c07422, - 0xe482f511, 0x83f50134, 0x25007422, 0xe482f511, - 0x83f50234, 0x25607422, 0xe482f511, 0x83f50334, - 0x25807422, 0xe482f511, 0x83f50334, 0x25e07422, - 0xe482f511, 0x83f50334, 0x25407422, 0xe482f511, - 0x83f50634, 0x2f807422, 0x027482f5, 0x2283f53e, - 0x82e583f5, 0x82f50744, 0x22f040e5, 0x11254074, - 0x34e482f5, 0x2283f502, 0x1125c074, 0x34e482f5, - 0x2283f503, 0x11250074, 0x34e482f5, 0x2283f506, - 0x11252074, 0x34e482f5, 0x2283f506, 0xedfd08e5, - 0x82f50744, 0xf041e522, 0x016465e5, 0x7e226445, - 0x007afb00, 0x22007cfd, 0x11252074, 0x34e482f5, - 0xa0742202, 0x82f51125, 0x220334e4, 0x007e08af, - 0xf50744ef, 0x3e852282, 0x413f8542, 0x8522408f, - 0x3d85423c, 0x22408f41, 0x903f4575, 0xf0e42007, - 0x83f522a3, 0x05f032e5, 0xc36ee56e, 0xf0224094, - 0x064408e5, 0x742282f5, 0xf56e2500, 0x0034e482, - 0xe52283f5, 0x906c456d, 0xe4222f07, 0xd33ce5f9, - 0x74223e95, 0x82f52e80, 0xf50234e4, 0x7422e083, - 0x82f52ea0, 0xf50234e4, 0x7422e083, 0xf56e2580, - 0x0034e482, 0xfd422522, 0x22fc33e4, 0x85424285, - 0x40854141, 0x4ced2240, 0x09020360, 0x704eeff2, - 0x26079037, 0xe0960712, 0xd90712fd, 0x0790f0ed, - 0x96071228, 0x0712fde0, 0x12f0ede5, 0x54e09307, - 0x0812fd1f, 0xed83f584, 0x240790f0, 0xe0960712, - 0x12fd1f54, 0xf0ed3808, 0x4e0464ef, 0x07903770, - 0x96071226, 0x0712fde0, 0x90f0edf1, 0x07122807, - 0x12fde096, 0xf0edfd07, 0xe0930712, 0x12fd1f54, - 0x83f58e08, 0x0790f0ed, 0x96071224, 0xfd1f54e0, - 0xed440812, 0x0164eff0, 0x7d04704e, 0x7d028001, - 0x0264ef00, 0x7f04704e, 0x7f028001, 0x604def00, - 0x26079078, 0xe0420712, 0x090812ff, 0x3e0712ef, - 0x0812ffe0, 0x90f0ef15, 0x07122207, 0x1f54e042, - 0x500812ff, 0x0790f0ef, 0x42071224, 0xff1f54e0, - 0xef5c0812, 0x071222f0, 0x12f0e4d9, 0xf0e4e507, - 0xf5840812, 0x12f0e483, 0x14743808, 0xf10712f0, - 0x0712f0e4, 0x12f0e4fd, 0x83f58e08, 0x0812f0e4, - 0xf0147444, 0xe4090812, 0x150812f0, 0x0812f0e4, - 0x12f0e450, 0x14745c08, 0x648c22f0, 0x668a658d, - 0xf5e4678b, 0x704eef69, 0x161d0203, 0xe568f5e4, - 0x70664567, 0x37071232, 0xe4908375, 0x75360712, - 0x12e4c283, 0x83753607, 0x0812e4c4, 0x12297073, - 0x83753707, 0x0712e492, 0xc6837536, 0x360712e4, - 0xe4c88375, 0x901180f0, 0x07122607, 0x0812e442, - 0x12057073, 0xf0e43f07, 0x12161d12, 0x67e5801e, - 0x33706645, 0x75370712, 0x41e59083, 0x75360712, - 0x41e5c283, 0x75360712, 0x0812c483, 0x12297071, - 0x83753707, 0x1240e592, 0x83753607, 0x1240e5c6, - 0x83753607, 0x900e80c8, 0x07122607, 0x71081242, - 0x07120670, 0xf040e53f, 0x007e69af, 0x66ac67ad, - 0x12490412, 0x83753707, 0x94d3e0ca, 0x050c5000, - 0xc368e568, 0x03500594, 0x224b0a02, 0x75f7f953, - 0xf5e410fc, 0x30fe75fd, 0xf943fff5, 0x20e6e508, - 0xff780be7, 0xfdd8f6e4, 0x80fee653, 0xe4087809, - 0x53fdd8f6, 0x8175fee6, 0xa8f5e480, 0xa9c2a8d2, - 0xe2e5afd2, 0x2005e520, 0x038002e6, 0xe502e143, - 0x0ee020e2, 0x7f000090, 0xe4087e00, 0xfcdfa3f0, - 0x0b02fade, 0x01fa43b5, 0xf0c0e0c0, 0x82c083c0, - 0x1112d0c0, 0xd0d0d018, 0xd083d082, 0x53e0d0f0, - 0x0232fefa, 0x93e4d51a, 0x93e4f8a3, 0xdf08f6a3, - 0xe42980f9, 0x54f8a393, 0xc80c2407, 0x54c433c3, - 0xc820440f, 0xf4044083, 0x46018056, 0x80e4dff6, - 0x0402010b, 0x40201008, 0xff0f9080, 0x93017ee4, - 0xffa3c160, 0xe5303f54, 0xfe1f5409, 0x60a393e4, - 0x54cf0e01, 0x60e025c0, 0x80b840ad, 0x8d608cfe, - 0xe7081261, 0x0d402074, 0x7482f52f, 0x83f53e03, - 0x80f03ee5, 0x82f52f0b, 0xf53e0374, 0xf03ce583, - 0x95d33ce5, 0xe53c403e, 0x70604561, 0x0912e910, - 0x123ee511, 0x3b407507, 0x80a20812, 0xc33ee518, - 0x1d403895, 0xe5383e85, 0x8505603e, 0x0380393f, - 0x8f393985, 0x2108123a, 0x07123ee5, 0xf03fe5cd, - 0xe5438022, 0x70604561, 0x6c071219, 0x08120540, - 0x122780ab, 0x08121809, 0x1242e521, 0x41e5cd07, - 0x3ce522f0, 0x403895c3, 0x383c851d, 0x05603ce5, - 0x80393d85, 0x39398503, 0x08123a8f, 0x123ce521, - 0x3de5cd07, 0x388522f0, 0x39398538, 0x123a3a85, - 0x38e52108, 0xe5cd0712, 0x7f22f039, 0xb3161206, - 0x12e41c12, 0x0e12b70e, 0x0a44e0e6, 0xfe8e74f0, - 0x12b70e12, 0xf0efbe0e, 0xe53028e5, 0x0180d303, - 0x750540c3, 0x03802014, 0x12081475, 0x8375b70e, - 0xf014e58a, 0x7505ffb4, 0x06808012, 0x13c314e5, - 0xf5e412f5, 0x127ff516, 0x1312b818, 0xc30ae5a3, - 0x09500194, 0x16e51605, 0x401494c3, 0x20e4e5ea, - 0x0e1228e7, 0xd28375b7, 0xd30854e0, 0x04400094, - 0x0280017f, 0x0ae5007f, 0x400194c3, 0x80017e04, - 0xef007e02, 0x1203605e, 0x7fe5981d, 0x401194c3, - 0xb70e1214, 0xe0d28375, 0xe5f08044, 0x0fe720e4, - 0x80981d12, 0xb70e120a, 0xe0d28375, 0x12f07f54, - 0x7422e41c, 0x82088580, 0x17e583f5, 0xed0e12f0, - 0x0790f0e4, 0x0e12e002, 0x908375ca, 0x9274f0ef, - 0x4408e5fe, 0x82f5ff07, 0x54e0838e, 0x0790fdc0, - 0x3f54e003, 0x8e828f4d, 0x0790f083, 0x0e12e004, - 0x828375ca, 0x0790f0ef, 0xedffe005, 0x82f50744, - 0xefb48375, 0x75b60e12, 0x54e08083, 0x3730f0bf, - 0x440f120a, 0xe0948375, 0x30f08044, 0x0f120a38, - 0x92837544, 0xf08044e0, 0xe43028e5, 0x0a39201a, - 0x75b70e12, 0x54e08883, 0x3a20f07f, 0xb70e120a, - 0xe0888375, 0x74f0bf54, 0x0e12fe8c, 0xe0838eb7, - 0x0e120f54, 0x868375b6, 0xf0bf54e0, 0x064408e5, - 0x75b00e12, 0xf0e48a83, 0x704eef22, 0xd9071226, - 0x0790fde0, 0x88071226, 0xe0e50712, 0x280790fd, - 0x12880712, 0x07128408, 0x3808127f, 0x240790e0, - 0xef850712, 0x704e0464, 0xf1071229, 0x0790fde0, - 0x88071226, 0xe0fd0712, 0x280790fd, 0x12880712, - 0x07128e08, 0x4408127f, 0xfd1f54e0, 0x12240790, - 0x64ef8807, 0x04704e01, 0x0280017d, 0x64ef007d, - 0x04704e02, 0x0280017f, 0x4def007f, 0x08123560, - 0x90ffe009, 0x07122607, 0x12f0ef96, 0xffe01508, - 0x12280790, 0xf0ef9607, 0xe0500812, 0x12ff1f54, - 0xf0ef9307, 0xe05c0812, 0x90ff1f54, 0x07122407, - 0x22f0ef96, 0x837582f5, 0xe5f0e482, 0xf5074408, - 0x838e2282, 0x5410f5e0, 0x10e5f0fe, 0xe5ff0144, - 0x44edfd08, 0x2282f507, 0x54c415e5, 0x08e5ff07, - 0x0844edfd, 0x837582f5, 0x83752282, 0x4044e080, - 0x4408e5f0, 0x7582f508, 0xe5228a83, 0x25e02516, - 0xf52f24e0, 0x1a34e482, 0x93e483f5, 0x43220df5, - 0xe14310e1, 0xfde15380, 0x2210e185, 0xe02516e5, - 0x3224e025, 0x34e482f5, 0xe483f51a, 0x55852293, - 0x83548582, 0x22f015e5, 0x2054e2e5, 0x220094d3, - 0x4054e2e5, 0x220094d3, 0x064408e5, 0xfd2282f5, - 0xebfb08e5, 0x82f50744, 0x53f5e422, 0x40340f12, - 0x80017f04, 0x12007f02, 0x04403c0f, 0x0280017e, - 0x4fee007e, 0x0f020370, 0x10e185f7, 0x5302e143, - 0xe1850fe1, 0x51f5e410, 0x3f54e3e5, 0x0f1252f5, - 0xad1d403c, 0x1251af52, 0x60efb01c, 0x10e18508, - 0x8040e143, 0xbfe1530b, 0x120b0f12, 0xfb800600, - 0x3f54e3e5, 0xe4e551f5, 0x52f53f54, 0x40340f12, - 0xaf52ad1d, 0xb01c1251, 0x850860ef, 0xe14310e1, - 0x530b8020, 0x0f12dfe1, 0x0600120b, 0x0f12fb80, - 0x7f044034, 0x7f028001, 0x3c0f1200, 0x017e0440, - 0x007e0280, 0x03604fee, 0x220e0f12, 0x01001f01, - 0x00002003, 0x02001102, 0x10024010, 0x00000090, - 0x00000000, 0x1f011f01, 0x1257f5e4, 0x15123f16, - 0x1012e4c6, 0xb7141256, 0x12260790, 0x12e44207, - 0xf0e43e07, 0x12561012, 0x0790b714, 0x42071226, - 0x071241e5, 0xf040e53e, 0x007e57af, 0x007c56ad, - 0xaf490412, 0x02007e56, 0x90ffee11, 0xe0a32007, - 0x56f5e4fd, 0xfcfe40f5, 0x12fa56ab, 0x0f7f5111, - 0xf5e4187d, 0xfe40f556, 0xfa56abfc, 0xaf411512, - 0x12007e56, 0xffe47f1a, 0x1f7d56f5, 0xfcfe40f5, - 0x22fa56ab, 0x55f5e422, 0x74fd08e5, 0xed56f5a0, - 0x57f50744, 0xe53028e5, 0x0180d303, 0x7f0540c3, - 0x0480ef28, 0xc3ef147f, 0xe454f513, 0xcb0e12f9, - 0xe08e8375, 0xefce10f5, 0x94d3eece, 0xe5264000, - 0x12fe5410, 0x83754b0f, 0xe5f0ed8e, 0xfd014410, - 0xf50744eb, 0x85f0ed82, 0x56858257, 0xe330e083, - 0x801e0901, 0xe934c2d4, 0x405495c3, 0x2234d202, - 0x00000f22, 0x90113030, 0x93e40010, 0x109010f5, - 0xf593e410, 0x90101210, 0x22501112, 0xe730e2e5, - 0x0310120e, 0x303030c2, 0xfc101203, 0xe5213320, - 0x2094c3fe, 0xf9530950, 0x30fe75f7, 0xe508f943, - 0x03e730f2, 0xe57ff953, 0xd37054f1, 0xdf500094, - 0x00000022, 0x8f588e22, 0x8d5a8c59, 0x8b5c8a5b, - 0x015e755d, 0xf55ff5e4, 0x1262f560, 0x83753707, - 0xc4ffe0d0, 0x61f50f54, 0x85661e12, 0xe5d35e59, - 0xe55b955e, 0x7807125a, 0x07124b50, 0xbc837510, - 0x125e45e0, 0x83753607, 0x5e45e0be, 0x75360712, - 0x45e0c083, 0x5faff05e, 0x081260e5, 0x360a127b, - 0x007e62af, 0x5cac5dad, 0xe5490412, 0x7e5eaf61, - 0x0503b400, 0x80e21d12, 0xac5dad07, 0x1713125c, - 0x11025e05, 0x1007127a, 0xe0bc8375, 0x07124045, - 0xbe837536, 0x124045e0, 0x83753607, 0x4045e0c0, - 0x588e22f0, 0x5a75598f, 0x75017901, 0xfbe4015b, - 0x75370712, 0x54e0ae83, 0x0812ff1a, 0x13c4e068, - 0xeffe0754, 0x65ee0c70, 0x90077035, 0xb4e02f07, - 0x35af0d01, 0x0e12007e, 0xcfebcf05, 0xe5211e02, - 0x45026459, 0x7f047058, 0x7f028001, 0x4559e500, - 0x7e047058, 0x7e028001, 0x604fee00, 0x49418523, - 0xe54b4085, 0x70584559, 0xfe5aaf2c, 0xfccde9cd, - 0x58aa59ab, 0xaf360a12, 0x12007e5b, 0x1580211e, - 0x007e5baf, 0x90211e12, 0x07122607, 0x1249e542, - 0x4be53e07, 0xaffde4f0, 0x12fcfe35, 0x8c222209, - 0x12658d64, 0x3c40e708, 0x644565e5, 0x09121070, - 0x3ee5c311, 0x40760712, 0xa208123b, 0x3ee51880, - 0x403895c3, 0x383e851d, 0x05603ee5, 0x80393f85, - 0x39398503, 0x07123a8f, 0x123ee5b5, 0x3fe56007, - 0x3b8022f0, 0x644565e5, 0x07121170, 0x1205406c, - 0x1f80ab08, 0xe54b0712, 0xe522f041, 0x3895c33c, - 0x3c851d40, 0x603ce538, 0x393d8505, 0x39850380, - 0x123a8f39, 0x3ce5b507, 0xe5600712, 0x1222f03d, - 0x38e5ac07, 0xe5600712, 0x8c22f039, 0x12648d63, - 0x3c40e708, 0x634564e5, 0x09121070, 0x3ee5c311, - 0x40760712, 0xa208123b, 0x3ee51880, 0x403895c3, - 0x383e851d, 0x05603ee5, 0x80393f85, 0x39398503, - 0x07123a8f, 0x123ee5b5, 0x3fe56007, 0x3b8022f0, - 0x634564e5, 0x07121170, 0x1205406c, 0x1f80ab08, - 0xe54b0712, 0xe522f041, 0x3895c33c, 0x3c851d40, - 0x603ce538, 0x393d8505, 0x39850380, 0x123a8f39, - 0x3ce5b507, 0xe5600712, 0x1222f03d, 0x38e5ac07, - 0xe5600712, 0xe522f039, 0x08e5fe0d, 0x0544548e, - 0x157555f5, 0x1282f50f, 0x17122d0f, 0x05312025, - 0x80031575, 0x0b157503, 0x94c30ae5, 0x12385001, - 0x31202014, 0x05150506, 0x15048015, 0xe5151515, - 0x0194c30a, 0x14122150, 0x04312020, 0x02801505, - 0x0ae51515, 0x500194c3, 0x2a0f120e, 0x20251712, - 0x15050531, 0xe52a0f12, 0x0408b415, 0x0280017f, - 0x15e5007f, 0x7e0407b4, 0x7e028001, 0x604fee00, - 0x227f0502, 0x85825585, 0x15e58354, 0x251712f0, - 0x37071222, 0x74ae8375, 0x360712ff, 0xf51a54e0, - 0x13c4e034, 0x35f50754, 0x2460fe24, 0x3c60fe24, - 0x63700424, 0xe52d3175, 0xb674fd08, 0x749f0712, - 0x220790bc, 0x74a20712, 0xc0071290, 0x3c809274, - 0xe53a3175, 0xba74fd08, 0x749f0712, 0x220790c0, - 0x74c30712, 0xc00712c4, 0x2080c874, 0xe5353175, - 0xb874fd08, 0x749f0712, 0x44edffbe, 0x22079007, - 0xefa3f0cf, 0x12c274f0, 0xc674c007, 0x0744edff, - 0xa3f0cfa3, 0x7522f0ef, 0x8e220134, 0x8c598f58, - 0x8a5b8d5a, 0x755d8b5c, 0xf5e4015e, 0x661e125f, - 0xd35e5985, 0x5b955ee5, 0x07125ae5, 0xe5575078, - 0x705c455d, 0x37071230, 0xe5928375, 0x3607125e, - 0xe5c68375, 0x3607125e, 0xe5c88375, 0x3607125e, - 0xe5908375, 0x3607125e, 0xe5c28375, 0x3607125e, - 0x80c48375, 0x3f071203, 0xaff05ee5, 0xad007e5f, - 0x125cac5d, 0x5eaf4904, 0x5dad007e, 0x0b125cac, - 0x025e05d9, 0x5dabcf14, 0x5bad5caa, 0x59af5aac, - 0x1b0258ae, 0x8d5c8c7b, 0x8b5e8a5d, 0x0160755f, - 0xf561f5e4, 0x1263f562, 0x608f661e, 0x9560e5d3, - 0x125ce55d, 0x61507807, 0x5e455fe5, 0x07122770, - 0xb6837537, 0x071260e5, 0xb8837536, 0x071260e5, - 0xba837536, 0xaff060e5, 0xe5007e61, 0x7d081262, - 0x80360a12, 0x24079019, 0xe5420712, 0x36071260, - 0xe48e8375, 0x74360712, 0x36071201, 0x63aff0e4, - 0x5fad007e, 0x04125eac, 0x7e60af49, 0xac5fad00, - 0x8b12125e, 0x15026005, 0xf5e42258, 0xaf59f558, - 0x0744ef08, 0x837582f5, 0xc4fde0d0, 0x5af50f54, - 0xf50744ef, 0x80837582, 0x12f00174, 0x83759a08, - 0xf045e582, 0xf50744ef, 0x8a837582, 0x12f0ff74, - 0x07127419, 0xbc837537, 0x12ef54e0, 0x83753607, - 0xef54e0be, 0x75360712, 0x54e0c083, 0x360712ef, - 0xe0bc8375, 0x07121044, 0xbe837536, 0x121044e0, - 0x83753607, 0x1044e0c0, 0xe558aff0, 0x7b081259, - 0xe4360a02, 0x017d58f5, 0x35af59f5, 0x0912fcfe, - 0x37071222, 0x74b68375, 0x36071210, 0x74b88375, - 0x36071210, 0x74ba8375, 0x36071210, 0x74bc8375, - 0x36071210, 0x74be8375, 0x36071210, 0x74c08375, - 0x36071210, 0xe4908375, 0x75360712, 0x12e4c283, - 0x83753607, 0x0712e4c4, 0x92837536, 0x360712e4, - 0xe4c68375, 0x75360712, 0xf0e4c883, 0xe5fe58af, - 0x7d081259, 0xe5360a02, 0x6ce430e2, 0xc054e7e5, - 0x64704064, 0x54c409e5, 0x08e5fe30, 0xe025e025, - 0xfe4ec054, 0x4e3f54ef, 0xae2be5fd, 0xc302782a, - 0xce33ce33, 0x82f5f9d8, 0xf0ed838e, 0x2aae2be5, - 0x33c30278, 0xd8ce33ce, 0x82f5fff9, 0xe5a3838e, - 0x828ff0fe, 0xa3a3838e, 0x8ff0fde5, 0xa3838e82, - 0xfce5a3a3, 0x2be5c3f0, 0x2ae5fa94, 0x08500094, - 0x2be52b05, 0x2a050270, 0xe4ffe422, 0x56f558f5, - 0x827457f5, 0xb70e12fc, 0xf5e0838c, 0xf07f5410, - 0x804410e5, 0xed4b0f12, 0x120a7ef0, 0x8375b70e, - 0xe020e0a0, 0x05f4de26, 0x7057e557, 0xe5560502, - 0xfd012414, 0xd3fc33e4, 0xe59d57e5, 0xd9409c56, - 0x20940ae5, 0x0a050250, 0xc208e143, 0xb70e1231, - 0xe0a68375, 0x12651255, 0x31d20370, 0x2231c222, - 0xe0260790, 0xf5e0a3fa, 0xe0838a82, 0x39e541f5, - 0x404195c3, 0x9539e526, 0xee9fc341, 0x40780712, - 0x80017c04, 0xe5007c02, 0x603f6441, 0x80017b04, - 0xec007b02, 0x0529605b, 0xc3288041, 0x399541e5, - 0x12ee9fc3, 0x04407807, 0x0280017f, 0x41e5007f, - 0x017e0460, 0x007e0280, 0x04605eef, 0x03804115, - 0x85413985, 0xe522403a, 0x60e430e2, 0xe230e1e5, - 0x7009e55b, 0x80017f04, 0xe5007f02, 0x7e047008, - 0x7e028001, 0x605fee00, 0xf8f95343, 0xe430e2e5, - 0x30e1e53b, 0xfa432ee2, 0xfbfa5302, 0x9010f5e4, - 0x10e57094, 0x30e1e5f0, 0x9490e7e2, 0x1065e070, - 0xfa430360, 0x90100504, 0x10e57094, 0x12e670f0, - 0xe1800600, 0x53fdfa53, 0xc080fbfa, 0x12548f22, - 0xe1e50600, 0x7f04e030, 0x7f028001, 0xd37ee500, - 0x04400594, 0x0280017e, 0x4fee007e, 0x54853d60, - 0x20e2e511, 0xce7432e1, 0x303c1b12, 0x017d04e7, - 0x007d0280, 0x838e828f, 0x04e630e0, 0x0280017f, - 0x5def007f, 0x1c121570, 0x12ce7467, 0xe6303c1b, - 0x8044e007, 0x80f943f0, 0x22f31712, 0xe5f70e12, - 0x25e02516, 0xf53024e0, 0x1a34e482, 0x93e483f5, - 0x16e50ff5, 0xe025e025, 0x82f53124, 0xf51a34e4, - 0xf593e483, 0x180f120e, 0x0fe510f5, 0x0e12f054, - 0x8c8375ca, 0x0fe5f0ef, 0x120ce030, 0x8375b70e, - 0x4044e086, 0x120a80f0, 0x8375b70e, 0xbf54e086, - 0x440f12f0, 0xe5828375, 0x7f22f00e, 0xb3161205, - 0x12b70e12, 0x0274e60e, 0xfe8e74f0, 0x12b70e12, - 0xf0efbe0e, 0x12701575, 0x34208a1e, 0x10157505, - 0x15750380, 0x8a1e1250, 0x74043420, 0x74028010, - 0xf51525f0, 0xd40e1215, 0x1012f0ef, 0x17342091, - 0x306415e5, 0x10740c60, 0x15f51525, 0xe40380b4, - 0x0e1215f5, 0x22f0efd4, 0x2a0790e4, 0x12f0a3f0, - 0x83753707, 0x7f54e082, 0xe0360712, 0x12f08044, - 0x08123d00, 0xa0837598, 0x1ae020e0, 0xe02b0790, - 0x0670f004, 0xe02a0790, 0x0790f004, 0x10b4e02a, - 0xb4e0a3e1, 0x44eedc00, 0x44effca6, 0x8c82f507, - 0x32f5e083, 0xfea844ee, 0xf50744ef, 0xe0838e82, - 0x122233f5, 0x83759808, 0x54c4e0d0, 0x4375fd0f, - 0xff447501, 0x74b70812, 0x3b75f004, 0x6014ed01, - 0x0b60140c, 0x240f6014, 0x800b7003, 0x12008009, - 0xf004b408, 0x08120680, 0xf00474b4, 0xfe8244ee, - 0xf50744ef, 0xe5838e82, 0xcb081245, 0xe5828375, - 0x36071231, 0xe0868375, 0x22f00844, 0x000f1f01, - 0x90002003, 0x920f2000, 0x940f2100, 0x960f2200, - 0x980f2300, 0x9a0f2400, 0x9c0f2500, 0x9e0f2600, - 0xa00f2700, 0xa2012001, 0xa4012101, 0xa6012201, - 0xa8012301, 0xaa012401, 0xac012501, 0xae012601, - 0xb0012701, 0xb4012801, 0xb60f2800, 0xb80f2840, - 0xcb012861, 0xeecacbef, 0xe4017fca, 0x704aebfd, - 0xf508e524, 0x12b67482, 0x08e52c08, 0xb87482f5, - 0xe52c0812, 0x7482f508, 0x2c0812ba, 0x007c007e, - 0x80360a12, 0x26079012, 0xe5420712, 0x0790f041, - 0x42071224, 0x12f040e5, 0x83753707, 0x0712e48e, - 0x12017436, 0xf0e43607, 0x26f5e422, 0xe15327f5, - 0x752af5fe, 0x08f5012b, 0x1612017f, 0x1c3030b3, - 0xe4291a90, 0x9010f593, 0x93e4f91f, 0x009010f5, - 0xf593e441, 0xf90f9010, 0x10f593e4, 0x1612027f, - 0x550f12b3, 0x1612037f, 0x060012b3, 0xe730e2e5, - 0x00101209, 0x12033030, 0x00020011, 0x0be5f047, - 0xe025e025, 0x82f58224, 0xf50734e4, 0x88742283, - 0x4408e5fe, 0x82f5ff07, 0x22e0838e, 0x4408e5f0, - 0x2282f507, 0xc054e0f0, 0x838e828f, 0x44ef22f0, - 0x7582f507, 0x54e08683, 0x0094d310, 0x0790f022, - 0xf004e015, 0x44effe22, 0x8e82f507, 0x8e22e083, - 0x12618f60, 0xffe4661e, 0xeeceedce, 0xe56195d3, - 0x78071260, 0x20743940, 0xe482f52e, 0x83f50334, - 0xff0370e0, 0x08122680, 0x9fc3fdef, 0xedcf1e40, - 0x704aebcf, 0x12428d0b, 0x41f5fb08, 0x0c80408e, - 0xf5ef0812, 0xfb081238, 0x3a8e39f5, 0x22bc801e, - 0xe5015875, 0x120c7035, 0xf5e0d907, 0xe507124a, - 0xe54cf5e0, 0x0c04b435, 0xe0f10712, 0x07124af5, - 0x4cf5e0fd, 0x01b435e5, 0x80017f04, 0xe5007f02, - 0x0402b435, 0x0280017e, 0x4fee007e, 0x08120c60, - 0x4af5e009, 0xe0150812, 0x41854cf5, 0x4b408549, - 0x015b7522, 0x12240790, 0x54e04207, 0x94d3ff1f, - 0x8f045002, 0xef058058, 0x58f5fe24, 0x1894c3ef, - 0x59750540, 0xef048018, 0x8559f504, 0x58af5a43, - 0x59ad007e, 0x5bab007c, 0x1512007a, 0x7e5aaf41, - 0x8c171200, 0x007e5baf, 0x907f1a02, 0x93e4fd10, - 0xf02e0790, 0x122d1412, 0x34e5cf19, 0x07123570, - 0xce837537, 0x1313ffe0, 0xf5075413, 0x240f5436, - 0x240b60fe, 0x240a60fe, 0x02187003, 0x1e026f1d, - 0x14101252, 0x1255f5e4, 0x5505461d, 0x94c355e5, - 0x22f44005, 0xedc3fce4, 0xf5effa9f, 0x00827583, - 0x93e4ff79, 0xa3cc6ccc, 0xf6daf8d9, 0xe430e2e5, - 0xede58c02, 0xefffff24, 0xf5ff8275, 0x6c93e483, - 0x017f0370, 0x22007f22, 0x75b70e12, 0xf0e48083, - 0x074408e5, 0x75b00e12, 0x0e128483, 0x868375b5, - 0x75b50e12, 0x54e08c83, 0xb60e12f3, 0x128e8375, - 0x8375b50e, 0xfb54e094, 0x071222f0, 0x8e837537, - 0x360712e4, 0x07120174, 0x0812e436, 0x8c8375cb, - 0x122044e0, 0x54e0cb08, 0x8474f0df, 0xf5820885, - 0x7f54e083, 0x8044e0f0, 0x567522f0, 0xf5fde401, - 0xfe35af57, 0x220912fc, 0x121d1c12, 0x1b123b1e, - 0x7e57afcc, 0x7c56ad00, 0x49041200, 0x007e56af, - 0x75ee1102, 0xfde40156, 0x35af57f5, 0x0912fcfe, - 0x1d1c1222, 0x123b1e12, 0x57afcc1b, 0x56ad007e, - 0x0412007c, 0x7e56af49, 0xee110200, 0x1216f5e4, - 0xe5fef70e, 0xff054408, 0x8f180f12, 0xf0838e82, - 0x16e51605, 0x401494c3, 0x1208e5e6, 0xf0e4de0e, - 0x58f5e422, 0x5af559f5, 0x58adfeff, 0x220912fc, - 0x007e047f, 0x007c58ad, 0x7f220912, 0xad007e02, - 0x02007c58, 0x3ce52209, 0xe5fc3e25, 0xfb002442, - 0xecfa33e4, 0x12ea9bc3, 0x0b407807, 0x3de5428c, - 0x41f53f25, 0x1222408f, 0x74221809, 0x8518f584, - 0x19851908, 0x83188582, 0xf07f54e0, 0xf08044e0, - 0xf08044e0, 0x704eef22, 0x3707120b, 0xe0d28375, - 0x22f0df54, 0x75370712, 0x44e0d283, 0x7522f020, - 0x07900158, 0x42071226, 0xf53f54e0, 0x3f071241, - 0xf53f54e0, 0x56752240, 0x57f5e402, 0xafbd1d12, - 0xad007e57, 0x02007c56, 0xf5e44904, 0xf541f542, - 0xf538f540, 0x223af539, 0xff0754ef, 0xf854f9e5, - 0x22f9f54f, 0xfee4017f, 0xffbe0e0f, 0x0e1222fb, - 0x12f0efd4, 0x00229110, 0x00000000, 0x00000000, + 0x058d04d8, 0x040f702f, 0x00868013, 0x0380001d, + 0x05301000, 0x06000008, 0x0484860b, 0x06420001, + 0x04818607, 0x02800625, 0x020e0008, 0x07c00000, + 0x050fd009, 0x040fd008, 0x05301000, 0x06000008, + 0x04848615, 0x06420001, 0x05818611, 0x02800625, + 0x007a0102, 0x04000101, 0x05600809, 0x050f80ff, + 0x073fa00a, 0x06000001, 0x020e0008, 0x04848620, + 0x06420001, 0x0481861c, 0x02800625, 0x030e0009, + 0x07c00000, 0x052e400f, 0x00208040, 0x03800605, + 0x070fc0ff, 0x040f8010, 0x032fa009, 0x03800628, + 0x0c83b152, 0x00000000, 0x00000000, 0x0000400e, + 0x00000808, 0x00000803, 0x00011f0f, 0x02080b02, + 0xe6e5610b, 0x7f04e630, 0x7f028001, 0x30e2e500, + 0x017e04e4, 0x007e0280, 0x08605fee, 0xe4f7f953, + 0x0b80fef5, 0x16120a7f, 0xf7f953b3, 0x7530fe75, + 0xf5e408fc, 0x08f943fd, 0x06000222, 0x000f1f01, + 0x75002003, 0xf5e40151, 0xf553f552, 0x7f7ef552, + 0x3d040204, 0x520536c2, 0x94d352e5, 0x7505400c, + 0x36d20152, 0x740c0790, 0x74a3f007, 0xf5e4f0ff, + 0x90f0a30c, 0xa3f01407, 0x200b75f0, 0xf5e409f5, + 0xd308e508, 0x03403094, 0x12090402, 0x0b150600, + 0x047008e5, 0x0280017f, 0x09e5007f, 0x017e0470, + 0x007e0280, 0x05605fee, 0xd2f31712, 0xf7e15335, + 0x094508e5, 0x250be5ff, 0x24e025e0, 0xe482f583, + 0x83f50734, 0xe285f0ef, 0xd352e520, 0x0d400194, + 0xe02a1b12, 0x4064a054, 0x04020370, 0xf8f95300, + 0xe4709490, 0x10f5e0f0, 0x1e1209af, 0xef08af74, + 0x82f50844, 0xe0808375, 0x44ef29f5, 0x7582f507, + 0xf5e09e83, 0xd3405422, 0x1e400094, 0xf05429e5, + 0x1b122170, 0x8044e02a, 0x5422e5f0, 0x70086530, + 0x2a1b1209, 0xf0bf54e0, 0x1b120980, 0xf040742a, + 0x12000402, 0x8375491b, 0xf0ff74ae, 0x007e08af, + 0xf50744ef, 0xe5fde082, 0x25e0250b, 0xf58124e0, + 0x0734e482, 0xf0ed83f5, 0xe00e0790, 0x44eff004, + 0x7582f507, 0xf5e09883, 0x5a1b1228, 0x1b120c40, + 0x0144e02a, 0x02691b12, 0x08affb03, 0x8074007e, + 0x8dcdefcd, 0xe083f582, 0x120ae030, 0x44e02a1b, + 0x0402f020, 0x2a1b1200, 0xf0df54e0, 0x12ae44ee, + 0xe430711b, 0x00040203, 0x1b129e74, 0x03e0203c, + 0x8f000402, 0xe0838e82, 0x0203e020, 0x1b120004, + 0x1044e02a, 0x4408e5f0, 0x7582f506, 0x44e09e83, + 0x08aff004, 0x44ef007e, 0xe082f506, 0x1234e220, + 0x44e02a1b, 0xe4e5f008, 0x7d04e630, 0x7d028001, + 0xc37ee500, 0x04500494, 0x0280017c, 0x4dec007c, + 0x35c20560, 0xee000402, 0x1b12d244, 0xf0404471, + 0x12000402, 0x54e02a1b, 0x1b12f0f7, 0xd2837549, + 0xf0bf54e0, 0xe0140790, 0x7ee5f004, 0x7e750370, + 0x7e08af01, 0x5a1b1200, 0x1b121240, 0x0144e02a, + 0xe0291b12, 0x1b120254, 0x00040269, 0xe02a1b12, + 0x1b120244, 0xfe54e029, 0xee35c2f0, 0x828f8044, + 0xf5e083f5, 0x44e35417, 0x9074f010, 0x4408e5fc, + 0x82f5fd07, 0x54e0838c, 0x0207903f, 0xc054e0f0, + 0x838c828d, 0x129274f0, 0x07903c1b, 0x501b1203, + 0x1b128274, 0x0407903c, 0x74501b12, 0x3c1b12b4, + 0x12050790, 0x9474501b, 0x4408e5fe, 0x411b1206, + 0xe03010f5, 0x8037d204, 0xe537c202, 0x8f7f5410, + 0xf0838e82, 0x12304430, 0x80543a1b, 0x400094d3, + 0x8039d204, 0x8f39c202, 0xe0838e82, 0x12f08044, + 0x40543a1b, 0x400094d3, 0x803ad204, 0x8f3ac202, + 0xe0838e82, 0x74f04044, 0x08e5fe92, 0x1b120644, + 0x04e73041, 0x028038d2, 0x828f38c2, 0x54e0838e, + 0x1e12f07f, 0x0af5e407, 0x80020320, 0x03433003, + 0x20171912, 0x03800202, 0x12034230, 0x3030970c, + 0x17191206, 0x12970c12, 0x1b124f0d, 0xfb54e02a, + 0xc30ae5f0, 0x46400194, 0x1208e143, 0x44e02a1b, + 0xe4e5f004, 0x122ae720, 0x8375491b, 0x0854e0d2, + 0x400094d3, 0x80017f04, 0xe5007f02, 0x0194c30a, + 0x017e0440, 0x007e0280, 0x05605eef, 0x80981d12, + 0x491b1217, 0xe0d28375, 0x02f00844, 0x1b120004, + 0xd2837549, 0xf0f754e0, 0x7f071e12, 0xb3161208, + 0x12fe8e74, 0x838e491b, 0x5410f5e0, 0x10e5f0fe, + 0xe5ff0144, 0x44edfd08, 0xef82f507, 0x5410e5f0, + 0x44edfffe, 0xef82f507, 0x75481b12, 0x44e08683, + 0x481b1210, 0xf01044e0, 0xe02a1b12, 0x0144fd54, + 0x2a1b12ff, 0x691b12ef, 0xe50c3230, 0xf5084408, + 0x82837582, 0xaff00574, 0x5918120b, 0x08251074, + 0x000208f5, 0xe5090585, 0x0794d309, 0x00020350, + 0xd37ee582, 0x04400094, 0x0280017f, 0x7ee5007f, + 0x50fa94c3, 0x80017e04, 0xee007e02, 0x0502605f, + 0x0b35307e, 0x7f01e143, 0xb3161209, 0x53580002, + 0x0002fee1, 0x8f6a8e58, 0x8d6c8c6b, 0x016e756d, + 0x75016f75, 0xf5e40170, 0xf574f573, 0x2f079075, + 0xf53cf5f0, 0xf546f53e, 0xf53df547, 0xe56ff53f, + 0xe50e706f, 0x126a456b, 0x83753707, 0x803a7480, + 0x37071208, 0x74808375, 0x3607121a, 0xe0868375, + 0xe4f00844, 0x74c36ef5, 0xff6e953f, 0x75680812, + 0xf0ef8283, 0x12741912, 0x33e5d308, 0x070912f0, + 0x40be0812, 0x706fe5e1, 0x3707120b, 0x74808375, + 0x0980f036, 0x75370712, 0x16748083, 0x016e75f0, + 0x75370712, 0x6ee5b483, 0x741912f0, 0x6e253f74, + 0x34e482f5, 0xe583f500, 0xbf74f033, 0x82f56e25, + 0x120034e4, 0xd840be08, 0xf570f5e4, 0xf547f546, + 0x0709126e, 0xfee083f5, 0xe0d30812, 0x0024007c, + 0xfe3eecff, 0xefd33bad, 0x509cee9d, 0x80017b04, + 0xe5007b02, 0x7a047070, 0x7a028001, 0x605aeb00, + 0x466e8506, 0xd3017075, 0x9cee9def, 0x017f0450, + 0x007f0280, 0x01b470e5, 0x80017e04, 0xef007e02, + 0x8503605e, 0x6e05476e, 0x7f646ee5, 0x46e5a370, + 0x47e50560, 0x85037eb4, 0x6fe54746, 0x46850870, + 0x77478576, 0x74c30e80, 0xf546957f, 0x7f74c378, + 0x79f54795, 0x37706fe5, 0x476546e5, 0x73750c70, + 0x01747501, 0x3df53cf5, 0xf5e43580, 0x47e5c34e, + 0x3cf54695, 0x71f513c3, 0x72f54625, 0x403f94c3, + 0x3df5e405, 0x74c34080, 0xf572953f, 0xe537803d, + 0x70476546, 0x0173750f, 0xf5017575, 0x753ff53e, + 0x2280014e, 0xc34ef5e4, 0x469547e5, 0x13c33ef5, + 0x462571f5, 0x94d372f5, 0xe405503f, 0x06803ff5, + 0xc12472e5, 0x6f053ff5, 0x94c36fe5, 0x02035002, + 0x6de57304, 0x02706c45, 0x74e50480, 0x07907545, + 0x017ff02f, 0x04603ee5, 0x14703ce5, 0xf53cf5e4, + 0xf53ef53d, 0xdf08123f, 0x02f00470, 0x7a80b106, + 0x95c33ce5, 0xe507403e, 0xff3e953c, 0xe5c30680, + 0xff3c953e, 0x95d376e5, 0x85054079, 0x03807a76, + 0xe57a7985, 0x7895c377, 0x77850550, 0x8503807b, + 0x7be57b78, 0x407a95d3, 0x957be530, 0xf53cf57a, + 0x7be5c33e, 0x07907a95, 0x3ce5f019, 0x71f513c3, + 0x72f57a25, 0x403f94c3, 0x3df5e405, 0x74c31f80, + 0xf572953f, 0x803ff53d, 0x3cf5e414, 0x07903ef5, + 0x0812f019, 0xf00370df, 0x01740380, 0x680812f0, + 0xe0d08375, 0xadfe0f54, 0x7e02703c, 0x020fbe07, + 0xfbee807e, 0x749bd3ef, 0x4098f880, 0x3cf5e41f, + 0x08123ef5, 0xf00370df, 0x01741280, 0xfb08e5f0, + 0xf50744eb, 0xd2837582, 0xf01044e0, 0xebfb08e5, + 0x82f50944, 0xed9e8375, 0x0744ebf0, 0x837582f5, + 0x12f0edca, 0x83756808, 0x22f0efcc, 0x074408e5, + 0x837582f5, 0xf054e0bc, 0x4408e5f0, 0x7582f507, + 0x54e0be83, 0x08e5f0f0, 0x82f50744, 0xe0c08375, + 0xe5f0f054, 0xf5074408, 0x90f02282, 0xfee02807, + 0x82f5e0a3, 0x8522838e, 0x41854242, 0x40408541, + 0xf52fc074, 0x3e027482, 0x42e583f5, 0x2fe074f0, + 0x027482f5, 0x2283f53e, 0xfd2942e5, 0xe5fc33e4, + 0xec9dc33c, 0x74f88064, 0xf5229880, 0x0790e083, + 0xfd1f5422, 0xe0a3fae0, 0x838a82f5, 0x9022f0ed, + 0xfce02207, 0x82f5e0a3, 0x9022838c, 0xedff2407, + 0xf0cf0744, 0x22f0efa3, 0x85383885, 0x3a853939, + 0x2fc0743a, 0x027482f5, 0x2283f53e, 0xff260790, + 0xcf0744ed, 0xf0efa3f0, 0xa074f022, 0x7482f52f, + 0x83f53e02, 0x25c07422, 0xe482f511, 0x83f50134, + 0x25007422, 0xe482f511, 0x83f50234, 0x25607422, + 0xe482f511, 0x83f50334, 0x25807422, 0xe482f511, + 0x83f50334, 0x25e07422, 0xe482f511, 0x83f50334, + 0x25407422, 0xe482f511, 0x83f50634, 0x2f807422, + 0x027482f5, 0x2283f53e, 0x82e583f5, 0x82f50744, + 0x22f040e5, 0x11254074, 0x34e482f5, 0x2283f502, + 0x1125c074, 0x34e482f5, 0x2283f503, 0x11250074, + 0x34e482f5, 0x2283f506, 0x11252074, 0x34e482f5, + 0x2283f506, 0xedfd08e5, 0x82f50744, 0xf041e522, + 0x016465e5, 0x7e226445, 0x007afb00, 0x22007cfd, + 0x11252074, 0x34e482f5, 0xa0742202, 0x82f51125, + 0x220334e4, 0x007e08af, 0xf50744ef, 0x3e852282, + 0x413f8542, 0x8522408f, 0x3d85423c, 0x22408f41, + 0x903f4575, 0xf0e42007, 0x83f522a3, 0x05f032e5, + 0xc36ee56e, 0xf0224094, 0x064408e5, 0x742282f5, + 0xf56e2500, 0x0034e482, 0xe52283f5, 0x906c456d, + 0xe4222f07, 0xd33ce5f9, 0x74223e95, 0x82f52e80, + 0xf50234e4, 0x7422e083, 0x82f52ea0, 0xf50234e4, + 0x7422e083, 0xf56e2580, 0x0034e482, 0xfd422522, + 0x22fc33e4, 0x85424285, 0x40854141, 0x4ced2240, + 0x09020360, 0x704eeff2, 0x26079037, 0xe0960712, + 0xd90712fd, 0x0790f0ed, 0x96071228, 0x0712fde0, + 0x12f0ede5, 0x54e09307, 0x0812fd1f, 0xed83f584, + 0x240790f0, 0xe0960712, 0x12fd1f54, 0xf0ed3808, + 0x4e0464ef, 0x07903770, 0x96071226, 0x0712fde0, + 0x90f0edf1, 0x07122807, 0x12fde096, 0xf0edfd07, + 0xe0930712, 0x12fd1f54, 0x83f58e08, 0x0790f0ed, + 0x96071224, 0xfd1f54e0, 0xed440812, 0x0164eff0, + 0x7d04704e, 0x7d028001, 0x0264ef00, 0x7f04704e, + 0x7f028001, 0x604def00, 0x26079078, 0xe0420712, + 0x090812ff, 0x3e0712ef, 0x0812ffe0, 0x90f0ef15, + 0x07122207, 0x1f54e042, 0x500812ff, 0x0790f0ef, + 0x42071224, 0xff1f54e0, 0xef5c0812, 0x071222f0, + 0x12f0e4d9, 0xf0e4e507, 0xf5840812, 0x12f0e483, + 0x14743808, 0xf10712f0, 0x0712f0e4, 0x12f0e4fd, + 0x83f58e08, 0x0812f0e4, 0xf0147444, 0xe4090812, + 0x150812f0, 0x0812f0e4, 0x12f0e450, 0x14745c08, + 0x648c22f0, 0x668a658d, 0xf5e4678b, 0x704eef69, + 0x161d0203, 0xe568f5e4, 0x70664567, 0x37071232, + 0xe4908375, 0x75360712, 0x12e4c283, 0x83753607, + 0x0812e4c4, 0x12297073, 0x83753707, 0x0712e492, + 0xc6837536, 0x360712e4, 0xe4c88375, 0x901180f0, + 0x07122607, 0x0812e442, 0x12057073, 0xf0e43f07, + 0x12161d12, 0x67e5801e, 0x33706645, 0x75370712, + 0x41e59083, 0x75360712, 0x41e5c283, 0x75360712, + 0x0812c483, 0x12297071, 0x83753707, 0x1240e592, + 0x83753607, 0x1240e5c6, 0x83753607, 0x900e80c8, + 0x07122607, 0x71081242, 0x07120670, 0xf040e53f, + 0x007e69af, 0x66ac67ad, 0x12490412, 0x83753707, + 0x94d3e0ca, 0x050c5000, 0xc368e568, 0x03500594, + 0x224b0a02, 0x75f7f953, 0xf5e410fc, 0x30fe75fd, + 0xf943fff5, 0x20e6e508, 0xff780be7, 0xfdd8f6e4, + 0x80fee653, 0xe4087809, 0x53fdd8f6, 0x8175fee6, + 0xa8f5e480, 0xa9c2a8d2, 0xe2e5afd2, 0x2005e520, + 0x038002e6, 0xe502e143, 0x0ee020e2, 0x7f000090, + 0xe4087e00, 0xfcdfa3f0, 0x0b02fade, 0x01fa43b5, + 0xf0c0e0c0, 0x82c083c0, 0x1112d0c0, 0xd0d0d018, + 0xd083d082, 0x53e0d0f0, 0x0232fefa, 0x93e4d51a, + 0x93e4f8a3, 0xdf08f6a3, 0xe42980f9, 0x54f8a393, + 0xc80c2407, 0x54c433c3, 0xc820440f, 0xf4044083, + 0x46018056, 0x80e4dff6, 0x0402010b, 0x40201008, + 0xff0f9080, 0x93017ee4, 0xffa3c160, 0xe5303f54, + 0xfe1f5409, 0x60a393e4, 0x54cf0e01, 0x60e025c0, + 0x80b840ad, 0x8d608cfe, 0xe7081261, 0x0d402074, + 0x7482f52f, 0x83f53e03, 0x80f03ee5, 0x82f52f0b, + 0xf53e0374, 0xf03ce583, 0x95d33ce5, 0xe53c403e, + 0x70604561, 0x0912e910, 0x123ee511, 0x3b407507, + 0x80a20812, 0xc33ee518, 0x1d403895, 0xe5383e85, + 0x8505603e, 0x0380393f, 0x8f393985, 0x2108123a, + 0x07123ee5, 0xf03fe5cd, 0xe5438022, 0x70604561, + 0x6c071219, 0x08120540, 0x122780ab, 0x08121809, + 0x1242e521, 0x41e5cd07, 0x3ce522f0, 0x403895c3, + 0x383c851d, 0x05603ce5, 0x80393d85, 0x39398503, + 0x08123a8f, 0x123ce521, 0x3de5cd07, 0x388522f0, + 0x39398538, 0x123a3a85, 0x38e52108, 0xe5cd0712, + 0x7f22f039, 0xb3161206, 0x12e41c12, 0x0e12b70e, + 0x0a44e0e6, 0xfe8e74f0, 0x12b70e12, 0xf0efbe0e, + 0xe53028e5, 0x0180d303, 0x750540c3, 0x03802014, + 0x12081475, 0x8375b70e, 0xf014e58a, 0x7505ffb4, + 0x06808012, 0x13c314e5, 0xf5e412f5, 0x127ff516, + 0x1312b818, 0xc30ae5a3, 0x09500194, 0x16e51605, + 0x401494c3, 0x20e4e5ea, 0x0e1228e7, 0xd28375b7, + 0xd30854e0, 0x04400094, 0x0280017f, 0x0ae5007f, + 0x400194c3, 0x80017e04, 0xef007e02, 0x1203605e, + 0x7fe5981d, 0x401194c3, 0xb70e1214, 0xe0d28375, + 0xe5f08044, 0x0fe720e4, 0x80981d12, 0xb70e120a, + 0xe0d28375, 0x12f07f54, 0x7422e41c, 0x82088580, + 0x17e583f5, 0xed0e12f0, 0x0790f0e4, 0x0e12e002, + 0x908375ca, 0x9274f0ef, 0x4408e5fe, 0x82f5ff07, + 0x54e0838e, 0x0790fdc0, 0x3f54e003, 0x8e828f4d, + 0x0790f083, 0x0e12e004, 0x828375ca, 0x0790f0ef, + 0xedffe005, 0x82f50744, 0xefb48375, 0x75b60e12, + 0x54e08083, 0x3730f0bf, 0x440f120a, 0xe0948375, + 0x30f08044, 0x0f120a38, 0x92837544, 0xf08044e0, + 0xe43028e5, 0x0a39201a, 0x75b70e12, 0x54e08883, + 0x3a20f07f, 0xb70e120a, 0xe0888375, 0x74f0bf54, + 0x0e12fe8c, 0xe0838eb7, 0x0e120f54, 0x868375b6, + 0xf0bf54e0, 0x064408e5, 0x75b00e12, 0xf0e48a83, + 0x704eef22, 0xd9071226, 0x0790fde0, 0x88071226, + 0xe0e50712, 0x280790fd, 0x12880712, 0x07128408, + 0x3808127f, 0x240790e0, 0xef850712, 0x704e0464, + 0xf1071229, 0x0790fde0, 0x88071226, 0xe0fd0712, + 0x280790fd, 0x12880712, 0x07128e08, 0x4408127f, + 0xfd1f54e0, 0x12240790, 0x64ef8807, 0x04704e01, + 0x0280017d, 0x64ef007d, 0x04704e02, 0x0280017f, + 0x4def007f, 0x08123560, 0x90ffe009, 0x07122607, + 0x12f0ef96, 0xffe01508, 0x12280790, 0xf0ef9607, + 0xe0500812, 0x12ff1f54, 0xf0ef9307, 0xe05c0812, + 0x90ff1f54, 0x07122407, 0x22f0ef96, 0x837582f5, + 0xe5f0e482, 0xf5074408, 0x838e2282, 0x5410f5e0, + 0x10e5f0fe, 0xe5ff0144, 0x44edfd08, 0x2282f507, + 0x54c415e5, 0x08e5ff07, 0x0844edfd, 0x837582f5, + 0x83752282, 0x4044e080, 0x4408e5f0, 0x7582f508, + 0xe5228a83, 0x25e02516, 0xf52f24e0, 0x1a34e482, + 0x93e483f5, 0x43220df5, 0xe14310e1, 0xfde15380, + 0x2210e185, 0xe02516e5, 0x3224e025, 0x34e482f5, + 0xe483f51a, 0x55852293, 0x83548582, 0x22f015e5, + 0x2054e2e5, 0x220094d3, 0x4054e2e5, 0x220094d3, + 0x064408e5, 0xfd2282f5, 0xebfb08e5, 0x82f50744, + 0x53f5e422, 0x40340f12, 0x80017f04, 0x12007f02, + 0x04403c0f, 0x0280017e, 0x4fee007e, 0x0f020370, + 0x10e185f7, 0x5302e143, 0xe1850fe1, 0x51f5e410, + 0x3f54e3e5, 0x0f1252f5, 0xad1d403c, 0x1251af52, + 0x60efb01c, 0x10e18508, 0x8040e143, 0xbfe1530b, + 0x120b0f12, 0xfb800600, 0x3f54e3e5, 0xe4e551f5, + 0x52f53f54, 0x40340f12, 0xaf52ad1d, 0xb01c1251, + 0x850860ef, 0xe14310e1, 0x530b8020, 0x0f12dfe1, + 0x0600120b, 0x0f12fb80, 0x7f044034, 0x7f028001, + 0x3c0f1200, 0x017e0440, 0x007e0280, 0x03604fee, + 0x220e0f12, 0x01001f01, 0x00002003, 0x02001102, + 0x10024010, 0x00000090, 0x00000000, 0x1f011f01, + 0x1257f5e4, 0x15123f16, 0x1012e4c6, 0xb7141256, + 0x12260790, 0x12e44207, 0xf0e43e07, 0x12561012, + 0x0790b714, 0x42071226, 0x071241e5, 0xf040e53e, + 0x007e57af, 0x007c56ad, 0xaf490412, 0x02007e56, + 0x90ffee11, 0xe0a32007, 0x56f5e4fd, 0xfcfe40f5, + 0x12fa56ab, 0x0f7f5111, 0xf5e4187d, 0xfe40f556, + 0xfa56abfc, 0xaf411512, 0x12007e56, 0xffe47f1a, + 0x1f7d56f5, 0xfcfe40f5, 0x22fa56ab, 0x55f5e422, + 0x74fd08e5, 0xed56f5a0, 0x57f50744, 0xe53028e5, + 0x0180d303, 0x7f0540c3, 0x0480ef28, 0xc3ef147f, + 0xe454f513, 0xcb0e12f9, 0xe08e8375, 0xefce10f5, + 0x94d3eece, 0xe5264000, 0x12fe5410, 0x83754b0f, + 0xe5f0ed8e, 0xfd014410, 0xf50744eb, 0x85f0ed82, + 0x56858257, 0xe330e083, 0x801e0901, 0xe934c2d4, + 0x405495c3, 0x2234d202, 0x00000f22, 0x90113030, + 0x93e40010, 0x109010f5, 0xf593e410, 0x90101210, + 0x22501112, 0xe730e2e5, 0x0310120e, 0x303030c2, + 0xfc101203, 0xe5213320, 0x2094c3fe, 0xf9530950, + 0x30fe75f7, 0xe508f943, 0x03e730f2, 0xe57ff953, + 0xd37054f1, 0xdf500094, 0x00000022, 0x8f588e22, + 0x8d5a8c59, 0x8b5c8a5b, 0x015e755d, 0xf55ff5e4, + 0x1262f560, 0x83753707, 0xc4ffe0d0, 0x61f50f54, + 0x85661e12, 0xe5d35e59, 0xe55b955e, 0x7807125a, + 0x07124b50, 0xbc837510, 0x125e45e0, 0x83753607, + 0x5e45e0be, 0x75360712, 0x45e0c083, 0x5faff05e, + 0x081260e5, 0x360a127b, 0x007e62af, 0x5cac5dad, + 0xe5490412, 0x7e5eaf61, 0x0503b400, 0x80e21d12, + 0xac5dad07, 0x1713125c, 0x11025e05, 0x1007127a, + 0xe0bc8375, 0x07124045, 0xbe837536, 0x124045e0, + 0x83753607, 0x4045e0c0, 0x588e22f0, 0x5a75598f, + 0x75017901, 0xfbe4015b, 0x75370712, 0x54e0ae83, + 0x0812ff1a, 0x13c4e068, 0xeffe0754, 0x65ee0c70, + 0x90077035, 0xb4e02f07, 0x35af0d01, 0x0e12007e, + 0xcfebcf05, 0xe5211e02, 0x45026459, 0x7f047058, + 0x7f028001, 0x4559e500, 0x7e047058, 0x7e028001, + 0x604fee00, 0x49418523, 0xe54b4085, 0x70584559, + 0xfe5aaf2c, 0xfccde9cd, 0x58aa59ab, 0xaf360a12, + 0x12007e5b, 0x1580211e, 0x007e5baf, 0x90211e12, + 0x07122607, 0x1249e542, 0x4be53e07, 0xaffde4f0, + 0x12fcfe35, 0x8c222209, 0x12658d64, 0x3c40e708, + 0x644565e5, 0x09121070, 0x3ee5c311, 0x40760712, + 0xa208123b, 0x3ee51880, 0x403895c3, 0x383e851d, + 0x05603ee5, 0x80393f85, 0x39398503, 0x07123a8f, + 0x123ee5b5, 0x3fe56007, 0x3b8022f0, 0x644565e5, + 0x07121170, 0x1205406c, 0x1f80ab08, 0xe54b0712, + 0xe522f041, 0x3895c33c, 0x3c851d40, 0x603ce538, + 0x393d8505, 0x39850380, 0x123a8f39, 0x3ce5b507, + 0xe5600712, 0x1222f03d, 0x38e5ac07, 0xe5600712, + 0x8c22f039, 0x12648d63, 0x3c40e708, 0x634564e5, + 0x09121070, 0x3ee5c311, 0x40760712, 0xa208123b, + 0x3ee51880, 0x403895c3, 0x383e851d, 0x05603ee5, + 0x80393f85, 0x39398503, 0x07123a8f, 0x123ee5b5, + 0x3fe56007, 0x3b8022f0, 0x634564e5, 0x07121170, + 0x1205406c, 0x1f80ab08, 0xe54b0712, 0xe522f041, + 0x3895c33c, 0x3c851d40, 0x603ce538, 0x393d8505, + 0x39850380, 0x123a8f39, 0x3ce5b507, 0xe5600712, + 0x1222f03d, 0x38e5ac07, 0xe5600712, 0xe522f039, + 0x08e5fe0d, 0x0544548e, 0x157555f5, 0x1282f50f, + 0x17122d0f, 0x05312025, 0x80031575, 0x0b157503, + 0x94c30ae5, 0x12385001, 0x31202014, 0x05150506, + 0x15048015, 0xe5151515, 0x0194c30a, 0x14122150, + 0x04312020, 0x02801505, 0x0ae51515, 0x500194c3, + 0x2a0f120e, 0x20251712, 0x15050531, 0xe52a0f12, + 0x0408b415, 0x0280017f, 0x15e5007f, 0x7e0407b4, + 0x7e028001, 0x604fee00, 0x227f0502, 0x85825585, + 0x15e58354, 0x251712f0, 0x37071222, 0x74ae8375, + 0x360712ff, 0xf51a54e0, 0x13c4e034, 0x35f50754, + 0x2460fe24, 0x3c60fe24, 0x63700424, 0xe52d3175, + 0xb674fd08, 0x749f0712, 0x220790bc, 0x74a20712, + 0xc0071290, 0x3c809274, 0xe53a3175, 0xba74fd08, + 0x749f0712, 0x220790c0, 0x74c30712, 0xc00712c4, + 0x2080c874, 0xe5353175, 0xb874fd08, 0x749f0712, + 0x44edffbe, 0x22079007, 0xefa3f0cf, 0x12c274f0, + 0xc674c007, 0x0744edff, 0xa3f0cfa3, 0x7522f0ef, + 0x8e220134, 0x8c598f58, 0x8a5b8d5a, 0x755d8b5c, + 0xf5e4015e, 0x661e125f, 0xd35e5985, 0x5b955ee5, + 0x07125ae5, 0xe5575078, 0x705c455d, 0x37071230, + 0xe5928375, 0x3607125e, 0xe5c68375, 0x3607125e, + 0xe5c88375, 0x3607125e, 0xe5908375, 0x3607125e, + 0xe5c28375, 0x3607125e, 0x80c48375, 0x3f071203, + 0xaff05ee5, 0xad007e5f, 0x125cac5d, 0x5eaf4904, + 0x5dad007e, 0x0b125cac, 0x025e05d9, 0x5dabcf14, + 0x5bad5caa, 0x59af5aac, 0x1b0258ae, 0x8d5c8c7b, + 0x8b5e8a5d, 0x0160755f, 0xf561f5e4, 0x1263f562, + 0x608f661e, 0x9560e5d3, 0x125ce55d, 0x61507807, + 0x5e455fe5, 0x07122770, 0xb6837537, 0x071260e5, + 0xb8837536, 0x071260e5, 0xba837536, 0xaff060e5, + 0xe5007e61, 0x7d081262, 0x80360a12, 0x24079019, + 0xe5420712, 0x36071260, 0xe48e8375, 0x74360712, + 0x36071201, 0x63aff0e4, 0x5fad007e, 0x04125eac, + 0x7e60af49, 0xac5fad00, 0x8b12125e, 0x15026005, + 0xf5e42258, 0xaf59f558, 0x0744ef08, 0x837582f5, + 0xc4fde0d0, 0x5af50f54, 0xf50744ef, 0x80837582, + 0x12f00174, 0x83759a08, 0xf045e582, 0xf50744ef, + 0x8a837582, 0x12f0ff74, 0x07127419, 0xbc837537, + 0x12ef54e0, 0x83753607, 0xef54e0be, 0x75360712, + 0x54e0c083, 0x360712ef, 0xe0bc8375, 0x07121044, + 0xbe837536, 0x121044e0, 0x83753607, 0x1044e0c0, + 0xe558aff0, 0x7b081259, 0xe4360a02, 0x017d58f5, + 0x35af59f5, 0x0912fcfe, 0x37071222, 0x74b68375, + 0x36071210, 0x74b88375, 0x36071210, 0x74ba8375, + 0x36071210, 0x74bc8375, 0x36071210, 0x74be8375, + 0x36071210, 0x74c08375, 0x36071210, 0xe4908375, + 0x75360712, 0x12e4c283, 0x83753607, 0x0712e4c4, + 0x92837536, 0x360712e4, 0xe4c68375, 0x75360712, + 0xf0e4c883, 0xe5fe58af, 0x7d081259, 0xe5360a02, + 0x6ce430e2, 0xc054e7e5, 0x64704064, 0x54c409e5, + 0x08e5fe30, 0xe025e025, 0xfe4ec054, 0x4e3f54ef, + 0xae2be5fd, 0xc302782a, 0xce33ce33, 0x82f5f9d8, + 0xf0ed838e, 0x2aae2be5, 0x33c30278, 0xd8ce33ce, + 0x82f5fff9, 0xe5a3838e, 0x828ff0fe, 0xa3a3838e, + 0x8ff0fde5, 0xa3838e82, 0xfce5a3a3, 0x2be5c3f0, + 0x2ae5fa94, 0x08500094, 0x2be52b05, 0x2a050270, + 0xe4ffe422, 0x56f558f5, 0x827457f5, 0xb70e12fc, + 0xf5e0838c, 0xf07f5410, 0x804410e5, 0xed4b0f12, + 0x120a7ef0, 0x8375b70e, 0xe020e0a0, 0x05f4de26, + 0x7057e557, 0xe5560502, 0xfd012414, 0xd3fc33e4, + 0xe59d57e5, 0xd9409c56, 0x20940ae5, 0x0a050250, + 0xc208e143, 0xb70e1231, 0xe0a68375, 0x12651255, + 0x31d20370, 0x2231c222, 0xe0260790, 0xf5e0a3fa, + 0xe0838a82, 0x39e541f5, 0x404195c3, 0x9539e526, + 0xee9fc341, 0x40780712, 0x80017c04, 0xe5007c02, + 0x603f6441, 0x80017b04, 0xec007b02, 0x0529605b, + 0xc3288041, 0x399541e5, 0x12ee9fc3, 0x04407807, + 0x0280017f, 0x41e5007f, 0x017e0460, 0x007e0280, + 0x04605eef, 0x03804115, 0x85413985, 0xe522403a, + 0x60e430e2, 0xe230e1e5, 0x7009e55b, 0x80017f04, + 0xe5007f02, 0x7e047008, 0x7e028001, 0x605fee00, + 0xf8f95343, 0xe430e2e5, 0x30e1e53b, 0xfa432ee2, + 0xfbfa5302, 0x9010f5e4, 0x10e57094, 0x30e1e5f0, + 0x9490e7e2, 0x1065e070, 0xfa430360, 0x90100504, + 0x10e57094, 0x12e670f0, 0xe1800600, 0x53fdfa53, + 0xc080fbfa, 0x12548f22, 0xe1e50600, 0x7f04e030, + 0x7f028001, 0xd37ee500, 0x04400594, 0x0280017e, + 0x4fee007e, 0x54853d60, 0x20e2e511, 0xce7432e1, + 0x303c1b12, 0x017d04e7, 0x007d0280, 0x838e828f, + 0x04e630e0, 0x0280017f, 0x5def007f, 0x1c121570, + 0x12ce7467, 0xe6303c1b, 0x8044e007, 0x80f943f0, + 0x22f31712, 0xe5f70e12, 0x25e02516, 0xf53024e0, + 0x1a34e482, 0x93e483f5, 0x16e50ff5, 0xe025e025, + 0x82f53124, 0xf51a34e4, 0xf593e483, 0x180f120e, + 0x0fe510f5, 0x0e12f054, 0x8c8375ca, 0x0fe5f0ef, + 0x120ce030, 0x8375b70e, 0x4044e086, 0x120a80f0, + 0x8375b70e, 0xbf54e086, 0x440f12f0, 0xe5828375, + 0x7f22f00e, 0xb3161205, 0x12b70e12, 0x0274e60e, + 0xfe8e74f0, 0x12b70e12, 0xf0efbe0e, 0x12701575, + 0x34208a1e, 0x10157505, 0x15750380, 0x8a1e1250, + 0x74043420, 0x74028010, 0xf51525f0, 0xd40e1215, + 0x1012f0ef, 0x17342091, 0x306415e5, 0x10740c60, + 0x15f51525, 0xe40380b4, 0x0e1215f5, 0x22f0efd4, + 0x2a0790e4, 0x12f0a3f0, 0x83753707, 0x7f54e082, + 0xe0360712, 0x12f08044, 0x08123d00, 0xa0837598, + 0x1ae020e0, 0xe02b0790, 0x0670f004, 0xe02a0790, + 0x0790f004, 0x10b4e02a, 0xb4e0a3e1, 0x44eedc00, + 0x44effca6, 0x8c82f507, 0x32f5e083, 0xfea844ee, + 0xf50744ef, 0xe0838e82, 0x122233f5, 0x83759808, + 0x54c4e0d0, 0x4375fd0f, 0xff447501, 0x74b70812, + 0x3b75f004, 0x6014ed01, 0x0b60140c, 0x240f6014, + 0x800b7003, 0x12008009, 0xf004b408, 0x08120680, + 0xf00474b4, 0xfe8244ee, 0xf50744ef, 0xe5838e82, + 0xcb081245, 0xe5828375, 0x36071231, 0xe0868375, + 0x22f00844, 0x000f1f01, 0x90002003, 0x920f2000, + 0x940f2100, 0x960f2200, 0x980f2300, 0x9a0f2400, + 0x9c0f2500, 0x9e0f2600, 0xa00f2700, 0xa2012001, + 0xa4012101, 0xa6012201, 0xa8012301, 0xaa012401, + 0xac012501, 0xae012601, 0xb0012701, 0xb4012801, + 0xb60f2800, 0xb80f2840, 0xcb012861, 0xeecacbef, + 0xe4017fca, 0x704aebfd, 0xf508e524, 0x12b67482, + 0x08e52c08, 0xb87482f5, 0xe52c0812, 0x7482f508, + 0x2c0812ba, 0x007c007e, 0x80360a12, 0x26079012, + 0xe5420712, 0x0790f041, 0x42071224, 0x12f040e5, + 0x83753707, 0x0712e48e, 0x12017436, 0xf0e43607, + 0x26f5e422, 0xe15327f5, 0x752af5fe, 0x08f5012b, + 0x1612017f, 0x1c3030b3, 0xe4291a90, 0x9010f593, + 0x93e4f91f, 0x009010f5, 0xf593e441, 0xf90f9010, + 0x10f593e4, 0x1612027f, 0x550f12b3, 0x1612037f, + 0x060012b3, 0xe730e2e5, 0x00101209, 0x12033030, + 0x00020011, 0x0be5f047, 0xe025e025, 0x82f58224, + 0xf50734e4, 0x88742283, 0x4408e5fe, 0x82f5ff07, + 0x22e0838e, 0x4408e5f0, 0x2282f507, 0xc054e0f0, + 0x838e828f, 0x44ef22f0, 0x7582f507, 0x54e08683, + 0x0094d310, 0x0790f022, 0xf004e015, 0x44effe22, + 0x8e82f507, 0x8e22e083, 0x12618f60, 0xffe4661e, + 0xeeceedce, 0xe56195d3, 0x78071260, 0x20743940, + 0xe482f52e, 0x83f50334, 0xff0370e0, 0x08122680, + 0x9fc3fdef, 0xedcf1e40, 0x704aebcf, 0x12428d0b, + 0x41f5fb08, 0x0c80408e, 0xf5ef0812, 0xfb081238, + 0x3a8e39f5, 0x22bc801e, 0xe5015875, 0x120c7035, + 0xf5e0d907, 0xe507124a, 0xe54cf5e0, 0x0c04b435, + 0xe0f10712, 0x07124af5, 0x4cf5e0fd, 0x01b435e5, + 0x80017f04, 0xe5007f02, 0x0402b435, 0x0280017e, + 0x4fee007e, 0x08120c60, 0x4af5e009, 0xe0150812, + 0x41854cf5, 0x4b408549, 0x015b7522, 0x12240790, + 0x54e04207, 0x94d3ff1f, 0x8f045002, 0xef058058, + 0x58f5fe24, 0x1894c3ef, 0x59750540, 0xef048018, + 0x8559f504, 0x58af5a43, 0x59ad007e, 0x5bab007c, + 0x1512007a, 0x7e5aaf41, 0x8c171200, 0x007e5baf, + 0x907f1a02, 0x93e4fd10, 0xf02e0790, 0x122d1412, + 0x34e5cf19, 0x07123570, 0xce837537, 0x1313ffe0, + 0xf5075413, 0x240f5436, 0x240b60fe, 0x240a60fe, + 0x02187003, 0x1e026f1d, 0x14101252, 0x1255f5e4, + 0x5505461d, 0x94c355e5, 0x22f44005, 0xedc3fce4, + 0xf5effa9f, 0x00827583, 0x93e4ff79, 0xa3cc6ccc, + 0xf6daf8d9, 0xe430e2e5, 0xede58c02, 0xefffff24, + 0xf5ff8275, 0x6c93e483, 0x017f0370, 0x22007f22, + 0x75b70e12, 0xf0e48083, 0x074408e5, 0x75b00e12, + 0x0e128483, 0x868375b5, 0x75b50e12, 0x54e08c83, + 0xb60e12f3, 0x128e8375, 0x8375b50e, 0xfb54e094, + 0x071222f0, 0x8e837537, 0x360712e4, 0x07120174, + 0x0812e436, 0x8c8375cb, 0x122044e0, 0x54e0cb08, + 0x8474f0df, 0xf5820885, 0x7f54e083, 0x8044e0f0, + 0x567522f0, 0xf5fde401, 0xfe35af57, 0x220912fc, + 0x121d1c12, 0x1b123b1e, 0x7e57afcc, 0x7c56ad00, + 0x49041200, 0x007e56af, 0x75ee1102, 0xfde40156, + 0x35af57f5, 0x0912fcfe, 0x1d1c1222, 0x123b1e12, + 0x57afcc1b, 0x56ad007e, 0x0412007c, 0x7e56af49, + 0xee110200, 0x1216f5e4, 0xe5fef70e, 0xff054408, + 0x8f180f12, 0xf0838e82, 0x16e51605, 0x401494c3, + 0x1208e5e6, 0xf0e4de0e, 0x58f5e422, 0x5af559f5, + 0x58adfeff, 0x220912fc, 0x007e047f, 0x007c58ad, + 0x7f220912, 0xad007e02, 0x02007c58, 0x3ce52209, + 0xe5fc3e25, 0xfb002442, 0xecfa33e4, 0x12ea9bc3, + 0x0b407807, 0x3de5428c, 0x41f53f25, 0x1222408f, + 0x74221809, 0x8518f584, 0x19851908, 0x83188582, + 0xf07f54e0, 0xf08044e0, 0xf08044e0, 0x704eef22, + 0x3707120b, 0xe0d28375, 0x22f0df54, 0x75370712, + 0x44e0d283, 0x7522f020, 0x07900158, 0x42071226, + 0xf53f54e0, 0x3f071241, 0xf53f54e0, 0x56752240, + 0x57f5e402, 0xafbd1d12, 0xad007e57, 0x02007c56, + 0xf5e44904, 0xf541f542, 0xf538f540, 0x223af539, + 0xff0754ef, 0xf854f9e5, 0x22f9f54f, 0xfee4017f, + 0xffbe0e0f, 0x0e1222fb, 0x12f0efd4, 0x00229110, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -16714,7 +17230,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x000f1f01, - 0xc3002003, 0xb9f6ad13, 0xffffb7ea, 0xffeeae82 + 0x00000000, 0x000f1f01, 0xc3002003, 0xb9f6ad13, + 0xffffb7ea, 0xffee6df3 }; #endif diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c index 5e16fbd..ddee699 100644 --- a/sys/dev/ixgbe/if_ix.c +++ b/sys/dev/ixgbe/if_ix.c @@ -2122,7 +2122,7 @@ ixgbe_mc_array_itr(struct ixgbe_hw *hw, u8 **update_ptr, u32 *vmdq) mta = (struct ixgbe_mc_addr *)*update_ptr; *vmdq = mta->vmdq; - *update_ptr = (u8*)(mta + 1);; + *update_ptr = (u8*)(mta + 1); return (mta->addr); } diff --git a/sys/dev/ixgbe/ixgbe_common.c b/sys/dev/ixgbe/ixgbe_common.c index feb74f6..c302071 100644 --- a/sys/dev/ixgbe/ixgbe_common.c +++ b/sys/dev/ixgbe/ixgbe_common.c @@ -1902,7 +1902,7 @@ static s32 ixgbe_ready_eeprom(struct ixgbe_hw *hw) usec_delay(5); ixgbe_standby_eeprom(hw); - }; + } /* * On some parts, SPI write time could vary from 0-20mSec on 3.3V @@ -1988,7 +1988,7 @@ static void ixgbe_shift_out_eeprom_bits(struct ixgbe_hw *hw, u16 data, * EEPROM */ mask = mask >> 1; - }; + } /* We leave the "DI" bit set to "0" when we leave this routine. */ eec &= ~IXGBE_EEC_DI; diff --git a/sys/dev/ixl/if_ixl.c b/sys/dev/ixl/if_ixl.c index 2ac5b92..36d79ad 100644 --- a/sys/dev/ixl/if_ixl.c +++ b/sys/dev/ixl/if_ixl.c @@ -3380,7 +3380,7 @@ ixl_add_sysctls_eth_stats(struct sysctl_ctx_list *ctx, }; struct ixl_sysctl_info *entry = ctls; - while (entry->stat != 0) + while (entry->stat != NULL) { SYSCTL_ADD_UQUAD(ctx, child, OID_AUTO, entry->name, CTLFLAG_RD, entry->stat, @@ -3439,7 +3439,7 @@ ixl_add_sysctls_mac_stats(struct sysctl_ctx_list *ctx, }; struct ixl_sysctl_info *entry = ctls; - while (entry->stat != 0) + while (entry->stat != NULL) { SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, entry->name, CTLFLAG_RD, entry->stat, diff --git a/sys/dev/ixl/if_ixlv.c b/sys/dev/ixl/if_ixlv.c index 51d4e95..8c4a901 100644 --- a/sys/dev/ixl/if_ixlv.c +++ b/sys/dev/ixl/if_ixlv.c @@ -2832,7 +2832,7 @@ ixlv_add_sysctls(struct ixlv_sc *sc) {0,0,0} }; struct ixl_sysctl_info *entry = ctls; - while (entry->stat != 0) + while (entry->stat != NULL) { SYSCTL_ADD_QUAD(ctx, child, OID_AUTO, entry->name, CTLFLAG_RD, entry->stat, diff --git a/sys/dev/kbdmux/kbdmux.c b/sys/dev/kbdmux/kbdmux.c index a21b37c..0dce120 100644 --- a/sys/dev/kbdmux/kbdmux.c +++ b/sys/dev/kbdmux/kbdmux.c @@ -33,6 +33,7 @@ #include "opt_compat.h" #include "opt_kbd.h" +#include "opt_kbdmux.h" #include <sys/param.h> #include <sys/bus.h> @@ -54,6 +55,13 @@ #include <sys/taskqueue.h> #include <sys/uio.h> #include <dev/kbd/kbdreg.h> + +/* the initial key map, accent map and fkey strings */ +#ifdef KBDMUX_DFLT_KEYMAP +#define KBD_DFLT_KEYMAP +#include "kbdmuxmap.h" +#endif + #include <dev/kbd/kbdtables.h> #define KEYBOARD_NAME "kbdmux" diff --git a/sys/dev/mii/mii_physubr.c b/sys/dev/mii/mii_physubr.c index 84f4f44..4233159 100644 --- a/sys/dev/mii/mii_physubr.c +++ b/sys/dev/mii/mii_physubr.c @@ -154,7 +154,7 @@ mii_phy_setmedia(struct mii_softc *sc) case (IFM_FDX | IFM_FLOW): index = MII_MEDIA_10_T_FDX; break; - }; + } break; case IFM_100_TX: diff --git a/sys/dev/mmc/host/dwmmc.c b/sys/dev/mmc/host/dwmmc.c index 5b24a6d..f55d3e6 100644 --- a/sys/dev/mmc/host/dwmmc.c +++ b/sys/dev/mmc/host/dwmmc.c @@ -191,7 +191,7 @@ dwmmc_ctrl_reset(struct dwmmc_softc *sc, int reset_bits) if (!(READ4(sc, SDMMC_CTRL) & reset_bits)) return (0); DELAY(10); - }; + } device_printf(sc->dev, "Reset failed\n"); diff --git a/sys/dev/mvs/mvs.c b/sys/dev/mvs/mvs.c index b89db41..bdadf39 100644 --- a/sys/dev/mvs/mvs.c +++ b/sys/dev/mvs/mvs.c @@ -506,7 +506,7 @@ mvs_set_edma_mode(device_t dev, enum mvs_edma_mode mode) device_printf(dev, "stopping EDMA engine failed\n"); break; } - }; + } } ch->curr_mode = mode; ch->fbs_enabled = 0; diff --git a/sys/dev/nand/nand.c b/sys/dev/nand/nand.c index 113953e..ae64121 100644 --- a/sys/dev/nand/nand.c +++ b/sys/dev/nand/nand.c @@ -811,7 +811,7 @@ nand_erase_blocks(struct nand_chip *chip, off_t offset, size_t len) err = ENXIO; block++; - }; + } NANDBUS_UNLOCK(nandbus); diff --git a/sys/dev/nand/nandsim_chip.c b/sys/dev/nand/nandsim_chip.c index 3241e1a..5b568ab 100644 --- a/sys/dev/nand/nandsim_chip.c +++ b/sys/dev/nand/nandsim_chip.c @@ -309,7 +309,7 @@ nandsim_loop(void *arg) links); destroy_event(ev); wakeup(ev); - }; + } NANDSIM_CHIP_UNLOCK(chip); nandsim_log(chip, NANDSIM_LOG_SM, "destroyed\n"); mtx_destroy(&chip->ns_lock); diff --git a/sys/dev/ncr/ncr.c b/sys/dev/ncr/ncr.c index 111cd69..8cf142f 100644 --- a/sys/dev/ncr/ncr.c +++ b/sys/dev/ncr/ncr.c @@ -2906,7 +2906,7 @@ static void ncr_script_fill (struct script * scr, struct scripth * scrh) *p++ =RADDR (dsa); *p++ =SCR_CALL; *p++ =PADDR (trysel); - }; + } *p++ =SCR_JUMP; *p++ =PADDRH(tryloop); @@ -2927,7 +2927,7 @@ static void ncr_script_fill (struct script * scr, struct scripth * scrh) *p++ =PADDR (checkatn); *p++ =SCR_MOVE_TBL ^ SCR_DATA_IN; *p++ =offsetof (struct dsb, data[i]); - }; + } *p++ =SCR_CALL; *p++ =PADDR (checkatn); @@ -2951,7 +2951,7 @@ static void ncr_script_fill (struct script * scr, struct scripth * scrh) *p++ =PADDR (dispatch); *p++ =SCR_MOVE_TBL ^ SCR_DATA_OUT; *p++ =offsetof (struct dsb, data[i]); - }; + } *p++ =SCR_CALL; *p++ =PADDR (dispatch); @@ -2997,7 +2997,7 @@ static void ncr_script_copy_and_bind (ncb_p np, ncrcmd *src, ncrcmd *dst, int le device_printf(np->dev, "ERROR0 IN SCRIPT at %d.\n", (int)(src - start - 1)); DELAY (1000000); - }; + } if (DEBUG_FLAGS & DEBUG_SCRIPT) printf ("%p: <%x>\n", @@ -3062,7 +3062,7 @@ static void ncr_script_copy_and_bind (ncb_p np, ncrcmd *src, ncrcmd *dst, int le default: relocs = 0; break; - }; + } if (relocs) { while (relocs--) { @@ -3110,7 +3110,7 @@ static void ncr_script_copy_and_bind (ncb_p np, ncrcmd *src, ncrcmd *dst, int le offset += 4; } - }; + } } /*========================================================== @@ -3614,7 +3614,7 @@ ncr_attach (device_t dev) usrsync = np->maxsync; if (usrsync < np->minsync) usrsync = np->minsync; - }; + } usrwide = (SCSI_NCR_MAX_WIDE); if (usrwide > np->maxwide) usrwide=np->maxwide; @@ -3719,7 +3719,7 @@ ncr_attach (device_t dev) if (ncr_snooptest (np)) { printf ("CACHE INCORRECTLY CONFIGURED.\n"); return EINVAL; - }; + } /* ** Install the interrupt handler. @@ -3817,7 +3817,7 @@ ncr_intr_locked(ncb_p np) } while (INB(nc_istat) & (INTF|SIP|DIP)); np->ticks = 100; - }; + } if (DEBUG_FLAGS & DEBUG_TINY) printf ("]\n"); } @@ -3892,7 +3892,7 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) ccb->ccb_h.status = CAM_RESRC_UNAVAIL; xpt_done(ccb); return; - }; + } cp->ccb = ccb; @@ -3923,8 +3923,8 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) != tp->tinfo.goal.offset)) { tp->nego_cp = cp; nego = NS_SYNC; - }; - }; + } + } /*--------------------------------------------------- ** @@ -3950,11 +3950,11 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) if (DEBUG_FLAGS & DEBUG_TAGS) { PRINT_ADDR(ccb); printf ("using tag #%d.\n", cp->tag); - }; - }; + } + } } else { cp->tag=0; - }; + } /*---------------------------------------------------- ** @@ -4001,7 +4001,7 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) printf (".\n"); }; break; - }; + } /*---------------------------------------------------- ** @@ -4435,7 +4435,7 @@ ncr_complete (ncb_p np, nccb_p cp) */ tp->tinfo.goal.period = 0; tp->tinfo.goal.offset = 0; - }; + } /* ** Check for extended errors. @@ -4453,10 +4453,10 @@ ncr_complete (ncb_p np, nccb_p cp) default: printf ("extended error %d.\n", cp->xerr_status); break; - }; + } if (cp->host_status==HS_COMPLETE) cp->host_status = HS_FAIL; - }; + } /* ** Check the status. @@ -4579,9 +4579,9 @@ ncr_wakeup (ncb_p np, u_long code) default: ncr_complete (np, cp); break; - }; + } cp = cp -> link_nccb; - }; + } } static void @@ -4959,7 +4959,7 @@ ncr_setsync(ncb_p np, nccb_p cp, u_char scntl3, u_char sxfer, u_char period) if (cp->ccb->ccb_h.target_id != target) continue; cp->sync_status = sxfer; cp->wide_status = scntl3; - }; + } } /*========================================================== @@ -5038,7 +5038,7 @@ static void ncr_setwide (ncb_p np, nccb_p cp, u_char wide, u_char ack) if (cp->ccb->ccb_h.target_id != target) continue; cp->sync_status = sxfer; cp->wide_status = scntl3; - }; + } } /*========================================================== @@ -5092,7 +5092,7 @@ ncr_timeout (void *arg) ** Let's try to wake it up. */ OUTB (nc_istat, SIGP); - }; + } /*---------------------------------------------------- ** @@ -5120,7 +5120,7 @@ ncr_timeout (void *arg) "timeout nccb=%p (skip)\n", cp); cp->phys.header.launch.l_paddr = NCB_SCRIPT_PHYS (np, skip); - }; + } switch (cp->host_status) { @@ -5129,14 +5129,14 @@ ncr_timeout (void *arg) /* FALLTHROUGH */ case HS_DISCONNECT: cp->host_status=HS_TIMEOUT; - }; + } cp->tag = 0; /* ** wakeup this nccb. */ ncr_complete (np, cp); - }; + } } callout_reset(&np->timer, step ? step : 1, ncr_timeout, np); @@ -5150,7 +5150,7 @@ ncr_timeout (void *arg) if (DEBUG_FLAGS & DEBUG_TINY) printf ("{"); ncr_exception (np); if (DEBUG_FLAGS & DEBUG_TINY) printf ("}"); - }; + } } /*========================================================== @@ -5255,7 +5255,7 @@ static void ncr_exception (ncb_p np) OUTB (nc_istat, INTF); np->profile.num_fly++; ncr_wakeup (np, 0); - }; + } if (!(istat & (SIP|DIP))) { return; } @@ -5291,7 +5291,7 @@ static void ncr_exception (ncb_p np) if (sist & RST) { ncr_init (np, bootverbose ? "scsi reset" : NULL, HS_RESET); return; - }; + } /*------------------------------------------- ** selection timeout @@ -5306,7 +5306,7 @@ static void ncr_exception (ncb_p np) !(dstat & (MDPE|BF|ABRT|SIR))) { ncr_int_sto (np); return; - }; + } /*------------------------------------------- ** Phase mismatch. @@ -5318,7 +5318,7 @@ static void ncr_exception (ncb_p np) !(dstat & (MDPE|BF|ABRT|SIR|IID))) { ncr_int_ma (np, dstat); return; - }; + } /*---------------------------------------- ** move command with length 0 @@ -5335,7 +5335,7 @@ static void ncr_exception (ncb_p np) */ OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, no_data)); return; - }; + } /*------------------------------------------- ** Programmed interrupt @@ -5348,7 +5348,7 @@ static void ncr_exception (ncb_p np) (INB(nc_dsps) <= SIR_MAX)) { ncr_int_sir (np); return; - }; + } /*======================================== ** log message for real hard errors @@ -5369,7 +5369,7 @@ static void ncr_exception (ncb_p np) ((volatile char*)&np->regdump)[i] = INB_OFF(i); np->regdump.nc_dstat = dstat; np->regdump.nc_sist = sist; - }; + } /*---------------------------------------- @@ -5413,7 +5413,7 @@ static void ncr_exception (ncb_p np) OUTB (nc_scr0, HS_UNEXPECTED); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, cleanup)); return; - }; + } /*---------------------------------------- ** cannot disconnect @@ -5438,7 +5438,7 @@ static void ncr_exception (ncb_p np) */ device_printf(np->dev, "INFO: LDSC while IID.\n"); return; - }; + } device_printf(np->dev, "target %d doesn't release the bus.\n", INB (nc_sdid)&0x0f); /* @@ -5446,7 +5446,7 @@ static void ncr_exception (ncb_p np) ** timeout will do the real work. */ return; - }; + } /*---------------------------------------- ** single step @@ -5458,7 +5458,7 @@ static void ncr_exception (ncb_p np) !(dstat & (MDPE|BF|ABRT|SIR|IID))) { OUTB (nc_dcntl, np->rv_dcntl | STD); return; - }; + } /* ** @RECOVER@ HTH, SGE, ABRT. @@ -5491,11 +5491,11 @@ static void ncr_exception (ncb_p np) case 12: printf (" "); break; - }; + } val = bus_read_1(np->reg_res, i); printf (" %x%x", val/16, val%16); if (i%16==15) printf (".\n"); - }; + } callout_stop(&np->timer); @@ -5505,7 +5505,7 @@ static void ncr_exception (ncb_p np) */ OUTB (nc_istat, SRST); return; - }; + } #ifdef NCR_FREEZE /* @@ -5556,7 +5556,7 @@ static void ncr_int_sto (ncb_p np) if (cp) { cp-> host_status = HS_SEL_TIMEOUT; ncr_complete (np, cp); - }; + } /* ** repair start queue @@ -5571,7 +5571,7 @@ static void ncr_int_sto (ncb_p np) WRITESCRIPT(startpos[0], scratcha); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, start)); return; - }; + } ncr_init (np, "selection timeout", HS_FAIL); } @@ -5634,7 +5634,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) if (INB(nc_scntl3) & EWS) { if (ss2 & OLF1) rest++; if (ss2 & ORF1) rest++; - }; + } OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */ OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */ @@ -5682,7 +5682,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) vdsp_base = np->scripth; vdsp_off = dsp - np->p_scripth - 8; nxtdsp = dsp; - }; + } /* ** log the information @@ -5691,13 +5691,13 @@ static void ncr_int_ma (ncb_p np, u_char dstat) printf ("P%x%x ",cmd&7, sbcl&7); printf ("RL=%d D=%d SS0=%x ", (unsigned) rest, (unsigned) delta, ss0); - }; + } if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("\nCP=%p CP2=%p DSP=%x NXT=%x VDSP=%p CMD=%x ", cp, np->header.cp, dsp, nxtdsp, (volatile char*)vdsp_base+vdsp_off, cmd); - }; + } /* ** get old startaddress and old length. @@ -5712,7 +5712,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) } else { tblp = (u_int32_t *) 0; olen = READSCRIPT_OFF(vdsp_base, vdsp_off) & 0xffffff; - }; + } if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("OCMD=%x\nTBLP=%p OLEN=%lx OADR=%lx\n", @@ -5720,7 +5720,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) (void *) tblp, (u_long) olen, (u_long) oadr); - }; + } /* ** if old phase not dataphase, leave here. @@ -5742,7 +5742,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) OUTB (nc_dcntl, np->rv_dcntl | STD); return; - }; + } /* ** choose the correct patch area. @@ -5799,12 +5799,12 @@ static int ncr_show_msg (u_char * msg) for (i=1;i<8;i++) { if (i-1>msg[1]) break; printf ("-%x",msg[i]); - }; + } return (i+1); } else if ((*msg & 0xf0) == 0x20) { printf ("-%x",msg[1]); return (2); - }; + } return (1); } @@ -5873,7 +5873,7 @@ static void ncr_int_sir (ncb_p np) break; if (DEBUG_FLAGS & DEBUG_RESTART) printf ("- (remove)"); tp->hold_cp = cp = (nccb_p) 0; - }; + } if (cp) { if (DEBUG_FLAGS & DEBUG_RESTART) @@ -5881,7 +5881,7 @@ static void ncr_int_sir (ncb_p np) OUTL (nc_dsa, CCB_PHYS (cp, phys)); OUTL (nc_dsp, NCB_SCRIPTH_PHYS (np, getcc)); return; - }; + } /* ** no job, resume normal processing @@ -6001,7 +6001,7 @@ static void ncr_int_sir (ncb_p np) PRINT_ADDR(cp->ccb); printf ("negotiation failed sir=%x status=%x.\n", num, cp->nego_status); - }; + } /* ** any error in negotiation: @@ -6017,7 +6017,7 @@ static void ncr_int_sir (ncb_p np) ncr_setwide (np, cp, 0, 0); break; - }; + } np->msgin [0] = MSG_NOOP; np->msgout[0] = MSG_NOOP; cp->nego_status = 0; @@ -6034,7 +6034,7 @@ static void ncr_int_sir (ncb_p np) printf ("sync msgin: "); (void) ncr_show_msg (np->msgin); printf (".\n"); - }; + } /* ** get requested values. @@ -6100,14 +6100,14 @@ static void ncr_int_sir (ncb_p np) */ ncr_setsync (np,cp,scntl3,(fak<<5)|ofs, per); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, clrack)); - }; + } return; case NS_WIDE: ncr_setwide (np, cp, 0, 0); break; - }; - }; + } + } /* ** It was a request. Set value and @@ -6148,7 +6148,7 @@ static void ncr_int_sir (ncb_p np) printf ("wide msgin: "); (void) ncr_show_msg (np->msgin); printf (".\n"); - }; + } /* ** get requested values. @@ -6189,14 +6189,14 @@ static void ncr_int_sir (ncb_p np) */ ncr_setwide (np, cp, wide, 1); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, clrack)); - }; + } return; case NS_SYNC: ncr_setsync (np, cp, 0, 0xe0, 0); break; - }; - }; + } + } /* ** It was a request, set value and @@ -6338,7 +6338,7 @@ static void ncr_int_sir (ncb_p np) */ OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, reselect)); return; - }; + } /* ** else remove the interrupt. @@ -6347,7 +6347,7 @@ static void ncr_int_sir (ncb_p np) device_printf(np->dev, "queue empty.\n"); WRITESCRIPT(start1[0], SCR_INT ^ IFFALSE (0)); break; - }; + } out: OUTB (nc_dcntl, np->rv_dcntl | STD); @@ -6643,7 +6643,7 @@ static int ncr_scatter csize -= size; datalen -= size; paddr = vtophys (vaddr); - }; + } if(DEBUG_FLAGS & DEBUG_SCATTER) printf ("\tseg #%d addr=%x size=%d (rest=%d).\n", @@ -6661,7 +6661,7 @@ static int ncr_scatter printf("ncr?: scatter/gather failed (residue=%d).\n", (unsigned) datalen); return (-1); - }; + } return (segment); } @@ -6697,7 +6697,7 @@ static int ncr_regtest (struct ncb* np) printf ("CACHE TEST FAILED: reg dstat-sstat2 readback %x.\n", (unsigned) data); return (0x10); - }; + } return (0); } #endif @@ -6753,7 +6753,7 @@ static int ncr_snooptest (struct ncb* np) if (i>=NCR_SNOOP_TIMEOUT) { printf ("CACHE TEST FAILED: timeout.\n"); return (0x20); - }; + } /* ** Check termination position. */ @@ -6763,7 +6763,7 @@ static int ncr_snooptest (struct ncb* np) (u_long) NCB_SCRIPTH_PHYS (np, snooptest), (u_long) pc, (u_long) NCB_SCRIPTH_PHYS (np, snoopend) +8); return (0x40); - }; + } /* ** Show results. */ @@ -6771,17 +6771,17 @@ static int ncr_snooptest (struct ncb* np) printf ("CACHE TEST FAILED: host wrote %d, ncr read %d.\n", (int) host_wr, (int) ncr_rd); err |= 1; - }; + } if (host_rd != ncr_wr) { printf ("CACHE TEST FAILED: ncr wrote %d, host read %d.\n", (int) ncr_wr, (int) host_rd); err |= 2; - }; + } if (ncr_bk != ncr_wr) { printf ("CACHE TEST FAILED: ncr wrote %d, read back %d.\n", (int) ncr_wr, (int) ncr_bk); err |= 4; - }; + } return (err); } diff --git a/sys/dev/nfe/if_nfe.c b/sys/dev/nfe/if_nfe.c index 0a37079..58fee0b 100644 --- a/sys/dev/nfe/if_nfe.c +++ b/sys/dev/nfe/if_nfe.c @@ -2590,7 +2590,7 @@ nfe_setmulti(struct nfe_softc *sc) bzero(addr, ETHER_ADDR_LEN); bzero(mask, ETHER_ADDR_LEN); goto done; - }; + } if_multiaddr_array(ifp, mta, &mcnt, mc_count); diff --git a/sys/dev/oce/oce_mbox.c b/sys/dev/oce/oce_mbox.c index 01bd4cf..cb2ae81 100644 --- a/sys/dev/oce/oce_mbox.c +++ b/sys/dev/oce/oce_mbox.c @@ -2113,7 +2113,7 @@ oce_get_profile_config(POCE_SOFTC sc, uint32_t max_rss) sc->nrssqs = MIN(sc->nrssqs, max_rss); else sc->nrssqs = max_rss; - sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */; + sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */ } error: @@ -2213,7 +2213,7 @@ oce_get_func_config(POCE_SOFTC sc) sc->nrssqs = MIN(sc->nrssqs, max_rss); else sc->nrssqs = max_rss; - sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */; + sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */ } error: oce_dma_free(sc, &dma); diff --git a/sys/dev/oce/oce_sysctl.c b/sys/dev/oce/oce_sysctl.c index 3df7d0d..61adf93 100644 --- a/sys/dev/oce/oce_sysctl.c +++ b/sys/dev/oce/oce_sysctl.c @@ -331,7 +331,7 @@ static void oce_fill_flash_img_data(POCE_SOFTC sc, const struct flash_sec_info * case IMG_PXEBIOS: pimg->optype = 3; if (IS_BE3(sc)) { - pimg->img_offset = 13107200;; + pimg->img_offset = 13107200; pimg->img_size = 524288; } break; diff --git a/sys/dev/ow/ow.c b/sys/dev/ow/ow.c index ea78890..f5b5c6b 100644 --- a/sys/dev/ow/ow.c +++ b/sys/dev/ow/ow.c @@ -413,7 +413,7 @@ again: foundfp(dev, probed); last_mask = probed; prior = last; - }; + } ow_release_bus(dev, dev); return (0); diff --git a/sys/dev/patm/if_patm_attach.c b/sys/dev/patm/if_patm_attach.c index ed48bda..29a2a87 100644 --- a/sys/dev/patm/if_patm_attach.c +++ b/sys/dev/patm/if_patm_attach.c @@ -189,7 +189,7 @@ patm_attach(device_t dev) IFP2IFATM(sc->ifp)->mib.hw_version = 0; IFP2IFATM(sc->ifp)->mib.sw_version = 0; IFP2IFATM(sc->ifp)->mib.vpi_bits = PATM_VPI_BITS; - IFP2IFATM(sc->ifp)->mib.vci_bits = 0; /* set below */; + IFP2IFATM(sc->ifp)->mib.vci_bits = 0; /* set below */ IFP2IFATM(sc->ifp)->mib.max_vpcs = 0; IFP2IFATM(sc->ifp)->mib.max_vccs = 0; /* set below */ IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UNKNOWN; diff --git a/sys/dev/pcf/pcf.c b/sys/dev/pcf/pcf.c index f9252b5..cf2b65d 100644 --- a/sys/dev/pcf/pcf.c +++ b/sys/dev/pcf/pcf.c @@ -466,7 +466,7 @@ pcf_read(device_t dev, char *buf, int len, int *read, int last, len --; bytes ++; - }; + } error: *read = bytes; diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 8343181..fbe9abd 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -161,6 +161,7 @@ static device_method_t pci_methods[] = { DEVMETHOD(bus_release_resource, pci_release_resource), DEVMETHOD(bus_activate_resource, pci_activate_resource), DEVMETHOD(bus_deactivate_resource, pci_deactivate_resource), + DEVMETHOD(bus_child_deleted, pci_child_deleted), DEVMETHOD(bus_child_detached, pci_child_detached), DEVMETHOD(bus_child_pnpinfo_str, pci_child_pnpinfo_str_method), DEVMETHOD(bus_child_location_str, pci_child_location_str_method), @@ -5194,7 +5195,7 @@ pci_deactivate_resource(device_t dev, device_t child, int type, } void -pci_delete_child(device_t dev, device_t child) +pci_child_deleted(device_t dev, device_t child) { struct resource_list_entry *rle; struct resource_list *rl; @@ -5203,12 +5204,13 @@ pci_delete_child(device_t dev, device_t child) dinfo = device_get_ivars(child); rl = &dinfo->resources; - if (device_is_attached(child)) - device_detach(child); - /* Turn off access to resources we're about to free */ - pci_write_config(child, PCIR_COMMAND, pci_read_config(child, - PCIR_COMMAND, 2) & ~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN), 2); + if (bus_child_present(child) != 0) { + pci_write_config(child, PCIR_COMMAND, pci_read_config(child, + PCIR_COMMAND, 2) & ~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN), 2); + + pci_disable_busmaster(child); + } /* Free all allocated resources */ STAILQ_FOREACH(rle, rl, link) { @@ -5229,7 +5231,6 @@ pci_delete_child(device_t dev, device_t child) } resource_list_free(rl); - device_delete_child(dev, child); pci_freecfg(dinfo); } diff --git a/sys/dev/pci/pci_iov.c b/sys/dev/pci/pci_iov.c index 8189ffb..d216557 100644 --- a/sys/dev/pci/pci_iov.c +++ b/sys/dev/pci/pci_iov.c @@ -640,7 +640,7 @@ pci_iov_enumerate_vfs(struct pci_devinfo *dinfo, const nvlist_t *config, error = PCI_IOV_ADD_VF(dev, i, driver_config); if (error != 0) { device_printf(dev, "Failed to add VF %d\n", i); - pci_delete_child(bus, vf); + device_delete_child(bus, vf); } } @@ -833,7 +833,7 @@ pci_iov_delete(struct cdev *cdev) vf = devlist[i]; if (pci_iov_is_child_vf(iov, vf)) - pci_delete_child(bus, vf); + device_delete_child(bus, vf); } PCI_IOV_UNINIT(dev); diff --git a/sys/dev/pci/pci_private.h b/sys/dev/pci/pci_private.h index 9b018ab..e11dcfa 100644 --- a/sys/dev/pci/pci_private.h +++ b/sys/dev/pci/pci_private.h @@ -57,7 +57,6 @@ void pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask); void pci_add_resources_ea(device_t bus, device_t dev, int alloc_iov); int pci_attach_common(device_t dev); -void pci_delete_child(device_t dev, device_t child); void pci_driver_added(device_t dev, driver_t *driver); int pci_ea_is_enabled(device_t dev, int rid); int pci_print_child(device_t dev, device_t child); @@ -122,6 +121,7 @@ struct pci_devinfo *pci_read_device(device_t pcib, int d, int b, int s, int f, size_t size); void pci_print_verbose(struct pci_devinfo *dinfo); int pci_freecfg(struct pci_devinfo *dinfo); +void pci_child_deleted(device_t dev, device_t child); void pci_child_detached(device_t dev, device_t child); int pci_child_location_str_method(device_t cbdev, device_t child, char *buf, size_t buflen); diff --git a/sys/dev/pdq/pdq.c b/sys/dev/pdq/pdq.c index 2f44439..4fb98db 100644 --- a/sys/dev/pdq/pdq.c +++ b/sys/dev/pdq/pdq.c @@ -1291,7 +1291,7 @@ pdq_stop( pdq->pdq_intrmask = 0; /* PDQ_HOST_INT_STATE_CHANGE |PDQ_HOST_INT_FATAL_ERROR|PDQ_HOST_INT_CMD_RSP_ENABLE - |PDQ_HOST_INT_UNSOL_ENABLE */; + |PDQ_HOST_INT_UNSOL_ENABLE */ PDQ_CSR_WRITE(csrs, csr_host_int_enable, pdq->pdq_intrmask); /* diff --git a/sys/dev/qlxgbe/ql_hw.c b/sys/dev/qlxgbe/ql_hw.c index 3ae3f38..bbe774b 100644 --- a/sys/dev/qlxgbe/ql_hw.c +++ b/sys/dev/qlxgbe/ql_hw.c @@ -3434,7 +3434,7 @@ qla_iscsi_pdu(qla_host_t *ha, struct mbuf *mp) offset = hdrlen + 4; if (mp->m_len >= offset) { - th = (struct tcphdr *)(mp->m_data + hdrlen);; + th = (struct tcphdr *)(mp->m_data + hdrlen); } else { m_copydata(mp, hdrlen, 4, buf); th = (struct tcphdr *)buf; @@ -3458,7 +3458,7 @@ qla_iscsi_pdu(qla_host_t *ha, struct mbuf *mp) offset = hdrlen + 4; if (mp->m_len >= offset) { - th = (struct tcphdr *)(mp->m_data + hdrlen);; + th = (struct tcphdr *)(mp->m_data + hdrlen); } else { m_copydata(mp, hdrlen, 4, buf); th = (struct tcphdr *)buf; diff --git a/sys/dev/ral/rt2860.c b/sys/dev/ral/rt2860.c index 8bfb00d..c50c14d 100644 --- a/sys/dev/ral/rt2860.c +++ b/sys/dev/ral/rt2860.c @@ -3448,7 +3448,7 @@ rt2860_read_eeprom(struct rt2860_softc *sc, uint8_t macaddr[IEEE80211_ADDR_LEN]) sc->ext_5ghz_lna = (val >> 3) & 1; sc->ext_2ghz_lna = (val >> 2) & 1; /* check if RF supports automatic Tx access gain control */ - sc->calib_2ghz = sc->calib_5ghz = 0; /* XXX (val >> 1) & 1 */; + sc->calib_2ghz = sc->calib_5ghz = 0; /* XXX (val >> 1) & 1 */ /* check if we have a hardware radio switch */ sc->rfswitch = val & 1; } diff --git a/sys/dev/rt/if_rt.c b/sys/dev/rt/if_rt.c index 8057b2c..fd042fe 100644 --- a/sys/dev/rt/if_rt.c +++ b/sys/dev/rt/if_rt.c @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2015, Stanislav Galabov + * Copyright (c) 2015-2016, Stanislav Galabov * Copyright (c) 2014, Aleksandr A. Mityaev * Copyright (c) 2011, Aleksandr Rybalko * based on hard work @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_param.h> #include <vm/vm.h> #include <vm/pmap.h> +#include <machine/pmap.h> #include <sys/bus.h> #include <sys/rman.h> @@ -69,8 +70,10 @@ __FBSDID("$FreeBSD$"); #include <dev/mii/mii.h> #include <dev/mii/miivar.h> +#if 0 #include <mips/rt305x/rt305x_sysctlvar.h> #include <mips/rt305x/rt305xreg.h> +#endif #ifdef IF_RT_PHY_SUPPORT #include "miibus_if.h" @@ -89,19 +92,20 @@ __FBSDID("$FreeBSD$"); #define RT_TX_WATCHDOG_TIMEOUT 5 #define RT_CHIPID_RT3050 0x3050 -#define RT_CHIPID_RT3052 0x3052 #define RT_CHIPID_RT5350 0x5350 -#define RT_CHIPID_RT6855 0x6855 #define RT_CHIPID_MT7620 0x7620 +#define RT_CHIPID_MT7621 0x7621 #ifdef FDT /* more specific and new models should go first */ static const struct ofw_compat_data rt_compat_data[] = { - { "ralink,rt6855-eth", (uintptr_t)RT_CHIPID_RT6855 }, - { "ralink,rt5350-eth", (uintptr_t)RT_CHIPID_RT5350 }, - { "ralink,rt3052-eth", (uintptr_t)RT_CHIPID_RT3052 }, - { "ralink,rt305x-eth", (uintptr_t)RT_CHIPID_RT3050 }, - { NULL, (uintptr_t)NULL } + { "ralink,rt3050-eth", RT_CHIPID_RT3050 }, + { "ralink,rt3352-eth", RT_CHIPID_RT3050 }, + { "ralink,rt3883-eth", RT_CHIPID_RT3050 }, + { "ralink,rt5350-eth", RT_CHIPID_RT5350 }, + { "ralink,mt7620a-eth", RT_CHIPID_MT7620 }, + { "ralink,mt7621-eth", RT_CHIPID_MT7621 }, + { NULL, 0 } }; #endif @@ -182,21 +186,23 @@ rt_probe(device_t dev) const struct ofw_compat_data * cd; cd = ofw_bus_search_compatible(dev, rt_compat_data); - if (cd->ocd_data == (uintptr_t)NULL) + if (cd->ocd_data == 0) return (ENXIO); sc->rt_chipid = (unsigned int)(cd->ocd_data); #else #if defined(MT7620) sc->rt_chipid = RT_CHIPID_MT7620; +#elif defined(MT7621) + sc->rt_chipid = RT_CHIPID_MT7621; #elif defined(RT5350) sc->rt_chipid = RT_CHIPID_RT5350; #else sc->rt_chipid = RT_CHIPID_RT3050; #endif #endif - snprintf(buf, sizeof(buf), "Ralink RT%x onChip Ethernet driver", - sc->rt_chipid); + snprintf(buf, sizeof(buf), "Ralink %cT%x onChip Ethernet driver", + sc->rt_chipid >= 0x7600 ? 'M' : 'R', sc->rt_chipid); device_set_desc_copy(dev, buf); return (BUS_PROBE_GENERIC); } @@ -373,12 +379,26 @@ rt_attach(device_t dev) /* Reset hardware */ reset_freng(sc); + + + if (sc->rt_chipid == RT_CHIPID_MT7620) { + sc->csum_fail_ip = MT7620_RXD_SRC_IP_CSUM_FAIL; + sc->csum_fail_l4 = MT7620_RXD_SRC_L4_CSUM_FAIL; + } else if (sc->rt_chipid == RT_CHIPID_MT7621) { + sc->csum_fail_ip = MT7621_RXD_SRC_IP_CSUM_FAIL; + sc->csum_fail_l4 = MT7621_RXD_SRC_L4_CSUM_FAIL; + } else { + sc->csum_fail_ip = RT305X_RXD_SRC_IP_CSUM_FAIL; + sc->csum_fail_l4 = RT305X_RXD_SRC_L4_CSUM_FAIL; + } /* Fill in soc-specific registers map */ switch(sc->rt_chipid) { case RT_CHIPID_MT7620: + case RT_CHIPID_MT7621: case RT_CHIPID_RT5350: - device_printf(dev, "RT%x Ethernet MAC (rev 0x%08x)\n", + device_printf(dev, "%cT%x Ethernet MAC (rev 0x%08x)\n", + sc->rt_chipid >= 0x7600 ? 'M' : 'R', sc->rt_chipid, sc->mac_rev); /* RT5350: No GDMA, PSE, CDMA, PPE */ RT_WRITE(sc, GE_PORT_BASE + 0x0C00, // UDPCS, TCPCS, IPCS=1 @@ -406,10 +426,6 @@ rt_attach(device_t dev) sc->int_rx_done_mask=RT5350_INT_RXQ0_DONE; sc->int_tx_done_mask=RT5350_INT_TXQ0_DONE; break; - case RT_CHIPID_RT6855: - device_printf(dev, "RT6855 Ethernet MAC (rev 0x%08x)\n", - sc->mac_rev); - break; default: device_printf(dev, "RT305XF Ethernet MAC (rev 0x%08x)\n", sc->mac_rev); @@ -444,7 +460,7 @@ rt_attach(device_t dev) sc->rx_drx_idx[0]=PDMA_BASE+RX_DRX_IDX0; sc->int_rx_done_mask=INT_RX_DONE; sc->int_tx_done_mask=INT_TXQ0_DONE; - }; + } /* allocate Tx and Rx rings */ for (i = 0; i < RT_SOFTC_TX_RING_COUNT; i++) { @@ -533,7 +549,8 @@ rt_attach(device_t dev) /* set up interrupt */ error = bus_setup_intr(dev, sc->irq, INTR_TYPE_NET | INTR_MPSAFE, NULL, (sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) ? rt_rt5350_intr : rt_intr, + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) ? rt_rt5350_intr : rt_intr, sc, &sc->irqh); if (error != 0) { printf("%s: could not set up interrupt\n", @@ -763,7 +780,7 @@ rt_init_locked(void *priv) //rt305x_sysctl_set(SYSCTL_RSTCTRL, SYSCTL_RSTCTRL_FRENG); /* Fwd to CPU (uni|broad|multi)cast and Unknown */ - if(sc->rt_chipid == RT_CHIPID_RT3050 || sc->rt_chipid == RT_CHIPID_RT3052) + if(sc->rt_chipid == RT_CHIPID_RT3050) RT_WRITE(sc, GDMA1_BASE + GDMA_FWD_CFG, ( GDM_ICS_EN | /* Enable IP Csum */ @@ -831,7 +848,8 @@ rt_init_locked(void *priv) /* write back DDONE, 16byte burst enable RX/TX DMA */ tmp = FE_TX_WB_DDONE | FE_DMA_BT_SIZE16 | FE_RX_DMA_EN | FE_TX_DMA_EN; - if (sc->rt_chipid == RT_CHIPID_MT7620) + if (sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) tmp |= (1<<31); RT_WRITE(sc, sc->pdma_glo_cfg, tmp); @@ -843,7 +861,8 @@ rt_init_locked(void *priv) /* enable interrupts */ if (sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) tmp = RT5350_INT_TX_COHERENT | RT5350_INT_RX_COHERENT | RT5350_INT_TXQ3_DONE | @@ -945,7 +964,8 @@ rt_stop_locked(void *priv) RT_WRITE(sc, sc->fe_int_enable, 0); if(sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) { + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) { } else { /* reset adapter */ RT_WRITE(sc, GE_PORT_BASE + FE_RST_GLO, PSE_RESET); @@ -1055,22 +1075,29 @@ rt_tx_data(struct rt_softc *sc, struct mbuf *m, int qid) /* TODO: this needs to be refined as MT7620 for example has * a different word3 layout than RT305x and RT5350 (the last - * one doesn't use word3 at all). + * one doesn't use word3 at all). And so does MT7621... */ - /* Set destination */ - if (sc->rt_chipid != RT_CHIPID_MT7620) - desc->dst = (TXDSCR_DST_PORT_GDMA1); - - if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) - desc->dst |= (TXDSCR_IP_CSUM_GEN|TXDSCR_UDP_CSUM_GEN| - TXDSCR_TCP_CSUM_GEN); - /* Set queue id */ - desc->qn = qid; - /* No PPPoE */ - desc->pppoe = 0; - /* No VLAN */ - desc->vid = 0; + if (sc->rt_chipid != RT_CHIPID_MT7621) { + /* Set destination */ + if (sc->rt_chipid != RT_CHIPID_MT7620) + desc->dst = (TXDSCR_DST_PORT_GDMA1); + + if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) + desc->dst |= (TXDSCR_IP_CSUM_GEN | + TXDSCR_UDP_CSUM_GEN | TXDSCR_TCP_CSUM_GEN); + /* Set queue id */ + desc->qn = qid; + /* No PPPoE */ + desc->pppoe = 0; + /* No VLAN */ + desc->vid = 0; + } else { + desc->vid = 0; + desc->pppoe = 0; + desc->qn = 0; + desc->dst = 2; + } desc->sdp0 = htole32(dma_seg[i].ds_addr); desc->sdl0 = htole16(dma_seg[i].ds_len | @@ -1714,7 +1741,8 @@ rt_tx_done_task(void *context, int pending) ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; if(sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) intr_mask = ( RT5350_INT_TXQ3_DONE | RT5350_INT_TXQ2_DONE | @@ -1870,15 +1898,13 @@ rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) BUS_DMASYNC_PREREAD); m = data->m; - desc_flags = desc->src; + desc_flags = desc->word3; data->m = mnew; /* Add 2 for proper align of RX IP header */ desc->sdp0 = htole32(segs[0].ds_addr+2); desc->sdl0 = htole32(segs[0].ds_len-2); - desc->src = 0; - desc->ai = 0; - desc->foe = 0; + desc->word3 = 0; RT_DPRINTF(sc, RT_DEBUG_RX, "Rx frame: rxdesc flags=0x%08x\n", desc_flags); @@ -1891,8 +1917,7 @@ rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) /* check for crc errors */ if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) { /*check for valid checksum*/ - if (desc_flags & (RXDSXR_SRC_IP_CSUM_FAIL| - RXDSXR_SRC_L4_CSUM_FAIL)) { + if (desc_flags & (sc->csum_fail_ip|sc->csum_fail_l4)) { RT_DPRINTF(sc, RT_DEBUG_RX, "rxdesc: crc error\n"); @@ -1903,7 +1928,7 @@ rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) goto skip; } } - if ((desc_flags & RXDSXR_SRC_IP_CSUM_FAIL) != 0) { + if ((desc_flags & sc->csum_fail_ip) == 0) { m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; m->m_pkthdr.csum_flags |= CSUM_IP_VALID; m->m_pkthdr.csum_data = 0xffff; @@ -2031,7 +2056,8 @@ rt_watchdog(struct rt_softc *sc) int ntries; #endif if(sc->rt_chipid != RT_CHIPID_RT5350 && - sc->rt_chipid != RT_CHIPID_MT7620) { + sc->rt_chipid != RT_CHIPID_MT7620 && + sc->rt_chipid != RT_CHIPID_MT7621) { tmp = RT_READ(sc, PSE_BASE + CDMA_OQ_STA); RT_DPRINTF(sc, RT_DEBUG_WATCHDOG, diff --git a/sys/dev/rt/if_rtvar.h b/sys/dev/rt/if_rtvar.h index f46574f..b2869c5 100644 --- a/sys/dev/rt/if_rtvar.h +++ b/sys/dev/rt/if_rtvar.h @@ -115,12 +115,21 @@ struct rt_txdesc } __packed; #define RT_RXDESC_SDL0_DDONE (1 << 15) + +#define RT305X_RXD_SRC_L4_CSUM_FAIL (1 << 28) +#define RT305X_RXD_SRC_IP_CSUM_FAIL (1 << 29) +#define MT7620_RXD_SRC_L4_CSUM_FAIL (1 << 22) +#define MT7620_RXD_SRC_IP_CSUM_FAIL (1 << 25) +#define MT7621_RXD_SRC_L4_CSUM_FAIL (1 << 23) +#define MT7621_RXD_SRC_IP_CSUM_FAIL (1 << 26) + struct rt_rxdesc { uint32_t sdp0; uint16_t sdl1; uint16_t sdl0; uint32_t sdp1; +#if 0 uint16_t foe; #define RXDSXR_FOE_ENTRY_VALID 0x40 #define RXDSXR_FOE_ENTRY_MASK 0x3f @@ -134,6 +143,8 @@ struct rt_rxdesc #define RXDSXR_SRC_L4_CSUM_FAIL 0x10 #define RXDSXR_SRC_AIS 0x08 #define RXDSXR_SRC_PORT_MASK 0x07 +#endif + uint32_t word3; } __packed; struct rt_softc_rx_data @@ -263,6 +274,8 @@ struct rt_softc uint32_t rt_chipid; /* chip specific registers config */ int rx_ring_count; + uint32_t csum_fail_l4; + uint32_t csum_fail_ip; uint32_t int_rx_done_mask; uint32_t int_tx_done_mask; uint32_t delay_int_cfg; diff --git a/sys/dev/sound/midi/midi.c b/sys/dev/sound/midi/midi.c index e741dd0d..71f7772 100644 --- a/sys/dev/sound/midi/midi.c +++ b/sys/dev/sound/midi/midi.c @@ -669,7 +669,7 @@ midi_open(struct cdev *i_dev, int flags, int mode, struct thread *td) * from a previous session */ MIDIQ_CLEAR(m->inq); - }; + } if (flags & FWRITE) m->flags |= M_TX; @@ -1126,7 +1126,7 @@ midisynth_open(void *n, void *arg, int flags) */ MIDIQ_CLEAR(m->inq); m->rchan = 0; - }; + } if (flags & FWRITE) { m->flags |= M_TX; diff --git a/sys/dev/sound/pci/hda/hdaa.c b/sys/dev/sound/pci/hda/hdaa.c index a1b9f7c..b4c021b 100644 --- a/sys/dev/sound/pci/hda/hdaa.c +++ b/sys/dev/sound/pci/hda/hdaa.c @@ -779,7 +779,7 @@ hdaa_sense_init(struct hdaa_devinfo *devinfo) (w->unsol < 0) ? "polling" : "unsolicited responses"); ); - }; + } } hdaa_presence_handler(w); if (!HDA_PARAM_PIN_CAP_DP(w->wclass.pin.cap) && @@ -847,7 +847,7 @@ hdaa_widget_pin_patch(uint32_t config, const char *str) if (bad[0] == 0) { config |= ((ival << HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT) & HDA_CONFIG_DEFAULTCONF_COLOR_MASK); - }; + } for (i = 0; i < 16; i++) { if (strcasecmp(HDA_COLORS[i], value) == 0) { config |= (i << HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT); @@ -872,7 +872,7 @@ hdaa_widget_pin_patch(uint32_t config, const char *str) config |= ((ival << HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT) & HDA_CONFIG_DEFAULTCONF_DEVICE_MASK); continue; - }; + } for (i = 0; i < 16; i++) { if (strcasecmp(HDA_DEVS[i], value) == 0) { config |= (i << HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT); @@ -898,7 +898,7 @@ hdaa_widget_pin_patch(uint32_t config, const char *str) config |= ((ival << HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT) & HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK); continue; - }; + } for (i = 0; i < 4; i++) { if (strcasecmp(HDA_CONNS[i], value) == 0) { config |= (i << HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT); diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c index 491aa54..43a0e9d 100644 --- a/sys/dev/sym/sym_hipd.c +++ b/sys/dev/sym/sym_hipd.c @@ -2025,7 +2025,7 @@ static void sym_fw_bind_script (hcb_p np, u32 *start, int len) MDELAY (10000); ++cur; continue; - }; + } /* * We use the bogus value 0xf00ff00f ;-) @@ -2114,7 +2114,7 @@ static void sym_fw_bind_script (hcb_p np, u32 *start, int len) default: relocs = 0; break; - }; + } /* * Scriptify:) the opcode. @@ -2170,7 +2170,7 @@ static void sym_fw_bind_script (hcb_p np, u32 *start, int len) *cur++ = cpu_to_scr(new); } - }; + } } /*---------------------------------------------------------------------------*/ @@ -2867,7 +2867,7 @@ static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr) msgptr[msglen++] = tp->tinfo.goal.width; msgptr[msglen++] = tp->tinfo.goal.options & PPR_OPT_DT; break; - }; + } cp->nego_status = nego; @@ -2877,8 +2877,8 @@ static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr) sym_print_msg(cp, nego == NS_SYNC ? "sync msgout" : nego == NS_WIDE ? "wide msgout" : "ppr msgout", msgptr); - }; - }; + } + } return msglen; } @@ -3827,7 +3827,7 @@ static void sym_intr1 (hcb_p np) istat = INB (nc_istat); /* DUMMY READ */ if (DEBUG_FLAGS & DEBUG_TINY) printf ("F "); (void)sym_wakeup_done (np); - }; + } if (!(istat & (SIP|DIP))) return; @@ -3892,7 +3892,7 @@ static void sym_intr1 (hcb_p np) else if (dstat & SSI) OUTONB_STD (); else goto unknown_int; return; - }; + } /* * Now, interrupts that donnot happen in normal @@ -3910,7 +3910,7 @@ static void sym_intr1 (hcb_p np) printf("SCSI BUS reset detected.\n"); sym_init (np, 1); return; - }; + } OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */ OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */ @@ -3922,7 +3922,7 @@ static void sym_intr1 (hcb_p np) else if (sist & UDC) sym_int_udc (np); else goto unknown_int; return; - }; + } /* * Now, interrupts we are not able to recover cleanly. @@ -3937,7 +3937,7 @@ static void sym_intr1 (hcb_p np) (dstat & (MDPE|BF|ABRT|IID))) { sym_start_reset(np); return; - }; + } unknown_int: /* @@ -4274,7 +4274,7 @@ static void sym_int_ma (hcb_p np) if (ss2 & OLF1) rest++; if (!(np->features & FE_C10)) if (ss2 & ORF1) rest++; - }; + } /* * Clear fifos. @@ -4313,7 +4313,7 @@ static void sym_int_ma (hcb_p np) if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("\nCP=%p DSP=%x NXT=%x VDSP=%p CMD=%x ", cp, (unsigned)dsp, (unsigned)nxtdsp, vdsp, cmd); - }; + } if (!vdsp) { printf ("%s: interrupted SCRIPT address not found.\n", @@ -4339,7 +4339,7 @@ static void sym_int_ma (hcb_p np) } else { tblp = (u32 *) 0; olen = scr_to_cpu(vdsp[0]) & 0xffffff; - }; + } if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("OCMD=%x\nTBLP=%p OLEN=%x OADR=%x\n", @@ -4347,7 +4347,7 @@ static void sym_int_ma (hcb_p np) tblp, (unsigned) olen, (unsigned) oadr); - }; + } /* * check cmd against assumed interrupted script command. @@ -4360,7 +4360,7 @@ static void sym_int_ma (hcb_p np) (unsigned)cmd, (unsigned)scr_to_cpu(vdsp[0]) >> 24); goto reset_all; - }; + } /* * if old phase not dataphase, leave here. @@ -4371,7 +4371,7 @@ static void sym_int_ma (hcb_p np) cmd&7, INB(nc_sbcl)&7, (unsigned)olen, (unsigned)oadr, (unsigned)rest); goto unexpected_phase; - }; + } /* * Choose the correct PM save area. @@ -5541,12 +5541,12 @@ static int sym_show_msg (u_char * msg) for (i=1;i<8;i++) { if (i-1>msg[1]) break; printf ("-%x",msg[i]); - }; + } return (i+1); } else if ((*msg & 0xf0) == 0x20) { printf ("-%x",msg[1]); return (2); - }; + } return (1); } @@ -5607,7 +5607,7 @@ static void sym_sync_nego(hcb_p np, tcb_p tp, ccb_p cp) */ if (DEBUG_FLAGS & DEBUG_NEGO) { sym_print_msg(cp, "sync msgin", np->msgin); - }; + } /* * request or answer ? @@ -5708,7 +5708,7 @@ static void sym_ppr_nego(hcb_p np, tcb_p tp, ccb_p cp) */ if (DEBUG_FLAGS & DEBUG_NEGO) { sym_print_msg(cp, "ppr msgin", np->msgin); - }; + } /* * get requested values. @@ -5847,7 +5847,7 @@ static void sym_wide_nego(hcb_p np, tcb_p tp, ccb_p cp) */ if (DEBUG_FLAGS & DEBUG_NEGO) { sym_print_msg(cp, "wide msgin", np->msgin); - }; + } /* * Is it a request from the device? @@ -5912,7 +5912,7 @@ static void sym_wide_nego(hcb_p np, tcb_p tp, ccb_p cp) OUTL_DSP (SCRIPTA_BA (np, clrack)); return; - }; + } /* * It was a request, set value and @@ -5972,7 +5972,7 @@ static void sym_nego_default(hcb_p np, tcb_p tp, ccb_p cp) case NS_WIDE: sym_setwide (np, cp, 0); break; - }; + } np->msgin [0] = M_NOOP; np->msgout[0] = M_NOOP; cp->nego_status = 0; @@ -6237,7 +6237,7 @@ static void sym_int_sir (hcb_p np) case SIR_NEGO_PROTO: sym_nego_default(np, tp, cp); goto out; - }; + } out: OUTONB_STD (); @@ -6719,7 +6719,7 @@ static int sym_regtest (hcb_p np) printf ("CACHE TEST FAILED: reg dstat-sstat2 readback %x.\n", (unsigned) data); return (0x10); - }; + } return (0); } #endif @@ -6763,7 +6763,7 @@ restart_test: if (i>=SYM_SNOOP_TIMEOUT) { printf ("CACHE TEST FAILED: timeout.\n"); return (0x20); - }; + } /* * Check for fatal DMA errors. */ @@ -6801,7 +6801,7 @@ restart_test: (u_long) SCRIPTB0_BA (np, snooptest), (u_long) pc, (u_long) SCRIPTB0_BA (np, snoopend) +8); return (0x40); - }; + } /* * Show results. */ @@ -6809,17 +6809,17 @@ restart_test: printf ("CACHE TEST FAILED: host wrote %d, chip read %d.\n", (int) host_wr, (int) sym_rd); err |= 1; - }; + } if (host_rd != sym_wr) { printf ("CACHE TEST FAILED: chip wrote %d, host read %d.\n", (int) sym_wr, (int) host_rd); err |= 2; - }; + } if (sym_bk != sym_wr) { printf ("CACHE TEST FAILED: chip wrote %d, read back %d.\n", (int) sym_wr, (int) sym_bk); err |= 4; - }; + } return (err); } @@ -8734,7 +8734,7 @@ sym_pci_attach(device_t dev) if (sym_snooptest (np)) { device_printf(dev, "CACHE INCORRECTLY CONFIGURED.\n"); goto attach_failed; - }; + } /* * Now deal with CAM. diff --git a/sys/dev/tdfx/tdfx_pci.c b/sys/dev/tdfx/tdfx_pci.c index 918857a..be42375 100644 --- a/sys/dev/tdfx/tdfx_pci.c +++ b/sys/dev/tdfx/tdfx_pci.c @@ -127,7 +127,7 @@ tdfx_probe(device_t dev) case PCI_DEVICE_3DFX_VOODOO1: device_set_desc(dev, "3DFX Voodoo Graphics 3D Accelerator"); return BUS_PROBE_DEFAULT; - }; + } return ENXIO; } diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c index eba7f7b..23ed50b 100644 --- a/sys/dev/ti/if_ti.c +++ b/sys/dev/ti/if_ti.c @@ -1720,7 +1720,7 @@ ti_init_rx_ring_std(struct ti_softc *sc) for (i = 0; i < TI_STD_RX_RING_CNT; i++) { if (ti_newbuf_std(sc, i) != 0) return (ENOBUFS); - }; + } sc->ti_std = TI_STD_RX_RING_CNT - 1; TI_UPDATE_STDPROD(sc, TI_STD_RX_RING_CNT - 1); @@ -1758,7 +1758,7 @@ ti_init_rx_ring_jumbo(struct ti_softc *sc) for (i = 0; i < TI_JUMBO_RX_RING_CNT; i++) { if (ti_newbuf_jumbo(sc, i, NULL) != 0) return (ENOBUFS); - }; + } sc->ti_jumbo = TI_JUMBO_RX_RING_CNT - 1; TI_UPDATE_JUMBOPROD(sc, TI_JUMBO_RX_RING_CNT - 1); @@ -1795,7 +1795,7 @@ ti_init_rx_ring_mini(struct ti_softc *sc) for (i = 0; i < TI_MINI_RX_RING_CNT; i++) { if (ti_newbuf_mini(sc, i) != 0) return (ENOBUFS); - }; + } sc->ti_mini = TI_MINI_RX_RING_CNT - 1; TI_UPDATE_MINIPROD(sc, TI_MINI_RX_RING_CNT - 1); diff --git a/sys/dev/uart/uart_dev_msm.c b/sys/dev/uart/uart_dev_msm.c index 7ba46ac..cfd2330 100644 --- a/sys/dev/uart/uart_dev_msm.c +++ b/sys/dev/uart/uart_dev_msm.c @@ -123,7 +123,7 @@ msm_uart_param(struct uart_bas *bas, int baudrate, int databits, } uart_setreg(bas, UART_DM_MR2, ulcon); - /* Set 115200 for both TX and RX. */; + /* Set 115200 for both TX and RX. */ uart_setreg(bas, UART_DM_CSR, UART_DM_CSR_115200); uart_barrier(bas); diff --git a/sys/dev/usb/net/if_mos.c b/sys/dev/usb/net/if_mos.c index 1f92629..3a65ec6 100644 --- a/sys/dev/usb/net/if_mos.c +++ b/sys/dev/usb/net/if_mos.c @@ -608,7 +608,7 @@ mos_setmulti(struct usb_ether *ue) if (ifma->ifma_addr->sa_family != AF_LINK) { allmulti = 1; continue; - }; + } h = ether_crc32_be(LLADDR((struct sockaddr_dl *) ifma->ifma_addr), ETHER_ADDR_LEN) >> 26; hashtbl[h / 8] |= 1 << (h % 8); diff --git a/sys/dev/usb/net/if_ure.c b/sys/dev/usb/net/if_ure.c index 4d215f8..9d7f47a 100644 --- a/sys/dev/usb/net/if_ure.c +++ b/sys/dev/usb/net/if_ure.c @@ -419,7 +419,7 @@ ure_probe(device_t dev) { struct usb_attach_arg *uaa; - uaa = device_get_ivars(dev);; + uaa = device_get_ivars(dev); if (uaa->usb_mode != USB_MODE_HOST) return (ENXIO); if (uaa->info.bConfigIndex != URE_CONFIG_IDX) diff --git a/sys/dev/usb/net/if_urndis.c b/sys/dev/usb/net/if_urndis.c index 749f874..de7fd1e 100644 --- a/sys/dev/usb/net/if_urndis.c +++ b/sys/dev/usb/net/if_urndis.c @@ -235,7 +235,7 @@ urndis_attach(device_t dev) cmd = usbd_find_descriptor(uaa->device, NULL, uaa->info.bIfaceIndex, UDESC_CS_INTERFACE, 0xFF, UDESCSUB_CDC_CM, 0xFF); - if (cmd != 0) { + if (cmd != NULL) { DPRINTF("Call Mode Descriptor found, dataif=%d\n", cmd->bDataInterface); iface_index[0] = cmd->bDataInterface; } diff --git a/sys/dev/usb/quirk/usb_quirk.c b/sys/dev/usb/quirk/usb_quirk.c index 5af2136..6f6dac7 100644 --- a/sys/dev/usb/quirk/usb_quirk.c +++ b/sys/dev/usb/quirk/usb_quirk.c @@ -529,6 +529,9 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = { /* DYMO LabelManager Pnp */ USB_QUIRK(DYMO, LABELMANAGERPNP, 0x0000, 0xffff, UQ_MSC_DYMO_EJECT), + + /* Holtek USB gaming keyboard */ + USB_QUIRK(HOLTEK, F85, 0x0000, 0xffff, UQ_KBD_BOOTPROTO), }; #undef USB_QUIRK_VP #undef USB_QUIRK diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c index 783a96c..17b9367 100644 --- a/sys/dev/usb/usb_transfer.c +++ b/sys/dev/usb/usb_transfer.c @@ -925,7 +925,7 @@ usbd_transfer_setup(struct usb_device *udev, DPRINTFN(6, "setup array has zero length!\n"); return (USB_ERR_INVAL); } - if (ifaces == 0) { + if (ifaces == NULL) { DPRINTFN(6, "ifaces array is NULL!\n"); return (USB_ERR_INVAL); } diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 7f75d5a..a2df3e4 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -2268,6 +2268,9 @@ product HIDGLOBAL CM6020 0x1784 Omnikey Cardman 6020 product HITACHI DVDCAM_DZ_MV100A 0x0004 DVD-CAM DZ-MV100A Camcorder product HITACHI DVDCAM_USB 0x001e DVDCAM USB HS Interface +/* Holtek products */ +product HOLTEK F85 0xa030 Holtek USB gaming keyboard + /* HP products */ product HP 895C 0x0004 DeskJet 895C product HP 4100C 0x0101 Scanjet 4100C diff --git a/sys/dev/vnic/nicvf_queues.c b/sys/dev/vnic/nicvf_queues.c index 9b46d7c..087cf9f 100644 --- a/sys/dev/vnic/nicvf_queues.c +++ b/sys/dev/vnic/nicvf_queues.c @@ -1904,7 +1904,6 @@ static int nicvf_tx_mbuf_locked(struct snd_queue *sq, struct mbuf **mbufp) { bus_dma_segment_t segs[256]; - struct nicvf *nic; struct snd_buff *snd_buff; size_t seg; int nsegs, qentry; @@ -1928,12 +1927,7 @@ nicvf_tx_mbuf_locked(struct snd_queue *sq, struct mbuf **mbufp) } /* Set how many subdescriptors is required */ - nic = sq->nic; - if ((*mbufp)->m_pkthdr.tso_segsz != 0 && nic->hw_tso) - subdesc_cnt = MIN_SQ_DESC_PER_PKT_XMIT; - else - subdesc_cnt = MIN_SQ_DESC_PER_PKT_XMIT + nsegs - 1; - + subdesc_cnt = MIN_SQ_DESC_PER_PKT_XMIT + nsegs - 1; if (subdesc_cnt > sq->free_cnt) { /* ARM64TODO: Add mbuf defragmentation if we lack descriptors */ bus_dmamap_unload(sq->snd_buff_dmat, snd_buff->dmap); diff --git a/sys/dev/vnic/thunder_bgx.c b/sys/dev/vnic/thunder_bgx.c index 3494754..7a3a941 100644 --- a/sys/dev/vnic/thunder_bgx.c +++ b/sys/dev/vnic/thunder_bgx.c @@ -240,7 +240,7 @@ static int bgx_poll_reg(struct bgx *bgx, uint8_t lmac, uint64_t reg, uint64_t mask, boolean_t zero) { - int timeout = 100; + int timeout = 10; uint64_t reg_val; while (timeout) { @@ -250,7 +250,7 @@ bgx_poll_reg(struct bgx *bgx, uint8_t lmac, uint64_t reg, uint64_t mask, if (!zero && (reg_val & mask)) return (0); - DELAY(1000); + DELAY(100); timeout--; } return (ETIMEDOUT); diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c index 40be782..2884c57 100644 --- a/sys/dev/vt/vt_core.c +++ b/sys/dev/vt/vt_core.c @@ -709,7 +709,7 @@ vt_machine_kbdevent(int c) /* Suspend machine. */ power_pm_suspend(POWER_SLEEP_STATE_SUSPEND); return (1); - }; + } return (0); } diff --git a/sys/dev/xen/pci/xen_acpi_pci.c b/sys/dev/xen/pci/xen_acpi_pci.c index 0eadd4a..11797fb 100644 --- a/sys/dev/xen/pci/xen_acpi_pci.c +++ b/sys/dev/xen/pci/xen_acpi_pci.c @@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$"); #include <contrib/dev/acpica/include/accommon.h> #include <dev/acpica/acpivar.h> +#include <dev/acpica/acpi_pcivar.h> #include <sys/pciio.h> #include <dev/pci/pcireg.h> @@ -65,6 +66,14 @@ xen_acpi_pci_probe(device_t dev) return (BUS_PROBE_SPECIFIC); } +static void +xen_acpi_pci_child_added(device_t dev, device_t child) +{ + + acpi_pci_child_added(dev, child); + xen_pci_child_added_method(dev, child); +} + static device_method_t xen_acpi_pci_methods[] = { /* Device interface */ DEVMETHOD(device_probe, xen_acpi_pci_probe), @@ -72,7 +81,7 @@ static device_method_t xen_acpi_pci_methods[] = { /* PCI interface overwrites */ DEVMETHOD(pci_enable_msi, xen_pci_enable_msi_method), DEVMETHOD(pci_disable_msi, xen_pci_disable_msi_method), - DEVMETHOD(pci_child_added, xen_pci_child_added_method), + DEVMETHOD(pci_child_added, xen_acpi_pci_child_added), DEVMETHOD_END }; diff --git a/sys/fs/ext2fs/ext2_alloc.c b/sys/fs/ext2fs/ext2_alloc.c index 9d5417c..c3bd29b 100644 --- a/sys/fs/ext2fs/ext2_alloc.c +++ b/sys/fs/ext2fs/ext2_alloc.c @@ -161,7 +161,7 @@ ext2_reallocblks(struct vop_reallocblks_args *ap) struct inode *ip; struct vnode *vp; struct buf *sbp, *ebp; - uint32_t *bap, *sbap, *ebap = 0; + uint32_t *bap, *sbap, *ebap; struct ext2mount *ump; struct cluster_save *buflist; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; @@ -231,6 +231,7 @@ ext2_reallocblks(struct vop_reallocblks_args *ap) /* * If the block range spans two block maps, get the second map. */ + ebap = NULL; if (end_lvl == 0 || (idp = &end_ap[end_lvl - 1])->in_off + 1 >= len) { ssize = len; } else { diff --git a/sys/fs/ext2fs/ext2_bmap.c b/sys/fs/ext2fs/ext2_bmap.c index 8e5e986..7966b9b 100644 --- a/sys/fs/ext2fs/ext2_bmap.c +++ b/sys/fs/ext2fs/ext2_bmap.c @@ -42,6 +42,7 @@ #include <sys/proc.h> #include <sys/vnode.h> #include <sys/mount.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/stat.h> @@ -247,6 +248,13 @@ ext2_bmaparray(struct vnode *vp, daddr_t bn, daddr_t *bnp, int *runp, int *runb) vfs_busy_pages(bp, 0); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif curthread->td_ru.ru_inblock++; error = bufwait(bp); if (error) { diff --git a/sys/fs/ext2fs/ext2_vfsops.c b/sys/fs/ext2fs/ext2_vfsops.c index fab98a5..a1f3c51 100644 --- a/sys/fs/ext2fs/ext2_vfsops.c +++ b/sys/fs/ext2fs/ext2_vfsops.c @@ -308,8 +308,8 @@ ext2_check_sb_compat(struct ext2fs *es, struct cdev *dev, int ronly) } /* - * This computes the fields of the ext2_sb_info structure from the - * data in the ext2_super_block structure read in. + * This computes the fields of the m_ext2fs structure from the + * data in the ext2fs structure read in. */ static int compute_sb_data(struct vnode *devvp, struct ext2fs *es, @@ -600,7 +600,7 @@ ext2_mountfs(struct vnode *devvp, struct mount *mp) /* * I don't know whether this is the right strategy. Note that - * we dynamically allocate both an ext2_sb_info and an ext2_super_block + * we dynamically allocate both an m_ext2fs and an ext2fs * while Linux keeps the super block in a locked buffer. */ ump->um_e2fs = malloc(sizeof(struct m_ext2fs), diff --git a/sys/fs/nandfs/nandfs_segment.c b/sys/fs/nandfs/nandfs_segment.c index 22fb7cd..38019ef 100644 --- a/sys/fs/nandfs/nandfs_segment.c +++ b/sys/fs/nandfs/nandfs_segment.c @@ -199,7 +199,7 @@ delete_segment(struct nandfs_seginfo *seginfo) TAILQ_REMOVE(&seg->segsum, bp, b_cluster.cluster_entry); bp->b_flags &= ~B_MANAGED; brelse(bp); - }; + } LIST_REMOVE(seg, seg_link); free(seg, M_DEVBUF); @@ -752,7 +752,7 @@ nandfs_clean_segblocks(struct nandfs_segment *seg, uint8_t unlock) TAILQ_FOREACH_SAFE(bp, &seg->segsum, b_cluster.cluster_entry, tbp) { TAILQ_REMOVE(&seg->segsum, bp, b_cluster.cluster_entry); nandfs_clean_buf(fsdev, bp); - }; + } TAILQ_FOREACH_SAFE(bp, &seg->data, b_cluster.cluster_entry, tbp) { TAILQ_REMOVE(&seg->data, bp, b_cluster.cluster_entry); @@ -807,7 +807,7 @@ nandfs_save_segblocks(struct nandfs_segment *seg, uint8_t unlock) goto out; } i++; - }; + } i = 0; TAILQ_FOREACH_SAFE(bp, &seg->data, b_cluster.cluster_entry, tbp) { diff --git a/sys/fs/nfs/nfs_commonacl.c b/sys/fs/nfs/nfs_commonacl.c index 0201e2d..d6ba742 100644 --- a/sys/fs/nfs/nfs_commonacl.c +++ b/sys/fs/nfs/nfs_commonacl.c @@ -436,7 +436,7 @@ nfsrv_buildacl(struct nfsrv_descript *nd, NFSACL_T *aclp, enum vtype type, break; default: continue; - }; + } retlen += nfsrv_buildace(nd, name, namelen, type, isgroup, isowner, &aclp->acl_entry[i]); entrycnt++; @@ -505,7 +505,7 @@ nfsrv_compareacl(NFSACL_T *aclp1, NFSACL_T *aclp2) case ACL_OTHER: if (acep1->ae_perm != acep2->ae_perm) return (1); - }; + } acep1++; acep2++; } diff --git a/sys/fs/nfs/nfs_commonport.c b/sys/fs/nfs/nfs_commonport.c index a22b38c..a62a222 100644 --- a/sys/fs/nfs/nfs_commonport.c +++ b/sys/fs/nfs/nfs_commonport.c @@ -337,7 +337,7 @@ nfsvno_pathconf(struct vnode *vp, int flag, register_t *retf, */ *retf = 0; printf("nfsrvd pathconf flag=%d not supp\n", flag); - }; + } error = 0; } NFSEXITCODE(error); diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c index 16d91af..0d46d95 100644 --- a/sys/fs/nfs/nfs_commonsubs.c +++ b/sys/fs/nfs/nfs_commonsubs.c @@ -507,7 +507,7 @@ nfsm_fhtom(struct nfsrv_descript *nd, u_int8_t *fhp, int size, int set_true) } (void) nfsm_strtom(nd, fhp, size); break; - }; + } return (bytesize); } @@ -544,7 +544,7 @@ nfsaddr_match(int family, union nethostaddr *haddr, NFSSOCKADDR_T nam) } break; #endif - }; + } return (0); } @@ -581,7 +581,7 @@ nfsaddr2_match(NFSSOCKADDR_T nam1, NFSSOCKADDR_T nam2) } break; #endif - }; + } return (0); } @@ -1774,7 +1774,7 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, */ bitpos = NFSATTRBIT_MAX; break; - }; + } } /* @@ -2508,7 +2508,7 @@ nfsv4_fillattr(struct nfsrv_descript *nd, struct mount *mp, vnode_t vp, break; default: printf("EEK! Bad V4 attribute bitpos=%d\n", bitpos); - }; + } } } if (naclp != NULL) diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index 3498dc0..567e326 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -681,7 +681,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) ncl_printf(" ncl_bioread: type %x unexpected\n", vp->v_type); bp = NULL; break; - }; + } if (n > 0) { error = vn_io_fault_uiomove(bp->b_data + on, (int)n, uio); @@ -1664,7 +1664,7 @@ ncl_doio(struct vnode *vp, struct buf *bp, struct ucred *cr, struct thread *td, default: ncl_printf("ncl_doio: type %x unexpected\n", vp->v_type); break; - }; + } if (error) { bp->b_ioflags |= BIO_ERROR; bp->b_error = error; diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c index eaa445b..c063de1 100644 --- a/sys/fs/nfsclient/nfs_clport.c +++ b/sys/fs/nfsclient/nfs_clport.c @@ -925,7 +925,7 @@ nfscl_fillsattr(struct nfsrv_descript *nd, struct vattr *vap, (void) nfsv4_fillattr(nd, vp->v_mount, vp, NULL, vap, NULL, 0, &attrbits, NULL, NULL, 0, 0, 0, 0, (uint64_t)0); break; - }; + } } /* diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index a7d47f0..cd12fba 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -487,7 +487,7 @@ nfsrpc_openrpc(struct nfsmount *nmp, vnode_t vp, u_int8_t *nfhp, int fhlen, default: error = NFSERR_BADXDR; goto nfsmout; - }; + } } else { ndp->nfsdl_flags = NFSCLDL_READ; } @@ -2086,7 +2086,7 @@ nfsrpc_createv4(vnode_t dvp, char *name, int namelen, struct vattr *vap, default: error = NFSERR_BADXDR; goto nfsmout; - }; + } } else { dp->nfsdl_flags = NFSCLDL_READ; } @@ -3698,7 +3698,7 @@ nfsrpc_advlock(vnode_t vp, off_t size, int op, struct flock *fl, break; default: return (EINVAL); - }; + } if (start < 0) return (EINVAL); if (fl->l_len != 0) { diff --git a/sys/fs/nfsclient/nfs_clstate.c b/sys/fs/nfsclient/nfs_clstate.c index 2600b80..a49e93f 100644 --- a/sys/fs/nfsclient/nfs_clstate.c +++ b/sys/fs/nfsclient/nfs_clstate.c @@ -1297,7 +1297,7 @@ nfscl_checkwritelocked(vnode_t vp, struct flock *fl, break; default: return (1); - }; + } if (fl->l_len != 0) { end = off + fl->l_len; if (end < off) @@ -3507,7 +3507,7 @@ nfscl_docb(struct nfsrv_descript *nd, NFSPROC_T *p) error = NFSERR_NOTSUPP; } break; - }; + } if (error) { if (error == EBADRPC || error == NFSERR_BADXDR) { nd->nd_repstat = NFSERR_BADXDR; diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index 6aee675..4487b2a 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -974,7 +974,7 @@ nfs_setattr(struct vop_setattr_args *ap) mtx_lock(&np->n_mtx); np->n_vattr.na_size = np->n_size = vap->va_size; mtx_unlock(&np->n_mtx); - }; + } } else { mtx_lock(&np->n_mtx); if ((vap->va_mtime.tv_sec != VNOVAL || vap->va_atime.tv_sec != VNOVAL) && diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdport.c index edbcb35..44ae88e 100644 --- a/sys/fs/nfsserver/nfs_nfsdport.c +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -2370,7 +2370,7 @@ nfsrv_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, vfs_timestamp(&nvap->na_atime); nvap->na_vaflags |= VA_UTIMES_NULL; break; - }; + } NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); switch (fxdr_unsigned(int, *tl)) { case NFSV3SATTRTIME_TOCLIENT: @@ -2383,11 +2383,11 @@ nfsrv_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, if (!toclient) nvap->na_vaflags |= VA_UTIMES_NULL; break; - }; + } break; case ND_NFSV4: error = nfsv4_sattr(nd, vp, nvap, attrbitp, aclp, p); - }; + } nfsmout: NFSEXITCODE2(error, nd); return (error); @@ -2585,7 +2585,7 @@ nfsv4_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, */ bitpos = NFSATTRBIT_MAX; break; - }; + } } /* diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index bd054c4..2a0c9cf 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -1024,7 +1024,7 @@ nfsrvd_create(struct nfsrv_descript *nd, __unused int isdgram, break; default: break; - }; + } } else { NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); how = fxdr_unsigned(int, *tl); @@ -1041,7 +1041,7 @@ nfsrvd_create(struct nfsrv_descript *nd, __unused int isdgram, cverf[1] = *tl; exclusive_flag = 1; break; - }; + } NFSVNO_SETATTRVAL(&nva, type, VREG); } } @@ -1088,7 +1088,7 @@ nfsrvd_create(struct nfsrv_descript *nd, __unused int isdgram, if (named.ni_vp == NULL) NFSVNO_SETATTRVAL(&nva, mode, 0); break; - }; + } } /* @@ -2206,7 +2206,7 @@ nfsrvd_lock(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } if (*tl++ == newnfs_true) flags |= NFSLCK_RECLAIM; offset = fxdr_hyper(tl); @@ -2400,7 +2400,7 @@ nfsrvd_lockt(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } lo.lo_first = fxdr_hyper(tl); tl += 2; len = fxdr_hyper(tl); @@ -2509,7 +2509,7 @@ nfsrvd_locku(struct nfsrv_descript *nd, __unused int isdgram, free(stp, M_NFSDSTATE); free(lop, M_NFSDLOCK); goto nfsmout; - }; + } stp->ls_ownerlen = 0; stp->ls_uid = nd->nd_cred->cr_uid; stp->ls_seq = fxdr_unsigned(int, *tl++); @@ -2645,7 +2645,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, default: /* nd_repstat will be set to NFSERR_INVAL below. */ break; - }; + } } switch (i) { case NFSV4OPEN_ACCESSREAD: @@ -2659,7 +2659,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_INVAL; - }; + } i = fxdr_unsigned(int, *tl++); switch (i) { case NFSV4OPEN_DENYNONE: @@ -2675,7 +2675,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_INVAL; - }; + } clientid.lval[0] = *tl++; clientid.lval[1] = *tl; if ((nd->nd_flag & ND_IMPLIEDCLID) != 0) { @@ -2750,7 +2750,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } } else if (create != NFSV4OPEN_NOCREATE) { nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; @@ -2832,7 +2832,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, case NFSCREATE_EXCLUSIVE41: exclusive_flag = 1; break; - }; + } } nfsvno_open(nd, &named, clientid, &stateid, stp, &exclusive_flag, &nva, cverf, create, aclp, &attrbits, @@ -2853,7 +2853,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } stp->ls_flags |= NFSLCK_RECLAIM; } else { /* CLAIM_NULL_FH */ @@ -3247,7 +3247,7 @@ nfsrvd_opendowngrade(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_BADXDR; - }; + } i = fxdr_unsigned(int, *tl); switch (i) { case NFSV4OPEN_DENYNONE: @@ -3263,7 +3263,7 @@ nfsrvd_opendowngrade(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_BADXDR; - }; + } clientid.lval[0] = stp->ls_stateid.other[0]; clientid.lval[1] = stp->ls_stateid.other[1]; diff --git a/sys/fs/nfsserver/nfs_nfsdsocket.c b/sys/fs/nfsserver/nfs_nfsdsocket.c index 4497161..4e995c1 100644 --- a/sys/fs/nfsserver/nfs_nfsdsocket.c +++ b/sys/fs/nfsserver/nfs_nfsdsocket.c @@ -992,7 +992,7 @@ nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag, NULL, p, &vpnes); } } - }; + } if (error) { if (error == EBADRPC || error == NFSERR_BADXDR) { nd->nd_repstat = NFSERR_BADXDR; diff --git a/sys/fs/nfsserver/nfs_nfsdsubs.c b/sys/fs/nfsserver/nfs_nfsdsubs.c index c0421e3..c177f45 100644 --- a/sys/fs/nfsserver/nfs_nfsdsubs.c +++ b/sys/fs/nfsserver/nfs_nfsdsubs.c @@ -1814,7 +1814,7 @@ nfsrv_putreferralattr(struct nfsrv_descript *nd, nfsattrbit_t *retbitp, break; default: printf("EEK! Bad V4 refattr bitpos=%d\n", bitpos); - }; + } } } *retnump = txdr_unsigned(retnum); diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c index 4de3827..f549160 100644 --- a/sys/fs/smbfs/smbfs_io.c +++ b/sys/fs/smbfs/smbfs_io.c @@ -342,7 +342,7 @@ smbfs_doio(struct vnode *vp, struct buf *bp, struct ucred *cr, struct thread *td default: printf("smbfs_doio: type %x unexpected\n",vp->v_type); break; - }; + } if (error) { bp->b_error = error; bp->b_ioflags |= BIO_ERROR; diff --git a/sys/fs/smbfs/smbfs_subr.c b/sys/fs/smbfs/smbfs_subr.c index 4e9f77d..a97fb80 100644 --- a/sys/fs/smbfs/smbfs_subr.c +++ b/sys/fs/smbfs/smbfs_subr.c @@ -59,7 +59,6 @@ void smb_time_server2local(u_long seconds, int tzoff, struct timespec *tsp) { tsp->tv_sec = seconds + tzoff * 60; - /*+ tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0)*/; } /* diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c index c78ceb2..1c762b0 100644 --- a/sys/fs/smbfs/smbfs_vnops.c +++ b/sys/fs/smbfs/smbfs_vnops.c @@ -341,7 +341,7 @@ smbfs_setattr(ap) default: error = EINVAL; goto out; - }; + } if (isreadonly) { error = EROFS; goto out; diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c index fcc8782..72e8792 100644 --- a/sys/fs/tmpfs/tmpfs_subr.c +++ b/sys/fs/tmpfs/tmpfs_subr.c @@ -945,7 +945,7 @@ tmpfs_dir_attach_dup(struct tmpfs_node *dnode, LIST_INSERT_BEFORE(de, nde, uh.td_dup.index_entries); LIST_INSERT_HEAD(duphead, nde, uh.td_dup.entries); return; - }; + } } /* diff --git a/sys/fs/unionfs/union_subr.c b/sys/fs/unionfs/union_subr.c index 951d775..6f53473 100644 --- a/sys/fs/unionfs/union_subr.c +++ b/sys/fs/unionfs/union_subr.c @@ -1238,7 +1238,7 @@ unionfs_checkuppervp(struct vnode *vp, char *fil, int lno) "unionfs_checkuppervp: on non-unionfs-node.\n"); #endif panic("unionfs_checkuppervp"); - }; + } #endif return (unp->un_uppervp); } @@ -1258,7 +1258,7 @@ unionfs_checklowervp(struct vnode *vp, char *fil, int lno) "unionfs_checklowervp: on non-unionfs-node.\n"); #endif panic("unionfs_checklowervp"); - }; + } #endif return (unp->un_lowervp); } diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c index a2b4e65..912a5c5 100644 --- a/sys/geom/eli/g_eli.c +++ b/sys/geom/eli/g_eli.c @@ -1181,6 +1181,7 @@ g_eli_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, ADD_FLAG(G_ELI_FLAG_DESTROY, "DESTROY"); ADD_FLAG(G_ELI_FLAG_RO, "READ-ONLY"); ADD_FLAG(G_ELI_FLAG_NODELETE, "NODELETE"); + ADD_FLAG(G_ELI_FLAG_GELIBOOT, "GELIBOOT"); #undef ADD_FLAG } sbuf_printf(sb, "</Flags>\n"); diff --git a/sys/geom/eli/g_eli.h b/sys/geom/eli/g_eli.h index 3deb865..13e7807 100644 --- a/sys/geom/eli/g_eli.h +++ b/sys/geom/eli/g_eli.h @@ -97,6 +97,8 @@ #define G_ELI_FLAG_RO 0x00000020 /* Don't pass through BIO_DELETE requests. */ #define G_ELI_FLAG_NODELETE 0x00000040 +/* This GELI supports GELIBoot */ +#define G_ELI_FLAG_GELIBOOT 0x00000080 /* RUNTIME FLAGS. */ /* Provider was open for writing. */ #define G_ELI_FLAG_WOPEN 0x00010000 diff --git a/sys/geom/eli/g_eli_ctl.c b/sys/geom/eli/g_eli_ctl.c index 9de7ec3..89e9f02 100644 --- a/sys/geom/eli/g_eli_ctl.c +++ b/sys/geom/eli/g_eli_ctl.c @@ -376,7 +376,7 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) char param[16]; const char *prov; u_char *sector; - int *nargs, *boot, *noboot, *trim, *notrim; + int *nargs, *boot, *noboot, *trim, *notrim, *geliboot, *nogeliboot; int zero, error, changed; u_int i; @@ -421,6 +421,19 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) if (*trim || *notrim) changed = 1; + geliboot = gctl_get_paraml(req, "geliboot", sizeof(*geliboot)); + if (geliboot == NULL) + geliboot = &zero; + nogeliboot = gctl_get_paraml(req, "nogeliboot", sizeof(*nogeliboot)); + if (nogeliboot == NULL) + nogeliboot = &zero; + if (*geliboot && *nogeliboot) { + gctl_error(req, "Options -g and -G are mutually exclusive."); + return; + } + if (*geliboot || *nogeliboot) + changed = 1; + if (!changed) { gctl_error(req, "No option given."); return; @@ -469,6 +482,16 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) continue; } + if (*geliboot && (sc->sc_flags & G_ELI_FLAG_GELIBOOT)) { + G_ELI_DEBUG(1, "GELIBOOT flag already configured for %s.", + prov); + continue; + } else if (*nogeliboot && !(sc->sc_flags & G_ELI_FLAG_GELIBOOT)) { + G_ELI_DEBUG(1, "GELIBOOT flag not configured for %s.", + prov); + continue; + } + if (!(sc->sc_flags & G_ELI_FLAG_ONETIME)) { /* * ONETIME providers don't write metadata to @@ -504,6 +527,14 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) sc->sc_flags &= ~G_ELI_FLAG_NODELETE; } + if (*geliboot) { + md.md_flags |= G_ELI_FLAG_GELIBOOT; + sc->sc_flags |= G_ELI_FLAG_GELIBOOT; + } else if (*nogeliboot) { + md.md_flags &= ~G_ELI_FLAG_GELIBOOT; + sc->sc_flags &= ~G_ELI_FLAG_GELIBOOT; + } + if (sc->sc_flags & G_ELI_FLAG_ONETIME) { /* There's no metadata on disk so we are done here. */ continue; diff --git a/sys/geom/raid/md_promise.c b/sys/geom/raid/md_promise.c index 2d161e7..42ae947 100644 --- a/sys/geom/raid/md_promise.c +++ b/sys/geom/raid/md_promise.c @@ -290,7 +290,7 @@ promise_meta_unused_range(struct promise_raid_conf **metaarr, int nsd, metaarr[i]->disk_sectors; csize = sectors - coff; i++; - }; + } return ((*size > 0) ? 1 : 0); } diff --git a/sys/geom/sched/g_sched.c b/sys/geom/sched/g_sched.c index d4e3ca0..192f5c5 100644 --- a/sys/geom/sched/g_sched.c +++ b/sys/geom/sched/g_sched.c @@ -742,7 +742,7 @@ g_gsched_modevent(module_t mod, int cmd, void *arg) G_SCHED_DEBUG(0, "Unloaded module %s error %d.", gsp->gs_name, error); break; - }; + } return (error); } diff --git a/sys/kern/kern_cpuset.c b/sys/kern/kern_cpuset.c index 4c057cc..f0f184b 100644 --- a/sys/kern/kern_cpuset.c +++ b/sys/kern/kern_cpuset.c @@ -831,7 +831,7 @@ struct cpuset * cpuset_thread0(void) { struct cpuset *set; - int error; + int error, i; cpuset_zone = uma_zcreate("cpuset", sizeof(struct cpuset), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); @@ -863,9 +863,15 @@ cpuset_thread0(void) */ cpuset_unr = new_unrhdr(2, INT_MAX, NULL); - /* MD Code is responsible for initializing sets if vm_ndomains > 1. */ - if (vm_ndomains == 1) - CPU_COPY(&all_cpus, &cpuset_domain[0]); + /* + * If MD code has not initialized per-domain cpusets, place all + * CPUs in domain 0. + */ + for (i = 0; i < MAXMEMDOM; i++) + if (!CPU_EMPTY(&cpuset_domain[i])) + goto domains_set; + CPU_COPY(&all_cpus, &cpuset_domain[0]); +domains_set: return (set); } @@ -1118,7 +1124,7 @@ sys_cpuset_getaffinity(struct thread *td, struct cpuset_getaffinity_args *uap) error = intr_getaffinity(uap->id, mask); break; case CPU_WHICH_DOMAIN: - if (uap->id < 0 || uap->id >= vm_ndomains) + if (uap->id < 0 || uap->id >= MAXMEMDOM) error = ESRCH; else CPU_COPY(&cpuset_domain[uap->id], mask); diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c index a148386..31d8f16 100644 --- a/sys/kern/kern_physio.c +++ b/sys/kern/kern_physio.c @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include <sys/conf.h> #include <sys/malloc.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/uio.h> #include <geom/geom.h> @@ -109,6 +110,22 @@ physio(struct cdev *dev, struct uio *uio, int ioflag) prot |= VM_PROT_WRITE; /* Less backwards than it looks */ error = 0; for (i = 0; i < uio->uio_iovcnt; i++) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + if (uio->uio_rw == UIO_READ) { + racct_add_force(curproc, RACCT_READBPS, + uio->uio_iov[i].iov_len); + racct_add_force(curproc, RACCT_READIOPS, 1); + } else { + racct_add_force(curproc, RACCT_WRITEBPS, + uio->uio_iov[i].iov_len); + racct_add_force(curproc, RACCT_WRITEIOPS, 1); + } + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ + while (uio->uio_iov[i].iov_len) { g_reset_bio(bp); if (uio->uio_rw == UIO_READ) { diff --git a/sys/kern/kern_racct.c b/sys/kern/kern_racct.c index bbd50ca..438a249 100644 --- a/sys/kern/kern_racct.c +++ b/sys/kern/kern_racct.c @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include "opt_sched.h" #include <sys/param.h> +#include <sys/buf.h> #include <sys/systm.h> #include <sys/eventhandler.h> #include <sys/jail.h> @@ -177,7 +178,15 @@ int racct_types[] = { [RACCT_WALLCLOCK] = RACCT_IN_MILLIONS, [RACCT_PCTCPU] = - RACCT_DECAYING | RACCT_DENIABLE | RACCT_IN_MILLIONS }; + RACCT_DECAYING | RACCT_DENIABLE | RACCT_IN_MILLIONS, + [RACCT_READBPS] = + RACCT_DECAYING, + [RACCT_WRITEBPS] = + RACCT_DECAYING, + [RACCT_READIOPS] = + RACCT_DECAYING, + [RACCT_WRITEIOPS] = + RACCT_DECAYING }; static const fixpt_t RACCT_DECAY_FACTOR = 0.3 * FSCALE; @@ -634,6 +643,28 @@ racct_add_cred(struct ucred *cred, int resource, uint64_t amount) RACCT_UNLOCK(); } +/* + * Account for disk IO resource consumption. Checks for limits, + * but never fails, due to disk limits being undeniable. + */ +void +racct_add_buf(struct proc *p, const struct buf *bp, int is_write) +{ + + ASSERT_RACCT_ENABLED(); + PROC_LOCK_ASSERT(p, MA_OWNED); + + RACCT_LOCK(); + if (is_write) { + racct_add_locked(curproc, RACCT_WRITEBPS, bp->b_bcount, 1); + racct_add_locked(curproc, RACCT_WRITEIOPS, 1, 1); + } else { + racct_add_locked(curproc, RACCT_READBPS, bp->b_bcount, 1); + racct_add_locked(curproc, RACCT_READIOPS, 1, 1); + } + RACCT_UNLOCK(); +} + static int racct_set_locked(struct proc *p, int resource, uint64_t amount, int force) { @@ -655,7 +686,7 @@ racct_set_locked(struct proc *p, int resource, uint64_t amount, int force) * The diffs may be negative. */ diff_proc = amount - old_amount; - if (RACCT_IS_DECAYING(resource)) { + if (resource == RACCT_PCTCPU) { /* * Resources in per-credential racct containers may decay. * If this is the case, we need to calculate the difference @@ -1043,14 +1074,19 @@ racct_move(struct racct *dest, struct racct *src) RACCT_UNLOCK(); } -static void -racct_proc_throttle(struct proc *p) +/* + * Make the process sleep in userret() for 'timeout' ticks. Setting + * timeout to -1 makes it sleep until woken up by racct_proc_wakeup(). + */ +void +racct_proc_throttle(struct proc *p, int timeout) { struct thread *td; #ifdef SMP int cpuid; #endif + KASSERT(timeout != 0, ("timeout %d", timeout)); ASSERT_RACCT_ENABLED(); PROC_LOCK_ASSERT(p, MA_OWNED); @@ -1058,10 +1094,13 @@ racct_proc_throttle(struct proc *p) * Do not block kernel processes. Also do not block processes with * low %cpu utilization to improve interactivity. */ - if (((p->p_flag & (P_SYSTEM | P_KPROC)) != 0) || - (p->p_racct->r_resources[RACCT_PCTCPU] <= pcpu_threshold)) + if ((p->p_flag & (P_SYSTEM | P_KPROC)) != 0) return; - p->p_throttled = 1; + + if (p->p_throttled < 0 || (timeout > 0 && p->p_throttled > timeout)) + return; + + p->p_throttled = timeout; FOREACH_THREAD_IN_PROC(p, td) { thread_lock(td); @@ -1102,7 +1141,7 @@ racct_proc_wakeup(struct proc *p) PROC_LOCK_ASSERT(p, MA_OWNED); - if (p->p_throttled) { + if (p->p_throttled != 0) { p->p_throttled = 0; wakeup(p->p_racct); } @@ -1116,6 +1155,13 @@ racct_decay_callback(struct racct *racct, void *dummy1, void *dummy2) ASSERT_RACCT_ENABLED(); RACCT_LOCK_ASSERT(); +#ifdef RCTL + rctl_throttle_decay(racct, RACCT_READBPS); + rctl_throttle_decay(racct, RACCT_WRITEBPS); + rctl_throttle_decay(racct, RACCT_READIOPS); + rctl_throttle_decay(racct, RACCT_WRITEIOPS); +#endif + r_old = racct->r_resources[RACCT_PCTCPU]; /* If there is nothing to decay, just exit. */ @@ -1206,6 +1252,12 @@ racctd(void) pct_estimate = 0; pct = racct_getpcpu(p, pct_estimate); RACCT_LOCK(); +#ifdef RCTL + rctl_throttle_decay(p->p_racct, RACCT_READBPS); + rctl_throttle_decay(p->p_racct, RACCT_WRITEBPS); + rctl_throttle_decay(p->p_racct, RACCT_READIOPS); + rctl_throttle_decay(p->p_racct, RACCT_WRITEIOPS); +#endif racct_set_locked(p, RACCT_PCTCPU, pct, 1); racct_set_locked(p, RACCT_CPU, runtime, 0); racct_set_locked(p, RACCT_WALLCLOCK, @@ -1228,10 +1280,13 @@ racctd(void) continue; } - if (racct_pcpu_available(p) <= 0) - racct_proc_throttle(p); - else if (p->p_throttled) + if (racct_pcpu_available(p) <= 0) { + if (p->p_racct->r_resources[RACCT_PCTCPU] > + pcpu_threshold) + racct_proc_throttle(p, -1); + } else if (p->p_throttled == -1) { racct_proc_wakeup(p); + } PROC_UNLOCK(p); } sx_sunlock(&allproc_lock); diff --git a/sys/kern/kern_rctl.c b/sys/kern/kern_rctl.c index 7f6a7ad..2442852 100644 --- a/sys/kern/kern_rctl.c +++ b/sys/kern/kern_rctl.c @@ -77,17 +77,46 @@ FEATURE(rctl, "Resource Limits"); #define RCTL_PCPU_SHIFT (10 * 1000000) -unsigned int rctl_maxbufsize = RCTL_MAX_OUTBUFSIZE; +static unsigned int rctl_maxbufsize = RCTL_MAX_OUTBUFSIZE; static int rctl_log_rate_limit = 10; static int rctl_devctl_rate_limit = 10; +/* + * Values below are initialized in rctl_init(). + */ +static int rctl_throttle_min = -1; +static int rctl_throttle_max = -1; +static int rctl_throttle_pct = -1; +static int rctl_throttle_pct2 = -1; + +static int rctl_throttle_min_sysctl(SYSCTL_HANDLER_ARGS); +static int rctl_throttle_max_sysctl(SYSCTL_HANDLER_ARGS); +static int rctl_throttle_pct_sysctl(SYSCTL_HANDLER_ARGS); +static int rctl_throttle_pct2_sysctl(SYSCTL_HANDLER_ARGS); + SYSCTL_NODE(_kern_racct, OID_AUTO, rctl, CTLFLAG_RW, 0, "Resource Limits"); SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, maxbufsize, CTLFLAG_RWTUN, &rctl_maxbufsize, 0, "Maximum output buffer size"); SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, log_rate_limit, CTLFLAG_RW, &rctl_log_rate_limit, 0, "Maximum number of log messages per second"); -SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, devctl_rate_limit, CTLFLAG_RW, +SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, devctl_rate_limit, CTLFLAG_RWTUN, &rctl_devctl_rate_limit, 0, "Maximum number of devctl messages per second"); +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_min, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_min_sysctl, "IU", + "Shortest throttling duration, in hz"); +TUNABLE_INT("kern.racct.rctl.throttle_min", &rctl_throttle_min); +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_max, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_max_sysctl, "IU", + "Longest throttling duration, in hz"); +TUNABLE_INT("kern.racct.rctl.throttle_max", &rctl_throttle_max); +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_pct, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_pct_sysctl, "IU", + "Throttling penalty for process consumption, in percent"); +TUNABLE_INT("kern.racct.rctl.throttle_pct", &rctl_throttle_pct); +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_pct2, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_pct2_sysctl, "IU", + "Throttling penalty for container consumption, in percent"); +TUNABLE_INT("kern.racct.rctl.throttle_pct2", &rctl_throttle_pct2); /* * 'rctl_rule_link' connects a rule with every racct it's related to. @@ -134,6 +163,10 @@ static struct dict resourcenames[] = { { "shmsize", RACCT_SHMSIZE }, { "wallclock", RACCT_WALLCLOCK }, { "pcpu", RACCT_PCTCPU }, + { "readbps", RACCT_READBPS }, + { "writebps", RACCT_WRITEBPS }, + { "readiops", RACCT_READIOPS }, + { "writeiops", RACCT_WRITEIOPS }, { NULL, -1 }}; static struct dict actionnames[] = { @@ -171,6 +204,7 @@ static struct dict actionnames[] = { { "deny", RCTL_ACTION_DENY }, { "log", RCTL_ACTION_LOG }, { "devctl", RCTL_ACTION_DEVCTL }, + { "throttle", RCTL_ACTION_THROTTLE }, { NULL, -1 }}; static void rctl_init(void); @@ -193,6 +227,78 @@ static void rctl_rule_to_sbuf(struct sbuf *sb, const struct rctl_rule *rule); static MALLOC_DEFINE(M_RCTL, "rctl", "Resource Limits"); +static int rctl_throttle_min_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_min; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < 1 || val > rctl_throttle_max) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_min = val; + RCTL_WUNLOCK(); + + return (0); +} + +static int rctl_throttle_max_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_max; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < rctl_throttle_min) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_max = val; + RCTL_WUNLOCK(); + + return (0); +} + +static int rctl_throttle_pct_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_pct; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < 0) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_pct = val; + RCTL_WUNLOCK(); + + return (0); +} + +static int rctl_throttle_pct2_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_pct2; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < 0) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_pct2 = val; + RCTL_WUNLOCK(); + + return (0); +} + static const char * rctl_subject_type_name(int subject) { @@ -274,23 +380,53 @@ rctl_available_resource(const struct proc *p, const struct rctl_rule *rule) } /* - * Return non-zero if allocating 'amount' by proc 'p' would exceed - * resource limit specified by 'rule'. + * Called every second for proc, uidinfo, loginclass, and jail containers. + * If the limit isn't exceeded, it decreases the usage amount to zero. + * Otherwise, it decreases it by the value of the limit. This way + * resource consumption exceeding the limit "carries over" to the next + * period. */ -static int -rctl_would_exceed(const struct proc *p, const struct rctl_rule *rule, - int64_t amount) +void +rctl_throttle_decay(struct racct *racct, int resource) { - int64_t available; + struct rctl_rule *rule; + struct rctl_rule_link *link; + int64_t minavailable; ASSERT_RACCT_ENABLED(); - RCTL_LOCK_ASSERT(); - available = rctl_available_resource(p, rule); - if (available >= amount) - return (0); + minavailable = INT64_MAX; - return (1); + RCTL_RLOCK(); + + LIST_FOREACH(link, &racct->r_rule_links, rrl_next) { + rule = link->rrl_rule; + + if (rule->rr_resource != resource) + continue; + if (rule->rr_action != RCTL_ACTION_THROTTLE) + continue; + + if (rule->rr_amount < minavailable) + minavailable = rule->rr_amount; + } + + RCTL_RUNLOCK(); + + if (racct->r_resources[resource] < minavailable) { + racct->r_resources[resource] = 0; + } else { + /* + * Cap utilization counter at ten times the limit. Otherwise, + * if we changed the rule lowering the allowed amount, it could + * take unreasonably long time for the accumulated resource + * usage to drop. + */ + if (racct->r_resources[resource] > minavailable * 10) + racct->r_resources[resource] = minavailable * 10; + + racct->r_resources[resource] -= minavailable; + } } /* @@ -340,6 +476,38 @@ rctl_pcpu_available(const struct proc *p) { return (minavailable); } +static uint64_t +xadd(uint64_t a, uint64_t b) +{ + uint64_t c; + + c = a + b; + + /* + * Detect overflow. + */ + if (c < a || c < b) + return (UINT64_MAX); + + return (c); +} + +static uint64_t +xmul(uint64_t a, uint64_t b) +{ + uint64_t c; + + if (a == 0 || b == 0) + return (0); + + c = a * b; + + if (c < a || c < b) + return (UINT64_MAX); + + return (c); +} + /* * Check whether the proc 'p' can allocate 'amount' of 'resource' in addition * to what it keeps allocated now. Returns non-zero if the allocation should @@ -353,9 +521,12 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) struct rctl_rule *rule; struct rctl_rule_link *link; struct sbuf sb; + int64_t available; + uint64_t sleep_ms, sleep_ratio; int should_deny = 0; char *buf; + ASSERT_RACCT_ENABLED(); RCTL_RLOCK(); @@ -368,7 +539,9 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) rule = link->rrl_rule; if (rule->rr_resource != resource) continue; - if (!rctl_would_exceed(p, rule, amount)) { + + available = rctl_available_resource(p, rule); + if (available >= (int64_t)amount) { link->rrl_exceeded = 0; continue; } @@ -421,7 +594,7 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) if (p->p_state != PRS_NORMAL) continue; - + if (!ppsratecheck(&devctl_lasttime, &devctl_curtime, rctl_devctl_rate_limit)) continue; @@ -444,6 +617,69 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) free(buf, M_RCTL); link->rrl_exceeded = 1; continue; + case RCTL_ACTION_THROTTLE: + if (p->p_state != PRS_NORMAL) + continue; + + /* + * Make the process sleep for a fraction of second + * proportional to the ratio of process' resource + * utilization compared to the limit. The point is + * to penalize resource hogs: processes that consume + * more of the available resources sleep for longer. + * + * We're trying to defer division until the very end, + * to minimize the rounding effects. The following + * calculation could have been written in a clearer + * way like this: + * + * sleep_ms = hz * p->p_racct->r_resources[resource] / + * rule->rr_amount; + * sleep_ms *= rctl_throttle_pct / 100; + * if (sleep_ms < rctl_throttle_min) + * sleep_ms = rctl_throttle_min; + * + */ + sleep_ms = xmul(hz, p->p_racct->r_resources[resource]); + sleep_ms = xmul(sleep_ms, rctl_throttle_pct) / 100; + if (sleep_ms < rctl_throttle_min * rule->rr_amount) + sleep_ms = rctl_throttle_min * rule->rr_amount; + + /* + * Multiply that by the ratio of the resource + * consumption for the container compared to the limit, + * squared. In other words, a process in a container + * that is two times over the limit will be throttled + * four times as much for hitting the same rule. The + * point is to penalize processes more if the container + * itself (eg certain UID or jail) is above the limit. + */ + if (available < 0) + sleep_ratio = -available / rule->rr_amount; + else + sleep_ratio = 0; + sleep_ratio = xmul(sleep_ratio, sleep_ratio); + sleep_ratio = xmul(sleep_ratio, rctl_throttle_pct2) / 100; + sleep_ms = xadd(sleep_ms, xmul(sleep_ms, sleep_ratio)); + + /* + * Finally the division. + */ + sleep_ms /= rule->rr_amount; + + if (sleep_ms > rctl_throttle_max) + sleep_ms = rctl_throttle_max; +#if 0 + printf("%s: pid %d (%s), %jd of %jd, will sleep for %ld ms (ratio %ld, available %ld)\n", + __func__, p->p_pid, p->p_comm, + p->p_racct->r_resources[resource], + rule->rr_amount, sleep_ms, sleep_ratio, available); +#endif + + KASSERT(sleep_ms >= rctl_throttle_min, ("%s: %ju < %d\n", + __func__, (uintmax_t)sleep_ms, rctl_throttle_min)); + racct_proc_throttle(p, sleep_ms); + continue; default: if (link->rrl_exceeded != 0) continue; @@ -1073,20 +1309,32 @@ rctl_rule_add(struct rctl_rule *rule) KASSERT(rctl_rule_fully_specified(rule), ("rule not fully specified")); /* - * Some rules just don't make sense. Note that the one below - * cannot be rewritten using RACCT_IS_DENIABLE(); the RACCT_PCTCPU, - * for example, is not deniable in the racct sense, but the - * limit is enforced in a different way, so "deny" rules for %CPU - * do make sense. + * Some rules just don't make sense, like "deny" rule for an undeniable + * resource. The exception are the RSS and %CPU resources - they are + * not deniable in the racct sense, but the limit is enforced in + * a different way. */ if (rule->rr_action == RCTL_ACTION_DENY && - (rule->rr_resource == RACCT_CPU || - rule->rr_resource == RACCT_WALLCLOCK)) + !RACCT_IS_DENIABLE(rule->rr_resource) && + rule->rr_resource != RACCT_RSS && + rule->rr_resource != RACCT_PCTCPU) { return (EOPNOTSUPP); + } + + if (rule->rr_action == RCTL_ACTION_THROTTLE && + !RACCT_IS_DECAYING(rule->rr_resource)) { + return (EOPNOTSUPP); + } + + if (rule->rr_action == RCTL_ACTION_THROTTLE && + rule->rr_resource == RACCT_PCTCPU) { + return (EOPNOTSUPP); + } if (rule->rr_per == RCTL_SUBJECT_TYPE_PROCESS && - RACCT_IS_SLOPPY(rule->rr_resource)) + RACCT_IS_SLOPPY(rule->rr_resource)) { return (EOPNOTSUPP); + } /* * Make sure there are no duplicated rules. Also, for the "deny" @@ -1960,6 +2208,21 @@ rctl_init(void) UMA_ALIGN_PTR, UMA_ZONE_NOFREE); rctl_rule_zone = uma_zcreate("rctl_rule", sizeof(struct rctl_rule), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + + /* + * Set default values, making sure not to overwrite the ones + * fetched from tunables. Most of those could be set at the + * declaration, except for the rctl_throttle_max - we cannot + * set it there due to hz not being compile time constant. + */ + if (rctl_throttle_min < 1) + rctl_throttle_min = 1; + if (rctl_throttle_max < rctl_throttle_min) + rctl_throttle_max = 2 * hz; + if (rctl_throttle_pct < 0) + rctl_throttle_pct = 100; + if (rctl_throttle_pct2 < 0) + rctl_throttle_pct2 = 100; } #else /* !RCTL */ diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c index 012d5b7..575a706 100644 --- a/sys/kern/link_elf_obj.c +++ b/sys/kern/link_elf_obj.c @@ -258,7 +258,7 @@ link_elf_link_preload(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif ef->nprogtab++; break; @@ -331,13 +331,13 @@ link_elf_link_preload(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif ef->progtab[pb].addr = (void *)shdr[i].sh_addr; if (shdr[i].sh_type == SHT_PROGBITS) ef->progtab[pb].name = "<<PROGBITS>>"; #ifdef __amd64__ - else if (shdr[i].sh_type == SHT_AMD64_UNWIND) + else if (shdr[i].sh_type == SHT_X86_64_UNWIND) ef->progtab[pb].name = "<<UNWIND>>"; #endif else @@ -597,7 +597,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif ef->nprogtab++; break; @@ -712,7 +712,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif alignmask = shdr[i].sh_addralign - 1; mapsize += alignmask; @@ -782,7 +782,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif alignmask = shdr[i].sh_addralign - 1; mapbase += alignmask; @@ -797,7 +797,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, } else if (shdr[i].sh_type == SHT_PROGBITS) ef->progtab[pb].name = "<<PROGBITS>>"; #ifdef __amd64__ - else if (shdr[i].sh_type == SHT_AMD64_UNWIND) + else if (shdr[i].sh_type == SHT_X86_64_UNWIND) ef->progtab[pb].name = "<<UNWIND>>"; #endif else @@ -823,7 +823,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, ef->progtab[pb].sec = i; if (shdr[i].sh_type == SHT_PROGBITS #ifdef __amd64__ - || shdr[i].sh_type == SHT_AMD64_UNWIND + || shdr[i].sh_type == SHT_X86_64_UNWIND #endif ) { error = vn_rdwr(UIO_READ, nd.ni_vp, diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index caf9202..81be368 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -5125,6 +5125,18 @@ bus_free_resource(device_t dev, int type, struct resource *r) return (bus_release_resource(dev, type, rman_get_rid(r), r)); } +device_t +device_lookup_by_name(const char *name) +{ + device_t dev; + + TAILQ_FOREACH(dev, &bus_data_devices, devlink) { + if (dev->nameunit != NULL && strcmp(dev->nameunit, name) == 0) + return (dev); + } + return (NULL); +} + /* * /dev/devctl2 implementation. The existing /dev/devctl device has * implicit semantics on open, so it could not be reused for this. @@ -5145,12 +5157,10 @@ find_device(struct devreq *req, device_t *devp) * Second, try to find an attached device whose name matches * 'name'. */ - TAILQ_FOREACH(dev, &bus_data_devices, devlink) { - if (dev->nameunit != NULL && - strcmp(dev->nameunit, req->dr_name) == 0) { - *devp = dev; - return (0); - } + dev = device_lookup_by_name(req->dr_name); + if (dev != NULL) { + *devp = dev; + return (0); } /* Finally, give device enumerators a chance. */ diff --git a/sys/kern/subr_hash.c b/sys/kern/subr_hash.c index 5533882..fe81286 100644 --- a/sys/kern/subr_hash.c +++ b/sys/kern/subr_hash.c @@ -93,7 +93,8 @@ hashdestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask) hashtbl = vhashtbl; for (hp = hashtbl; hp <= &hashtbl[hashmask]; hp++) - KASSERT(LIST_EMPTY(hp), ("%s: hash not empty", __func__)); + KASSERT(LIST_EMPTY(hp), ("%s: hashtbl %p not empty " + "(malloc type %s)", __func__, hashtbl, type->ks_shortdesc)); free(hashtbl, type); } diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c index 96319ad..dc1e487 100644 --- a/sys/kern/subr_intr.c +++ b/sys/kern/subr_intr.c @@ -467,6 +467,32 @@ intr_isrc_deregister(struct intr_irqsrc *isrc) return (error); } +#ifdef SMP +/* + * A support function for a PIC to decide if provided ISRC should be inited + * on given cpu. The logic of INTR_ISRCF_BOUND flag and isrc_cpu member of + * struct intr_irqsrc is the following: + * + * If INTR_ISRCF_BOUND is set, the ISRC should be inited only on cpus + * set in isrc_cpu. If not, the ISRC should be inited on every cpu and + * isrc_cpu is kept consistent with it. Thus isrc_cpu is always correct. + */ +bool +intr_isrc_init_on_cpu(struct intr_irqsrc *isrc, u_int cpu) +{ + + if (isrc->isrc_handlers == 0) + return (false); + if ((isrc->isrc_flags & (INTR_ISRCF_PPI | INTR_ISRCF_IPI)) == 0) + return (false); + if (isrc->isrc_flags & INTR_ISRCF_BOUND) + return (CPU_ISSET(cpu, &isrc->isrc_cpu)); + + CPU_SET(cpu, &isrc->isrc_cpu); + return (true); +} +#endif + static struct intr_dev_data * intr_ddata_alloc(u_int extsize) { @@ -766,11 +792,19 @@ pic_lookup_locked(device_t dev, intptr_t xref) mtx_assert(&pic_list_lock, MA_OWNED); + if (dev == NULL && xref == 0) + return (NULL); + + /* Note that pic->pic_dev is never NULL on registered PIC. */ SLIST_FOREACH(pic, &pic_list, pic_next) { - if (pic->pic_xref != xref) - continue; - if (pic->pic_xref != 0 || pic->pic_dev == dev) - return (pic); + if (dev == NULL) { + if (xref == pic->pic_xref) + return (pic); + } else if (xref == 0 || pic->pic_xref == 0) { + if (dev == pic->pic_dev) + return (pic); + } else if (xref == pic->pic_xref && dev == pic->pic_dev) + return (pic); } return (NULL); } @@ -840,14 +874,14 @@ intr_pic_register(device_t dev, intptr_t xref) { struct intr_pic *pic; + if (dev == NULL) + return (EINVAL); pic = pic_create(dev, xref); if (pic == NULL) return (ENOMEM); - if (pic->pic_dev != dev) - return (EINVAL); /* XXX it could be many things. */ - debugf("PIC %p registered for %s <xref %x>\n", pic, - device_get_nameunit(dev), xref); + debugf("PIC %p registered for %s <dev %p, xref %x>\n", pic, + device_get_nameunit(dev), dev, xref); return (0); } @@ -1156,7 +1190,7 @@ intr_irq_shuffle(void *arg __unused) for (i = 0; i < NIRQ; i++) { isrc = irq_sources[i]; if (isrc == NULL || isrc->isrc_handlers == 0 || - isrc->isrc_flags & INTR_ISRCF_PPI) + isrc->isrc_flags & (INTR_ISRCF_PPI | INTR_ISRCF_IPI)) continue; if (isrc->isrc_event != NULL && diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index b09bc50..4f3b51d 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -1029,8 +1029,8 @@ topo_set_pu_id(struct topo_node *node, cpuid_t id) node->subtype = 1; while ((node = node->parent) != NULL) { - if (CPU_ISSET(id, &node->cpuset)) - break; + KASSERT(!CPU_ISSET(id, &node->cpuset), + ("logical ID %u is already set in node %p", id, node)); CPU_SET(id, &node->cpuset); node->cpu_count++; } diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c index a371456..6d1ac70 100644 --- a/sys/kern/subr_trap.c +++ b/sys/kern/subr_trap.c @@ -172,10 +172,14 @@ userret(struct thread *td, struct trapframe *frame) (td->td_vnet_lpush != NULL) ? td->td_vnet_lpush : "N/A")); #endif #ifdef RACCT - if (racct_enable && p->p_throttled == 1) { + if (racct_enable && p->p_throttled != 0) { PROC_LOCK(p); - while (p->p_throttled == 1) - msleep(p->p_racct, &p->p_mtx, 0, "racct", 0); + while (p->p_throttled != 0) { + msleep(p->p_racct, &p->p_mtx, 0, "racct", + p->p_throttled < 0 ? 0 : p->p_throttled); + if (p->p_throttled > 0) + p->p_throttled = 0; + } PROC_UNLOCK(p); } #endif diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index e272f9d..b7b9641 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/kthread.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/rwlock.h> #include <sys/smp.h> @@ -1784,8 +1785,16 @@ breada(struct vnode * vp, daddr_t * rablkno, int * rabsize, rabp = getblk(vp, *rablkno, *rabsize, 0, 0, 0); if ((rabp->b_flags & B_CACHE) == 0) { - if (!TD_IS_IDLETHREAD(curthread)) + if (!TD_IS_IDLETHREAD(curthread)) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, rabp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; + } rabp->b_flags |= B_ASYNC; rabp->b_flags &= ~B_INVAL; rabp->b_ioflags &= ~BIO_ERROR; @@ -1829,8 +1838,16 @@ breadn_flags(struct vnode *vp, daddr_t blkno, int size, daddr_t *rablkno, /* if not found in cache, do some I/O */ if ((bp->b_flags & B_CACHE) == 0) { - if (!TD_IS_IDLETHREAD(curthread)) + if (!TD_IS_IDLETHREAD(curthread)) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; + } bp->b_iocmd = BIO_READ; bp->b_flags &= ~B_INVAL; bp->b_ioflags &= ~BIO_ERROR; @@ -1926,8 +1943,16 @@ bufwrite(struct buf *bp) bp->b_runningbufspace = bp->b_bufsize; space = atomic_fetchadd_long(&runningbufspace, bp->b_runningbufspace); - if (!TD_IS_IDLETHREAD(curthread)) + if (!TD_IS_IDLETHREAD(curthread)) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 1); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_oublock++; + } if (oldflags & B_ASYNC) BUF_KERNPROC(bp); bp->b_iooffset = dbtob(bp->b_blkno); diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index 9871a50..40dc0c0 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include <sys/vnode.h> #include <sys/malloc.h> #include <sys/mount.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/rwlock.h> #include <sys/vmmeter.h> @@ -241,6 +242,13 @@ cluster_read(struct vnode *vp, u_quad_t filesize, daddr_t lblkno, long size, BUF_KERNPROC(bp); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; } @@ -294,6 +302,13 @@ cluster_read(struct vnode *vp, u_quad_t filesize, daddr_t lblkno, long size, BUF_KERNPROC(rbp); rbp->b_iooffset = dbtob(rbp->b_blkno); bstrategy(rbp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, rbp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; } diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 4320b14..a0f624e 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -1420,7 +1420,7 @@ vn_stat(vp, sb, active_cred, file_cred, td) break; default: return (EBADF); - }; + } sb->st_mode = mode; sb->st_nlink = vap->va_nlink; sb->st_uid = vap->va_uid; diff --git a/sys/kgssapi/gss_impl.c b/sys/kgssapi/gss_impl.c index 3a427a5..38930d7 100644 --- a/sys/kgssapi/gss_impl.c +++ b/sys/kgssapi/gss_impl.c @@ -323,7 +323,7 @@ kgssapi_modevent(module_t mod, int type, void *data) /* FALLTHROUGH */ default: error = EOPNOTSUPP; - }; + } return (error); } static moduledata_t kgssapi_mod = { diff --git a/sys/mips/mediatek/fdt_reset.c b/sys/mips/mediatek/fdt_reset.c new file mode 100644 index 0000000..5ff2758 --- /dev/null +++ b/sys/mips/mediatek/fdt_reset.c @@ -0,0 +1,125 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * Copyright (c) 2014 Ian Lepore <ian@freebsd.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include <sys/cdefs.h> +#include <sys/param.h> +#include <sys/kernel.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/queue.h> +#include <sys/systm.h> + +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include "fdt_reset_if.h" +#include <mips/mediatek/fdt_reset.h> + +/* + * Loop through all the tuples in the resets= property for a device, asserting + * or deasserting each reset. + * + * Be liberal about errors for now: warn about a failure to (de)assert but keep + * trying with any other resets in the list. Return ENXIO if any errors were + * found, and let the caller decide whether the problem is fatal. + */ +static int +assert_deassert_all(device_t consumer, boolean_t assert) +{ + phandle_t rnode; + device_t resetdev; + int resetnum, err, i, ncells; + uint32_t *resets; + boolean_t anyerrors; + + rnode = ofw_bus_get_node(consumer); + ncells = OF_getencprop_alloc(rnode, "resets", sizeof(*resets), + (void **)&resets); + if (!assert && ncells < 2) { + device_printf(consumer, "Warning: No resets specified in fdt " + "data; device may not function."); + return (ENXIO); + } + anyerrors = false; + for (i = 0; i < ncells; i += 2) { + resetdev = OF_device_from_xref(resets[i]); + resetnum = resets[i + 1]; + if (resetdev == NULL) { + if (!assert) + device_printf(consumer, "Warning: can not find " + "driver for reset number %u; device may " + "not function\n", resetnum); + anyerrors = true; + continue; + } + if (assert) + err = FDT_RESET_ASSERT(resetdev, resetnum); + else + err = FDT_RESET_DEASSERT(resetdev, resetnum); + if (err != 0) { + if (!assert) + device_printf(consumer, "Warning: failed to " + "deassert reset number %u; device may not " + "function\n", resetnum); + anyerrors = true; + } + } + free(resets, M_OFWPROP); + return (anyerrors ? ENXIO : 0); +} + +int +fdt_reset_assert_all(device_t consumer) +{ + + return (assert_deassert_all(consumer, true)); +} + +int +fdt_reset_deassert_all(device_t consumer) +{ + + return (assert_deassert_all(consumer, false)); +} + +void +fdt_reset_register_provider(device_t provider) +{ + + OF_device_register_xref( + OF_xref_from_node(ofw_bus_get_node(provider)), provider); +} + +void +fdt_reset_unregister_provider(device_t provider) +{ + + OF_device_register_xref(OF_xref_from_device(provider), NULL); +} + diff --git a/sys/mips/mediatek/fdt_reset.h b/sys/mips/mediatek/fdt_reset.h new file mode 100644 index 0000000..195beaa --- /dev/null +++ b/sys/mips/mediatek/fdt_reset.h @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * Copyright (c) 2014 Ian Lepore <ian@freebsd.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef DEV_FDT_RESET_H +#define DEV_FDT_RESET_H + +#include "fdt_reset_if.h" + +/* + * Look up "resets" property in consumer's fdt data and assert or deassert all + * configured resets. + */ +int fdt_reset_assert_all(device_t consumer); +int fdt_reset_deassert_all(device_t consumer); + +/* + * [Un]register the given device instance as a driver that implements the + * fdt_clock interface. + */ +void fdt_reset_register_provider(device_t provider); +void fdt_reset_unregister_provider(device_t provider); + +#endif /* DEV_FDT_RESET_H */ + diff --git a/sys/mips/mediatek/fdt_reset_if.m b/sys/mips/mediatek/fdt_reset_if.m new file mode 100644 index 0000000..2bde7b7 --- /dev/null +++ b/sys/mips/mediatek/fdt_reset_if.m @@ -0,0 +1,58 @@ +#- +# Copyright (c) 2016 Stanislav Galabov +# Copyright (c) 2014 Ian Lepore +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +#include <sys/types.h> + +# +# This is the interface that fdt_reset drivers provide to other drivers. +# In this context, reset refers to a reset signal provided to some other +# hardware component within the system. They are most often found within +# embedded processors that have on-chip IO controllers. +# + +INTERFACE fdt_reset; + +# +# Enable/assert/apply the specified reset. +# Returns 0 on success or a standard errno value. +# +METHOD int assert { + device_t provider; + int index; +}; + +# +# Disable/de-assert/remove the specified reset. +# Returns 0 on success or a standard errno value. +# +METHOD int deassert { + device_t provider; + int index; +}; + diff --git a/sys/mips/mediatek/mtk_clock.c b/sys/mips/mediatek/mtk_clock.c new file mode 100644 index 0000000..83433fb --- /dev/null +++ b/sys/mips/mediatek/mtk_clock.c @@ -0,0 +1,156 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> +#include <dev/fdt/fdt_clock.h> + +#include <mips/mediatek/mtk_sysctl.h> + +#include "fdt_clock_if.h" + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-clock", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +static int +mtk_clock_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Clock Controller"); + + return (0); +} + +static int +mtk_clock_attach(device_t dev) +{ + + if (device_get_unit(dev) != 0) { + device_printf(dev, "Only one clock control allowed\n"); + return (ENXIO); + } + + fdt_clock_register_provider(dev); + + return (0); +} + +#define CLOCK_ENABLE 1 +#define CLOCK_DISABLE 0 + +static int +mtk_clock_set(device_t dev, int index, int value) +{ + uint32_t mask; + + /* Clock config register holds 32 clock gating bits */ + if (index < 0 || index > 31) + return (EINVAL); + + mask = (1u << index); + + if (value == CLOCK_ENABLE) + mtk_sysctl_clr_set(SYSCTL_CLKCFG1, 0, mask); + else + mtk_sysctl_clr_set(SYSCTL_CLKCFG1, mask, 0); + + return (0); +} + +static int +mtk_clock_enable(device_t dev, int index) +{ + + return mtk_clock_set(dev, index, CLOCK_ENABLE); +} + +static int +mtk_clock_disable(device_t dev, int index) +{ + + return mtk_clock_set(dev, index, CLOCK_DISABLE); +} + +static int +mtk_clock_get_info(device_t dev, int index, struct fdt_clock_info *info) +{ + uint32_t mask; + + if (index < 0 || index > 31 || info == NULL) + return (EINVAL); + + if (mtk_sysctl_get(SYSCTL_CLKCFG1) & mask) + info->flags = FDT_CIFLAG_RUNNING; + else + info->flags = 0; + + return (0); +} + +static device_method_t mtk_clock_methods[] = { + DEVMETHOD(device_probe, mtk_clock_probe), + DEVMETHOD(device_attach, mtk_clock_attach), + + /* fdt_clock interface */ + DEVMETHOD(fdt_clock_enable, mtk_clock_enable), + DEVMETHOD(fdt_clock_disable, mtk_clock_disable), + DEVMETHOD(fdt_clock_get_info, mtk_clock_get_info), + + DEVMETHOD_END +}; + +static driver_t mtk_clock_driver = { + "clkctrl", + mtk_clock_methods, + 0, +}; +static devclass_t mtk_clock_devclass; + +EARLY_DRIVER_MODULE(mtk_clock, simplebus, mtk_clock_driver, mtk_clock_devclass, + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); + +MODULE_DEPEND(mtk_clock, mtk_sysctl, 1, 1, 1); diff --git a/sys/mips/mediatek/mtk_dotg.c b/sys/mips/mediatek/mtk_dotg.c new file mode 100644 index 0000000..d7421ad --- /dev/null +++ b/sys/mips/mediatek/mtk_dotg.c @@ -0,0 +1,220 @@ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015-2016 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/stdint.h> +#include <sys/stddef.h> +#include <sys/param.h> +#include <sys/queue.h> +#include <sys/types.h> +#include <sys/systm.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/condvar.h> +#include <sys/sysctl.h> +#include <sys/sx.h> +#include <sys/unistd.h> +#include <sys/callout.h> +#include <sys/malloc.h> +#include <sys/priv.h> +#include <sys/rman.h> + +#include <dev/usb/usb.h> +#include <dev/usb/usbdi.h> + +#include <dev/usb/usb_core.h> +#include <dev/usb/usb_busdma.h> +#include <dev/usb/usb_process.h> +#include <dev/usb/usb_util.h> + +#include <dev/usb/usb_controller.h> +#include <dev/usb/usb_bus.h> + +#include <dev/usb/controller/dwc_otg.h> + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#define MEM_RID 0 + +static device_probe_t dotg_fdt_probe; +static device_attach_t dotg_fdt_attach; +static device_detach_t dotg_fdt_detach; + +static int +dotg_fdt_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "ralink,rt3050-otg")) + return (ENXIO); + + device_set_desc(dev, "MTK DWC-OTG USB Controller"); + return (0); +} + +static int +dotg_fdt_attach(device_t dev) +{ + struct dwc_otg_softc *sc = device_get_softc(dev); + int err, rid; + + /* setup controller interface softc */ + + /* initialise some bus fields */ + sc->sc_mode = DWC_MODE_HOST; + sc->sc_bus.parent = dev; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = DWC_OTG_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + /* get all DMA memory */ + if (usb_bus_mem_alloc_all(&sc->sc_bus, + USB_GET_DMA_TAG(dev), NULL)) { + printf("No mem\n"); + return (ENOMEM); + } + rid = 0; + sc->sc_io_res = + bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); + if (!(sc->sc_io_res)) { + printf("Can`t alloc MEM\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, + &rid, RF_ACTIVE); + if (!(sc->sc_irq_res)) { + printf("Can`t alloc IRQ\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(dev, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + printf("Can`t add usbus\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + + err = bus_setup_intr(dev, sc->sc_irq_res, + INTR_TYPE_TTY | INTR_MPSAFE, dwc_otg_filter_interrupt, + dwc_otg_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + sc->sc_intr_hdl = NULL; + printf("Can`t set IRQ handle\n"); + goto error; + } + + err = dwc_otg_init(sc); + if (err) printf("dotg_init fail\n"); + if (!err) { + err = device_probe_and_attach(sc->sc_bus.bdev); + if (err) printf("device_probe_and_attach fail %d\n", err); + } + if (err) { + goto error; + } + return (0); + +error: + dotg_fdt_detach(dev); + return (ENXIO); +} + +static int +dotg_fdt_detach(device_t dev) +{ + struct dwc_otg_softc *sc = device_get_softc(dev); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(dev, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(dev); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call dotg_fdt_uninit() after dotg_fdt_init() + */ + dwc_otg_uninit(sc); + + err = bus_teardown_intr(dev, sc->sc_irq_res, + sc->sc_intr_hdl); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(dev, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(dev, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + usb_bus_mem_free_all(&sc->sc_bus, NULL); + + return (0); +} + +static device_method_t dotg_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, dotg_fdt_probe), + DEVMETHOD(device_attach, dotg_fdt_attach), + DEVMETHOD(device_detach, dotg_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t dotg_fdt_driver = { + .name = "dwcotg", + .methods = dotg_fdt_methods, + .size = sizeof(struct dwc_otg_softc), +}; + +static devclass_t dotg_fdt_devclass; + +DRIVER_MODULE(dotg, simplebus, dotg_fdt_driver, dotg_fdt_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_ehci.c b/sys/mips/mediatek/mtk_ehci.c new file mode 100644 index 0000000..109a32a --- /dev/null +++ b/sys/mips/mediatek/mtk_ehci.c @@ -0,0 +1,223 @@ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/stdint.h> +#include <sys/stddef.h> +#include <sys/param.h> +#include <sys/queue.h> +#include <sys/types.h> +#include <sys/systm.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/condvar.h> +#include <sys/sysctl.h> +#include <sys/sx.h> +#include <sys/unistd.h> +#include <sys/callout.h> +#include <sys/malloc.h> +#include <sys/priv.h> +#include <sys/rman.h> + +#include <dev/usb/usb.h> +#include <dev/usb/usbdi.h> + +#include <dev/usb/usb_core.h> +#include <dev/usb/usb_busdma.h> +#include <dev/usb/usb_process.h> +#include <dev/usb/usb_util.h> + +#include <dev/usb/usb_controller.h> +#include <dev/usb/usb_bus.h> + +#include <dev/usb/controller/ehci.h> + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#define EHCI_HC_DEVSTR "MTK USB 2.0 Controller" + +static device_probe_t ehci_fdt_probe; +static device_attach_t ehci_fdt_attach; +static device_detach_t ehci_fdt_detach; + +static int +ehci_fdt_probe(device_t self) +{ + + if (!ofw_bus_status_okay(self)) + return (ENXIO); + + if (!ofw_bus_is_compatible(self, "ralink,rt3xxx-ehci")) + return (ENXIO); + + device_set_desc(self, EHCI_HC_DEVSTR); + + return (BUS_PROBE_DEFAULT); +} + +static int +ehci_fdt_attach(device_t self) +{ + ehci_softc_t *sc = device_get_softc(self); + int err; + int rid; + + /* initialise some bus fields */ + sc->sc_bus.parent = self; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = EHCI_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + /* get all DMA memory */ + if (usb_bus_mem_alloc_all(&sc->sc_bus, + USB_GET_DMA_TAG(self), &ehci_iterate_hw_softc)) { + printf("No mem\n"); + return (ENOMEM); + } + + rid = 0; + sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_io_res) { + device_printf(self, "Could not map memory\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { + device_printf(self, "Could not allocate irq\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + device_printf(self, "Could not add USB device\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + device_set_desc(sc->sc_bus.bdev, EHCI_HC_DEVSTR); + + sprintf(sc->sc_vendor, "MediaTek"); + + err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, + NULL, (driver_intr_t *)ehci_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + device_printf(self, "Could not setup irq, %d\n", err); + sc->sc_intr_hdl = NULL; + goto error; + } + + err = ehci_init(sc); + if (!err) { + err = device_probe_and_attach(sc->sc_bus.bdev); + } + if (err) { + device_printf(self, "USB init failed err=%d\n", err); + goto error; + } + return (0); + +error: + ehci_fdt_detach(self); + return (ENXIO); +} + +static int +ehci_fdt_detach(device_t self) +{ + ehci_softc_t *sc = device_get_softc(self); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(self); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call ehci_detach() after ehci_init() + */ + ehci_detach(sc); + + err = bus_teardown_intr(self, sc->sc_irq_res, sc->sc_intr_hdl); + if (err) + device_printf(self, "Could not tear down irq, %d\n", + err); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(self, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(self, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + usb_bus_mem_free_all(&sc->sc_bus, &ehci_iterate_hw_softc); + + return (0); +} + +static device_method_t ehci_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ehci_fdt_probe), + DEVMETHOD(device_attach, ehci_fdt_attach), + DEVMETHOD(device_detach, ehci_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t ehci_fdt_driver = { + .name = "ehci", + .methods = ehci_fdt_methods, + .size = sizeof(ehci_softc_t), +}; + +static devclass_t ehci_fdt_devclass; + +DRIVER_MODULE(ehci, simplebus, ehci_fdt_driver, ehci_fdt_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_gpio_v1.c b/sys/mips/mediatek/mtk_gpio_v1.c new file mode 100644 index 0000000..29b2258 --- /dev/null +++ b/sys/mips/mediatek/mtk_gpio_v1.c @@ -0,0 +1,675 @@ +/*- + * Copyright 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include "opt_platform.h" + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/conf.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/proc.h> +#include <sys/resource.h> +#include <sys/gpio.h> + +#include <machine/bus.h> +#include <machine/intr.h> + +#include <mips/mediatek/mtk_soc.h> + +#include <dev/gpio/gpiobusvar.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <gnu/dts/include/dt-bindings/interrupt-controller/irq.h> + +#include "gpio_if.h" +#include "pic_if.h" + +#define MTK_GPIO_PINS 32 + +struct mtk_gpio_pin_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_gpio_pin { + uint32_t pin_caps; + uint32_t pin_flags; + enum intr_trigger intr_trigger; + enum intr_polarity intr_polarity; + char pin_name[GPIOMAXNAME]; + struct mtk_gpio_pin_irqsrc pin_irqsrc; +}; + +struct mtk_gpio_softc { + device_t dev; + device_t busdev; + struct resource *res[2]; + struct mtx mtx; + struct mtk_gpio_pin pins[MTK_GPIO_PINS]; + void *intrhand; + + uint32_t num_pins; + uint8_t do_remap; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pins[(irq)].pin_irqsrc.isrc) + +static struct resource_spec mtk_gpio_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE | RF_SHAREABLE }, + { -1, 0 } +}; + +static int mtk_gpio_probe(device_t dev); +static int mtk_gpio_attach(device_t dev); +static int mtk_gpio_detach(device_t dev); +static int mtk_gpio_intr(void *arg); + +#define MTK_GPIO_LOCK(sc) mtx_lock_spin(&(sc)->mtx) +#define MTK_GPIO_UNLOCK(sc) mtx_unlock_spin(&(sc)->mtx) +#define MTK_GPIO_LOCK_INIT(sc) \ + mtx_init(&(sc)->mtx, device_get_nameunit((sc)->dev), \ + "mtk_gpio", MTX_SPIN) +#define MTK_GPIO_LOCK_DESTROY(sc) mtx_destroy(&(sc)->mtx) + +#define MTK_WRITE_4(sc, reg, val) bus_write_4((sc)->res[0], (reg), (val)) +#define MTK_READ_4(sc, reg) bus_read_4((sc)->res[0], (reg)) + +/* Register definitions */ +#define GPIO_PIOINT(_sc) 0x0000 +#define GPIO_PIOEDGE(_sc) 0x0004 +#define GPIO_PIORENA(_sc) 0x0008 +#define GPIO_PIOFENA(_sc) 0x000C +#define GPIO_PIODATA(_sc) ((_sc)->do_remap ? 0x0020 : 0x0010) +#define GPIO_PIODIR(_sc) ((_sc)->do_remap ? 0x0024 : 0x0014) +#define GPIO_PIOPOL(_sc) ((_sc)->do_remap ? 0x0028 : 0x0018) +#define GPIO_PIOSET(_sc) ((_sc)->do_remap ? 0x002C : 0x001C) +#define GPIO_PIORESET(_sc) ((_sc)->do_remap ? 0x0030 : 0x0020) +#define GPIO_PIOTOG(_sc) ((_sc)->do_remap ? 0x0034 : 0x0024) + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-gpio", 1 }, + { "ralink,rt3050-gpio", 1 }, + { "ralink,rt3352-gpio", 1 }, + { "ralink,rt3883-gpio", 1 }, + { "ralink,rt5350-gpio", 1 }, + { "ralink,mt7620a-gpio", 1 }, + { NULL, 0 } +}; + +static int +mtk_gpio_probe(device_t dev) +{ + phandle_t node; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + node = ofw_bus_get_node(dev); + if (!OF_hasprop(node, "gpio-controller")) + return (ENXIO); + + device_set_desc(dev, "MTK GPIO Controller (v1)"); + + return (BUS_PROBE_DEFAULT); +} + +static int +mtk_pic_register_isrcs(struct mtk_gpio_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->dev); + for (irq = 0; irq < sc->num_pins; irq++) { + sc->pins[irq].pin_irqsrc.irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_gpio_pin_set_direction(struct mtk_gpio_softc *sc, uint32_t pin, + uint32_t dir) +{ + uint32_t regval, mask = (1u << pin); + + if (!(sc->pins[pin].pin_caps & dir)) + return (EINVAL); + + regval = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (dir == GPIO_PIN_INPUT) + regval &= ~mask; + else + regval |= mask; + MTK_WRITE_4(sc, GPIO_PIODIR(sc), regval); + + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); + sc->pins[pin].pin_flags |= dir; + + return (0); +} + +static int +mtk_gpio_pin_set_invert(struct mtk_gpio_softc *sc, uint32_t pin, uint32_t val) +{ + uint32_t regval, mask = (1u << pin); + + regval = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val) + regval |= mask; + else + regval &= ~mask; + MTK_WRITE_4(sc, GPIO_PIOPOL(sc), regval); + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INVIN | GPIO_PIN_INVOUT); + sc->pins[pin].pin_flags |= val; + + return (0); +} + +static void +mtk_gpio_pin_probe(struct mtk_gpio_softc *sc, uint32_t pin) +{ + uint32_t mask = (1u << pin); + uint32_t val; + + /* Clear cached gpio config */ + sc->pins[pin].pin_flags = 0; + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | + MTK_READ_4(sc, GPIO_PIOFENA(sc)); + if (val & mask) { + /* Pin is in interrupt mode */ + sc->pins[pin].intr_trigger = INTR_TRIGGER_EDGE; + val = MTK_READ_4(sc, GPIO_PIORENA(sc)); + if (val & mask) + sc->pins[pin].intr_polarity = INTR_POLARITY_HIGH; + else + sc->pins[pin].intr_polarity = INTR_POLARITY_LOW; + } + + val = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (val & mask) + sc->pins[pin].pin_flags |= GPIO_PIN_OUTPUT; + else + sc->pins[pin].pin_flags |= GPIO_PIN_INPUT; + + val = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val & mask) { + if (sc->pins[pin].pin_flags & GPIO_PIN_INPUT) { + sc->pins[pin].pin_flags |= GPIO_PIN_INVIN; + } else { + sc->pins[pin].pin_flags |= GPIO_PIN_INVOUT; + } + } +} + +static int +mtk_gpio_attach(device_t dev) +{ + struct mtk_gpio_softc *sc; + phandle_t node; + uint32_t i, num_pins; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, mtk_gpio_spec, sc->res)) { + device_printf(dev, "could not allocate resources for device\n"); + return (ENXIO); + } + + MTK_GPIO_LOCK_INIT(sc); + + node = ofw_bus_get_node(dev); + + if (OF_hasprop(node, "clocks")) + mtk_soc_start_clock(dev); + if (OF_hasprop(node, "resets")) + mtk_soc_reset_device(dev); + + if (OF_hasprop(node, "mtk,register-gap")) { + device_printf(dev, "<register gap>\n"); + sc->do_remap = 1; + } else { + device_printf(dev, "<no register gap>\n"); + sc->do_remap = 0; + } + + if (OF_hasprop(node, "mtk,num-pins") && (OF_getencprop(node, + "mtk,num-pins", &num_pins, sizeof(num_pins)) >= 0)) + sc->num_pins = num_pins; + else + sc->num_pins = MTK_GPIO_PINS; + + for (i = 0; i < num_pins; i++) { + sc->pins[i].pin_caps |= GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | + GPIO_PIN_INVIN | GPIO_PIN_INVOUT; + sc->pins[i].intr_polarity = INTR_POLARITY_HIGH; + sc->pins[i].intr_trigger = INTR_TRIGGER_EDGE; + + snprintf(sc->pins[i].pin_name, GPIOMAXNAME - 1, "gpio%c%d", + device_get_unit(dev) + 'a', i); + sc->pins[i].pin_name[GPIOMAXNAME - 1] = '\0'; + + mtk_gpio_pin_probe(sc, i); + } + + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto fail; + } + + if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + device_printf(dev, "could not register PIC\n"); + goto fail; + } + + if (bus_setup_intr(dev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE, + mtk_gpio_intr, NULL, sc, &sc->intrhand) != 0) + goto fail_pic; + + sc->busdev = gpiobus_attach_bus(dev); + if (sc->busdev == NULL) + goto fail_pic; + + return (0); +fail_pic: + intr_pic_deregister(dev, OF_xref_from_node(node)); +fail: + if(sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (ENXIO); +} + +static int +mtk_gpio_detach(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + phandle_t node; + + node = ofw_bus_get_node(dev); + intr_pic_deregister(dev, OF_xref_from_node(node)); + if (sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (0); +} + +static device_t +mtk_gpio_get_bus(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + return (sc->busdev); +} + +static int +mtk_gpio_pin_max(device_t dev, int *maxpin) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + *maxpin = sc->num_pins - 1; + + return (0); +} + +static int +mtk_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *caps = sc->pins[pin].pin_caps; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *flags = sc->pins[pin].pin_flags; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getname(device_t dev, uint32_t pin, char *name) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + strncpy(name, sc->pins[pin].pin_name, GPIOMAXNAME - 1); + name[GPIOMAXNAME - 1] = '\0'; + + return (0); +} + +static int +mtk_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct mtk_gpio_softc *sc; + int retval; + + sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + retval = mtk_gpio_pin_set_direction(sc, pin, + flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)); + if (retval == 0) + retval = mtk_gpio_pin_set_invert(sc, pin, + flags & (GPIO_PIN_INVIN | GPIO_PIN_INVOUT)); + MTK_GPIO_UNLOCK(sc); + + return (retval); +} + +static int +mtk_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) +{ + struct mtk_gpio_softc *sc; + int ret; + + sc = device_get_softc(dev); + ret = 0; + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + if(!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } + + if (value) + MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); + else + MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); + +out: + MTK_GPIO_UNLOCK(sc); + return (ret); +} + +static int +mtk_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) +{ + struct mtk_gpio_softc *sc; + uint32_t data; + int ret; + + sc = device_get_softc(dev); + ret = 0; + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + if(!(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) { + ret = EINVAL; + goto out; + } + data = MTK_READ_4(sc, GPIO_PIODATA(sc)); + *val = (data & (1u << pin)) ? 1 : 0; + +out: + MTK_GPIO_UNLOCK(sc); + return (ret); +} + +static int +mtk_gpio_pin_toggle(device_t dev, uint32_t pin) +{ + struct mtk_gpio_softc *sc; + int ret; + + if (pin >= sc->num_pins) + return (EINVAL); + + sc = device_get_softc(dev); + ret = 0; + + MTK_GPIO_LOCK(sc); + if (!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } + MTK_WRITE_4(sc, GPIO_PIOTOG(sc), (1u << pin)); + +out: + MTK_GPIO_UNLOCK(sc); + + return (ret); +} + +static int +mtk_gpio_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ + struct mtk_gpio_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->num_pins) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +} + +static void +mtk_gpio_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + if (sc->pins[pin].intr_polarity == INTR_POLARITY_LOW) { + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + } else { + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + } + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_disable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_enable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + sc = device_get_softc(dev); + MTK_GPIO_LOCK(sc); + MTK_WRITE_4(sc, GPIO_PIOINT(sc), 1u << pisrc->irq); + MTK_GPIO_UNLOCK(sc); +} + +static int +mtk_gpio_intr(void *arg) +{ + struct mtk_gpio_softc *sc; + uint32_t i, interrupts; + + sc = arg; + interrupts = MTK_READ_4(sc, GPIO_PIOINT(sc)); + + for (i = 0; interrupts != 0; i++, interrupts >>= 1) { + if ((interrupts & 0x1) == 0) + continue; + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->dev, "spurious interrupt %d\n", i); + } + } + + return (FILTER_HANDLED); +} + +static phandle_t +mtk_gpio_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the GPIO bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_gpio_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_gpio_probe), + DEVMETHOD(device_attach, mtk_gpio_attach), + DEVMETHOD(device_detach, mtk_gpio_detach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, mtk_gpio_get_bus), + DEVMETHOD(gpio_pin_max, mtk_gpio_pin_max), + DEVMETHOD(gpio_pin_getname, mtk_gpio_pin_getname), + DEVMETHOD(gpio_pin_getflags, mtk_gpio_pin_getflags), + DEVMETHOD(gpio_pin_getcaps, mtk_gpio_pin_getcaps), + DEVMETHOD(gpio_pin_setflags, mtk_gpio_pin_setflags), + DEVMETHOD(gpio_pin_get, mtk_gpio_pin_get), + DEVMETHOD(gpio_pin_set, mtk_gpio_pin_set), + DEVMETHOD(gpio_pin_toggle, mtk_gpio_pin_toggle), + + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_gpio_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_gpio_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_gpio_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_gpio_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_gpio_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_gpio_pic_pre_ithread), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_gpio_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_gpio_driver = { + "gpio", + mtk_gpio_methods, + sizeof(struct mtk_gpio_softc), +}; + +static devclass_t mtk_gpio_devclass; + +EARLY_DRIVER_MODULE(mtk_gpio_v1, simplebus, mtk_gpio_driver, + mtk_gpio_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); diff --git a/sys/mips/mediatek/mtk_gpio_v2.c b/sys/mips/mediatek/mtk_gpio_v2.c new file mode 100644 index 0000000..282b112 --- /dev/null +++ b/sys/mips/mediatek/mtk_gpio_v2.c @@ -0,0 +1,675 @@ +/*- + * Copyright 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include "opt_platform.h" + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/conf.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/proc.h> +#include <sys/resource.h> +#include <sys/gpio.h> + +#include <machine/bus.h> +#include <machine/intr.h> + +#include <mips/mediatek/mtk_soc.h> + +#include <dev/gpio/gpiobusvar.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <gnu/dts/include/dt-bindings/interrupt-controller/irq.h> + +#include "gpio_if.h" +#include "pic_if.h" + +#define MTK_GPIO_PINS 32 + +struct mtk_gpio_pin_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_gpio_pin { + uint32_t pin_caps; + uint32_t pin_flags; + enum intr_trigger intr_trigger; + enum intr_polarity intr_polarity; + char pin_name[GPIOMAXNAME]; + struct mtk_gpio_pin_irqsrc pin_irqsrc; +}; + +struct mtk_gpio_softc { + device_t dev; + device_t busdev; + struct resource *res[2]; + struct mtx mtx; + struct mtk_gpio_pin pins[MTK_GPIO_PINS]; + void *intrhand; + + uint32_t num_pins; + uint32_t bank_id; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pins[(irq)].pin_irqsrc.isrc) + +static struct resource_spec mtk_gpio_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE | RF_SHAREABLE }, + { SYS_RES_IRQ, 0, RF_ACTIVE | RF_SHAREABLE }, + { -1, 0 } +}; + +static int mtk_gpio_probe(device_t dev); +static int mtk_gpio_attach(device_t dev); +static int mtk_gpio_detach(device_t dev); +static int mtk_gpio_intr(void *arg); + +#define MTK_GPIO_LOCK(sc) mtx_lock_spin(&(sc)->mtx) +#define MTK_GPIO_UNLOCK(sc) mtx_unlock_spin(&(sc)->mtx) +#define MTK_GPIO_LOCK_INIT(sc) \ + mtx_init(&(sc)->mtx, device_get_nameunit((sc)->dev), \ + "mtk_gpio", MTX_SPIN) +#define MTK_GPIO_LOCK_DESTROY(sc) mtx_destroy(&(sc)->mtx) + +#define MTK_WRITE_4(sc, reg, val) bus_write_4((sc)->res[0], (reg), (val)) +#define MTK_READ_4(sc, reg) bus_read_4((sc)->res[0], (reg)) + +/* Register definitions */ +#define GPIO_REG(_sc, _reg) ((_reg) + (_sc)->bank_id * 0x4) +#define GPIO_PIOINT(_sc) GPIO_REG((_sc), 0x0090) +#define GPIO_PIOEDGE(_sc) GPIO_REG((_sc), 0x00A0) +#define GPIO_PIORENA(_sc) GPIO_REG((_sc), 0x0050) +#define GPIO_PIOFENA(_sc) GPIO_REG((_sc), 0x0060) +#define GPIO_PIODATA(_sc) GPIO_REG((_sc), 0x0020) +#define GPIO_PIODIR(_sc) GPIO_REG((_sc), 0x0000) +#define GPIO_PIOPOL(_sc) GPIO_REG((_sc), 0x0010) +#define GPIO_PIOSET(_sc) GPIO_REG((_sc), 0x0030) +#define GPIO_PIORESET(_sc) GPIO_REG((_sc), 0x0040) + +static struct ofw_compat_data compat_data[] = { + { "mtk,mt7621-gpio", 1 }, + { "mtk,mt7628-gpio", 1 }, + { NULL, 0 } +}; + +static int +mtk_gpio_probe(device_t dev) +{ + phandle_t node; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + node = ofw_bus_get_node(dev); + if (!OF_hasprop(node, "gpio-controller")) + return (ENXIO); + + device_set_desc(dev, "MTK GPIO Controller (v2)"); + + return (BUS_PROBE_DEFAULT); +} + +static int +mtk_pic_register_isrcs(struct mtk_gpio_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->dev); + for (irq = 0; irq < sc->num_pins; irq++) { + sc->pins[irq].pin_irqsrc.irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_gpio_pin_set_direction(struct mtk_gpio_softc *sc, uint32_t pin, + uint32_t dir) +{ + uint32_t regval, mask = (1u << pin); + + if (!(sc->pins[pin].pin_caps & dir)) + return (EINVAL); + + regval = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (dir == GPIO_PIN_INPUT) + regval &= ~mask; + else + regval |= mask; + MTK_WRITE_4(sc, GPIO_PIODIR(sc), regval); + + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); + sc->pins[pin].pin_flags |= dir; + + return (0); +} + +static int +mtk_gpio_pin_set_invert(struct mtk_gpio_softc *sc, uint32_t pin, uint32_t val) +{ + uint32_t regval, mask = (1u << pin); + + regval = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val) + regval |= mask; + else + regval &= ~mask; + MTK_WRITE_4(sc, GPIO_PIOPOL(sc), regval); + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INVIN | GPIO_PIN_INVOUT); + sc->pins[pin].pin_flags |= val; + + return (0); +} + +static void +mtk_gpio_pin_probe(struct mtk_gpio_softc *sc, uint32_t pin) +{ + uint32_t mask = (1u << pin); + uint32_t val; + + /* Clear cached gpio config */ + sc->pins[pin].pin_flags = 0; + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | + MTK_READ_4(sc, GPIO_PIOFENA(sc)); + if (val & mask) { + /* Pin is in interrupt mode */ + sc->pins[pin].intr_trigger = INTR_TRIGGER_EDGE; + val = MTK_READ_4(sc, GPIO_PIORENA(sc)); + if (val & mask) + sc->pins[pin].intr_polarity = INTR_POLARITY_HIGH; + else + sc->pins[pin].intr_polarity = INTR_POLARITY_LOW; + } + + val = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (val & mask) + sc->pins[pin].pin_flags |= GPIO_PIN_OUTPUT; + else + sc->pins[pin].pin_flags |= GPIO_PIN_INPUT; + + val = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val & mask) { + if (sc->pins[pin].pin_flags & GPIO_PIN_INPUT) { + sc->pins[pin].pin_flags |= GPIO_PIN_INVIN; + } else { + sc->pins[pin].pin_flags |= GPIO_PIN_INVOUT; + } + } +} + +static int +mtk_gpio_attach(device_t dev) +{ + struct mtk_gpio_softc *sc; + phandle_t node; + uint32_t i, num_pins, bank_id; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, mtk_gpio_spec, sc->res)) { + device_printf(dev, "could not allocate resources for device\n"); + return (ENXIO); + } + + MTK_GPIO_LOCK_INIT(sc); + + node = ofw_bus_get_node(dev); + + if (OF_hasprop(node, "clocks")) + mtk_soc_start_clock(dev); + if (OF_hasprop(node, "resets")) + mtk_soc_reset_device(dev); + + if (OF_hasprop(node, "mtk,bank-id") && (OF_getencprop(node, + "mtk,bank-id", &bank_id, sizeof(bank_id)) >= 0)) + sc->bank_id = bank_id; + else + sc->bank_id = device_get_unit(dev); + + if (OF_hasprop(node, "mtk,num-pins") && (OF_getencprop(node, + "mtk,num-pins", &num_pins, sizeof(num_pins)) >= 0)) + sc->num_pins = num_pins; + else + sc->num_pins = MTK_GPIO_PINS; + + for (i = 0; i < num_pins; i++) { + sc->pins[i].pin_caps |= GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | + GPIO_PIN_INVIN | GPIO_PIN_INVOUT; + sc->pins[i].intr_polarity = INTR_POLARITY_HIGH; + sc->pins[i].intr_trigger = INTR_TRIGGER_EDGE; + + snprintf(sc->pins[i].pin_name, GPIOMAXNAME - 1, "gpio%c%d", + device_get_unit(dev) + 'a', i); + sc->pins[i].pin_name[GPIOMAXNAME - 1] = '\0'; + + mtk_gpio_pin_probe(sc, i); + } + + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto fail; + } + + if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + device_printf(dev, "could not register PIC\n"); + goto fail; + } + + if (bus_setup_intr(dev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE, + mtk_gpio_intr, NULL, sc, &sc->intrhand) != 0) + goto fail_pic; + + sc->busdev = gpiobus_attach_bus(dev); + if (sc->busdev == NULL) + goto fail_pic; + + return (0); +fail_pic: + intr_pic_deregister(dev, OF_xref_from_node(node)); +fail: + if(sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (ENXIO); +} + +static int +mtk_gpio_detach(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + phandle_t node; + + node = ofw_bus_get_node(dev); + intr_pic_deregister(dev, OF_xref_from_node(node)); + if (sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (0); +} + +static device_t +mtk_gpio_get_bus(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + return (sc->busdev); +} + +static int +mtk_gpio_pin_max(device_t dev, int *maxpin) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + *maxpin = sc->num_pins - 1; + + return (0); +} + +static int +mtk_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *caps = sc->pins[pin].pin_caps; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *flags = sc->pins[pin].pin_flags; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getname(device_t dev, uint32_t pin, char *name) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + strncpy(name, sc->pins[pin].pin_name, GPIOMAXNAME - 1); + name[GPIOMAXNAME - 1] = '\0'; + + return (0); +} + +static int +mtk_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct mtk_gpio_softc *sc; + int retval; + + sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + retval = mtk_gpio_pin_set_direction(sc, pin, + flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)); + if (retval == 0) + retval = mtk_gpio_pin_set_invert(sc, pin, + flags & (GPIO_PIN_INVIN | GPIO_PIN_INVOUT)); + MTK_GPIO_UNLOCK(sc); + + return (retval); +} + +static int +mtk_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) +{ + struct mtk_gpio_softc *sc; + int ret; + + if (pin >= sc->num_pins) + return (EINVAL); + + sc = device_get_softc(dev); + ret = 0; + + MTK_GPIO_LOCK(sc); + if (!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } + if (value) + MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); + else + MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); + +out: + MTK_GPIO_UNLOCK(sc); + + return (ret); +} + +static int +mtk_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) +{ + struct mtk_gpio_softc *sc; + uint32_t data; + int ret; + + if (pin >= sc->num_pins) + return (EINVAL); + + sc = device_get_softc(dev); + ret = 0; + + MTK_GPIO_LOCK(sc); + if (!(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) { + ret = EINVAL; + goto out; + } + data = MTK_READ_4(sc, GPIO_PIODATA(sc)); + *val = (data & (1u << pin)) ? 1 : 0; + +out: + MTK_GPIO_UNLOCK(sc); + return (ret); +} + +static int +mtk_gpio_pin_toggle(device_t dev, uint32_t pin) +{ + struct mtk_gpio_softc *sc; + uint32_t val; + int ret; + + if (pin >= sc->num_pins) + return (EINVAL); + + sc = device_get_softc(dev); + ret = 0; + + MTK_GPIO_LOCK(sc); + if(!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } + val = MTK_READ_4(sc, GPIO_PIODATA(sc)); + val &= (1u << pin); + if (val) + MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); + else + MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); + +out: + MTK_GPIO_UNLOCK(sc); + + return (ret); +} + +static int +mtk_gpio_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ + struct mtk_gpio_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->num_pins) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +} + +static void +mtk_gpio_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + if (sc->pins[pin].intr_polarity == INTR_POLARITY_LOW) { + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + } else { + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + } + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_disable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_enable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + sc = device_get_softc(dev); + MTK_GPIO_LOCK(sc); + MTK_WRITE_4(sc, GPIO_PIOINT(sc), 1u << pisrc->irq); + MTK_GPIO_UNLOCK(sc); +} + +static int +mtk_gpio_intr(void *arg) +{ + struct mtk_gpio_softc *sc; + uint32_t i, interrupts; + + sc = arg; + interrupts = MTK_READ_4(sc, GPIO_PIOINT(sc)); + + for (i = 0; interrupts != 0; i++, interrupts >>= 1) { + if ((interrupts & 0x1) == 0) + continue; + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->dev, "spurious interrupt %d\n", i); + } + } + + return (FILTER_HANDLED); +} + +static phandle_t +mtk_gpio_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the GPIO bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_gpio_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_gpio_probe), + DEVMETHOD(device_attach, mtk_gpio_attach), + DEVMETHOD(device_detach, mtk_gpio_detach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, mtk_gpio_get_bus), + DEVMETHOD(gpio_pin_max, mtk_gpio_pin_max), + DEVMETHOD(gpio_pin_getname, mtk_gpio_pin_getname), + DEVMETHOD(gpio_pin_getflags, mtk_gpio_pin_getflags), + DEVMETHOD(gpio_pin_getcaps, mtk_gpio_pin_getcaps), + DEVMETHOD(gpio_pin_setflags, mtk_gpio_pin_setflags), + DEVMETHOD(gpio_pin_get, mtk_gpio_pin_get), + DEVMETHOD(gpio_pin_set, mtk_gpio_pin_set), + DEVMETHOD(gpio_pin_toggle, mtk_gpio_pin_toggle), + + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_gpio_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_gpio_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_gpio_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_gpio_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_gpio_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_gpio_pic_pre_ithread), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_gpio_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_gpio_driver = { + "gpio", + mtk_gpio_methods, + sizeof(struct mtk_gpio_softc), +}; + +static devclass_t mtk_gpio_devclass; + +EARLY_DRIVER_MODULE(mtk_gpio_v2, simplebus, mtk_gpio_driver, + mtk_gpio_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); diff --git a/sys/mips/mediatek/mtk_intr_gic.c b/sys/mips/mediatek/mtk_intr_gic.c new file mode 100644 index 0000000..3eb6ffc --- /dev/null +++ b/sys/mips/mediatek/mtk_intr_gic.c @@ -0,0 +1,377 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * Copyright (c) 2015 Alexander Kabaev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include "opt_platform.h" + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/ktr.h> +#include <sys/module.h> +#include <sys/malloc.h> +#include <sys/rman.h> +#include <sys/pcpu.h> +#include <sys/proc.h> +#include <sys/cpuset.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/smp.h> +#include <sys/sched.h> +#include <machine/bus.h> +#include <machine/intr.h> +#include <machine/smp.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include "pic_if.h" + +#define MTK_NIRQS 64 /* We'll only use 64 for now */ + +#define MTK_INTPOL 0x0100 +#define MTK_INTTRIG 0x0180 +#define MTK_INTDIS 0x0300 +#define MTK_INTENA 0x0380 +#define MTK_INTMASK 0x0400 +#define MTK_INTSTAT 0x0480 +#define MTK_MAPPIN(_i) (0x0500 + (4 * (_i))) +#define MTK_MAPVPE(_i, _v) (0x2000 + (32 * (_i)) + (((_v) / 32) * 4)) + +#define MTK_INTPOL_POS 1 +#define MTK_INTPOL_NEG 0 +#define MTK_INTTRIG_EDGE 1 +#define MTK_INTTRIG_LEVEL 0 +#define MTK_PIN_BITS(_i) ((1 << 31) | (_i)) +#define MTK_VPE_BITS(_v) (1 << ((_v) % 32)) + +static int mtk_gic_intr(void *); + +struct mtk_gic_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_gic_softc { + device_t gic_dev; + void * gic_intrhand; + struct resource * gic_res[2]; + struct mtk_gic_irqsrc gic_irqs[MTK_NIRQS]; + struct mtx mutex; + uint32_t nirqs; +}; + +#define GIC_INTR_ISRC(sc, irq) (&(sc)->gic_irqs[(irq)].isrc) + +static struct resource_spec mtk_gic_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Registers */ + { SYS_RES_IRQ, 0, RF_ACTIVE }, /* Parent interrupt 1 */ + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + { "mti,gic", 1 }, + { NULL, 0 } +}; + +#if 0 +#define READ4(_sc, _reg) \ + bus_space_read_4((_sc)->bst, (_sc)->bsh, _reg) +#define WRITE4(_sc, _reg, _val) \ + bus_space_write_4((_sc)->bst, (_sc)->bsh, _reg, _val) +#else +#define READ4(_sc, _reg) bus_read_4((_sc)->gic_res[0], (_reg)) +#define WRITE4(_sc, _reg, _val) bus_write_4((_sc)->gic_res[0], (_reg), (_val)) +#endif + +static int +mtk_gic_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Interrupt Controller (GIC)"); + return (BUS_PROBE_DEFAULT); +} + +static inline void +gic_irq_unmask(struct mtk_gic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTENA, (1u << (irq))); +} + +static inline void +gic_irq_mask(struct mtk_gic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTDIS, (1u << (irq))); +} + +static inline intptr_t +gic_xref(device_t dev) +{ + + return (OF_xref_from_node(ofw_bus_get_node(dev))); +} + +static int +mtk_gic_register_isrcs(struct mtk_gic_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->gic_dev); + for (irq = 0; irq < sc->nirqs; irq++) { + sc->gic_irqs[irq].irq = irq; + isrc = GIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->gic_dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->gic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_gic_attach(device_t dev) +{ + struct mtk_gic_softc *sc; + intptr_t xref = gic_xref(dev); + int i; + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, mtk_gic_spec, sc->gic_res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->gic_dev = dev; + + /* Initialize mutex */ + mtx_init(&sc->mutex, "PIC lock", "", MTX_SPIN); + + /* Set the number of interrupts */ + sc->nirqs = nitems(sc->gic_irqs); + + /* Mask all interrupts */ + WRITE4(sc, MTK_INTDIS, 0xFFFFFFFF); + + /* All interrupts are of type level */ + WRITE4(sc, MTK_INTTRIG, 0x00000000); + + /* All interrupts are of positive polarity */ + WRITE4(sc, MTK_INTPOL, 0xFFFFFFFF); + + /* + * Route all interrupts to pin 0 on VPE 0; + */ + for (i = 0; i < 32; i++) { + WRITE4(sc, MTK_MAPPIN(i), MTK_PIN_BITS(0)); + WRITE4(sc, MTK_MAPVPE(i, 0), MTK_VPE_BITS(0)); + } + + /* Register the interrupts */ + if (mtk_gic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register GIC ISRCs\n"); + goto cleanup; + } + + /* + * Now, when everything is initialized, it's right time to + * register interrupt controller to interrupt framefork. + */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup; + } + + if (bus_setup_intr(dev, sc->gic_res[1], INTR_TYPE_CLK, + mtk_gic_intr, NULL, sc, &sc->gic_intrhand)) { + device_printf(dev, "could not setup irq handler\n"); + intr_pic_deregister(dev, xref); + goto cleanup; + } + return (0); + +cleanup: + bus_release_resources(dev, mtk_gic_spec, sc->gic_res); + return(ENXIO); +} + +static int +mtk_gic_intr(void *arg) +{ + struct mtk_gic_softc *sc = arg; + struct thread *td; + uint32_t i, intr; + + td = curthread; + /* Workaround: do not inflate intr nesting level */ + td->td_intr_nesting_level--; + + intr = READ4(sc, MTK_INTSTAT) & READ4(sc, MTK_INTMASK); + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(GIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->gic_dev, + "Stray interrupt %u detected\n", i); + gic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); + + td->td_intr_nesting_level++; + + return (FILTER_HANDLED); +} + +static int +mtk_gic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ +#ifdef FDT + struct mtk_gic_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) + return (EINVAL); + + *isrcp = GIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +#else + return (EINVAL); +#endif +} + +static void +mtk_gic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_gic_irqsrc *)isrc)->irq; + gic_irq_unmask(device_get_softc(dev), irq); +} + +static void +mtk_gic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_gic_irqsrc *)isrc)->irq; + gic_irq_mask(device_get_softc(dev), irq); +} + +static void +mtk_gic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gic_disable_intr(dev, isrc); +} + +static void +mtk_gic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gic_enable_intr(dev, isrc); +} + +static void +mtk_gic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ +} + +#ifdef SMP +static int +mtk_gic_bind(device_t dev, struct intr_irqsrc *isrc) +{ + return (EOPNOTSUPP); +} + +static void +mtk_gic_init_secondary(device_t dev) +{ +} + +static void +mtk_gic_ipi_send(device_t dev, struct intr_irqsrc *isrc, cpuset_t cpus) +{ +} +#endif + +static device_method_t mtk_gic_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_gic_probe), + DEVMETHOD(device_attach, mtk_gic_attach), + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_gic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_gic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_gic_map_intr), + DEVMETHOD(pic_post_filter, mtk_gic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_gic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_gic_pre_ithread), +#ifdef SMP + DEVMETHOD(pic_bind, mtk_gic_bind), + DEVMETHOD(pic_init_secondary, mtk_gic_init_secondary), + DEVMETHOD(pic_ipi_send, mtk_gic_ipi_send), +#endif + { 0, 0 } +}; + +static driver_t mtk_gic_driver = { + "intc", + mtk_gic_methods, + sizeof(struct mtk_gic_softc), +}; + +static devclass_t mtk_gic_devclass; + +EARLY_DRIVER_MODULE(intc_gic, simplebus, mtk_gic_driver, mtk_gic_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/mips/mediatek/mtk_intr_v1.c b/sys/mips/mediatek/mtk_intr_v1.c new file mode 100644 index 0000000..f1ae3a2 --- /dev/null +++ b/sys/mips/mediatek/mtk_intr_v1.c @@ -0,0 +1,353 @@ +/*- + * Copyright (c) 2015 Stanislav Galabov + * Copyright (c) 2015 Alexander Kabaev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include "opt_platform.h" + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/ktr.h> +#include <sys/module.h> +#include <sys/malloc.h> +#include <sys/rman.h> +#include <sys/pcpu.h> +#include <sys/proc.h> +#include <sys/cpuset.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/smp.h> +#include <sys/sched.h> +#include <machine/bus.h> +#include <machine/intr.h> +#include <machine/smp.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include "pic_if.h" + +#define MTK_NIRQS 32 + +#define MTK_IRQ0STAT 0x0000 +#define MTK_IRQ1STAT 0x0004 +#define MTK_INTTYPE 0x0020 +#define MTK_INTRAW 0x0030 +#define MTK_INTENA 0x0034 +#define MTK_INTDIS 0x0038 + +static int mtk_pic_intr(void *); + +struct mtk_pic_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_pic_softc { + device_t pic_dev; + void * pic_intrhand; + struct resource * pic_res[2]; + struct mtk_pic_irqsrc pic_irqs[MTK_NIRQS]; + struct mtx mutex; + uint32_t nirqs; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pic_irqs[(irq)].isrc) + +static struct resource_spec mtk_pic_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Registers */ + { SYS_RES_IRQ, 0, RF_ACTIVE }, /* Parent interrupt 1 */ +// { SYS_RES_IRQ, 1, RF_ACTIVE }, /* Parent interrupt 2 */ + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-intc", 1 }, + { "ralink,rt3050-intc", 1 }, + { "ralink,rt3352-intc", 1 }, + { "ralink,rt3883-intc", 1 }, + { "ralink,rt5350-intc", 1 }, + { "ralink,mt7620a-intc", 1 }, + { NULL, 0 } +}; + +#define READ4(_sc, _reg) bus_read_4((_sc)->pic_res[0], _reg) +#define WRITE4(_sc, _reg, _val) bus_write_4((_sc)->pic_res[0], _reg, _val) + +static int +mtk_pic_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Interrupt Controller (v2)"); + return (BUS_PROBE_DEFAULT); +} + +static inline void +pic_irq_unmask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTENA, (1u << (irq))); +} + +static inline void +pic_irq_mask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTDIS, (1u << (irq))); +} + +static inline intptr_t +pic_xref(device_t dev) +{ + return (OF_xref_from_node(ofw_bus_get_node(dev))); +} + +static int +mtk_pic_register_isrcs(struct mtk_pic_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->pic_dev); + for (irq = 0; irq < sc->nirqs; irq++) { + sc->pic_irqs[irq].irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->pic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_pic_attach(device_t dev) +{ + struct mtk_pic_softc *sc; + intptr_t xref = pic_xref(dev); + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, mtk_pic_spec, sc->pic_res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->pic_dev = dev; + + /* Initialize mutex */ + mtx_init(&sc->mutex, "PIC lock", "", MTX_SPIN); + + /* Set the number of interrupts */ + sc->nirqs = nitems(sc->pic_irqs); + + /* Mask all interrupts */ + WRITE4(sc, MTK_INTDIS, 0x7FFFFFFF); + + /* But enable interrupt generation/masking */ + WRITE4(sc, MTK_INTENA, 0x80000000); + + /* Set all interrupts to type 0 */ + WRITE4(sc, MTK_INTTYPE, 0x00000000); + + /* Register the interrupts */ + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto cleanup; + } + + /* + * Now, when everything is initialized, it's right time to + * register interrupt controller to interrupt framefork. + */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup; + } + + if (bus_setup_intr(dev, sc->pic_res[1], INTR_TYPE_CLK, + mtk_pic_intr, NULL, sc, &sc->pic_intrhand)) { + device_printf(dev, "could not setup irq handler\n"); + intr_pic_deregister(dev, xref); + goto cleanup; + } + return (0); + +cleanup: + bus_release_resources(dev, mtk_pic_spec, sc->pic_res); + return(ENXIO); +} + +static int +mtk_pic_intr(void *arg) +{ + struct mtk_pic_softc *sc = arg; + struct thread *td; + uint32_t i, intr; + + td = curthread; + /* Workaround: do not inflate intr nesting level */ + td->td_intr_nesting_level--; + +#ifdef _notyet_ + intr = READ4(sc, MTK_IRQ1STAT); + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); +#endif + + intr = READ4(sc, MTK_IRQ0STAT); + + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); + + td->td_intr_nesting_level++; + + return (FILTER_HANDLED); +} + +static int +mtk_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ +#ifdef FDT + struct mtk_pic_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +#else + return (EINVAL); +#endif +} + +static void +mtk_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_unmask(device_get_softc(dev), irq); +} + +static void +mtk_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_mask(device_get_softc(dev), irq); +} + +static void +mtk_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_disable_intr(dev, isrc); +} + +static void +mtk_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_enable_intr(dev, isrc); +} + +static void +mtk_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ +} + +static device_method_t mtk_pic_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_pic_probe), + DEVMETHOD(device_attach, mtk_pic_attach), + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_pic_pre_ithread), + { 0, 0 } +}; + +static driver_t mtk_pic_driver = { + "intc", + mtk_pic_methods, + sizeof(struct mtk_pic_softc), +}; + +static devclass_t mtk_pic_devclass; + +EARLY_DRIVER_MODULE(intc_v1, simplebus, mtk_pic_driver, mtk_pic_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/mips/mediatek/mtk_intr_v2.c b/sys/mips/mediatek/mtk_intr_v2.c new file mode 100644 index 0000000..5a9646e --- /dev/null +++ b/sys/mips/mediatek/mtk_intr_v2.c @@ -0,0 +1,348 @@ +/*- + * Copyright (c) 2015 Stanislav Galabov + * Copyright (c) 2015 Alexander Kabaev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include "opt_platform.h" + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/ktr.h> +#include <sys/module.h> +#include <sys/malloc.h> +#include <sys/rman.h> +#include <sys/pcpu.h> +#include <sys/proc.h> +#include <sys/cpuset.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/smp.h> +#include <sys/sched.h> +#include <machine/bus.h> +#include <machine/intr.h> +#include <machine/smp.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include "pic_if.h" + +#define MTK_NIRQS 32 + +#define MTK_IRQ0STAT 0x009c +#define MTK_IRQ1STAT 0x00a0 +#define MTK_INTTYPE 0x0000 +#define MTK_INTRAW 0x00a4 +#define MTK_INTENA 0x0080 +#define MTK_INTDIS 0x0078 + +static int mtk_pic_intr(void *); + +struct mtk_pic_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_pic_softc { + device_t pic_dev; + void * pic_intrhand; + struct resource * pic_res[2]; + struct mtk_pic_irqsrc pic_irqs[MTK_NIRQS]; + struct mtx mutex; + uint32_t nirqs; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pic_irqs[(irq)].isrc) + +static struct resource_spec mtk_pic_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Registers */ + { SYS_RES_IRQ, 0, RF_ACTIVE }, /* Parent interrupt 1 */ +// { SYS_RES_IRQ, 1, RF_ACTIVE }, /* Parent interrupt 2 */ + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + { "ralink,mt7628an-intc", 1 }, + { NULL, 0 } +}; + +#define READ4(_sc, _reg) bus_read_4((_sc)->pic_res[0], _reg) +#define WRITE4(_sc, _reg, _val) bus_write_4((_sc)->pic_res[0], _reg, _val) + +static int +mtk_pic_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Interrupt Controller (v2)"); + return (BUS_PROBE_DEFAULT); +} + +static inline void +pic_irq_unmask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTENA, (1u << (irq))); +} + +static inline void +pic_irq_mask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTDIS, (1u << (irq))); +} + +static inline intptr_t +pic_xref(device_t dev) +{ + return (OF_xref_from_node(ofw_bus_get_node(dev))); +} + +static int +mtk_pic_register_isrcs(struct mtk_pic_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->pic_dev); + for (irq = 0; irq < sc->nirqs; irq++) { + sc->pic_irqs[irq].irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->pic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_pic_attach(device_t dev) +{ + struct mtk_pic_softc *sc; + intptr_t xref = pic_xref(dev); + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, mtk_pic_spec, sc->pic_res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->pic_dev = dev; + + /* Initialize mutex */ + mtx_init(&sc->mutex, "PIC lock", "", MTX_SPIN); + + /* Set the number of interrupts */ + sc->nirqs = nitems(sc->pic_irqs); + + /* Mask all interrupts */ + WRITE4(sc, MTK_INTDIS, 0xFFFFFFFF); + + /* But enable interrupt generation/masking */ + WRITE4(sc, MTK_INTENA, 0x00000000); + + /* Set all interrupts to type 0 */ + WRITE4(sc, MTK_INTTYPE, 0xFFFFFFFF); + + /* Register the interrupts */ + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto cleanup; + } + + /* + * Now, when everything is initialized, it's right time to + * register interrupt controller to interrupt framefork. + */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup; + } + + if (bus_setup_intr(dev, sc->pic_res[1], INTR_TYPE_CLK, + mtk_pic_intr, NULL, sc, &sc->pic_intrhand)) { + device_printf(dev, "could not setup irq handler\n"); + intr_pic_deregister(dev, xref); + goto cleanup; + } + return (0); + +cleanup: + bus_release_resources(dev, mtk_pic_spec, sc->pic_res); + return(ENXIO); +} + +static int +mtk_pic_intr(void *arg) +{ + struct mtk_pic_softc *sc = arg; + struct thread *td; + uint32_t i, intr; + + td = curthread; + /* Workaround: do not inflate intr nesting level */ + td->td_intr_nesting_level--; + +#ifdef _notyet_ + intr = READ4(sc, MTK_IRQ1STAT); + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); +#endif + + intr = READ4(sc, MTK_IRQ0STAT); + + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); + + td->td_intr_nesting_level++; + + return (FILTER_HANDLED); +} + +static int +mtk_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ +#ifdef FDT + struct mtk_pic_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +#else + return (EINVAL); +#endif +} + +static void +mtk_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_unmask(device_get_softc(dev), irq); +} + +static void +mtk_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_mask(device_get_softc(dev), irq); +} + +static void +mtk_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_disable_intr(dev, isrc); +} + +static void +mtk_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_enable_intr(dev, isrc); +} + +static void +mtk_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ +} + +static device_method_t mtk_pic_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_pic_probe), + DEVMETHOD(device_attach, mtk_pic_attach), + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_pic_pre_ithread), + { 0, 0 } +}; + +static driver_t mtk_pic_driver = { + "intc", + mtk_pic_methods, + sizeof(struct mtk_pic_softc), +}; + +static devclass_t mtk_pic_devclass; + +EARLY_DRIVER_MODULE(intc_v2, simplebus, mtk_pic_driver, mtk_pic_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/mips/mediatek/mtk_machdep.c b/sys/mips/mediatek/mtk_machdep.c new file mode 100644 index 0000000..eeadd4f --- /dev/null +++ b/sys/mips/mediatek/mtk_machdep.c @@ -0,0 +1,286 @@ +/*- + * Copyright (C) 2015-2016 by Stanislav Galabov. All rights reserved. + * Copyright (C) 2010-2011 by Aleksandr Rybalko. All rights reserved. + * Copyright (C) 2007 by Oleksandr Tymoshenko. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include "opt_ddb.h" + +#include <sys/param.h> +#include <sys/conf.h> +#include <sys/kernel.h> +#include <sys/systm.h> +#include <sys/imgact.h> +#include <sys/bio.h> +#include <sys/buf.h> +#include <sys/bus.h> +#include <sys/cpu.h> +#include <sys/cons.h> +#include <sys/exec.h> +#include <sys/ucontext.h> +#include <sys/proc.h> +#include <sys/kdb.h> +#include <sys/ptrace.h> +#include <sys/reboot.h> +#include <sys/signalvar.h> +#include <sys/sysent.h> +#include <sys/sysproto.h> +#include <sys/user.h> + +#include <vm/vm.h> +#include <vm/vm_object.h> +#include <vm/vm_page.h> + +#include <machine/cache.h> +#include <machine/clock.h> +#include <machine/cpu.h> +#include <machine/cpuinfo.h> +#include <machine/cpufunc.h> +#include <machine/cpuregs.h> +#include <machine/hwfunc.h> +#include <machine/intr_machdep.h> +#include <machine/locore.h> +#include <machine/md_var.h> +#include <machine/pte.h> +#include <machine/sigframe.h> +#include <machine/trap.h> +#include <machine/vmparam.h> + +#include <mips/mediatek/mtk_sysctl.h> +#include <mips/mediatek/mtk_soc.h> + +#include "opt_platform.h" +#include "opt_rt305x.h" + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> + +extern int *edata; +extern int *end; +static char boot1_env[0x1000]; + +void +platform_cpu_init() +{ + /* Nothing special */ +} + +static void +mips_init(void) +{ + struct mem_region mr[FDT_MEM_REGIONS]; + uint64_t val; + int i, j, mr_cnt; + char *memsize; + + printf("entry: mips_init()\n"); + + bootverbose = 1; + + for (i = 0; i < 10; i++) + phys_avail[i] = 0; + + dump_avail[0] = phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); + + /* + * The most low memory MT7621 can have. Currently MT7621 is the chip + * that supports the most memory, so that seems reasonable. + */ + realmem = btoc(448 * 1024 * 1024); + + if (fdt_get_mem_regions(mr, &mr_cnt, &val) == 0) { + physmem = btoc(val); + + printf("RAM size: %ldMB (from FDT)\n", + ctob(physmem) / (1024 * 1024)); + + KASSERT((phys_avail[0] >= mr[0].mr_start) && \ + (phys_avail[0] < (mr[0].mr_start + mr[0].mr_size)), + ("First region is not within FDT memory range")); + + /* Limit size of the first region */ + phys_avail[1] = (mr[0].mr_start + + MIN(mr[0].mr_size, ctob(realmem))); + dump_avail[1] = phys_avail[1]; + + /* Add the rest of the regions */ + for (i = 1, j = 2; i < mr_cnt; i++, j+=2) { + phys_avail[j] = mr[i].mr_start; + phys_avail[j+1] = (mr[i].mr_start + mr[i].mr_size); + dump_avail[j] = phys_avail[j]; + dump_avail[j+1] = phys_avail[j+1]; + } + } else { + if ((memsize = kern_getenv("memsize")) != NULL) { + physmem = btoc(strtol(memsize, NULL, 0) << 20); + printf("RAM size: %ldMB (from memsize)\n", + ctob(physmem) / (1024 * 1024)); + } else { /* All else failed, assume 32MB */ + physmem = btoc(32 * 1024 * 1024); + printf("RAM size: %ldMB (assumed)\n", + ctob(physmem) / (1024 * 1024)); + } + + if (ctob(physmem) < (448 * 1024 * 1024)) { + /* + * Anything up to 448MB is assumed to be directly + * mappable as low memory... + */ + dump_avail[1] = phys_avail[1] = ctob(physmem); + } else if (mtk_soc_get_socid() == MTK_SOC_MT7621) { + /* + * On MT7621 the low memory is limited to 448MB, the + * rest is high memory, mapped at 0x20000000 + */ + phys_avail[1] = 448 * 1024 * 1024; + phys_avail[2] = 0x20000000; + phys_avail[3] = phys_avail[2] + ctob(physmem) - + phys_avail[1]; + dump_avail[1] = phys_avail[1] - phys_avail[0]; + dump_avail[2] = phys_avail[2]; + dump_avail[3] = phys_avail[3] - phys_avail[2]; + } else { + /* + * We have > 448MB RAM and we're not MT7621? Currently + * there is no such chip, so we'll just limit the RAM to + * 32MB and let the user know... + */ + printf("Unknown chip, assuming 32MB RAM\n"); + physmem = btoc(32 * 1024 * 1024); + dump_avail[1] = phys_avail[1] = ctob(physmem); + } + } + + if (physmem < realmem) + realmem = physmem; + + init_param1(); + init_param2(physmem); + mips_cpu_init(); + pmap_bootstrap(); + mips_proc0_init(); + mutex_init(); + kdb_init(); +#ifdef KDB + if (boothowto & RB_KDB) + kdb_enter(KDB_WHY_BOOTFLAGS, "Boot flags requested debugger"); +#endif +} + +void +platform_reset(void) +{ + + mtk_soc_reset(); +} + +void +platform_start(__register_t a0 __unused, __register_t a1 __unused, + __register_t a2 __unused, __register_t a3 __unused) +{ + vm_offset_t kernend; + int argc = a0, i;//, res; + uint32_t timer_clk; + char **argv = (char **)MIPS_PHYS_TO_KSEG0(a1); + char **envp = (char **)MIPS_PHYS_TO_KSEG0(a2); + void *dtbp; + + /* clear the BSS and SBSS segments */ + kernend = (vm_offset_t)&end; + memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + + mips_postboot_fixup(); + + /* Initialize pcpu stuff */ + mips_pcpu0_init(); + + dtbp = &fdt_static_dtb; + if (OF_install(OFW_FDT, 0) == FALSE) + while (1); + if (OF_init((void *)dtbp) != 0) + while (1); + + mtk_soc_try_early_detect(); + if ((timer_clk = mtk_soc_get_timerclk()) == 0) + timer_clk = 1000000000; /* no such speed yet */ + + mips_timer_early_init(timer_clk); + + /* initialize console so that we have printf */ + boothowto |= (RB_SERIAL | RB_MULTIPLE); /* Use multiple consoles */ + boothowto |= (RB_VERBOSE); + cninit(); + + init_static_kenv(boot1_env, sizeof(boot1_env)); + + printf("FDT DTB at: 0x%08x\n", (uint32_t)dtbp); + + printf("CPU clock: %4dMHz\n", mtk_soc_get_cpuclk()/(1000*1000)); + printf("Timer clock: %4dMHz\n", timer_clk/(1000*1000)); + printf("UART clock: %4dMHz\n\n", mtk_soc_get_uartclk()/(1000*1000)); + + printf("U-Boot args (from %d args):\n", argc - 1); + + if (argc == 1) + printf("\tNone\n"); + + for (i = 1; i < argc; i++) { + char *n = "argv ", *arg; + + if (i > 99) + break; + + if (argv[i]) + { + arg = (char *)(intptr_t)MIPS_PHYS_TO_KSEG0(argv[i]); + printf("\targv[%d] = %s\n", i, arg); + sprintf(n, "argv%d", i); + kern_setenv(n, arg); + } + } + + printf("Environment:\n"); + + for (i = 0; envp[i] && MIPS_IS_VALID_PTR(envp[i]); i++) { + char *n, *arg; + + arg = (char *)(intptr_t)MIPS_PHYS_TO_KSEG0(envp[i]); + if (! MIPS_IS_VALID_PTR(arg)) + continue; + printf("\t%s\n", arg); + n = strsep(&arg, "="); + if (arg == NULL) + kern_setenv(n, "1"); + else + kern_setenv(n, arg); + } + + + mips_init(); + mips_timer_init_params(timer_clk, 0); +} diff --git a/sys/mips/mediatek/mtk_ohci.c b/sys/mips/mediatek/mtk_ohci.c new file mode 100644 index 0000000..91c98ce --- /dev/null +++ b/sys/mips/mediatek/mtk_ohci.c @@ -0,0 +1,223 @@ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/stdint.h> +#include <sys/stddef.h> +#include <sys/param.h> +#include <sys/queue.h> +#include <sys/types.h> +#include <sys/systm.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/condvar.h> +#include <sys/sysctl.h> +#include <sys/sx.h> +#include <sys/unistd.h> +#include <sys/callout.h> +#include <sys/malloc.h> +#include <sys/priv.h> +#include <sys/rman.h> + +#include <dev/usb/usb.h> +#include <dev/usb/usbdi.h> + +#include <dev/usb/usb_core.h> +#include <dev/usb/usb_busdma.h> +#include <dev/usb/usb_process.h> +#include <dev/usb/usb_util.h> + +#include <dev/usb/usb_controller.h> +#include <dev/usb/usb_bus.h> + +#include <dev/usb/controller/ohci.h> + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#define OHCI_HC_DEVSTR "MTK USB Controller" + +static device_probe_t ohci_fdt_probe; +static device_attach_t ohci_fdt_attach; +static device_detach_t ohci_fdt_detach; + +static int +ohci_fdt_probe(device_t self) +{ + + if (!ofw_bus_status_okay(self)) + return (ENXIO); + + if (!ofw_bus_is_compatible(self, "ralink,rt3xxx-ohci")) + return (ENXIO); + + device_set_desc(self, OHCI_HC_DEVSTR); + + return (BUS_PROBE_DEFAULT); +} + +static int +ohci_fdt_attach(device_t self) +{ + ohci_softc_t *sc = device_get_softc(self); + int err; + int rid; + + /* initialise some bus fields */ + sc->sc_bus.parent = self; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = OHCI_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + /* get all DMA memory */ + if (usb_bus_mem_alloc_all(&sc->sc_bus, + USB_GET_DMA_TAG(self), &ohci_iterate_hw_softc)) { + printf("No mem\n"); + return (ENOMEM); + } + + rid = 0; + sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_io_res) { + device_printf(self, "Could not map memory\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { + device_printf(self, "Could not allocate irq\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + device_printf(self, "Could not add USB device\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + device_set_desc(sc->sc_bus.bdev, OHCI_HC_DEVSTR); + + sprintf(sc->sc_vendor, "MediaTek"); + + err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, + NULL, (driver_intr_t *)ohci_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + device_printf(self, "Could not setup irq, %d\n", err); + sc->sc_intr_hdl = NULL; + goto error; + } + + err = ohci_init(sc); + if (!err) { + err = device_probe_and_attach(sc->sc_bus.bdev); + } + if (err) { + device_printf(self, "USB init failed err=%d\n", err); + goto error; + } + return (0); + +error: + ohci_fdt_detach(self); + return (ENXIO); +} + +static int +ohci_fdt_detach(device_t self) +{ + ohci_softc_t *sc = device_get_softc(self); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(self); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call ohci_detach() after ohci_init() + */ + ohci_detach(sc); + + err = bus_teardown_intr(self, sc->sc_irq_res, sc->sc_intr_hdl); + if (err) + device_printf(self, "Could not tear down irq, %d\n", + err); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(self, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(self, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + usb_bus_mem_free_all(&sc->sc_bus, &ohci_iterate_hw_softc); + + return (0); +} + +static device_method_t ohci_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ohci_fdt_probe), + DEVMETHOD(device_attach, ohci_fdt_attach), + DEVMETHOD(device_detach, ohci_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t ohci_fdt_driver = { + .name = "ohci", + .methods = ohci_fdt_methods, + .size = sizeof(ohci_softc_t), +}; + +static devclass_t ohci_fdt_devclass; + +DRIVER_MODULE(ohci, simplebus, ohci_fdt_driver, ohci_fdt_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_pcie.c b/sys/mips/mediatek/mtk_pcie.c new file mode 100644 index 0000000..a43d277 --- /dev/null +++ b/sys/mips/mediatek/mtk_pcie.c @@ -0,0 +1,1489 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The pci allocator parts are based on code from sys/dev/arm/mv/: + * + * Copyright (c) 2008 MARVELL INTERNATIONAL LTD. + * Copyright (c) 2010 The FreeBSD Foundation + * Copyright (c) 2010-2012 Semihalf + * All rights reserved. + * + * Developed by Semihalf. + */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> + +#include <sys/bus.h> +#include <sys/interrupt.h> +#include <sys/malloc.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/rman.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/endian.h> + +#include <vm/vm.h> +#include <vm/pmap.h> +#include <vm/vm_extern.h> + +#include <machine/bus.h> +#include <machine/cpu.h> +#include <machine/intr.h> +#include <machine/pmap.h> + +#include <dev/pci/pcivar.h> +#include <dev/pci/pcireg.h> + +#include <dev/pci/pcib_private.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/fdt/fdt_clock.h> +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <mips/mediatek/mtk_pcie.h> +#include <mips/mediatek/mtk_soc.h> +#include <mips/mediatek/mtk_sysctl.h> +#include <mips/mediatek/fdt_reset.h> + +#include "pcib_if.h" +#include "pic_if.h" + +/* + * Note: We only support PCIe at the moment. + * Most SoCs in the Ralink/Mediatek family that we target actually don't + * support PCI anyway, with the notable exceptions being RT3662/RT3883, which + * support both PCI and PCIe. If there exists a board based on one of them + * which is of interest in the future it shouldn't be too hard to enable PCI + * support for it. + */ + +/* Chip specific function declarations */ +static int mtk_pcie_phy_init(device_t); +static int mtk_pcie_phy_start(device_t); +static int mtk_pcie_phy_stop(device_t); +static int mtk_pcie_phy_mt7621_init(device_t); +static int mtk_pcie_phy_mt7628_init(device_t); +static int mtk_pcie_phy_mt7620_init(device_t); +static int mtk_pcie_phy_rt3883_init(device_t); +static void mtk_pcie_phy_setup_slots(device_t); + +/* Generic declarations */ +struct mtx mtk_pci_mtx; +MTX_SYSINIT(mtk_pci_mtx, &mtk_pci_mtx, "MTK PCIe mutex", MTX_SPIN); + +static int mtk_pcib_init(device_t, int, int); +static int mtk_pci_intr(void *); + +static struct mtk_pci_softc *mt_sc = NULL; + +struct mtk_pci_range { + u_long base; + u_long len; +}; + +#define FDT_RANGES_CELLS (3 * 2) + +static void +mtk_pci_range_dump(struct mtk_pci_range *range) +{ +#ifdef DEBUG + printf("\n"); + printf(" base = 0x%08lx\n", range->base); + printf(" len = 0x%08lx\n", range->len); +#endif +} + +static int +mtk_pci_ranges_decode(phandle_t node, struct mtk_pci_range *io_space, + struct mtk_pci_range *mem_space) +{ + struct mtk_pci_range *pci_space; + pcell_t ranges[FDT_RANGES_CELLS]; + pcell_t *rangesptr; + pcell_t cell0, cell1, cell2; + int tuples, i, rv, len; + + /* + * Retrieve 'ranges' property. + */ + if (!OF_hasprop(node, "ranges")) { + printf("%s: %d\n", __FUNCTION__, 1); + return (EINVAL); + } + + len = OF_getproplen(node, "ranges"); + if (len > sizeof(ranges)) { + printf("%s: %d\n", __FUNCTION__, 2); + return (ENOMEM); + } + + if (OF_getprop(node, "ranges", ranges, sizeof(ranges)) <= 0) { + printf("%s: %d\n", __FUNCTION__, 3); + return (EINVAL); + } + + tuples = len / (sizeof(pcell_t) * 3); + + /* + * Initialize the ranges so that we don't have to worry about + * having them all defined in the FDT. In particular, it is + * perfectly fine not to want I/O space on PCI busses. + */ + bzero(io_space, sizeof(*io_space)); + bzero(mem_space, sizeof(*mem_space)); + + rangesptr = &ranges[0]; + for (i = 0; i < tuples; i++) { + cell0 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + cell1 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + cell2 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + + if (cell0 == 2) { + pci_space = mem_space; + } else if (cell0 == 1) { + pci_space = io_space; + } else { + rv = ERANGE; + printf("%s: %d\n", __FUNCTION__, 4); + goto out; + } + + pci_space->base = cell1; + pci_space->len = cell2; + } + + rv = 0; +out: + return (rv); +} + +static int +mtk_pci_ranges(phandle_t node, struct mtk_pci_range *io_space, + struct mtk_pci_range *mem_space) +{ + int err; + + if ((err = mtk_pci_ranges_decode(node, io_space, mem_space)) != 0) { + return (err); + } + + mtk_pci_range_dump(io_space); + mtk_pci_range_dump(mem_space); + + return (0); +} + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt3662-pcie", MTK_SOC_RT3883 }, + { "ralink,rt3883-pcie", MTK_SOC_RT3883 }, + { "ralink,mt7620a-pcie", MTK_SOC_MT7620A }, + { "ralink,mt7621-pcie", MTK_SOC_MT7621 }, + { "ralink,mt7628-pcie", MTK_SOC_MT7628 }, + { "ralink,mt7688-pcie", MTK_SOC_MT7628 }, + { NULL, MTK_SOC_UNKNOWN } +}; + +static int +mtk_pci_probe(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + sc->socid = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + if (sc->socid == MTK_SOC_UNKNOWN) + return (ENXIO); + + device_set_desc(dev, "MTK PCIe Controller"); + + return (0); +} + +static int +mtk_pci_attach(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + struct mtk_pci_range io_space, mem_space; + phandle_t node; + intptr_t xref; + int i, rid; + + sc->sc_dev = dev; + mt_sc = sc; + sc->addr_mask = 0xffffffff; + + /* Request our memory */ + rid = 0; + sc->pci_res[0] = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->pci_res[0] == NULL) { + device_printf(dev, "could not allocate memory resource\n"); + return (ENXIO); + } + + /* See how many interrupts we need */ + if (sc->socid == MTK_SOC_MT7621) + sc->sc_num_irq = 3; + else { + sc->sc_num_irq = 1; + sc->pci_res[2] = sc->pci_res[3] = NULL; + sc->pci_intrhand[1] = sc->pci_intrhand[2] = NULL; + } + + /* Request our interrupts */ + for (i = 1; i <= sc->sc_num_irq ; i++) { + rid = i - 1; + sc->pci_res[i] = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, + RF_ACTIVE); + if (sc->pci_res[i] == NULL) { + device_printf(dev, "could not allocate interrupt " + "resource %d\n", rid); + goto cleanup_res; + } + } + + /* Parse our PCI 'ranges' property */ + node = ofw_bus_get_node(dev); + xref = OF_xref_from_node(node); + if (mtk_pci_ranges(node, &io_space, &mem_space)) { + device_printf(dev, "could not retrieve 'ranges' data\n"); + goto cleanup_res; + } + + /* Memory, I/O and IRQ resource limits */ + sc->sc_io_base = io_space.base; + sc->sc_io_size = io_space.len; + sc->sc_mem_base = mem_space.base; + sc->sc_mem_size = mem_space.len; + sc->sc_irq_start = MTK_PCIE0_IRQ; + sc->sc_irq_end = MTK_PCIE2_IRQ; + + /* Init resource managers for memory, I/O and IRQ */ + sc->sc_mem_rman.rm_type = RMAN_ARRAY; + sc->sc_mem_rman.rm_descr = "mtk pcie memory window"; + if (rman_init(&sc->sc_mem_rman) != 0 || + rman_manage_region(&sc->sc_mem_rman, sc->sc_mem_base, + sc->sc_mem_base + sc->sc_mem_size - 1) != 0) { + device_printf(dev, "failed to setup memory rman\n"); + goto cleanup_res; + } + + sc->sc_io_rman.rm_type = RMAN_ARRAY; + sc->sc_io_rman.rm_descr = "mtk pcie io window"; + if (rman_init(&sc->sc_io_rman) != 0 || + rman_manage_region(&sc->sc_io_rman, sc->sc_io_base, + sc->sc_io_base + sc->sc_io_size - 1) != 0) { + device_printf(dev, "failed to setup io rman\n"); + goto cleanup_res; + } + + sc->sc_irq_rman.rm_type = RMAN_ARRAY; + sc->sc_irq_rman.rm_descr = "mtk pcie irqs"; + if (rman_init(&sc->sc_irq_rman) != 0 || + rman_manage_region(&sc->sc_irq_rman, sc->sc_irq_start, + sc->sc_irq_end) != 0) { + device_printf(dev, "failed to setup irq rman\n"); + goto cleanup_res; + } + + /* Do SoC-specific PCIe initialization */ + if (mtk_pcie_phy_init(dev)) { + device_printf(dev, "pcie phy init failed\n"); + goto cleanup_rman; + } + + /* Register ourselves as an interrupt controller */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup_rman; + } + + /* Set up our interrupt handler */ + for (i = 1; i <= sc->sc_num_irq; i++) { + sc->pci_intrhand[i - 1] = NULL; + if (bus_setup_intr(dev, sc->pci_res[i], INTR_TYPE_MISC, + mtk_pci_intr, NULL, sc, &sc->pci_intrhand[i - 1])) { + device_printf(dev, "could not setup intr handler %d\n", + i); + goto cleanup; + } + } + + /* Do generic PCIe initialization and resource allocation */ + mtk_pcib_init(dev, 0, PCI_SLOTMAX); + + /* Attach our PCI child so bus enumeration can start */ + if (device_add_child(dev, "pci", -1) == NULL) { + device_printf(dev, "could not attach pci bus\n"); + goto cleanup; + } + + /* And finally, attach ourselves to the bus */ + if (bus_generic_attach(dev)) { + device_printf(dev, "could not attach to bus\n"); + goto cleanup; + } + + return (0); + +cleanup: +#ifdef notyet + intr_pic_unregister(dev, xref); +#endif + for (i = 1; i <= sc->sc_num_irq; i++) { + if (sc->pci_intrhand[i - 1] != NULL) + bus_teardown_intr(dev, sc->pci_res[i], + sc->pci_intrhand[i - 1]); + } +cleanup_rman: + mtk_pcie_phy_stop(dev); + rman_fini(&sc->sc_irq_rman); + rman_fini(&sc->sc_io_rman); + rman_fini(&sc->sc_mem_rman); +cleanup_res: + mt_sc = NULL; + if (sc->pci_res[0] != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->pci_res[0]); + if (sc->pci_res[1] != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 0, sc->pci_res[1]); + if (sc->pci_res[2] != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 1, sc->pci_res[2]); + if (sc->pci_res[3] != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 2, sc->pci_res[3]); + return (ENXIO); +} + +static int +mtk_pci_read_ivar(device_t dev, device_t child, int which, + uintptr_t *result) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + switch (which) { + case PCIB_IVAR_DOMAIN: + *result = device_get_unit(dev); + return (0); + case PCIB_IVAR_BUS: + *result = sc->sc_busno; + return (0); + } + + return (ENOENT); +} + +static int +mtk_pci_write_ivar(device_t dev, device_t child, int which, + uintptr_t result) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + switch (which) { + case PCIB_IVAR_BUS: + sc->sc_busno = result; + return (0); + } + + return (ENOENT); +} + +static struct resource * +mtk_pci_alloc_resource(device_t bus, device_t child, int type, int *rid, + rman_res_t start, rman_res_t end, rman_res_t count, u_int flags) +{ + struct mtk_pci_softc *sc = device_get_softc(bus); + struct resource *rv; + struct rman *rm; + + switch (type) { + case SYS_RES_IRQ: + rm = &sc->sc_irq_rman; + break; + case SYS_RES_IOPORT: + rm = &sc->sc_io_rman; + break; + case SYS_RES_MEMORY: + rm = &sc->sc_mem_rman; + break; + default: + return (NULL); + } + + rv = rman_reserve_resource(rm, start, end, count, flags, child); + + if (rv == NULL) + return (NULL); + + rman_set_rid(rv, *rid); + + if ((flags & RF_ACTIVE) && type != SYS_RES_IRQ) { + if (bus_activate_resource(child, type, *rid, rv)) { + rman_release_resource(rv); + return (NULL); + } + } + + return (rv); +} + +static inline int +mtk_idx_to_irq(int idx) +{ + + return ((idx == 0) ? MTK_PCIE0_IRQ : + (idx == 1) ? MTK_PCIE1_IRQ : + (idx == 2) ? MTK_PCIE2_IRQ : -1); +} + +static inline int +mtk_irq_to_idx(int irq) +{ + + return ((irq == MTK_PCIE0_IRQ) ? 0 : + (irq == MTK_PCIE1_IRQ) ? 1 : + (irq == MTK_PCIE2_IRQ) ? 2 : -1); +} + +static void +mtk_pci_mask_irq(void *source) +{ + MT_WRITE32(mt_sc, MTK_PCI_PCIENA, + MT_READ32(mt_sc, MTK_PCI_PCIENA) & ~(1<<((int)source))); +} + +static void +mtk_pci_unmask_irq(void *source) +{ + + MT_WRITE32(mt_sc, MTK_PCI_PCIENA, + MT_READ32(mt_sc, MTK_PCI_PCIENA) | (1<<((int)source))); +} + +static int +mtk_pci_setup_intr(device_t bus, device_t child, struct resource *ires, + int flags, driver_filter_t *filt, driver_intr_t *handler, + void *arg, void **cookiep) +{ + struct mtk_pci_softc *sc = device_get_softc(bus); + struct intr_event *event; + int irq, error, irqidx; + + irq = rman_get_start(ires); + + if (irq < sc->sc_irq_start || irq > sc->sc_irq_end) + return (EINVAL); + + irqidx = irq - sc->sc_irq_start; + + event = sc->sc_eventstab[irqidx]; + if (event == NULL) { + error = intr_event_create(&event, (void *)irq, 0, irq, + mtk_pci_mask_irq, mtk_pci_unmask_irq, NULL, NULL, + "pci intr%d:", irq); + + if (error == 0) { + sc->sc_eventstab[irqidx] = event; + } + else { + return (error); + } + } + + intr_event_add_handler(event, device_get_nameunit(child), filt, + handler, arg, intr_priority(flags), flags, cookiep); + + mtk_pci_unmask_irq((void*)irq); + + return (0); +} + +static int +mtk_pci_teardown_intr(device_t dev, device_t child, struct resource *ires, + void *cookie) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + int irq, result, irqidx; + + irq = rman_get_start(ires); + if (irq < sc->sc_irq_start || irq > sc->sc_irq_end) + return (EINVAL); + + irqidx = irq - sc->sc_irq_start; + if (sc->sc_eventstab[irqidx] == NULL) + panic("Trying to teardown unoccupied IRQ"); + + mtk_pci_mask_irq((void*)irq); + + result = intr_event_remove_handler(cookie); + if (!result) + sc->sc_eventstab[irqidx] = NULL; + + + return (result); +} + +static inline uint32_t +mtk_pci_make_addr(int bus, int slot, int func, int reg) +{ + uint32_t addr; + + addr = ((((reg & 0xf00) >> 8) << 24) | (bus << 16) | (slot << 11) | + (func << 8) | (reg & 0xfc) | (1 << 31)); + + return (addr); +} + +static int +mtk_pci_maxslots(device_t dev) +{ + + return (PCI_SLOTMAX); +} + +static inline int +mtk_pci_slot_has_link(device_t dev, int slot) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + return !!(sc->pcie_link_status & (1<<slot)); +} + +static uint32_t +mtk_pci_read_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, int bytes) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + uint32_t addr = 0, data = 0; + + /* Return ~0U if slot has no link */ + if (bus == 0 && mtk_pci_slot_has_link(dev, slot) == 0) { + return (~0U); + } + + mtx_lock_spin(&mtk_pci_mtx); + addr = mtk_pci_make_addr(bus, slot, func, (reg & ~3)) & sc->addr_mask; + MT_WRITE32(sc, MTK_PCI_CFGADDR, addr); + switch (bytes % 4) { + case 0: + data = MT_READ32(sc, MTK_PCI_CFGDATA); + break; + case 1: + data = MT_READ8(sc, MTK_PCI_CFGDATA + (reg & 0x3)); + break; + case 2: + data = MT_READ16(sc, MTK_PCI_CFGDATA + (reg & 0x3)); + break; + default: + panic("%s(): Wrong number of bytes (%d) requested!\n", + __FUNCTION__, bytes % 4); + } + mtx_unlock_spin(&mtk_pci_mtx); + + return (data); +} + +static void +mtk_pci_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, uint32_t val, int bytes) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + uint32_t addr = 0, data = val; + + /* Do not write if slot has no link */ + if (bus == 0 && mtk_pci_slot_has_link(dev, slot) == 0) + return; + + mtx_lock_spin(&mtk_pci_mtx); + addr = mtk_pci_make_addr(bus, slot, func, (reg & ~3)) & sc->addr_mask; + MT_WRITE32(sc, MTK_PCI_CFGADDR, addr); + switch (bytes % 4) { + case 0: + MT_WRITE32(sc, MTK_PCI_CFGDATA, data); + break; + case 1: + MT_WRITE8(sc, MTK_PCI_CFGDATA + (reg & 0x3), data); + break; + case 2: + MT_WRITE16(sc, MTK_PCI_CFGDATA + (reg & 0x3), data); + break; + default: + panic("%s(): Wrong number of bytes (%d) requested!\n", + __FUNCTION__, bytes % 4); + } + mtx_unlock_spin(&mtk_pci_mtx); +} + +#if 0 +/* We take care of interrupt routing in the allocator code below */ +static int +mtk_pci_route_interrupt(device_t pcib, device_t device, int pin) +{ + //struct mtk_pci_softc *sc = device_get_softc(pcib); + int bus, sl, dev; + + if (1) return PCI_INVALID_IRQ; + + bus = pci_get_bus(device); + sl = pci_get_slot(device); + dev = pci_get_device(device); + + printf("%s: for %d:%d:%d, int = %d\n", __FUNCTION__, bus, sl, dev, pin); + + if (bus != 0) + panic("Unexpected bus number %d\n", bus); + + /* PCIe only */ + switch (sl) { + case 0: return MTK_PCIE0_IRQ; + case 1: return MTK_PCIE0_IRQ + 1; + case 2: return MTK_PCIE0_IRQ + 2; + default: return (-1); + } + + return (-1); +} +#endif + +static device_method_t mtk_pci_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_pci_probe), + DEVMETHOD(device_attach, mtk_pci_attach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + /* Bus interface */ + DEVMETHOD(bus_read_ivar, mtk_pci_read_ivar), + DEVMETHOD(bus_write_ivar, mtk_pci_write_ivar), + DEVMETHOD(bus_alloc_resource, mtk_pci_alloc_resource), + DEVMETHOD(bus_release_resource, bus_generic_release_resource), + DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), + DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), + DEVMETHOD(bus_setup_intr, mtk_pci_setup_intr), + DEVMETHOD(bus_teardown_intr, mtk_pci_teardown_intr), + + /* pcib interface */ + DEVMETHOD(pcib_maxslots, mtk_pci_maxslots), + DEVMETHOD(pcib_read_config, mtk_pci_read_config), + DEVMETHOD(pcib_write_config, mtk_pci_write_config), +#if 0 + DEVMETHOD(pcib_route_interrupt, mtk_pci_route_interrupt), +#endif + + DEVMETHOD_END +}; + +static driver_t mtk_pci_driver = { + "pcib", + mtk_pci_methods, + sizeof(struct mtk_pci_softc), +}; + +static devclass_t mtk_pci_devclass; + +DRIVER_MODULE(mtk_pci, simplebus, mtk_pci_driver, mtk_pci_devclass, 0, 0); + +/* Resource allocation code */ +static inline uint32_t +pcib_bit_get(uint32_t *map, uint32_t bit) +{ + uint32_t n = bit / BITS_PER_UINT32; + + bit = bit % BITS_PER_UINT32; + return (map[n] & (1 << bit)); +} + +static inline void +pcib_bit_set(uint32_t *map, uint32_t bit) +{ + uint32_t n = bit / BITS_PER_UINT32; + + bit = bit % BITS_PER_UINT32; + map[n] |= (1 << bit); +} + +static inline uint32_t +pcib_map_check(uint32_t *map, uint32_t start, uint32_t bits) +{ + uint32_t i; + + for (i = start; i < start + bits; i++) + if (pcib_bit_get(map, i)) + return (0); + + return (1); +} + +static inline void +pcib_map_set(uint32_t *map, uint32_t start, uint32_t bits) +{ + uint32_t i; + + for (i = start; i < start + bits; i++) + pcib_bit_set(map, i); +} + +static bus_addr_t +pcib_alloc(device_t dev, uint32_t smask) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + uint32_t bits, bits_limit, i, *map, min_alloc, size; + bus_addr_t addr = 0; + bus_addr_t base; + + if (smask & 1) { + base = sc->sc_io_base; + min_alloc = PCI_MIN_IO_ALLOC; + bits_limit = sc->sc_io_size / min_alloc; + map = sc->sc_io_map; + smask &= ~0x3; + } else { + base = sc->sc_mem_base; + min_alloc = PCI_MIN_MEM_ALLOC; + bits_limit = sc->sc_mem_size / min_alloc; + map = sc->sc_mem_map; + smask &= ~0xF; + } + + size = ~smask + 1; + bits = size / min_alloc; + + for (i = 0; i + bits <= bits_limit; i+= bits) + if (pcib_map_check(map, i, bits)) { + pcib_map_set(map, i, bits); + addr = base + (i * min_alloc); + return (addr); + } + + return (addr); +} + +static int +mtk_pcib_init_bar(device_t dev, int bus, int slot, int func, int barno) +{ + uint32_t addr, bar; + int reg, width; + + reg = PCIR_BAR(barno); + + mtk_pci_write_config(dev, bus, slot, func, reg, ~0, 4); + bar = mtk_pci_read_config(dev, bus, slot, func, reg, 4); + if (bar == 0) + return (1); + + /* Calculate BAR size: 64 or 32 bit (in 32-bit units) */ + width = ((bar & 7) == 4) ? 2 : 1; + + addr = pcib_alloc(dev, bar); + if (!addr) + return (-1); + + if (bootverbose) + printf("PCI %u:%u:%u: reg %x: smask=%08x: addr=%08x\n", + bus, slot, func, reg, bar, addr); + + mtk_pci_write_config(dev, bus, slot, func, reg, addr, 4); + if (width == 2) + mtk_pci_write_config(dev, bus, slot, func, reg + 4, 0, 4); + + return (width); +} + +static int +mtk_pcib_init_all_bars(device_t dev, int bus, int slot, int func, + int hdrtype) +{ + int maxbar, bar, i; + + maxbar = (hdrtype & PCIM_HDRTYPE) ? 0 : 6; + bar = 0; + + while (bar < maxbar) { + i = mtk_pcib_init_bar(dev, bus, slot, func, bar); + bar += i; + if (i < 0) { + device_printf(dev, "PCI IO/Memory space exhausted\n"); + return (ENOMEM); + } + } + + return (0); +} + +static void +mtk_pcib_init_bridge(device_t dev, int bus, int slot, int func) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + bus_addr_t io_base, mem_base; + uint32_t io_limit, mem_limit; + int secbus; + + if (bus == 0 && !mtk_pci_slot_has_link(dev, slot)) { + sc->sc_cur_secbus++; + device_printf(dev, "Skip bus %d due to no link\n", + sc->sc_cur_secbus); + return; + } + + io_base = sc->sc_io_base; + io_limit = io_base + sc->sc_io_size - 1; + mem_base = sc->sc_mem_base; + mem_limit = mem_base + sc->sc_mem_size - 1; + + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOBASEL_1, + io_base >> 8, 1); + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOBASEH_1, + io_base >> 16, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOLIMITL_1, + io_limit >> 8, 1); + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOLIMITH_1, + io_limit >> 16, 2); + + mtk_pci_write_config(dev, bus, slot, func, PCIR_MEMBASE_1, + mem_base >> 16, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_MEMLIMIT_1, + mem_limit >> 16, 2); + + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMBASEL_1, + 0x10, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMBASEH_1, + 0x0, 4); + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMLIMITL_1, + 0xF, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMLIMITH_1, + 0x0, 4); + + mtk_pci_write_config(dev, bus, slot, func, PCIR_INTLINE, 0xff, 1); + + secbus = mtk_pci_read_config(dev, bus, slot, func, PCIR_SECBUS_1, 1); + + if (secbus == 0) { + sc->sc_cur_secbus++; + mtk_pci_write_config(dev, bus, slot, func, PCIR_SECBUS_1, + sc->sc_cur_secbus, 1); + mtk_pci_write_config(dev, bus, slot, func, PCIR_SUBBUS_1, + sc->sc_cur_secbus, 1); + secbus = sc->sc_cur_secbus; + } + + mtk_pcib_init(dev, secbus, PCI_SLOTMAX); +} + +static uint8_t +mtk_pci_get_int(device_t dev, int bus, int slot) +{ + + if (slot != 0) + return (PCI_INVALID_IRQ); + + switch (bus) { + case 1: + return (MTK_PCIE0_IRQ); + case 2: + return (MTK_PCIE1_IRQ); + case 3: + return (MTK_PCIE2_IRQ); + default: + device_printf(dev, "Bus %d out of range\n", slot); + return (PCI_INVALID_IRQ); + } + + /* Unreachable */ + return (PCI_INVALID_IRQ); +} + +static int +mtk_pcib_init(device_t dev, int bus, int maxslot) +{ + int slot, func, maxfunc, error; + uint8_t hdrtype, command, class, subclass; + + for (slot = 0; slot <= maxslot; slot++) { + maxfunc = 0; + for (func = 0; func <= maxfunc; func++) { + hdrtype = mtk_pci_read_config(dev, bus, slot, func, + PCIR_HDRTYPE, 1); + + if ((hdrtype & PCIM_HDRTYPE) > PCI_MAXHDRTYPE) + continue; + + if (func == 0 && (hdrtype & PCIM_MFDEV)) + maxfunc = PCI_FUNCMAX; + + command = mtk_pci_read_config(dev, bus, slot, func, + PCIR_COMMAND, 1); + command &= ~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN); + mtk_pci_write_config(dev, bus, slot, func, + PCIR_COMMAND, command, 1); + + error = mtk_pcib_init_all_bars(dev, bus, slot, func, + hdrtype); + + if (error) + return (error); + + command |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN | + PCIM_CMD_PORTEN; + mtk_pci_write_config(dev, bus, slot, func, + PCIR_COMMAND, command, 1); + + mtk_pci_write_config(dev, bus, slot, func, + PCIR_CACHELNSZ, 16, 1); + + class = mtk_pci_read_config(dev, bus, slot, func, + PCIR_CLASS, 1); + subclass = mtk_pci_read_config(dev, bus, slot, func, + PCIR_SUBCLASS, 1); + + if (class != PCIC_BRIDGE || + subclass != PCIS_BRIDGE_PCI) { + uint8_t val; + + val = mtk_pci_get_int(dev, bus, slot); + + mtk_pci_write_config(dev, bus, slot, func, + PCIR_INTLINE, val, 1); /* XXX */ + continue; + } + + mtk_pcib_init_bridge(dev, bus, slot, func); + } + } + + return (0); +} + +/* Our interrupt handler */ +static int +mtk_pci_intr(void *arg) +{ + struct mtk_pci_softc *sc = arg; + struct intr_event *event; + uint32_t reg, irq, irqidx; + + reg = MT_READ32(sc, MTK_PCI_PCIINT); + + for (irq = sc->sc_irq_start; irq <= sc->sc_irq_end; irq++) { + if (reg & (1u<<irq)) { + irqidx = irq - sc->sc_irq_start; + event = sc->sc_eventstab[irqidx]; + if (!event || TAILQ_EMPTY(&event->ie_handlers)) { + if (irq != 0) + printf("Stray PCI IRQ %d\n", irq); + continue; + } + + intr_event_handle(event, NULL); + } + } + + return (FILTER_HANDLED); +} + +/* PCIe SoC-specific initialization */ +static int +mtk_pcie_phy_init(device_t dev) +{ + struct mtk_pci_softc *sc; + + /* Get our softc */ + sc = device_get_softc(dev); + + /* We don't know how many slots we have yet */ + sc->num_slots = 0; + + /* Handle SoC specific PCIe init */ + switch (sc->socid) { + case MTK_SOC_MT7628: /* Fallthrough */ + case MTK_SOC_MT7688: + if (mtk_pcie_phy_mt7628_init(dev)) + return (ENXIO); + break; + case MTK_SOC_MT7621: + if (mtk_pcie_phy_mt7621_init(dev)) + return (ENXIO); + break; + case MTK_SOC_MT7620A: + if (mtk_pcie_phy_mt7620_init(dev)) + return (ENXIO); + break; + case MTK_SOC_RT3662: /* Fallthrough */ + case MTK_SOC_RT3883: + if (mtk_pcie_phy_rt3883_init(dev)) + return (ENXIO); + break; + default: + device_printf(dev, "unsupported device %x\n", sc->socid); + return (ENXIO); + } + + /* + * If we were successful so far go and set up the PCIe slots, so we + * may allocate mem/io/irq resources and enumerate busses later. + */ + mtk_pcie_phy_setup_slots(dev); + + return (0); +} + +static int +mtk_pcie_phy_start(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + if (sc->socid == MTK_SOC_MT7621 && + (mtk_sysctl_get(SYSCTL_REVID) & SYSCTL_REVID_MASK) != + SYSCTL_MT7621_REV_E) { + if (fdt_reset_assert_all(dev)) + return (ENXIO); + } else { + if (fdt_reset_deassert_all(dev)) + return (ENXIO); + } + + if (fdt_clock_enable_all(dev)) + return (ENXIO); + + return (0); +} + +static int +mtk_pcie_phy_stop(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + if (sc->socid == MTK_SOC_MT7621 && + (mtk_sysctl_get(SYSCTL_REVID) & SYSCTL_REVID_MASK) != + SYSCTL_MT7621_REV_E) { + if (fdt_reset_deassert_all(dev)) + return (ENXIO); + } else { + if (fdt_reset_assert_all(dev)) + return (ENXIO); + } + + if (fdt_clock_disable_all(dev)) + return (ENXIO); + + return (0); +} + +#define mtk_pcie_phy_set(_sc, _reg, _s, _n, _v) \ + MT_WRITE32((_sc), (_reg), ((MT_READ32((_sc), (_reg)) & \ + (~(((1ull << (_n)) - 1) << (_s)))) | ((_v) << (_s)))) + +static void +mtk_pcie_phy_mt7621_bypass_pipe_rst(struct mtk_pci_softc *sc, uint32_t off) +{ + + mtk_pcie_phy_set(sc, off + 0x002c, 12, 1, 1); + mtk_pcie_phy_set(sc, off + 0x002c, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x012c, 12, 1, 1); + mtk_pcie_phy_set(sc, off + 0x012c, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x102c, 12, 1, 1); + mtk_pcie_phy_set(sc, off + 0x102c, 4, 1, 1); +} + +static void +mtk_pcie_phy_mt7621_setup_ssc(struct mtk_pci_softc *sc, uint32_t off) +{ + uint32_t xtal_sel; + + xtal_sel = mtk_sysctl_get(SYSCTL_SYSCFG) >> 6; + xtal_sel &= 0x7; + + mtk_pcie_phy_set(sc, off + 0x400, 8, 1, 1); + mtk_pcie_phy_set(sc, off + 0x400, 9, 2, 0); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x100, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 0); + mtk_pcie_phy_set(sc, off + 0x100, 5, 1, 0); + + if (xtal_sel <= 5 && xtal_sel >= 3) { + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 1); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x1a); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x1a); + } else { + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 0); + if (xtal_sel >= 6) { + mtk_pcie_phy_set(sc, off + 0x4bc, 4, 2, 0x01); + mtk_pcie_phy_set(sc, off + 0x49c, 0, 31, 0x18000000); + mtk_pcie_phy_set(sc, off + 0x4a4, 0, 16, 0x18d); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x4a); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x4a); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x11); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x11); + } else { + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x1a); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x1a); + } + } + + mtk_pcie_phy_set(sc, off + 0x4a0, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x490, 22, 2, 2); + mtk_pcie_phy_set(sc, off + 0x490, 18, 4, 6); + mtk_pcie_phy_set(sc, off + 0x490, 12, 4, 2); + mtk_pcie_phy_set(sc, off + 0x490, 8, 4, 1); + mtk_pcie_phy_set(sc, off + 0x4ac, 16, 3, 0); + mtk_pcie_phy_set(sc, off + 0x490, 1, 3, 2); + + if (xtal_sel <= 5 && xtal_sel >= 3) { + mtk_pcie_phy_set(sc, off + 0x414, 6, 2, 1); + mtk_pcie_phy_set(sc, off + 0x414, 5, 1, 1); + } + + mtk_pcie_phy_set(sc, off + 0x414, 28, 2, 1); + mtk_pcie_phy_set(sc, off + 0x040, 17, 4, 7); + mtk_pcie_phy_set(sc, off + 0x040, 16, 1, 1); + mtk_pcie_phy_set(sc, off + 0x140, 17, 4, 7); + mtk_pcie_phy_set(sc, off + 0x140, 16, 1, 1); + + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x100, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 0); + mtk_pcie_phy_set(sc, off + 0x100, 4, 1, 0); +} + +/* XXX: ugly, we need to fix this at some point */ +#define MT7621_GPIO_CTRL0 *((volatile uint32_t *)0xbe000600) +#define MT7621_GPIO_DATA0 *((volatile uint32_t *)0xbe000620) + +#define mtk_gpio_clr_set(_reg, _clr, _set) \ + do { \ + (_reg) = ((_reg) & (_clr)) | (_set); \ + } while (0) + +static int +mtk_pcie_phy_mt7621_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* First off, stop the PHY */ + if (mtk_pcie_phy_stop(dev)) + return (ENXIO); + + /* PCIe resets are GPIO pins */ + mtk_sysctl_clr_set(SYSCTL_GPIOMODE, MT7621_PERST_GPIO_MODE | + MT7621_UARTL3_GPIO_MODE, MT7621_PERST_GPIO | MT7621_UARTL3_GPIO); + + /* Set GPIO pins as outputs */ + mtk_gpio_clr_set(MT7621_GPIO_CTRL0, 0, MT7621_PCIE_RST); + + /* Assert resets to PCIe devices */ + mtk_gpio_clr_set(MT7621_GPIO_DATA0, MT7621_PCIE_RST, 0); + + /* Give everything a chance to sink in */ + DELAY(100000); + + /* Now start the PHY again */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Wait for things to settle */ + DELAY(100000); + + /* Only apply below to REV-E hardware */ + if ((mtk_sysctl_get(SYSCTL_REVID) & SYSCTL_REVID_MASK) == + SYSCTL_MT7621_REV_E) + mtk_pcie_phy_mt7621_bypass_pipe_rst(sc, 0x9000); + + /* Setup PCIe ports 0 and 1 */ + mtk_pcie_phy_mt7621_setup_ssc(sc, 0x9000); + /* Setup PCIe port 2 */ + mtk_pcie_phy_mt7621_setup_ssc(sc, 0xa000); + + /* Deassert resets to PCIe devices */ + mtk_gpio_clr_set(MT7621_GPIO_DATA0, 0, MT7621_PCIE_RST); + + /* Set number of slots supported */ + sc->num_slots = 3; + + /* Give it a chance to sink in */ + DELAY(100000); + + return (0); +} + +static void +mtk_pcie_phy_mt7628_setup(struct mtk_pci_softc *sc, uint32_t off) +{ + uint32_t xtal_sel; + + xtal_sel = mtk_sysctl_get(SYSCTL_SYSCFG) >> 6; + xtal_sel &= 0x1; + + mtk_pcie_phy_set(sc, off + 0x400, 8, 1, 1); + mtk_pcie_phy_set(sc, off + 0x400, 9, 2, 0); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 0); + mtk_pcie_phy_set(sc, off + 0x4ac, 16, 3, 3); + + if (xtal_sel == 1) { + mtk_pcie_phy_set(sc, off + 0x4bc, 24, 8, 0x7d); + mtk_pcie_phy_set(sc, off + 0x490, 12, 4, 0x08); + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 0x01); + mtk_pcie_phy_set(sc, off + 0x4c0, 0, 32, 0x1f400000); + mtk_pcie_phy_set(sc, off + 0x4a4, 0, 16, 0x013d); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 16, 0x74); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 16, 0x74); + } else { + mtk_pcie_phy_set(sc, off + 0x4bc, 24, 8, 0x64); + mtk_pcie_phy_set(sc, off + 0x490, 12, 4, 0x0a); + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 0x00); + mtk_pcie_phy_set(sc, off + 0x4c0, 0, 32, 0x19000000); + mtk_pcie_phy_set(sc, off + 0x4a4, 0, 16, 0x018d); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 16, 0x4a); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 16, 0x4a); + } + + mtk_pcie_phy_set(sc, off + 0x498, 0, 8, 5); + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 0); +} + +static int +mtk_pcie_phy_mt7628_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* Set PCIe reset to normal mode */ + mtk_sysctl_clr_set(SYSCTL_GPIOMODE, MT7628_PERST_GPIO_MODE, + MT7628_PERST); + + /* Start the PHY */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Give it a chance to sink in */ + DELAY(100000); + + /* Setup the PHY */ + mtk_pcie_phy_mt7628_setup(sc, 0x9000); + + /* Deassert PCIe device reset */ + MT_CLR_SET32(sc, MTK_PCI_PCICFG, MTK_PCI_RESET, 0); + + /* Set number of slots supported */ + sc->num_slots = 1; + + return (0); +} + +static int +mtk_pcie_phy_mt7620_wait_busy(struct mtk_pci_softc *sc) +{ + uint32_t reg_value, retry; + + reg_value = retry = 0; + + while (retry++ < MT7620_MAX_RETRIES) { + reg_value = MT_READ32(sc, MT7620_PCIE_PHY_CFG); + if (reg_value & PHY_BUSY) + DELAY(100000); + else + break; + } + + if (retry >= MT7620_MAX_RETRIES) + return (ENXIO); + + return (0); +} + +static int +mtk_pcie_phy_mt7620_set(struct mtk_pci_softc *sc, uint32_t reg, + uint32_t val) +{ + uint32_t reg_val; + + if (mtk_pcie_phy_mt7620_wait_busy(sc)) + return (ENXIO); + + reg_val = PHY_MODE_WRITE | ((reg & 0xff) << PHY_ADDR_OFFSET) | + (val & 0xff); + MT_WRITE32(sc, MT7620_PCIE_PHY_CFG, reg_val); + DELAY(1000); + + if (mtk_pcie_phy_mt7620_wait_busy(sc)) + return (ENXIO); + + return (0); +} + +static int +mtk_pcie_phy_mt7620_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* + * The below sets the PCIe PHY to bypass the PCIe DLL and enables + * "elastic buffer control", whatever that may be... + */ + if (mtk_pcie_phy_mt7620_set(sc, 0x00, 0x80) || + mtk_pcie_phy_mt7620_set(sc, 0x01, 0x04) || + mtk_pcie_phy_mt7620_set(sc, 0x68, 0x84)) + return (ENXIO); + + /* Stop PCIe */ + if (mtk_pcie_phy_stop(dev)) + return (ENXIO); + + /* Restore PPLL to a sane state before going on */ + mtk_sysctl_clr_set(MT7620_PPLL_DRV, LC_CKDRVPD, PDRV_SW_SET); + + /* No PCIe on the MT7620N */ + if (!(mtk_sysctl_get(SYSCTL_REVID) & MT7620_PKG_BGA)) { + device_printf(dev, "PCIe disabled for MT7620N\n"); + mtk_sysctl_clr_set(MT7620_PPLL_CFG0, 0, PPLL_SW_SET); + mtk_sysctl_clr_set(MT7620_PPLL_CFG1, 0, PPLL_PD); + return (ENXIO); + } + + /* PCIe device reset pin is in normal mode */ + mtk_sysctl_clr_set(SYSCTL_GPIOMODE, MT7620_PERST_GPIO_MODE, + MT7620_PERST); + + /* Enable PCIe now */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Give it a chance to sink in */ + DELAY(100000); + + /* If PLL is not locked - bail */ + if (!(mtk_sysctl_get(MT7620_PPLL_CFG1) & PPLL_LOCKED)) { + device_printf(dev, "no PPLL not lock\n"); + mtk_pcie_phy_stop(dev); + return (ENXIO); + } + + /* Configure PCIe PLL */ + mtk_sysctl_clr_set(MT7620_PPLL_DRV, LC_CKDRVOHZ | LC_CKDRVHZ, + LC_CKDRVPD | PDRV_SW_SET); + + /* and give it a chance to settle */ + DELAY(100000); + + /* Deassert PCIe device reset */ + MT_CLR_SET32(sc, MTK_PCI_PCICFG, MTK_PCI_RESET, 0); + + /* MT7620 supports one PCIe slot */ + sc->num_slots = 1; + + return (0); +} + +static int +mtk_pcie_phy_rt3883_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* Enable PCI host mode and PCIe RC mode */ + mtk_sysctl_clr_set(SYSCTL_SYSCFG1, 0, RT3883_PCI_HOST_MODE | + RT3883_PCIE_RC_MODE); + + /* Enable PCIe PHY */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Disable PCI, we only support PCIe for now */ + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 0, RT3883_PCI_RST); + mtk_sysctl_clr_set(SYSCTL_CLKCFG1, RT3883_PCI_CLK, 0); + + /* Give things a chance to sink in */ + DELAY(500000); + + /* Set PCIe port number to 0 and lift PCIe reset */ + MT_WRITE32(sc, MTK_PCI_PCICFG, 0); + + /* Configure PCI Arbiter */ + MT_WRITE32(sc, MTK_PCI_ARBCTL, 0x79); + + /* We have a single PCIe slot */ + sc->num_slots = 1; + + return (0); +} + +static void +mtk_pcie_phy_setup_slots(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + uint32_t bar0_val, val; + int i; + + /* Disable all PCIe interrupts */ + MT_WRITE32(sc, MTK_PCI_PCIENA, 0); + + /* Default bar0_val is 64M, enabled */ + bar0_val = 0x03FF0001; + + /* But we override it to 2G, enabled for some SoCs */ + if (sc->socid == MTK_SOC_MT7620A || sc->socid == MTK_SOC_MT7628 || + sc->socid == MTK_SOC_MT7688 || sc->socid == MTK_SOC_MT7621) + bar0_val = 0x7FFF0001; + + /* We still don't know which slots have linked up */ + sc->pcie_link_status = 0; + + /* XXX: I am not sure if this delay is really necessary */ + DELAY(500000); + + /* + * See which slots have links and mark them. + * Set up all slots' BARs and make them look like PCIe bridges. + */ + for (i = 0; i < sc->num_slots; i++) { + /* If slot has link - mark it */ + if (MT_READ32(sc, MTK_PCIE_STATUS(i)) & 1) + sc->pcie_link_status |= (1<<i); + + /* Generic slot configuration follows */ + + /* We enable BAR0 */ + MT_WRITE32(sc, MTK_PCIE_BAR0SETUP(i), bar0_val); + /* and disable BAR1 */ + MT_WRITE32(sc, MTK_PCIE_BAR1SETUP(i), 0); + /* Internal memory base has no offset */ + MT_WRITE32(sc, MTK_PCIE_IMBASEBAR0(i), 0); + /* We're a PCIe bridge */ + MT_WRITE32(sc, MTK_PCIE_CLASS(i), 0x06040001); + + val = mtk_pci_read_config(dev, 0, i, 0, 0x4, 4); + mtk_pci_write_config(dev, 0, i, 0, 0x4, val | 0x4, 4); + val = mtk_pci_read_config(dev, 0, i, 0, 0x70c, 4); + val &= ~(0xff << 8); + val |= (0x50 << 8); + mtk_pci_write_config(dev, 0, i, 0, 0x4, val, 4); + } +} diff --git a/sys/mips/mediatek/mtk_pcie.h b/sys/mips/mediatek/mtk_pcie.h new file mode 100644 index 0000000..f4aa1ed --- /dev/null +++ b/sys/mips/mediatek/mtk_pcie.h @@ -0,0 +1,164 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ +#ifndef __MTK_PCIE_H__ +#define __MTK_PCIE_H__ + +#define PCI_MIN_IO_ALLOC 4 +#define PCI_MIN_MEM_ALLOC 16 +#define BITS_PER_UINT32 (NBBY * sizeof(uint32_t)) + +#define MTK_PCI_NIRQS 3 +#define MTK_PCI_BASESLOT 0 + +struct mtk_pci_softc { + device_t sc_dev; + + struct resource * pci_res[MTK_PCI_NIRQS + 1]; + void * pci_intrhand[MTK_PCI_NIRQS]; + + int sc_busno; + int sc_cur_secbus; + + struct rman sc_mem_rman; + struct rman sc_io_rman; + struct rman sc_irq_rman; + + uint32_t sc_num_irq; + uint32_t sc_irq_start; + uint32_t sc_irq_end; + + bus_addr_t sc_mem_base; + bus_addr_t sc_mem_size; + uint32_t sc_mem_map[(256*1024*1024) / + (PCI_MIN_MEM_ALLOC * BITS_PER_UINT32)]; + + bus_addr_t sc_io_base; + bus_addr_t sc_io_size; + uint32_t sc_io_map[(16*1024*1024) / + (PCI_MIN_IO_ALLOC * BITS_PER_UINT32)]; + + struct intr_event *sc_eventstab[MTK_PCI_NIRQS]; + + uint32_t pcie_link_status; + uint32_t num_slots; + uint32_t socid; + uint32_t addr_mask; +}; + +#define MTK_PCI_PCICFG 0x0000 +#define MTK_PCI_RESET (1<<1) +#define MTK_PCI_PCIINT 0x0008 +#define MTK_PCI_PCIENA 0x000C +#define MTK_PCI_CFGADDR 0x0020 +#define MTK_PCI_CFGDATA 0x0024 +#define MTK_PCI_MEMBASE 0x0028 +#define MTK_PCI_IOBASE 0x002C +#define MTK_PCI_ARBCTL 0x0080 +#define MTK_PCI_PHY0_CFG 0x0090 + +#define MTK_PCI_PCIE0_BAR0SETUP 0x2010 +#define MTK_PCI_PCIE0_BAR1SETUP 0x2014 +#define MTK_PCI_PCIE0_IMBASEBAR0 0x2018 +#define MTK_PCI_PCIE0_ID 0x2030 +#define MTK_PCI_PCIE0_CLASS 0x2034 +#define MTK_PCI_PCIE0_SUBID 0x2038 +#define MTK_PCI_PCIE0_STATUS 0x2050 +#define MTK_PCI_PCIE0_DLECR 0x2060 +#define MTK_PCI_PCIE0_ECRC 0x2064 + +#define MTK_PCIE_BAR0SETUP(_s) (MTK_PCI_PCIE0_BAR0SETUP + (_s)*0x1000) +#define MTK_PCIE_BAR1SETUP(_s) (MTK_PCI_PCIE0_BAR1SETUP + (_s)*0x1000) +#define MTK_PCIE_IMBASEBAR0(_s) (MTK_PCI_PCIE0_IMBASEBAR0 + (_s)*0x1000) +#define MTK_PCIE_ID(_s) (MTK_PCI_PCIE0_ID + (_s)*0x1000) +#define MTK_PCIE_CLASS(_s) (MTK_PCI_PCIE0_CLASS + (_s)*0x1000) +#define MTK_PCIE_SUBID(_s) (MTK_PCI_PCIE0_SUBID + (_s)*0x1000) +#define MTK_PCIE_STATUS(_s) (MTK_PCI_PCIE0_STATUS + (_s)*0x1000) + +#define MTK_PCIE0_IRQ 20 +#define MTK_PCIE1_IRQ 21 +#define MTK_PCIE2_IRQ 22 + +#define MTK_PCI_INTR_PIN 2 + +/* Chip specific defines */ +#define MT7620_MAX_RETRIES 10 +#define MT7620_PCIE_PHY_CFG 0x90 +#define PHY_BUSY (1<<31) +#define PHY_MODE_WRITE (1<<23) +#define PHY_ADDR_OFFSET 8 +#define MT7620_PPLL_CFG0 0x98 +#define PPLL_SW_SET (1<<31) +#define MT7620_PPLL_CFG1 0x9c +#define PPLL_PD (1<<26) +#define PPLL_LOCKED (1<<23) +#define MT7620_PPLL_DRV 0xa0 +#define PDRV_SW_SET (1<<31) +#define LC_CKDRVPD (1<<19) +#define LC_CKDRVOHZ (1<<18) +#define LC_CKDRVHZ (1<<17) +#define MT7620_PERST_GPIO_MODE (3<<16) +#define MT7620_PERST (0<<16) +#define MT7620_GPIO (2<<16) +#define MT7620_PKG_BGA (1<<16) + +#define MT7628_PERST_GPIO_MODE (1<<16) +#define MT7628_PERST (0<<16) + +#define MT7621_PERST_GPIO_MODE (3<<10) +#define MT7621_PERST_GPIO (1<<10) +#define MT7621_UARTL3_GPIO_MODE (3<<3) +#define MT7621_UARTL3_GPIO (1<<3) +#define MT7621_PCIE0_RST (1<<19) +#define MT7621_PCIE1_RST (1<<8) +#define MT7621_PCIE2_RST (1<<7) +#define MT7621_PCIE_RST (MT7621_PCIE0_RST | MT7621_PCIE1_RST | \ + MT7621_PCIE2_RST) + +#define RT3883_PCI_RST (1<<24) +#define RT3883_PCI_CLK (1<<19) +#define RT3883_PCI_HOST_MODE (1<<7) +#define RT3883_PCIE_RC_MODE (1<<8) +/* End of chip specific defines */ + +#define MT_WRITE32(sc, off, val) \ + bus_write_4((sc)->pci_res[0], (off), (val)) +#define MT_WRITE16(sc, off, val) \ + bus_write_2((sc)->pci_res[0], (off), (val)) +#define MT_WRITE8(sc, off, val) \ + bus_write_1((sc)->pci_res[0], (off), (val)) +#define MT_READ32(sc, off) \ + bus_read_4((sc)->pci_res[0], (off)) +#define MT_READ16(sc, off) \ + bus_read_2((sc)->pci_res[0], (off)) +#define MT_READ8(sc, off) \ + bus_read_1((sc)->pci_res[0], (off)) + +#define MT_CLR_SET32(sc, off, clr, set) \ + MT_WRITE32((sc), (off), ((MT_READ32((sc), (off)) & ~(clr)) | (off))) + +#endif /* __MTK_PCIE_H__ */ diff --git a/sys/mips/mediatek/mtk_pinctrl.c b/sys/mips/mediatek/mtk_pinctrl.c new file mode 100644 index 0000000..489be5b --- /dev/null +++ b/sys/mips/mediatek/mtk_pinctrl.c @@ -0,0 +1,114 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <dev/fdt/fdt_pinctrl.h> +#include <mips/mediatek/mtk_sysctl.h> + +#include "fdt_pinctrl_if.h" + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-pinctrl", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +static int +mtk_pinctrl_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Pin Controller"); + + return (0); +} + +static int +mtk_pinctrl_attach(device_t dev) +{ + + if (device_get_unit(dev) != 0) { + device_printf(dev, "Only one pin control allowed\n"); + return (ENXIO); + } + + fdt_pinctrl_register(dev, "pinctrl-single,bits"); + fdt_pinctrl_configure_tree(dev); + + if (bootverbose) + device_printf(dev, "GPIO mode: 0x%08x\n", + mtk_sysctl_get(SYSCTL_GPIOMODE)); + + return (0); +} + +static int +mtk_pinctrl_configure(device_t dev, phandle_t cfgxref) +{ + + return (EINVAL); +} + +static device_method_t mtk_pinctrl_methods[] = { + DEVMETHOD(device_probe, mtk_pinctrl_probe), + DEVMETHOD(device_attach, mtk_pinctrl_attach), + + /* fdt_pinctrl interface */ + DEVMETHOD(fdt_pinctrl_configure, mtk_pinctrl_configure), + + DEVMETHOD_END +}; + +static driver_t mtk_pinctrl_driver = { + "pinctrl", + mtk_pinctrl_methods, + 0, +}; +static devclass_t mtk_pinctrl_devclass; + +EARLY_DRIVER_MODULE(mtk_pinctrl, simplebus, mtk_pinctrl_driver, + mtk_pinctrl_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); + +MODULE_DEPEND(mtk_pinctrl, mtk_sysctl, 1, 1, 1); diff --git a/sys/mips/mediatek/mtk_reset.c b/sys/mips/mediatek/mtk_reset.c new file mode 100644 index 0000000..31d56e4 --- /dev/null +++ b/sys/mips/mediatek/mtk_reset.c @@ -0,0 +1,139 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <mips/mediatek/fdt_reset.h> +#include <mips/mediatek/mtk_sysctl.h> + +#include "fdt_reset_if.h" + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-reset", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +static int +mtk_reset_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Reset Controller"); + + return (0); +} + +static int +mtk_reset_attach(device_t dev) +{ + + if (device_get_unit(dev) != 0) { + device_printf(dev, "Only one reset control allowed\n"); + return (ENXIO); + } + + fdt_reset_register_provider(dev); + + return (0); +} + +#define RESET_ASSERT 1 +#define RESET_DEASSERT 0 + +static int +mtk_reset_set(device_t dev, int index, int value) +{ + uint32_t mask; + + /* index 0 is SoC reset, indices 1 - 31 are valid peripheral resets */ + if (index < 1 || index > 31) + return (EINVAL); + + mask = (1u << index); + + if (value == RESET_ASSERT) + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 0, mask); + else + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, mask, 0); + + return (0); +} + +static int +mtk_reset_assert(device_t dev, int index) +{ + + return mtk_reset_set(dev, index, RESET_ASSERT); +} + +static int +mtk_reset_deassert(device_t dev, int index) +{ + + return mtk_reset_set(dev, index, RESET_DEASSERT); +} + +static device_method_t mtk_reset_methods[] = { + DEVMETHOD(device_probe, mtk_reset_probe), + DEVMETHOD(device_attach, mtk_reset_attach), + + /* fdt_reset interface */ + DEVMETHOD(fdt_reset_assert, mtk_reset_assert), + DEVMETHOD(fdt_reset_deassert, mtk_reset_deassert), + + DEVMETHOD_END +}; + +static driver_t mtk_reset_driver = { + "rstctrl", + mtk_reset_methods, + 0, +}; +static devclass_t mtk_reset_devclass; + +EARLY_DRIVER_MODULE(mtk_reset, simplebus, mtk_reset_driver, mtk_reset_devclass, + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); + +MODULE_DEPEND(mtk_reset, mtk_sysctl, 1, 1, 1); diff --git a/sys/mips/mediatek/mtk_soc.c b/sys/mips/mediatek/mtk_soc.c new file mode 100644 index 0000000..b331467 --- /dev/null +++ b/sys/mips/mediatek/mtk_soc.c @@ -0,0 +1,438 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/rman.h> + +#include <machine/fdt.h> + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/fdt/fdt_clock.h> + +#include <mips/mediatek/fdt_reset.h> +#include <mips/mediatek/mtk_sysctl.h> +#include <mips/mediatek/mtk_soc.h> + +static uint32_t mtk_soc_socid = MTK_SOC_UNKNOWN; +static uint32_t mtk_soc_uartclk = 0; +static uint32_t mtk_soc_cpuclk = MTK_CPU_CLK_880MHZ; +static uint32_t mtk_soc_timerclk = MTK_CPU_CLK_880MHZ / 2; + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt3050-soc", MTK_SOC_RT3050 }, + { "ralink,rt3052-soc", MTK_SOC_RT3052 }, + { "ralink,rt3350-soc", MTK_SOC_RT3350 }, + { "ralink,rt3352-soc", MTK_SOC_RT3352 }, + { "ralink,rt3662-soc", MTK_SOC_RT3662 }, + { "ralink,rt3883-soc", MTK_SOC_RT3883 }, + { "ralink,rt5350-soc", MTK_SOC_RT5350 }, + { "ralink,mtk7620a-soc", MTK_SOC_MT7620A }, + { "ralink,mtk7620n-soc", MTK_SOC_MT7620N }, + { "mediatek,mtk7621-soc", MTK_SOC_MT7621 }, + { "ralink,mtk7621-soc", MTK_SOC_MT7621 }, + { "ralink,mtk7628an-soc", MTK_SOC_MT7628 }, + { "mediatek,mt7628an-soc", MTK_SOC_MT7628 }, + { "ralink,mtk7688-soc", MTK_SOC_MT7688 }, + + /* Sentinel */ + { NULL, MTK_SOC_UNKNOWN }, +}; + +static uint32_t +mtk_detect_cpuclk_rt305x(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t clk; + + clk = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + clk >>= RT305X_CPU_CLKSEL_OFF; + clk &= RT305X_CPU_CLKSEL_MSK; + + return ((clk == 0) ? MTK_CPU_CLK_320MHZ : MTK_CPU_CLK_384MHZ); +} + +static uint32_t +mtk_detect_cpuclk_rt3352(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= RT3352_CPU_CLKSEL_OFF; + val &= RT3352_CPU_CLKSEL_MSK; + + if (val) + return (MTK_CPU_CLK_400MHZ); + + return (MTK_CPU_CLK_384MHZ); +} + +static uint32_t +mtk_detect_cpuclk_rt3883(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= RT3883_CPU_CLKSEL_OFF; + val &= RT3883_CPU_CLKSEL_MSK; + + switch (val) { + case 0: + return (MTK_CPU_CLK_250MHZ); + case 1: + return (MTK_CPU_CLK_384MHZ); + case 2: + return (MTK_CPU_CLK_480MHZ); + case 3: + return (MTK_CPU_CLK_500MHZ); + } + + /* Never reached */ + return (0); +} + +static uint32_t +mtk_detect_cpuclk_rt5350(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val1, val2; + + val1 = val2 = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + + val1 >>= RT5350_CPU_CLKSEL_OFF1; + val2 >>= RT5350_CPU_CLKSEL_OFF2; + val1 &= RT5350_CPU_CLKSEL_MSK; + val2 &= RT5350_CPU_CLKSEL_MSK; + val1 |= (val2 << 1); + + switch (val1) { + case 0: + return (MTK_CPU_CLK_360MHZ); + case 1: + /* Reserved value, but we return UNKNOWN */ + return (MTK_CPU_CLK_UNKNOWN); + case 2: + return (MTK_CPU_CLK_320MHZ); + case 3: + return (MTK_CPU_CLK_300MHZ); + } + + /* Never reached */ + return (0); +} + +static uint32_t +mtk_detect_cpuclk_mt7620(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val, mul, div, res; + + val = bus_space_read_4(bst, bsh, SYSCTL_MT7620_CPLL_CFG1); + if (val & MT7620_CPU_CLK_AUX0) + return (MTK_CPU_CLK_480MHZ); + + val = bus_space_read_4(bst, bsh, SYSCTL_MT7620_CPLL_CFG0); + if (!(val & MT7620_CPLL_SW_CFG)) + return (MTK_CPU_CLK_600MHZ); + + mul = MT7620_PLL_MULT_RATIO_BASE + ((val >> MT7620_PLL_MULT_RATIO_OFF) & + MT7620_PLL_MULT_RATIO_MSK); + div = (val >> MT7620_PLL_DIV_RATIO_OFF) & MT7620_PLL_DIV_RATIO_MSK; + + if (div != MT7620_PLL_DIV_RATIO_MSK) + div += MT7620_PLL_DIV_RATIO_BASE; + else + div = MT7620_PLL_DIV_RATIO_MAX; + + res = (MT7620_XTAL_40 * mul) / div; + + return (MTK_MHZ(res)); +} + +static uint32_t +mtk_detect_cpuclk_mt7621(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val, div, res; + + val = bus_space_read_4(bst, bsh, SYSCTL_CLKCFG0); + if (val & MT7621_USES_MEMDIV) { + div = bus_space_read_4(bst, bsh, MTK_MT7621_CLKDIV_REG); + div >>= MT7621_MEMDIV_OFF; + div &= MT7621_MEMDIV_MSK; + div += MT7621_MEMDIV_BASE; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= MT7621_CLKSEL_OFF; + val &= MT7621_CLKSEL_MSK; + + if (val >= MT7621_CLKSEL_25MHZ_VAL) + res = div * MT7621_CLKSEL_25MHZ; + else if (val >= MT7621_CLKSEL_20MHZ_VAL) + res = div * MT7621_CLKSEL_20MHZ; + else + res = div * 0; /* XXX: not sure about this */ + } else { + val = bus_space_read_4(bst, bsh, SYSCTL_CUR_CLK_STS); + div = (val >> MT7621_CLK_STS_DIV_OFF) & MT7621_CLK_STS_MSK; + val &= MT7621_CLK_STS_MSK; + + res = (MT7621_CLK_STS_BASE * val) / div; + } + + return (MTK_MHZ(res)); +} + +static uint32_t +mtk_detect_cpuclk_mt7628(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= MT7628_CPU_CLKSEL_OFF; + val &= MT7628_CPU_CLKSEL_MSK; + + if (val) + return (MTK_CPU_CLK_580MHZ); + + return (MTK_CPU_CLK_575MHZ); +} + +void +mtk_soc_try_early_detect(void) +{ + bus_space_tag_t bst; + bus_space_handle_t bsh; + uint32_t base; + phandle_t node; + int i; + + if ((node = OF_finddevice("/")) == -1) + return; + + for (i = 0; compat_data[i].ocd_str != NULL; i++) { + if (fdt_is_compatible(node, compat_data[i].ocd_str)) { + mtk_soc_socid = compat_data[i].ocd_data; + break; + } + } + + if (mtk_soc_socid == MTK_SOC_UNKNOWN) { + /* We don't know the SoC, so we don't know how to get clocks */ + return; + } + + bst = fdtbus_bs_tag; + if (mtk_soc_socid == MTK_SOC_MT7621) + base = MTK_MT7621_BASE; + else + base = MTK_DEFAULT_BASE; + + if (bus_space_map(bst, base, MTK_DEFAULT_SIZE, 0, &bsh)) + return; + + /* First, figure out the CPU clock */ + switch (mtk_soc_socid) { + case MTK_SOC_RT3050: /* fallthrough */ + case MTK_SOC_RT3052: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt305x(bst, bsh); + break; + case MTK_SOC_RT3350: + mtk_soc_cpuclk = MTK_CPU_CLK_320MHZ; + break; + case MTK_SOC_RT3352: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt3352(bst, bsh); + break; + case MTK_SOC_RT3662: /* fallthrough */ + case MTK_SOC_RT3883: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt3883(bst, bsh); + break; + case MTK_SOC_RT5350: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt5350(bst, bsh); + break; + case MTK_SOC_MT7620A: /* fallthrough */ + case MTK_SOC_MT7620N: + mtk_soc_cpuclk = mtk_detect_cpuclk_mt7620(bst, bsh); + break; + case MTK_SOC_MT7621: + mtk_soc_cpuclk = mtk_detect_cpuclk_mt7621(bst, bsh); + break; + case MTK_SOC_MT7628: /* fallthrough */ + case MTK_SOC_MT7688: + mtk_soc_cpuclk = mtk_detect_cpuclk_mt7628(bst, bsh); + break; + default: + /* We don't know the SoC, so we can't find the CPU clock */ + break; + } + + /* Now figure out the timer clock */ + if (mtk_soc_socid == MTK_SOC_MT7621) { +#ifdef notyet + /* + * We use the GIC timer for timing source and its clock freq is + * the same as the CPU's clock freq + */ + mtk_soc_timerclk = mtk_soc_cpuclk; +#else + /* + * When GIC timer and MIPS timer are ready to co-exist and + * GIC timer is actually implemented, we need to switch to it. + * Until then we use a fake GIC timer, which is actually a + * normal MIPS ticker, so the timer clock is half the CPU clock + */ + mtk_soc_timerclk = mtk_soc_cpuclk / 2; +#endif + } else { + /* + * We use the MIPS ticker for the rest for now, so + * the CPU clock is divided by 2 + */ + mtk_soc_timerclk = mtk_soc_cpuclk / 2; + } + + switch (mtk_soc_socid) { + case MTK_SOC_RT3350: /* fallthrough */ + case MTK_SOC_RT3050: /* fallthrough */ + case MTK_SOC_RT3052: + /* UART clock is CPU clock / 3 */ + mtk_soc_uartclk = mtk_soc_cpuclk / MTK_UARTDIV_3; + break; + case MTK_SOC_RT3352: /* fallthrough */ + case MTK_SOC_RT3662: /* fallthrough */ + case MTK_SOC_RT3883: /* fallthrough */ + case MTK_SOC_RT5350: /* fallthrough */ + case MTK_SOC_MT7620A: /* fallthrough */ + case MTK_SOC_MT7620N: /* fallthrough */ + case MTK_SOC_MT7628: /* fallthrough */ + case MTK_SOC_MT7688: + /* UART clock is always 40MHz */ + mtk_soc_uartclk = MTK_UART_CLK_40MHZ; + break; + case MTK_SOC_MT7621: + /* UART clock is always 50MHz */ + mtk_soc_uartclk = MTK_UART_CLK_50MHZ; + break; + default: + /* We don't know the SoC, so we don't know the UART clock */ + break; + } + + bus_space_unmap(bst, bsh, MTK_DEFAULT_SIZE); +} + +uint32_t +mtk_soc_get_uartclk(void) +{ + + return mtk_soc_uartclk; +} + +uint32_t +mtk_soc_get_cpuclk(void) +{ + + return mtk_soc_cpuclk; +} + +uint32_t +mtk_soc_get_timerclk(void) +{ + + return mtk_soc_timerclk; +} + +uint32_t +mtk_soc_get_socid(void) +{ + + return mtk_soc_socid; +} + +/* + * The following are generic reset and clock functions + */ + +/* Default reset time is 100ms */ +#define DEFAULT_RESET_TIME 100000 + +int +mtk_soc_reset_device(device_t dev) +{ + int res; + + res = fdt_reset_assert_all(dev); + if (res == 0) { + DELAY(DEFAULT_RESET_TIME); + res = fdt_reset_deassert_all(dev); + if (res == 0) + DELAY(DEFAULT_RESET_TIME); + } + + return (res); +} + +int +mtk_soc_stop_clock(device_t dev) +{ + + return (fdt_clock_disable_all(dev)); +} + +int +mtk_soc_start_clock(device_t dev) +{ + + return (fdt_clock_enable_all(dev)); +} + +int +mtk_soc_assert_reset(device_t dev) +{ + + return (fdt_reset_assert_all(dev)); +} + +int +mtk_soc_deassert_reset(device_t dev) +{ + + return (fdt_reset_deassert_all(dev)); +} + +void +mtk_soc_reset(void) +{ + + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 0, 1); + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 1, 0); +} diff --git a/sys/mips/mediatek/mtk_soc.h b/sys/mips/mediatek/mtk_soc.h new file mode 100644 index 0000000..445675d --- /dev/null +++ b/sys/mips/mediatek/mtk_soc.h @@ -0,0 +1,130 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SOC_H_ +#define _MTK_SOC_H_ + +enum mtk_soc_id { + MTK_SOC_UNKNOWN, + MTK_SOC_RT3050, + MTK_SOC_RT3052, + MTK_SOC_RT3350, + MTK_SOC_RT3352, + MTK_SOC_RT3662, + MTK_SOC_RT3883, + MTK_SOC_RT5350, + MTK_SOC_MT7620A, + MTK_SOC_MT7620N, + MTK_SOC_MT7621, + MTK_SOC_MT7628, + MTK_SOC_MT7688, + MTK_SOC_MAX +}; + +#define RT305X_CPU_CLKSEL_OFF 18 +#define RT305X_CPU_CLKSEL_MSK 0x1 +#define RT3352_CPU_CLKSEL_OFF 8 +#define RT3352_CPU_CLKSEL_MSK 0x1 +#define RT3883_CPU_CLKSEL_OFF 8 +#define RT3883_CPU_CLKSEL_MSK 0x3 +#define RT5350_CPU_CLKSEL_OFF1 8 +#define RT5350_CPU_CLKSEL_OFF2 10 +#define RT5350_CPU_CLKSEL_MSK 0x1 +#define MT7628_CPU_CLKSEL_OFF 6 +#define MT7628_CPU_CLKSEL_MSK 0x1 + +#define MT7620_CPU_CLK_AUX0 (1u<<24) +#define MT7620_CPLL_SW_CFG (1u<<31) +#define MT7620_PLL_MULT_RATIO_OFF 16 +#define MT7620_PLL_MULT_RATIO_MSK 0x7 +#define MT7620_PLL_MULT_RATIO_BASE 24 +#define MT7620_PLL_DIV_RATIO_OFF 10 +#define MT7620_PLL_DIV_RATIO_MSK 0x3 +#define MT7620_PLL_DIV_RATIO_BASE 2 +#define MT7620_PLL_DIV_RATIO_MAX 8 +#define MT7620_XTAL_40 40 + +#define MT7621_USES_MEMDIV (1u<<30) +#define MT7621_MEMDIV_OFF 4 +#define MT7621_MEMDIV_MSK 0x7f +#define MT7621_MEMDIV_BASE 1 +#define MT7621_CLKSEL_OFF 6 +#define MT7621_CLKSEL_MSK 0x7 +#define MT7621_CLKSEL_25MHZ_VAL 6 +#define MT7621_CLKSEL_20MHZ_VAL 3 +#define MT7621_CLKSEL_20MHZ 20 +#define MT7621_CLKSEL_25MHZ 25 +#define MT7621_CLK_STS_DIV_OFF 8 +#define MT7621_CLK_STS_MSK 0x1f +#define MT7621_CLK_STS_BASE 500 + +#define MTK_MT7621_CLKDIV_REG 0x5648 +#define MTK_MT7621_CLKDIV_OFF 4 +#define MTK_MT7621_CLKDIV_MSK 0x7f + +#define MTK_MHZ(x) ((x) * 1000 * 1000) + +#define MTK_CPU_CLK_UNKNOWN 0 +#define MTK_CPU_CLK_250MHZ 250000000 +#define MTK_CPU_CLK_300MHZ 300000000 +#define MTK_CPU_CLK_320MHZ 320000000 +#define MTK_CPU_CLK_360MHZ 360000000 +#define MTK_CPU_CLK_384MHZ 384000000 +#define MTK_CPU_CLK_400MHZ 400000000 +#define MTK_CPU_CLK_480MHZ 480000000 +#define MTK_CPU_CLK_500MHZ 500000000 +#define MTK_CPU_CLK_575MHZ 575000000 +#define MTK_CPU_CLK_580MHZ 580000000 +#define MTK_CPU_CLK_600MHZ 600000000 +#define MTK_CPU_CLK_880MHZ 880000000 + +#define MTK_UART_CLK_40MHZ 40000000 +#define MTK_UART_CLK_50MHZ 50000000 + +#define MTK_UARTDIV_2 2 +#define MTK_UARTDIV_3 3 + +#define MTK_DEFAULT_BASE 0x10000000 +#define MTK_MT7621_BASE 0x1e000000 +#define MTK_DEFAULT_SIZE 0x6000 + +extern void mtk_soc_try_early_detect(void); +extern uint32_t mtk_soc_get_uartclk(void); +extern uint32_t mtk_soc_get_cpuclk(void); +extern uint32_t mtk_soc_get_timerclk(void); +extern uint32_t mtk_soc_get_socid(void); + +extern int mtk_soc_reset_device(device_t); +extern int mtk_soc_stop_clock(device_t); +extern int mtk_soc_start_clock(device_t); +extern int mtk_soc_assert_reset(device_t); +extern int mtk_soc_deassert_reset(device_t); +extern void mtk_soc_reset(void); + +#endif /* _MTK_SOC_H_ */ diff --git a/sys/mips/mediatek/mtk_spi_v1.c b/sys/mips/mediatek/mtk_spi_v1.c new file mode 100644 index 0000000..1835b8e --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v1.c @@ -0,0 +1,351 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko <gonzo@FreeBSD.org> + * Copyright (c) 2011, Aleksandr Rybalko <ray@FreeBSD.org> + * Copyright (c) 2013, Alexander A. Mityaev <sansan@adm.ua> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> + +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/rman.h> +#include <sys/lock.h> +#include <sys/mutex.h> + +#include <machine/bus.h> +#include <machine/cpu.h> +//#include <machine/pmap.h> + +#include <dev/spibus/spi.h> +#include <dev/spibus/spibusvar.h> +#include "spibus_if.h" + +#include "opt_platform.h" + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <mips/mediatek/mtk_spi_v1.h> +#include <dev/flash/mx25lreg.h> + +#undef MTK_SPI_DEBUG +#ifdef MTK_SPI_DEBUG +#define dprintf printf +#else +#define dprintf(x, arg...) +#endif + +/* + * register space access macros + */ +#define SPI_WRITE(sc, reg, val) do { \ + bus_write_4(sc->sc_mem_res, (reg), (val)); \ + } while (0) + +#define SPI_READ(sc, reg) bus_read_4(sc->sc_mem_res, (reg)) + +#define SPI_SET_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) | (bits)) + +#define SPI_CLEAR_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) & ~(bits)) + +struct mtk_spi_softc { + device_t sc_dev; + struct resource *sc_mem_res; +}; + +static int mtk_spi_probe(device_t); +static int mtk_spi_attach(device_t); +static int mtk_spi_detach(device_t); +static int mtk_spi_wait(struct mtk_spi_softc *); +static void mtk_spi_chip_activate(struct mtk_spi_softc *); +static void mtk_spi_chip_deactivate(struct mtk_spi_softc *); +static uint8_t mtk_spi_txrx(struct mtk_spi_softc *, uint8_t *, int); +static int mtk_spi_transfer(device_t, device_t, struct spi_command *); +static phandle_t mtk_spi_get_node(device_t, device_t); + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-spi", 1 }, + { "ralink,rt3050-spi", 1 }, + { "ralink,rt3352-spi", 1 }, + { "ralink,rt3883-spi", 1 }, + { "ralink,rt5350-spi", 1 }, + { "ralink,mt7620a-spi", 1 }, + { NULL, 0 } +}; + +static int +mtk_spi_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return(ENXIO); + + device_set_desc(dev, "MTK SPI Controller (v1)"); + + return (0); +} + +static int +mtk_spi_attach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + int rid; + + sc->sc_dev = dev; + rid = 0; + sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_mem_res) { + device_printf(dev, "Could not map memory\n"); + return (ENXIO); + } + + if (mtk_spi_wait(sc)) { + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + return (EBUSY); + } + + SPI_WRITE(sc, MTK_SPICFG, MSBFIRST | SPICLKPOL | TX_ON_CLK_FALL | + SPI_CLK_DIV8); /* XXX: make it configurable */ + /* + * W25Q64CV max 104MHz, bus 120-192 MHz, so divide by 2. + * Update: divide by 4, DEV2 to fast for flash. + */ + + device_add_child(dev, "spibus", 0); + return (bus_generic_attach(dev)); +} + +static int +mtk_spi_detach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + + SPI_SET_BITS(sc, MTK_SPICTL, HIZSMOSI | CS_HIGH); + + if (sc->sc_mem_res) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + + return (0); +} + +static void +mtk_spi_chip_activate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to low + */ + SPI_CLEAR_BITS(sc, MTK_SPICTL, CS_HIGH | HIZSMOSI); +} + +static void +mtk_spi_chip_deactivate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to high + */ + SPI_SET_BITS(sc, MTK_SPICTL, CS_HIGH | HIZSMOSI); +} + +static int +mtk_spi_wait(struct mtk_spi_softc *sc) +{ + int i = 1000; + + while (i--) { + if (!SPI_READ(sc, MTK_SPIBUSY)) + break; + } + if (i == 0) { + printf("busy\n"); + return (1); + } + + return (0); +} + +static uint8_t +mtk_spi_txrx(struct mtk_spi_softc *sc, uint8_t *data, int write) +{ + + if (mtk_spi_wait(sc)) + return (EBUSY); + + if (write == MTK_SPI_WRITE) { + SPI_WRITE(sc, MTK_SPIDATA, *data); + SPI_SET_BITS(sc, MTK_SPICTL, START_WRITE); + //printf("%s(W:%d)\n", __func__, *data); + } else {/* MTK_SPI_READ */ + SPI_SET_BITS(sc, MTK_SPICTL, START_READ); + if (mtk_spi_wait(sc)) + return (EBUSY); + + *data = SPI_READ(sc, MTK_SPIDATA) & 0xff; + //printf("%s(R:%d)\n", __func__, *data); + } + return (0); +} + +static int +mtk_spi_transfer(device_t dev, device_t child, struct spi_command *cmd) +{ + struct mtk_spi_softc *sc; + uint8_t *buf, byte, *tx_buf; + struct spibus_ivar *devi = SPIBUS_IVAR(child); + int i, sz, error = 0, write = 0; + + sc = device_get_softc(dev); + + if (devi->cs != 0) + /* Only 1 CS */ + return (ENXIO); + + /* There is always a command to transfer. */ + tx_buf = (uint8_t *)(cmd->tx_cmd); + + /* Perform some fixup because MTK dont support duplex SPI */ + switch(tx_buf[0]) { + case CMD_READ_IDENT: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 3; + break; + case CMD_ENTER_4B_MODE: + case CMD_EXIT_4B_MODE: + case CMD_WRITE_ENABLE: + case CMD_WRITE_DISABLE: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 0; + break; + case CMD_READ_STATUS: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 1; + break; + case CMD_READ: + case CMD_FAST_READ: + cmd->rx_cmd_sz = cmd->tx_data_sz = 0; + break; + case CMD_SECTOR_ERASE: + cmd->rx_cmd_sz = 0; + break; + case CMD_PAGE_PROGRAM: + cmd->rx_cmd_sz = cmd->rx_data_sz = 0; + break; + } + + mtk_spi_chip_activate(sc); + + if (cmd->tx_cmd_sz + cmd->rx_cmd_sz) { + buf = (uint8_t *)(cmd->rx_cmd); + tx_buf = (uint8_t *)(cmd->tx_cmd); + sz = cmd->tx_cmd_sz + cmd->rx_cmd_sz; + + for (i = 0; i < sz; i++) { + if(i < cmd->tx_cmd_sz) { + byte = tx_buf[i]; + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_WRITE); + if (error) + goto mtk_spi_transfer_fail; + continue; + } + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } + + /* + * Transfer/Receive data + */ + + if (cmd->tx_data_sz + cmd->rx_data_sz) { + write = (cmd->tx_data_sz > 0)?1:0; + buf = (uint8_t *)(write ? cmd->tx_data : cmd->rx_data); + sz = write ? cmd->tx_data_sz : cmd->rx_data_sz; + + for (i = 0; i < sz; i++) { + byte = buf[i]; + error = mtk_spi_txrx(sc, &byte, + write ? MTK_SPI_WRITE : MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } +mtk_spi_transfer_fail: + mtk_spi_chip_deactivate(sc); + + return (error); +} + +static phandle_t +mtk_spi_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the SPI bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_spi_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_spi_probe), + DEVMETHOD(device_attach, mtk_spi_attach), + DEVMETHOD(device_detach, mtk_spi_detach), + + DEVMETHOD(spibus_transfer, mtk_spi_transfer), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_spi_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_spi_driver = { + .name = "spi", + .methods = mtk_spi_methods, + .size = sizeof(struct mtk_spi_softc), +}; + +static devclass_t mtk_spi_devclass; + +DRIVER_MODULE(mtk_spi_v1, simplebus, mtk_spi_driver, mtk_spi_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_spi_v1.h b/sys/mips/mediatek/mtk_spi_v1.h new file mode 100644 index 0000000..3b82e5b --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v1.h @@ -0,0 +1,71 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko <gonzo@FreeBSD.org> + * Copyright (c) 2011, Aleksandr Rybalko <ray@FreeBSD.org> + * Copyright (c) 2013, Alexander A. Mityaev <sansan@adm.ua> + * Copyright (c) 2016, Stanislav Galabov <sgalabov@gmail.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SPIVAR_H_ +#define _MTK_SPIVAR_H_ + +/* SPI controller interface */ + +#define MTK_SPISTAT 0x00 +/* SPIBUSY is alias for SPIBUSY, because SPISTAT have only BUSY bit*/ +#define MTK_SPIBUSY MTK_SPISTAT + +#define MTK_SPICFG 0x10 +#define MSBFIRST (1<<8) +#define SPICLKPOL (1<<6) +#define CAPT_ON_CLK_FALL (1<<5) +#define TX_ON_CLK_FALL (1<<4) +#define HIZSPI (1<<3) /* Set SPI pins to Tri-state */ +#define SPI_CLK_SHIFT 0 /* SPI clock divide control */ +#define SPI_CLK_MASK 0x00000007 +#define SPI_CLK_DIV2 0 +#define SPI_CLK_DIV4 1 +#define SPI_CLK_DIV8 2 +#define SPI_CLK_DIV16 3 +#define SPI_CLK_DIV32 4 +#define SPI_CLK_DIV64 5 +#define SPI_CLK_DIV128 6 +#define SPI_CLK_DISABLED 7 + +#define MTK_SPICTL 0x14 +#define HIZSMOSI (1<<3) +#define START_WRITE (1<<2) +#define START_READ (1<<1) +#define CS_HIGH (1<<0) + +#define MTK_SPIDATA 0x20 +#define SPIDATA_MASK 0x000000ff + +#define MTK_SPI_WRITE 1 +#define MTK_SPI_READ 0 + +#endif /* _MTK_SPIVAR_H_ */ diff --git a/sys/mips/mediatek/mtk_spi_v2.c b/sys/mips/mediatek/mtk_spi_v2.c new file mode 100644 index 0000000..0ffd976 --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v2.c @@ -0,0 +1,357 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko <gonzo@FreeBSD.org> + * Copyright (c) 2011, Aleksandr Rybalko <ray@FreeBSD.org> + * Copyright (c) 2013, Alexander A. Mityaev <sansan@adm.ua> + * Copyright (c) 2016, Stanislav Galabov <sgalabov@gmail.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> + +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/rman.h> +#include <sys/lock.h> +#include <sys/mutex.h> + +#include <machine/bus.h> +#include <machine/cpu.h> +//#include <machine/pmap.h> + +#include <dev/spibus/spi.h> +#include <dev/spibus/spibusvar.h> +#include "spibus_if.h" + +#include "opt_platform.h" + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <mips/mediatek/mtk_spi_v2.h> +#include <dev/flash/mx25lreg.h> + +#undef MTK_SPI_DEBUG +#ifdef MTK_SPI_DEBUG +#define dprintf printf +#else +#define dprintf(x, arg...) +#endif + +/* + * register space access macros + */ +#define SPI_WRITE(sc, reg, val) do { \ + bus_write_4(sc->sc_mem_res, (reg), (val)); \ + } while (0) + +#define SPI_READ(sc, reg) bus_read_4(sc->sc_mem_res, (reg)) + +#define SPI_SET_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) | (bits)) + +#define SPI_CLEAR_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) & ~(bits)) + +struct mtk_spi_softc { + device_t sc_dev; + struct resource *sc_mem_res; +}; + +static int mtk_spi_probe(device_t); +static int mtk_spi_attach(device_t); +static int mtk_spi_detach(device_t); +static int mtk_spi_wait(struct mtk_spi_softc *); +static void mtk_spi_chip_activate(struct mtk_spi_softc *); +static void mtk_spi_chip_deactivate(struct mtk_spi_softc *); +static uint8_t mtk_spi_txrx(struct mtk_spi_softc *, uint8_t *, int); +static int mtk_spi_transfer(device_t, device_t, struct spi_command *); +static phandle_t mtk_spi_get_node(device_t, device_t); + +static struct ofw_compat_data compat_data[] = { + { "ralink,mt7621-spi", 1 }, + { "ralink,mtk7628an-spi", 1 }, + { NULL, 0 } +}; + +static int +mtk_spi_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return(ENXIO); + + device_set_desc(dev, "MTK SPI Controller (v2)"); + + return (0); +} + +static int +mtk_spi_attach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + uint32_t val; + int rid; + + sc->sc_dev = dev; + rid = 0; + sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_mem_res) { + device_printf(dev, "Could not map memory\n"); + return (ENXIO); + } + + if (mtk_spi_wait(sc)) { + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + return (EBUSY); + } + + val = SPI_READ(sc, MTK_SPIMASTER); + val &= ~(0xfff << 16); + val |= 13 << 16; + val |= 7 << 29; + val |= 1 << 2; + SPI_WRITE(sc, MTK_SPIMASTER, val); + /* + * W25Q64CV max 104MHz, bus 120-192 MHz, so divide by 2. + * Update: divide by 4, DEV2 to fast for flash. + */ + + device_add_child(dev, "spibus", 0); + return (bus_generic_attach(dev)); +} + +static int +mtk_spi_detach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + + //SPI_SET_BITS(sc, MTK_SPICTL, HIZSMOSI | CS_HIGH); + + if (sc->sc_mem_res) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + + return (0); +} + +static void +mtk_spi_chip_activate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to low + */ + SPI_SET_BITS(sc, MTK_SPIPOLAR, 1); +} + +static void +mtk_spi_chip_deactivate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to high + */ + SPI_CLEAR_BITS(sc, MTK_SPIPOLAR, 1); +} + +static int +mtk_spi_wait(struct mtk_spi_softc *sc) +{ + int i = 1000; + + while (i--) { + if (!(SPI_READ(sc, MTK_SPITRANS) & SPIBUSY)) + break; + } + if (i == 0) { + //printf("busy\n"); + return (1); + } + + return (0); +} + +static uint8_t +mtk_spi_txrx(struct mtk_spi_softc *sc, uint8_t *data, int write) +{ + + if (mtk_spi_wait(sc)) + return (0xff); + + if (write == MTK_SPI_WRITE) { + SPI_WRITE(sc, MTK_SPIOPCODE, (*data)); + SPI_WRITE(sc, MTK_SPIMOREBUF, (8<<24)); + } else { + SPI_WRITE(sc, MTK_SPIMOREBUF, (8<<12)); + } + + SPI_SET_BITS(sc, MTK_SPITRANS, SPISTART); + + if (mtk_spi_wait(sc)) + return (0xff); + + if (write == MTK_SPI_READ) { + *data = SPI_READ(sc, MTK_SPIDATA) & 0xff; + } + + return (0); +} + +static int +mtk_spi_transfer(device_t dev, device_t child, struct spi_command *cmd) +{ + struct mtk_spi_softc *sc; + uint8_t *buf, byte, *tx_buf; + struct spibus_ivar *devi = SPIBUS_IVAR(child); + int i, sz, error, write = 0; + + sc = device_get_softc(dev); + + if (devi->cs != 0) + /* Only 1 CS */ + return (ENXIO); + + /* There is always a command to transfer. */ + tx_buf = (uint8_t *)(cmd->tx_cmd); + + /* Perform some fixup because MTK dont support duplex SPI */ + switch(tx_buf[0]) { + case CMD_READ_IDENT: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 3; + break; + case CMD_ENTER_4B_MODE: + case CMD_EXIT_4B_MODE: + case CMD_WRITE_ENABLE: + case CMD_WRITE_DISABLE: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 0; + break; + case CMD_READ_STATUS: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 1; + break; + case CMD_READ: + case CMD_FAST_READ: + cmd->rx_cmd_sz = cmd->tx_data_sz = 0; + break; + case CMD_SECTOR_ERASE: + cmd->rx_cmd_sz = 0; + break; + case CMD_PAGE_PROGRAM: + cmd->rx_cmd_sz = cmd->rx_data_sz = 0; + break; + } + + mtk_spi_chip_activate(sc); + + if (cmd->tx_cmd_sz + cmd->rx_cmd_sz) { + buf = (uint8_t *)(cmd->rx_cmd); + tx_buf = (uint8_t *)(cmd->tx_cmd); + sz = cmd->tx_cmd_sz + cmd->rx_cmd_sz; + + for (i = 0; i < sz; i++) { + if(i < cmd->tx_cmd_sz) { + byte = tx_buf[i]; + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_WRITE); + if (error) + goto mtk_spi_transfer_fail; + continue; + } + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } + + /* + * Transfer/Receive data + */ + + if (cmd->tx_data_sz + cmd->rx_data_sz) { + write = (cmd->tx_data_sz > 0)?1:0; + buf = (uint8_t *)(write ? cmd->tx_data : cmd->rx_data); + sz = write ? cmd->tx_data_sz : cmd->rx_data_sz; + + for (i = 0; i < sz; i++) { + byte = buf[i]; + error = mtk_spi_txrx(sc, &byte, + write ? MTK_SPI_WRITE : MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } +mtk_spi_transfer_fail: + mtk_spi_chip_deactivate(sc); + + return (0); +} + +static phandle_t +mtk_spi_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the SPI bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_spi_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_spi_probe), + DEVMETHOD(device_attach, mtk_spi_attach), + DEVMETHOD(device_detach, mtk_spi_detach), + + DEVMETHOD(spibus_transfer, mtk_spi_transfer), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_spi_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_spi_driver = { + .name = "spi", + .methods = mtk_spi_methods, + .size = sizeof(struct mtk_spi_softc), +}; + +static devclass_t mtk_spi_devclass; + +DRIVER_MODULE(mtk_spi_v2, simplebus, mtk_spi_driver, mtk_spi_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_spi_v2.h b/sys/mips/mediatek/mtk_spi_v2.h new file mode 100644 index 0000000..fc7ae31 --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v2.h @@ -0,0 +1,55 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko <gonzo@FreeBSD.org> + * Copyright (c) 2011, Aleksandr Rybalko <ray@FreeBSD.org> + * Copyright (c) 2013, Alexander A. Mityaev <sansan@adm.ua> + * Copyright (c) 2016, Stanislav Galabov <sgalabov@gmail.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SPI_NEWVAR_H_ +#define _MTK_SPI_NEWVAR_H_ + +/* SPI controller interface */ + +#define MTK_SPITRANS 0x00 +#define SPIBUSY (1<<16) +#define SPISTART (1<<8) + +#define MTK_SPIMASTER 0x28 + +#define MTK_SPIMOREBUF 0x2C + +#define MTK_SPIOPCODE 0x04 +#define MTK_SPIDATA 0x08 +#define SPIDATA_MASK 0x000000ff + +#define MTK_SPI_WRITE 1 +#define MTK_SPI_READ 0 + +#define MTK_SPIPOLAR 0x38 + +#endif /* _MTK_SPI_NEWVAR_H_ */ diff --git a/sys/mips/mediatek/mtk_sysctl.c b/sys/mips/mediatek/mtk_sysctl.c new file mode 100644 index 0000000..c16b55d --- /dev/null +++ b/sys/mips/mediatek/mtk_sysctl.c @@ -0,0 +1,191 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/interrupt.h> +#include <sys/kernel.h> +#include <sys/module.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/rman.h> +#include <sys/malloc.h> + +#include <machine/fdt.h> + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <mips/mediatek/mtk_sysctl.h> + +#include <dev/fdt/fdt_common.h> + +struct mtk_sysctl_softc { + device_t dev; + struct resource *mem_res; + int mem_rid; + struct mtx mtx; +}; + +static struct mtk_sysctl_softc *mtk_sysctl_sc = NULL; + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-sysc", 1 }, + { "ralink,rt3050-sysc", 1 }, + { "ralink,rt3352-sysc", 1 }, + { "ralink,rt3883-sysc", 1 }, + { "ralink,rt5350-sysc", 1 }, + { "ralink,mt7620a-sysc", 1 }, + { "mtk,mt7621-sysc", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +#define MTK_SYSCTL_LOCK(sc) mtx_lock_spin(&(sc)->mtx) +#define MTK_SYSCTL_UNLOCK(sc) mtx_unlock_spin(&(sc)->mtx) +#define MTK_SYSCTL_LOCK_INIT(sc) \ + mtx_init(&(sc)->mtx, device_get_nameunit((sc)->dev), \ + "mtk_sysctl", MTX_SPIN) +#define MTK_SYSCTL_LOCK_DESTROY(sc) mtx_destroy(&(sc)->mtx) + +static int +mtk_sysctl_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK System Controller"); + + return (BUS_PROBE_DEFAULT); +} + +static int mtk_sysctl_detach(device_t); + +static int +mtk_sysctl_attach(device_t dev) +{ + struct mtk_sysctl_softc *sc = device_get_softc(dev); + + if (device_get_unit(dev) != 0 || mtk_sysctl_sc != NULL) { + device_printf(dev, "Only one sysctl module supported\n"); + return (ENXIO); + } + + mtk_sysctl_sc = sc; + + /* Map control/status registers. */ + sc->mem_rid = 0; + sc->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &sc->mem_rid, RF_ACTIVE); + + if (sc->mem_res == NULL) { + device_printf(dev, "couldn't map memory\n"); + mtk_sysctl_detach(dev); + return (ENXIO); + } + + sc->dev = dev; + + MTK_SYSCTL_LOCK_INIT(sc); + + return (0); +} + +static int +mtk_sysctl_detach(device_t dev) +{ + struct mtk_sysctl_softc *sc = device_get_softc(dev); + + if (sc->mem_res) + bus_release_resource(dev, SYS_RES_MEMORY, sc->mem_rid, + sc->mem_res); + + MTK_SYSCTL_LOCK_DESTROY(sc); + + return(0); +} + +uint32_t +mtk_sysctl_get(uint32_t reg) +{ + uint32_t val; + + MTK_SYSCTL_LOCK(mtk_sysctl_sc); + val = bus_read_4(mtk_sysctl_sc->mem_res, reg); + MTK_SYSCTL_UNLOCK(mtk_sysctl_sc); + + return (val); +} + +void +mtk_sysctl_set(uint32_t reg, uint32_t val) +{ + + MTK_SYSCTL_LOCK(mtk_sysctl_sc); + bus_write_4(mtk_sysctl_sc->mem_res, reg, val); + MTK_SYSCTL_UNLOCK(mtk_sysctl_sc); +} + +void +mtk_sysctl_clr_set(uint32_t reg, uint32_t clr, uint32_t set) +{ + uint32_t val; + + MTK_SYSCTL_LOCK(mtk_sysctl_sc); + val = bus_read_4(mtk_sysctl_sc->mem_res, reg); + val &= ~(clr); + val |= set; + bus_write_4(mtk_sysctl_sc->mem_res, reg, val); + MTK_SYSCTL_UNLOCK(mtk_sysctl_sc); +} + +static device_method_t mtk_sysctl_methods[] = { + DEVMETHOD(device_probe, mtk_sysctl_probe), + DEVMETHOD(device_attach, mtk_sysctl_attach), + DEVMETHOD(device_detach, mtk_sysctl_detach), + + DEVMETHOD_END +}; + +static driver_t mtk_sysctl_driver = { + "sysc", + mtk_sysctl_methods, + sizeof(struct mtk_sysctl_softc), +}; +static devclass_t mtk_sysctl_devclass; + +EARLY_DRIVER_MODULE(mtk_sysctl, simplebus, mtk_sysctl_driver, + mtk_sysctl_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); diff --git a/sys/mips/mediatek/mtk_sysctl.h b/sys/mips/mediatek/mtk_sysctl.h new file mode 100644 index 0000000..0ef908e --- /dev/null +++ b/sys/mips/mediatek/mtk_sysctl.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SYSCTL_H_ +#define _MTK_SYSCTL_H_ + +/* System Control */ +#define SYSCTL_CHIPID0_3 0x00 +#define SYSCTL_CHIPID4_7 0x04 + +#define SYSCTL_REVID 0x0C +#define SYSCTL_REVID_MASK 0xFFFF +#define SYSCTL_MT7621_REV_E 0x0101 + +#define SYSCTL_SYSCFG 0x10 +#define SYSCTL_SYSCFG1 0x14 +#define SYSCTL_CLKCFG0 0x2C +#define SYSCTL_CLKCFG1 0x30 +#define SYSCTL_RSTCTRL 0x34 +#define SYSCTL_GPIOMODE 0x60 + +#define SYSCTL_CUR_CLK_STS 0x44 + +#define SYSCTL_MT7620_CPLL_CFG0 0x54 +#define SYSCTL_MT7620_CPLL_CFG1 0x58 + +#define SYSCFG1_USB_HOST_MODE (1<<10) + +extern uint32_t mtk_sysctl_get(uint32_t); +extern void mtk_sysctl_set(uint32_t, uint32_t); +extern void mtk_sysctl_clr_set(uint32_t, uint32_t, uint32_t); + +#endif /* _MTK_SYSCTL_H_ */ diff --git a/sys/mips/mediatek/mtk_usb_phy.c b/sys/mips/mediatek/mtk_usb_phy.c new file mode 100644 index 0000000..d400720 --- /dev/null +++ b/sys/mips/mediatek/mtk_usb_phy.c @@ -0,0 +1,324 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/stddef.h> +#include <sys/param.h> +#include <sys/types.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> + +#include <machine/bus.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/fdt/fdt_clock.h> +#include <mips/mediatek/fdt_reset.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <mips/mediatek/mtk_sysctl.h> +#include <mips/mediatek/mtk_soc.h> +#include <mips/mediatek/mtk_usb_phy.h> + +#define RESET_ASSERT_DELAY 1000 +#define RESET_DEASSERT_DELAY 10000 + +struct mtk_usb_phy_softc { + device_t dev; + struct resource * res; + uint32_t fm_base; + uint32_t u2_base; + uint32_t sr_coef; + uint32_t socid; +}; + +#define USB_PHY_READ(_sc, _off) bus_read_4((_sc)->res, (_off)) +#define USB_PHY_WRITE(_sc, _off, _val) bus_write_4((_sc)->res, (_off), (_val)) +#define USB_PHY_CLR_SET(_sc, _off, _clr, _set) \ + USB_PHY_WRITE(_sc, _off, ((USB_PHY_READ(_sc, _off) & ~(_clr)) | (_set))) + +#define USB_PHY_READ_U2(_sc, _off) \ + USB_PHY_READ((_sc), ((_sc)->u2_base + (_off))) +#define USB_PHY_WRITE_U2(_sc, _off, _val) \ + USB_PHY_WRITE((_sc), ((_sc)->u2_base + (_off)), (_val)) +#define USB_PHY_CLR_SET_U2(_sc, _off, _clr, _set) \ + USB_PHY_WRITE_U2((_sc), (_off), ((USB_PHY_READ_U2((_sc), (_off)) & \ + ~(_clr)) | (_set))) +#define USB_PHY_BARRIER(_sc) bus_barrier((_sc)->res, 0, 0, \ + BUS_SPACE_BARRIER_WRITE | BUS_SPACE_BARRIER_READ) + +#define USB_PHY_READ_FM(_sc, _off) \ + USB_PHY_READ((_sc), ((_sc)->fm_base + (_off))) +#define USB_PHY_WRITE_FM(_sc, _off) \ + USB_PHY_WRITE((_sc), ((_sc)->fm_base + (_off)), (_val)) +#define USB_PHY_CLR_SET_FM(_sc, _off, _clr, _set) \ + USB_PHY_WRITE_U2((_sc), (_off), ((USB_PHY_READ_U2((_sc), (_off)) & \ + ~(_clr)) | (_set))) + +static void mtk_usb_phy_mt7621_init(device_t); +static void mtk_usb_phy_mt7628_init(device_t); + +static struct ofw_compat_data compat_data[] = { + { "ralink,mt7620a-usbphy", MTK_SOC_MT7620A }, + { "ralink,mt7628an-usbphy", MTK_SOC_MT7628 }, + { "ralink,rt3xxx-usbphy", MTK_SOC_RT3352 }, + { NULL, MTK_SOC_UNKNOWN } +}; + +static int +mtk_usb_phy_probe(device_t dev) +{ + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + if ((sc->socid = + ofw_bus_search_compatible(dev, compat_data)->ocd_data) == + MTK_SOC_UNKNOWN) + return (ENXIO); + + device_set_desc(dev, "MTK USB PHY"); + + return (0); +} + +static int +mtk_usb_phy_attach(device_t dev) +{ + struct mtk_usb_phy_softc * sc = device_get_softc(dev); + phandle_t node; + uint32_t val; + int rid; + + sc->dev = dev; + + /* Get our FDT node and SoC id */ + node = ofw_bus_get_node(dev); + + /* Now let's see about setting USB to host or device mode */ + /* XXX: is it the same for all SoCs? */ + val = mtk_sysctl_get(SYSCTL_SYSCFG1); + if (OF_hasprop(node, "mtk,usb-device")) + val &= ~SYSCFG1_USB_HOST_MODE; + else + val |= SYSCFG1_USB_HOST_MODE; + mtk_sysctl_set(SYSCTL_SYSCFG1, val); + + /* If we have clocks defined - enable them */ + if (OF_hasprop(node, "clocks")) + fdt_clock_enable_all(dev); + + /* If we have resets defined - perform a reset sequence */ + if (OF_hasprop(node, "resets")) { + fdt_reset_assert_all(dev); + DELAY(RESET_ASSERT_DELAY); + fdt_reset_deassert_all(dev); + DELAY(RESET_DEASSERT_DELAY); + } + + /* Careful, some devices actually require resources */ + if (OF_hasprop(node, "reg")) { + rid = 0; + sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->res == NULL) { + device_printf(dev, "could not map memory\n"); + return (ENXIO); + } + } else { + sc->res = NULL; + } + + /* Some SoCs require specific USB PHY init... handle these */ + switch (sc->socid) { + case MTK_SOC_MT7628: /* Fallthrough */ + case MTK_SOC_MT7688: + if (sc->res == NULL) + return (ENXIO); + sc->fm_base = MT7628_FM_FEG_BASE; + sc->u2_base = MT7628_U2_BASE; + sc->sr_coef = MT7628_SR_COEF; + mtk_usb_phy_mt7628_init(dev); + break; + case MTK_SOC_MT7621: + if (sc->res == NULL) + return (ENXIO); + sc->fm_base = MT7621_FM_FEG_BASE; + sc->u2_base = MT7621_U2_BASE; + sc->sr_coef = MT7621_SR_COEF; + mtk_usb_phy_mt7621_init(dev); + break; + } + + /* We no longer need the resources, release them */ + if (sc->res != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->res); + + return (0); +} + +static int +mtk_usb_phy_detach(device_t dev) +{ + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + phandle_t node; + + /* Get our FDT node */ + node = ofw_bus_get_node(dev); + + /* If we have resets defined - assert them */ + if (OF_hasprop(node, "resets")) + fdt_reset_assert_all(dev); + + /* If we have clocks defined - disable them */ + if (OF_hasprop(node, "clocks")) + fdt_clock_disable_all(dev); + + /* Finally, release resources, if any were allocated */ + if (sc->res != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->res); + + return (0); +} + +/* + * Things currently seem to work a lot better without slew rate calibration + * both on MT7621 and MT7688, so we leave it out for now. + */ +#ifdef notyet +static void +mtk_usb_phy_slew_rate_calibration(struct mtk_usb_phy_softc *sc) +{ + uint32_t val; + int i; + + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, 0, SRCAL_EN); + USB_PHY_BARRIER(sc); + DELAY(1000); + + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMMONR1, 0, FRCK_EN); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMCR0, CYCLECNT, 0x400); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMCR0, 0, FDET_EN); + USB_PHY_BARRIER(sc); + + for (i = 0; i < 1000; i++) { + if ((val = USB_PHY_READ_FM(sc, U2_PHY_FMMONR0)) != 0) { + device_printf(sc->dev, "DONE with FDET\n"); + break; + } + DELAY(10000); + } + device_printf(sc->dev, "After FDET\n"); + + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMCR0, FDET_EN, 0); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMMONR1, FRCK_EN, 0); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, SRCAL_EN, 0); + USB_PHY_BARRIER(sc); + DELAY(1000); + + if (val == 0) { + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, SRCTRL, 0x4 << SRCTRL_OFF); + USB_PHY_BARRIER(sc); + } else { + val = ((((1024 * 25 * sc->sr_coef) / val) + 500) / 1000) & + SRCTRL_MSK; + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, SRCTRL, val << SRCTRL_OFF); + USB_PHY_BARRIER(sc); + } +} +#endif + +static void +mtk_usb_phy_mt7621_init(device_t dev) +{ +#ifdef notyet + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + + /* Slew rate calibration only, but for 2 ports */ + mtk_usb_phy_slew_rate_calibration(sc); + + sc->u2_base = MT7621_U2_BASE_P1; + mtk_usb_phy_slew_rate_calibration(sc); +#endif +} + +static void +mtk_usb_phy_mt7628_init(device_t dev) +{ + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + + /* XXX: possibly add barriers between the next writes? */ + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00ffff02); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00555502); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00aaaa02); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00000402); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_AC0, 0x0048086a); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_AC1, 0x4400001c); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_ACR3, 0xc0200000); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DTM0, 0x02000000); + USB_PHY_BARRIER(sc); + +#ifdef notyet + /* Slew rate calibration */ + mtk_usb_phy_slew_rate_calibration(sc); +#endif +} + +static device_method_t mtk_usb_phy_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_usb_phy_probe), + DEVMETHOD(device_attach, mtk_usb_phy_attach), + DEVMETHOD(device_detach, mtk_usb_phy_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t mtk_usb_phy_driver = { + .name = "usbphy", + .methods = mtk_usb_phy_methods, + .size = sizeof(struct mtk_usb_phy_softc), +}; + +static devclass_t mtk_usb_phy_devclass; + +DRIVER_MODULE(usbphy, simplebus, mtk_usb_phy_driver, mtk_usb_phy_devclass, 0, + 0); diff --git a/sys/mips/mediatek/mtk_usb_phy.h b/sys/mips/mediatek/mtk_usb_phy.h new file mode 100644 index 0000000..24fb661 --- /dev/null +++ b/sys/mips/mediatek/mtk_usb_phy.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ +#ifndef _MTK_USB_PHY_H_ +#define _MTK_USB_PHY_H_ + +#define MT7621_FM_FEG_BASE 0x0100 +#define MT7621_U2_BASE 0x0800 +#define MT7621_U2_BASE_P1 0x1000 +#define MT7621_SR_COEF 28 + +#define MT7628_FM_FEG_BASE 0x0f00 +#define MT7628_U2_BASE 0x0800 +#define MT7628_SR_COEF 32 + +#define U2_PHY_AC0 0x00 +#define U2_PHY_AC1 0x04 +#define U2_PHY_AC2 0x08 +#define U2_PHY_ACR0 0x10 +#define SRCAL_EN (1<<23) +#define SRCTRL_MSK 0x7 +#define SRCTRL_OFF 16 +#define SRCTRL (SRCTRL_MSK<<SRCTRL_OFF) +#define U2_PHY_ACR1 0x14 +#define U2_PHY_ACR2 0x18 +#define U2_PHY_ACR3 0x1C + +#define U2_PHY_DCR0 0x60 +#define U2_PHY_DCR1 0x64 +#define U2_PHY_DTM0 0x68 +#define U2_PHY_DTM1 0x6C + +#define U2_PHY_FMCR0 0x00 +#define CYCLECNT (0xffffff) +#define FDET_EN (1<<24) +#define U2_PHY_FMCR1 0x04 +#define FRCK_EN (1<<8) +#define U2_PHY_FMCR2 0x08 +#define U2_PHY_FMMONR0 0x0C +#define U2_PHY_FMMONR1 0x10 + +#endif /* _MTK_USB_PHY_H_ */ diff --git a/sys/mips/mediatek/mtk_xhci.c b/sys/mips/mediatek/mtk_xhci.c new file mode 100644 index 0000000..0899307 --- /dev/null +++ b/sys/mips/mediatek/mtk_xhci.c @@ -0,0 +1,298 @@ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/stdint.h> +#include <sys/stddef.h> +#include <sys/param.h> +#include <sys/queue.h> +#include <sys/types.h> +#include <sys/systm.h> +#include <sys/kernel.h> +#include <sys/bus.h> +#include <sys/module.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/condvar.h> +#include <sys/sysctl.h> +#include <sys/sx.h> +#include <sys/unistd.h> +#include <sys/callout.h> +#include <sys/malloc.h> +#include <sys/priv.h> +#include <sys/rman.h> + +#include <dev/usb/usb.h> +#include <dev/usb/usbdi.h> + +#include <dev/usb/usb_core.h> +#include <dev/usb/usb_busdma.h> +#include <dev/usb/usb_process.h> +#include <dev/usb/usb_util.h> + +#include <dev/usb/usb_controller.h> +#include <dev/usb/usb_bus.h> + +#include <dev/usb/controller/xhci.h> + +#include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#define XHCI_HC_DEVSTR "MTK USB 3.0 controller" + +static device_probe_t mtk_xhci_fdt_probe; +static device_attach_t mtk_xhci_fdt_attach; +static device_detach_t mtk_xhci_fdt_detach; + +static void mtk_xhci_fdt_init(device_t dev); + +static int +mtk_xhci_fdt_probe(device_t self) +{ + + if (!ofw_bus_status_okay(self)) + return (ENXIO); + + if (!ofw_bus_is_compatible(self, "mtk,usb-xhci")) + return (ENXIO); + + device_set_desc(self, XHCI_HC_DEVSTR); + + return (BUS_PROBE_DEFAULT); +} + +static int +mtk_xhci_fdt_attach(device_t self) +{ + struct xhci_softc *sc = device_get_softc(self); + int err; + int rid; + + /* initialise some bus fields */ + sc->sc_bus.parent = self; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = XHCI_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + rid = 0; + sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_io_res) { + device_printf(self, "Could not map memory\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + mtk_xhci_fdt_init(self); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { + device_printf(self, "Could not allocate irq\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + device_printf(self, "Could not add USB device\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + device_set_desc(sc->sc_bus.bdev, XHCI_HC_DEVSTR); + + sprintf(sc->sc_vendor, "Mediatek"); + + err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, + NULL, (driver_intr_t *)xhci_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + device_printf(self, "Could not setup irq, %d\n", err); + sc->sc_intr_hdl = NULL; + goto error; + } + + err = xhci_init(sc, self, 1); + if (err == 0) + err = xhci_halt_controller(sc); + if (err == 0) + err = xhci_start_controller(sc); + if (err == 0) + err = device_probe_and_attach(sc->sc_bus.bdev); + if (err) { + device_printf(self, "USB init failed err=%d\n", err); + goto error; + } + return (0); + +error: + mtk_xhci_fdt_detach(self); + return (ENXIO); +} + +static int +mtk_xhci_fdt_detach(device_t self) +{ + struct xhci_softc *sc = device_get_softc(self); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(self); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call xhci_detach() after xhci_init() + */ + xhci_uninit(sc); + + err = bus_teardown_intr(self, sc->sc_irq_res, sc->sc_intr_hdl); + if (err) + device_printf(self, "Could not tear down irq, %d\n", + err); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(self, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(self, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + + return (0); +} + +static device_method_t mtk_xhci_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_xhci_fdt_probe), + DEVMETHOD(device_attach, mtk_xhci_fdt_attach), + DEVMETHOD(device_detach, mtk_xhci_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t mtk_xhci_fdt_driver = { + .name = "xhci", + .methods = mtk_xhci_fdt_methods, + .size = sizeof(struct xhci_softc), +}; + +static devclass_t mtk_xhci_fdt_devclass; + +DRIVER_MODULE(xhci, simplebus, mtk_xhci_fdt_driver, mtk_xhci_fdt_devclass, 0, + 0); + +#define USB_HDMA_CFG 0x950 +#define USB_HDMA_CFG_MT7621_VAL 0x10E0E0C + +#define U3_LTSSM_TIMING_PARAM3 0x2514 +#define U3_LTSSM_TIMING_VAL 0x3E8012C + +#define SYNC_HS_EOF 0x938 +#define SYNC_HS_EOF_VAL 0x201F3 + +#define USB_IP_SPAR0 0x107C8 +#define USB_IP_SPAR0_VAL 1 + +#define U2_PHY_BASE_P0 0x10800 +#define U2_PHY_BASE_P1 0x11000 +#define U2_PHYD_CR1 0x64 +#define U2_PHYD_CR1_MASK (3<<18) +#define U2_PHYD_CR1_VAL (1<<18) + +#define USB_IP_PW_CTRL 0x10700 +#define USB_IP_PW_CTRL_1 0x10704 +#define USB_IP_CAP 0x10724 +#define USB_U3_CTRL(p) (0x10730 + ((p) * 0x08)) +#define USB_U2_CTRL(p) (0x10750 + ((p) * 0x08)) + +#define USB_IP_SW_RST (1 << 0) +#define USB_IP_PDN (1 << 0) + +#define USB_PORT_DIS (1 << 0) +#define USB_PORT_PDN (1 << 1) + +#define U3_PORT_NUM(p) (p & 0xFF) +#define U2_PORT_NUM(p) ((p>>8) & 0xFF) + +#define RD4(_sc, _reg) bus_read_4((_sc)->sc_io_res, (_reg)) +#define WR4(_sc, _reg, _val) bus_write_4((_sc)->sc_io_res, (_reg), (_val)) +#define CLRSET4(_sc, _reg, _clr, _set) \ + WR4((_sc), (_reg), (RD4((_sc), (_reg)) & ~(_clr)) | (_set)) + +static void +mtk_xhci_fdt_init(device_t dev) +{ + struct xhci_softc *sc; + uint32_t temp, u3_ports, u2_ports, i; + + sc = device_get_softc(dev); + + temp = RD4(sc, USB_IP_CAP); + u3_ports = U3_PORT_NUM(temp); + u2_ports = U2_PORT_NUM(temp); + + device_printf(dev, "%d USB3 ports, %d USB2 ports\n", + u3_ports, u2_ports); + + CLRSET4(sc, USB_IP_PW_CTRL, 0, USB_IP_SW_RST); + CLRSET4(sc, USB_IP_PW_CTRL, USB_IP_SW_RST, 0); + CLRSET4(sc, USB_IP_PW_CTRL_1, USB_IP_PDN, 0); + + for (i = 0; i < u3_ports; i++) + CLRSET4(sc, USB_U3_CTRL(i), USB_PORT_PDN | USB_PORT_DIS, 0); + + for (i = 0; i < u2_ports; i++) + CLRSET4(sc, USB_U2_CTRL(i), USB_PORT_PDN | USB_PORT_DIS, 0); + + DELAY(100000); + + WR4(sc, USB_HDMA_CFG, USB_HDMA_CFG_MT7621_VAL); + WR4(sc, U3_LTSSM_TIMING_PARAM3, U3_LTSSM_TIMING_VAL); + WR4(sc, SYNC_HS_EOF, SYNC_HS_EOF_VAL); + WR4(sc, USB_IP_SPAR0, USB_IP_SPAR0_VAL); + CLRSET4(sc, U2_PHY_BASE_P0 + U2_PHYD_CR1, U2_PHYD_CR1_MASK, + U2_PHYD_CR1_VAL); + CLRSET4(sc, U2_PHY_BASE_P1 + U2_PHYD_CR1, U2_PHYD_CR1_MASK, + U2_PHYD_CR1_VAL); +} diff --git a/sys/mips/mediatek/uart_dev_mtk.c b/sys/mips/mediatek/uart_dev_mtk.c new file mode 100644 index 0000000..5993cb6 --- /dev/null +++ b/sys/mips/mediatek/uart_dev_mtk.c @@ -0,0 +1,552 @@ +/* $NetBSD: uart.c,v 1.2 2007/03/23 20:05:47 dogcow Exp $ */ + +/*- + * Copyright (c) 2013, Alexander A. Mityaev <sansan@adm.ua> + * Copyright (c) 2010 Aleksandr Rybalko. + * Copyright (c) 2007 Ruslan Ermilov and Vsevolod Lobko. + * Copyright (c) 2007 Oleksandr Tymoshenko. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include "opt_ddb.h" + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/conf.h> +#include <sys/kdb.h> +#include <sys/reboot.h> +#include <sys/sysctl.h> +#include <sys/kernel.h> +#include <machine/bus.h> +#include <machine/fdt.h> + +#include <dev/uart/uart.h> +#include <dev/uart/uart_cpu.h> +#include <dev/uart/uart_cpu_fdt.h> +#include <dev/uart/uart_bus.h> + +#include <mips/mediatek/uart_dev_mtk.h> +#include <mips/mediatek/mtk_soc.h> +#include <mips/mediatek/mtk_sysctl.h> + +#include "uart_if.h" + +/* Set some reference clock value. Real value will be taken from FDT */ +#define DEFAULT_RCLK (120 * 1000 * 1000) + +/* + * Low-level UART interface. + */ +static int mtk_uart_probe(struct uart_bas *bas); +static void mtk_uart_init(struct uart_bas *bas, int, int, int, int); +static void mtk_uart_term(struct uart_bas *bas); +static void mtk_uart_putc(struct uart_bas *bas, int); +static int mtk_uart_rxready(struct uart_bas *bas); +static int mtk_uart_getc(struct uart_bas *bas, struct mtx *); + +static struct uart_ops uart_mtk_ops = { + .probe = mtk_uart_probe, + .init = mtk_uart_init, + .term = mtk_uart_term, + .putc = mtk_uart_putc, + .rxready = mtk_uart_rxready, + .getc = mtk_uart_getc, +}; + +static int uart_output = 1; +TUNABLE_INT("kern.uart_output", &uart_output); +SYSCTL_INT(_kern, OID_AUTO, uart_output, CTLFLAG_RW, + &uart_output, 0, "UART output enabled."); + +static int +mtk_uart_probe(struct uart_bas *bas) +{ + return (0); +} + +static void +mtk_uart_init(struct uart_bas *bas, int baudrate, int databits, + int stopbits, int parity) +{ + /* CLKDIV = 384000000/ 3/ 16/ br */ + /* for 384MHz CLKDIV = 8000000 / baudrate; */ + switch (databits) { + case 5: + databits = UART_LCR_5B; + break; + case 6: + databits = UART_LCR_6B; + break; + case 7: + databits = UART_LCR_7B; + break; + case 8: + databits = UART_LCR_8B; + break; + default: + /* Unsupported */ + return; + } + switch (parity) { + case UART_PARITY_EVEN: parity = (UART_LCR_PEN|UART_LCR_EVEN); break; + case UART_PARITY_ODD: parity = (UART_LCR_PEN); break; + case UART_PARITY_NONE: parity = 0; break; + /* Unsupported */ + default: return; + } + + if (bas->rclk && baudrate) { + uart_setreg(bas, UART_CDDL_REG, bas->rclk/16/baudrate); + uart_barrier(bas); + } + + uart_setreg(bas, UART_LCR_REG, databits | + (stopbits==1?0:UART_LCR_STB_15) | + parity); + uart_barrier(bas); +} + +static void +mtk_uart_term(struct uart_bas *bas) +{ + uart_setreg(bas, UART_MCR_REG, 0); + uart_barrier(bas); +} + +static void +mtk_uart_putc(struct uart_bas *bas, int c) +{ + char chr; + if (!uart_output) return; + chr = c; + while (!(uart_getreg(bas, UART_LSR_REG) & UART_LSR_THRE)); + uart_setreg(bas, UART_TX_REG, c); + uart_barrier(bas); + while (!(uart_getreg(bas, UART_LSR_REG) & UART_LSR_THRE)); +} + +static int +mtk_uart_rxready(struct uart_bas *bas) +{ + if (uart_getreg(bas, UART_LSR_REG) & UART_LSR_DR) + return (1); + return (0); +} + +static int +mtk_uart_getc(struct uart_bas *bas, struct mtx *hwmtx) +{ + int c; + + uart_lock(hwmtx); + + while (!(uart_getreg(bas, UART_LSR_REG) & UART_LSR_DR)) { + uart_unlock(hwmtx); + DELAY(10); + uart_lock(hwmtx); + } + + c = uart_getreg(bas, UART_RX_REG); + + uart_unlock(hwmtx); + + return (c); +} + +/* + * High-level UART interface. + */ +struct uart_mtk_softc { + struct uart_softc base; + uint8_t ier_mask; + uint8_t ier; +}; + +static int mtk_uart_bus_attach(struct uart_softc *); +static int mtk_uart_bus_detach(struct uart_softc *); +static int mtk_uart_bus_flush(struct uart_softc *, int); +static int mtk_uart_bus_getsig(struct uart_softc *); +static int mtk_uart_bus_ioctl(struct uart_softc *, int, intptr_t); +static int mtk_uart_bus_ipend(struct uart_softc *); +static int mtk_uart_bus_param(struct uart_softc *, int, int, int, int); +static int mtk_uart_bus_probe(struct uart_softc *); +static int mtk_uart_bus_receive(struct uart_softc *); +static int mtk_uart_bus_setsig(struct uart_softc *, int); +static int mtk_uart_bus_transmit(struct uart_softc *); +static void mtk_uart_bus_grab(struct uart_softc *); +static void mtk_uart_bus_ungrab(struct uart_softc *); + +static kobj_method_t uart_mtk_methods[] = { + KOBJMETHOD(uart_attach, mtk_uart_bus_attach), + KOBJMETHOD(uart_detach, mtk_uart_bus_detach), + KOBJMETHOD(uart_flush, mtk_uart_bus_flush), + KOBJMETHOD(uart_getsig, mtk_uart_bus_getsig), + KOBJMETHOD(uart_ioctl, mtk_uart_bus_ioctl), + KOBJMETHOD(uart_ipend, mtk_uart_bus_ipend), + KOBJMETHOD(uart_param, mtk_uart_bus_param), + KOBJMETHOD(uart_probe, mtk_uart_bus_probe), + KOBJMETHOD(uart_receive, mtk_uart_bus_receive), + KOBJMETHOD(uart_setsig, mtk_uart_bus_setsig), + KOBJMETHOD(uart_transmit, mtk_uart_bus_transmit), + KOBJMETHOD(uart_grab, mtk_uart_bus_grab), + KOBJMETHOD(uart_ungrab, mtk_uart_bus_ungrab), + { 0, 0 } +}; + +struct uart_class uart_mtk_class = { + "uart_mtk", + uart_mtk_methods, + sizeof(struct uart_mtk_softc), + .uc_ops = &uart_mtk_ops, + .uc_range = 1, /* use hinted range */ + .uc_rclk = 0 +}; + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt3050-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt3352-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt3883-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt5350-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,mt7620a-uart", (uintptr_t)&uart_mtk_class }, + { NULL, (uintptr_t)NULL }, +}; +UART_FDT_CLASS_AND_DEVICE(compat_data); + + +#define SIGCHG(c, i, s, d) \ + if (c) { \ + i |= (i & s) ? s : s | d; \ + } else { \ + i = (i & s) ? (i & ~s) | d : i; \ + } + +/* + * Disable TX interrupt. uart should be locked + */ +static __inline void +mtk_uart_disable_txintr(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + uint8_t cr; + + cr = uart_getreg(bas, UART_IER_REG); + cr &= ~UART_IER_ETBEI; + uart_setreg(bas, UART_IER_REG, cr); + uart_barrier(bas); +} + +/* + * Enable TX interrupt. uart should be locked + */ +static __inline void +mtk_uart_enable_txintr(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + uint8_t cr; + + cr = uart_getreg(bas, UART_IER_REG); + cr |= UART_IER_ETBEI; + uart_setreg(bas, UART_IER_REG, cr); + uart_barrier(bas); +} + +static int +mtk_uart_bus_attach(struct uart_softc *sc) +{ + struct uart_bas *bas; + struct uart_devinfo *di; + struct uart_mtk_softc *usc = (struct uart_mtk_softc *)sc; + + bas = &sc->sc_bas; + + if (!bas->rclk) { + bas->rclk = mtk_soc_get_uartclk(); + } + + if (sc->sc_sysdev != NULL) { + di = sc->sc_sysdev; + mtk_uart_init(bas, di->baudrate, di->databits, di->stopbits, + di->parity); + } else { + mtk_uart_init(bas, 57600, 8, 1, 0); + } + + sc->sc_rxfifosz = 16; + sc->sc_txfifosz = 16; + + (void)mtk_uart_bus_getsig(sc); + + /* Enable FIFO */ + uart_setreg(bas, UART_FCR_REG, + uart_getreg(bas, UART_FCR_REG) | + UART_FCR_FIFOEN | UART_FCR_TXTGR_1 | UART_FCR_RXTGR_1); + uart_barrier(bas); + /* Enable interrupts */ + usc->ier_mask = 0xf0; + uart_setreg(bas, UART_IER_REG, + UART_IER_EDSSI | UART_IER_ELSI | UART_IER_ERBFI); + uart_barrier(bas); + + return (0); +} + +static int +mtk_uart_bus_detach(struct uart_softc *sc) +{ + return (0); +} + +static int +mtk_uart_bus_flush(struct uart_softc *sc, int what) +{ + struct uart_bas *bas = &sc->sc_bas; + uint32_t fcr = uart_getreg(bas, UART_FCR_REG); + + if (what & UART_FLUSH_TRANSMITTER) { + uart_setreg(bas, UART_FCR_REG, fcr|UART_FCR_TXRST); + uart_barrier(bas); + } + if (what & UART_FLUSH_RECEIVER) { + uart_setreg(bas, UART_FCR_REG, fcr|UART_FCR_RXRST); + uart_barrier(bas); + } + uart_setreg(bas, UART_FCR_REG, fcr); + uart_barrier(bas); + return (0); +} + +static int +mtk_uart_bus_getsig(struct uart_softc *sc) +{ + uint32_t new, old, sig; + uint8_t bes; + + return(0); + do { + old = sc->sc_hwsig; + sig = old; + uart_lock(sc->sc_hwmtx); + bes = uart_getreg(&sc->sc_bas, UART_MSR_REG); + uart_unlock(sc->sc_hwmtx); + /* XXX: chip can show delta */ + SIGCHG(bes & UART_MSR_CTS, sig, SER_CTS, SER_DCTS); + SIGCHG(bes & UART_MSR_DCD, sig, SER_DCD, SER_DDCD); + SIGCHG(bes & UART_MSR_DSR, sig, SER_DSR, SER_DDSR); + new = sig & ~SER_MASK_DELTA; + } while (!atomic_cmpset_32(&sc->sc_hwsig, old, new)); + + return (sig); +} + +static int +mtk_uart_bus_ioctl(struct uart_softc *sc, int request, intptr_t data) +{ + struct uart_bas *bas; + int baudrate, divisor, error; + + bas = &sc->sc_bas; + error = 0; + uart_lock(sc->sc_hwmtx); + switch (request) { + case UART_IOCTL_BREAK: + /* TODO: Send BREAK */ + break; + case UART_IOCTL_BAUD: + divisor = uart_getreg(bas, UART_CDDL_REG); + baudrate = bas->rclk / (divisor * 16); + *(int*)data = baudrate; + break; + default: + error = EINVAL; + break; + } + uart_unlock(sc->sc_hwmtx); + return (error); +} + +static int +mtk_uart_bus_ipend(struct uart_softc *sc) +{ + struct uart_bas *bas; + int ipend; + uint8_t iir, lsr, msr; + +// breakpoint(); + + bas = &sc->sc_bas; + ipend = 0; + + uart_lock(sc->sc_hwmtx); + iir = uart_getreg(&sc->sc_bas, UART_IIR_REG); + lsr = uart_getreg(&sc->sc_bas, UART_LSR_REG); + uart_setreg(&sc->sc_bas, UART_LSR_REG, lsr); + msr = uart_getreg(&sc->sc_bas, UART_MSR_REG); + uart_setreg(&sc->sc_bas, UART_MSR_REG, msr); + if (iir & UART_IIR_INTP) { + uart_unlock(sc->sc_hwmtx); + return (0); + } + switch ((iir >> 1) & 0x07) { + case UART_IIR_ID_THRE: + ipend |= SER_INT_TXIDLE; + break; + case UART_IIR_ID_DR2: + mtk_uart_bus_flush(sc, UART_FLUSH_RECEIVER); + /* passthrough */ + case UART_IIR_ID_DR: + ipend |= SER_INT_RXREADY; + break; + case UART_IIR_ID_MST: + case UART_IIR_ID_LINESTATUS: + ipend |= SER_INT_SIGCHG; + if (lsr & UART_LSR_BI) + ipend |= SER_INT_BREAK; + if (lsr & UART_LSR_OE) + ipend |= SER_INT_OVERRUN; + break; + default: + /* XXX: maybe return error here */ + break; + } + + uart_unlock(sc->sc_hwmtx); + + return (ipend); +} + +static int +mtk_uart_bus_param(struct uart_softc *sc, int baudrate, int databits, + int stopbits, int parity) +{ + uart_lock(sc->sc_hwmtx); + mtk_uart_init(&sc->sc_bas, baudrate, databits, stopbits, parity); + uart_unlock(sc->sc_hwmtx); + return (0); +} + +static int +mtk_uart_bus_probe(struct uart_softc *sc) +{ + int error; + + error = mtk_uart_probe(&sc->sc_bas); + if (error) + return (error); + + device_set_desc(sc->sc_dev, "MTK UART Controller"); + + return (0); +} + +static int +mtk_uart_bus_receive(struct uart_softc *sc) +{ + struct uart_bas *bas; + int xc; + uint8_t lsr; + + bas = &sc->sc_bas; + uart_lock(sc->sc_hwmtx); + lsr = uart_getreg(bas, UART_LSR_REG); + while ((lsr & UART_LSR_DR)) { + if (uart_rx_full(sc)) { + sc->sc_rxbuf[sc->sc_rxput] = UART_STAT_OVERRUN; + break; + } + xc = 0; + xc = uart_getreg(bas, UART_RX_REG); + if (lsr & UART_LSR_FE) + xc |= UART_STAT_FRAMERR; + if (lsr & UART_LSR_PE) + xc |= UART_STAT_PARERR; + if (lsr & UART_LSR_OE) + xc |= UART_STAT_OVERRUN; + uart_barrier(bas); + uart_rx_put(sc, xc); + lsr = uart_getreg(bas, UART_LSR_REG); + } + + uart_unlock(sc->sc_hwmtx); + return (0); +} + +static int +mtk_uart_bus_setsig(struct uart_softc *sc, int sig) +{ + /* TODO: implement (?) */ + return (sig); +} + +static int +mtk_uart_bus_transmit(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + int i; + + if (!uart_output) return (0); + + bas = &sc->sc_bas; + uart_lock(sc->sc_hwmtx); + while ((uart_getreg(bas, UART_LSR_REG) & UART_LSR_THRE) == 0); + mtk_uart_enable_txintr(sc); + for (i = 0; i < sc->sc_txdatasz; i++) { + uart_setreg(bas, UART_TX_REG, sc->sc_txbuf[i]); + uart_barrier(bas); + } + sc->sc_txbusy = 1; + uart_unlock(sc->sc_hwmtx); + return (0); +} + +void +mtk_uart_bus_grab(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + struct uart_mtk_softc *usc = (struct uart_mtk_softc *)sc; + + uart_lock(sc->sc_hwmtx); + usc->ier = uart_getreg(bas, UART_IER_REG); + uart_setreg(bas, UART_IER_REG, usc->ier & usc->ier_mask); + uart_barrier(bas); + uart_unlock(sc->sc_hwmtx); +} + +void +mtk_uart_bus_ungrab(struct uart_softc *sc) +{ + struct uart_mtk_softc *usc = (struct uart_mtk_softc *)sc; + struct uart_bas *bas = &sc->sc_bas; + + uart_lock(sc->sc_hwmtx); + uart_setreg(bas, UART_IER_REG, usc->ier); + uart_barrier(bas); + uart_unlock(sc->sc_hwmtx); +} diff --git a/sys/mips/mediatek/uart_dev_mtk.h b/sys/mips/mediatek/uart_dev_mtk.h new file mode 100644 index 0000000..44fcdd8 --- /dev/null +++ b/sys/mips/mediatek/uart_dev_mtk.h @@ -0,0 +1,126 @@ +/*- + * Copyright (c) 2010 Aleksandr Rybalko. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * $FreeBSD$ + */ +#ifndef _MTKUART_H +#define _MTKUART_H + +#undef uart_getreg +#undef uart_setreg +#define uart_getreg(bas, reg) \ + bus_space_read_4((bas)->bst, (bas)->bsh, reg) +#define uart_setreg(bas, reg, value) \ + bus_space_write_4((bas)->bst, (bas)->bsh, reg, value) + +/* UART registers */ +#define UART_RX_REG 0x00 +#define UART_TX_REG 0x04 + +#define UART_IER_REG 0x08 +#define UART_IER_EDSSI (1<<3) /* Only full UART */ +#define UART_IER_ELSI (1<<2) +#define UART_IER_ETBEI (1<<1) +#define UART_IER_ERBFI (1<<0) + +#define UART_IIR_REG 0x0c +#define UART_IIR_RXFIFO (1<<7) +#define UART_IIR_TXFIFO (1<<6) +#define UART_IIR_ID_MST 0 +#define UART_IIR_ID_THRE 1 +#define UART_IIR_ID_DR 2 +#define UART_IIR_ID_LINESTATUS 3 +#define UART_IIR_ID_DR2 6 +#define UART_IIR_ID_SHIFT 1 +#define UART_IIR_ID_MASK 0x0000000e +#define UART_IIR_INTP (1<<0) + +#define UART_FCR_REG 0x10 +#define UART_FCR_RXTGR_1 (0<<6) +#define UART_FCR_RXTGR_4 (1<<6) +#define UART_FCR_RXTGR_8 (2<<6) +#define UART_FCR_RXTGR_12 (3<<6) +#define UART_FCR_TXTGR_1 (0<<4) +#define UART_FCR_TXTGR_4 (1<<4) +#define UART_FCR_TXTGR_8 (2<<4) +#define UART_FCR_TXTGR_12 (3<<4) +#define UART_FCR_DMA (1<<3) +#define UART_FCR_TXRST (1<<2) +#define UART_FCR_RXRST (1<<1) +#define UART_FCR_FIFOEN (1<<0) + +#define UART_LCR_REG 0x14 +#define UART_LCR_DLAB (1<<7) +#define UART_LCR_BRK (1<<6) +#define UART_LCR_FPAR (1<<5) +#define UART_LCR_EVEN (1<<4) +#define UART_LCR_PEN (1<<3) +#define UART_LCR_STB_15 (1<<2) +#define UART_LCR_5B 0 +#define UART_LCR_6B 1 +#define UART_LCR_7B 2 +#define UART_LCR_8B 3 + +#define UART_MCR_REG 0x18 +#define UART_MCR_LOOP (1<<4) +#define UART_MCR_OUT2_L (1<<3) /* Only full UART */ +#define UART_MCR_OUT1_L (1<<2) /* Only full UART */ +#define UART_MCR_RTS_L (1<<1) /* Only full UART */ +#define UART_MCR_DTR_L (1<<0) /* Only full UART */ + +#define UART_LSR_REG 0x1c +#define UART_LSR_ERINF (1<<7) +#define UART_LSR_TEMT (1<<6) +#define UART_LSR_THRE (1<<5) +#define UART_LSR_BI (1<<4) +#define UART_LSR_FE (1<<3) +#define UART_LSR_PE (1<<2) +#define UART_LSR_OE (1<<1) +#define UART_LSR_DR (1<<0) + +#define UART_MSR_REG 0x20 /* Only full UART */ +#define UART_MSR_DCD (1<<7) /* Only full UART */ +#define UART_MSR_RI (1<<6) /* Only full UART */ +#define UART_MSR_DSR (1<<5) /* Only full UART */ +#define UART_MSR_CTS (1<<4) /* Only full UART */ +#define UART_MSR_DDCD (1<<3) /* Only full UART */ +#define UART_MSR_TERI (1<<2) /* Only full UART */ +#define UART_MSR_DDSR (1<<1) /* Only full UART */ +#define UART_MSR_DCTS (1<<0) /* Only full UART */ + +#define UART_CDDL_REG 0x28 +#define UART_CDDLL_REG 0x2c +#define UART_CDDLH_REG 0x30 + +#define UART_IFCTL_REG 0x34 +#define UART_IFCTL_IFCTL (1<<0) + +int uart_cnattach(void); +#endif /* _MTKUART_H */ diff --git a/sys/mips/mediatek/uart_dev_mtk_ns8250.c b/sys/mips/mediatek/uart_dev_mtk_ns8250.c new file mode 100644 index 0000000..3c259ff --- /dev/null +++ b/sys/mips/mediatek/uart_dev_mtk_ns8250.c @@ -0,0 +1,113 @@ +/*- + * Copyright (c) 2013 Ian Lepore + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "opt_platform.h" + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/bus.h> +#include <sys/conf.h> +#include <sys/kernel.h> +#include <sys/sysctl.h> +#include <machine/bus.h> + +#include <mips/mediatek/mtk_soc.h> +#include <mips/mediatek/mtk_sysctl.h> + +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/ofw_bus.h> +#include <dev/ofw/ofw_bus_subr.h> + +#include <dev/uart/uart.h> +#include <dev/uart/uart_cpu.h> +#include <dev/uart/uart_cpu_fdt.h> +#include <dev/uart/uart_bus.h> +#include <dev/uart/uart_dev_ns8250.h> + +#include "uart_if.h" + +/* + * High-level UART interface. + */ +static struct uart_class uart_mtk_ns8250_class; +static int mtk_ns8250_bus_probe(struct uart_softc *); + +static kobj_method_t mtk_ns8250_methods[] = { + KOBJMETHOD(uart_probe, mtk_ns8250_bus_probe), + + KOBJMETHOD(uart_attach, ns8250_bus_attach), + KOBJMETHOD(uart_detach, ns8250_bus_detach), + KOBJMETHOD(uart_flush, ns8250_bus_flush), + KOBJMETHOD(uart_getsig, ns8250_bus_getsig), + KOBJMETHOD(uart_ioctl, ns8250_bus_ioctl), + KOBJMETHOD(uart_ipend, ns8250_bus_ipend), + KOBJMETHOD(uart_param, ns8250_bus_param), + KOBJMETHOD(uart_receive, ns8250_bus_receive), + KOBJMETHOD(uart_setsig, ns8250_bus_setsig), + KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD_END +}; + +static struct uart_class uart_mtk_ns8250_class = { + "mtk8250", + mtk_ns8250_methods, + sizeof(struct ns8250_softc), + .uc_ops = &uart_ns8250_ops, + .uc_range = 1, /* use hinted range */ + .uc_rclk = 0, + .uc_rshift = 2 +}; + +static struct ofw_compat_data compat_data[] = { + { "mtk,ns16550a", (uintptr_t)&uart_mtk_ns8250_class }, + { "ns16550a", (uintptr_t)&uart_mtk_ns8250_class }, + { NULL, (uintptr_t)NULL }, +}; +UART_FDT_CLASS_AND_DEVICE(compat_data); + +static int +mtk_ns8250_bus_probe(struct uart_softc *sc) +{ + int status; + + if (!ofw_bus_status_okay(sc->sc_dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(sc->sc_dev, compat_data)->ocd_data == + (uintptr_t)NULL) + return (ENXIO); + + sc->sc_bas.rclk = mtk_soc_get_uartclk(); + + status = ns8250_bus_probe(sc); + if (status == 0) + device_set_desc(sc->sc_dev, "MTK UART Controller (ns16550a)"); + + return (status); +} diff --git a/sys/mips/mips/db_disasm.c b/sys/mips/mips/db_disasm.c index 14788ed..108c9dd 100644 --- a/sys/mips/mips/db_disasm.c +++ b/sys/mips/mips/db_disasm.c @@ -226,7 +226,7 @@ md_printins(int ins, int mdbdot) default: db_printf("\t%s,%s,%s", reg_name[i.RType.rd], reg_name[i.RType.rs], reg_name[i.RType.rt]); - }; + } break; case OP_BCOND: @@ -288,7 +288,7 @@ md_printins(int ins, int mdbdot) default: db_printf("%s", c0_opname[i.FRType.func]); - }; + } break; case OP_COP1: @@ -323,7 +323,7 @@ md_printins(int ins, int mdbdot) db_printf("%s.%s\tf%d,f%d,f%d", cop1_name[i.FRType.func], fmt_name[i.FRType.fmt], i.FRType.fd, i.FRType.fs, i.FRType.ft); - }; + } break; case OP_J: diff --git a/sys/mips/mips/db_trace.c b/sys/mips/mips/db_trace.c index 445600c..1359a53 100644 --- a/sys/mips/mips/db_trace.c +++ b/sys/mips/mips/db_trace.c @@ -260,7 +260,7 @@ loop: case OP_SYSCALL: case OP_BREAK: more = 1; /* stop now */ - }; + } break; case OP_BCOND: @@ -281,7 +281,7 @@ loop: case OP_BCx: case OP_BCy: more = 2; /* stop after next instruction */ - }; + } break; case OP_SW: diff --git a/sys/mips/mips/mips_pic.c b/sys/mips/mips/mips_pic.c index 4e97c41..a24647d 100644 --- a/sys/mips/mips/mips_pic.c +++ b/sys/mips/mips/mips_pic.c @@ -71,15 +71,24 @@ __FBSDID("$FreeBSD$"); static int mips_pic_intr(void *); +struct mips_pic_irqsrc { + struct intr_irqsrc isrc; + struct resource *res; + u_int irq; +}; + struct mips_pic_softc { - device_t pic_dev; - struct intr_irqsrc * pic_irqs[NREAL_IRQS]; - struct mtx mutex; - uint32_t nirqs; + device_t pic_dev; + struct mips_pic_irqsrc pic_irqs[NREAL_IRQS]; + struct rman pic_irq_rman; + struct mtx mutex; + uint32_t nirqs; }; static struct mips_pic_softc *pic_sc; +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pic_irqs[(irq)].isrc) + #ifdef FDT static struct ofw_compat_data compat_data[] = { {"mti,cpu-interrupt-controller", true}, @@ -125,13 +134,6 @@ pic_irq_mask(struct mips_pic_softc *sc, u_int irq) mips_wr_status(mips_rd_status() & ~((1 << irq) << 8)); } -#ifdef SMP -static void -mips_pic_init_secondary(device_t dev) -{ -} -#endif /* SMP */ - static inline intptr_t pic_xref(device_t dev) { @@ -143,6 +145,46 @@ pic_xref(device_t dev) } static int +mips_pic_register_isrcs(struct mips_pic_softc *sc) +{ + int error; + uint32_t irq, i, tmpirq; + struct intr_irqsrc *isrc; + char *name; + + for (irq = 0; irq < sc->nirqs; irq++) { + sc->pic_irqs[irq].irq = irq; + sc->pic_irqs[irq].res = rman_reserve_resource(&sc->pic_irq_rman, + irq, irq, 1, RF_ACTIVE, sc->pic_dev); + if (sc->pic_irqs[irq].res == NULL) { + device_printf(sc->pic_dev, + "%s failed to alloc resource for irq %u", + __func__, irq); + return (ENOMEM); + } + isrc = PIC_INTR_ISRC(sc, irq); + if (irq < NSOFT_IRQS) { + name = "sint"; + tmpirq = irq; + } else { + name = "int"; + tmpirq = irq - NSOFT_IRQS; + } + error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s%u", + name, tmpirq); + if (error != 0) { + for (i = 0; i < irq; i++) { + intr_isrc_deregister(PIC_INTR_ISRC(sc, i)); + } + device_printf(sc->pic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int mips_pic_attach(device_t dev) { struct mips_pic_softc *sc; @@ -162,6 +204,21 @@ mips_pic_attach(device_t dev) /* Set the number of interrupts */ sc->nirqs = nitems(sc->pic_irqs); + /* Init the IRQ rman */ + sc->pic_irq_rman.rm_type = RMAN_ARRAY; + sc->pic_irq_rman.rm_descr = "MIPS PIC IRQs"; + if (rman_init(&sc->pic_irq_rman) != 0 || + rman_manage_region(&sc->pic_irq_rman, 0, sc->nirqs - 1) != 0) { + device_printf(dev, "failed to setup IRQ rman\n"); + goto cleanup; + } + + /* Register the interrupts */ + if (mips_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto cleanup; + } + /* * Now, when everything is initialized, it's right time to * register interrupt controller to interrupt framefork. @@ -174,7 +231,7 @@ mips_pic_attach(device_t dev) /* Claim our root controller role */ if (intr_pic_claim_root(dev, xref, mips_pic_intr, sc, 0) != 0) { device_printf(dev, "could not set PIC as a root\n"); - intr_pic_unregister(dev, xref); + intr_pic_deregister(dev, xref); goto cleanup; } @@ -189,7 +246,6 @@ mips_pic_intr(void *arg) { struct mips_pic_softc *sc = arg; register_t cause, status; - struct intr_irqsrc *isrc; int i, intr; cause = mips_rd_cause(); @@ -205,15 +261,13 @@ mips_pic_intr(void *arg) i--; /* Get a 0-offset interrupt. */ intr &= ~(1 << i); - isrc = sc->pic_irqs[i]; - if (isrc == NULL) { + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { device_printf(sc->pic_dev, "Stray interrupt %u detected\n", i); pic_irq_mask(sc, i); continue; } - - intr_irq_dispatch(isrc, curthread->td_intr_frame); } KASSERT(i == 0, ("all interrupts handled")); @@ -228,178 +282,56 @@ mips_pic_intr(void *arg) return (FILTER_HANDLED); } -static int -pic_attach_isrc(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int irq) -{ - - /* - * 1. The link between ISRC and controller must be set atomically. - * 2. Just do things only once in rare case when consumers - * of shared interrupt came here at the same moment. - */ - mtx_lock_spin(&sc->mutex); - if (sc->pic_irqs[irq] != NULL) { - mtx_unlock_spin(&sc->mutex); - return (sc->pic_irqs[irq] == isrc ? 0 : EEXIST); - } - sc->pic_irqs[irq] = isrc; - isrc->isrc_data = irq; - mtx_unlock_spin(&sc->mutex); - - if (irq < NSOFT_IRQS) - intr_irq_set_name(isrc, "sint%u", irq); - else if (irq < NREAL_IRQS) - intr_irq_set_name(isrc, "int%u", irq - NSOFT_IRQS); - else - panic("Invalid irq %u", irq); - return (0); -} - -static int -pic_detach_isrc(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int irq) +static void +mips_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) { + u_int irq; - mtx_lock_spin(&sc->mutex); - if (sc->pic_irqs[irq] != isrc) { - mtx_unlock_spin(&sc->mutex); - return (sc->pic_irqs[irq] == NULL ? 0 : EINVAL); - } - sc->pic_irqs[irq] = NULL; - isrc->isrc_data = 0; - mtx_unlock_spin(&sc->mutex); - - intr_irq_set_name(isrc, "%s", ""); - return (0); + irq = ((struct mips_pic_irqsrc *)isrc)->irq; + pic_irq_mask(device_get_softc(dev), irq); } -static int -pic_irq_from_nspc(struct mips_pic_softc *sc, u_int type, u_int num, u_int *irqp) +static void +mips_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) { + u_int irq; - switch (type) { - case INTR_IRQ_NSPC_PLAIN: - *irqp = num; - return (*irqp < sc->nirqs ? 0 : EINVAL); - - case INTR_IRQ_NSPC_SWI: - *irqp = num; - return (num < NSOFT_IRQS ? 0 : EINVAL); - - case INTR_IRQ_NSPC_IRQ: - *irqp = num + NSOFT_IRQS; - return (num < NHARD_IRQS ? 0 : EINVAL); - - default: - return (EINVAL); - } + irq = ((struct mips_pic_irqsrc *)isrc)->irq; + pic_irq_unmask(device_get_softc(dev), irq); } static int -pic_map_nspc(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int *irqp) +mips_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) { - int error; - - error = pic_irq_from_nspc(sc, isrc->isrc_nspc_type, isrc->isrc_nspc_num, - irqp); - if (error != 0) - return (error); - return (pic_attach_isrc(sc, isrc, *irqp)); -} - #ifdef FDT -static int -pic_map_fdt(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int *irqp) -{ - u_int irq; - int error; + struct mips_pic_softc *sc; - irq = isrc->isrc_cells[0]; + sc = device_get_softc(dev); - if (irq >= sc->nirqs) + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) return (EINVAL); - error = pic_attach_isrc(sc, isrc, irq); - if (error != 0) - return (error); - - isrc->isrc_nspc_type = INTR_IRQ_NSPC_PLAIN; - isrc->isrc_nspc_num = irq; - isrc->isrc_trig = INTR_TRIGGER_CONFORM; - isrc->isrc_pol = INTR_POLARITY_CONFORM; - - *irqp = irq; + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); return (0); -} -#endif - -static int -mips_pic_register(device_t dev, struct intr_irqsrc *isrc, boolean_t *is_percpu) -{ - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq; - int error; - - if (isrc->isrc_type == INTR_ISRCT_NAMESPACE) - error = pic_map_nspc(sc, isrc, &irq); -#ifdef FDT - else if (isrc->isrc_type == INTR_ISRCT_FDT) - error = pic_map_fdt(sc, isrc, &irq); +#else + return (EINVAL); #endif - else - return (EINVAL); - - if (error == 0) - *is_percpu = TRUE; - return (error); -} - -static void -mips_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) -{ - - if (isrc->isrc_trig == INTR_TRIGGER_CONFORM) - isrc->isrc_trig = INTR_TRIGGER_LEVEL; -} - -static void -mips_pic_enable_source(device_t dev, struct intr_irqsrc *isrc) -{ - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq = isrc->isrc_data; - - pic_irq_unmask(sc, irq); -} - -static void -mips_pic_disable_source(device_t dev, struct intr_irqsrc *isrc) -{ - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq = isrc->isrc_data; - - pic_irq_mask(sc, irq); -} - -static int -mips_pic_unregister(device_t dev, struct intr_irqsrc *isrc) -{ - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq = isrc->isrc_data; - - return (pic_detach_isrc(sc, isrc, irq)); } static void mips_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) { - mips_pic_disable_source(dev, isrc); + mips_pic_disable_intr(dev, isrc); } static void mips_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) { - mips_pic_enable_source(dev, isrc); + mips_pic_enable_intr(dev, isrc); } static void @@ -407,19 +339,6 @@ mips_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) { } -#ifdef SMP -static int -mips_pic_bind(device_t dev, struct intr_irqsrc *isrc) -{ - return (EOPNOTSUPP); -} - -static void -mips_pic_ipi_send(device_t dev, struct intr_irqsrc *isrc, cpuset_t cpus) -{ -} -#endif - static device_method_t mips_pic_methods[] = { /* Device interface */ #ifndef FDT @@ -427,20 +346,15 @@ static device_method_t mips_pic_methods[] = { #endif DEVMETHOD(device_probe, mips_pic_probe), DEVMETHOD(device_attach, mips_pic_attach), + /* Interrupt controller interface */ - DEVMETHOD(pic_disable_source, mips_pic_disable_source), + DEVMETHOD(pic_disable_intr, mips_pic_disable_intr), DEVMETHOD(pic_enable_intr, mips_pic_enable_intr), - DEVMETHOD(pic_enable_source, mips_pic_enable_source), - DEVMETHOD(pic_post_filter, mips_pic_post_filter), - DEVMETHOD(pic_post_ithread, mips_pic_post_ithread), + DEVMETHOD(pic_map_intr, mips_pic_map_intr), DEVMETHOD(pic_pre_ithread, mips_pic_pre_ithread), - DEVMETHOD(pic_register, mips_pic_register), - DEVMETHOD(pic_unregister, mips_pic_unregister), -#ifdef SMP - DEVMETHOD(pic_bind, mips_pic_bind), - DEVMETHOD(pic_init_secondary, mips_pic_init_secondary), - DEVMETHOD(pic_ipi_send, mips_pic_ipi_send), -#endif + DEVMETHOD(pic_post_ithread, mips_pic_post_ithread), + DEVMETHOD(pic_post_filter, mips_pic_post_filter), + { 0, 0 } }; @@ -469,7 +383,6 @@ void cpu_establish_hardintr(const char *name, driver_filter_t *filt, void (*handler)(void*), void *arg, int irq, int flags, void **cookiep) { - u_int vec; int res; /* @@ -479,17 +392,11 @@ cpu_establish_hardintr(const char *name, driver_filter_t *filt, panic("%s called for unknown hard intr %d", __func__, irq); KASSERT(pic_sc != NULL, ("%s: no pic", __func__)); - vec = intr_namespace_map_irq(pic_sc->pic_dev, INTR_IRQ_NSPC_IRQ, irq); - KASSERT(vec != NIRQ, ("Unable to map hard IRQ %d\n", irq)); - res = intr_irq_add_handler(pic_sc->pic_dev, filt, handler, arg, vec, - flags, cookiep); + irq += NSOFT_IRQS; + res = intr_setup_irq(pic_sc->pic_dev, pic_sc->pic_irqs[irq].res, filt, + handler, arg, flags, cookiep); if (res != 0) panic("Unable to add hard IRQ %d handler", irq); - - (void)pic_irq_from_nspc(pic_sc, INTR_IRQ_NSPC_IRQ, irq, &vec); - KASSERT(pic_sc->pic_irqs[vec] != NULL, - ("Hard IRQ %d not registered\n", irq)); - intr_irq_set_name(pic_sc->pic_irqs[vec], "%s", name); } void @@ -497,23 +404,15 @@ cpu_establish_softintr(const char *name, driver_filter_t *filt, void (*handler)(void*), void *arg, int irq, int flags, void **cookiep) { - u_int vec; int res; if (irq < 0 || irq > NSOFT_IRQS) panic("%s called for unknown soft intr %d", __func__, irq); KASSERT(pic_sc != NULL, ("%s: no pic", __func__)); - vec = intr_namespace_map_irq(pic_sc->pic_dev, INTR_IRQ_NSPC_SWI, irq); - KASSERT(vec <= NIRQ, ("Unable to map soft IRQ %d\n", irq)); - intr_irq_add_handler(pic_sc->pic_dev, filt, handler, arg, vec, - flags, cookiep); + res = intr_setup_irq(pic_sc->pic_dev, pic_sc->pic_irqs[irq].res, filt, + handler, arg, flags, cookiep); if (res != 0) panic("Unable to add soft IRQ %d handler", irq); - - (void)pic_irq_from_nspc(pic_sc, INTR_IRQ_NSPC_SWI, irq, &vec); - KASSERT(pic_sc->pic_irqs[vec] != NULL, - ("Soft IRQ %d not registered\n", irq)); - intr_irq_set_name(pic_sc->pic_irqs[vec], "%s", name); } diff --git a/sys/mips/mips/nexus.c b/sys/mips/mips/nexus.c index 89049f0..a2a8e527 100644 --- a/sys/mips/mips/nexus.c +++ b/sys/mips/mips/nexus.c @@ -457,14 +457,11 @@ static int nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) { - int irq; #ifdef MIPS_INTRNG - for (irq = rman_get_start(res); irq <= rman_get_end(res); irq++) { - intr_irq_add_handler(child, filt, intr, arg, irq, flags, - cookiep); - } + return (intr_setup_irq(child, res, filt, intr, arg, flags, cookiep)); #else + int irq; register_t s; s = intr_disable(); @@ -477,8 +474,9 @@ nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, cpu_establish_hardintr(device_get_nameunit(child), filt, intr, arg, irq, flags, cookiep); intr_restore(s); -#endif + return (0); +#endif } static int @@ -486,7 +484,7 @@ nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih) { #ifdef MIPS_INTRNG - return (intr_irq_remove_handler(child, rman_get_start(r), ih)); + return (intr_teardown_irq(child, r, ih)); #else printf("Unimplemented %s at %s:%d\n", __func__, __FILE__, __LINE__); return (0); @@ -499,7 +497,8 @@ nexus_config_intr(device_t dev, int irq, enum intr_trigger trig, enum intr_polarity pol) { - return (intr_irq_config(irq, trig, pol)); + device_printf(dev, "bus_config_intr is obsolete and not supported!\n"); + return (EOPNOTSUPP); } static int @@ -507,7 +506,7 @@ nexus_describe_intr(device_t dev, device_t child, struct resource *irq, void *cookie, const char *descr) { - return (intr_irq_describe(rman_get_start(irq), cookie, descr)); + return (intr_describe_irq(child, irq, cookie, descr)); } #ifdef SMP @@ -515,7 +514,7 @@ static int nexus_bind_intr(device_t dev, device_t child, struct resource *irq, int cpu) { - return (intr_irq_bind(rman_get_start(irq), cpu)); + return (intr_bind_irq(child, irq, cpu)); } #endif diff --git a/sys/mips/mips/ofw_machdep.c b/sys/mips/mips/ofw_machdep.c index 26bc260..6b840e7 100644 --- a/sys/mips/mips/ofw_machdep.c +++ b/sys/mips/mips/ofw_machdep.c @@ -1,6 +1,6 @@ /*- * Copyright (c) 2015 Ian Lepore <ian@freebsd.org> - * All rights excluded. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/sys/modules/cxgbe/if_cxgbe/Makefile b/sys/modules/cxgbe/if_cxgbe/Makefile index df343b2..967683b 100644 --- a/sys/modules/cxgbe/if_cxgbe/Makefile +++ b/sys/modules/cxgbe/if_cxgbe/Makefile @@ -8,6 +8,7 @@ CXGBE= ${.CURDIR}/../../../dev/cxgbe KMOD= if_cxgbe SRCS= bus_if.h SRCS+= device_if.h +SRCS+= opt_ddb.h SRCS+= opt_inet.h SRCS+= opt_inet6.h SRCS+= opt_ofed.h diff --git a/sys/modules/kbdmux/Makefile b/sys/modules/kbdmux/Makefile index 70b39a0..363343a 100644 --- a/sys/modules/kbdmux/Makefile +++ b/sys/modules/kbdmux/Makefile @@ -4,7 +4,7 @@ .PATH: ${.CURDIR}/../../dev/kbdmux KMOD= kbdmux -SRCS= kbdmux.c opt_compat.h opt_kbd.h bus_if.h device_if.h +SRCS= kbdmux.c opt_compat.h opt_kbd.h opt_kbdmux.h bus_if.h device_if.h .if !defined(KERNBUILDDIR) opt_compat.h: diff --git a/sys/net/bpf.c b/sys/net/bpf.c index 54dd184..5f2ef71 100644 --- a/sys/net/bpf.c +++ b/sys/net/bpf.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include "opt_bpf.h" #include "opt_compat.h" +#include "opt_ddb.h" #include "opt_netgraph.h" #include <sys/types.h> @@ -67,6 +68,10 @@ __FBSDID("$FreeBSD$"); #include <sys/socket.h> +#ifdef DDB +#include <ddb/ddb.h> +#endif + #include <net/if.h> #include <net/if_var.h> #include <net/if_dl.h> @@ -2569,6 +2574,32 @@ bpfattach2(struct ifnet *ifp, u_int dlt, u_int hdrlen, struct bpf_if **driverp) if_printf(ifp, "bpf attached\n"); } +#ifdef VIMAGE +/* + * When moving interfaces between vnet instances we need a way to + * query the dlt and hdrlen before detach so we can re-attch the if_bpf + * after the vmove. We unfortunately have no device driver infrastructure + * to query the interface for these values after creation/attach, thus + * add this as a workaround. + */ +int +bpf_get_bp_params(struct bpf_if *bp, u_int *bif_dlt, u_int *bif_hdrlen) +{ + + if (bp == NULL) + return (ENXIO); + if (bif_dlt == NULL && bif_hdrlen == NULL) + return (0); + + if (bif_dlt != NULL) + *bif_dlt = bp->bif_dlt; + if (bif_hdrlen != NULL) + *bif_hdrlen = bp->bif_hdrlen; + + return (0); +} +#endif + /* * Detach bpf from an interface. This involves detaching each descriptor * associated with the interface. Notify each descriptor as it's detached @@ -2977,3 +3008,34 @@ bpf_validate(const struct bpf_insn *f, int len) } #endif /* !DEV_BPF && !NETGRAPH_BPF */ + +#ifdef DDB +static void +bpf_show_bpf_if(struct bpf_if *bpf_if) +{ + + if (bpf_if == NULL) + return; + db_printf("%p:\n", bpf_if); +#define BPF_DB_PRINTF(f, e) db_printf(" %s = " f "\n", #e, bpf_if->e); + /* bif_ext.bif_next */ + /* bif_ext.bif_dlist */ + BPF_DB_PRINTF("%#x", bif_dlt); + BPF_DB_PRINTF("%u", bif_hdrlen); + BPF_DB_PRINTF("%p", bif_ifp); + /* bif_lock */ + /* bif_wlist */ + BPF_DB_PRINTF("%#x", bif_flags); +} + +DB_SHOW_COMMAND(bpf_if, db_show_bpf_if) +{ + + if (!have_addr) { + db_printf("usage: show bpf_if <struct bpf_if *>\n"); + return; + } + + bpf_show_bpf_if((struct bpf_if *)addr); +} +#endif diff --git a/sys/net/bpf.h b/sys/net/bpf.h index a74b521..0ffc15ac 100644 --- a/sys/net/bpf.h +++ b/sys/net/bpf.h @@ -1469,6 +1469,9 @@ void bpf_mtap2(struct bpf_if *, void *, u_int, struct mbuf *); void bpfattach(struct ifnet *, u_int, u_int); void bpfattach2(struct ifnet *, u_int, u_int, struct bpf_if **); void bpfdetach(struct ifnet *); +#ifdef VIMAGE +int bpf_get_bp_params(struct bpf_if *, u_int *, u_int *); +#endif void bpfilterattach(int); u_int bpf_filter(const struct bpf_insn *, u_char *, u_int, u_int); diff --git a/sys/net/if.c b/sys/net/if.c index b9e524c..2c44c87 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -1021,8 +1021,16 @@ void if_vmove(struct ifnet *ifp, struct vnet *new_vnet) { struct if_clone *ifc; + u_int bif_dlt, bif_hdrlen; int rc; + /* + * if_detach_internal() will call the eventhandler to notify + * interface departure. That will detach if_bpf. We need to + * safe the dlt and hdrlen so we can re-attach it later. + */ + bpf_get_bp_params(ifp->if_bpf, &bif_dlt, &bif_hdrlen); + /* * Detach from current vnet, but preserve LLADDR info, do not * mark as dead etc. so that the ifnet can be reattached later. @@ -1062,6 +1070,9 @@ if_vmove(struct ifnet *ifp, struct vnet *new_vnet) if_attach_internal(ifp, 1, ifc); + if (ifp->if_bpf == NULL) + bpfattach(ifp, bif_dlt, bif_hdrlen); + CURVNET_RESTORE(); } diff --git a/sys/net/if_gif.c b/sys/net/if_gif.c index 1607af9..cfa4650 100644 --- a/sys/net/if_gif.c +++ b/sys/net/if_gif.c @@ -1023,7 +1023,7 @@ gif_set_tunnel(struct ifnet *ifp, struct sockaddr *src, struct sockaddr *dst) #endif default: return (EAFNOSUPPORT); - }; + } if (sc->gif_family != src->sa_family) gif_detach(sc); diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index 9d4a976..425df8e 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -353,7 +353,7 @@ gre_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) if (error != 0) goto end; #endif - }; + } error = gre_set_tunnel(ifp, src, dst); break; case SIOCDIFPHYADDR: @@ -960,7 +960,7 @@ gre_transmit(struct ifnet *ifp, struct mbuf *m) default: m_freem(m); error = ENETDOWN; - }; + } drop: if (error) if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); diff --git a/sys/net80211/ieee80211_adhoc.c b/sys/net80211/ieee80211_adhoc.c index a9334d0..eca9877 100644 --- a/sys/net80211/ieee80211_adhoc.c +++ b/sys/net80211/ieee80211_adhoc.c @@ -371,10 +371,7 @@ adhoc_input(struct ieee80211_node *ni, struct mbuf *m, /* * Validate the bssid. */ - if (!(type == IEEE80211_FC0_TYPE_MGT && - (subtype == IEEE80211_FC0_SUBTYPE_BEACON || - subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP)) && - !IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) && + if (!IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) && !IEEE80211_ADDR_EQ(bssid, ifp->if_broadcastaddr)) { /* not interested in */ IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT, diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index be380e9..cf78e88 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -136,12 +136,10 @@ const struct ieee80211_mcs_rates ieee80211_htrates[IEEE80211_HTRATE_MAXSIZE] = { { 429, 477, 891, 990 }, /* MCS 76 */ }; -#ifdef IEEE80211_AMPDU_AGE static int ieee80211_ampdu_age = -1; /* threshold for ampdu reorder q (ms) */ SYSCTL_PROC(_net_wlan, OID_AUTO, ampdu_age, CTLTYPE_INT | CTLFLAG_RW, &ieee80211_ampdu_age, 0, ieee80211_sysctl_msecs_ticks, "I", "AMPDU max reorder age (ms)"); -#endif static int ieee80211_recv_bar_ena = 1; SYSCTL_INT(_net_wlan, OID_AUTO, recv_bar, CTLFLAG_RW, &ieee80211_recv_bar_ena, @@ -178,9 +176,7 @@ ieee80211_ht_init(void) /* * Setup HT parameters that depends on the clock frequency. */ -#ifdef IEEE80211_AMPDU_AGE ieee80211_ampdu_age = msecs_to_ticks(500); -#endif ieee80211_addba_timeout = msecs_to_ticks(250); ieee80211_addba_backoff = msecs_to_ticks(10*1000); ieee80211_bar_timeout = msecs_to_ticks(250); @@ -671,7 +667,6 @@ ampdu_rx_dispatch(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni) vap->iv_stats.is_ampdu_rx_oor += i; } -#ifdef IEEE80211_AMPDU_AGE /* * Dispatch all frames in the A-MPDU re-order queue. */ @@ -696,7 +691,6 @@ ampdu_rx_flush(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap) break; } } -#endif /* IEEE80211_AMPDU_AGE */ /* * Dispatch all frames in the A-MPDU re-order queue @@ -864,7 +858,7 @@ again: * Common case (hopefully): in the BA window. * Sec 9.10.7.6.2 a) (p.137) */ -#ifdef IEEE80211_AMPDU_AGE + /* * Check for frames sitting too long in the reorder queue. * This should only ever happen if frames are not delivered @@ -903,7 +897,7 @@ again: */ rap->rxa_age = ticks; } -#endif /* IEEE80211_AMPDU_AGE */ + /* save packet */ if (rap->rxa_m[off] == NULL) { rap->rxa_m[off] = m; @@ -1063,8 +1057,9 @@ ieee80211_ht_node_init(struct ieee80211_node *ni) IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N, ni, - "%s: called", - __func__); + "%s: called (%p)", + __func__, + ni); if (ni->ni_flags & IEEE80211_NODE_HT) { /* @@ -1074,8 +1069,8 @@ ieee80211_ht_node_init(struct ieee80211_node *ni) */ IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N, ni, - "%s: calling cleanup", - __func__); + "%s: calling cleanup (%p)", + __func__, ni); ieee80211_ht_node_cleanup(ni); } for (tid = 0; tid < WME_NUM_TID; tid++) { @@ -1100,8 +1095,8 @@ ieee80211_ht_node_cleanup(struct ieee80211_node *ni) IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N, ni, - "%s: called", - __func__); + "%s: called (%p)", + __func__, ni); KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT node")); @@ -1124,14 +1119,11 @@ ieee80211_ht_node_cleanup(struct ieee80211_node *ni) void ieee80211_ht_node_age(struct ieee80211_node *ni) { -#ifdef IEEE80211_AMPDU_AGE struct ieee80211vap *vap = ni->ni_vap; uint8_t tid; -#endif KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT sta")); -#ifdef IEEE80211_AMPDU_AGE for (tid = 0; tid < WME_NUM_TID; tid++) { struct ieee80211_rx_ampdu *rap; @@ -1154,7 +1146,6 @@ ieee80211_ht_node_age(struct ieee80211_node *ni) ampdu_rx_flush(ni, rap); } } -#endif /* IEEE80211_AMPDU_AGE */ } static struct ieee80211_channel * @@ -2166,7 +2157,7 @@ ieee80211_ampdu_enable(struct ieee80211_node *ni, return 0; /* XXX check rssi? */ if (tap->txa_attempts >= ieee80211_addba_maxtries && - ticks < tap->txa_nextrequest) { + ieee80211_time_after(ticks, tap->txa_nextrequest)) { /* * Don't retry too often; txa_nextrequest is set * to the minimum interval we'll retry after diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index 66afb74..0986145 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -330,9 +330,10 @@ ieee80211_create_ibss(struct ieee80211vap* vap, struct ieee80211_channel *chan) struct ieee80211_node *ni; IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN, - "%s: creating %s on channel %u\n", __func__, + "%s: creating %s on channel %u%c\n", __func__, ieee80211_opmode_name[vap->iv_opmode], - ieee80211_chan2ieee(ic, chan)); + ieee80211_chan2ieee(ic, chan), + ieee80211_channel_type_char(chan)); ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr); if (ni == NULL) { @@ -556,31 +557,18 @@ check_bss_debug(struct ieee80211vap *vap, struct ieee80211_node *ni) } #endif /* IEEE80211_DEBUG */ -/* - * Handle 802.11 ad hoc network merge. The - * convention, set by the Wireless Ethernet Compatibility Alliance - * (WECA), is that an 802.11 station will change its BSSID to match - * the "oldest" 802.11 ad hoc network, on the same channel, that - * has the station's desired SSID. The "oldest" 802.11 network - * sends beacons with the greatest TSF timestamp. - * - * The caller is assumed to validate TSF's before attempting a merge. - * - * Return !0 if the BSSID changed, 0 otherwise. - */ + int -ieee80211_ibss_merge(struct ieee80211_node *ni) +ieee80211_ibss_merge_check(struct ieee80211_node *ni) { struct ieee80211vap *vap = ni->ni_vap; -#ifdef IEEE80211_DEBUG - struct ieee80211com *ic = ni->ni_ic; -#endif if (ni == vap->iv_bss || IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid)) { /* unchanged, nothing to do */ return 0; } + if (!check_bss(vap, ni)) { /* capabilities mismatch */ IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, @@ -592,6 +580,33 @@ ieee80211_ibss_merge(struct ieee80211_node *ni) vap->iv_stats.is_ibss_capmismatch++; return 0; } + + return 1; +} + +/* + * Handle 802.11 ad hoc network merge. The + * convention, set by the Wireless Ethernet Compatibility Alliance + * (WECA), is that an 802.11 station will change its BSSID to match + * the "oldest" 802.11 ad hoc network, on the same channel, that + * has the station's desired SSID. The "oldest" 802.11 network + * sends beacons with the greatest TSF timestamp. + * + * The caller is assumed to validate TSF's before attempting a merge. + * + * Return !0 if the BSSID changed, 0 otherwise. + */ +int +ieee80211_ibss_merge(struct ieee80211_node *ni) +{ +#ifdef IEEE80211_DEBUG + struct ieee80211vap *vap = ni->ni_vap; + struct ieee80211com *ic = ni->ni_ic; +#endif + + if (! ieee80211_ibss_merge_check(ni)) + return 0; + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, "%s: new bssid %s: %s preamble, %s slot time%s\n", __func__, ether_sprintf(ni->ni_bssid), diff --git a/sys/net80211/ieee80211_node.h b/sys/net80211/ieee80211_node.h index e9b7393..9492fc0 100644 --- a/sys/net80211/ieee80211_node.h +++ b/sys/net80211/ieee80211_node.h @@ -330,6 +330,7 @@ void ieee80211_setupcurchan(struct ieee80211com *, struct ieee80211_channel *); void ieee80211_setcurchan(struct ieee80211com *, struct ieee80211_channel *); void ieee80211_update_chw(struct ieee80211com *); +int ieee80211_ibss_merge_check(struct ieee80211_node *); int ieee80211_ibss_merge(struct ieee80211_node *); struct ieee80211_scan_entry; int ieee80211_sta_join(struct ieee80211vap *, struct ieee80211_channel *, diff --git a/sys/net80211/ieee80211_sta.c b/sys/net80211/ieee80211_sta.c index 9c1707b..d80c767 100644 --- a/sys/net80211/ieee80211_sta.c +++ b/sys/net80211/ieee80211_sta.c @@ -1706,6 +1706,14 @@ sta_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, int subtype, } /* + * Always initialise FF/superg state; we can use this + * for doing A-MSDU encapsulation as well. + */ +#ifdef IEEE80211_SUPPORT_SUPERG + ieee80211_ff_node_init(ni); +#endif + + /* * Configure state now that we are associated. * * XXX may need different/additional driver callbacks? diff --git a/sys/netgraph/netflow/ng_netflow.c b/sys/netgraph/netflow/ng_netflow.c index 4f9f953c..a142903 100644 --- a/sys/netgraph/netflow/ng_netflow.c +++ b/sys/netgraph/netflow/ng_netflow.c @@ -609,7 +609,7 @@ ng_netflow_rcvdata (hook_p hook, item_p item) */ log(LOG_ERR, "ng_netflow: incoming data on export hook!\n"); ERROUT(EINVAL); - }; + } if (hook == iface->hook) { if ((iface->info.conf & NG_NETFLOW_CONF_INGRESS) == 0) diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c index 0f48e12..af8505c 100644 --- a/sys/netgraph/ng_base.c +++ b/sys/netgraph/ng_base.c @@ -2056,7 +2056,7 @@ ng_acquire_read(node_p node, item_p item) return (item); } cpu_spinwait(); - }; + } /* Queue the request for later. */ ng_queue_rw(node, item, NGQRW_R); diff --git a/sys/netgraph/ng_ipfw.c b/sys/netgraph/ng_ipfw.c index 092a041..066c31f 100644 --- a/sys/netgraph/ng_ipfw.c +++ b/sys/netgraph/ng_ipfw.c @@ -117,7 +117,7 @@ ng_ipfw_mod_event(module_t mod, int event, void *data) != 0) { log(LOG_ERR, "%s: can't create ng_ipfw node", __func__); break; - }; + } /* Try to name node */ if (ng_name_node(fw_node, "ipfw") != 0) @@ -240,7 +240,7 @@ ng_ipfw_rcvdata(hook_p hook, item_p item) if (tag == NULL) { NG_FREE_M(m); return (EINVAL); /* XXX: find smth better */ - }; + } if (m->m_len < sizeof(struct ip) && (m = m_pullup(m, sizeof(struct ip))) == NULL) diff --git a/sys/netgraph/ng_nat.c b/sys/netgraph/ng_nat.c index 71419d6..cdec6e0 100644 --- a/sys/netgraph/ng_nat.c +++ b/sys/netgraph/ng_nat.c @@ -838,7 +838,7 @@ ng_nat_shutdown(node_p node) struct ng_nat_rdr_lst *entry = STAILQ_FIRST(&priv->redirhead); STAILQ_REMOVE_HEAD(&priv->redirhead, entries); free(entry, M_NETGRAPH); - }; + } /* Final free. */ LibAliasUninit(priv->lib); diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index 3e3bc94..f23a3a8 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -158,8 +158,7 @@ div_init(void) * place for hashbase == NULL. */ in_pcbinfo_init(&V_divcbinfo, "div", &V_divcb, 1, 1, "divcb", - div_inpcb_init, div_inpcb_fini, UMA_ZONE_NOFREE, - IPI_HASHFIELDS_NONE); + div_inpcb_init, div_inpcb_fini, 0, IPI_HASHFIELDS_NONE); } static void diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c index 2eecb95..9f29444 100644 --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -209,8 +209,7 @@ rip_init(void) { in_pcbinfo_init(&V_ripcbinfo, "rip", &V_ripcb, INP_PCBHASH_RAW_SIZE, - 1, "ripcb", rip_inpcb_init, NULL, UMA_ZONE_NOFREE, - IPI_HASHFIELDS_NONE); + 1, "ripcb", rip_inpcb_init, NULL, 0, IPI_HASHFIELDS_NONE); EVENTHANDLER_REGISTER(maxsockets_change, rip_zone_change, NULL, EVENTHANDLER_PRI_ANY); } diff --git a/sys/netinet/sctp.h b/sys/netinet/sctp.h index 784c1d4..ec42cff 100644 --- a/sys/netinet/sctp.h +++ b/sys/netinet/sctp.h @@ -196,6 +196,9 @@ struct sctp_paramhdr { #define SCTP_SS_VALUE 0x00001204 #define SCTP_CC_OPTION 0x00001205 /* Options for CC * modules */ +/* For I-DATA */ +#define SCTP_INTERLEAVING_SUPPORTED 0x00001206 + /* read only */ #define SCTP_GET_SNDBUF_USE 0x00001101 #define SCTP_GET_STAT_LOG 0x00001103 @@ -452,6 +455,7 @@ struct sctp_error_auth_invalid_hmac { /* EY nr_sack chunk id*/ #define SCTP_NR_SELECTIVE_ACK 0x10 /************0x40 series ***********/ +#define SCTP_IDATA 0x40 /************0x80 series ***********/ /* RFC5061 */ #define SCTP_ASCONF_ACK 0x80 @@ -467,7 +471,7 @@ struct sctp_error_auth_invalid_hmac { #define SCTP_FORWARD_CUM_TSN 0xc0 /* RFC5061 */ #define SCTP_ASCONF 0xc1 - +#define SCTP_IFORWARD_CUM_TSN 0xc2 /* ABORT and SHUTDOWN COMPLETE FLAG */ #define SCTP_HAD_NO_TCB 0x01 diff --git a/sys/netinet/sctp_constants.h b/sys/netinet/sctp_constants.h index 497dde6..6c1a014 100644 --- a/sys/netinet/sctp_constants.h +++ b/sys/netinet/sctp_constants.h @@ -386,8 +386,8 @@ __FBSDID("$FreeBSD$"); /* align to 32-bit sizes */ #define SCTP_SIZE32(x) ((((x) + 3) >> 2) << 2) -#define IS_SCTP_CONTROL(a) ((a)->chunk_type != SCTP_DATA) -#define IS_SCTP_DATA(a) ((a)->chunk_type == SCTP_DATA) +#define IS_SCTP_CONTROL(a) (((a)->chunk_type != SCTP_DATA) && ((a)->chunk_type != SCTP_IDATA)) +#define IS_SCTP_DATA(a) (((a)->chunk_type == SCTP_DATA) || ((a)->chunk_type == SCTP_IDATA)) /* SCTP parameter types */ @@ -886,12 +886,19 @@ __FBSDID("$FreeBSD$"); /* modular comparison */ /* See RFC 1982 for details. */ -#define SCTP_SSN_GT(a, b) (((a < b) && ((uint16_t)(b - a) > (1U<<15))) || \ - ((a > b) && ((uint16_t)(a - b) < (1U<<15)))) -#define SCTP_SSN_GE(a, b) (SCTP_SSN_GT(a, b) || (a == b)) -#define SCTP_TSN_GT(a, b) (((a < b) && ((uint32_t)(b - a) > (1U<<31))) || \ - ((a > b) && ((uint32_t)(a - b) < (1U<<31)))) -#define SCTP_TSN_GE(a, b) (SCTP_TSN_GT(a, b) || (a == b)) +#define SCTP_UINT16_GT(a, b) (((a < b) && ((uint16_t)(b - a) > (1U<<15))) || \ + ((a > b) && ((uint16_t)(a - b) < (1U<<15)))) +#define SCTP_UINT16_GE(a, b) (SCTP_UINT16_GT(a, b) || (a == b)) +#define SCTP_UINT32_GT(a, b) (((a < b) && ((uint32_t)(b - a) > (1U<<31))) || \ + ((a > b) && ((uint32_t)(a - b) < (1U<<31)))) +#define SCTP_UINT32_GE(a, b) (SCTP_UINT32_GT(a, b) || (a == b)) + +#define SCTP_SSN_GT(a, b) SCTP_UINT16_GT(a, b) +#define SCTP_SSN_GE(a, b) SCTP_UINT16_GE(a, b) +#define SCTP_TSN_GT(a, b) SCTP_UINT32_GT(a, b) +#define SCTP_TSN_GE(a, b) SCTP_UINT32_GE(a, b) +#define SCTP_MSGID_GT(o, a, b) ((o == 1) ? SCTP_UINT16_GT((uint16_t)a, (uint16_t)b) : SCTP_UINT32_GT(a, b)) +#define SCTP_MSGID_GE(o, a, b) ((o == 1) ? SCTP_UINT16_GE((uint16_t)a, (uint16_t)b) : SCTP_UINT32_GE(a, b)) /* Mapping array manipulation routines */ #define SCTP_IS_TSN_PRESENT(arry, gap) ((arry[(gap >> 3)] >> (gap & 0x07)) & 0x01) diff --git a/sys/netinet/sctp_dtrace_define.h b/sys/netinet/sctp_dtrace_define.h index f34effb..19f44da 100644 --- a/sys/netinet/sctp_dtrace_define.h +++ b/sys/netinet/sctp_dtrace_define.h @@ -45,131 +45,131 @@ SDT_PROVIDER_DEFINE(sctp); /********************************************************/ /* Initial */ SDT_PROBE_DEFINE5(sctp, cwnd, net, init, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ACK-INCREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, ack, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ACK-INCREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, rttvar, - "uint64_t", /* The Vtag << 32 | localport << 16 | remoteport */ - "uint64_t", /* obw | nbw */ - "uint64_t", /* bwrtt | newrtt */ - "uint64_t", /* flight */ - "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ + "uint64_t", /* The Vtag << 32 | localport << 16 | + * remoteport */ + "uint64_t", /* obw | nbw */ + "uint64_t", /* bwrtt | newrtt */ + "uint64_t", /* flight */ + "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ SDT_PROBE_DEFINE5(sctp, cwnd, net, rttstep, - "uint64_t", /* The Vtag << 32 | localport << 16 | remoteport */ - "uint64_t", /* obw | nbw */ - "uint64_t", /* bwrtt | newrtt */ - "uint64_t", /* flight */ - "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ + "uint64_t", /* The Vtag << 32 | localport << 16 | + * remoteport */ + "uint64_t", /* obw | nbw */ + "uint64_t", /* bwrtt | newrtt */ + "uint64_t", /* flight */ + "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ /* FastRetransmit-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, fr, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* TimeOut-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, to, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* BurstLimit-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, bl, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ECN-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, ecn, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* PacketDrop-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, pd, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* Rwnd probe - tracks changes in the receiver window for an assoc */ /********************************************************/ SDT_PROBE_DEFINE4(sctp, rwnd, assoc, val, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "int", /* The up/down amount */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* flight probe - tracks changes in the flight size on a net or assoc */ /********************************************************/ SDT_PROBE_DEFINE5(sctp, flightsize, net, val, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The up/down amount */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* The total flight version */ /********************************************************/ SDT_PROBE_DEFINE4(sctp, flightsize, assoc, val, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "int", /* The up/down amount */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ #endif diff --git a/sys/netinet/sctp_header.h b/sys/netinet/sctp_header.h index dc05b3d..d38c837 100644 --- a/sys/netinet/sctp_header.h +++ b/sys/netinet/sctp_header.h @@ -152,6 +152,23 @@ struct sctp_data_chunk { struct sctp_data dp; } SCTP_PACKED; +struct sctp_idata { + uint32_t tsn; + uint16_t stream_id; + uint16_t reserved; /* Where does the SSN go? */ + uint32_t msg_id; + union { + uint32_t protocol_id; + uint32_t fsn; /* Fragment Sequence Number */ + }; + /* user data follows */ +} SCTP_PACKED; + +struct sctp_idata_chunk { + struct sctp_chunkhdr ch; + struct sctp_idata dp; +} SCTP_PACKED; + /* * Structures for the control chunks */ @@ -378,6 +395,12 @@ struct sctp_strseq { uint16_t sequence; } SCTP_PACKED; +struct sctp_strseq_mid { + uint16_t stream; + uint16_t reserved; + uint32_t msg_id; +}; + struct sctp_forward_tsn_msg { struct sctphdr sh; struct sctp_forward_tsn_chunk msg; diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c index cbc7fb5..76f0ad3 100644 --- a/sys/netinet/sctp_indata.c +++ b/sys/netinet/sctp_indata.c @@ -34,18 +34,22 @@ __FBSDID("$FreeBSD$"); #include <netinet/sctp_os.h> +#include <sys/proc.h> #include <netinet/sctp_var.h> #include <netinet/sctp_sysctl.h> -#include <netinet/sctp_pcb.h> #include <netinet/sctp_header.h> +#include <netinet/sctp_pcb.h> #include <netinet/sctputil.h> #include <netinet/sctp_output.h> -#include <netinet/sctp_input.h> -#include <netinet/sctp_indata.h> #include <netinet/sctp_uio.h> +#include <netinet/sctp_auth.h> #include <netinet/sctp_timer.h> - - +#include <netinet/sctp_asconf.h> +#include <netinet/sctp_indata.h> +#include <netinet/sctp_bsd_addr.h> +#include <netinet/sctp_input.h> +#include <netinet/sctp_crc32.h> +#include <netinet/sctp_lock_bsd.h> /* * NOTES: On the outbound side of things I need to check the sack timer to * see if I should generate a sack into the chunk queue (if I have data to @@ -55,6 +59,13 @@ __FBSDID("$FreeBSD$"); * This will cause sctp_service_queues() to get called on the top entry in * the list. */ +static void +sctp_add_chk_to_control(struct sctp_queued_to_read *control, + struct sctp_stream_in *strm, + struct sctp_tcb *stcb, + struct sctp_association *asoc, + struct sctp_tmit_chunk *chk); + void sctp_set_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) @@ -74,9 +85,9 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) * sctp_soreceive then we will fix this so that ONLY this * associations data is taken into account. */ - if (stcb->sctp_socket == NULL) + if (stcb->sctp_socket == NULL) { return (calc); - + } if (stcb->asoc.sb_cc == 0 && asoc->size_on_reasm_queue == 0 && asoc->size_on_all_streams == 0) { @@ -86,7 +97,6 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) } /* get actual space */ calc = (uint32_t) sctp_sbspace(&stcb->asoc, &stcb->sctp_socket->so_rcv); - /* * take out what has NOT been put on socket queue and we yet hold * for putting up. @@ -95,7 +105,6 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) asoc->cnt_on_reasm_queue * MSIZE)); calc = sctp_sbspace_sub(calc, (uint32_t) (asoc->size_on_all_streams + asoc->cnt_on_all_streams * MSIZE)); - if (calc == 0) { /* out of space */ return (calc); @@ -122,7 +131,7 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t tsn, uint32_t ppid, uint32_t context, uint16_t stream_no, - uint16_t stream_seq, uint8_t flags, + uint32_t stream_seq, uint8_t flags, struct mbuf *dm) { struct sctp_queued_to_read *read_queue_e = NULL; @@ -131,73 +140,26 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, if (read_queue_e == NULL) { goto failed_build; } + memset(read_queue_e, 0, sizeof(struct sctp_queued_to_read)); read_queue_e->sinfo_stream = stream_no; read_queue_e->sinfo_ssn = stream_seq; read_queue_e->sinfo_flags = (flags << 8); read_queue_e->sinfo_ppid = ppid; read_queue_e->sinfo_context = context; - read_queue_e->sinfo_timetolive = 0; read_queue_e->sinfo_tsn = tsn; read_queue_e->sinfo_cumtsn = tsn; read_queue_e->sinfo_assoc_id = sctp_get_associd(stcb); + read_queue_e->top_fsn = read_queue_e->fsn_included = 0xffffffff; + TAILQ_INIT(&read_queue_e->reasm); read_queue_e->whoFrom = net; - read_queue_e->length = 0; atomic_add_int(&net->ref_count, 1); read_queue_e->data = dm; - read_queue_e->spec_flags = 0; - read_queue_e->tail_mbuf = NULL; - read_queue_e->aux_data = NULL; read_queue_e->stcb = stcb; read_queue_e->port_from = stcb->rport; - read_queue_e->do_not_ref_stcb = 0; - read_queue_e->end_added = 0; - read_queue_e->some_taken = 0; - read_queue_e->pdapi_aborted = 0; failed_build: return (read_queue_e); } - -/* - * Build out our readq entry based on the incoming packet. - */ -static struct sctp_queued_to_read * -sctp_build_readq_entry_chk(struct sctp_tcb *stcb, - struct sctp_tmit_chunk *chk) -{ - struct sctp_queued_to_read *read_queue_e = NULL; - - sctp_alloc_a_readq(stcb, read_queue_e); - if (read_queue_e == NULL) { - goto failed_build; - } - read_queue_e->sinfo_stream = chk->rec.data.stream_number; - read_queue_e->sinfo_ssn = chk->rec.data.stream_seq; - read_queue_e->sinfo_flags = (chk->rec.data.rcv_flags << 8); - read_queue_e->sinfo_ppid = chk->rec.data.payloadtype; - read_queue_e->sinfo_context = stcb->asoc.context; - read_queue_e->sinfo_timetolive = 0; - read_queue_e->sinfo_tsn = chk->rec.data.TSN_seq; - read_queue_e->sinfo_cumtsn = chk->rec.data.TSN_seq; - read_queue_e->sinfo_assoc_id = sctp_get_associd(stcb); - read_queue_e->whoFrom = chk->whoTo; - read_queue_e->aux_data = NULL; - read_queue_e->length = 0; - atomic_add_int(&chk->whoTo->ref_count, 1); - read_queue_e->data = chk->data; - read_queue_e->tail_mbuf = NULL; - read_queue_e->stcb = stcb; - read_queue_e->port_from = stcb->rport; - read_queue_e->spec_flags = 0; - read_queue_e->do_not_ref_stcb = 0; - read_queue_e->end_added = 0; - read_queue_e->some_taken = 0; - read_queue_e->pdapi_aborted = 0; -failed_build: - return (read_queue_e); -} - - struct mbuf * sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) { @@ -317,6 +279,7 @@ sctp_mark_non_revokable(struct sctp_association *asoc, uint32_t tsn) { uint32_t gap, i, cumackp1; int fnd = 0; + int in_r = 0, in_nr = 0; if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { return; @@ -330,15 +293,20 @@ sctp_mark_non_revokable(struct sctp_association *asoc, uint32_t tsn) return; } SCTP_CALC_TSN_TO_GAP(gap, tsn, asoc->mapping_array_base_tsn); - if (!SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap)) { + in_r = SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap); + in_nr = SCTP_IS_TSN_PRESENT(asoc->nr_mapping_array, gap); + if ((in_r == 0) && (in_nr == 0)) { +#ifdef INVARIANTS + panic("Things are really messed up now"); +#else SCTP_PRINTF("gap:%x tsn:%x\n", gap, tsn); sctp_print_mapping_array(asoc); -#ifdef INVARIANTS - panic("Things are really messed up now!!"); #endif } - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + if (in_nr == 0) + SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); + if (in_r) + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { asoc->highest_tsn_inside_nr_map = tsn; } @@ -358,191 +326,157 @@ sctp_mark_non_revokable(struct sctp_association *asoc, uint32_t tsn) } } - -/* - * We are delivering currently from the reassembly queue. We must continue to - * deliver until we either: 1) run out of space. 2) run out of sequential - * TSN's 3) hit the SCTP_DATA_LAST_FRAG flag. - */ -static void -sctp_service_reassembly(struct sctp_tcb *stcb, struct sctp_association *asoc) +static int +sctp_place_control_in_stream(struct sctp_stream_in *strm, + struct sctp_association *asoc, + struct sctp_queued_to_read *control) { - struct sctp_tmit_chunk *chk, *nchk; - uint16_t nxt_todel; - uint16_t stream_no; - int end = 0; - int cntDel; - struct sctp_queued_to_read *control, *ctl, *nctl; - - if (stcb == NULL) - return; - - cntDel = stream_no = 0; - if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || - (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) || - (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET)) { - /* socket above is long gone or going.. */ -abandon: - asoc->fragmented_delivery_inprogress = 0; - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* - * Lose the data pointer, since its in the socket - * buffer - */ - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; + struct sctp_queued_to_read *at; + struct sctp_readhead *q; + uint8_t bits, unordered; + + bits = (control->sinfo_flags >> 8); + unordered = bits & SCTP_DATA_UNORDERED; + if (unordered) { + q = &strm->uno_inqueue; + if (asoc->idata_supported == 0) { + if (!TAILQ_EMPTY(q)) { + /* + * Only one stream can be here in old style + * -- abort + */ + return (-1); } - /* Now free the address and data */ - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - /* sa_ignore FREED_MEMORY */ + TAILQ_INSERT_TAIL(q, control, next_instrm); + control->on_strm_q = SCTP_ON_UNORDERED; + return (0); } - return; + } else { + q = &strm->inqueue; } - SCTP_TCB_LOCK_ASSERT(stcb); - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (chk->rec.data.TSN_seq != (asoc->tsn_last_delivered + 1)) { - /* Can't deliver more :< */ - return; - } - stream_no = chk->rec.data.stream_number; - nxt_todel = asoc->strmin[stream_no].last_sequence_delivered + 1; - if (nxt_todel != chk->rec.data.stream_seq && - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0) { - /* - * Not the next sequence to deliver in its stream OR - * unordered - */ - return; - } - if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - - control = sctp_build_readq_entry_chk(stcb, chk); - if (control == NULL) { - /* out of memory? */ - return; - } - /* save it off for our future deliveries */ - stcb->asoc.control_pdapi = control; - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) - end = 1; - else - end = 0; - sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); - sctp_add_to_readq(stcb->sctp_ep, - stcb, control, &stcb->sctp_socket->so_rcv, end, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - cntDel++; + if ((bits & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + control->end_added = control->last_frag_seen = control->first_frag_seen = 1; + } + if (TAILQ_EMPTY(q)) { + /* Empty queue */ + TAILQ_INSERT_HEAD(q, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; } else { - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) - end = 1; - else - end = 0; - sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); - if (sctp_append_to_readq(stcb->sctp_ep, stcb, - stcb->asoc.control_pdapi, - chk->data, end, chk->rec.data.TSN_seq, - &stcb->sctp_socket->so_rcv)) { + control->on_strm_q = SCTP_ON_ORDERED; + } + return (0); + } else { + TAILQ_FOREACH(at, q, next_instrm) { + if (SCTP_TSN_GT(at->msg_id, control->msg_id)) { /* - * something is very wrong, either - * control_pdapi is NULL, or the tail_mbuf - * is corrupt, or there is a EOM already on - * the mbuf chain. + * one in queue is bigger than the new one, + * insert before this one */ - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - goto abandon; + TAILQ_INSERT_BEFORE(at, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; } else { -#ifdef INVARIANTS - if ((stcb->asoc.control_pdapi == NULL) || (stcb->asoc.control_pdapi->tail_mbuf == NULL)) { - panic("This should not happen control_pdapi NULL?"); + control->on_strm_q = SCTP_ON_ORDERED; + } + break; + } else if (at->msg_id == control->msg_id) { + /* + * Gak, He sent me a duplicate msg id + * number?? return -1 to abort. + */ + return (-1); + } else { + if (TAILQ_NEXT(at, next_instrm) == NULL) { + /* + * We are at the end, insert it + * after this one + */ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { + sctp_log_strm_del(control, at, + SCTP_STR_LOG_FROM_INSERT_TL); } - /* if we did not panic, it was a EOM */ - panic("Bad chunking ??"); -#else - if ((stcb->asoc.control_pdapi == NULL) || (stcb->asoc.control_pdapi->tail_mbuf == NULL)) { - SCTP_PRINTF("This should not happen control_pdapi NULL?\n"); + TAILQ_INSERT_AFTER(q, + at, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; + } else { + control->on_strm_q = SCTP_ON_ORDERED; } - SCTP_PRINTF("Bad chunking ??\n"); - SCTP_PRINTF("Dumping re-assembly queue this will probably hose the association\n"); - -#endif - goto abandon; + break; } } - cntDel++; } - /* pull it we did it */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { - asoc->fragmented_delivery_inprogress = 0; - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0) { - asoc->strmin[stream_no].last_sequence_delivered++; - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { - SCTP_STAT_INCR_COUNTER64(sctps_reasmusrmsgs); - } - } else if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - /* - * turn the flag back on since we just delivered - * yet another one. - */ - asoc->fragmented_delivery_inprogress = 1; - } - asoc->tsn_of_pdapi_last_delivered = chk->rec.data.TSN_seq; - asoc->last_flags_delivered = chk->rec.data.rcv_flags; - asoc->last_strm_seq_delivered = chk->rec.data.stream_seq; - asoc->last_strm_no_delivered = chk->rec.data.stream_number; + } + return (0); +} - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* free up the chk */ - chk->data = NULL; - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); +static void +sctp_abort_in_reasm(struct sctp_tcb *stcb, + struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int *abort_flag, int opspot) +{ + char msg[SCTP_DIAG_INFO_LEN]; + struct mbuf *oper; + + if (stcb->asoc.idata_supported) { + snprintf(msg, sizeof(msg), + "Reass %x,CF:%x,TSN=%8.8x,SID=%4.4x,FSN=%8.8x,MID:%8.8x", + opspot, + control->fsn_included, + chk->rec.data.TSN_seq, + chk->rec.data.stream_number, + chk->rec.data.fsn_num, chk->rec.data.stream_seq); + } else { + snprintf(msg, sizeof(msg), + "Reass %x, CI:%x,TSN=%8.8x,SID=%4.4x,FSN=%4.4x, SSN:%4.4x", + opspot, + control->fsn_included, + chk->rec.data.TSN_seq, + chk->rec.data.stream_number, + chk->rec.data.fsn_num, + (uint16_t) chk->rec.data.stream_seq); + } + oper = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + sctp_m_freem(chk->data); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_1; + sctp_abort_an_association(stcb->sctp_ep, stcb, oper, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; +} - if (asoc->fragmented_delivery_inprogress == 0) { - /* - * Now lets see if we can deliver the next one on - * the stream - */ - struct sctp_stream_in *strm; +static void +clean_up_control(struct sctp_tcb *stcb, struct sctp_queued_to_read *control) +{ + /* + * The control could not be placed and must be cleaned. + */ + struct sctp_tmit_chunk *chk, *nchk; - strm = &asoc->strmin[stream_no]; - nxt_todel = strm->last_sequence_delivered + 1; - TAILQ_FOREACH_SAFE(ctl, &strm->inqueue, next, nctl) { - /* Deliver more if we can. */ - if (nxt_todel == ctl->sinfo_ssn) { - TAILQ_REMOVE(&strm->inqueue, ctl, next); - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - strm->last_sequence_delivered++; - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - } else { - break; - } - nxt_todel = strm->last_sequence_delivered + 1; - } - break; - } + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + if (chk->data) + sctp_m_freem(chk->data); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); } + sctp_free_a_readq(stcb, control); } /* * Queue the chunk either right into the socket buffer if it is the next one * to go OR put it in the correct place in the delivery queue. If we do - * append to the so_buf, keep doing so until we are out of order. One big - * question still remains, what to do when the socket buffer is FULL?? + * append to the so_buf, keep doing so until we are out of order as + * long as the control's entered are non-fragmented. */ static void -sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_queued_to_read *control, int *abort_flag) +sctp_queue_data_to_stream(struct sctp_tcb *stcb, + struct sctp_stream_in *strm, + struct sctp_association *asoc, + struct sctp_queued_to_read *control, int *abort_flag, int *need_reasm) { /* * FIX-ME maybe? What happens when the ssn wraps? If we are getting @@ -562,27 +496,16 @@ sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, * SSN alone. Maybe a hybred approach is the answer * */ - struct sctp_stream_in *strm; struct sctp_queued_to_read *at; int queue_needed; - uint16_t nxt_todel; + uint32_t nxt_todel; struct mbuf *op_err; char msg[SCTP_DIAG_INFO_LEN]; - queue_needed = 1; - asoc->size_on_all_streams += control->length; - sctp_ucount_incr(asoc->cnt_on_all_streams); - strm = &asoc->strmin[control->sinfo_stream]; - nxt_todel = strm->last_sequence_delivered + 1; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_INTO_STRD); } - SCTPDBG(SCTP_DEBUG_INDATA1, - "queue to stream called for sid:%u ssn:%u tsn:%u lastdel:%u nxt:%u\n", - (uint32_t) control->sinfo_stream, (uint32_t) control->sinfo_ssn, - (uint32_t) control->sinfo_tsn, - (uint32_t) strm->last_sequence_delivered, (uint32_t) nxt_todel); - if (SCTP_SSN_GE(strm->last_sequence_delivered, control->sinfo_ssn)) { + if (SCTP_MSGID_GT((!asoc->idata_supported), strm->last_sequence_delivered, control->sinfo_ssn)) { /* The incoming sseq is behind where we last delivered? */ SCTPDBG(SCTP_DEBUG_INDATA1, "Duplicate S-SEQ:%d delivered:%d from peer, Abort association\n", control->sinfo_ssn, strm->last_sequence_delivered); @@ -591,32 +514,39 @@ protocol_error: * throw it in the stream so it gets cleaned up in * association destruction */ - TAILQ_INSERT_HEAD(&strm->inqueue, control, next); + TAILQ_INSERT_HEAD(&strm->inqueue, control, next_instrm); snprintf(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", strm->last_sequence_delivered, control->sinfo_tsn, control->sinfo_stream, control->sinfo_ssn); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_1; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_2; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; } -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(stcb->sctp_ep); - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - SCTP_SOCKET_LOCK(so, 1); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { - SCTP_SOCKET_UNLOCK(so, 1); - return; + if ((SCTP_TSN_GE(asoc->cumulative_tsn, control->sinfo_tsn)) && (asoc->idata_supported == 0)) { + goto protocol_error; } -#endif + queue_needed = 1; + asoc->size_on_all_streams += control->length; + sctp_ucount_incr(asoc->cnt_on_all_streams); + nxt_todel = strm->last_sequence_delivered + 1; if (nxt_todel == control->sinfo_ssn) { +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + struct socket *so; + + so = SCTP_INP_SO(stcb->sctp_ep); + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_SOCKET_LOCK(so, 1); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { + SCTP_SOCKET_UNLOCK(so, 1); + return; + } +#endif /* can be delivered right away? */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_IMMED_DEL); @@ -626,19 +556,25 @@ protocol_error: asoc->size_on_all_streams -= control->length; sctp_ucount_decr(asoc->cnt_on_all_streams); strm->last_sequence_delivered++; - sctp_mark_non_revokable(asoc, control->sinfo_tsn); sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_LOCKED); - TAILQ_FOREACH_SAFE(control, &strm->inqueue, next, at) { + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + TAILQ_FOREACH_SAFE(control, &strm->inqueue, next_instrm, at) { /* all delivered */ nxt_todel = strm->last_sequence_delivered + 1; - if (nxt_todel == control->sinfo_ssn) { - TAILQ_REMOVE(&strm->inqueue, control, next); + if ((nxt_todel == control->sinfo_ssn) && + (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG)) { asoc->size_on_all_streams -= control->length; sctp_ucount_decr(asoc->cnt_on_all_streams); + if (control->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + } else { + panic("Huh control:%p is on_strm_q:%d", + control, control->on_strm_q); + } + control->on_strm_q = 0; strm->last_sequence_delivered++; /* * We ignore the return of deliver_data here @@ -655,655 +591,1000 @@ protocol_error: control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, - SCTP_SO_LOCKED); + SCTP_SO_NOT_LOCKED); continue; + } else if (nxt_todel == control->sinfo_ssn) { + *need_reasm = 1; } break; } +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_SOCKET_UNLOCK(so, 1); +#endif } if (queue_needed) { /* * Ok, we did not deliver this guy, find the correct place * to put it on the queue. */ - if (SCTP_TSN_GE(asoc->cumulative_tsn, control->sinfo_tsn)) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif - goto protocol_error; - } - if (TAILQ_EMPTY(&strm->inqueue)) { - /* Empty queue */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_INSERT_HD); - } - TAILQ_INSERT_HEAD(&strm->inqueue, control, next); - } else { - TAILQ_FOREACH(at, &strm->inqueue, next) { - if (SCTP_SSN_GT(at->sinfo_ssn, control->sinfo_ssn)) { - /* - * one in queue is bigger than the - * new one, insert before this one - */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, at, - SCTP_STR_LOG_FROM_INSERT_MD); - } - TAILQ_INSERT_BEFORE(at, control, next); - break; - } else if (at->sinfo_ssn == control->sinfo_ssn) { - /* - * Gak, He sent me a duplicate str - * seq number - */ - /* - * foo bar, I guess I will just free - * this new guy, should we abort - * too? FIX ME MAYBE? Or it COULD be - * that the SSN's have wrapped. - * Maybe I should compare to TSN - * somehow... sigh for now just blow - * away the chunk! - */ + if (sctp_place_control_in_stream(strm, asoc, control)) { + char msg[SCTP_DIAG_INFO_LEN]; + struct mbuf *oper; - if (control->data) - sctp_m_freem(control->data); - control->data = NULL; - asoc->size_on_all_streams -= control->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif - return; - } else { - if (TAILQ_NEXT(at, next) == NULL) { - /* - * We are at the end, insert - * it after this one - */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, at, - SCTP_STR_LOG_FROM_INSERT_TL); - } - TAILQ_INSERT_AFTER(&strm->inqueue, - at, control, next); - break; - } - } - } + snprintf(msg, sizeof(msg), + "Queue to str mid:%d duplicate", + control->msg_id); + clean_up_control(stcb, control); + oper = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_3; + sctp_abort_an_association(stcb->sctp_ep, stcb, oper, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; } } -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif } -/* - * Returns two things: You get the total size of the deliverable parts of the - * first fragmented message on the reassembly queue. And you get a 1 back if - * all of the message is ready or a 0 back if the message is still incomplete - */ -static int -sctp_is_all_msg_on_reasm(struct sctp_association *asoc, uint32_t * t_size) -{ - struct sctp_tmit_chunk *chk; - uint32_t tsn; - *t_size = 0; - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - /* nothing on the queue */ - return (0); - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { - /* Not a first on the queue */ - return (0); - } - tsn = chk->rec.data.TSN_seq; - TAILQ_FOREACH(chk, &asoc->reasmqueue, sctp_next) { - if (tsn != chk->rec.data.TSN_seq) { - return (0); +static void +sctp_setup_tail_pointer(struct sctp_queued_to_read *control) +{ + struct mbuf *m, *prev = NULL; + struct sctp_tcb *stcb; + + stcb = control->stcb; + control->held_length = 0; + control->length = 0; + m = control->data; + while (m) { + if (SCTP_BUF_LEN(m) == 0) { + /* Skip mbufs with NO length */ + if (prev == NULL) { + /* First one */ + control->data = sctp_m_free(m); + m = control->data; + } else { + SCTP_BUF_NEXT(prev) = sctp_m_free(m); + m = SCTP_BUF_NEXT(prev); + } + if (m == NULL) { + control->tail_mbuf = prev; + } + continue; } - *t_size += chk->send_size; - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { - return (1); + prev = m; + atomic_add_int(&control->length, SCTP_BUF_LEN(m)); + if (control->on_read_q) { + /* + * On read queue so we must increment the SB stuff, + * we assume caller has done any locks of SB. + */ + sctp_sballoc(stcb, &stcb->sctp_socket->so_rcv, m); } - tsn++; + m = SCTP_BUF_NEXT(m); + } + if (prev) { + control->tail_mbuf = prev; } - return (0); } static void -sctp_deliver_reasm_check(struct sctp_tcb *stcb, struct sctp_association *asoc) +sctp_add_to_tail_pointer(struct sctp_queued_to_read *control, struct mbuf *m) { - struct sctp_tmit_chunk *chk; - uint16_t nxt_todel; - uint32_t tsize, pd_point; - -doit_again: - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - /* Huh? */ - asoc->size_on_reasm_queue = 0; - asoc->cnt_on_reasm_queue = 0; + struct mbuf *prev = NULL; + struct sctp_tcb *stcb; + + stcb = control->stcb; + if (stcb == NULL) { + panic("Control broken"); + } + if (control->tail_mbuf == NULL) { + /* TSNH */ + control->data = m; + sctp_setup_tail_pointer(control); return; } - if (asoc->fragmented_delivery_inprogress == 0) { - nxt_todel = - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered + 1; - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) && - (nxt_todel == chk->rec.data.stream_seq || - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED))) { - /* - * Yep the first one is here and its ok to deliver - * but should we? - */ - if (stcb->sctp_socket) { - pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, - stcb->sctp_ep->partial_delivery_point); + control->tail_mbuf->m_next = m; + while (m) { + if (SCTP_BUF_LEN(m) == 0) { + /* Skip mbufs with NO length */ + if (prev == NULL) { + /* First one */ + control->tail_mbuf->m_next = sctp_m_free(m); + m = control->tail_mbuf->m_next; } else { - pd_point = stcb->sctp_ep->partial_delivery_point; + SCTP_BUF_NEXT(prev) = sctp_m_free(m); + m = SCTP_BUF_NEXT(prev); } - if (sctp_is_all_msg_on_reasm(asoc, &tsize) || (tsize >= pd_point)) { - /* - * Yes, we setup to start reception, by - * backing down the TSN just in case we - * can't deliver. If we - */ - asoc->fragmented_delivery_inprogress = 1; - asoc->tsn_last_delivered = - chk->rec.data.TSN_seq - 1; - asoc->str_of_pdapi = - chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->pdapi_ppid = chk->rec.data.payloadtype; - asoc->fragment_flags = chk->rec.data.rcv_flags; - sctp_service_reassembly(stcb, asoc); + if (m == NULL) { + control->tail_mbuf = prev; } + continue; } - } else { - /* - * Service re-assembly will deliver stream data queued at - * the end of fragmented delivery.. but it wont know to go - * back and call itself again... we do that here with the - * got doit_again - */ - sctp_service_reassembly(stcb, asoc); - if (asoc->fragmented_delivery_inprogress == 0) { + prev = m; + if (control->on_read_q) { /* - * finished our Fragmented delivery, could be more - * waiting? + * On read queue so we must increment the SB stuff, + * we assume caller has done any locks of SB. */ - goto doit_again; + sctp_sballoc(stcb, &stcb->sctp_socket->so_rcv, m); } + atomic_add_int(&control->length, SCTP_BUF_LEN(m)); + m = SCTP_BUF_NEXT(m); + } + if (prev) { + control->tail_mbuf = prev; } } -/* - * Dump onto the re-assembly queue, in its proper place. After dumping on the - * queue, see if anthing can be delivered. If so pull it off (or as much as - * we can. If we run out of space then we must dump what we can and set the - * appropriate flag to say we queued what we could. - */ static void -sctp_queue_data_for_reasm(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_tmit_chunk *chk, int *abort_flag) +sctp_build_readq_entry_from_ctl(struct sctp_queued_to_read *nc, struct sctp_queued_to_read *control) { - struct mbuf *op_err; - char msg[SCTP_DIAG_INFO_LEN]; - uint32_t cum_ackp1, prev_tsn, post_tsn; - struct sctp_tmit_chunk *at, *prev, *next; - - prev = next = NULL; - cum_ackp1 = asoc->tsn_last_delivered + 1; - if (TAILQ_EMPTY(&asoc->reasmqueue)) { - /* This is the first one on the queue */ - TAILQ_INSERT_HEAD(&asoc->reasmqueue, chk, sctp_next); - /* - * we do not check for delivery of anything when only one - * fragment is here - */ - asoc->size_on_reasm_queue = chk->send_size; - sctp_ucount_incr(asoc->cnt_on_reasm_queue); - if (chk->rec.data.TSN_seq == cum_ackp1) { - if (asoc->fragmented_delivery_inprogress == 0 && - (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) != - SCTP_DATA_FIRST_FRAG) { - /* - * An empty queue, no delivery inprogress, - * we hit the next one and it does NOT have - * a FIRST fragment mark. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, its not first, no fragmented delivery in progress\n"); - snprintf(msg, sizeof(msg), - "Expected B-bit for TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_2; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if (asoc->fragmented_delivery_inprogress && - (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == SCTP_DATA_FIRST_FRAG) { + memset(nc, 0, sizeof(struct sctp_queued_to_read)); + nc->sinfo_stream = control->sinfo_stream; + nc->sinfo_ssn = control->sinfo_ssn; + TAILQ_INIT(&nc->reasm); + nc->top_fsn = control->top_fsn; + nc->msg_id = control->msg_id; + nc->sinfo_flags = control->sinfo_flags; + nc->sinfo_ppid = control->sinfo_ppid; + nc->sinfo_context = control->sinfo_context; + nc->fsn_included = 0xffffffff; + nc->sinfo_tsn = control->sinfo_tsn; + nc->sinfo_cumtsn = control->sinfo_cumtsn; + nc->sinfo_assoc_id = control->sinfo_assoc_id; + nc->whoFrom = control->whoFrom; + atomic_add_int(&nc->whoFrom->ref_count, 1); + nc->stcb = control->stcb; + nc->port_from = control->port_from; +} + +static int +sctp_handle_old_data(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, uint32_t pd_point) +{ + /* + * Special handling for the old un-ordered data chunk. All the + * chunks/TSN's go to msg_id 0. So we have to do the old style + * watching to see if we have it all. If you return one, no other + * control entries on the un-ordered queue will be looked at. In + * theory there should be no others entries in reality, unless the + * guy is sending both unordered NDATA and unordered DATA... + */ + struct sctp_tmit_chunk *chk, *lchk, *tchk; + uint32_t fsn; + struct sctp_queued_to_read *nc = NULL; + int cnt_added; + + if (control->first_frag_seen == 0) { + /* Nothing we can do, we have not seen the first piece yet */ + return (1); + } + /* Collapse any we can */ + cnt_added = 0; +restart: + fsn = control->fsn_included + 1; + /* Now what can we add? */ + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, lchk) { + if (chk->rec.data.fsn_num == fsn) { + /* Ok lets add it */ + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + sctp_add_chk_to_control(control, strm, stcb, asoc, chk); + fsn++; + cnt_added++; + chk = NULL; + if (control->end_added) { + /* We are done */ + if (!TAILQ_EMPTY(&control->reasm)) { + /* + * Ok we have to move anything left + * on the control queue to a new + * control. + */ + sctp_alloc_a_readq(stcb, nc); + sctp_build_readq_entry_from_ctl(nc, control); + tchk = TAILQ_FIRST(&control->reasm); + if (tchk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + TAILQ_REMOVE(&control->reasm, tchk, sctp_next); + nc->first_frag_seen = 1; + nc->fsn_included = tchk->rec.data.fsn_num; + nc->data = tchk->data; + sctp_mark_non_revokable(asoc, tchk->rec.data.TSN_seq); + tchk->data = NULL; + sctp_free_a_chunk(stcb, tchk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(nc); + tchk = TAILQ_FIRST(&control->reasm); + } + /* Spin the rest onto the queue */ + while (tchk) { + TAILQ_REMOVE(&control->reasm, tchk, sctp_next); + TAILQ_INSERT_TAIL(&nc->reasm, tchk, sctp_next); + tchk = TAILQ_FIRST(&control->reasm); + } + /* + * Now lets add it to the queue + * after removing control + */ + TAILQ_INSERT_TAIL(&strm->uno_inqueue, nc, next_instrm); + nc->on_strm_q = SCTP_ON_UNORDERED; + if (control->on_strm_q) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + if (control->pdapi_started) { + strm->pd_api_started = 0; + control->pdapi_started = 0; + } + if (control->on_strm_q) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } + sctp_wakeup_the_read_socket(stcb->sctp_ep); + if ((nc) && (nc->first_frag_seen)) { + /* + * Switch to the new guy and + * continue + */ + control = nc; + nc = NULL; + goto restart; + } + return (1); + } + } else { + /* Can't add more */ + break; + } + } + if ((control->length > pd_point) && (strm->pd_api_started == 0)) { + sctp_add_to_readq(stcb->sctp_ep, stcb, control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + strm->pd_api_started = 1; + control->pdapi_started = 1; + sctp_wakeup_the_read_socket(stcb->sctp_ep); + return (0); + } else { + return (1); + } +} + +static void +sctp_inject_old_data_unordered(struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int *abort_flag) +{ + struct sctp_tmit_chunk *at; + int inserted = 0; + + /* + * Here we need to place the chunk into the control structure sorted + * in the correct order. + */ + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + /* Its the very first one. */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a first fsn:%d becomes fsn_included\n", + chk->rec.data.fsn_num); + if (control->first_frag_seen) { + /* + * In old un-ordered we can reassembly on one + * control multiple messages. As long as the next + * FIRST is greater then the old first (TSN i.e. FSN + * wise) + */ + struct mbuf *tdata; + uint32_t tmp; + + if (SCTP_TSN_GT(chk->rec.data.fsn_num, control->fsn_included)) { /* - * We are doing a partial delivery and the - * NEXT chunk MUST be either the LAST or - * MIDDLE fragment NOT a FIRST + * Easy way the start of a new guy beyond + * the lowest */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS a first and fragmented delivery in progress\n"); - snprintf(msg, sizeof(msg), - "Didn't expect B-bit for TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_3; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if (asoc->fragmented_delivery_inprogress) { + goto place_chunk; + } + if ((chk->rec.data.fsn_num == control->fsn_included) || + (control->pdapi_started)) { /* - * Here we are ok with a MIDDLE or LAST - * piece + * Ok this should not happen, if it does we + * started the pd-api on the higher TSN + * (since the equals part is a TSN failure + * it must be that). + * + * We are completly hosed in that case since I + * have no way to recover. This really will + * only happen if we can get more TSN's + * higher before the pd-api-point. */ - if (chk->rec.data.stream_number != - asoc->str_of_pdapi) { - /* Got to be the right STR No */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS not same stream number %d vs %d\n", - chk->rec.data.stream_number, - asoc->str_of_pdapi); - snprintf(msg, sizeof(msg), - "Expected SID=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - asoc->str_of_pdapi, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_4; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if ((asoc->fragment_flags & SCTP_DATA_UNORDERED) != - SCTP_DATA_UNORDERED && - chk->rec.data.stream_seq != asoc->ssn_of_pdapi) { - /* Got to be the right STR Seq */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS not same stream seq %d vs %d\n", - chk->rec.data.stream_seq, - asoc->ssn_of_pdapi); - snprintf(msg, sizeof(msg), - "Expected SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - asoc->ssn_of_pdapi, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_5; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_4); + + return; } - } + /* + * Ok we have two firsts and the one we just got is + * smaller than the one we previously placed.. yuck! + * We must swap them out. + */ + /* swap the mbufs */ + tdata = control->data; + control->data = chk->data; + chk->data = tdata; + /* Swap the lengths */ + tmp = control->length; + control->length = chk->send_size; + chk->send_size = tmp; + /* Fix the FSN included */ + tmp = control->fsn_included; + control->fsn_included = chk->rec.data.fsn_num; + chk->rec.data.fsn_num = tmp; + goto place_chunk; + } + control->first_frag_seen = 1; + control->top_fsn = control->fsn_included = chk->rec.data.fsn_num; + control->data = chk->data; + sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(control); + return; + } +place_chunk: + if (TAILQ_EMPTY(&control->reasm)) { + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); return; } - /* Find its place */ - TAILQ_FOREACH(at, &asoc->reasmqueue, sctp_next) { - if (SCTP_TSN_GT(at->rec.data.TSN_seq, chk->rec.data.TSN_seq)) { + TAILQ_FOREACH(at, &control->reasm, sctp_next) { + if (SCTP_TSN_GT(at->rec.data.fsn_num, chk->rec.data.fsn_num)) { /* - * one in queue is bigger than the new one, insert - * before this one + * This one in queue is bigger than the new one, + * insert the new one before at. */ - /* A check */ asoc->size_on_reasm_queue += chk->send_size; sctp_ucount_incr(asoc->cnt_on_reasm_queue); - next = at; + inserted = 1; TAILQ_INSERT_BEFORE(at, chk, sctp_next); break; - } else if (at->rec.data.TSN_seq == chk->rec.data.TSN_seq) { - /* Gak, He sent me a duplicate str seq number */ + } else if (at->rec.data.fsn_num == chk->rec.data.fsn_num) { /* - * foo bar, I guess I will just free this new guy, - * should we abort too? FIX ME MAYBE? Or it COULD be - * that the SSN's have wrapped. Maybe I should - * compare to TSN somehow... sigh for now just blow - * away the chunk! + * They sent a duplicate fsn number. This really + * should not happen since the FSN is a TSN and it + * should have been dropped earlier. */ if (chk->data) { sctp_m_freem(chk->data); chk->data = NULL; } sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_5); return; + } + } + if (inserted == 0) { + /* Its at the end */ + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + control->top_fsn = chk->rec.data.fsn_num; + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + } +} + +static int +sctp_deliver_reasm_check(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_in *strm) +{ + /* + * Given a stream, strm, see if any of the SSN's on it that are + * fragmented are ready to deliver. If so go ahead and place them on + * the read queue. In so placing if we have hit the end, then we + * need to remove them from the stream's queue. + */ + struct sctp_queued_to_read *control, *nctl = NULL; + uint32_t next_to_del; + uint32_t pd_point; + int ret = 0; + + if (stcb->sctp_socket) { + pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, + stcb->sctp_ep->partial_delivery_point); + } else { + pd_point = stcb->sctp_ep->partial_delivery_point; + } + control = TAILQ_FIRST(&strm->uno_inqueue); + if ((control) && + (asoc->idata_supported == 0)) { + /* Special handling needed for "old" data format */ + nctl = TAILQ_NEXT(control, next_instrm); + if (sctp_handle_old_data(stcb, asoc, strm, control, pd_point)) { + goto done_un; + } + } + if (strm->pd_api_started) { + /* Can't add more */ + return (0); + } + while (control) { + SCTPDBG(SCTP_DEBUG_XXX, "Looking at control:%p e(%d) ssn:%d top_fsn:%d inc_fsn:%d -uo\n", + control, control->end_added, control->sinfo_ssn, control->top_fsn, control->fsn_included); + nctl = TAILQ_NEXT(control, next_instrm); + if (control->end_added) { + /* We just put the last bit on */ + if (control->on_strm_q) { + if (control->on_strm_q != SCTP_ON_UNORDERED) { + panic("Huh control:%p on_q:%d -- not unordered?", + control, control->on_strm_q); + } + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } } else { - prev = at; - if (TAILQ_NEXT(at, sctp_next) == NULL) { - /* - * We are at the end, insert it after this - * one - */ - /* check it first */ - asoc->size_on_reasm_queue += chk->send_size; - sctp_ucount_incr(asoc->cnt_on_reasm_queue); - TAILQ_INSERT_AFTER(&asoc->reasmqueue, at, chk, sctp_next); + /* Can we do a PD-API for this un-ordered guy? */ + if ((control->length >= pd_point) && (strm->pd_api_started == 0)) { + strm->pd_api_started = 1; + control->pdapi_started = 1; + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + break; } } + control = nctl; } - /* Now the audits */ - if (prev) { - prev_tsn = chk->rec.data.TSN_seq - 1; - if (prev_tsn == prev->rec.data.TSN_seq) { - /* - * Ok the one I am dropping onto the end is the - * NEXT. A bit of valdiation here. - */ - if ((prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_FIRST_FRAG || - (prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_MIDDLE_FRAG) { - /* - * Insert chk MUST be a MIDDLE or LAST - * fragment - */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_FIRST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - It can be a midlle or last but not a first\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it's a FIRST!\n"); - snprintf(msg, sizeof(msg), - "Can't handle B-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_6; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if (chk->rec.data.stream_number != - prev->rec.data.stream_number) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, sid:%d not the same as at:%d\n", - chk->rec.data.stream_number, - prev->rec.data.stream_number); - snprintf(msg, sizeof(msg), - "Expect SID=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - prev->rec.data.stream_number, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_7; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; +done_un: + control = TAILQ_FIRST(&strm->inqueue); + if (strm->pd_api_started) { + /* Can't add more */ + return (0); + } + if (control == NULL) { + return (ret); + } + if (strm->last_sequence_delivered == control->sinfo_ssn) { + /* + * Ok the guy at the top was being partially delivered + * completed, so we remove it. Note the pd_api flag was + * taken off when the chunk was merged on in + * sctp_queue_data_for_reasm below. + */ + nctl = TAILQ_NEXT(control, next_instrm); + SCTPDBG(SCTP_DEBUG_XXX, + "Looking at control:%p e(%d) ssn:%d top_fsn:%d inc_fsn:%d (lastdel:%d)- o\n", + control, control->end_added, control->sinfo_ssn, + control->top_fsn, control->fsn_included, + strm->last_sequence_delivered); + if (control->end_added) { + if (control->on_strm_q) { + if (control->on_strm_q != SCTP_ON_ORDERED) { + panic("Huh control:%p on_q:%d -- not ordered?", + control, control->on_strm_q); } - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != - (prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { - /* - * Huh, need the same ordering here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, U-bit not constant\n"); - snprintf(msg, sizeof(msg), - "Expect U-bit=%d for TSN=%8.8x, got U-bit=%d", - (prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0, - chk->rec.data.TSN_seq, - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_8; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + control->on_strm_q = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + if (strm->pd_api_started && control->pdapi_started) { + control->pdapi_started = 0; + strm->pd_api_started = 0; + } + control = nctl; + } + } + if (strm->pd_api_started) { + /* + * Can't add more must have gotten an un-ordered above being + * partially delivered. + */ + return (0); + } +deliver_more: + next_to_del = strm->last_sequence_delivered + 1; + if (control) { + SCTPDBG(SCTP_DEBUG_XXX, + "Looking at control:%p e(%d) ssn:%d top_fsn:%d inc_fsn:%d (nxtdel:%d)- o\n", + control, control->end_added, control->sinfo_ssn, control->top_fsn, control->fsn_included, + next_to_del); + nctl = TAILQ_NEXT(control, next_instrm); + if ((control->sinfo_ssn == next_to_del) && + (control->first_frag_seen)) { + /* Ok we can deliver it onto the stream. */ + if (control->end_added) { + /* We are done with it afterwards */ + if (control->on_strm_q) { + if (control->on_strm_q != SCTP_ON_ORDERED) { + panic("Huh control:%p on_q:%d -- not ordered?", + control, control->on_strm_q); + } + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + control->on_strm_q = 0; } - if ((prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0 && - chk->rec.data.stream_seq != - prev->rec.data.stream_seq) { + ret++; + } + if (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* + * A singleton now slipping through - mark + * it non-revokable too + */ + sctp_mark_non_revokable(asoc, control->sinfo_tsn); + } else if (control->end_added == 0) { + /* + * Check if we can defer adding until its + * all there + */ + if ((control->length < pd_point) || (strm->pd_api_started)) { /* - * Huh, need the correct STR here, - * they must be the same. + * Don't need it or cannot add more + * (one being delivered that way) */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, sseq:%d not the same as at:%d\n", - chk->rec.data.stream_seq, - prev->rec.data.stream_seq); - snprintf(msg, sizeof(msg), - "Expect SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - prev->rec.data.stream_seq, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_9; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - } else if ((prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { - /* Insert chk MUST be a FIRST */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_FIRST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, evil plot, its not FIRST and it must be!\n"); - snprintf(msg, sizeof(msg), - "Expect B-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_10; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; + goto out; } } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + strm->last_sequence_delivered = next_to_del; + if ((control->end_added) && (control->last_frag_seen)) { + control = nctl; + goto deliver_more; + } else { + /* We are now doing PD API */ + strm->pd_api_started = 1; + control->pdapi_started = 1; + } } } - if (next) { - post_tsn = chk->rec.data.TSN_seq + 1; - if (post_tsn == next->rec.data.TSN_seq) { +out: + return (ret); +} + +void +sctp_add_chk_to_control(struct sctp_queued_to_read *control, + struct sctp_stream_in *strm, + struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_tmit_chunk *chk) +{ + /* + * Given a control and a chunk, merge the data from the chk onto the + * control and free up the chunk resources. + */ + int i_locked = 0; + + if (control->on_read_q) { + /* + * Its being pd-api'd so we must do some locks. + */ + SCTP_INP_READ_LOCK(stcb->sctp_ep); + i_locked = 1; + } + if (control->data == NULL) { + control->data = chk->data; + sctp_setup_tail_pointer(control); + } else { + sctp_add_to_tail_pointer(control, chk->data); + } + control->fsn_included = chk->rec.data.fsn_num; + asoc->size_on_reasm_queue -= chk->send_size; + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); + chk->data = NULL; + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + control->first_frag_seen = 1; + } + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + /* Its complete */ + if ((control->on_strm_q) && (control->on_read_q)) { + if (control->pdapi_started) { + control->pdapi_started = 0; + strm->pd_api_started = 0; + } + if (control->on_strm_q == SCTP_ON_UNORDERED) { + /* Unordered */ + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } else if (control->on_strm_q == SCTP_ON_ORDERED) { + /* Ordered */ + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + control->on_strm_q = 0; + } else if (control->on_strm_q) { + panic("Unknown state on ctrl:%p on_strm_q:%d", control, + control->on_strm_q); + } + } + control->end_added = 1; + control->last_frag_seen = 1; + } + if (i_locked) { + SCTP_INP_READ_UNLOCK(stcb->sctp_ep); + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); +} + +/* + * Dump onto the re-assembly queue, in its proper place. After dumping on the + * queue, see if anthing can be delivered. If so pull it off (or as much as + * we can. If we run out of space then we must dump what we can and set the + * appropriate flag to say we queued what we could. + */ +static void +sctp_queue_data_for_reasm(struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int created_control, + int *abort_flag, uint32_t tsn) +{ + uint32_t next_fsn; + struct sctp_tmit_chunk *at, *nat; + int cnt_added, unordered; + + /* + * For old un-ordered data chunks. + */ + if ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED) { + unordered = 1; + } else { + unordered = 0; + } + /* Must be added to the stream-in queue */ + if (created_control) { + if (sctp_place_control_in_stream(strm, asoc, control)) { + /* Duplicate SSN? */ + clean_up_control(stcb, control); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_6); + return; + } + if ((tsn == (asoc->cumulative_tsn + 1) && (asoc->idata_supported == 0))) { /* - * Ok the one I am inserting ahead of is my NEXT - * one. A bit of valdiation here. + * Ok we created this control and now lets validate + * that its legal i.e. there is a B bit set, if not + * and we have up to the cum-ack then its invalid. */ - if (next->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - /* Insert chk MUST be a last fragment */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) - != SCTP_DATA_LAST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Next is FIRST, we must be LAST\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, its not a last!\n"); - snprintf(msg, sizeof(msg), - "Expect only E-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_11; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - } else if ((next->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_MIDDLE_FRAG || - (next->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { + if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_7); + return; + } + } + } + if ((asoc->idata_supported == 0) && ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED)) { + sctp_inject_old_data_unordered(stcb, asoc, strm, control, chk, abort_flag); + return; + } + /* + * Ok we must queue the chunk into the reasembly portion: o if its + * the first it goes to the control mbuf. o if its not first but the + * next in sequence it goes to the control, and each succeeding one + * in order also goes. o if its not in order we place it on the list + * in its place. + */ + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + /* Its the very first one. */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a first fsn:%d becomes fsn_included\n", + chk->rec.data.fsn_num); + if (control->first_frag_seen) { + /* + * Error on senders part, they either sent us two + * data chunks with FIRST, or they sent two + * un-ordered chunks that were fragmented at the + * same time in the same stream. + */ + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_8); + return; + } + control->first_frag_seen = 1; + control->fsn_included = chk->rec.data.fsn_num; + control->data = chk->data; + sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(control); + } else { + /* Place the chunk in our list */ + int inserted = 0; + + if (control->last_frag_seen == 0) { + /* Still willing to raise highest FSN seen */ + if (SCTP_TSN_GT(chk->rec.data.fsn_num, control->top_fsn)) { + SCTPDBG(SCTP_DEBUG_XXX, + "We have a new top_fsn:%d\n", + chk->rec.data.fsn_num); + control->top_fsn = chk->rec.data.fsn_num; + } + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + SCTPDBG(SCTP_DEBUG_XXX, + "The last fsn is now in place fsn:%d\n", + chk->rec.data.fsn_num); + control->last_frag_seen = 1; + } + if (asoc->idata_supported || control->first_frag_seen) { /* - * Insert chk CAN be MIDDLE or FIRST NOT - * LAST + * For IDATA we always check since we know + * that the first fragment is 0. For old + * DATA we have to receive the first before + * we knwo the first FSN (which is the TSN). */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Next is a MIDDLE/LAST\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, new prev chunk is a LAST\n"); - snprintf(msg, sizeof(msg), - "Didn't expect E-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_12; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if (chk->rec.data.stream_number != - next->rec.data.stream_number) { + if (SCTP_TSN_GE(control->fsn_included, chk->rec.data.fsn_num)) { /* - * Huh, need the correct STR here, - * they must be the same. + * We have already delivered up to + * this so its a dup */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Gak, Evil plot, ssn:%d not the same as at:%d\n", - chk->rec.data.stream_number, - next->rec.data.stream_number); - snprintf(msg, sizeof(msg), - "Required SID %4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - next->rec.data.stream_number, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_13; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_9); return; } - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != - (next->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { + } + } else { + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + /* Second last? huh? */ + SCTPDBG(SCTP_DEBUG_XXX, + "Duplicate last fsn:%d (top:%d) -- abort\n", + chk->rec.data.fsn_num, control->top_fsn); + sctp_abort_in_reasm(stcb, strm, control, + chk, abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_10); + return; + } + if (asoc->idata_supported || control->first_frag_seen) { + /* + * For IDATA we always check since we know + * that the first fragment is 0. For old + * DATA we have to receive the first before + * we knwo the first FSN (which is the TSN). + */ + + if (SCTP_TSN_GE(control->fsn_included, chk->rec.data.fsn_num)) { /* - * Huh, need the same ordering here, - * they must be the same. + * We have already delivered up to + * this so its a dup */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next check - Gak, Evil plot, U-bit not constant\n"); - snprintf(msg, sizeof(msg), - "Expect U-bit=%d for TSN=%8.8x, got U-bit=%d", - (next->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0, - chk->rec.data.TSN_seq, - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_14; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + SCTPDBG(SCTP_DEBUG_XXX, + "New fsn:%d is already seen in included_fsn:%d -- abort\n", + chk->rec.data.fsn_num, control->fsn_included); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_11); return; } - if ((next->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0 && - chk->rec.data.stream_seq != - next->rec.data.stream_seq) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Gak, Evil plot, sseq:%d not the same as at:%d\n", - chk->rec.data.stream_seq, - next->rec.data.stream_seq); - snprintf(msg, sizeof(msg), - "Required SSN %4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - next->rec.data.stream_seq, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_15; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; + } + /* + * validate not beyond top FSN if we have seen last + * one + */ + if (SCTP_TSN_GT(chk->rec.data.fsn_num, control->top_fsn)) { + SCTPDBG(SCTP_DEBUG_XXX, + "New fsn:%d is beyond or at top_fsn:%d -- abort\n", + chk->rec.data.fsn_num, + control->top_fsn); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_12); + return; + } + } + /* + * If we reach here, we need to place the new chunk in the + * reassembly for this control. + */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a not first fsn:%d needs to be inserted\n", + chk->rec.data.fsn_num); + TAILQ_FOREACH(at, &control->reasm, sctp_next) { + if (SCTP_TSN_GT(at->rec.data.fsn_num, chk->rec.data.fsn_num)) { + /* + * This one in queue is bigger than the new + * one, insert the new one before at. + */ + SCTPDBG(SCTP_DEBUG_XXX, + "Insert it before fsn:%d\n", + at->rec.data.fsn_num); + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + TAILQ_INSERT_BEFORE(at, chk, sctp_next); + inserted = 1; + break; + } else if (at->rec.data.fsn_num == chk->rec.data.fsn_num) { + /* + * Gak, He sent me a duplicate str seq + * number + */ + /* + * foo bar, I guess I will just free this + * new guy, should we abort too? FIX ME + * MAYBE? Or it COULD be that the SSN's have + * wrapped. Maybe I should compare to TSN + * somehow... sigh for now just blow away + * the chunk! + */ + SCTPDBG(SCTP_DEBUG_XXX, + "Duplicate to fsn:%d -- abort\n", + at->rec.data.fsn_num); + sctp_abort_in_reasm(stcb, strm, control, + chk, abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_13); + return; + } + } + if (inserted == 0) { + /* Goes on the end */ + SCTPDBG(SCTP_DEBUG_XXX, "Inserting at tail of list fsn:%d\n", + chk->rec.data.fsn_num); + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + } + } + /* + * Ok lets see if we can suck any up into the control structure that + * are in seq if it makes sense. + */ + cnt_added = 0; + /* + * If the first fragment has not been seen there is no sense in + * looking. + */ + if (control->first_frag_seen) { + next_fsn = control->fsn_included + 1; + TAILQ_FOREACH_SAFE(at, &control->reasm, sctp_next, nat) { + if (at->rec.data.fsn_num == next_fsn) { + /* We can add this one now to the control */ + SCTPDBG(SCTP_DEBUG_XXX, + "Adding more to control:%p at:%p fsn:%d next_fsn:%d included:%d\n", + control, at, + at->rec.data.fsn_num, + next_fsn, control->fsn_included); + TAILQ_REMOVE(&control->reasm, at, sctp_next); + sctp_add_chk_to_control(control, strm, stcb, asoc, at); + cnt_added++; + next_fsn++; + if (control->end_added && control->pdapi_started) { + if (strm->pd_api_started) { + strm->pd_api_started = 0; + control->pdapi_started = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + break; } + } else { + break; } } } - /* Do we need to do some delivery? check */ - sctp_deliver_reasm_check(stcb, asoc); + if ((control->on_read_q) && (cnt_added > 0)) { + /* Need to wakeup the reader */ + sctp_wakeup_the_read_socket(stcb->sctp_ep); + } } -/* - * This is an unfortunate routine. It checks to make sure a evil guy is not - * stuffing us full of bad packet fragments. A broken peer could also do this - * but this is doubtful. It is to bad I must worry about evil crackers sigh - * :< more cycles. - */ -static int -sctp_does_tsn_belong_to_reasm(struct sctp_association *asoc, - uint32_t TSN_seq) +static struct sctp_queued_to_read * +find_reasm_entry(struct sctp_stream_in *strm, uint32_t msg_id, int ordered, int old) { - struct sctp_tmit_chunk *at; - uint32_t tsn_est; - - TAILQ_FOREACH(at, &asoc->reasmqueue, sctp_next) { - if (SCTP_TSN_GT(TSN_seq, at->rec.data.TSN_seq)) { - /* is it one bigger? */ - tsn_est = at->rec.data.TSN_seq + 1; - if (tsn_est == TSN_seq) { - /* yep. It better be a last then */ - if ((at->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_LAST_FRAG) { - /* - * Ok this guy belongs next to a guy - * that is NOT last, it should be a - * middle/last, not a complete - * chunk. - */ - return (1); - } else { - /* - * This guy is ok since its a LAST - * and the new chunk is a fully - * self- contained one. - */ - return (0); - } + struct sctp_queued_to_read *reasm; + + if (ordered) { + TAILQ_FOREACH(reasm, &strm->inqueue, next_instrm) { + if (reasm->msg_id == msg_id) { + break; } - } else if (TSN_seq == at->rec.data.TSN_seq) { - /* Software error since I have a dup? */ - return (1); - } else { - /* - * Ok, 'at' is larger than new chunk but does it - * need to be right before it. - */ - tsn_est = TSN_seq + 1; - if (tsn_est == at->rec.data.TSN_seq) { - /* Yep, It better be a first */ - if ((at->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_FIRST_FRAG) { - return (1); - } else { - return (0); - } + } + } else { + if (old) { + reasm = TAILQ_FIRST(&strm->uno_inqueue); + return (reasm); + } + TAILQ_FOREACH(reasm, &strm->uno_inqueue, next_instrm) { + if (reasm->msg_id == msg_id) { + break; } } } - return (0); + return (reasm); } + static int sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct mbuf **m, int offset, struct sctp_data_chunk *ch, int chk_length, + struct mbuf **m, int offset, int chk_length, struct sctp_nets *net, uint32_t * high_tsn, int *abort_flag, - int *break_flag, int last_chunk) + int *break_flag, int last_chunk, uint8_t chtype) { /* Process a data chunk */ /* struct sctp_tmit_chunk *chk; */ + struct sctp_data_chunk *ch; + struct sctp_idata_chunk *nch, chunk_buf; struct sctp_tmit_chunk *chk; - uint32_t tsn, gap; + uint32_t tsn, fsn, gap, msg_id; struct mbuf *dmbuf; int the_len; int need_reasm_check = 0; - uint16_t strmno, strmseq; + uint16_t strmno; struct mbuf *op_err; char msg[SCTP_DIAG_INFO_LEN]; - struct sctp_queued_to_read *control; - int ordered; + struct sctp_queued_to_read *control = NULL; uint32_t protocol_id; uint8_t chunk_flags; struct sctp_stream_reset_list *liste; + struct sctp_stream_in *strm; + int ordered; + size_t clen; + int created_control = 0; + uint8_t old_data; chk = NULL; - tsn = ntohl(ch->dp.tsn); + if (chtype == SCTP_IDATA) { + nch = (struct sctp_idata_chunk *)sctp_m_getptr(*m, offset, + sizeof(struct sctp_idata_chunk), (uint8_t *) & chunk_buf); + + ch = (struct sctp_data_chunk *)nch; + clen = sizeof(struct sctp_idata_chunk); + tsn = ntohl(ch->dp.tsn); + msg_id = ntohl(nch->dp.msg_id); + if (ch->ch.chunk_flags & SCTP_DATA_FIRST_FRAG) + fsn = 0; + else + fsn = ntohl(nch->dp.fsn); + old_data = 0; + } else { + ch = (struct sctp_data_chunk *)sctp_m_getptr(*m, offset, + sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + + tsn = ntohl(ch->dp.tsn); + clen = sizeof(struct sctp_data_chunk); + fsn = tsn; + msg_id = (uint32_t) (ntohs(ch->dp.stream_sequence)); + nch = NULL; + old_data = 1; + } chunk_flags = ch->ch.chunk_flags; + if ((size_t)chk_length == clen) { + /* + * Need to send an abort since we had a empty data chunk. + */ + struct mbuf *op_err; + + op_err = sctp_generate_no_user_data_cause(ch->dp.tsn); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_14; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; + return (0); + } + ordered = ((chunk_flags & SCTP_DATA_UNORDERED) == 0); if ((chunk_flags & SCTP_DATA_SACK_IMMEDIATELY) == SCTP_DATA_SACK_IMMEDIATELY) { asoc->send_sack = 1; } @@ -1377,54 +1658,9 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * for on a partial delivery API. */ - /* now do the tests */ - if (((asoc->cnt_on_all_streams + - asoc->cnt_on_reasm_queue + - asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) || - (((int)asoc->my_rwnd) <= 0)) { - /* - * When we have NO room in the rwnd we check to make sure - * the reader is doing its job... - */ - if (stcb->sctp_socket->so_rcv.sb_cc) { - /* some to read, wake-up */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(stcb->sctp_ep); - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - SCTP_SOCKET_LOCK(so, 1); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { - /* assoc was freed while we were unlocked */ - SCTP_SOCKET_UNLOCK(so, 1); - return (0); - } -#endif - sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif - } - /* now is it in the mapping array of what we have accepted? */ - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map) && - SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - /* Nope not in the valid range dump it */ - sctp_set_rwnd(stcb, asoc); - if ((asoc->cnt_on_all_streams + - asoc->cnt_on_reasm_queue + - asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) { - SCTP_STAT_INCR(sctps_datadropchklmt); - } else { - SCTP_STAT_INCR(sctps_datadroprwnd); - } - *break_flag = 1; - return (0); - } - } + /* Is the stream valid? */ strmno = ntohs(ch->dp.stream_id); + if (strmno >= asoc->streamincnt) { struct sctp_error_invalid_stream *cause; @@ -1458,14 +1694,121 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, } return (0); } + strm = &asoc->strmin[strmno]; /* - * Before we continue lets validate that we are not being fooled by - * an evil attacker. We can only have 4k chunks based on our TSN - * spread allowed by the mapping array 512 * 8 bits, so there is no - * way our stream sequence numbers could have wrapped. We of course - * only validate the FIRST fragment so the bit must be set. + * If its a fragmented message, lets see if we can find the control + * on the reassembly queues. */ - strmseq = ntohs(ch->dp.stream_sequence); + if ((chtype == SCTP_IDATA) && ((chunk_flags & SCTP_DATA_FIRST_FRAG) == 0) && (fsn == 0)) { + /* + * The first *must* be fsn 0, and other (middle/end) pieces + * can *not* be fsn 0. + */ + goto err_out; + } + if ((chunk_flags & SCTP_DATA_NOT_FRAG) != SCTP_DATA_NOT_FRAG) { + /* See if we can find the re-assembly entity */ + control = find_reasm_entry(strm, msg_id, ordered, old_data); + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x look for control on queues %p\n", + chunk_flags, control); + if (control) { + /* We found something, does it belong? */ + if (ordered && (msg_id != control->sinfo_ssn)) { + err_out: + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_15; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; + return (0); + } + if (ordered && ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED)) { + /* + * We can't have a switched order with an + * unordered chunk + */ + goto err_out; + } + if (!ordered && (((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED) == 0)) { + /* + * We can't have a switched unordered with a + * ordered chunk + */ + goto err_out; + } + } + } else { + /* + * Its a complete segment. Lets validate we don't have a + * re-assembly going on with the same Stream/Seq (for + * ordered) or in the same Stream for unordered. + */ + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x look for msg in case we have dup\n", + chunk_flags); + if (find_reasm_entry(strm, msg_id, ordered, old_data)) { + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x dup detected on msg_id:%d\n", + chunk_flags, + msg_id); + + goto err_out; + } + } + /* now do the tests */ + if (((asoc->cnt_on_all_streams + + asoc->cnt_on_reasm_queue + + asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) || + (((int)asoc->my_rwnd) <= 0)) { + /* + * When we have NO room in the rwnd we check to make sure + * the reader is doing its job... + */ + if (stcb->sctp_socket->so_rcv.sb_cc) { + /* some to read, wake-up */ +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + struct socket *so; + + so = SCTP_INP_SO(stcb->sctp_ep); + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_SOCKET_LOCK(so, 1); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { + /* assoc was freed while we were unlocked */ + SCTP_SOCKET_UNLOCK(so, 1); + return (0); + } +#endif + sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_SOCKET_UNLOCK(so, 1); +#endif + } + /* now is it in the mapping array of what we have accepted? */ + if (nch == NULL) { + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map) && + SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + /* Nope not in the valid range dump it */ + dump_packet: + sctp_set_rwnd(stcb, asoc); + if ((asoc->cnt_on_all_streams + + asoc->cnt_on_reasm_queue + + asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) { + SCTP_STAT_INCR(sctps_datadropchklmt); + } else { + SCTP_STAT_INCR(sctps_datadroprwnd); + } + *break_flag = 1; + return (0); + } + } else { + if (control == NULL) { + goto dump_packet; + } + if (SCTP_TSN_GT(fsn, control->top_fsn)) { + goto dump_packet; + } + } + } #ifdef SCTP_ASOCLOG_OF_TSNS SCTP_TCB_LOCK_ASSERT(stcb); if (asoc->tsn_in_at >= SCTP_TSN_LOG_SIZE) { @@ -1474,7 +1817,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, } asoc->in_tsnlog[asoc->tsn_in_at].tsn = tsn; asoc->in_tsnlog[asoc->tsn_in_at].strm = strmno; - asoc->in_tsnlog[asoc->tsn_in_at].seq = strmseq; + asoc->in_tsnlog[asoc->tsn_in_at].seq = msg_id; asoc->in_tsnlog[asoc->tsn_in_at].sz = chk_length; asoc->in_tsnlog[asoc->tsn_in_at].flgs = chunk_flags; asoc->in_tsnlog[asoc->tsn_in_at].stcb = (void *)stcb; @@ -1482,17 +1825,24 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, asoc->in_tsnlog[asoc->tsn_in_at].in_out = 1; asoc->tsn_in_at++; #endif + /* + * Before we continue lets validate that we are not being fooled by + * an evil attacker. We can only have Nk chunks based on our TSN + * spread allowed by the mapping array N * 8 bits, so there is no + * way our stream sequence numbers could have wrapped. We of course + * only validate the FIRST fragment so the bit must be set. + */ if ((chunk_flags & SCTP_DATA_FIRST_FRAG) && (TAILQ_EMPTY(&asoc->resetHead)) && (chunk_flags & SCTP_DATA_UNORDERED) == 0 && - SCTP_SSN_GE(asoc->strmin[strmno].last_sequence_delivered, strmseq)) { + SCTP_MSGID_GE(old_data, asoc->strmin[strmno].last_sequence_delivered, msg_id)) { /* The incoming sseq is behind where we last delivered? */ SCTPDBG(SCTP_DEBUG_INDATA1, "EVIL/Broken-Dup S-SEQ:%d delivered:%d from peer, Abort!\n", - strmseq, asoc->strmin[strmno].last_sequence_delivered); + msg_id, asoc->strmin[strmno].last_sequence_delivered); snprintf(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", asoc->strmin[strmno].last_sequence_delivered, - tsn, strmno, strmseq); + tsn, strmno, msg_id); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_16; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); @@ -1503,12 +1853,21 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * From here down we may find ch-> invalid * so its a good idea NOT to use it. *************************************/ - - the_len = (chk_length - sizeof(struct sctp_data_chunk)); + if (nch) { + the_len = (chk_length - sizeof(struct sctp_idata_chunk)); + } else { + the_len = (chk_length - sizeof(struct sctp_data_chunk)); + } if (last_chunk == 0) { - dmbuf = SCTP_M_COPYM(*m, - (offset + sizeof(struct sctp_data_chunk)), - the_len, M_NOWAIT); + if (nch) { + dmbuf = SCTP_M_COPYM(*m, + (offset + sizeof(struct sctp_idata_chunk)), + the_len, M_NOWAIT); + } else { + dmbuf = SCTP_M_COPYM(*m, + (offset + sizeof(struct sctp_data_chunk)), + the_len, M_NOWAIT); + } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { sctp_log_mbc(dmbuf, SCTP_MBUF_ICOPY); @@ -1520,7 +1879,11 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, dmbuf = *m; /* lop off the top part */ - m_adj(dmbuf, (offset + sizeof(struct sctp_data_chunk))); + if (nch) { + m_adj(dmbuf, (offset + sizeof(struct sctp_idata_chunk))); + } else { + m_adj(dmbuf, (offset + sizeof(struct sctp_data_chunk))); + } if (SCTP_BUF_NEXT(dmbuf) == NULL) { l_len = SCTP_BUF_LEN(dmbuf); } else { @@ -1544,11 +1907,36 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, SCTP_STAT_INCR(sctps_nomem); return (0); } + /* + * Now no matter what we need a control, get one if we don't have + * one (we may have gotten it above when we found the message was + * fragmented + */ + if (control == NULL) { + sctp_alloc_a_readq(stcb, control); + sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, + protocol_id, + strmno, msg_id, + chunk_flags, + NULL, fsn, msg_id); + if (control == NULL) { + SCTP_STAT_INCR(sctps_nomem); + return (0); + } + if ((chunk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + control->data = dmbuf; + control->tail_mbuf = NULL; + control->end_added = control->last_frag_seen = control->first_frag_seen = 1; + control->top_fsn = control->fsn_included = fsn; + } + created_control = 1; + } + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x ordered:%d msgid:%d control:%p\n", + chunk_flags, ordered, msg_id, control); if ((chunk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG && - asoc->fragmented_delivery_inprogress == 0 && TAILQ_EMPTY(&asoc->resetHead) && ((ordered == 0) || - ((uint16_t) (asoc->strmin[strmno].last_sequence_delivered + 1) == strmseq && + ((uint16_t) (asoc->strmin[strmno].last_sequence_delivered + 1) == msg_id && TAILQ_EMPTY(&asoc->strmin[strmno].inqueue)))) { /* Candidate for express delivery */ /* @@ -1558,109 +1946,30 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * And there is room for it in the socket buffer. Lets just * stuff it up the buffer.... */ - - /* It would be nice to avoid this copy if we could :< */ - sctp_alloc_a_readq(stcb, control); - sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, - protocol_id, - strmno, strmseq, - chunk_flags, - dmbuf); - if (control == NULL) { - goto failed_express_del; - } SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { asoc->highest_tsn_inside_nr_map = tsn; } + SCTPDBG(SCTP_DEBUG_XXX, "Injecting control:%p to be read (mid:%d)\n", + control, msg_id); + sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); if ((chunk_flags & SCTP_DATA_UNORDERED) == 0) { /* for ordered, bump what we delivered */ - asoc->strmin[strmno].last_sequence_delivered++; + strm->last_sequence_delivered++; } SCTP_STAT_INCR(sctps_recvexpress); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del_alt(stcb, tsn, strmseq, strmno, + sctp_log_strm_del_alt(stcb, tsn, msg_id, strmno, SCTP_STR_LOG_FROM_EXPRS_DEL); } control = NULL; - goto finish_express_del; } -failed_express_del: - /* If we reach here this is a new chunk */ - chk = NULL; - control = NULL; - /* Express for fragmented delivery? */ - if ((asoc->fragmented_delivery_inprogress) && - (stcb->asoc.control_pdapi) && - (asoc->str_of_pdapi == strmno) && - (asoc->ssn_of_pdapi == strmseq) - ) { - control = stcb->asoc.control_pdapi; - if ((chunk_flags & SCTP_DATA_FIRST_FRAG) == SCTP_DATA_FIRST_FRAG) { - /* Can't be another first? */ - goto failed_pdapi_express_del; - } - if (tsn == (control->sinfo_tsn + 1)) { - /* Yep, we can add it on */ - int end = 0; - - if (chunk_flags & SCTP_DATA_LAST_FRAG) { - end = 1; - } - if (sctp_append_to_readq(stcb->sctp_ep, stcb, control, dmbuf, end, - tsn, - &stcb->sctp_socket->so_rcv)) { - SCTP_PRINTF("Append fails end:%d\n", end); - goto failed_pdapi_express_del; - } - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - SCTP_STAT_INCR(sctps_recvexpressm); - asoc->tsn_last_delivered = tsn; - asoc->fragment_flags = chunk_flags; - asoc->tsn_of_pdapi_last_delivered = tsn; - asoc->last_flags_delivered = chunk_flags; - asoc->last_strm_seq_delivered = strmseq; - asoc->last_strm_no_delivered = strmno; - if (end) { - /* clean up the flags and such */ - asoc->fragmented_delivery_inprogress = 0; - if ((chunk_flags & SCTP_DATA_UNORDERED) == 0) { - asoc->strmin[strmno].last_sequence_delivered++; - } - stcb->asoc.control_pdapi = NULL; - if (TAILQ_EMPTY(&asoc->reasmqueue) == 0) { - /* - * There could be another message - * ready - */ - need_reasm_check = 1; - } - } - control = NULL; - goto finish_express_del; - } - } -failed_pdapi_express_del: - control = NULL; - if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - } else { - SCTP_SET_TSN_PRESENT(asoc->mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map)) { - asoc->highest_tsn_inside_map = tsn; - } - } + /* Now will we need a chunk too? */ if ((chunk_flags & SCTP_DATA_NOT_FRAG) != SCTP_DATA_NOT_FRAG) { sctp_alloc_a_chunk(stcb, chk); if (chk == NULL) { @@ -1674,7 +1983,8 @@ failed_pdapi_express_del: } chk->rec.data.TSN_seq = tsn; chk->no_fr_allowed = 0; - chk->rec.data.stream_seq = strmseq; + chk->rec.data.fsn_num = fsn; + chk->rec.data.stream_seq = msg_id; chk->rec.data.stream_number = strmno; chk->rec.data.payloadtype = protocol_id; chk->rec.data.context = stcb->asoc.context; @@ -1683,193 +1993,110 @@ failed_pdapi_express_del: chk->asoc = asoc; chk->send_size = the_len; chk->whoTo = net; + SCTPDBG(SCTP_DEBUG_XXX, "Building ck:%p for control:%p to be read (mid:%d)\n", + chk, + control, msg_id); atomic_add_int(&net->ref_count, 1); chk->data = dmbuf; + } + /* Set the appropriate TSN mark */ + if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { + SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + asoc->highest_tsn_inside_nr_map = tsn; + } } else { - sctp_alloc_a_readq(stcb, control); - sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, - protocol_id, - strmno, strmseq, - chunk_flags, - dmbuf); - if (control == NULL) { - /* No memory so we drop the chunk */ - SCTP_STAT_INCR(sctps_nomem); - if (last_chunk == 0) { - /* we copied it, free the copy */ - sctp_m_freem(dmbuf); - } - return (0); + SCTP_SET_TSN_PRESENT(asoc->mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map)) { + asoc->highest_tsn_inside_map = tsn; } - control->length = the_len; } - - /* Mark it as received */ - /* Now queue it where it belongs */ - if (control != NULL) { - /* First a sanity check */ - if (asoc->fragmented_delivery_inprogress) { + /* Now is it complete (i.e. not fragmented)? */ + if ((chunk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* + * Special check for when streams are resetting. We could be + * more smart about this and check the actual stream to see + * if it is not being reset.. that way we would not create a + * HOLB when amongst streams being reset and those not being + * reset. + * + */ + if (((liste = TAILQ_FIRST(&asoc->resetHead)) != NULL) && + SCTP_TSN_GT(tsn, liste->tsn)) { /* - * Ok, we have a fragmented delivery in progress if - * this chunk is next to deliver OR belongs in our - * view to the reassembly, the peer is evil or - * broken. + * yep its past where we need to reset... go ahead + * and queue it. */ - uint32_t estimate_tsn; - - estimate_tsn = asoc->tsn_last_delivered + 1; - if (TAILQ_EMPTY(&asoc->reasmqueue) && - (estimate_tsn == control->sinfo_tsn)) { - /* Evil/Broke peer */ - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "Reas. queue emtpy, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_17; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; - } - return (0); + if (TAILQ_EMPTY(&asoc->pending_reply_queue)) { + /* first one on */ + TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); } else { - if (sctp_does_tsn_belong_to_reasm(asoc, control->sinfo_tsn)) { - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_18; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; + struct sctp_queued_to_read *ctlOn, *nctlOn; + unsigned char inserted = 0; + + TAILQ_FOREACH_SAFE(ctlOn, &asoc->pending_reply_queue, next, nctlOn) { + if (SCTP_TSN_GT(control->sinfo_tsn, ctlOn->sinfo_tsn)) { + + continue; + } else { + /* found it */ + TAILQ_INSERT_BEFORE(ctlOn, control, next); + inserted = 1; + break; } - return (0); } - } - } else { - /* No PDAPI running */ - if (!TAILQ_EMPTY(&asoc->reasmqueue)) { - /* - * Reassembly queue is NOT empty validate - * that this tsn does not need to be in - * reasembly queue. If it does then our peer - * is broken or evil. - */ - if (sctp_does_tsn_belong_to_reasm(asoc, control->sinfo_tsn)) { - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "No PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_19; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; - } - return (0); + if (inserted == 0) { + /* + * must be put at end, use prevP + * (all setup from loop) to setup + * nextP. + */ + TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); } } + goto finish_express_del; } - /* ok, if we reach here we have passed the sanity checks */ if (chunk_flags & SCTP_DATA_UNORDERED) { /* queue directly into socket buffer */ + SCTPDBG(SCTP_DEBUG_XXX, "Unordered data to be read control:%p msg_id:%d\n", + control, msg_id); sctp_mark_non_revokable(asoc, control->sinfo_tsn); sctp_add_to_readq(stcb->sctp_ep, stcb, control, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - } else { - /* - * Special check for when streams are resetting. We - * could be more smart about this and check the - * actual stream to see if it is not being reset.. - * that way we would not create a HOLB when amongst - * streams being reset and those not being reset. - * - * We take complete messages that have a stream reset - * intervening (aka the TSN is after where our - * cum-ack needs to be) off and put them on a - * pending_reply_queue. The reassembly ones we do - * not have to worry about since they are all sorted - * and proceessed by TSN order. It is only the - * singletons I must worry about. - */ - if (((liste = TAILQ_FIRST(&asoc->resetHead)) != NULL) && - SCTP_TSN_GT(tsn, liste->tsn)) { - /* - * yep its past where we need to reset... go - * ahead and queue it. - */ - if (TAILQ_EMPTY(&asoc->pending_reply_queue)) { - /* first one on */ - TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); - } else { - struct sctp_queued_to_read *ctlOn, - *nctlOn; - unsigned char inserted = 0; + &stcb->sctp_socket->so_rcv, 1, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - TAILQ_FOREACH_SAFE(ctlOn, &asoc->pending_reply_queue, next, nctlOn) { - if (SCTP_TSN_GT(control->sinfo_tsn, ctlOn->sinfo_tsn)) { - continue; - } else { - /* found it */ - TAILQ_INSERT_BEFORE(ctlOn, control, next); - inserted = 1; - break; - } - } - if (inserted == 0) { - /* - * must be put at end, use - * prevP (all setup from - * loop) to setup nextP. - */ - TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); - } - } - } else { - sctp_queue_data_to_stream(stcb, asoc, control, abort_flag); - if (*abort_flag) { - if (last_chunk) { - *m = NULL; - } - return (0); + } else { + SCTPDBG(SCTP_DEBUG_XXX, "Queue control:%p for reordering msg_id:%d\n", control, + msg_id); + sctp_queue_data_to_stream(stcb, strm, asoc, control, abort_flag, &need_reasm_check); + if (*abort_flag) { + if (last_chunk) { + *m = NULL; } + return (0); } } - } else { - /* Into the re-assembly queue */ - sctp_queue_data_for_reasm(stcb, asoc, chk, abort_flag); - if (*abort_flag) { - /* - * the assoc is now gone and chk was put onto the - * reasm queue, which has all been freed. - */ - if (last_chunk) { - *m = NULL; - } - return (0); + goto finish_express_del; + } + /* If we reach here its a reassembly */ + need_reasm_check = 1; + SCTPDBG(SCTP_DEBUG_XXX, + "Queue data to stream for reasm control:%p msg_id:%d\n", + control, msg_id); + sctp_queue_data_for_reasm(stcb, asoc, strm, control, chk, created_control, abort_flag, tsn); + if (*abort_flag) { + /* + * the assoc is now gone and chk was put onto the reasm + * queue, which has all been freed. + */ + if (last_chunk) { + *m = NULL; } + return (0); } finish_express_del: + /* Here we tidy up things */ if (tsn == (asoc->cumulative_tsn + 1)) { /* Update cum-ack */ asoc->cumulative_tsn = tsn; @@ -1885,7 +2112,7 @@ finish_express_del: SCTP_STAT_INCR(sctps_recvdata); /* Set it present please */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del_alt(stcb, tsn, strmseq, strmno, SCTP_STR_LOG_FROM_MARK_TSN); + sctp_log_strm_del_alt(stcb, tsn, msg_id, strmno, SCTP_STR_LOG_FROM_MARK_TSN); } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MAP_LOGGING_ENABLE) { sctp_log_map(asoc->mapping_array_base_tsn, asoc->cumulative_tsn, @@ -1912,7 +2139,7 @@ finish_express_del: /* All can be removed */ TAILQ_FOREACH_SAFE(ctl, &asoc->pending_reply_queue, next, nctl) { TAILQ_REMOVE(&asoc->pending_reply_queue, ctl, next); - sctp_queue_data_to_stream(stcb, asoc, ctl, abort_flag); + sctp_queue_data_to_stream(stcb, strm, asoc, ctl, abort_flag, &need_reasm_check); if (*abort_flag) { return (0); } @@ -1928,7 +2155,7 @@ finish_express_del: * ctl->sinfo_tsn > liste->tsn */ TAILQ_REMOVE(&asoc->pending_reply_queue, ctl, next); - sctp_queue_data_to_stream(stcb, asoc, ctl, abort_flag); + sctp_queue_data_to_stream(stcb, strm, asoc, ctl, abort_flag, &need_reasm_check); if (*abort_flag) { return (0); } @@ -1938,12 +2165,12 @@ finish_express_del: * Now service re-assembly to pick up anything that has been * held on reassembly queue? */ - sctp_deliver_reasm_check(stcb, asoc); + (void)sctp_deliver_reasm_check(stcb, asoc, strm); need_reasm_check = 0; } if (need_reasm_check) { /* Another one waits ? */ - sctp_deliver_reasm_check(stcb, asoc); + (void)sctp_deliver_reasm_check(stcb, asoc, strm); } return (1); } @@ -2179,7 +2406,7 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_20); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_17); } sctp_send_shutdown(stcb, ((stcb->asoc.alternate) ? stcb->asoc.alternate : stcb->asoc.primary_destination)); @@ -2244,73 +2471,12 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) } } -void -sctp_service_queues(struct sctp_tcb *stcb, struct sctp_association *asoc) -{ - struct sctp_tmit_chunk *chk; - uint32_t tsize, pd_point; - uint16_t nxt_todel; - - if (asoc->fragmented_delivery_inprogress) { - sctp_service_reassembly(stcb, asoc); - } - /* Can we proceed further, i.e. the PD-API is complete */ - if (asoc->fragmented_delivery_inprogress) { - /* no */ - return; - } - /* - * Now is there some other chunk I can deliver from the reassembly - * queue. - */ -doit_again: - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - asoc->size_on_reasm_queue = 0; - asoc->cnt_on_reasm_queue = 0; - return; - } - nxt_todel = asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered + 1; - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) && - ((nxt_todel == chk->rec.data.stream_seq) || - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED))) { - /* - * Yep the first one is here. We setup to start reception, - * by backing down the TSN just in case we can't deliver. - */ - - /* - * Before we start though either all of the message should - * be here or the socket buffer max or nothing on the - * delivery queue and something can be delivered. - */ - if (stcb->sctp_socket) { - pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, - stcb->sctp_ep->partial_delivery_point); - } else { - pd_point = stcb->sctp_ep->partial_delivery_point; - } - if (sctp_is_all_msg_on_reasm(asoc, &tsize) || (tsize >= pd_point)) { - asoc->fragmented_delivery_inprogress = 1; - asoc->tsn_last_delivered = chk->rec.data.TSN_seq - 1; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->pdapi_ppid = chk->rec.data.payloadtype; - asoc->fragment_flags = chk->rec.data.rcv_flags; - sctp_service_reassembly(stcb, asoc); - if (asoc->fragmented_delivery_inprogress == 0) { - goto doit_again; - } - } - } -} - int sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t * high_tsn) { - struct sctp_data_chunk *ch, chunk_buf; + struct sctp_chunkhdr *ch, chunk_buf; struct sctp_association *asoc; int num_chunks = 0; /* number of control chunks processed */ int stop_proc = 0; @@ -2368,8 +2534,8 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } } /* get pointer to the first chunk header */ - ch = (struct sctp_data_chunk *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, + sizeof(struct sctp_chunkhdr), (uint8_t *) & chunk_buf); if (ch == NULL) { return (1); } @@ -2381,14 +2547,44 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, asoc->data_pkts_seen++; while (stop_proc == 0) { /* validate chunk length */ - chk_length = ntohs(ch->ch.chunk_length); + chk_length = ntohs(ch->chunk_length); if (length - *offset < chk_length) { /* all done, mutulated chunk */ stop_proc = 1; continue; } - if (ch->ch.chunk_type == SCTP_DATA) { - if ((size_t)chk_length < sizeof(struct sctp_data_chunk)) { + if ((asoc->idata_supported == 1) && + (ch->chunk_type == SCTP_DATA)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + snprintf(msg, sizeof(msg), "I-DATA chunk received when DATA was negotiated"); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_18; + sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); + return (2); + } + if ((asoc->idata_supported == 0) && + (ch->chunk_type == SCTP_IDATA)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + snprintf(msg, sizeof(msg), "DATA chunk received when I-DATA was negotiated"); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_19; + sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); + return (2); + } + if ((ch->chunk_type == SCTP_DATA) || + (ch->chunk_type == SCTP_IDATA)) { + int clen; + + if (ch->chunk_type == SCTP_DATA) { + clen = sizeof(struct sctp_data_chunk); + } else { + clen = sizeof(struct sctp_idata_chunk); + } + if ((size_t)chk_length < clen) { /* * Need to send an abort since we had a * invalid data chunk. @@ -2399,19 +2595,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, snprintf(msg, sizeof(msg), "DATA chunk of length %d", chk_length); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_21; - sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); - return (2); - } - if ((size_t)chk_length == sizeof(struct sctp_data_chunk)) { - /* - * Need to send an abort since we had an - * empty data chunk. - */ - struct mbuf *op_err; - - op_err = sctp_generate_no_user_data_cause(ch->dp.tsn); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_22; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_20; sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); return (2); } @@ -2423,9 +2607,9 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } else { last_chunk = 0; } - if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset, ch, + if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset, chk_length, net, high_tsn, &abort_flag, &break_flag, - last_chunk)) { + last_chunk, ch->chunk_type)) { num_chunks++; } if (abort_flag) @@ -2441,7 +2625,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } } else { /* not a data chunk in the data region */ - switch (ch->ch.chunk_type) { + switch (ch->chunk_type) { case SCTP_INITIATION: case SCTP_INITIATION_ACK: case SCTP_SELECTIVE_ACK: @@ -2477,7 +2661,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, char msg[SCTP_DIAG_INFO_LEN]; snprintf(msg, sizeof(msg), "DATA chunk followed by chunk of type %2.2x", - ch->ch.chunk_type); + ch->chunk_type); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); return (2); @@ -2485,7 +2669,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, break; default: /* unknown chunk type, use bit rules */ - if (ch->ch.chunk_type & 0x40) { + if (ch->chunk_type & 0x40) { /* Add a error report to the queue */ struct mbuf *op_err; struct sctp_gen_error_cause *cause; @@ -2505,7 +2689,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } } } - if ((ch->ch.chunk_type & 0x80) == 0) { + if ((ch->chunk_type & 0x80) == 0) { /* discard the rest of this packet */ stop_proc = 1; } /* else skip this bad chunk and @@ -2519,8 +2703,8 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, stop_proc = 1; continue; } - ch = (struct sctp_data_chunk *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, + sizeof(struct sctp_chunkhdr), (uint8_t *) & chunk_buf); if (ch == NULL) { *offset = length; stop_proc = 1; @@ -2550,9 +2734,6 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_last_rcvd); } /* now service all of the reassm queue if needed */ - if (!(TAILQ_EMPTY(&asoc->reasmqueue))) - sctp_service_queues(stcb, asoc); - if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) { /* Assure that we ack right away */ stcb->asoc.send_sack = 1; @@ -3629,7 +3810,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cumack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_23; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_21; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -3832,7 +4013,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, net->dest_state &= ~SCTP_ADDR_PF; sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_24); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_22); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -3918,7 +4099,7 @@ again: } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_25); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_23); } } } @@ -3992,7 +4173,7 @@ again: *abort_now = 1; /* XXX */ op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_26; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_24; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } else { @@ -4206,7 +4387,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cum_ack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_27; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -4238,7 +4419,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* stop any timers */ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_28); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_26); net->partial_bytes_acked = 0; net->flight_size = 0; } @@ -4443,14 +4624,14 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (net->new_pseudo_cumack) sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_29); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_27); } } else { if (accum_moved) { TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_28); } } } @@ -4630,7 +4811,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, net->dest_state &= ~SCTP_ADDR_PF; sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_31); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_29); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -4654,7 +4835,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* stop all timers */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); net->flight_size = 0; net->partial_bytes_acked = 0; } @@ -4710,7 +4891,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, *abort_now = 1; /* XXX */ op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_33; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_31; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } else { @@ -4862,7 +5043,7 @@ again: } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_34); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); } } } @@ -4963,130 +5144,175 @@ sctp_kick_prsctp_reorder_queue(struct sctp_tcb *stcb, { struct sctp_queued_to_read *ctl, *nctl; struct sctp_association *asoc; - uint16_t tt; + uint32_t tt; + int need_reasm_check = 0, old; asoc = &stcb->asoc; tt = strmin->last_sequence_delivered; + if (asoc->idata_supported) { + old = 0; + } else { + old = 1; + } /* * First deliver anything prior to and including the stream no that - * came in + * came in. */ - TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next, nctl) { - if (SCTP_SSN_GE(tt, ctl->sinfo_ssn)) { + TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next_instrm, nctl) { + if (SCTP_MSGID_GE(old, tt, ctl->sinfo_ssn)) { /* this is deliverable now */ - TAILQ_REMOVE(&strmin->inqueue, ctl, next); - /* subtract pending on streams */ - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - /* deliver it to at least the delivery-q */ - if (stcb->sctp_socket) { - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + if (((ctl->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + if (ctl->on_strm_q) { + if (ctl->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strmin->inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strmin->uno_inqueue, ctl, next_instrm); + } else { + panic("strmin:%p ctl:%p unknown %d", + strmin, ctl, ctl->on_strm_q); + } + ctl->on_strm_q = 0; + } + /* subtract pending on streams */ + asoc->size_on_all_streams -= ctl->length; + sctp_ucount_decr(asoc->cnt_on_all_streams); + /* deliver it to at least the delivery-q */ + if (stcb->sctp_socket) { + sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); + sctp_add_to_readq(stcb->sctp_ep, stcb, + ctl, + &stcb->sctp_socket->so_rcv, + 1, SCTP_READ_LOCK_HELD, + SCTP_SO_NOT_LOCKED); + } + } else { + /* Its a fragmented message */ + if (ctl->first_frag_seen) { + /* + * Make it so this is next to + * deliver, we restore later + */ + strmin->last_sequence_delivered = ctl->sinfo_ssn - 1; + need_reasm_check = 1; + break; + } } } else { /* no more delivery now. */ break; } } + if (need_reasm_check) { + int ret; + + ret = sctp_deliver_reasm_check(stcb, &stcb->asoc, strmin); + if (SCTP_MSGID_GT(old, tt, strmin->last_sequence_delivered)) { + /* Restore the next to deliver unless we are ahead */ + strmin->last_sequence_delivered = tt; + } + if (ret == 0) { + /* Left the front Partial one on */ + return; + } + need_reasm_check = 0; + } /* * now we must deliver things in queue the normal way if any are * now ready. */ tt = strmin->last_sequence_delivered + 1; - TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next, nctl) { + TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next_instrm, nctl) { if (tt == ctl->sinfo_ssn) { - /* this is deliverable now */ - TAILQ_REMOVE(&strmin->inqueue, ctl, next); - /* subtract pending on streams */ - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - /* deliver it to at least the delivery-q */ - strmin->last_sequence_delivered = ctl->sinfo_ssn; - if (stcb->sctp_socket) { - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + if (((ctl->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* this is deliverable now */ + if (ctl->on_strm_q) { + if (ctl->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strmin->inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strmin->uno_inqueue, ctl, next_instrm); + } else { + panic("strmin:%p ctl:%p unknown %d", + strmin, ctl, ctl->on_strm_q); + } + ctl->on_strm_q = 0; + } + /* subtract pending on streams */ + asoc->size_on_all_streams -= ctl->length; + sctp_ucount_decr(asoc->cnt_on_all_streams); + /* deliver it to at least the delivery-q */ + strmin->last_sequence_delivered = ctl->sinfo_ssn; + if (stcb->sctp_socket) { + sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); + sctp_add_to_readq(stcb->sctp_ep, stcb, + ctl, + &stcb->sctp_socket->so_rcv, 1, + SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + } + tt = strmin->last_sequence_delivered + 1; + } else { + /* Its a fragmented message */ + if (ctl->first_frag_seen) { + /* + * Make it so this is next to + * deliver + */ + strmin->last_sequence_delivered = ctl->sinfo_ssn - 1; + need_reasm_check = 1; + break; + } } - tt = strmin->last_sequence_delivered + 1; } else { break; } } + if (need_reasm_check) { + (void)sctp_deliver_reasm_check(stcb, &stcb->asoc, strmin); + } } static void sctp_flush_reassm_for_str_seq(struct sctp_tcb *stcb, struct sctp_association *asoc, - uint16_t stream, uint16_t seq) + uint16_t stream, uint32_t seq) { + struct sctp_queued_to_read *control; + struct sctp_stream_in *strm; struct sctp_tmit_chunk *chk, *nchk; - /* For each one on here see if we need to toss it */ /* - * For now large messages held on the reasmqueue that are complete + * For now large messages held on the stream reasm that are complete * will be tossed too. We could in theory do more work to spin * through and stop after dumping one msg aka seeing the start of a * new msg at the head, and call the delivery function... to see if * it can be delivered... But for now we just dump everything on the * queue. */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - /* - * Do not toss it if on a different stream or marked for - * unordered delivery in which case the stream sequence - * number has no meaning. - */ - if ((chk->rec.data.stream_number != stream) || - ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == SCTP_DATA_UNORDERED)) { - continue; + strm = &asoc->strmin[stream]; + control = find_reasm_entry(strm, (uint32_t) seq, 0, 0); + if (control == NULL) { + /* Not found */ + return; + } + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + /* Purge hanging chunks */ + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + asoc->size_on_reasm_queue -= chk->send_size; + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; } - if (chk->rec.data.stream_seq == seq) { - /* It needs to be tossed */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, asoc->tsn_last_delivered)) { - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->fragment_flags = chk->rec.data.rcv_flags; - } - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - - /* Clear up any stream problem */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != SCTP_DATA_UNORDERED && - SCTP_SSN_GT(chk->rec.data.stream_seq, asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered)) { - /* - * We must dump forward this streams - * sequence number if the chunk is not - * unordered that is being skipped. There is - * a chance that if the peer does not - * include the last fragment in its FWD-TSN - * we WILL have a problem here since you - * would have a partial chunk in queue that - * may not be deliverable. Also if a Partial - * delivery API as started the user may get - * a partial chunk. The next read returning - * a new chunk... really ugly but I see no - * way around it! Maybe a notify?? - */ - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered = chk->rec.data.stream_seq; - } - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } else if (SCTP_SSN_GT(chk->rec.data.stream_seq, seq)) { - /* - * If the stream_seq is > than the purging one, we - * are done - */ - break; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + if (control->on_read_q == 0) { + sctp_free_remote_addr(control->whoFrom); + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; } + sctp_free_a_readq(stcb, control); } } @@ -5113,7 +5339,6 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, unsigned int i, fwd_sz, m_size; uint32_t str_seq; struct sctp_stream_in *strm; - struct sctp_tmit_chunk *chk, *nchk; struct sctp_queued_to_read *ctl, *sv; asoc = &stcb->asoc; @@ -5152,7 +5377,7 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, "New cum ack %8.8x too high, highest TSN %8.8x", new_cum_tsn, asoc->highest_tsn_inside_map); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_35; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_33; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -5183,67 +5408,9 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, /*************************************************************/ /* 2. Clear up re-assembly queue */ /*************************************************************/ - /* - * First service it if pd-api is up, just in case we can progress it - * forward - */ - if (asoc->fragmented_delivery_inprogress) { - sctp_service_reassembly(stcb, asoc); - } - /* For each one on here see if we need to toss it */ - /* - * For now large messages held on the reasmqueue that are complete - * will be tossed too. We could in theory do more work to spin - * through and stop after dumping one msg aka seeing the start of a - * new msg at the head, and call the delivery function... to see if - * it can be delivered... But for now we just dump everything on the - * queue. - */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (SCTP_TSN_GE(new_cum_tsn, chk->rec.data.TSN_seq)) { - /* It needs to be tossed */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, asoc->tsn_last_delivered)) { - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->fragment_flags = chk->rec.data.rcv_flags; - } - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - - /* Clear up any stream problem */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != SCTP_DATA_UNORDERED && - SCTP_SSN_GT(chk->rec.data.stream_seq, asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered)) { - /* - * We must dump forward this streams - * sequence number if the chunk is not - * unordered that is being skipped. There is - * a chance that if the peer does not - * include the last fragment in its FWD-TSN - * we WILL have a problem here since you - * would have a partial chunk in queue that - * may not be deliverable. Also if a Partial - * delivery API as started the user may get - * a partial chunk. The next read returning - * a new chunk... really ugly but I see no - * way around it! Maybe a notify?? - */ - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered = chk->rec.data.stream_seq; - } - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } else { - /* - * Ok we have gone beyond the end of the fwd-tsn's - * mark. - */ - break; - } - } + + /* This is now done as part of clearing up the stream/seq */ + /*******************************************************/ /* 3. Update the PR-stream re-ordering queues and fix */ /* delivery issues as needed. */ @@ -5252,27 +5419,45 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, if (m && fwd_sz) { /* New method. */ unsigned int num_str; + uint32_t sequence; + uint16_t stream; + int old; struct sctp_strseq *stseq, strseqbuf; + struct sctp_strseq_mid *stseq_m, strseqbuf_m; offset += sizeof(*fwd); SCTP_INP_READ_LOCK(stcb->sctp_ep); - num_str = fwd_sz / sizeof(struct sctp_strseq); + if (asoc->idata_supported) { + num_str = fwd_sz / sizeof(struct sctp_strseq_mid); + old = 0; + } else { + num_str = fwd_sz / sizeof(struct sctp_strseq); + old = 1; + } for (i = 0; i < num_str; i++) { - uint16_t st; - - stseq = (struct sctp_strseq *)sctp_m_getptr(m, offset, - sizeof(struct sctp_strseq), - (uint8_t *) & strseqbuf); - offset += sizeof(struct sctp_strseq); - if (stseq == NULL) { - break; + if (asoc->idata_supported) { + stseq_m = (struct sctp_strseq_mid *)sctp_m_getptr(m, offset, + sizeof(struct sctp_strseq_mid), + (uint8_t *) & strseqbuf_m); + offset += sizeof(struct sctp_strseq_mid); + if (stseq_m == NULL) { + break; + } + stream = ntohs(stseq_m->stream); + sequence = ntohl(stseq_m->msg_id); + } else { + stseq = (struct sctp_strseq *)sctp_m_getptr(m, offset, + sizeof(struct sctp_strseq), + (uint8_t *) & strseqbuf); + offset += sizeof(struct sctp_strseq); + if (stseq == NULL) { + break; + } + stream = ntohs(stseq->stream); + sequence = (uint32_t) ntohs(stseq->sequence); } /* Convert */ - st = ntohs(stseq->stream); - stseq->stream = st; - st = ntohs(stseq->sequence); - stseq->sequence = st; /* now process */ @@ -5281,12 +5466,12 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * queue where its not all delivered. If we find it * we transmute the read entry into a PDI_ABORTED. */ - if (stseq->stream >= asoc->streamincnt) { + if (stream >= asoc->streamincnt) { /* screwed up streams, stop! */ break; } - if ((asoc->str_of_pdapi == stseq->stream) && - (asoc->ssn_of_pdapi == stseq->sequence)) { + if ((asoc->str_of_pdapi == stream) && + (asoc->ssn_of_pdapi == sequence)) { /* * If this is the one we were partially * delivering now then we no longer are. @@ -5295,14 +5480,24 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, */ asoc->fragmented_delivery_inprogress = 0; } - sctp_flush_reassm_for_str_seq(stcb, asoc, stseq->stream, stseq->sequence); + strm = &asoc->strmin[stream]; + sctp_flush_reassm_for_str_seq(stcb, asoc, stream, sequence); TAILQ_FOREACH(ctl, &stcb->sctp_ep->read_queue, next) { - if ((ctl->sinfo_stream == stseq->stream) && - (ctl->sinfo_ssn == stseq->sequence)) { - str_seq = (stseq->stream << 16) | stseq->sequence; - ctl->end_added = 1; + if ((ctl->sinfo_stream == stream) && + (ctl->sinfo_ssn == sequence)) { + str_seq = (stream << 16) | (0x0000ffff & sequence); ctl->pdapi_aborted = 1; sv = stcb->asoc.control_pdapi; + ctl->end_added = 1; + if (ctl->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strm->inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strm->uno_inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q) { + panic("strm:%p ctl:%p unknown %d", + strm, ctl, ctl->on_strm_q); + } + ctl->on_strm_q = 0; stcb->asoc.control_pdapi = ctl; sctp_ulp_notify(SCTP_NOTIFY_PARTIAL_DELVIERY_INDICATION, stcb, @@ -5311,16 +5506,15 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, SCTP_SO_NOT_LOCKED); stcb->asoc.control_pdapi = sv; break; - } else if ((ctl->sinfo_stream == stseq->stream) && - SCTP_SSN_GT(ctl->sinfo_ssn, stseq->sequence)) { + } else if ((ctl->sinfo_stream == stream) && + SCTP_MSGID_GT(old, ctl->sinfo_ssn, sequence)) { /* We are past our victim SSN */ break; } } - strm = &asoc->strmin[stseq->stream]; - if (SCTP_SSN_GT(stseq->sequence, strm->last_sequence_delivered)) { + if (SCTP_MSGID_GT(old, sequence, strm->last_sequence_delivered)) { /* Update the sequence number */ - strm->last_sequence_delivered = stseq->sequence; + strm->last_sequence_delivered = sequence; } /* now kick the stream the new way */ /* sa_ignore NO_NULL_CHK */ @@ -5332,10 +5526,4 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * Now slide thing forward. */ sctp_slide_mapping_arrays(stcb); - - if (!TAILQ_EMPTY(&asoc->reasmqueue)) { - /* now lets kick out and check for more fragmented delivery */ - /* sa_ignore NO_NULL_CHK */ - sctp_deliver_reasm_check(stcb, &stcb->asoc); - } } diff --git a/sys/netinet/sctp_indata.h b/sys/netinet/sctp_indata.h index 94cd49c..162ca90 100644 --- a/sys/netinet/sctp_indata.h +++ b/sys/netinet/sctp_indata.h @@ -43,35 +43,31 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t tsn, uint32_t ppid, uint32_t context, uint16_t stream_no, - uint16_t stream_seq, uint8_t flags, + uint32_t stream_seq, uint8_t flags, struct mbuf *dm); -#define sctp_build_readq_entry_mac(_ctl, in_it, context, net, tsn, ppid, stream_no, stream_seq, flags, dm) do { \ +#define sctp_build_readq_entry_mac(_ctl, in_it, context, net, tsn, ppid, stream_no, stream_seq, flags, dm, tfsn, msgid) do { \ if (_ctl) { \ atomic_add_int(&((net)->ref_count), 1); \ + memset(_ctl, 0, sizeof(struct sctp_queued_to_read)); \ (_ctl)->sinfo_stream = stream_no; \ (_ctl)->sinfo_ssn = stream_seq; \ + TAILQ_INIT(&_ctl->reasm); \ + (_ctl)->top_fsn = tfsn; \ + (_ctl)->msg_id = msgid; \ (_ctl)->sinfo_flags = (flags << 8); \ (_ctl)->sinfo_ppid = ppid; \ (_ctl)->sinfo_context = context; \ - (_ctl)->sinfo_timetolive = 0; \ + (_ctl)->fsn_included = 0xffffffff; \ + (_ctl)->top_fsn = 0xffffffff; \ (_ctl)->sinfo_tsn = tsn; \ (_ctl)->sinfo_cumtsn = tsn; \ (_ctl)->sinfo_assoc_id = sctp_get_associd((in_it)); \ - (_ctl)->length = 0; \ - (_ctl)->held_length = 0; \ (_ctl)->whoFrom = net; \ (_ctl)->data = dm; \ - (_ctl)->tail_mbuf = NULL; \ - (_ctl)->aux_data = NULL; \ (_ctl)->stcb = (in_it); \ (_ctl)->port_from = (in_it)->rport; \ - (_ctl)->spec_flags = 0; \ - (_ctl)->do_not_ref_stcb = 0; \ - (_ctl)->end_added = 0; \ - (_ctl)->pdapi_aborted = 0; \ - (_ctl)->some_taken = 0; \ } \ } while (0) diff --git a/sys/netinet/sctp_input.c b/sys/netinet/sctp_input.c index c555be2..9e4cbd8 100644 --- a/sys/netinet/sctp_input.c +++ b/sys/netinet/sctp_input.c @@ -386,17 +386,9 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) if (asoc->strmin != NULL) { /* Free the old ones */ - struct sctp_queued_to_read *ctl, *nctl; - for (i = 0; i < asoc->streamincnt; i++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[i].inqueue, next, nctl) { - TAILQ_REMOVE(&asoc->strmin[i].inqueue, ctl, next); - sctp_free_remote_addr(ctl->whoFrom); - ctl->whoFrom = NULL; - sctp_m_freem(ctl->data); - ctl->data = NULL; - sctp_free_a_readq(stcb, ctl); - } + sctp_clean_up_stream(stcb, &asoc->strmin[i].inqueue); + sctp_clean_up_stream(stcb, &asoc->strmin[i].uno_inqueue); } SCTP_FREE(asoc->strmin, SCTP_M_STRMI); } @@ -414,8 +406,10 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) } for (i = 0; i < asoc->streamincnt; i++) { asoc->strmin[i].stream_no = i; - asoc->strmin[i].last_sequence_delivered = 0xffff; + asoc->strmin[i].last_sequence_delivered = 0xffffffff; TAILQ_INIT(&asoc->strmin[i].inqueue); + TAILQ_INIT(&asoc->strmin[i].uno_inqueue); + asoc->strmin[i].pd_api_started = 0; asoc->strmin[i].delivery_started = 0; } /* @@ -894,6 +888,29 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp, * With a normal shutdown we assume the end of last record. */ SCTP_INP_READ_LOCK(stcb->sctp_ep); + if (asoc->control_pdapi->on_strm_q) { + struct sctp_stream_in *strm; + + strm = &asoc->strmin[asoc->control_pdapi->sinfo_stream]; + if (asoc->control_pdapi->on_strm_q == SCTP_ON_UNORDERED) { + /* Unordered */ + TAILQ_REMOVE(&strm->uno_inqueue, asoc->control_pdapi, next_instrm); + asoc->control_pdapi->on_strm_q = 0; + } else if (asoc->control_pdapi->on_strm_q == SCTP_ON_ORDERED) { + /* Ordered */ + TAILQ_REMOVE(&strm->inqueue, asoc->control_pdapi, next_instrm); + asoc->control_pdapi->on_strm_q = 0; + } else { + panic("Unknown state on ctrl:%p on_strm_q:%d", + asoc->control_pdapi, + asoc->control_pdapi->on_strm_q); + } + } + printf("%s:%d End added to ctl:%p (%d)\n", + __FUNCTION__, + __LINE__, + asoc->control_pdapi, + asoc->control_pdapi->on_strm_q); asoc->control_pdapi->end_added = 1; asoc->control_pdapi->pdapi_aborted = 1; asoc->control_pdapi = NULL; @@ -1009,6 +1026,11 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED, * With a normal shutdown we assume the end of last record. */ SCTP_INP_READ_LOCK(stcb->sctp_ep); + printf("%s:%d End added to ctl:%p (%d)\n", + __FUNCTION__, + __LINE__, + asoc->control_pdapi, + asoc->control_pdapi->on_strm_q); asoc->control_pdapi->end_added = 1; asoc->control_pdapi->pdapi_aborted = 1; asoc->control_pdapi = NULL; @@ -1083,6 +1105,7 @@ sctp_process_unrecog_chunk(struct sctp_tcb *stcb, struct sctp_paramhdr *phdr, case SCTP_ASCONF: sctp_asconf_cleanup(stcb, net); break; + case SCTP_IFORWARD_CUM_TSN: case SCTP_FORWARD_CUM_TSN: stcb->asoc.prsctp_supported = 0; break; @@ -3450,6 +3473,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, /* resend last asconf ack */ sctp_send_asconf_ack(stcb); break; + case SCTP_IFORWARD_CUM_TSN: case SCTP_FORWARD_CUM_TSN: send_forward_tsn(stcb, &stcb->asoc); break; @@ -3475,8 +3499,8 @@ sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t * uint16_t temp; /* - * We set things to 0xffff since this is the last delivered sequence - * and we will be sending in 0 after the reset. + * We set things to 0xffffffff since this is the last delivered + * sequence and we will be sending in 0 after the reset. */ if (number_entries) { @@ -3485,12 +3509,12 @@ sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t * if (temp >= stcb->asoc.streamincnt) { continue; } - stcb->asoc.strmin[temp].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[temp].last_sequence_delivered = 0xffffffff; } } else { list = NULL; for (i = 0; i < stcb->asoc.streamincnt; i++) { - stcb->asoc.strmin[i].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[i].last_sequence_delivered = 0xffffffff; } } sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_RECV, stcb, number_entries, (void *)list, SCTP_SO_NOT_LOCKED); @@ -4031,20 +4055,28 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch /* copy off the old data */ for (i = 0; i < stcb->asoc.streamincnt; i++) { TAILQ_INIT(&stcb->asoc.strmin[i].inqueue); + TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue); stcb->asoc.strmin[i].stream_no = i; stcb->asoc.strmin[i].last_sequence_delivered = oldstrm[i].last_sequence_delivered; stcb->asoc.strmin[i].delivery_started = oldstrm[i].delivery_started; + stcb->asoc.strmin[i].pd_api_started = oldstrm[i].pd_api_started; /* now anything on those queues? */ - TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].inqueue, next, nctl) { - TAILQ_REMOVE(&oldstrm[i].inqueue, ctl, next); - TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].inqueue, ctl, next); + TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].inqueue, next_instrm, nctl) { + TAILQ_REMOVE(&oldstrm[i].inqueue, ctl, next_instrm); + TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].inqueue, ctl, next_instrm); + } + TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].uno_inqueue, next_instrm, nctl) { + TAILQ_REMOVE(&oldstrm[i].uno_inqueue, ctl, next_instrm); + TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].uno_inqueue, ctl, next_instrm); } } /* Init the new streams */ for (i = stcb->asoc.streamincnt; i < num_stream; i++) { TAILQ_INIT(&stcb->asoc.strmin[i].inqueue); + TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue); stcb->asoc.strmin[i].stream_no = i; - stcb->asoc.strmin[i].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[i].last_sequence_delivered = 0xffffffff; + stcb->asoc.strmin[i].pd_api_started = 0; stcb->asoc.strmin[i].delivery_started = 0; } SCTP_FREE(oldstrm, SCTP_M_STRMI); @@ -5441,6 +5473,7 @@ process_control_chunks: } break; case SCTP_FORWARD_CUM_TSN: + case SCTP_IFORWARD_CUM_TSN: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_FWD-TSN\n"); if (chk_length < sizeof(struct sctp_forward_tsn_chunk)) { /* Its not ours */ diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 8eda473..4e683a2 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -3326,10 +3326,11 @@ sctp_source_address_selection(struct sctp_inpcb *inp, #endif /** - * Rules: - Find the route if needed, cache if I can. - Look at - * interface address in route, Is it in the bound list. If so we - * have the best source. - If not we must rotate amongst the - * addresses. + * Rules: + * - Find the route if needed, cache if I can. + * - Look at interface address in route, Is it in the bound list. If so we + * have the best source. + * - If not we must rotate amongst the addresses. * * Cavets and issues * @@ -4796,6 +4797,9 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked pr_supported = (struct sctp_supported_chunk_types_param *)(mtod(m, caddr_t)+chunk_len); if (stcb->asoc.prsctp_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_FORWARD_CUM_TSN; + if (stcb->asoc.idata_supported) { + pr_supported->chunk_types[num_ext++] = SCTP_IFORWARD_CUM_TSN; + } } if (stcb->asoc.auth_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_AUTHENTICATION; @@ -4807,6 +4811,9 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked if (stcb->asoc.reconfig_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_STREAM_RESET; } + if (stcb->asoc.idata_supported) { + pr_supported->chunk_types[num_ext++] = SCTP_IDATA; + } if (stcb->asoc.nrsack_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_NR_SELECTIVE_ACK; } @@ -5951,6 +5958,10 @@ do_a_abort: if (((asoc != NULL) && (asoc->prsctp_supported == 1)) || ((asoc == NULL) && (inp->prsctp_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_FORWARD_CUM_TSN; + if (((asoc != NULL) && (asoc->idata_supported == 1)) || + ((asoc == NULL) && (inp->idata_supported == 1))) { + pr_supported->chunk_types[num_ext++] = SCTP_IFORWARD_CUM_TSN; + } } if (((asoc != NULL) && (asoc->auth_supported == 1)) || ((asoc == NULL) && (inp->auth_supported == 1))) { @@ -5965,6 +5976,10 @@ do_a_abort: ((asoc == NULL) && (inp->reconfig_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_STREAM_RESET; } + if (((asoc != NULL) && (asoc->idata_supported == 1)) || + ((asoc == NULL) && (inp->idata_supported == 1))) { + pr_supported->chunk_types[num_ext++] = SCTP_IDATA; + } if (((asoc != NULL) && (asoc->nrsack_supported == 1)) || ((asoc == NULL) && (inp->nrsack_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_NR_SELECTIVE_ACK; @@ -6232,11 +6247,15 @@ sctp_get_frag_point(struct sctp_tcb *stcb, * we use a larger frag point. */ if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; + ovh = SCTP_MIN_OVERHEAD; } else { - ovh = SCTP_MED_V4_OVERHEAD; + ovh = SCTP_MIN_V4_OVERHEAD; + } + if (stcb->asoc.idata_supported) { + ovh += sizeof(struct sctp_idata_chunk); + } else { + ovh += sizeof(struct sctp_data_chunk); } - if (stcb->asoc.sctp_frag_point > asoc->smallest_mtu) siz = asoc->smallest_mtu - ovh; else @@ -6361,6 +6380,8 @@ sctp_msg_append(struct sctp_tcb *stcb, sp->timetolive = srcv->sinfo_timetolive; sp->ppid = srcv->sinfo_ppid; sp->context = srcv->sinfo_context; + sp->fsn = 0; + sp->msg_id = atomic_fetchadd_int(&stcb->asoc.assoc_msg_id, 1); if (sp->sinfo_flags & SCTP_ADDR_OVER) { sp->net = net; atomic_add_int(&sp->net->ref_count, 1); @@ -7163,8 +7184,9 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, struct sctp_association *asoc; struct sctp_stream_queue_pending *sp; struct sctp_tmit_chunk *chk; - struct sctp_data_chunk *dchkh; - uint32_t to_move, length; + struct sctp_data_chunk *dchkh = NULL; + struct sctp_idata_chunk *ndchkh = NULL; + uint32_t to_move, length, leading; uint8_t rcv_flags = 0; uint8_t some_taken; uint8_t send_lock_up = 0; @@ -7173,6 +7195,7 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, asoc = &stcb->asoc; one_more_time: /* sa_ignore FREED_MEMORY */ + *locked = 0; sp = TAILQ_FIRST(&strq->outqueue); if (sp == NULL) { *locked = 0; @@ -7184,7 +7207,9 @@ one_more_time: if (sp) { goto one_more_time; } - if (strq->last_msg_incomplete) { + if ((sctp_is_feature_on(stcb->sctp_ep, SCTP_PCB_FLAGS_EXPLICIT_EOR) == 0) && + (stcb->asoc.idata_supported == 0) && + (strq->last_msg_incomplete)) { SCTP_PRINTF("Huh? Stream:%d lm_in_c=%d but queue is NULL\n", strq->stream_no, strq->last_msg_incomplete); @@ -7248,7 +7273,8 @@ one_more_time: * sender just finished this but still holds a * reference */ - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; *giveup = 1; to_move = 0; goto out_of; @@ -7257,7 +7283,8 @@ one_more_time: /* is there some to get */ if (sp->length == 0) { /* no */ - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; *giveup = 1; to_move = 0; goto out_of; @@ -7280,7 +7307,8 @@ one_more_time: } sp->length = 0; sp->some_taken = 1; - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; *giveup = 1; to_move = 0; goto out_of; @@ -7342,7 +7370,8 @@ re_look: } } else { /* Nothing to take. */ - if (sp->some_taken) { + if ((sp->some_taken) && + (stcb->asoc.idata_supported == 0)) { *locked = 1; } *giveup = 1; @@ -7461,7 +7490,12 @@ dont_do_it: } else { atomic_subtract_int(&sp->length, to_move); } - if (M_LEADINGSPACE(chk->data) < (int)sizeof(struct sctp_data_chunk)) { + if (stcb->asoc.idata_supported == 0) { + leading = (int)sizeof(struct sctp_data_chunk); + } else { + leading = (int)sizeof(struct sctp_idata_chunk); + } + if (M_LEADINGSPACE(chk->data) < leading) { /* Not enough room for a chunk header, get some */ struct mbuf *m; @@ -7502,7 +7536,11 @@ dont_do_it: M_ALIGN(chk->data, 4); } } - SCTP_BUF_PREPEND(chk->data, sizeof(struct sctp_data_chunk), M_NOWAIT); + if (stcb->asoc.idata_supported == 0) { + SCTP_BUF_PREPEND(chk->data, sizeof(struct sctp_data_chunk), M_NOWAIT); + } else { + SCTP_BUF_PREPEND(chk->data, sizeof(struct sctp_idata_chunk), M_NOWAIT); + } if (chk->data == NULL) { /* HELP, TSNH since we assured it would not above? */ #ifdef INVARIANTS @@ -7515,8 +7553,13 @@ dont_do_it: to_move = 0; goto out_of; } - sctp_snd_sb_alloc(stcb, sizeof(struct sctp_data_chunk)); - chk->book_size = chk->send_size = (uint16_t) (to_move + sizeof(struct sctp_data_chunk)); + if (stcb->asoc.idata_supported == 0) { + sctp_snd_sb_alloc(stcb, sizeof(struct sctp_data_chunk)); + chk->book_size = chk->send_size = (uint16_t) (to_move + sizeof(struct sctp_data_chunk)); + } else { + sctp_snd_sb_alloc(stcb, sizeof(struct sctp_idata_chunk)); + chk->book_size = chk->send_size = (uint16_t) (to_move + sizeof(struct sctp_idata_chunk)); + } chk->book_size_scale = 0; chk->sent = SCTP_DATAGRAM_UNSENT; @@ -7555,7 +7598,11 @@ dont_do_it: (uint32_t) ((chk->rec.data.stream_number << 16) | chk->rec.data.stream_seq), chk->rec.data.TSN_seq); } - dchkh = mtod(chk->data, struct sctp_data_chunk *); + if (stcb->asoc.idata_supported == 0) { + dchkh = mtod(chk->data, struct sctp_data_chunk *); + } else { + ndchkh = mtod(chk->data, struct sctp_idata_chunk *); + } /* * Put the rest of the things in place now. Size was done earlier in * previous loop prior to padding. @@ -7577,14 +7624,29 @@ dont_do_it: asoc->out_tsnlog[asoc->tsn_out_at].in_out = 2; asoc->tsn_out_at++; #endif - - dchkh->ch.chunk_type = SCTP_DATA; - dchkh->ch.chunk_flags = chk->rec.data.rcv_flags; - dchkh->dp.tsn = htonl(chk->rec.data.TSN_seq); - dchkh->dp.stream_id = htons(strq->stream_no); - dchkh->dp.stream_sequence = htons(chk->rec.data.stream_seq); - dchkh->dp.protocol_id = chk->rec.data.payloadtype; - dchkh->ch.chunk_length = htons(chk->send_size); + if (stcb->asoc.idata_supported == 0) { + dchkh->ch.chunk_type = SCTP_DATA; + dchkh->ch.chunk_flags = chk->rec.data.rcv_flags; + dchkh->dp.tsn = htonl(chk->rec.data.TSN_seq); + dchkh->dp.stream_id = htons((strq->stream_no & 0x0000ffff)); + dchkh->dp.stream_sequence = htons(chk->rec.data.stream_seq); + dchkh->dp.protocol_id = chk->rec.data.payloadtype; + dchkh->ch.chunk_length = htons(chk->send_size); + } else { + ndchkh->ch.chunk_type = SCTP_IDATA; + ndchkh->ch.chunk_flags = chk->rec.data.rcv_flags; + ndchkh->dp.tsn = htonl(chk->rec.data.TSN_seq); + ndchkh->dp.stream_id = htons(strq->stream_no); + /* WHAT DO WE DO HERE??? */ + ndchkh->dp.reserved = htons(0); + ndchkh->dp.msg_id = htonl(sp->msg_id); + if (sp->fsn == 0) + ndchkh->dp.protocol_id = chk->rec.data.payloadtype; + else + ndchkh->dp.fsn = htonl(sp->fsn); + sp->fsn++; + ndchkh->ch.chunk_length = htons(chk->send_size); + } /* Now advance the chk->send_size by the actual pad needed. */ if (chk->send_size < SCTP_SIZE32(chk->book_size)) { /* need a pad */ @@ -7640,7 +7702,8 @@ dont_do_it: stcb->asoc.locked_on_sending = NULL; } else { /* more to go, we are locked */ - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; } asoc->chunks_on_out_queue++; strq->chunks_on_queues++; @@ -7686,7 +7749,11 @@ sctp_fill_outqueue(struct sctp_tcb *stcb, break; } /* Need an allowance for the data chunk header too */ - goal_mtu -= sizeof(struct sctp_data_chunk); + if (stcb->asoc.idata_supported == 0) { + goal_mtu -= sizeof(struct sctp_data_chunk); + } else { + goal_mtu -= sizeof(struct sctp_idata_chunk); + } /* must make even word boundary */ goal_mtu &= 0xfffffffc; @@ -7797,12 +7864,15 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, { /** * Ok this is the generic chunk service queue. we must do the - * following: - Service the stream queue that is next, moving any - * message (note I must get a complete message i.e. FIRST/MIDDLE and - * LAST to the out queue in one pass) and assigning TSN's - Check to - * see if the cwnd/rwnd allows any output, if so we go ahead and - * fomulate and send the low level chunks. Making sure to combine - * any control in the control chunk queue also. + * following: + * - Service the stream queue that is next, moving any + * message (note I must get a complete message i.e. FIRST/MIDDLE and + * LAST to the out queue in one pass) and assigning TSN's. This + * only applys though if the peer does not support NDATA. For NDATA + * chunks its ok to not send the entire message ;-) + * - Check to see if the cwnd/rwnd allows any output, if so we go ahead and + * fomulate and send the low level chunks. Making sure to combine + * any control in the control chunk queue also. */ struct sctp_nets *net, *start_at, *sack_goes_to = NULL, *old_start_at = NULL; struct mbuf *outchain, *endoutchain; @@ -10225,7 +10295,13 @@ send_forward_tsn(struct sctp_tcb *stcb, struct sctp_tmit_chunk *chk; struct sctp_forward_tsn_chunk *fwdtsn; uint32_t advance_peer_ack_point; + int old; + if (asoc->idata_supported) { + old = 0; + } else { + old = 1; + } SCTP_TCB_LOCK_ASSERT(stcb); TAILQ_FOREACH(chk, &asoc->control_send_queue, sctp_next) { if (chk->rec.chunk_id.id == SCTP_FORWARD_CUM_TSN) { @@ -10247,6 +10323,11 @@ send_forward_tsn(struct sctp_tcb *stcb, } asoc->fwd_tsn_cnt++; chk->copy_by_ref = 0; + /* + * We don't do the old thing here since this is used not for on-wire + * but to tell if we are sending a fwd-tsn by the stack during + * output. And if its a IFORWARD or a FORWARD it is a fwd-tsn. + */ chk->rec.chunk_id.id = SCTP_FORWARD_CUM_TSN; chk->rec.chunk_id.can_take_data = 0; chk->flags = 0; @@ -10271,6 +10352,7 @@ sctp_fill_in_rest: { struct sctp_tmit_chunk *at, *tp1, *last; struct sctp_strseq *strseq; + struct sctp_strseq_mid *strseq_m; unsigned int cnt_of_space, i, ovh; unsigned int space_needed; unsigned int cnt_of_skipped = 0; @@ -10287,9 +10369,13 @@ sctp_fill_in_rest: } cnt_of_skipped++; } - space_needed = (sizeof(struct sctp_forward_tsn_chunk) + - (cnt_of_skipped * sizeof(struct sctp_strseq))); - + if (old) { + space_needed = (sizeof(struct sctp_forward_tsn_chunk) + + (cnt_of_skipped * sizeof(struct sctp_strseq))); + } else { + space_needed = (sizeof(struct sctp_forward_tsn_chunk) + + (cnt_of_skipped * sizeof(struct sctp_strseq_mid))); + } cnt_of_space = (unsigned int)M_TRAILINGSPACE(chk->data); if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { @@ -10318,8 +10404,13 @@ sctp_fill_in_rest: 0xff, 0xff, cnt_of_space, space_needed); } - cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); - cnt_of_skipped /= sizeof(struct sctp_strseq); + if (old) { + cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); + cnt_of_skipped /= sizeof(struct sctp_strseq); + } else { + cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); + cnt_of_skipped /= sizeof(struct sctp_strseq_mid); + } /*- * Go through and find the TSN that will be the one * we report. @@ -10346,15 +10437,24 @@ sctp_fill_in_rest: */ if (last) advance_peer_ack_point = last->rec.data.TSN_seq; - space_needed = sizeof(struct sctp_forward_tsn_chunk) + - cnt_of_skipped * sizeof(struct sctp_strseq); + if (old) { + space_needed = sizeof(struct sctp_forward_tsn_chunk) + + cnt_of_skipped * sizeof(struct sctp_strseq); + } else { + space_needed = sizeof(struct sctp_forward_tsn_chunk) + + cnt_of_skipped * sizeof(struct sctp_strseq_mid); + } } chk->send_size = space_needed; /* Setup the chunk */ fwdtsn = mtod(chk->data, struct sctp_forward_tsn_chunk *); fwdtsn->ch.chunk_length = htons(chk->send_size); fwdtsn->ch.chunk_flags = 0; - fwdtsn->ch.chunk_type = SCTP_FORWARD_CUM_TSN; + if (old) { + fwdtsn->ch.chunk_type = SCTP_FORWARD_CUM_TSN; + } else { + fwdtsn->ch.chunk_type = SCTP_IFORWARD_CUM_TSN; + } fwdtsn->new_cumulative_tsn = htonl(advance_peer_ack_point); SCTP_BUF_LEN(chk->data) = chk->send_size; fwdtsn++; @@ -10362,7 +10462,11 @@ sctp_fill_in_rest: * Move pointer to after the fwdtsn and transfer to the * strseq pointer. */ - strseq = (struct sctp_strseq *)fwdtsn; + if (old) { + strseq = (struct sctp_strseq *)fwdtsn; + } else { + strseq_m = (struct sctp_strseq_mid *)fwdtsn; + } /*- * Now populate the strseq list. This is done blindly * without pulling out duplicate stream info. This is @@ -10389,9 +10493,16 @@ sctp_fill_in_rest: if (at->rec.data.TSN_seq == advance_peer_ack_point) { at->rec.data.fwd_tsn_cnt = 0; } - strseq->stream = ntohs(at->rec.data.stream_number); - strseq->sequence = ntohs(at->rec.data.stream_seq); - strseq++; + if (old) { + strseq->stream = ntohs(at->rec.data.stream_number); + strseq->sequence = ntohs(at->rec.data.stream_seq); + strseq++; + } else { + strseq_m->stream = ntohs(at->rec.data.stream_number); + strseq_m->reserved = ntohs(0); + strseq_m->msg_id = ntohl(at->rec.data.stream_seq); + strseq_m++; + } at = tp1; } } @@ -12312,6 +12423,8 @@ sctp_copy_it_in(struct sctp_tcb *stcb, sp->timetolive = srcv->sinfo_timetolive; sp->ppid = srcv->sinfo_ppid; sp->context = srcv->sinfo_context; + sp->fsn = 0; + sp->msg_id = atomic_fetchadd_int(&stcb->asoc.assoc_msg_id, 1); (void)SCTP_GETTIME_TIMEVAL(&sp->ts); sp->stream = srcv->sinfo_stream; @@ -13065,8 +13178,10 @@ skip_preblock: * interrupt. */ strm->last_msg_incomplete = 1; - asoc->stream_locked = 1; - asoc->stream_locked_on = srcv->sinfo_stream; + if (stcb->asoc.idata_supported == 0) { + asoc->stream_locked = 1; + asoc->stream_locked_on = srcv->sinfo_stream; + } sp->sender_all_done = 0; } sctp_snd_sb_alloc(stcb, sp->length); @@ -13325,8 +13440,10 @@ skip_preblock: if (sp) { if (sp->msg_is_complete == 0) { strm->last_msg_incomplete = 1; - asoc->stream_locked = 1; - asoc->stream_locked_on = srcv->sinfo_stream; + if (stcb->asoc.idata_supported == 0) { + asoc->stream_locked = 1; + asoc->stream_locked_on = srcv->sinfo_stream; + } } else { sp->sender_all_done = 1; strm->last_msg_incomplete = 0; diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c index 12aa145..2013fbc 100644 --- a/sys/netinet/sctp_pcb.c +++ b/sys/netinet/sctp_pcb.c @@ -2476,6 +2476,8 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) inp->reconfig_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_reconfig_enable); inp->nrsack_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_nrsack_enable); inp->pktdrop_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_pktdrop_enable); + inp->idata_supported = 0; + inp->fibnum = so->so_fibnum; /* init the small hash table we use to track asocid <-> tcb */ inp->sctp_asocidhash = SCTP_HASH_INIT(SCTP_STACK_VTAG_HASH_SIZE, &inp->hashasocidmark); @@ -3660,8 +3662,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) * no need to free the net count, since at this point all * assoc's are gone. */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), sq); - SCTP_DECR_READQ_COUNT(); + sctp_free_a_readq(NULL, sq); } /* Now the sctp_pcb things */ /* @@ -4649,6 +4650,45 @@ sctp_add_vtag_to_timewait(uint32_t tag, uint32_t time, uint16_t lport, uint16_t } } +void +sctp_clean_up_stream(struct sctp_tcb *stcb, struct sctp_readhead *rh) +{ + struct sctp_tmit_chunk *chk, *nchk; + struct sctp_queued_to_read *ctl, *nctl; + + TAILQ_FOREACH_SAFE(ctl, rh, next_instrm, nctl) { + TAILQ_REMOVE(rh, ctl, next_instrm); + ctl->on_strm_q = 0; + if (ctl->on_read_q == 0) { + sctp_free_remote_addr(ctl->whoFrom); + if (ctl->data) { + sctp_m_freem(ctl->data); + ctl->data = NULL; + } + } + /* Reassembly free? */ + TAILQ_FOREACH_SAFE(chk, &ctl->reasm, sctp_next, nchk) { + TAILQ_REMOVE(&ctl->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + if (chk->holds_key_ref) + sctp_auth_key_release(stcb, chk->auth_keyid, SCTP_SO_LOCKED); + sctp_free_remote_addr(chk->whoTo); + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_chunk), chk); + SCTP_DECR_CHK_COUNT(); + /* sa_ignore FREED_MEMORY */ + } + /* + * We don't free the address here since all the net's were + * freed above. + */ + if (ctl->on_read_q == 0) { + sctp_free_a_readq(stcb, ctl); + } + } +} /*- @@ -4986,8 +5026,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre sq->whoFrom = NULL; sq->stcb = NULL; /* Free the ctl entry */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), sq); - SCTP_DECR_READQ_COUNT(); + sctp_free_a_readq(stcb, sq); /* sa_ignore FREED_MEMORY */ } TAILQ_FOREACH_SAFE(chk, &asoc->free_chunks, sctp_next, nchk) { @@ -5100,20 +5139,6 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre SCTP_DECR_CHK_COUNT(); /* sa_ignore FREED_MEMORY */ } - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - if (chk->holds_key_ref) - sctp_auth_key_release(stcb, chk->auth_keyid, SCTP_SO_LOCKED); - sctp_free_remote_addr(chk->whoTo); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_chunk), chk); - SCTP_DECR_CHK_COUNT(); - /* sa_ignore FREED_MEMORY */ - } - if (asoc->mapping_array) { SCTP_FREE(asoc->mapping_array, SCTP_M_MAP); asoc->mapping_array = NULL; @@ -5129,23 +5154,9 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre } asoc->strm_realoutsize = asoc->streamoutcnt = 0; if (asoc->strmin) { - struct sctp_queued_to_read *ctl, *nctl; - for (i = 0; i < asoc->streamincnt; i++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[i].inqueue, next, nctl) { - TAILQ_REMOVE(&asoc->strmin[i].inqueue, ctl, next); - sctp_free_remote_addr(ctl->whoFrom); - if (ctl->data) { - sctp_m_freem(ctl->data); - ctl->data = NULL; - } - /* - * We don't free the address here since all - * the net's were freed above. - */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), ctl); - SCTP_DECR_READQ_COUNT(); - } + sctp_clean_up_stream(stcb, &asoc->strmin[i].inqueue); + sctp_clean_up_stream(stcb, &asoc->strmin[i].uno_inqueue); } SCTP_FREE(asoc->strmin, SCTP_M_STRMI); asoc->strmin = NULL; @@ -6094,6 +6105,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, uint8_t peer_supports_reconfig; uint8_t peer_supports_nrsack; uint8_t peer_supports_pktdrop; + uint8_t peer_supports_idata; #ifdef INET struct sockaddr_in sin; @@ -6122,6 +6134,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } else { sa = src; } + peer_supports_idata = 0; peer_supports_ecn = 0; peer_supports_prsctp = 0; peer_supports_auth = 0; @@ -6502,6 +6515,9 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, case SCTP_AUTHENTICATION: peer_supports_auth = 1; break; + case SCTP_IDATA: + peer_supports_idata = 1; + break; default: /* one I have not learned yet */ break; @@ -6660,6 +6676,10 @@ next_param: (peer_supports_reconfig == 0)) { stcb->asoc.reconfig_supported = 0; } + if ((stcb->asoc.idata_supported == 1) && + (peer_supports_idata == 0)) { + stcb->asoc.idata_supported = 0; + } if ((stcb->asoc.nrsack_supported == 1) && (peer_supports_nrsack == 0)) { stcb->asoc.nrsack_supported = 0; @@ -6851,26 +6871,9 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) SCTP_STAT_INCR(sctps_protocol_drains_done); cumulative_tsn_p1 = asoc->cumulative_tsn + 1; cnt = 0; - /* First look in the re-assembly queue */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, cumulative_tsn_p1)) { - /* Yep it is above cum-ack */ - cnt++; - SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.TSN_seq, asoc->mapping_array_base_tsn); - asoc->size_on_reasm_queue = sctp_sbspace_sub(asoc->size_on_reasm_queue, chk->send_size); - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } - } /* Ok that was fun, now we will drain all the inbound streams? */ for (strmat = 0; strmat < asoc->streamincnt; strmat++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[strmat].inqueue, next, nctl) { + TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[strmat].inqueue, next_instrm, nctl) { if (SCTP_TSN_GT(ctl->sinfo_tsn, cumulative_tsn_p1)) { /* Yep it is above cum-ack */ cnt++; @@ -6878,14 +6881,58 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) asoc->size_on_all_streams = sctp_sbspace_sub(asoc->size_on_all_streams, ctl->length); sctp_ucount_decr(asoc->cnt_on_all_streams); SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); - TAILQ_REMOVE(&asoc->strmin[strmat].inqueue, ctl, next); + TAILQ_REMOVE(&asoc->strmin[strmat].inqueue, ctl, next_instrm); if (ctl->data) { sctp_m_freem(ctl->data); ctl->data = NULL; } sctp_free_remote_addr(ctl->whoFrom); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), ctl); - SCTP_DECR_READQ_COUNT(); + /* Now its reasm? */ + TAILQ_FOREACH_SAFE(chk, &ctl->reasm, sctp_next, nchk) { + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.TSN_seq, asoc->mapping_array_base_tsn); + asoc->size_on_reasm_queue = sctp_sbspace_sub(asoc->size_on_reasm_queue, chk->send_size); + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&ctl->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + sctp_free_a_readq(stcb, ctl); + } + } + TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[strmat].uno_inqueue, next_instrm, nctl) { + if (SCTP_TSN_GT(ctl->sinfo_tsn, cumulative_tsn_p1)) { + /* Yep it is above cum-ack */ + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, ctl->sinfo_tsn, asoc->mapping_array_base_tsn); + asoc->size_on_all_streams = sctp_sbspace_sub(asoc->size_on_all_streams, ctl->length); + sctp_ucount_decr(asoc->cnt_on_all_streams); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&asoc->strmin[strmat].uno_inqueue, ctl, next_instrm); + if (ctl->data) { + sctp_m_freem(ctl->data); + ctl->data = NULL; + } + sctp_free_remote_addr(ctl->whoFrom); + /* Now its reasm? */ + TAILQ_FOREACH_SAFE(chk, &ctl->reasm, sctp_next, nchk) { + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.TSN_seq, asoc->mapping_array_base_tsn); + asoc->size_on_reasm_queue = sctp_sbspace_sub(asoc->size_on_reasm_queue, chk->send_size); + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&ctl->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + sctp_free_a_readq(stcb, ctl); } } } diff --git a/sys/netinet/sctp_pcb.h b/sys/netinet/sctp_pcb.h index f28016a..a5810a7 100644 --- a/sys/netinet/sctp_pcb.h +++ b/sys/netinet/sctp_pcb.h @@ -410,6 +410,7 @@ struct sctp_inpcb { uint8_t ecn_supported; uint8_t prsctp_supported; uint8_t auth_supported; + uint8_t idata_supported; uint8_t asconf_supported; uint8_t reconfig_supported; uint8_t nrsack_supported; @@ -629,6 +630,8 @@ int sctp_destination_is_reachable(struct sctp_tcb *, struct sockaddr *); int sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp); +void sctp_clean_up_stream(struct sctp_tcb *stcb, struct sctp_readhead *rh); + /*- * Null in last arg inpcb indicate run on ALL ep's. Specific inp in last arg * indicates run on ONLY assoc's of the specified endpoint. diff --git a/sys/netinet/sctp_structs.h b/sys/netinet/sctp_structs.h index 8756650..87aa05b 100644 --- a/sys/netinet/sctp_structs.h +++ b/sys/netinet/sctp_structs.h @@ -389,7 +389,7 @@ struct sctp_nets { struct sctp_data_chunkrec { uint32_t TSN_seq; /* the TSN of this transmit */ - uint16_t stream_seq; /* the stream sequence number of this transmit */ + uint32_t stream_seq; /* the stream sequence number of this transmit */ uint16_t stream_number; /* the stream number of this guy */ uint32_t payloadtype; uint32_t context; /* from send */ @@ -400,6 +400,7 @@ struct sctp_data_chunkrec { */ uint32_t fast_retran_tsn; /* sending_seq at the time of FR */ struct timeval timetodrop; /* time we drop it from queue */ + uint32_t fsn_num; /* Fragment Sequence Number */ uint8_t doing_fast_retransmit; uint8_t rcv_flags; /* flags pulled from data chunk on inbound for * outbound holds sending flags for PR-SCTP. */ @@ -458,7 +459,7 @@ struct sctp_tmit_chunk { */ struct sctp_queued_to_read { /* sinfo structure Pluse more */ uint16_t sinfo_stream; /* off the wire */ - uint16_t sinfo_ssn; /* off the wire */ + uint32_t sinfo_ssn; /* off the wire */ uint16_t sinfo_flags; /* SCTP_UNORDERED from wire use SCTP_EOF for * EOR */ uint32_t sinfo_ppid; /* off the wire */ @@ -468,8 +469,11 @@ struct sctp_queued_to_read { /* sinfo structure Pluse more */ uint32_t sinfo_cumtsn; /* Use this in reassembly as last TSN */ sctp_assoc_t sinfo_assoc_id; /* our assoc id */ /* Non sinfo stuff */ + uint32_t msg_id; /* Fragment Index */ uint32_t length; /* length of data */ uint32_t held_length; /* length held in sb */ + uint32_t top_fsn; /* Highest FSN in queue */ + uint32_t fsn_included; /* Highest FSN in *data portion */ struct sctp_nets *whoFrom; /* where it came from */ struct mbuf *data; /* front of the mbuf chain of data with * PKT_HDR */ @@ -478,14 +482,24 @@ struct sctp_queued_to_read { /* sinfo structure Pluse more */ * take it from us */ struct sctp_tcb *stcb; /* assoc, used for window update */ TAILQ_ENTRY(sctp_queued_to_read) next; + TAILQ_ENTRY(sctp_queued_to_read) next_instrm; + struct sctpchunk_listhead reasm; uint16_t port_from; uint16_t spec_flags; /* Flags to hold the notification field */ uint8_t do_not_ref_stcb; uint8_t end_added; uint8_t pdapi_aborted; + uint8_t pdapi_started; uint8_t some_taken; + uint8_t last_frag_seen; + uint8_t first_frag_seen; + uint8_t on_read_q; + uint8_t on_strm_q; }; +#define SCTP_ON_ORDERED 1 +#define SCTP_ON_UNORDERED 2 + /* This data structure will be on the outbound * stream queues. Data will be pulled off from * the front of the mbuf data and chunk-ified @@ -511,6 +525,8 @@ struct sctp_stream_queue_pending { struct sctp_nets *net; TAILQ_ENTRY(sctp_stream_queue_pending) next; TAILQ_ENTRY(sctp_stream_queue_pending) ss_next; + uint32_t fsn; + uint32_t msg_id; uint32_t length; uint32_t timetolive; uint32_t ppid; @@ -534,9 +550,11 @@ struct sctp_stream_queue_pending { TAILQ_HEAD(sctpwheelunrel_listhead, sctp_stream_in); struct sctp_stream_in { struct sctp_readhead inqueue; + struct sctp_readhead uno_inqueue; + uint32_t last_sequence_delivered; /* used for re-order */ uint16_t stream_no; - uint16_t last_sequence_delivered; /* used for re-order */ uint8_t delivery_started; + uint8_t pd_api_started; }; TAILQ_HEAD(sctpwheel_listhead, sctp_stream_out); @@ -605,8 +623,8 @@ struct sctp_stream_out { uint32_t abandoned_unsent[1]; uint32_t abandoned_sent[1]; #endif + uint32_t next_sequence_send; /* next one I expect to send out */ uint16_t stream_no; - uint16_t next_sequence_send; /* next one I expect to send out */ uint8_t last_msg_incomplete; uint8_t state; }; @@ -635,12 +653,13 @@ struct sctp_scoping { struct sctp_tsn_log { void *stcb; uint32_t tsn; + uint32_t seq; uint16_t strm; - uint16_t seq; uint16_t sz; uint16_t flgs; uint16_t in_pos; uint16_t in_out; + uint16_t resv; }; #define SCTP_FS_SPEC_LOG_SIZE 200 @@ -811,9 +830,6 @@ struct sctp_association { struct sctpchunk_listhead sent_queue; struct sctpchunk_listhead send_queue; - /* re-assembly queue for fragmented chunks on the inbound path */ - struct sctpchunk_listhead reasmqueue; - /* Scheduling queues */ union scheduling_data ss_data; @@ -881,7 +897,7 @@ struct sctp_association { uint32_t stream_scheduling_module; uint32_t vrf_id; - + uint32_t assoc_msg_id; uint32_t cookie_preserve_req; /* ASCONF next seq I am sending out, inits at init-tsn */ uint32_t asconf_seq_out; @@ -1177,12 +1193,12 @@ struct sctp_association { uint8_t reconfig_supported; uint8_t nrsack_supported; uint8_t pktdrop_supported; + uint8_t idata_supported; /* Did the peer make the stream config (add out) request */ uint8_t peer_req_out; uint8_t local_strreset_support; - uint8_t peer_supports_nat; struct sctp_scoping scope; diff --git a/sys/netinet/sctp_uio.h b/sys/netinet/sctp_uio.h index 2299f66..248a25e 100644 --- a/sys/netinet/sctp_uio.h +++ b/sys/netinet/sctp_uio.h @@ -318,12 +318,13 @@ struct sctp_assoc_change { #define SCTP_CANT_STR_ASSOC 0x0005 /* sac_info values */ -#define SCTP_ASSOC_SUPPORTS_PR 0x01 -#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 -#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 -#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 -#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 -#define SCTP_ASSOC_SUPPORTS_MAX 0x05 +#define SCTP_ASSOC_SUPPORTS_PR 0x01 +#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 +#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 +#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 +#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 +#define SCTP_ASSOC_SUPPORTS_INTERLEAVING 0x06 +#define SCTP_ASSOC_SUPPORTS_MAX 0x06 /* * Address event */ diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c index a75f025..64d3a26 100644 --- a/sys/netinet/sctp_usrreq.c +++ b/sys/netinet/sctp_usrreq.c @@ -1730,6 +1730,37 @@ flags_out: *optsize = sizeof(uint32_t); break; } + case SCTP_INTERLEAVING_SUPPORTED: + { + struct sctp_assoc_value *av; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + av->assoc_value = stcb->asoc.idata_supported; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + (av->assoc_id == SCTP_FUTURE_ASSOC)) { + SCTP_INP_RLOCK(inp); + if (inp->idata_supported) { + av->assoc_value = 1; + } else { + av->assoc_value = 0; + } + SCTP_INP_RUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + if (error == 0) { + *optsize = sizeof(struct sctp_assoc_value); + } + break; + } case SCTP_CMT_ON_OFF: { struct sctp_assoc_value *av; @@ -3904,6 +3935,47 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } break; } + case SCTP_INTERLEAVING_SUPPORTED: + { + struct sctp_assoc_value *av; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + (av->assoc_id == SCTP_FUTURE_ASSOC)) { + SCTP_INP_WLOCK(inp); + if (av->assoc_value == 0) { + inp->idata_supported = 0; + } else { + if ((sctp_is_feature_on(inp, SCTP_PCB_FLAGS_FRAG_INTERLEAVE)) && + (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_INTERLEAVE_STRMS))) { + inp->idata_supported = 1; + } else { + /* + * Must have Frag + * interleave and + * stream interleave + * on + */ + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + SCTP_INP_WUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + break; + } case SCTP_CMT_ON_OFF: if (SCTP_BASE_SYSCTL(sctp_cmt_on_off)) { struct sctp_assoc_value *av; diff --git a/sys/netinet/sctp_var.h b/sys/netinet/sctp_var.h index 7213b97..009ffdb 100644 --- a/sys/netinet/sctp_var.h +++ b/sys/netinet/sctp_var.h @@ -97,11 +97,19 @@ extern struct pr_usrreqs sctp_usrreqs; * an mbuf cache as well so it is not really worth doing, at least * right now :-D */ - +#ifdef INVARIANTS #define sctp_free_a_readq(_stcb, _readq) { \ + if ((_readq)->on_strm_q) \ + panic("On strm q stcb:%p readq:%p", (_stcb), (_readq)); \ SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), (_readq)); \ SCTP_DECR_READQ_COUNT(); \ } +#else +#define sctp_free_a_readq(_stcb, _readq) { \ + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), (_readq)); \ + SCTP_DECR_READQ_COUNT(); \ +} +#endif #define sctp_alloc_a_readq(_stcb, _readq) { \ (_readq) = SCTP_ZONE_GET(SCTP_BASE_INFO(ipi_zone_readq), struct sctp_queued_to_read); \ @@ -211,7 +219,7 @@ extern struct pr_usrreqs sctp_usrreqs; atomic_add_int(&(sb)->sb_cc,SCTP_BUF_LEN((m))); \ atomic_add_int(&(sb)->sb_mbcnt, MSIZE); \ if (stcb) { \ - atomic_add_int(&(stcb)->asoc.sb_cc,SCTP_BUF_LEN((m))); \ + atomic_add_int(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \ atomic_add_int(&(stcb)->asoc.my_rwnd_control_len, MSIZE); \ } \ if (SCTP_BUF_TYPE(m) != MT_DATA && SCTP_BUF_TYPE(m) != MT_HEADER && \ diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index 9434f06..ced18fe 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -970,11 +970,13 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc->sctp_cmt_on_off = inp->sctp_cmt_on_off; asoc->ecn_supported = inp->ecn_supported; asoc->prsctp_supported = inp->prsctp_supported; + asoc->idata_supported = inp->idata_supported; asoc->auth_supported = inp->auth_supported; asoc->asconf_supported = inp->asconf_supported; asoc->reconfig_supported = inp->reconfig_supported; asoc->nrsack_supported = inp->nrsack_supported; asoc->pktdrop_supported = inp->pktdrop_supported; + asoc->idata_supported = inp->idata_supported; asoc->sctp_cmt_pf = (uint8_t) 0; asoc->sctp_frag_point = inp->sctp_frag_point; asoc->sctp_features = inp->sctp_features; @@ -1163,7 +1165,6 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, TAILQ_INIT(&asoc->asconf_send_queue); TAILQ_INIT(&asoc->send_queue); TAILQ_INIT(&asoc->sent_queue); - TAILQ_INIT(&asoc->reasmqueue); TAILQ_INIT(&asoc->resetHead); asoc->max_inbound_streams = inp->sctp_ep.max_open_streams_intome; TAILQ_INIT(&asoc->asconf_queue); @@ -2736,6 +2737,9 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, if (stcb->asoc.asconf_supported == 1) { sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_ASCONF; } + if (stcb->asoc.idata_supported == 1) { + sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_INTERLEAVING; + } sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_MULTIBUF; if (stcb->asoc.reconfig_supported == 1) { sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_RE_CONFIG; @@ -4450,6 +4454,43 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, } void +sctp_wakeup_the_read_socket(struct sctp_inpcb *inp) +{ + if (inp && inp->sctp_socket) { + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { + SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket); + } else { +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + struct socket *so; + + so = SCTP_INP_SO(inp); + if (!so_locked) { + if (stcb) { + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + } + SCTP_SOCKET_LOCK(so, 1); + if (stcb) { + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + } + if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { + SCTP_SOCKET_UNLOCK(so, 1); + return; + } + } +#endif + sctp_sorwakeup(inp, inp->sctp_socket); +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + if (!so_locked) { + SCTP_SOCKET_UNLOCK(so, 1); + } +#endif + } + } +} + +void sctp_add_to_readq(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_queued_to_read *control, @@ -4484,7 +4525,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp, sctp_m_freem(control->data); control->data = NULL; } - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), control); + sctp_free_a_readq(stcb, control); if (inp_read_lock_held == 0) SCTP_INP_READ_UNLOCK(inp); return; @@ -4530,7 +4571,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp, } else { /* Everything got collapsed out?? */ sctp_free_remote_addr(control->whoFrom); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), control); + sctp_free_a_readq(stcb, control); if (inp_read_lock_held == 0) SCTP_INP_READ_UNLOCK(inp); return; @@ -4539,39 +4580,11 @@ sctp_add_to_readq(struct sctp_inpcb *inp, control->end_added = 1; } TAILQ_INSERT_TAIL(&inp->read_queue, control, next); + control->on_read_q = 1; if (inp_read_lock_held == 0) SCTP_INP_READ_UNLOCK(inp); if (inp && inp->sctp_socket) { - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { - SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket); - } else { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(inp); - if (!so_locked) { - if (stcb) { - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - } - SCTP_SOCKET_LOCK(so, 1); - if (stcb) { - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - } - if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { - SCTP_SOCKET_UNLOCK(so, 1); - return; - } - } -#endif - sctp_sorwakeup(inp, inp->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - if (!so_locked) { - SCTP_SOCKET_UNLOCK(so, 1); - } -#endif - } + sctp_wakeup_the_read_socket(inp); } } @@ -5552,6 +5565,10 @@ restart_nosblocks: sctp_m_free(control->aux_data); control->aux_data = NULL; } + if (control->on_strm_q) { + panic("About to free ctl:%p so:%p and its in %d", + control, so, control->on_strm_q); + } sctp_free_remote_addr(control->whoFrom); sctp_free_a_readq(stcb, control); if (hold_rlock) { @@ -5822,15 +5839,8 @@ get_more_data: /* error we are out of here */ goto release; } - if ((SCTP_BUF_NEXT(m) == NULL) && - (cp_len >= SCTP_BUF_LEN(m)) && - ((control->end_added == 0) || - (control->end_added && - (TAILQ_NEXT(control, next) == NULL))) - ) { - SCTP_INP_READ_LOCK(inp); - hold_rlock = 1; - } + SCTP_INP_READ_LOCK(inp); + hold_rlock = 1; if (cp_len == SCTP_BUF_LEN(m)) { if ((SCTP_BUF_NEXT(m) == NULL) && (control->end_added)) { @@ -5948,19 +5958,9 @@ get_more_data: #endif } done_with_control: - if (TAILQ_NEXT(control, next) == NULL) { - /* - * If we don't have a next we need a - * lock, if there is a next - * interrupt is filling ahead of us - * and we don't need a lock to - * remove this guy (which is the - * head of the queue). - */ - if (hold_rlock == 0) { - SCTP_INP_READ_LOCK(inp); - hold_rlock = 1; - } + if (hold_rlock == 0) { + SCTP_INP_READ_LOCK(inp); + hold_rlock = 1; } TAILQ_REMOVE(&inp->read_queue, control, next); /* Add back any hiddend data */ @@ -5976,6 +5976,10 @@ get_more_data: no_rcv_needed = control->do_not_ref_stcb; sctp_free_remote_addr(control->whoFrom); control->data = NULL; + if (control->on_strm_q) { + panic("About to free ctl:%p so:%p and its in %d", + control, so, control->on_strm_q); + } sctp_free_a_readq(stcb, control); control = NULL; if ((freed_so_far >= rwnd_req) && diff --git a/sys/netinet/sctputil.h b/sys/netinet/sctputil.h index 2d32792..f58e17b 100644 --- a/sys/netinet/sctputil.h +++ b/sys/netinet/sctputil.h @@ -108,6 +108,9 @@ void sctp_mtu_size_reset(struct sctp_inpcb *, struct sctp_association *, uint32_t); void + sctp_wakeup_the_read_socket(struct sctp_inpcb *inp); + +void sctp_add_to_readq(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_queued_to_read *control, diff --git a/sys/netinet/tcp_fastopen.c b/sys/netinet/tcp_fastopen.c index 482320e..ec02d18 100644 --- a/sys/netinet/tcp_fastopen.c +++ b/sys/netinet/tcp_fastopen.c @@ -204,7 +204,7 @@ void tcp_fastopen_init(void) { V_counter_zone = uma_zcreate("tfo", sizeof(unsigned int), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); rm_init(&V_tcp_fastopen_keylock, "tfo_keylock"); callout_init_rm(&V_tcp_fastopen_autokey_ctx.c, &V_tcp_fastopen_keylock, 0); diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 33b16ad..aa24299 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -654,14 +654,13 @@ tcp_init(void) hashsize); } in_pcbinfo_init(&V_tcbinfo, "tcp", &V_tcb, hashsize, hashsize, - "tcp_inpcb", tcp_inpcb_init, NULL, UMA_ZONE_NOFREE, - IPI_HASHFIELDS_4TUPLE); + "tcp_inpcb", tcp_inpcb_init, NULL, 0, IPI_HASHFIELDS_4TUPLE); /* * These have to be type stable for the benefit of the timers. */ V_tcpcb_zone = uma_zcreate("tcpcb", sizeof(struct tcpcb_mem), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); uma_zone_set_max(V_tcpcb_zone, maxsockets); uma_zone_set_warning(V_tcpcb_zone, "kern.ipc.maxsockets limit reached"); @@ -671,7 +670,7 @@ tcp_init(void) TUNABLE_INT_FETCH("net.inet.tcp.sack.enable", &V_tcp_do_sack); V_sack_hole_zone = uma_zcreate("sackhole", sizeof(struct sackhole), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); /* Skip initialization of globals for non-default instances. */ if (!IS_DEFAULT_VNET(curvnet)) @@ -738,16 +737,32 @@ tcp_destroy(void) { int error; -#ifdef TCP_RFC7413 - tcp_fastopen_destroy(); -#endif + /* + * All our processes are gone, all our sockets should be cleaned + * up, which means, we should be past the tcp_discardcb() calls. + * Sleep to let all tcpcb timers really disappear and then cleanup. + * Timewait will cleanup its queue and will be ready to go. + * XXX-BZ In theory a few ticks should be good enough to make sure + * the timers are all really gone. We should see if we could use a + * better metric here and, e.g., check a tcbcb count as an optimization? + */ + DELAY(1000000 / hz); tcp_hc_destroy(); syncache_destroy(); tcp_tw_destroy(); in_pcbinfo_destroy(&V_tcbinfo); + /* tcp_discardcb() clears the sack_holes up. */ uma_zdestroy(V_sack_hole_zone); uma_zdestroy(V_tcpcb_zone); +#ifdef TCP_RFC7413 + /* + * Cannot free the zone until all tcpcbs are released as we attach + * the allocations to them. + */ + tcp_fastopen_destroy(); +#endif + error = hhook_head_deregister(V_tcp_hhh[HHOOK_TCP_EST_IN]); if (error != 0) { printf("%s: WARNING: unable to deregister helper hook " diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index b898c49..1cf27e1 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -281,6 +281,12 @@ syncache_destroy(void) struct syncache *sc, *nsc; int i; + /* + * Stop the re-seed timer before freeing resources. No need to + * possibly schedule it another time. + */ + callout_drain(&V_tcp_syncache.secret.reseed); + /* Cleanup hash buckets: stop timers, free entries, destroy locks. */ for (i = 0; i < V_tcp_syncache.hashsize; i++) { @@ -304,8 +310,6 @@ syncache_destroy(void) /* Free the allocated global resources. */ uma_zdestroy(V_tcp_syncache.zone); free(V_tcp_syncache.hashbase, M_SYNCACHE); - - callout_drain(&V_tcp_syncache.secret.reseed); } #endif diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c index 40b4723..54c0a0a 100644 --- a/sys/netinet6/in6_src.c +++ b/sys/netinet6/in6_src.c @@ -255,7 +255,7 @@ in6_selectsrc(uint32_t fibnum, struct sockaddr_in6 *dstsock, * ancillary data. */ if ((inp->inp_flags & INP_BINDANY) == 0) { - ia = in6ifa_ifwithaddr(&tmp, odstzone); + ia = in6ifa_ifwithaddr(&tmp, 0 /* XXX */); if (ia == NULL || (ia->ia6_flags & (IN6_IFF_ANYCAST | IN6_IFF_NOTREADY))) { if (ia != NULL) diff --git a/sys/netpfil/ipfw/ip_fw_sockopt.c b/sys/netpfil/ipfw/ip_fw_sockopt.c index 25ac16e..857b465 100644 --- a/sys/netpfil/ipfw/ip_fw_sockopt.c +++ b/sys/netpfil/ipfw/ip_fw_sockopt.c @@ -230,7 +230,7 @@ ipfw_find_rule(struct ip_fw_chain *chain, uint32_t key, uint32_t id) lo = i + 1; /* continue from the next one */ else /* r->id >= id */ hi = i; /* this might be good */ - }; + } return hi; } diff --git a/sys/netsmb/smb_subr.c b/sys/netsmb/smb_subr.c index 3846b75..2992f99 100644 --- a/sys/netsmb/smb_subr.c +++ b/sys/netsmb/smb_subr.c @@ -209,7 +209,7 @@ m_dumpm(struct mbuf *m) { printf("%02x ",((int)*(p++)) & 0xff); } m=m->m_next; - }; + } printf("\n"); } #endif diff --git a/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c b/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c index 3fed07c..adc24aa 100644 --- a/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c +++ b/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c @@ -1045,7 +1045,7 @@ static struct ib_mr *mthca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length, shift = ffs(mr->umem->page_size) - 1; - n = mr->umem->nmap;; + n = mr->umem->nmap; mr->mtt = mthca_alloc_mtt(dev, n); if (IS_ERR(mr->mtt)) { err = PTR_ERR(mr->mtt); diff --git a/sys/ofed/drivers/net/mlx4/cmd.c b/sys/ofed/drivers/net/mlx4/cmd.c index f0805e8..9d51779 100644 --- a/sys/ofed/drivers/net/mlx4/cmd.c +++ b/sys/ofed/drivers/net/mlx4/cmd.c @@ -2572,7 +2572,7 @@ int mlx4_set_vf_link_state(struct mlx4_dev *dev, int port, int vf, int link_stat mlx4_warn(dev, "unknown value for link_state %02x on slave %d port %d\n", link_state, slave, port); return -EINVAL; - }; + } /* update the admin & oper state on the link state */ s_info = &priv->mfunc.master.vf_admin[slave].vport[port]; vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; diff --git a/sys/ofed/drivers/net/mlx4/eq.c b/sys/ofed/drivers/net/mlx4/eq.c index 31fafbe..145b9bc 100644 --- a/sys/ofed/drivers/net/mlx4/eq.c +++ b/sys/ofed/drivers/net/mlx4/eq.c @@ -754,7 +754,7 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) !!(eqe->owner & 0x80) ^ !!(eq->cons_index & eq->nent) ? "HW" : "SW"); break; - }; + } ++eq->cons_index; eqes_found = 1; diff --git a/sys/pc98/cbus/olpt.c b/sys/pc98/cbus/olpt.c index 9aa8212..983ec07 100644 --- a/sys/pc98/cbus/olpt.c +++ b/sys/pc98/cbus/olpt.c @@ -420,7 +420,7 @@ lptopen (struct cdev *dev, int flags, int fmt, struct thread *td) lprintf(("irq %x\n", sc->sc_irq)); if (sc->sc_irq & LP_USE_IRQ) { sc->sc_state |= TOUT; - sc->sc_backoff = hz / LPTOUTINITIAL;; + sc->sc_backoff = hz / LPTOUTINITIAL; callout_reset(&sc->timer, sc->sc_backoff, lptout, sc); } diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index 54f215a..42eb631 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -96,6 +96,7 @@ __FBSDID("$FreeBSD$"); #include "mmu_if.h" +#define SPARSE_MAPDEV #ifdef DEBUG #define debugf(fmt, args...) printf(fmt, ##args) #else @@ -191,7 +192,7 @@ static tlb_entry_t tlb1[TLB1_MAXENTRIES]; /* Next free entry in the TLB1 */ static unsigned int tlb1_idx; -static vm_offset_t tlb1_map_base = VM_MAX_KERNEL_ADDRESS; +static vm_offset_t tlb1_map_base = VM_MAXUSER_ADDRESS + PAGE_SIZE; static tlbtid_t tid_alloc(struct pmap *); static void tid_flush(tlbtid_t tid); @@ -2796,7 +2797,7 @@ static void * mmu_booke_mapdev_attr(mmu_t mmu, vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) { void *res; - uintptr_t va; + uintptr_t va, tmpva; vm_size_t sz; int i; @@ -2819,22 +2820,22 @@ mmu_booke_mapdev_attr(mmu_t mmu, vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) size = roundup(size, PAGE_SIZE); /* - * We leave a hole for device direct mapping between the maximum user - * address (0x8000000) and the minimum KVA address (0xc0000000). If - * devices are in there, just map them 1:1. If not, map them to the - * device mapping area about VM_MAX_KERNEL_ADDRESS. These mapped - * addresses should be pulled from an allocator, but since we do not - * ever free TLB1 entries, it is safe just to increment a counter. - * Note that there isn't a lot of address space here (128 MB) and it - * is not at all difficult to imagine running out, since that is a 4:1 - * compression from the 0xc0000000 - 0xf0000000 address space that gets - * mapped there. + * The device mapping area is between VM_MAXUSER_ADDRESS and + * VM_MIN_KERNEL_ADDRESS. This gives 1GB of device addressing. */ - if (pa >= (VM_MAXUSER_ADDRESS + PAGE_SIZE) && - (pa + size - 1) < VM_MIN_KERNEL_ADDRESS) - va = pa; - else - va = atomic_fetchadd_int(&tlb1_map_base, size); +#ifdef SPARSE_MAPDEV + /* + * With a sparse mapdev, align to the largest starting region. This + * could feasibly be optimized for a 'best-fit' alignment, but that + * calculation could be very costly. + */ + do { + tmpva = tlb1_map_base; + va = roundup(tlb1_map_base, 1 << flsl(size)); + } while (!atomic_cmpset_int(&tlb1_map_base, tmpva, va + size)); +#else + va = atomic_fetchadd_int(&tlb1_map_base, size); +#endif res = (void *)va; do { diff --git a/sys/powerpc/include/vmparam.h b/sys/powerpc/include/vmparam.h index 0dd74c9..d7368ec 100644 --- a/sys/powerpc/include/vmparam.h +++ b/sys/powerpc/include/vmparam.h @@ -111,7 +111,7 @@ #define KERNBASE 0xc0000000 /* start of kernel virtual */ #define VM_MIN_KERNEL_ADDRESS KERNBASE -#define VM_MAX_KERNEL_ADDRESS 0xf7ffffff +#define VM_MAX_KERNEL_ADDRESS 0xffffffff #define VM_MAX_SAFE_KERNEL_ADDRESS VM_MAX_KERNEL_ADDRESS #endif /* AIM/E500 */ diff --git a/sys/powerpc/ofw/ofw_pcibus.c b/sys/powerpc/ofw/ofw_pcibus.c index cde3c74..4ce6e73 100644 --- a/sys/powerpc/ofw/ofw_pcibus.c +++ b/sys/powerpc/ofw/ofw_pcibus.c @@ -61,6 +61,7 @@ static device_probe_t ofw_pcibus_probe; static device_attach_t ofw_pcibus_attach; static pci_assign_interrupt_t ofw_pcibus_assign_interrupt; static ofw_bus_get_devinfo_t ofw_pcibus_get_devinfo; +static bus_child_deleted_t ofw_pcibus_child_deleted; static int ofw_pcibus_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf, size_t buflen); @@ -73,6 +74,7 @@ static device_method_t ofw_pcibus_methods[] = { DEVMETHOD(device_attach, ofw_pcibus_attach), /* Bus interface */ + DEVMETHOD(bus_child_deleted, ofw_pcibus_child_deleted), DEVMETHOD(bus_child_pnpinfo_str, ofw_pcibus_child_pnpinfo_str_method), /* PCI interface */ @@ -269,6 +271,16 @@ ofw_pcibus_enum_bus(device_t dev, u_int domain, u_int busno) } } +static void +ofw_pcibus_child_deleted(device_t dev, device_t child) +{ + struct ofw_pcibus_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + ofw_bus_gen_destroy_devinfo(&dinfo->opd_obdinfo); + pci_child_deleted(dev, child); +} + static int ofw_pcibus_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf, size_t buflen) diff --git a/sys/powerpc/powermac/fcu.c b/sys/powerpc/powermac/fcu.c index 3d5e79f..324fd1f 100644 --- a/sys/powerpc/powermac/fcu.c +++ b/sys/powerpc/powermac/fcu.c @@ -553,7 +553,7 @@ fcu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS) default: /* This should never happen */ return (EINVAL); - }; + } } /* We can only read the RPM from a PWM controlled fan, so return. */ diff --git a/sys/powerpc/powermac/pmu.c b/sys/powerpc/powermac/pmu.c index 9df83cb..8080c21 100644 --- a/sys/powerpc/powermac/pmu.c +++ b/sys/powerpc/powermac/pmu.c @@ -1064,7 +1064,7 @@ pmu_battquery_sysctl(SYSCTL_HANDLER_ARGS) default: /* This should never happen */ result = -1; - }; + } error = sysctl_handle_int(oidp, &result, 0, req); diff --git a/sys/powerpc/powermac/smu.c b/sys/powerpc/powermac/smu.c index bc8ea43..cbc0e35 100644 --- a/sys/powerpc/powermac/smu.c +++ b/sys/powerpc/powermac/smu.c @@ -888,7 +888,7 @@ smu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS) default: /* This should never happen */ return (EINVAL); - }; + } } /* We can only read the RPM from a PWM controlled fan, so return. */ if ((arg2 & 0xff00) == SMU_PWM_SYSCTL_RPM) diff --git a/sys/rpc/clnt_bck.c b/sys/rpc/clnt_bck.c index b63b2b1..477b276 100644 --- a/sys/rpc/clnt_bck.c +++ b/sys/rpc/clnt_bck.c @@ -381,7 +381,7 @@ printf("emsgsize\n"); break; default: stat = RPC_CANTRECV; - }; + } errp->re_status = stat; goto out; } else { diff --git a/sys/security/audit/audit_syscalls.c b/sys/security/audit/audit_syscalls.c index 90d811d..73411a4 100644 --- a/sys/security/audit/audit_syscalls.c +++ b/sys/security/audit/audit_syscalls.c @@ -303,8 +303,8 @@ sys_auditon(struct thread *td, struct auditon_args *uap) (udata.au_qctrl64.aq64_lowater >= udata.au_qctrl.aq_hiwater) || (udata.au_qctrl64.aq64_bufsz > AQ_MAXBUFSZ) || - (udata.au_qctrl64.aq64_minfree < 0) || - (udata.au_qctrl64.aq64_minfree > 100)) + (udata.au_qctrl64.aq64_minfree > 100) || + (udata.au_qctrl64.aq64_minfree < 0)) return (EINVAL); audit_qctrl.aq_hiwater = (int)udata.au_qctrl64.aq64_hiwater; diff --git a/sys/sparc64/include/bus.h b/sys/sparc64/include/bus.h index 9cdd208..6ff8c7c 100644 --- a/sys/sparc64/include/bus.h +++ b/sys/sparc64/include/bus.h @@ -98,7 +98,7 @@ extern const int bus_stream_asi[]; #define BUS_SPACE_MAXSIZE 0xFFFFFFFFFFFFFFFF #define BUS_SPACE_MAXADDR_24BIT 0xFFFFFF #define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF -#define BUS_SPACE_MAXADDR 0xFFFFFFFF +#define BUS_SPACE_MAXADDR 0xFFFFFFFFFFFFFFFF #define BUS_SPACE_UNRESTRICTED (~0) diff --git a/sys/sparc64/pci/ofw_pcibus.c b/sys/sparc64/pci/ofw_pcibus.c index 92b9f76..08ffa5d 100644 --- a/sys/sparc64/pci/ofw_pcibus.c +++ b/sys/sparc64/pci/ofw_pcibus.c @@ -65,6 +65,7 @@ static void ofw_pcibus_setup_device(device_t bridge, uint32_t clock, u_int busno, u_int slot, u_int func); /* Methods */ +static bus_child_deleted_t ofw_pcibus_child_deleted; static bus_child_pnpinfo_str_t ofw_pcibus_pnpinfo_str; static device_attach_t ofw_pcibus_attach; static device_probe_t ofw_pcibus_probe; @@ -77,6 +78,7 @@ static device_method_t ofw_pcibus_methods[] = { DEVMETHOD(device_attach, ofw_pcibus_attach), /* Bus interface */ + DEVMETHOD(bus_child_deleted, ofw_pcibus_child_deleted), DEVMETHOD(bus_child_pnpinfo_str, ofw_pcibus_pnpinfo_str), /* PCI interface */ @@ -327,6 +329,16 @@ ofw_pcibus_get_devinfo(device_t bus, device_t dev) return (&dinfo->opd_obdinfo); } +static void +ofw_pcibus_child_deleted(device_t dev, device_t child) +{ + struct ofw_pcibus_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + ofw_bus_gen_destroy_devinfo(&dinfo->opd_obdinfo); + pci_child_deleted(dev, child); +} + static int ofw_pcibus_pnpinfo_str(device_t dev, device_t child, char *buf, size_t buflen) diff --git a/sys/sparc64/sparc64/db_disasm.c b/sys/sparc64/sparc64/db_disasm.c index 55e2109..453aea6 100644 --- a/sys/sparc64/sparc64/db_disasm.c +++ b/sys/sparc64/sparc64/db_disasm.c @@ -867,7 +867,7 @@ db_disasm(db_addr_t loc, bool altfmt) break; } i_ptr++; - }; + } if (!matchp) { db_printf("undefined\n"); @@ -1023,7 +1023,7 @@ db_disasm(db_addr_t loc, bool altfmt) } if (*(++f_ptr)) db_printf(", "); - }; + } db_printf("\n"); diff --git a/sys/sys/bus.h b/sys/sys/bus.h index e0297cc..01b98f5 100644 --- a/sys/sys/bus.h +++ b/sys/sys/bus.h @@ -524,6 +524,7 @@ int device_is_attached(device_t dev); /* did attach succeed? */ int device_is_enabled(device_t dev); int device_is_suspended(device_t dev); int device_is_quiet(device_t dev); +device_t device_lookup_by_name(const char *name); int device_print_prettyname(device_t dev); int device_printf(device_t dev, const char *, ...) __printflike(2, 3); int device_probe(device_t dev); diff --git a/sys/sys/elf_common.h b/sys/sys/elf_common.h index b4574f3..f4579c8 100644 --- a/sys/sys/elf_common.h +++ b/sys/sys/elf_common.h @@ -415,7 +415,8 @@ typedef struct { #define SHT_HISUNW 0x6fffffff #define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ #define SHT_LOPROC 0x70000000 /* reserved range for processor */ -#define SHT_AMD64_UNWIND 0x70000001 /* unwind information */ +#define SHT_X86_64_UNWIND 0x70000001 /* unwind information */ +#define SHT_AMD64_UNWIND SHT_X86_64_UNWIND #define SHT_ARM_EXIDX 0x70000001 /* Exception index table. */ #define SHT_ARM_PREEMPTMAP 0x70000002 /* BPABI DLL dynamic linking diff --git a/sys/sys/intr.h b/sys/sys/intr.h index 04325c1..f7d2abe 100644 --- a/sys/sys/intr.h +++ b/sys/sys/intr.h @@ -98,6 +98,10 @@ int intr_isrc_deregister(struct intr_irqsrc *); int intr_isrc_register(struct intr_irqsrc *, device_t, u_int, const char *, ...) __printflike(4, 5); +#ifdef SMP +bool intr_isrc_init_on_cpu(struct intr_irqsrc *isrc, u_int cpu); +#endif + int intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *); u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask); diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 2d1769e..d2b617c 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -623,7 +623,7 @@ struct proc { after fork. */ uint64_t p_prev_runtime; /* (c) Resource usage accounting. */ struct racct *p_racct; /* (b) Resource accounting. */ - u_char p_throttled; /* (c) Flag for racct pcpu throttling */ + int p_throttled; /* (c) Flag for racct pcpu throttling */ struct vm_domain_policy p_vm_dom_policy; /* (c) process default VM domain, or -1 */ /* * An orphan is the child that has beed re-parented to the diff --git a/sys/sys/racct.h b/sys/sys/racct.h index 8d1f2fa..5330c63 100644 --- a/sys/sys/racct.h +++ b/sys/sys/racct.h @@ -42,6 +42,7 @@ #include <sys/stdint.h> #include <sys/sysctl.h> +struct buf; struct proc; struct rctl_rule_link; struct ucred; @@ -71,7 +72,11 @@ struct ucred; #define RACCT_SHMSIZE 18 #define RACCT_WALLCLOCK 19 #define RACCT_PCTCPU 20 -#define RACCT_MAX RACCT_PCTCPU +#define RACCT_READBPS 21 +#define RACCT_WRITEBPS 22 +#define RACCT_READIOPS 23 +#define RACCT_WRITEIOPS 24 +#define RACCT_MAX RACCT_WRITEIOPS /* * Resource properties. @@ -153,6 +158,7 @@ SYSCTL_DECL(_kern_racct); int racct_add(struct proc *p, int resource, uint64_t amount); void racct_add_cred(struct ucred *cred, int resource, uint64_t amount); void racct_add_force(struct proc *p, int resource, uint64_t amount); +void racct_add_buf(struct proc *p, const struct buf *bufp, int is_write); int racct_set(struct proc *p, int resource, uint64_t amount); void racct_set_force(struct proc *p, int resource, uint64_t amount); void racct_sub(struct proc *p, int resource, uint64_t amount); @@ -170,6 +176,7 @@ void racct_proc_exit(struct proc *p); void racct_proc_ucred_changed(struct proc *p, struct ucred *oldcred, struct ucred *newcred); void racct_move(struct racct *dest, struct racct *src); +void racct_proc_throttle(struct proc *p, int timeout); #else diff --git a/sys/sys/rctl.h b/sys/sys/rctl.h index e1a45a4..b9e6cd6 100644 --- a/sys/sys/rctl.h +++ b/sys/sys/rctl.h @@ -129,7 +129,8 @@ struct rctl_rule { #define RCTL_ACTION_DENY (RCTL_ACTION_SIGNAL_MAX + 1) #define RCTL_ACTION_LOG (RCTL_ACTION_SIGNAL_MAX + 2) #define RCTL_ACTION_DEVCTL (RCTL_ACTION_SIGNAL_MAX + 3) -#define RCTL_ACTION_MAX RCTL_ACTION_DEVCTL +#define RCTL_ACTION_THROTTLE (RCTL_ACTION_SIGNAL_MAX + 4) +#define RCTL_ACTION_MAX RCTL_ACTION_THROTTLE #define RCTL_AMOUNT_UNDEFINED -1 @@ -140,6 +141,7 @@ void rctl_rule_release(struct rctl_rule *rule); int rctl_rule_add(struct rctl_rule *rule); int rctl_rule_remove(struct rctl_rule *filter); int rctl_enforce(struct proc *p, int resource, uint64_t amount); +void rctl_throttle_decay(struct racct *racct, int resource); int64_t rctl_pcpu_available(const struct proc *p); uint64_t rctl_get_limit(struct proc *p, int resource); uint64_t rctl_get_available(struct proc *p, int resource); diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index 799efe3..feaa14f 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -259,7 +259,6 @@ ffs_realloccg(ip, lbprev, bprev, bpref, osize, nsize, flags, cred, bpp) static int curfail; int64_t delta; - *bpp = 0; vp = ITOV(ip); fs = ip->i_fs; bp = NULL; @@ -319,6 +318,7 @@ retry: /* * Check for extension in the existing location. */ + *bpp = NULL; cg = dtog(fs, bprev); UFS_LOCK(ump); bno = ffs_fragextend(ip, cg, bprev, osize, nsize); @@ -518,7 +518,7 @@ ffs_reallocblks_ufs1(ap) struct inode *ip; struct vnode *vp; struct buf *sbp, *ebp; - ufs1_daddr_t *bap, *sbap, *ebap = 0; + ufs1_daddr_t *bap, *sbap, *ebap; struct cluster_save *buflist; struct ufsmount *ump; ufs_lbn_t start_lbn, end_lbn; @@ -598,6 +598,7 @@ ffs_reallocblks_ufs1(ap) /* * If the block range spans two block maps, get the second map. */ + ebap = NULL; if (end_lvl == 0 || (idp = &end_ap[end_lvl - 1])->in_off + 1 >= len) { ssize = len; } else { @@ -767,7 +768,7 @@ ffs_reallocblks_ufs2(ap) struct inode *ip; struct vnode *vp; struct buf *sbp, *ebp; - ufs2_daddr_t *bap, *sbap, *ebap = 0; + ufs2_daddr_t *bap, *sbap, *ebap; struct cluster_save *buflist; struct ufsmount *ump; ufs_lbn_t start_lbn, end_lbn; @@ -846,6 +847,7 @@ ffs_reallocblks_ufs2(ap) /* * If the block range spans two block maps, get the second map. */ + ebap = NULL; if (end_lvl == 0 || (idp = &end_ap[end_lvl - 1])->in_off + 1 >= len) { ssize = len; } else { @@ -2784,7 +2786,8 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) return (EINVAL); } vn_start_write(vp, &mp, V_WAIT); - if (mp == 0 || strncmp(mp->mnt_stat.f_fstypename, "ufs", MFSNAMELEN)) { + if (mp == NULL || + strncmp(mp->mnt_stat.f_fstypename, "ufs", MFSNAMELEN)) { vn_finished_write(mp); fdrop(fp, td); return (EINVAL); diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c index c8dac1b..0202820 100644 --- a/sys/ufs/ffs/ffs_inode.c +++ b/sys/ufs/ffs/ffs_inode.c @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include <sys/malloc.h> #include <sys/mount.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/random.h> #include <sys/resourcevar.h> #include <sys/rwlock.h> @@ -659,6 +660,13 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, level, countp) vp = ITOV(ip); bp = getblk(vp, lbn, (int)fs->fs_bsize, 0, 0, 0); if ((bp->b_flags & B_CACHE) == 0) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; /* pay for read */ bp->b_iocmd = BIO_READ; bp->b_flags &= ~B_INVAL; diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index 099faeb..59ae322 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -1896,7 +1896,7 @@ retry: * dopersistence sysctl-setable flag to decide on the * persistence needed for file content data. */ - if (savedcbp != 0) { + if (savedcbp != NULL) { bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize); bawrite(cbp); if ((vtype == VDIR || dopersistence) && @@ -2388,7 +2388,7 @@ ffs_copyonwrite(devvp, bp) * dopersistence sysctl-setable flag to decide on the * persistence needed for file content data. */ - if (savedcbp != 0) { + if (savedcbp != NULL) { bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize); bawrite(cbp); if ((devvp == bp->b_vp || bp->b_vp->v_type == VDIR || diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index bedc8e1..5b25b9e 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -69,6 +69,7 @@ __FBSDID("$FreeBSD$"); #include <sys/namei.h> #include <sys/priv.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/rwlock.h> #include <sys/stat.h> #include <sys/sysctl.h> @@ -1868,7 +1869,7 @@ softdep_move_dependencies(oldbp, newbp) if (wk->wk_type == D_BMSAFEMAP && bmsafemap_backgroundwrite(WK_BMSAFEMAP(wk), newbp)) dirty = 1; - if (wktail == 0) + if (wktail == NULL) LIST_INSERT_HEAD(&newbp->b_dep, wk, wk_list); else LIST_INSERT_AFTER(wktail, wk, wk_list); @@ -6229,6 +6230,13 @@ setup_trunc_indir(freeblks, ip, lbn, lastlbn, blkno) vfs_busy_pages(bp, 0); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; error = bufwait(bp); if (error) { @@ -6667,7 +6675,7 @@ softdep_journal_freeblocks(ip, cred, length, flags) } } if ((flags & IO_EXT) != 0) - while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != 0) + while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != NULL) cancel_allocdirect(&inodedep->id_extupdt, adp, freeblks); /* @@ -6920,14 +6928,14 @@ softdep_setup_freeblocks(ip, length, flags) if (flags & IO_NORMAL) { merge_inode_lists(&inodedep->id_newinoupdt, &inodedep->id_inoupdt); - while ((adp = TAILQ_FIRST(&inodedep->id_inoupdt)) != 0) + while ((adp = TAILQ_FIRST(&inodedep->id_inoupdt)) != NULL) cancel_allocdirect(&inodedep->id_inoupdt, adp, freeblks); } if (flags & IO_EXT) { merge_inode_lists(&inodedep->id_newextupdt, &inodedep->id_extupdt); - while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != 0) + while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != NULL) cancel_allocdirect(&inodedep->id_extupdt, adp, freeblks); } @@ -8042,8 +8050,8 @@ indir_trunc(freework, dbn, lbn) struct fs *fs; struct indirdep *indirdep; struct ufsmount *ump; - ufs1_daddr_t *bap1 = 0; - ufs2_daddr_t nb, nnb, *bap2 = 0; + ufs1_daddr_t *bap1; + ufs2_daddr_t nb, nnb, *bap2; ufs_lbn_t lbnadd, nlbn; int i, nblocks, ufs1fmt; int freedblocks; @@ -8126,10 +8134,12 @@ indir_trunc(freework, dbn, lbn) bap1 = (ufs1_daddr_t *)bp->b_data; nb = bap1[freework->fw_off]; ufs1fmt = 1; + bap2 = NULL; } else { bap2 = (ufs2_daddr_t *)bp->b_data; nb = bap2[freework->fw_off]; ufs1fmt = 0; + bap1 = NULL; } level = lbn_level(lbn); needj = MOUNTEDSUJ(UFSTOVFS(ump)) != 0; @@ -8304,7 +8314,7 @@ setup_newdir(dap, newinum, dinum, newdirbp, mkdirp) struct newblk *newblk; struct pagedep *pagedep; struct inodedep *inodedep; - struct newdirblk *newdirblk = 0; + struct newdirblk *newdirblk; struct mkdir *mkdir1, *mkdir2; struct worklist *wk; struct jaddref *jaddref; @@ -8431,7 +8441,7 @@ softdep_setup_directory_add(bp, dp, diroffset, newinum, newdirbp, isnewblk) struct newblk *newblk; struct pagedep *pagedep; struct inodedep *inodedep; - struct newdirblk *newdirblk = 0; + struct newdirblk *newdirblk; struct mkdir *mkdir1, *mkdir2; struct jaddref *jaddref; struct ufsmount *ump; @@ -8463,6 +8473,7 @@ softdep_setup_directory_add(bp, dp, diroffset, newinum, newdirbp, isnewblk) dap->da_state = ATTACHED; LIST_INIT(&dap->da_jwork); isindir = bp->b_lblkno >= NDADDR; + newdirblk = NULL; if (isnewblk && (isindir ? blkoff(fs, diroffset) : fragoff(fs, diroffset)) == 0) { newdirblk = malloc(sizeof(struct newdirblk), @@ -8553,7 +8564,7 @@ softdep_setup_directory_add(bp, dp, diroffset, newinum, newdirbp, isnewblk) inodedep->id_mkdiradd = dap; } else if (inodedep->id_mkdiradd) merge_diradd(inodedep, dap); - if (newdirblk) { + if (newdirblk != NULL) { /* * There is nothing to do if we are already tracking * this block. @@ -10530,13 +10541,13 @@ cancel_indirdep(indirdep, bp, freeblks) * Pass in bp for blocks still have journal writes * pending so we can cancel them on their own. */ - while ((aip = LIST_FIRST(&indirdep->ir_deplisthd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_deplisthd)) != NULL) cancel_allocindir(aip, bp, freeblks, 0); - while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != NULL) cancel_allocindir(aip, NULL, freeblks, 0); - while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != NULL) cancel_allocindir(aip, NULL, freeblks, 0); - while ((aip = LIST_FIRST(&indirdep->ir_completehd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_completehd)) != NULL) cancel_allocindir(aip, NULL, freeblks, 0); /* * If there are pending partial truncations we need to keep the @@ -11566,7 +11577,7 @@ handle_written_indirdep(indirdep, bp, bpp) * the indirdep's pointer is not yet written. Otherwise * free them here. */ - while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != 0) { + while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != NULL) { LIST_REMOVE(aip, ai_next); if ((indirdep->ir_state & DEPCOMPLETE) == 0) { LIST_INSERT_HEAD(&indirdep->ir_completehd, aip, @@ -11581,7 +11592,7 @@ handle_written_indirdep(indirdep, bp, bpp) * the done list to the write list after updating the pointers. */ if (TAILQ_EMPTY(&indirdep->ir_trunc)) { - while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != 0) { + while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != NULL) { handle_allocindir_partdone(aip); if (aip == LIST_FIRST(&indirdep->ir_donehd)) panic("disk_write_complete: not gone"); diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c index 9819ef5..768298f 100644 --- a/sys/ufs/ufs/ufs_bmap.c +++ b/sys/ufs/ufs/ufs_bmap.c @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include <sys/proc.h> #include <sys/vnode.h> #include <sys/mount.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/stat.h> @@ -223,6 +224,13 @@ ufs_bmaparray(vp, bn, bnp, nbp, runp, runb) vfs_busy_pages(bp, 0); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; error = bufwait(bp); if (error) { diff --git a/sys/ufs/ufs/ufs_lookup.c b/sys/ufs/ufs/ufs_lookup.c index 408349e..972cee1 100644 --- a/sys/ufs/ufs/ufs_lookup.c +++ b/sys/ufs/ufs/ufs_lookup.c @@ -1256,7 +1256,8 @@ out: * drop its snapshot reference so that it will be reclaimed * when last open reference goes away. */ - if (ip != 0 && (ip->i_flags & SF_SNAPSHOT) != 0 && ip->i_effnlink == 0) + if (ip != NULL && (ip->i_flags & SF_SNAPSHOT) != 0 && + ip->i_effnlink == 0) UFS_SNAPGONE(ip); return (error); } diff --git a/sys/vm/vm_domain.c b/sys/vm/vm_domain.c index c042aa7..354a223 100644 --- a/sys/vm/vm_domain.c +++ b/sys/vm/vm_domain.c @@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/malloc.h> #include <sys/mutex.h> -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC #include <sys/proc.h> #endif #include <sys/queue.h> @@ -64,7 +64,7 @@ __FBSDID("$FreeBSD$"); static __inline int vm_domain_rr_selectdomain(int skip_domain) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC struct thread *td; td = curthread; @@ -188,8 +188,13 @@ vm_domain_policy_validate(const struct vm_domain_policy *vp) return (-1); case VM_POLICY_FIXED_DOMAIN: case VM_POLICY_FIXED_DOMAIN_ROUND_ROBIN: +#ifdef VM_NUMA_ALLOC if (vp->p.domain >= 0 && vp->p.domain < vm_ndomains) return (0); +#else + if (vp->p.domain == 0) + return (0); +#endif return (-1); default: return (-1); @@ -221,6 +226,7 @@ vm_domain_iterator_set(struct vm_domain_iterator *vi, vm_domain_policy_type_t vt, int domain) { +#ifdef VM_NUMA_ALLOC switch (vt) { case VM_POLICY_FIXED_DOMAIN: vi->policy = VM_POLICY_FIXED_DOMAIN; @@ -249,6 +255,10 @@ vm_domain_iterator_set(struct vm_domain_iterator *vi, vi->n = vm_ndomains; break; } +#else + vi->domain = 0; + vi->n = 1; +#endif return (0); } @@ -259,6 +269,8 @@ static inline void _vm_domain_iterator_set_policy(struct vm_domain_iterator *vi, const struct vm_domain_policy *vt) { + +#ifdef VM_NUMA_ALLOC /* * Initialise the iterator. * @@ -300,6 +312,10 @@ _vm_domain_iterator_set_policy(struct vm_domain_iterator *vi, vi->n = vm_ndomains; break; } +#else + vi->domain = 0; + vi->n = 1; +#endif } void @@ -334,6 +350,7 @@ vm_domain_iterator_run(struct vm_domain_iterator *vi, int *domain) if (vi->n <= 0) return (-1); +#ifdef VM_NUMA_ALLOC switch (vi->policy) { case VM_POLICY_FIXED_DOMAIN: case VM_POLICY_FIRST_TOUCH: @@ -358,6 +375,10 @@ vm_domain_iterator_run(struct vm_domain_iterator *vi, int *domain) vi->n--; break; } +#else + *domain = 0; + vi->n--; +#endif return (0); } diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index a7e3d37..13a5757 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -83,6 +83,7 @@ __FBSDID("$FreeBSD$"); #include <sys/lock.h> #include <sys/mman.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/rwlock.h> #include <sys/sysctl.h> @@ -994,6 +995,21 @@ vnode_locked: if (hardfault) { PCPU_INC(cnt.v_io_faults); curthread->td_ru.ru_majflt++; +#ifdef RACCT + if (racct_enable && fs.object->type == OBJT_VNODE) { + PROC_LOCK(curproc); + if ((fault_type & (VM_PROT_COPY | VM_PROT_WRITE)) != 0) { + racct_add_force(curproc, RACCT_WRITEBPS, + PAGE_SIZE + behind * PAGE_SIZE); + racct_add_force(curproc, RACCT_WRITEIOPS, 1); + } else { + racct_add_force(curproc, RACCT_READBPS, + PAGE_SIZE + ahead * PAGE_SIZE); + racct_add_force(curproc, RACCT_READIOPS, 1); + } + PROC_UNLOCK(curproc); + } +#endif } else curthread->td_ru.ru_minflt++; diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index b7f6887..e981e8b 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -1656,12 +1656,12 @@ static void vm_pageout(void) { int error; -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC int i; #endif swap_pager_swap_init(); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC for (i = 1; i < vm_ndomains; i++) { error = kthread_add(vm_pageout_worker, (void *)(uintptr_t)i, curproc, NULL, 0, 0, "dom%d", i); diff --git a/sys/vm/vm_phys.c b/sys/vm/vm_phys.c index 3979513..d2f1edb 100644 --- a/sys/vm/vm_phys.c +++ b/sys/vm/vm_phys.c @@ -48,9 +48,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/malloc.h> #include <sys/mutex.h> -#if MAXMEMDOM > 1 #include <sys/proc.h> -#endif #include <sys/queue.h> #include <sys/rwlock.h> #include <sys/sbuf.h> @@ -73,8 +71,10 @@ __FBSDID("$FreeBSD$"); _Static_assert(sizeof(long) * NBBY >= VM_PHYSSEG_MAX, "Too many physsegs."); +#ifdef VM_NUMA_ALLOC struct mem_affinity *mem_affinity; int *mem_locality; +#endif int vm_ndomains = 1; @@ -144,7 +144,7 @@ static int sysctl_vm_phys_segs(SYSCTL_HANDLER_ARGS); SYSCTL_OID(_vm, OID_AUTO, phys_segs, CTLTYPE_STRING | CTLFLAG_RD, NULL, 0, sysctl_vm_phys_segs, "A", "Phys Seg Info"); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC static int sysctl_vm_phys_locality(SYSCTL_HANDLER_ARGS); SYSCTL_OID(_vm, OID_AUTO, phys_locality, CTLTYPE_STRING | CTLFLAG_RD, NULL, 0, sysctl_vm_phys_locality, "A", "Phys Locality Info"); @@ -159,7 +159,7 @@ SYSCTL_INT(_vm, OID_AUTO, ndomains, CTLFLAG_RD, static struct mtx vm_default_policy_mtx; MTX_SYSINIT(vm_default_policy, &vm_default_policy_mtx, "default policy mutex", MTX_DEF); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC static struct vm_domain_policy vm_default_policy = VM_DOMAIN_POLICY_STATIC_INITIALISER(VM_POLICY_FIRST_TOUCH_ROUND_ROBIN, 0); #else @@ -277,7 +277,7 @@ vm_phys_fictitious_cmp(struct vm_phys_fictitious_seg *p1, static __inline int vm_rr_selectdomain(void) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC struct thread *td; td = curthread; @@ -303,13 +303,13 @@ vm_rr_selectdomain(void) static void vm_policy_iterator_init(struct vm_domain_iterator *vi) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC struct vm_domain_policy lcl; #endif vm_domain_iterator_init(vi); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC /* Copy out the thread policy */ vm_domain_policy_localcopy(&lcl, &curthread->td_vm_dom_policy); if (lcl.p.policy != VM_POLICY_NONE) { @@ -433,7 +433,7 @@ int vm_phys_mem_affinity(int f, int t) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC if (mem_locality == NULL) return (-1); if (f >= vm_ndomains || t >= vm_ndomains) @@ -444,7 +444,7 @@ vm_phys_mem_affinity(int f, int t) #endif } -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC /* * Outputs the VM locality table. */ @@ -520,6 +520,7 @@ _vm_phys_create_seg(vm_paddr_t start, vm_paddr_t end, int domain) static void vm_phys_create_seg(vm_paddr_t start, vm_paddr_t end) { +#ifdef VM_NUMA_ALLOC int i; if (mem_affinity == NULL) { @@ -544,6 +545,9 @@ vm_phys_create_seg(vm_paddr_t start, vm_paddr_t end) mem_affinity[i].domain); start = mem_affinity[i].end; } +#else + _vm_phys_create_seg(start, end, 0); +#endif } /* diff --git a/sys/vm/vm_phys.h b/sys/vm/vm_phys.h index f9c776d..ee4aa2d 100644 --- a/sys/vm/vm_phys.h +++ b/sys/vm/vm_phys.h @@ -99,7 +99,7 @@ int vm_phys_mem_affinity(int f, int t); static inline struct vm_domain * vm_phys_domain(vm_page_t m) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC int domn, segind; /* XXXKIB try to assert that the page is managed */ diff --git a/sys/x86/acpica/srat.c b/sys/x86/acpica/srat.c index 2ec0c32..19ed116 100644 --- a/sys/x86/acpica/srat.c +++ b/sys/x86/acpica/srat.c @@ -28,6 +28,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_vm.h" + #include <sys/param.h> #include <sys/bus.h> #include <sys/kernel.h> @@ -62,7 +64,8 @@ int num_mem; static ACPI_TABLE_SRAT *srat; static vm_paddr_t srat_physaddr; -static int vm_domains[VM_PHYSSEG_MAX]; +static int domain_pxm[MAXMEMDOM]; +static int ndomain; static ACPI_TABLE_SLIT *slit; static vm_paddr_t slit_physaddr; @@ -145,8 +148,10 @@ parse_slit(void) acpi_unmap_table(slit); slit = NULL; +#ifdef VM_NUMA_ALLOC /* Tell the VM about it! */ mem_locality = vm_locality_table; +#endif return (0); } @@ -340,48 +345,46 @@ renumber_domains(void) int i, j, slot; /* Enumerate all the domains. */ - vm_ndomains = 0; + ndomain = 0; for (i = 0; i < num_mem; i++) { /* See if this domain is already known. */ - for (j = 0; j < vm_ndomains; j++) { - if (vm_domains[j] >= mem_info[i].domain) + for (j = 0; j < ndomain; j++) { + if (domain_pxm[j] >= mem_info[i].domain) break; } - if (j < vm_ndomains && vm_domains[j] == mem_info[i].domain) + if (j < ndomain && domain_pxm[j] == mem_info[i].domain) continue; /* Insert the new domain at slot 'j'. */ slot = j; - for (j = vm_ndomains; j > slot; j--) - vm_domains[j] = vm_domains[j - 1]; - vm_domains[slot] = mem_info[i].domain; - vm_ndomains++; - if (vm_ndomains > MAXMEMDOM) { - vm_ndomains = 1; + for (j = ndomain; j > slot; j--) + domain_pxm[j] = domain_pxm[j - 1]; + domain_pxm[slot] = mem_info[i].domain; + ndomain++; + if (ndomain > MAXMEMDOM) { + ndomain = 1; printf("SRAT: Too many memory domains\n"); return (EFBIG); } } - /* Renumber each domain to its index in the sorted 'domains' list. */ - for (i = 0; i < vm_ndomains; i++) { + /* Renumber each domain to its index in the sorted 'domain_pxm' list. */ + for (i = 0; i < ndomain; i++) { /* * If the domain is already the right value, no need * to renumber. */ - if (vm_domains[i] == i) + if (domain_pxm[i] == i) continue; /* Walk the cpu[] and mem_info[] arrays to renumber. */ for (j = 0; j < num_mem; j++) - if (mem_info[j].domain == vm_domains[i]) + if (mem_info[j].domain == domain_pxm[i]) mem_info[j].domain = i; for (j = 0; j <= MAX_APIC_ID; j++) - if (cpus[j].enabled && cpus[j].domain == vm_domains[i]) + if (cpus[j].enabled && cpus[j].domain == domain_pxm[i]) cpus[j].domain = i; } - KASSERT(vm_ndomains > 0, - ("renumber_domains: invalid final vm_ndomains setup")); return (0); } @@ -416,8 +419,11 @@ parse_srat(void) return (-1); } +#ifdef VM_NUMA_ALLOC /* Point vm_phys at our memory affinity table. */ + vm_ndomains = ndomain; mem_affinity = mem_info; +#endif return (0); } @@ -495,12 +501,21 @@ acpi_map_pxm_to_vm_domainid(int pxm) { int i; - for (i = 0; i < vm_ndomains; i++) { - if (vm_domains[i] == pxm) + for (i = 0; i < ndomain; i++) { + if (domain_pxm[i] == pxm) return (i); } return (-1); } +#else /* MAXMEMDOM == 1 */ + +int +acpi_map_pxm_to_vm_domainid(int pxm) +{ + + return (-1); +} + #endif /* MAXMEMDOM > 1 */ diff --git a/sys/x86/cpufreq/smist.c b/sys/x86/cpufreq/smist.c index 5cfd72b..6116d94 100644 --- a/sys/x86/cpufreq/smist.c +++ b/sys/x86/cpufreq/smist.c @@ -223,7 +223,7 @@ set_ownership(device_t dev) bus_dma_tag_destroy(tag); device_printf(dev, "can't load mem\n"); return (ENXIO); - }; + } DPRINT(dev, "taking ownership over BIOS return %d\n", cb_data.result); bus_dmamap_unload(tag, map); bus_dmamem_free(tag, cb_data.buf, map); diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 82efae3..5830b77 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -321,9 +321,9 @@ static int native_lapic_set_lvt_triggermode(u_int apic_id, u_int lvt, static void native_lapic_ipi_raw(register_t icrlo, u_int dest); static void native_lapic_ipi_vectored(u_int vector, int dest); static int native_lapic_ipi_wait(int delay); +#endif /* SMP */ static int native_lapic_ipi_alloc(inthand_t *ipifunc); static void native_lapic_ipi_free(int vector); -#endif /* SMP */ struct apic_ops apic_ops = { .create = native_lapic_create, @@ -350,9 +350,9 @@ struct apic_ops apic_ops = { .ipi_raw = native_lapic_ipi_raw, .ipi_vectored = native_lapic_ipi_vectored, .ipi_wait = native_lapic_ipi_wait, +#endif .ipi_alloc = native_lapic_ipi_alloc, .ipi_free = native_lapic_ipi_free, -#endif .set_lvt_mask = native_lapic_set_lvt_mask, .set_lvt_mode = native_lapic_set_lvt_mode, .set_lvt_polarity = native_lapic_set_lvt_polarity, @@ -1904,6 +1904,8 @@ native_lapic_ipi_vectored(u_int vector, int dest) #endif /* DETECT_DEADLOCK */ } +#endif /* SMP */ + /* * Since the IDT is shared by all CPUs the IPI slot update needs to be globally * visible. @@ -1958,5 +1960,3 @@ native_lapic_ipi_free(int vector) setidt(vector, &IDTVEC(rsvd), SDT_APICT, SEL_KPL, GSEL_APIC); mtx_unlock_spin(&icu_lock); } - -#endif /* SMP */ diff --git a/sys/x86/xen/xen_apic.c b/sys/x86/xen/xen_apic.c index 9400378..4d7a39b 100644 --- a/sys/x86/xen/xen_apic.c +++ b/sys/x86/xen/xen_apic.c @@ -296,6 +296,7 @@ xen_pv_lapic_ipi_wait(int delay) XEN_APIC_UNSUPPORTED; return (0); } +#endif /* SMP */ static int xen_pv_lapic_ipi_alloc(inthand_t *ipifunc) @@ -311,7 +312,6 @@ xen_pv_lapic_ipi_free(int vector) XEN_APIC_UNSUPPORTED; } -#endif /* SMP */ static int xen_pv_lapic_set_lvt_mask(u_int apic_id, u_int lvt, u_char masked) @@ -372,9 +372,9 @@ struct apic_ops xen_apic_ops = { .ipi_raw = xen_pv_lapic_ipi_raw, .ipi_vectored = xen_pv_lapic_ipi_vectored, .ipi_wait = xen_pv_lapic_ipi_wait, +#endif .ipi_alloc = xen_pv_lapic_ipi_alloc, .ipi_free = xen_pv_lapic_ipi_free, -#endif .set_lvt_mask = xen_pv_lapic_set_lvt_mask, .set_lvt_mode = xen_pv_lapic_set_lvt_mode, .set_lvt_polarity = xen_pv_lapic_set_lvt_polarity, diff --git a/tools/tools/nanobsd/defaults.sh b/tools/tools/nanobsd/defaults.sh index cb7a2d1..19cf887 100755 --- a/tools/tools/nanobsd/defaults.sh +++ b/tools/tools/nanobsd/defaults.sh @@ -52,6 +52,11 @@ NANO_PACKAGE_LIST="*" # where package metadata gets placed NANO_PKG_META_BASE=/var/db +# Path to mtree file to apply to anything copied by cust_install_files(). +# If you specify this, the mtree file *must* have an entry for every file and +# directory located in Files. +#NANO_CUST_FILES_MTREE="" + # Object tree directory # default is subdir of /usr/obj #NANO_OBJ="" @@ -909,6 +914,10 @@ cust_allow_ssh_root ( ) ( cust_install_files ( ) ( cd "${NANO_TOOLS}/Files" find . -print | grep -Ev '/(CVS|\.svn|\.hg|\.git)' | cpio -Ldumpv ${NANO_WORLDDIR} + + if [ -n "${NANO_CUST_FILES_MTREE}" -a -f ${NANO_CUST_FILES_MTREE} ]; then + CR "mtree -eiU -p /" <${NANO_CUST_FILES_MTREE} + fi ) ####################################################################### @@ -916,6 +925,18 @@ cust_install_files ( ) ( cust_pkgng ( ) ( + mkdir -p ${NANO_WORLDDIR}/usr/local/etc + local PKG_CONF="${NANO_WORLDDIR}/usr/local/etc/pkg.conf" + local PKGCMD="env ASSUME_ALWAYS_YES=YES PKG_DBDIR=${NANO_PKG_META_BASE}/pkg SIGNATURE_TYPE=none /usr/sbin/pkg" + + # Ensure pkg.conf points pkg to where the package meta data lives. + touch ${PKG_CONF} + if grep -Eiq '^PKG_DBDIR:.*' ${PKG_CONF}; then + sed -i -e "\|^PKG_DBDIR:.*|Is||PKG_DBDIR: "\"${NANO_PKG_META_BASE}/pkg\""|" ${PKG_CONF} + else + echo "PKG_DBDIR: \"${NANO_PKG_META_BASE}/pkg\"" >> ${PKG_CONF} + fi + # If the package directory doesn't exist, we're done. if [ ! -d ${NANO_PACKAGE_DIR} ]; then echo "DONE 0 packages" @@ -930,52 +951,28 @@ cust_pkgng ( ) ( echo "FAILED: need a pkg/ package for bootstrapping" exit 2 fi + NANO_PACKAGE_LIST="${_NANO_PKG_PACKAGE} ${NANO_PACKAGE_LIST}" - # Copy packages into chroot - mkdir -p ${NANO_WORLDDIR}/Pkg - ( - cd "${NANO_PACKAGE_DIR}" - find ${NANO_PACKAGE_LIST} -print | - cpio -Ldumpv ${NANO_WORLDDIR}/Pkg - ) + # Mount packages into chroot + mkdir -p ${NANO_WORLDDIR}/_.p + mount -t nullfs -o noatime -o ro ${NANO_PACKAGE_DIR} ${NANO_WORLDDIR}/_.p - #Bootstrap pkg - CR env ASSUME_ALWAYS_YES=YES SIGNATURE_TYPE=none /usr/sbin/pkg add /Pkg/${_NANO_PKG_PACKAGE} - CR pkg -N >/dev/null 2>&1 - if [ "$?" -ne "0" ]; then - echo "FAILED: pkg bootstrapping faied" - exit 2 - fi - rm -f ${NANO_WORLDDIR}/Pkg/pkg-* + trap "umount ${NANO_WORLDDIR}/_.p ; rm -rf ${NANO_WORLDDIR}/_.p" 1 2 15 EXIT - # Count & report how many we have to install - todo=`ls ${NANO_WORLDDIR}/Pkg | /usr/bin/wc -l` - todo=$(expr $todo + 1) # add one for pkg since it is installed already + # Install packages + todo="$(echo "${NANO_PACKAGE_LIST}" | awk '{ print NF }')" echo "=== TODO: $todo" - ls ${NANO_WORLDDIR}/Pkg + echo "${NANO_PACKAGE_LIST}" echo "===" - while true - do - # Record how many we have now - have=$(CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info | /usr/bin/wc -l) - - # Attempt to install more packages - CR0 'ls 'Pkg/*txz' | xargs env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg add' - - # See what that got us - now=$(CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info | /usr/bin/wc -l) - echo "=== NOW $now" - CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info - echo "===" - if [ $now -eq $todo ] ; then - echo "DONE $now packages" - break - elif [ $now -eq $have ] ; then - echo "FAILED: Nothing happened on this pass" - exit 2 - fi + for _PKG in ${NANO_PACKAGE_LIST}; do + CR "${PKGCMD} add /_.p/${_PKG}" done - rm -rf ${NANO_WORLDDIR}/Pkg + + CR0 "${PKGCMD} info" + + trap - 1 2 15 EXIT + umount ${NANO_WORLDDIR}/_.p + rm -rf ${NANO_WORLDDIR}/_.p ) ####################################################################### diff --git a/tools/tools/net80211/wlanstats/wlanstats.c b/tools/tools/net80211/wlanstats/wlanstats.c index 50c86fc..0e55568 100644 --- a/tools/tools/net80211/wlanstats/wlanstats.c +++ b/tools/tools/net80211/wlanstats/wlanstats.c @@ -365,13 +365,13 @@ static const struct fmt wlanstats[] = { #define S_TX_MCAST AFTER(S_TX_UCAST) { 8, "tx_mcast", "tx_mcast", "multicast data frames sent" }, #define S_RATE AFTER(S_TX_MCAST) - { 5, "rate", "rate", "current transmit rate" }, + { 7, "rate", "rate", "current transmit rate" }, #define S_RSSI AFTER(S_RATE) - { 5, "rssi", "rssi", "current rssi" }, + { 6, "rssi", "rssi", "current rssi" }, #define S_NOISE AFTER(S_RSSI) { 5, "noise", "noise", "current noise floor (dBm)" }, #define S_SIGNAL AFTER(S_NOISE) - { 5, "signal", "sig", "current signal (dBm)" }, + { 6, "signal", "sig", "current signal (dBm)" }, #define S_BEACON_BAD AFTER(S_SIGNAL) { 9, "beacon_bad", "beaconbad", "bad beacons received" }, #define S_AMPDU_BARTX AFTER(S_BEACON_BAD) @@ -635,16 +635,17 @@ wlan_getinfo(struct wlanstatfoo_p *wf, int s, char b[], size_t bs) switch (s) { case S_RATE: - snprintf(b, bs, "%uM", si->isi_txmbps/2); + snprintf(b, bs, "%.1fM", (float) si->isi_txmbps/2.0); return 1; case S_RSSI: - snprintf(b, bs, "%d", si->isi_rssi); + snprintf(b, bs, "%.1f", (float) si->isi_rssi/2.0); return 1; case S_NOISE: snprintf(b, bs, "%d", si->isi_noise); return 1; case S_SIGNAL: - snprintf(b, bs, "%d", si->isi_rssi + si->isi_noise); + snprintf(b, bs, "%.1f", (float) si->isi_rssi/2.0 + + (float) si->isi_noise); return 1; case S_RX_AUTH_FAIL_CODE: if (wf->cur.is_rx_authfail_code == 0) diff --git a/usr.bin/calendar/calendars/calendar.freebsd b/usr.bin/calendar/calendars/calendar.freebsd index 091edb3..1a5c67b 100644 --- a/usr.bin/calendar/calendars/calendar.freebsd +++ b/usr.bin/calendar/calendars/calendar.freebsd @@ -373,6 +373,7 @@ 12/15 Timur I. Bakeyev <timur@FreeBSD.org> born in Kazan, Republic of Tatarstan, USSR, 1974 12/18 Chris Timmons <cwt@FreeBSD.org> born in Ellensburg, Washington, United States, 1964 12/18 Dag-Erling Smorgrav <des@FreeBSD.org> born in Brussels, Belgium, 1977 +12/18 Muhammad Moinur Rahman <bofh@FreeBSD.org> born in Dhaka, Bangladesh, 1983 12/18 Semen Ustimenko <semenu@FreeBSD.org> born in Novosibirsk, Russian Federation, 1979 12/19 Stephen Hurd <shurd@FreeBSD.org> born in Estevan, Saskatchewan, Canada, 1975 12/21 Rong-En Fan <rafan@FreeBSD.org> born in Taipei, Taiwan, Republic of China, 1982 diff --git a/usr.bin/rctl/rctl.8 b/usr.bin/rctl/rctl.8 index ec97623..2d92d54 100644 --- a/usr.bin/rctl/rctl.8 +++ b/usr.bin/rctl/rctl.8 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 29, 2015 +.Dd January 30, 2016 .Dt RCTL 8 .Os .Sh NAME @@ -204,14 +204,22 @@ resource would be .It Sy shmsize Ta "SysV shared memory size, in bytes" .It Sy wallclock Ta "wallclock time, in seconds" .It Sy pcpu Ta "%CPU, in percents of a single CPU core" +.It Sy readbps Ta "filesystem reads, in bytes per second" +.It Sy writebps Ta "filesystem writes, in bytes per second" +.It Sy readiops Ta "filesystem reads, in operations per second" +.It Sy writeiops Ta "filesystem writes, in operations per second" .El .Sh ACTIONS .Bl -column -offset 3n "pseudoterminals" .It Em action .It Sy deny Ta deny the allocation; not supported for -.Sy cputime +.Sy cputime , +.Sy wallclock , +.Sy readbps , +.Sy writebps , +.Sy readiops , and -.Sy wallclock +.Sy writeiops .It Sy log Ta "log a warning to the console" .It Sy devctl Ta "send notification to" .Xr devd 8 @@ -228,6 +236,12 @@ send a signal to the offending process. See .Xr signal 3 for a list of supported signals +.It Sy throttle Ta "slow down process execution"; only supported for +.Sy readbps , +.Sy writebps , +.Sy readiops , +and +.Sy writeiops . .El .Pp Not all actions are supported for all resources. @@ -287,3 +301,22 @@ under sponsorship from the FreeBSD Foundation. Limiting .Sy memoryuse may kill the machine due to thrashing. +.Pp +The +.Sy readiops +and +.Sy writeiops +counters are only approximations. +Like +.Sy readbps +and +.Sy writebps , +they are calculated in the filesystem layer, where it is difficult +or even impossible to observe actual disk device operations. +.Pp +The +.Sy writebps +and +.Sy writeiops +resources generally account for writes to the filesystem cache, +not to actual devices. diff --git a/usr.bin/uuencode/uuencode.1 b/usr.bin/uuencode/uuencode.1 index 2c31bdc..9ce7e05 100644 --- a/usr.bin/uuencode/uuencode.1 +++ b/usr.bin/uuencode/uuencode.1 @@ -40,6 +40,7 @@ .Sh SYNOPSIS .Nm .Op Fl m +.Op Fl r .Op Fl o Ar output_file .Op Ar file .Ar name @@ -50,6 +51,7 @@ .Op Fl i .Fl o Ar output_file .Nm b64encode +.Op Fl r .Op Fl o Ar output_file .Op Ar file .Ar name @@ -123,6 +125,8 @@ The following options are available for Use the Base64 method of encoding, rather than the traditional .Nm algorithm. +.It Fl r +Produce raw output by excluding the initial and final framing lines. .It Fl o Ar output_file Output to .Ar output_file diff --git a/usr.bin/uuencode/uuencode.c b/usr.bin/uuencode/uuencode.c index def8bcc..500dcd3 100644 --- a/usr.bin/uuencode/uuencode.c +++ b/usr.bin/uuencode/uuencode.c @@ -66,6 +66,7 @@ static void usage(void); static FILE *output; static int mode; +static char raw = 0; static char **av; int @@ -82,7 +83,7 @@ main(int argc, char *argv[]) if (strcmp(basename(argv[0]), "b64encode") == 0) base64 = 1; - while ((ch = getopt(argc, argv, "mo:")) != -1) { + while ((ch = getopt(argc, argv, "mo:r")) != -1) { switch (ch) { case 'm': base64 = 1; @@ -90,6 +91,9 @@ main(int argc, char *argv[]) case 'o': outfile = optarg; break; + case 'r': + raw = 1; + break; case '?': default: usage(); @@ -152,7 +156,8 @@ base64_encode(void) sequence = 0; - fprintf(output, "begin-base64 %o %s\n", mode, *av); + if (!raw) + fprintf(output, "begin-base64 %o %s\n", mode, *av); while ((n = fread(buf, 1, sizeof(buf), stdin))) { ++sequence; rv = b64_ntop(buf, n, buf2, (sizeof(buf2) / sizeof(buf2[0]))); @@ -162,7 +167,8 @@ base64_encode(void) } if (sequence % GROUPS) fprintf(output, "\n"); - fprintf(output, "====\n"); + if (!raw) + fprintf(output, "====\n"); } /* @@ -175,7 +181,8 @@ encode(void) register char *p; char buf[80]; - (void)fprintf(output, "begin %o %s\n", mode, *av); + if (!raw) + (void)fprintf(output, "begin %o %s\n", mode, *av); while ((n = fread(buf, 1, 45, stdin))) { ch = ENC(n); if (fputc(ch, output) == EOF) @@ -209,7 +216,8 @@ encode(void) } if (ferror(stdin)) errx(1, "read error"); - (void)fprintf(output, "%c\nend\n", ENC('\0')); + if (!raw) + (void)fprintf(output, "%c\nend\n", ENC('\0')); } static void diff --git a/usr.bin/whois/whois.c b/usr.bin/whois/whois.c index 49b2005..9bae3b1 100644 --- a/usr.bin/whois/whois.c +++ b/usr.bin/whois/whois.c @@ -114,9 +114,16 @@ static struct { WHOIS_REFERRAL("Whois Server:"), WHOIS_REFERRAL("Registrar WHOIS Server:"), /* corporatedomains.com */ WHOIS_REFERRAL("ReferralServer: whois://"), /* ARIN */ + WHOIS_REFERRAL("descr: region. Please query"), /* AfriNIC */ { NULL, 0 } }; +static const char *actually_arin[] = { + "netname: ERX-NETBLOCK\n", /* APNIC */ + "netname: NON-RIPE-NCC-MANAGED-ADDRESS-BLOCK\n", + NULL +}; + static const char *port = DEFAULT_PORT; static const char *choose_server(char *); @@ -469,6 +476,12 @@ done: (int)(p - host), host); break; } + for (i = 0; actually_arin[i] != NULL; i++) { + if (strncmp(buf, actually_arin[i], len) == 0) { + s_asprintf(&nhost, "%s", ANICHOST); + break; + } + } } /* Verisign etc. */ if (!(flags & WHOIS_SPAM_ME) && diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile index e1992a7..d85403c 100644 --- a/usr.sbin/bhyve/Makefile +++ b/usr.sbin/bhyve/Makefile @@ -9,6 +9,8 @@ DEBUG_FLAGS= -g -O0 MAN= bhyve.8 +SYSDIR?=${.CURDIR}/../.. + SRCS= \ atkbdc.c \ acpi.c \ @@ -43,7 +45,7 @@ SRCS= \ xmsr.c \ spinup_ap.c -.PATH: ${.CURDIR}/../../sys/amd64/vmm +.PATH: ${SYSDIR}/sys/amd64/vmm SRCS+= vmm_instruction_emul.c LIBADD= vmmapi md pthread diff --git a/usr.sbin/bsdinstall/scripts/zfsboot b/usr.sbin/bsdinstall/scripts/zfsboot index 4dedbf0..415afb6 100755 --- a/usr.sbin/bsdinstall/scripts/zfsboot +++ b/usr.sbin/bsdinstall/scripts/zfsboot @@ -964,6 +964,8 @@ zfs_create_diskpart() f_expand_number "$ZFSBOOT_SWAP_SIZE" swapsize if [ "$isswapmirror" ]; then # This is not the first disk in the mirror, do nothing + elif [ ${swapsize:-0} -eq 0 ]; then + # If swap is 0 sized, don't add it to fstab elif [ "$ZFSBOOT_SWAP_ENCRYPTION" -a "$ZFSBOOT_SWAP_MIRROR" ]; then f_eval_catch $funcname printf "$PRINTF_FSTAB" \ /dev/mirror/swap.eli none swap sw 0 0 \ @@ -981,8 +983,6 @@ zfs_create_diskpart() /dev/$disk${swappart}.eli none swap sw 0 0 \ $BSDINSTALL_TMPETC/fstab || return $FAILURE - elif [ ${swapsize:-0} -eq 0 ]; then - # If swap is 0 sized, don't add it to fstab else f_eval_catch $funcname printf "$PRINTF_FSTAB" \ /dev/$disk$swappart none swap sw 0 0 \ @@ -1256,6 +1256,8 @@ zfs_create_boot() f_dprintf "$funcname: Modifying directory permissions..." local dir for dir in /tmp /var/tmp; do + f_eval_catch $funcname mkdir "$MKDIR_P" \ + $BSDINSTALL_CHROOT$dir || return $FAILURE f_eval_catch $funcname chmod "$CHMOD_MODE" 1777 \ $BSDINSTALL_CHROOT$dir || return $FAILURE done diff --git a/usr.sbin/etcupdate/tests/tzsetup_test.sh b/usr.sbin/etcupdate/tests/tzsetup_test.sh index dbdcc0e..5d3fe89 100644 --- a/usr.sbin/etcupdate/tests/tzsetup_test.sh +++ b/usr.sbin/etcupdate/tests/tzsetup_test.sh @@ -196,7 +196,7 @@ $COMMAND -nr -d $WORKDIR -D $TEST > $WORKDIR/testn.out cat > $WORKDIR/correct.out <<EOF Warnings: - Needs update: /etc/localtime (required manual update via tzsetup(1)) + Needs update: /etc/localtime (required manual update via tzsetup(8)) EOF echo "Differences for missing /var/db/zoneinfo with -n:" diff --git a/usr.sbin/lpr/chkprintcap/chkprintcap.c b/usr.sbin/lpr/chkprintcap/chkprintcap.c index 91e8299..96fe489 100644 --- a/usr.sbin/lpr/chkprintcap/chkprintcap.c +++ b/usr.sbin/lpr/chkprintcap/chkprintcap.c @@ -222,7 +222,7 @@ note_spool_dir(const struct printer *pp, const struct stat *st) struct dirlist *dp, *dp2, *last; dp = malloc(sizeof *dp); - if (dp == 0) + if (dp == NULL) err(++problems, "malloc(%lu)", (u_long)sizeof *dp); dp->stab = *st; @@ -233,7 +233,7 @@ note_spool_dir(const struct printer *pp, const struct stat *st) if (dp->path == 0) err(++problems, "malloc(%lu)", strlen(pp->spool_dir) + 1UL); - last = 0; + last = NULL; LIST_FOREACH(dp2, &dirlist, link) { if(!lessp(dp, dp2)) break; @@ -255,7 +255,7 @@ check_spool_dirs(void) for (dp = LIST_FIRST(&dirlist); dp; dp = dp2) { dp2 = LIST_NEXT(dp, link); - if (dp2 != 0 && equal(dp, dp2)) { + if (dp2 != NULL && equal(dp, dp2)) { ++problems; if (strcmp(dp->path, dp2->path) == 0) { warnx("%s and %s share the same spool, %s", @@ -289,7 +289,7 @@ make_spool_dir(const struct printer *pp) return; } gr = getgrnam("daemon"); - if (gr == 0) + if (gr == NULL) errx(++problems, "cannot locate daemon group"); if (chown(sd, pp->daemon_user, gr->gr_gid) < 0) { diff --git a/usr.sbin/lpr/common_source/common.c b/usr.sbin/lpr/common_source/common.c index 52d6c9f..ce0ba7c 100644 --- a/usr.sbin/lpr/common_source/common.c +++ b/usr.sbin/lpr/common_source/common.c @@ -282,7 +282,7 @@ lock_file_name(const struct printer *pp, char *buf, size_t len) { static char staticbuf[MAXPATHLEN]; - if (buf == 0) + if (buf == NULL) buf = staticbuf; if (len == 0) len = MAXPATHLEN; @@ -300,7 +300,7 @@ status_file_name(const struct printer *pp, char *buf, size_t len) { static char staticbuf[MAXPATHLEN]; - if (buf == 0) + if (buf == NULL) buf = staticbuf; if (len == 0) len = MAXPATHLEN; diff --git a/usr.sbin/lpr/common_source/net.c b/usr.sbin/lpr/common_source/net.c index ab6fa16..c495bbb 100644 --- a/usr.sbin/lpr/common_source/net.c +++ b/usr.sbin/lpr/common_source/net.c @@ -280,7 +280,7 @@ writel(int strm, ...) if (n > NIOV) { iovp = malloc(n * sizeof *iovp); - if (iovp == 0) + if (iovp == NULL) return -1; } diff --git a/usr.sbin/lpr/common_source/printcap.c b/usr.sbin/lpr/common_source/printcap.c index 0d3644b..707b7b8 100644 --- a/usr.sbin/lpr/common_source/printcap.c +++ b/usr.sbin/lpr/common_source/printcap.c @@ -220,7 +220,7 @@ getprintcap_int(char *bp, struct printer *pp) char *rp_name; int error; - if ((pp->printer = capdb_canonical_name(bp)) == 0) + if ((pp->printer = capdb_canonical_name(bp)) == NULL) return PCAPERR_OSERR; #define CHK(x) do {if ((x) == PCAPERR_OSERR) return PCAPERR_OSERR;}while(0) @@ -386,7 +386,7 @@ capdb_getaltstr(char *bp, const char *shrt, const char *lng, return status; if (dflt) { *result = strdup(dflt); - if (*result == 0) + if (*result == NULL) return PCAPERR_OSERR; return strlen(*result); } @@ -439,9 +439,9 @@ capdb_canonical_name(const char *bp) const char *nameend; nameend = strpbrk(bp, "|:"); - if (nameend == 0) + if (nameend == NULL) nameend = bp + 1; - if ((retval = malloc(nameend - bp + 1)) != 0) { + if ((retval = malloc(nameend - bp + 1)) != NULL) { retval[0] = '\0'; strncat(retval, bp, nameend - bp); } diff --git a/usr.sbin/lpr/common_source/request.c b/usr.sbin/lpr/common_source/request.c index b650e5c..0c68fe9 100644 --- a/usr.sbin/lpr/common_source/request.c +++ b/usr.sbin/lpr/common_source/request.c @@ -69,11 +69,11 @@ free_request(struct request *rp) free(rp->prettyname); if (rp->authinfo) free(rp->authinfo); - while ((ru = TAILQ_FIRST(&rp->users)) != 0) { + while ((ru = TAILQ_FIRST(&rp->users)) != NULL) { TAILQ_REMOVE(&rp->users, ru, ru_link); free(ru); } - while ((rj = TAILQ_FIRST(&rp->jobids)) != 0) { + while ((rj = TAILQ_FIRST(&rp->jobids)) != NULL) { TAILQ_REMOVE(&rp->jobids, rj, rj_link); free(rj); } diff --git a/usr.sbin/lpr/common_source/rmjob.c b/usr.sbin/lpr/common_source/rmjob.c index c89a6f0..96f20be 100644 --- a/usr.sbin/lpr/common_source/rmjob.c +++ b/usr.sbin/lpr/common_source/rmjob.c @@ -332,7 +332,7 @@ rmremote(const struct printer *pp) else niov = 4 + requests + 1; iov = malloc(niov * sizeof *iov); - if (iov == 0) + if (iov == NULL) fatal(pp, "out of memory in rmremote()"); iov[0].iov_base = "\5"; iov[1].iov_base = pp->remote_queue; diff --git a/usr.sbin/lpr/lpc/lpc.c b/usr.sbin/lpr/lpc/lpc.c index cc58bd9..5b5ec78 100644 --- a/usr.sbin/lpr/lpc/lpc.c +++ b/usr.sbin/lpr/lpc/lpc.c @@ -103,7 +103,7 @@ main(int argc, char *argv[]) printf("?Ambiguous command\n"); exit(1); } - if (c == 0) { + if (c == NULL) { printf("?Invalid command\n"); exit(1); } @@ -112,7 +112,7 @@ main(int argc, char *argv[]) printf("?Privileged command\n"); exit(1); } - if (c->c_generic != 0) + if (c->c_generic != NULL) generic(c->c_generic, c->c_opts, c->c_handler, argc, argv); else @@ -205,7 +205,7 @@ cmdscanner(void) printf("?Ambiguous command\n"); continue; } - if (c == 0) { + if (c == NULL) { printf("?Invalid command\n"); continue; } @@ -222,7 +222,7 @@ cmdscanner(void) * routine might also be set on a generic routine for * initial parameter processing. */ - if (c->c_generic != 0) + if (c->c_generic != NULL) generic(c->c_generic, c->c_opts, c->c_handler, margc, margv); else @@ -239,7 +239,7 @@ getcmd(const char *name) longest = 0; nmatches = 0; - found = 0; + found = NULL; for (c = cmdtab; (p = c->c_name); c++) { for (q = name; *q == *p++; q++) if (*q == 0) /* exact match? */ @@ -283,7 +283,7 @@ makeargv(void) break; *cp++ = '\0'; } - *argp++ = 0; + *argp++ = NULL; } #define HELPINDENT (sizeof ("directory")) diff --git a/usr.sbin/lpr/lpd/printjob.c b/usr.sbin/lpr/lpd/printjob.c index 06ea1b0..b388b96 100644 --- a/usr.sbin/lpr/lpd/printjob.c +++ b/usr.sbin/lpr/lpd/printjob.c @@ -673,7 +673,7 @@ print(struct printer *pp, int format, char *file) av[i++] = "-L"; av[i++] = *locale ? locale : "C"; av[i++] = "-F"; - av[i] = 0; + av[i] = NULL; fo = ofd; goto start; } @@ -795,7 +795,7 @@ print(struct printer *pp, int format, char *file) av[n++] = "-h"; av[n++] = origin_host; av[n++] = pp->acct_file; - av[n] = 0; + av[n] = NULL; fo = pfd; if (of_pid > 0) { /* stop output filter */ write(ofd, "\031\1", 2); @@ -1737,7 +1737,7 @@ init(struct printer *pp) sprintf(&length[2], "%ld", pp->page_length); sprintf(&pxwidth[2], "%ld", pp->page_pwidth); sprintf(&pxlength[2], "%ld", pp->page_plength); - if ((s = checkremote(pp)) != 0) { + if ((s = checkremote(pp)) != NULL) { syslog(LOG_WARNING, "%s", s); free(s); } |