:: commit 0b5bef4fcc860228aabbbd0e29954097bb03376e

mintsuki <mintsuki@users.noreply.github.com> — 2024-08-02 16:41

(root commit)

Binary release v8.0.0

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..a1492fd7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+limine
+limine.exe
diff --git a/BOOTAA64.EFI b/BOOTAA64.EFI
new file mode 100644
index 00000000..bc5677af
Binary files /dev/null and b/BOOTAA64.EFI differ
diff --git a/BOOTIA32.EFI b/BOOTIA32.EFI
new file mode 100644
index 00000000..8bea4b56
Binary files /dev/null and b/BOOTIA32.EFI differ
diff --git a/BOOTLOONGARCH64.EFI b/BOOTLOONGARCH64.EFI
new file mode 100644
index 00000000..c56547a4
Binary files /dev/null and b/BOOTLOONGARCH64.EFI differ
diff --git a/BOOTRISCV64.EFI b/BOOTRISCV64.EFI
new file mode 100644
index 00000000..33fc4845
Binary files /dev/null and b/BOOTRISCV64.EFI differ
diff --git a/BOOTX64.EFI b/BOOTX64.EFI
new file mode 100644
index 00000000..4a69fe3b
Binary files /dev/null and b/BOOTX64.EFI differ
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..fad56e13
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+Copyright (C) 2019-2024 mintsuki and contributors.
+
+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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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.
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..26e60279
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,39 @@
+CC ?= cc
+STRIP ?= strip
+INSTALL ?= ./install-sh
+
+PREFIX ?= /usr/local
+
+CFLAGS ?= -g -O2 -pipe
+
+.PHONY: all
+all: limine
+
+.PHONY: install
+install: all
+	$(INSTALL) -d '$(DESTDIR)$(PREFIX)/share'
+	$(INSTALL) -d '$(DESTDIR)$(PREFIX)/share/limine'
+	$(INSTALL) -m 644 limine-bios.sys '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 limine-bios-cd.bin '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 limine-uefi-cd.bin '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 limine-bios-pxe.bin '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 BOOTX64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 BOOTIA32.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 BOOTAA64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 BOOTRISCV64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -m 644 BOOTLOONGARCH64.EFI '$(DESTDIR)$(PREFIX)/share/limine/'
+	$(INSTALL) -d '$(DESTDIR)$(PREFIX)/include'
+	$(INSTALL) -m 644 limine.h '$(DESTDIR)$(PREFIX)/include/'
+	$(INSTALL) -d '$(DESTDIR)$(PREFIX)/bin'
+	$(INSTALL) limine '$(DESTDIR)$(PREFIX)/bin/'
+
+.PHONY: install-strip
+install-strip: install
+	$(STRIP) '$(DESTDIR)$(PREFIX)/bin/limine'
+
+.PHONY: clean
+clean:
+	rm -f limine limine.exe
+
+limine: limine.c
+	$(CC) $(CFLAGS) -Wall -Wextra $(WERROR_FLAG) $(CPPFLAGS) $(LDFLAGS) -std=c99 limine.c $(LIBS) -o $@
diff --git a/install-sh b/install-sh
new file mode 100755
index 00000000..7c56c9c0
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,541 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2023-11-23.18; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab='	'
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
+backupsuffix=
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -p            pass -p to $cpprog.
+  -s            $stripprog installed files.
+  -S SUFFIX     attempt to back up existing files, with suffix SUFFIX.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+
+By default, rm is invoked with -f; when overridden with RMPROG,
+it's up to you to specify -f if you want it.
+
+If -S is not specified, no backups are attempted.
+
+Report bugs to <bug-automake@gnu.org>.
+GNU Automake home page: <https://www.gnu.org/software/automake/>.
+General help using GNU software: <https://www.gnu.org/gethelp/>."
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
+
+    -o) chowncmd="$chownprog $2"
+        shift;;
+
+    -p) cpprog="$cpprog -p";;
+
+    -s) stripcmd=$stripprog;;
+
+    -S) backupsuffix="$2"
+        shift;;
+
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
+
+    -T) is_target_a_directory=never;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --) shift
+        break;;
+
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+    # Don't chown directories that already exist.
+    if test $dstdir_status = 0; then
+      chowncmd=""
+    fi
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename.
+    if test -d "$dst"; then
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
+      fi
+      dstdir=$dst
+      dstbase=`basename "$src"`
+      case $dst in
+	*/) dst=$dst$dstbase;;
+	*)  dst=$dst/$dstbase;;
+      esac
+      dstdir_status=0
+    else
+      dstdir=`dirname "$dst"`
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  case $dstdir in
+    */) dstdirslash=$dstdir;;
+    *)  dstdirslash=$dstdir/;;
+  esac
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+	# The $RANDOM variable is not portable (e.g., dash).  Use it
+	# here however when possible just to lower collision chance.
+	tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+	trap '
+	  ret=$?
+	  rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+	  exit $ret
+	' 0
+
+	# Because "mkdir -p" follows existing symlinks and we likely work
+	# directly in world-writeable /tmp, make sure that the '$tmpdir'
+	# directory is successfully created first before we actually test
+	# 'mkdir -p'.
+	if (umask $mkdir_umask &&
+	    $mkdirprog $mkdir_mode "$tmpdir" &&
+	    exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+	then
+	  if test -z "$dir_arg" || {
+	       # Check for POSIX incompatibilities with -m.
+	       # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+	       # other-writable bit of parent directory when it shouldn't.
+	       # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+	       test_tmpdir="$tmpdir/a"
+	       ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+	       case $ls_ld_tmpdir in
+		 d????-?r-*) different_mode=700;;
+		 d????-?--*) different_mode=755;;
+		 *) false;;
+	       esac &&
+	       $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+		 ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+		 test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+	       }
+	     }
+	  then posix_mkdir=:
+	  fi
+	  rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+	else
+	  # Remove any dirs left behind by ancient mkdir implementations.
+	  rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+	fi
+	trap '' 0;;
+    esac
+
+    if
+      $posix_mkdir && (
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
+      esac
+
+      oIFS=$IFS
+      IFS=/
+      set -f
+      set fnord $dstdir
+      shift
+      set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask $mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=${dstdirslash}_inst.$$_
+    rmtmp=${dstdirslash}_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask &&
+     { test -z "$stripcmd" || {
+	 # Create $dsttmp read-write so that cp doesn't create it read-only,
+	 # which would cause strip to fail.
+	 if test -z "$doit"; then
+	   : >"$dsttmp" # No need to fork-exec 'touch'.
+	 else
+	   $doit touch "$dsttmp"
+	 fi
+       }
+     } &&
+     $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       set +f &&
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # If $backupsuffix is set, and the file being installed
+      # already exists, attempt a backup.  Don't worry if it fails,
+      # e.g., if mv doesn't support -f.
+      if test -n "$backupsuffix" && test -f "$dst"; then
+        $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+      fi
+
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/limine-bios-cd.bin b/limine-bios-cd.bin
new file mode 100644
index 00000000..3404f195
Binary files /dev/null and b/limine-bios-cd.bin differ
diff --git a/limine-bios-hdd.h b/limine-bios-hdd.h
new file mode 100644
index 00000000..9c525fe6
--- /dev/null
+++ b/limine-bios-hdd.h
@@ -0,0 +1,1346 @@
+const uint8_t binary_limine_hdd_bin_data[] = {
+    0xeb, 0x3c, 0x90, 0x4c, 0x49, 0x4d, 0x49, 0x4e, 0x45, 0x20, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x49, 0x4d, 0x49, 0x4e,
+    0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xfc,
+    0xea, 0x45, 0x7c, 0x00, 0x00, 0x31, 0xf6, 0x8e, 0xde, 0x8e, 0xc6, 0x8e, 0xd6, 0xbc, 0x00, 0x7c,
+    0xfb, 0x80, 0xfa, 0x80, 0x0f, 0x82, 0x10, 0x01, 0x80, 0xfa, 0x8f, 0x0f, 0x87, 0x08, 0x01, 0xb4,
+    0x41, 0xbb, 0xaa, 0x55, 0xcd, 0x13, 0x0f, 0x82, 0xfc, 0x00, 0x81, 0xfb, 0x55, 0xaa, 0x0f, 0x85,
+    0xf3, 0x00, 0x68, 0x00, 0x70, 0x07, 0xbf, 0xa8, 0x7d, 0x66, 0x8b, 0x05, 0x66, 0x8b, 0x6d, 0x04,
+    0x31, 0xdb, 0x66, 0x31, 0xc9, 0x8b, 0x4d, 0xfc, 0xe8, 0x55, 0x00, 0x0f, 0x82, 0xd5, 0x00, 0x66,
+    0x8b, 0x45, 0x08, 0x66, 0x8b, 0x6d, 0x0c, 0x01, 0xcb, 0x8b, 0x4d, 0xfe, 0xe8, 0x41, 0x00, 0x0f,
+    0x82, 0xc0, 0x00, 0x0f, 0x01, 0x16, 0x4d, 0x7d, 0xfa, 0x0f, 0x20, 0xc0, 0x0f, 0xba, 0xe8, 0x00,
+    0x0f, 0x22, 0xc0, 0xea, 0x79, 0x7d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x60, 0xbe, 0x00, 0x80, 0xc7, 0x04, 0x10, 0x00, 0xc7, 0x44, 0x02, 0x01, 0x00, 0x89, 0x5c, 0x04,
+    0x8c, 0x44, 0x06, 0x52, 0x56, 0x66, 0x50, 0x66, 0x55, 0xb4, 0x48, 0xbe, 0x10, 0x80, 0xc7, 0x04,
+    0x1e, 0x00, 0xcd, 0x13, 0x72, 0x45, 0x8b, 0x6c, 0x18, 0x89, 0xc8, 0x66, 0xc1, 0xe9, 0x10, 0x89,
+    0xca, 0x31, 0xc9, 0xf7, 0xf5, 0x85, 0xd2, 0x0f, 0x95, 0xc1, 0x01, 0xc1, 0x66, 0x5a, 0x66, 0x58,
+    0x5e, 0x66, 0xf7, 0xf5, 0x66, 0x89, 0x44, 0x08, 0x66, 0xc7, 0x44, 0x0c, 0x00, 0x00, 0x00, 0x00,
+    0x5a, 0xb4, 0x42, 0xf8, 0xcd, 0x13, 0x72, 0x13, 0x01, 0x6c, 0x04, 0x66, 0x31, 0xdb, 0x66, 0xff,
+    0x44, 0x08, 0x0f, 0x90, 0xc3, 0x66, 0x01, 0x5c, 0x0c, 0xe2, 0xe6, 0x61, 0xc3, 0x17, 0x00, 0x4b,
+    0x7d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xcf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
+    0x93, 0xcf, 0x00, 0x46, 0x46, 0x46, 0x46, 0x46, 0x81, 0xc6, 0x30, 0x4f, 0x68, 0x00, 0xb8, 0x07,
+    0x26, 0x89, 0x36, 0x00, 0x00, 0xfb, 0xf4, 0xeb, 0xfd, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8,
+    0x8e, 0xc0, 0x8e, 0xe0, 0x8e, 0xe8, 0x8e, 0xd0, 0x81, 0xe2, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x00,
+    0x52, 0x68, 0x52, 0x47, 0x00, 0x00, 0x68, 0xa0, 0x0a, 0x07, 0x00, 0xe8, 0x60, 0x82, 0x06, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa,
+    0xfc, 0x30, 0xc0, 0xbf, 0x91, 0x0a, 0x07, 0x00, 0xb9, 0x91, 0x0a, 0x07, 0x00, 0x81, 0xe9, 0x91,
+    0x0a, 0x07, 0x00, 0xf3, 0xaa, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x57, 0x56, 0x0f, 0xb6, 0x74, 0x24,
+    0x14, 0x8b, 0x7c, 0x24, 0x18, 0xff, 0x74, 0x24, 0x10, 0xff, 0x74, 0x24, 0x10, 0x68, 0x00, 0xf0,
+    0x00, 0x00, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0xbc, 0x00, 0xf0, 0x00, 0x00, 0x31,
+    0xed, 0x57, 0x56, 0x6a, 0x00, 0x68, 0x00, 0xf0, 0x00, 0x00, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x8b,
+    0x54, 0x24, 0x1c, 0xb8, 0xfd, 0xff, 0xff, 0xff, 0x83, 0xfa, 0x12, 0x0f, 0x82, 0xa2, 0x00, 0x00,
+    0x00, 0x8b, 0x4c, 0x24, 0x18, 0x80, 0x39, 0x1f, 0x0f, 0x85, 0x95, 0x00, 0x00, 0x00, 0x80, 0x79,
+    0x01, 0x8b, 0x0f, 0x85, 0x8b, 0x00, 0x00, 0x00, 0x80, 0x79, 0x02, 0x08, 0x0f, 0x85, 0x81, 0x00,
+    0x00, 0x00, 0x0f, 0xb6, 0x59, 0x03, 0x83, 0xfb, 0x1f, 0x77, 0x78, 0x8d, 0x71, 0x0a, 0xf6, 0xc3,
+    0x04, 0x74, 0x0e, 0x0f, 0xb7, 0x3e, 0x8d, 0x6a, 0xf4, 0x39, 0xfd, 0x72, 0x66, 0x8d, 0x74, 0x3e,
+    0x02, 0xf6, 0xc3, 0x08, 0x75, 0x04, 0x89, 0xf7, 0xeb, 0x13, 0x89, 0xf5, 0x29, 0xcd, 0x39, 0xd5,
+    0x73, 0x51, 0x8d, 0x7e, 0x01, 0x45, 0x80, 0x3e, 0x00, 0x89, 0xfe, 0x75, 0xf1, 0x80, 0xfb, 0x10,
+    0x73, 0x04, 0x89, 0xfd, 0xeb, 0x13, 0x89, 0xfe, 0x29, 0xce, 0x39, 0xd6, 0x73, 0x35, 0x8d, 0x6f,
+    0x01, 0x46, 0x80, 0x3f, 0x00, 0x89, 0xef, 0x75, 0xf1, 0x83, 0xe3, 0x02, 0x01, 0xeb, 0x01, 0xd1,
+    0x29, 0xd9, 0x83, 0xf9, 0x08, 0x7c, 0x1c, 0x83, 0xc1, 0xf8, 0x51, 0x53, 0xff, 0x74, 0x24, 0x1c,
+    0xe8, 0x13, 0x00, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x31, 0xc9, 0x85, 0xc0, 0x0f, 0x94, 0xc1, 0x8d,
+    0x44, 0x49, 0xfd, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x81, 0xec, 0x44, 0x06,
+    0x00, 0x00, 0x8b, 0x84, 0x24, 0x58, 0x06, 0x00, 0x00, 0x8b, 0x8c, 0x24, 0x5c, 0x06, 0x00, 0x00,
+    0x8d, 0x54, 0x24, 0x3c, 0x89, 0x4a, 0xe4, 0x03, 0x8c, 0x24, 0x60, 0x06, 0x00, 0x00, 0x89, 0x4a,
+    0xe8, 0x31, 0xc9, 0x89, 0x4a, 0xec, 0x89, 0x4a, 0xf0, 0x89, 0x4a, 0xf4, 0x89, 0x42, 0xfc, 0x89,
+    0x42, 0xf8, 0x8b, 0x54, 0x24, 0x2c, 0x85, 0xd2, 0x7e, 0x0a, 0x8b, 0x44, 0x24, 0x28, 0x89, 0x44,
+    0x24, 0x0c, 0xeb, 0x4c, 0x8b, 0x74, 0x24, 0x20, 0x8b, 0x44, 0x24, 0x24, 0x8b, 0x4c, 0x24, 0x28,
+    0x89, 0x4c, 0x24, 0x0c, 0x89, 0xd1, 0x39, 0xc6, 0x74, 0x1e, 0x8d, 0x56, 0x01, 0x89, 0x54, 0x24,
+    0x20, 0x0f, 0xb6, 0x36, 0xd3, 0xe6, 0x8b, 0x7c, 0x24, 0x0c, 0x09, 0xf7, 0x89, 0x7c, 0x24, 0x0c,
+    0x89, 0x7c, 0x24, 0x28, 0x89, 0xd6, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00,
+    0x89, 0xc6, 0x8d, 0x51, 0x08, 0x89, 0x54, 0x24, 0x2c, 0x83, 0xf9, 0xf9, 0x89, 0xd1, 0x7c, 0xc6,
+    0x8b, 0x74, 0x24, 0x0c, 0xd1, 0xee, 0x89, 0x74, 0x24, 0x28, 0x8d, 0x5a, 0xff, 0x89, 0x5c, 0x24,
+    0x2c, 0x83, 0xfb, 0x01, 0x77, 0x45, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x7c, 0x24, 0x24, 0x83, 0xc2,
+    0xf7, 0x8d, 0x5a, 0x08, 0x39, 0xf9, 0x74, 0x18, 0x8d, 0x41, 0x01, 0x89, 0x44, 0x24, 0x20, 0x0f,
+    0xb6, 0x29, 0x89, 0xd9, 0xd3, 0xe5, 0x09, 0xee, 0x89, 0x74, 0x24, 0x28, 0x89, 0xc1, 0xeb, 0x0a,
+    0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xf9, 0x83, 0xc2, 0x10, 0x89, 0x54, 0x24,
+    0x2c, 0x83, 0xfb, 0xfa, 0x89, 0xda, 0x7c, 0xc9, 0x83, 0xc3, 0x08, 0x89, 0xf1, 0xc1, 0xe9, 0x02,
+    0x89, 0x4c, 0x24, 0x04, 0x89, 0x4c, 0x24, 0x28, 0x8d, 0x53, 0xfe, 0x89, 0x54, 0x24, 0x2c, 0xb8,
+    0xfd, 0xff, 0xff, 0xff, 0x83, 0xe6, 0x03, 0x0f, 0x84, 0x7a, 0x04, 0x00, 0x00, 0x83, 0xfe, 0x02,
+    0x0f, 0x84, 0xe6, 0x00, 0x00, 0x00, 0x83, 0xfe, 0x01, 0x8d, 0xb4, 0x24, 0xa0, 0x02, 0x00, 0x00,
+    0x0f, 0x85, 0xdf, 0x04, 0x00, 0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x44, 0x04, 0x5c,
+    0x00, 0x00, 0x83, 0xc0, 0x02, 0x75, 0xf4, 0xc7, 0x44, 0x24, 0x4a, 0x18, 0x00, 0x98, 0x00, 0x66,
+    0xc7, 0x44, 0x24, 0x4e, 0x70, 0x00, 0xb8, 0xe8, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x18, 0x01, 0x00,
+    0x00, 0x66, 0x89, 0x8c, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x40, 0x75, 0xef, 0x31, 0xc0, 0x66, 0x89,
+    0x84, 0x44, 0x8c, 0x00, 0x00, 0x00, 0x40, 0x3d, 0x90, 0x00, 0x00, 0x00, 0x75, 0xf0, 0xb8, 0xf8,
+    0xff, 0xff, 0xff, 0x8d, 0x88, 0x20, 0x01, 0x00, 0x00, 0x66, 0x89, 0x8c, 0x44, 0xbc, 0x01, 0x00,
+    0x00, 0x40, 0x75, 0xef, 0xb8, 0x90, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x00, 0x01, 0x00, 0x00, 0x66,
+    0x89, 0x8c, 0x44, 0x9c, 0x02, 0x00, 0x00, 0x40, 0x75, 0xef, 0xc7, 0x84, 0x24, 0x9c, 0x02, 0x00,
+    0x00, 0x1d, 0x01, 0x00, 0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x84, 0x04, 0xc0, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x83, 0xc0, 0x02, 0x75, 0xf1, 0x66, 0xc7, 0x84, 0x24, 0xaa, 0x02, 0x00,
+    0x00, 0x20, 0x00, 0x31, 0xc0, 0x66, 0x89, 0x84, 0x44, 0xc0, 0x02, 0x00, 0x00, 0x40, 0x83, 0xf8,
+    0x20, 0x75, 0xf2, 0xc7, 0x84, 0x24, 0x00, 0x05, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x8d, 0x4c,
+    0x24, 0x20, 0x8d, 0x54, 0x24, 0x3c, 0x56, 0xe8, 0x7d, 0x04, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85,
+    0xc0, 0x0f, 0x84, 0xe1, 0x03, 0x00, 0x00, 0xe9, 0x09, 0x04, 0x00, 0x00, 0x83, 0xfa, 0x04, 0x77,
+    0x4d, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x74, 0x24, 0x24, 0x83, 0xc3, 0xf6, 0x8d, 0x53, 0x08, 0x39,
+    0xf1, 0x74, 0x20, 0x8d, 0x79, 0x01, 0x89, 0x7c, 0x24, 0x20, 0x0f, 0xb6, 0x01, 0x89, 0xd1, 0xd3,
+    0xe0, 0x8b, 0x4c, 0x24, 0x04, 0x09, 0xc1, 0x89, 0x4c, 0x24, 0x04, 0x89, 0x4c, 0x24, 0x28, 0x89,
+    0xf9, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xf1, 0x83, 0xc3, 0x10,
+    0x89, 0x5c, 0x24, 0x2c, 0x83, 0xfa, 0xfd, 0x89, 0xd3, 0x7c, 0xc1, 0x83, 0xc2, 0x08, 0x8b, 0x74,
+    0x24, 0x04, 0x89, 0xf3, 0xc1, 0xeb, 0x05, 0x89, 0x5c, 0x24, 0x28, 0x8d, 0x42, 0xfb, 0x89, 0x44,
+    0x24, 0x2c, 0x83, 0xf8, 0x04, 0x77, 0x4d, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x74, 0x24, 0x24, 0x83,
+    0xc2, 0xf3, 0x8d, 0x42, 0x08, 0x39, 0xf1, 0x74, 0x1c, 0x8d, 0x79, 0x01, 0x89, 0x7c, 0x24, 0x20,
+    0x89, 0xdd, 0x0f, 0xb6, 0x19, 0x89, 0xc1, 0xd3, 0xe3, 0x09, 0xdd, 0x89, 0xeb, 0x89, 0x6c, 0x24,
+    0x28, 0x89, 0xf9, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xf1, 0x83,
+    0xc2, 0x10, 0x89, 0x54, 0x24, 0x2c, 0x83, 0xf8, 0xfd, 0x89, 0xc2, 0x7c, 0xc5, 0x83, 0xc0, 0x08,
+    0x8b, 0x74, 0x24, 0x04, 0x89, 0xd9, 0xc1, 0xe9, 0x05, 0x89, 0x0c, 0x24, 0x89, 0x4c, 0x24, 0x28,
+    0x8d, 0x48, 0xfb, 0x89, 0x4c, 0x24, 0x2c, 0x83, 0xf9, 0x03, 0x77, 0x4d, 0x8b, 0x7c, 0x24, 0x20,
+    0x8b, 0x74, 0x24, 0x24, 0x83, 0xc0, 0xf3, 0x8d, 0x48, 0x08, 0x39, 0xf7, 0x74, 0x1c, 0x8d, 0x57,
+    0x01, 0x89, 0x54, 0x24, 0x20, 0x0f, 0xb6, 0x3f, 0xd3, 0xe7, 0x8b, 0x2c, 0x24, 0x09, 0xfd, 0x89,
+    0x2c, 0x24, 0x89, 0x6c, 0x24, 0x28, 0x89, 0xd7, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00,
+    0x00, 0x00, 0x89, 0xf7, 0x83, 0xc0, 0x10, 0x89, 0x44, 0x24, 0x2c, 0x83, 0xf9, 0xfc, 0x89, 0xc8,
+    0x7c, 0xc5, 0x83, 0xc1, 0x08, 0x8b, 0x74, 0x24, 0x04, 0x83, 0xe6, 0x1f, 0x8b, 0x04, 0x24, 0xc1,
+    0xe8, 0x04, 0x89, 0x44, 0x24, 0x28, 0x83, 0xc1, 0xfc, 0x89, 0x4c, 0x24, 0x2c, 0x83, 0xfe, 0x1d,
+    0x0f, 0x87, 0xc3, 0x02, 0x00, 0x00, 0x83, 0xe3, 0x1f, 0x83, 0xfb, 0x1d, 0x0f, 0x87, 0xb7, 0x02,
+    0x00, 0x00, 0xc7, 0x44, 0x24, 0x08, 0xfd, 0xff, 0xff, 0xff, 0x81, 0xc6, 0x01, 0x01, 0x00, 0x00,
+    0x89, 0x74, 0x24, 0x04, 0x43, 0x89, 0x5c, 0x24, 0x10, 0x83, 0x24, 0x24, 0x0f, 0xba, 0xed, 0xff,
+    0xff, 0xff, 0xc6, 0x84, 0x14, 0x17, 0x05, 0x00, 0x00, 0x00, 0x42, 0x75, 0xf5, 0x83, 0x04, 0x24,
+    0x03, 0x8b, 0x54, 0x24, 0x20, 0x8b, 0x74, 0x24, 0x24, 0x31, 0xdb, 0x83, 0xf9, 0x02, 0x7f, 0x36,
+    0x89, 0xd7, 0x39, 0xf7, 0x74, 0x16, 0x8d, 0x57, 0x01, 0x89, 0x54, 0x24, 0x20, 0x0f, 0xb6, 0x3f,
+    0xd3, 0xe7, 0x09, 0xf8, 0x89, 0x44, 0x24, 0x28, 0x89, 0xd7, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30,
+    0x01, 0x00, 0x00, 0x00, 0x89, 0xf7, 0x8d, 0x69, 0x08, 0x89, 0x6c, 0x24, 0x2c, 0x83, 0xf9, 0xfb,
+    0x89, 0xe9, 0x7c, 0xce, 0xeb, 0x02, 0x89, 0xcd, 0x89, 0xc1, 0xc1, 0xe9, 0x03, 0x89, 0x4c, 0x24,
+    0x28, 0x83, 0xc5, 0xfd, 0x89, 0x6c, 0x24, 0x2c, 0x24, 0x07, 0x0f, 0xb6, 0xbb, 0x7e, 0x0a, 0x07,
+    0x00, 0x88, 0x84, 0x3c, 0x04, 0x05, 0x00, 0x00, 0x3b, 0x1c, 0x24, 0x8d, 0x5b, 0x01, 0x89, 0xc8,
+    0x89, 0xe9, 0x75, 0x97, 0x8d, 0x4c, 0x24, 0x3c, 0x8d, 0x94, 0x24, 0x04, 0x05, 0x00, 0x00, 0x6a,
+    0x13, 0xe8, 0xf8, 0x03, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85, 0xf2, 0x01, 0x00,
+    0x00, 0x83, 0xbc, 0x24, 0x9c, 0x02, 0x00, 0x00, 0xff, 0x0f, 0x84, 0xf2, 0x01, 0x00, 0x00, 0x8b,
+    0x44, 0x24, 0x04, 0x8b, 0x7c, 0x24, 0x10, 0x8d, 0x1c, 0x07, 0x31, 0xf6, 0x89, 0x5c, 0x24, 0x14,
+    0x8d, 0x4c, 0x24, 0x20, 0x8d, 0x54, 0x24, 0x3c, 0xe8, 0x6e, 0x03, 0x00, 0x00, 0x3b, 0x84, 0x24,
+    0x9c, 0x02, 0x00, 0x00, 0x0f, 0x8f, 0xc7, 0x01, 0x00, 0x00, 0x66, 0x83, 0xf8, 0x12, 0x74, 0x38,
+    0x0f, 0xb7, 0xc8, 0xba, 0x03, 0x00, 0x00, 0x00, 0x83, 0xf9, 0x11, 0x74, 0x24, 0x83, 0xf9, 0x10,
+    0x0f, 0x85, 0xc0, 0x00, 0x00, 0x00, 0x85, 0xf6, 0x0f, 0x84, 0xa3, 0x01, 0x00, 0x00, 0x8d, 0x84,
+    0x24, 0x04, 0x05, 0x00, 0x00, 0x0f, 0xb6, 0x44, 0x06, 0xff, 0xb9, 0x02, 0x00, 0x00, 0x00, 0xeb,
+    0x13, 0xb9, 0x03, 0x00, 0x00, 0x00, 0xeb, 0x0a, 0xba, 0x0b, 0x00, 0x00, 0x00, 0xb9, 0x07, 0x00,
+    0x00, 0x00, 0x31, 0xc0, 0x89, 0x44, 0x24, 0x1c, 0x8b, 0x5c, 0x24, 0x2c, 0x89, 0x0c, 0x24, 0x39,
+    0xcb, 0x89, 0x54, 0x24, 0x18, 0x7d, 0x46, 0x8b, 0x6c, 0x24, 0x20, 0x8b, 0x44, 0x24, 0x24, 0x8b,
+    0x7c, 0x24, 0x28, 0x8b, 0x0c, 0x24, 0x39, 0xc5, 0x74, 0x1c, 0x8d, 0x55, 0x01, 0x89, 0x54, 0x24,
+    0x20, 0x0f, 0xb6, 0x6d, 0x00, 0x89, 0xd9, 0xd3, 0xe5, 0x09, 0xef, 0x89, 0x7c, 0x24, 0x28, 0x89,
+    0xd5, 0x8b, 0x0c, 0x24, 0xeb, 0x0a, 0xc7, 0x44, 0x24, 0x30, 0x01, 0x00, 0x00, 0x00, 0x89, 0xc5,
+    0x83, 0xc3, 0x08, 0x89, 0x5c, 0x24, 0x2c, 0x39, 0xcb, 0x7c, 0xcb, 0xeb, 0x07, 0x8b, 0x7c, 0x24,
+    0x28, 0x8b, 0x0c, 0x24, 0x31, 0xed, 0x4d, 0xd3, 0xe5, 0xf7, 0xd5, 0x21, 0xfd, 0x03, 0x6c, 0x24,
+    0x18, 0xd3, 0xef, 0x89, 0x7c, 0x24, 0x28, 0x29, 0xcb, 0x89, 0x5c, 0x24, 0x2c, 0x8b, 0x5c, 0x24,
+    0x14, 0x89, 0xd8, 0x29, 0xf0, 0x39, 0xc5, 0x8b, 0x7c, 0x24, 0x10, 0x8b, 0x44, 0x24, 0x1c, 0x76,
+    0x12, 0xe9, 0xeb, 0x00, 0x00, 0x00, 0x39, 0xf3, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x84, 0xde,
+    0x00, 0x00, 0x00, 0x88, 0x84, 0x34, 0x04, 0x05, 0x00, 0x00, 0x46, 0x4d, 0x75, 0xf5, 0x39, 0xde,
+    0x0f, 0x82, 0xea, 0xfe, 0xff, 0xff, 0x80, 0xbc, 0x24, 0x04, 0x06, 0x00, 0x00, 0x00, 0x0f, 0x84,
+    0xbd, 0x00, 0x00, 0x00, 0x8d, 0x4c, 0x24, 0x3c, 0x8d, 0x94, 0x24, 0x04, 0x05, 0x00, 0x00, 0x8b,
+    0x74, 0x24, 0x04, 0x56, 0xe8, 0x95, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85,
+    0x8f, 0x00, 0x00, 0x00, 0x8d, 0x94, 0x34, 0x04, 0x05, 0x00, 0x00, 0x8d, 0xb4, 0x24, 0xa0, 0x02,
+    0x00, 0x00, 0x89, 0xf1, 0x57, 0xe8, 0x74, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f,
+    0x84, 0x59, 0xfc, 0xff, 0xff, 0xeb, 0x7e, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x54, 0x24, 0x24, 0x29,
+    0xca, 0x83, 0xfa, 0x04, 0x7c, 0x6f, 0x0f, 0xb7, 0x19, 0x0f, 0xb7, 0x51, 0x02, 0x66, 0x31, 0xda,
+    0x66, 0x83, 0xfa, 0xff, 0x75, 0x5f, 0x83, 0xc1, 0x04, 0x89, 0x4c, 0x24, 0x20, 0x85, 0xdb, 0x74,
+    0x1d, 0x8b, 0x4c, 0x24, 0x20, 0x8b, 0x54, 0x24, 0x38, 0x8d, 0x71, 0x01, 0x8d, 0x7a, 0x01, 0x4b,
+    0x89, 0x74, 0x24, 0x20, 0x8a, 0x09, 0x89, 0x7c, 0x24, 0x38, 0x88, 0x0a, 0x75, 0xe3, 0x31, 0xc0,
+    0x89, 0x44, 0x24, 0x28, 0x89, 0x44, 0x24, 0x2c, 0xf6, 0x44, 0x24, 0x0c, 0x01, 0x0f, 0x84, 0x4f,
+    0xfa, 0xff, 0xff, 0x31, 0xc0, 0x83, 0x7c, 0x24, 0x30, 0x00, 0x0f, 0x94, 0xc0, 0x8d, 0x44, 0x40,
+    0xfd, 0xeb, 0x12, 0x89, 0x44, 0x24, 0x08, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x08, 0xfd, 0xff, 0xff,
+    0xff, 0x8b, 0x44, 0x24, 0x08, 0x81, 0xc4, 0x44, 0x06, 0x00, 0x00, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3,
+    0x55, 0x53, 0x57, 0x56, 0x89, 0xce, 0x8b, 0x59, 0x0c, 0x39, 0xd3, 0x7d, 0x2f, 0x8b, 0x0e, 0x8b,
+    0x46, 0x04, 0x39, 0xc1, 0x74, 0x13, 0x8d, 0x79, 0x01, 0x89, 0x3e, 0x0f, 0xb6, 0x29, 0x89, 0xd9,
+    0xd3, 0xe5, 0x09, 0x6e, 0x08, 0x89, 0xf9, 0xeb, 0x09, 0xc7, 0x46, 0x10, 0x01, 0x00, 0x00, 0x00,
+    0x89, 0xc1, 0x83, 0xc3, 0x08, 0x89, 0x5e, 0x0c, 0x39, 0xd3, 0x7c, 0xd6, 0x8b, 0x7e, 0x08, 0x31,
+    0xc0, 0x48, 0x89, 0xd1, 0xd3, 0xe0, 0xf7, 0xd0, 0x21, 0xf8, 0xd3, 0xef, 0x89, 0x7e, 0x08, 0x29,
+    0xd3, 0x89, 0x5e, 0x0c, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x83, 0xec, 0x08,
+    0x89, 0xd5, 0x89, 0xcf, 0xe8, 0x22, 0x01, 0x00, 0x00, 0xb9, 0xfd, 0xff, 0xff, 0xff, 0x83, 0x7f,
+    0x10, 0x00, 0x0f, 0x85, 0x05, 0x01, 0x00, 0x00, 0x8b, 0x74, 0x24, 0x1c, 0x89, 0x2c, 0x24, 0x3d,
+    0xff, 0x00, 0x00, 0x00, 0x77, 0x10, 0x8b, 0x4f, 0x18, 0x8d, 0x51, 0x01, 0x89, 0x57, 0x18, 0x88,
+    0x01, 0xe9, 0xcf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x01, 0x00, 0x00, 0x0f, 0x84, 0xe6, 0x00, 0x00,
+    0x00, 0x3b, 0x85, 0x60, 0x02, 0x00, 0x00, 0x0f, 0x8f, 0xcb, 0x00, 0x00, 0x00, 0x3d, 0x1d, 0x01,
+    0x00, 0x00, 0x0f, 0x87, 0xc0, 0x00, 0x00, 0x00, 0x83, 0xbe, 0x60, 0x02, 0x00, 0x00, 0xff, 0x0f,
+    0x84, 0xb3, 0x00, 0x00, 0x00, 0x0f, 0xb7, 0x8c, 0x00, 0xe6, 0x07, 0x07, 0x00, 0x89, 0x4c, 0x24,
+    0x04, 0x05, 0xff, 0xfe, 0xff, 0xff, 0x31, 0xf6, 0xb9, 0xff, 0x00, 0x00, 0x10, 0x0f, 0xa3, 0xc1,
+    0x72, 0x10, 0x0f, 0xb6, 0x90, 0xca, 0x09, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0x10, 0xff, 0xff, 0xff,
+    0x89, 0xc6, 0x89, 0xf9, 0x8b, 0x5c, 0x24, 0x1c, 0x89, 0xda, 0xe8, 0x8c, 0x00, 0x00, 0x00, 0x83,
+    0xf8, 0x1d, 0x77, 0x74, 0x89, 0xc1, 0x3b, 0x83, 0x60, 0x02, 0x00, 0x00, 0x7f, 0x6a, 0x0f, 0xb7,
+    0xac, 0x09, 0x42, 0x0a, 0x07, 0x00, 0x31, 0xc0, 0x83, 0xf9, 0x04, 0x72, 0x0e, 0x0f, 0xb6, 0x91,
+    0x24, 0x0a, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0xd5, 0xfe, 0xff, 0xff, 0x01, 0xe8, 0x8b, 0x4f, 0x18,
+    0x89, 0xca, 0x2b, 0x57, 0x14, 0x39, 0xd0, 0x7f, 0x3f, 0x03, 0x74, 0x24, 0x04, 0x85, 0xf6, 0x7e,
+    0x18, 0xf7, 0xd8, 0x31, 0xc9, 0x8b, 0x57, 0x18, 0x8d, 0x2c, 0x0a, 0x8a, 0x1c, 0x28, 0x88, 0x1c,
+    0x0a, 0x41, 0x39, 0xce, 0x75, 0xef, 0x8b, 0x4f, 0x18, 0x01, 0xf1, 0x89, 0x4f, 0x18, 0x8b, 0x2c,
+    0x24, 0x8b, 0x74, 0x24, 0x1c, 0x89, 0xf9, 0x89, 0xea, 0xe8, 0x1d, 0x00, 0x00, 0x00, 0x83, 0x7f,
+    0x10, 0x00, 0x0f, 0x84, 0x07, 0xff, 0xff, 0xff, 0xb9, 0xfd, 0xff, 0xff, 0xff, 0x89, 0xc8, 0x83,
+    0xc4, 0x08, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x31, 0xc9, 0xeb, 0xf2, 0x55, 0x53, 0x57, 0x56, 0x50,
+    0x89, 0xd5, 0x89, 0xcb, 0x31, 0xd2, 0x42, 0xe8, 0x64, 0xfe, 0xff, 0xff, 0x89, 0xc7, 0x0f, 0xb7,
+    0x45, 0x02, 0x31, 0xf6, 0x39, 0xc7, 0x89, 0x2c, 0x24, 0x7c, 0x21, 0x83, 0xc5, 0x04, 0x31, 0xf6,
+    0x01, 0xc6, 0x29, 0xc7, 0x89, 0xd9, 0x31, 0xd2, 0x42, 0xe8, 0x42, 0xfe, 0xff, 0xff, 0x8d, 0x3c,
+    0x78, 0x0f, 0xb7, 0x45, 0x00, 0x83, 0xc5, 0x02, 0x39, 0xc7, 0x7d, 0xe4, 0x01, 0xfe, 0x8b, 0x04,
+    0x24, 0x0f, 0xb7, 0x44, 0x70, 0x20, 0x83, 0xc4, 0x04, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53,
+    0x57, 0x56, 0x83, 0xec, 0x20, 0x8b, 0x7c, 0x24, 0x34, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7,
+    0x44, 0x01, 0x20, 0x00, 0x00, 0x83, 0xc0, 0x02, 0x75, 0xf4, 0xc7, 0x81, 0x60, 0x02, 0x00, 0x00,
+    0xff, 0xff, 0xff, 0xff, 0x85, 0xff, 0x74, 0x1b, 0x31, 0xc0, 0x80, 0x3c, 0x02, 0x00, 0x74, 0x0e,
+    0x89, 0x81, 0x60, 0x02, 0x00, 0x00, 0x0f, 0xb6, 0x34, 0x02, 0x66, 0xff, 0x04, 0x71, 0x40, 0x39,
+    0xc7, 0x75, 0xe7, 0x31, 0xff, 0x31, 0xdb, 0x43, 0xbd, 0xe0, 0xff, 0xff, 0xff, 0xb8, 0xfd, 0xff,
+    0xff, 0xff, 0x0f, 0xb7, 0x74, 0x29, 0x20, 0x29, 0xf3, 0x72, 0x66, 0x01, 0xdb, 0x66, 0x89, 0x7c,
+    0x2c, 0x20, 0x01, 0xf7, 0x83, 0xc5, 0x02, 0x75, 0xe9, 0x83, 0xff, 0x02, 0x72, 0x04, 0x85, 0xdb,
+    0x75, 0x4f, 0x83, 0xff, 0x01, 0x75, 0x07, 0x66, 0x83, 0x79, 0x02, 0x01, 0x75, 0x43, 0x8b, 0x5c,
+    0x24, 0x34, 0x85, 0xdb, 0x74, 0x23, 0x31, 0xc0, 0x0f, 0xb6, 0x34, 0x02, 0x85, 0xf6, 0x74, 0x14,
+    0x0f, 0xb7, 0x1c, 0x74, 0x8d, 0x6b, 0x01, 0x66, 0x89, 0x2c, 0x74, 0x66, 0x89, 0x44, 0x59, 0x20,
+    0x8b, 0x5c, 0x24, 0x34, 0x40, 0x39, 0xc3, 0x75, 0xdf, 0x31, 0xc0, 0x83, 0xff, 0x01, 0x75, 0x11,
+    0x66, 0xc7, 0x41, 0x02, 0x02, 0x00, 0x8b, 0x91, 0x60, 0x02, 0x00, 0x00, 0x42, 0x66, 0x89, 0x51,
+    0x22, 0x83, 0xc4, 0x20, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
+    0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x00, 0x7f, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00,
+    0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x11, 0x00,
+    0x13, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x33, 0x00, 0x3b, 0x00,
+    0x43, 0x00, 0x53, 0x00, 0x63, 0x00, 0x73, 0x00, 0x83, 0x00, 0xa3, 0x00, 0xc3, 0x00, 0xe3, 0x00,
+    0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04,
+    0x05, 0x05, 0x06, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0b, 0x0b, 0x0c, 0x0c,
+    0x0d, 0x0d, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x09, 0x00,
+    0x0d, 0x00, 0x11, 0x00, 0x19, 0x00, 0x21, 0x00, 0x31, 0x00, 0x41, 0x00, 0x61, 0x00, 0x81, 0x00,
+    0xc1, 0x00, 0x01, 0x01, 0x81, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x01, 0x06, 0x01, 0x08,
+    0x01, 0x0c, 0x01, 0x10, 0x01, 0x18, 0x01, 0x20, 0x01, 0x30, 0x01, 0x40, 0x01, 0x60, 0x10, 0x11,
+    0x12, 0x00, 0x08, 0x07, 0x09, 0x06, 0x0a, 0x05, 0x0b, 0x04, 0x0c, 0x03, 0x0d, 0x02, 0x0e, 0x01,
+    0x0f, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
+    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x95, 0x7d, 0x0b, 0x5c, 0x54, 0x65,
+    0xda, 0xf8, 0x39, 0x30, 0xe0, 0x80, 0xa3, 0x67, 0x50, 0x32, 0x50, 0xd4, 0xd1, 0xb0, 0x64, 0x73,
+    0x95, 0x31, 0x6f, 0x78, 0x29, 0x6e, 0x07, 0xb0, 0x1c, 0x1d, 0x18, 0x67, 0x70, 0x2b, 0x24, 0x12,
+    0x68, 0x20, 0x15, 0x1a, 0xe6, 0x78, 0x4b, 0x0c, 0x3c, 0x4c, 0xf1, 0x72, 0x3a, 0x6d, 0xdb, 0x65,
+    0xff, 0xed, 0xb7, 0xf5, 0x6d, 0x7d, 0xd5, 0x6e, 0xbb, 0x5f, 0xad, 0xee, 0xb7, 0x9b, 0x62, 0x79,
+    0x99, 0x01, 0x3f, 0xc0, 0xcb, 0xa7, 0xa0, 0xae, 0xa2, 0xb2, 0x86, 0xe5, 0xd6, 0xa1, 0x61, 0xb7,
+    0x01, 0x5c, 0x6e, 0x16, 0xf3, 0x7f, 0x9e, 0xf7, 0xcc, 0x28, 0xd4, 0xee, 0xf7, 0xff, 0xfd, 0xfd,
+    0x75, 0x98, 0xf3, 0xde, 0x9e, 0xf7, 0x79, 0x9f, 0xdb, 0xfb, 0x3c, 0xef, 0xe5, 0xf4, 0x6d, 0xa2,
+    0xfb, 0x58, 0xed, 0x64, 0x0d, 0x73, 0x68, 0x59, 0xb9, 0x86, 0xa9, 0xee, 0xc2, 0xd7, 0xbe, 0xdf,
+    0x71, 0xec, 0x5d, 0xff, 0xe9, 0x63, 0x98, 0xaf, 0xef, 0x81, 0x3f, 0x31, 0x4c, 0xbd, 0x81, 0x61,
+    0x98, 0x97, 0xda, 0x5f, 0x72, 0xbf, 0xd4, 0xf9, 0x92, 0xf2, 0x52, 0x6b, 0xd7, 0x42, 0x3d, 0xc3,
+    0x9c, 0x0e, 0xfe, 0xb3, 0x92, 0xbf, 0xda, 0xc4, 0xee, 0x70, 0x72, 0xb1, 0xb8, 0x99, 0xef, 0xf7,
+    0x87, 0x36, 0xf3, 0x83, 0x50, 0x99, 0x91, 0xf9, 0x7e, 0x72, 0x72, 0xf8, 0xdb, 0xc3, 0xcc, 0x6e,
+    0x86, 0x39, 0x86, 0x7f, 0x0e, 0x31, 0x21, 0x0c, 0xd3, 0xf7, 0x1e, 0xc7, 0xc6, 0x94, 0x6a, 0xed,
+    0x3b, 0x01, 0xec, 0xa9, 0x7a, 0xfd, 0x28, 0x98, 0x9c, 0xc1, 0x1d, 0x3f, 0xc2, 0xcd, 0x76, 0x17,
+    0xd7, 0xbf, 0x01, 0x65, 0xa5, 0x8c, 0xf9, 0x94, 0xd1, 0x7d, 0xa7, 0xf4, 0x56, 0x29, 0x63, 0x67,
+    0x76, 0x9f, 0x5a, 0xca, 0x94, 0x3f, 0xce, 0x22, 0x74, 0xc6, 0xcf, 0x18, 0xca, 0x34, 0x2a, 0x0e,
+    0x1c, 0x3b, 0x7d, 0x18, 0x51, 0x3d, 0x03, 0x7f, 0xb4, 0xcc, 0xf7, 0x81, 0x72, 0x9f, 0xf8, 0x18,
+    0x00, 0xfb, 0xf5, 0xd7, 0x50, 0x3a, 0x06, 0xe2, 0x4d, 0xef, 0x77, 0xfe, 0x50, 0x04, 0x55, 0x97,
+    0x1e, 0xaf, 0xf9, 0x0f, 0xb1, 0x87, 0x61, 0xa4, 0xf4, 0x78, 0xed, 0xbb, 0x37, 0xd5, 0x17, 0xdd,
+    0xbb, 0x83, 0xf0, 0xc2, 0xb1, 0x61, 0xdf, 0xd2, 0x9f, 0x09, 0x9a, 0x5e, 0xfc, 0x99, 0xae, 0x83,
+    0x1f, 0x8b, 0x2d, 0xd7, 0xfa, 0xf5, 0x8a, 0x9e, 0x7f, 0xd6, 0x19, 0x1d, 0xc1, 0xd7, 0xd6, 0x1e,
+    0xda, 0x55, 0xeb, 0x92, 0x62, 0x72, 0xaf, 0xaf, 0x67, 0x49, 0xb1, 0x74, 0xef, 0x60, 0x0f, 0xf7,
+    0x5b, 0xee, 0x9d, 0x71, 0x33, 0x8b, 0xdf, 0x2a, 0xce, 0x2b, 0xce, 0x2f, 0xde, 0x58, 0xfc, 0x68,
+    0xf1, 0x4f, 0x8a, 0x1f, 0x2b, 0xde, 0x80, 0x65, 0xbe, 0x9e, 0x5b, 0xff, 0xc3, 0x0c, 0xdf, 0xa9,
+    0x7b, 0xb3, 0xa7, 0xf8, 0x29, 0xb9, 0x30, 0x7e, 0x6e, 0xb1, 0xb9, 0xd8, 0x52, 0x9c, 0x5d, 0x9c,
+    0x53, 0x6c, 0x2b, 0xce, 0x2d, 0xb6, 0x16, 0xbf, 0x39, 0x23, 0x9c, 0x7b, 0x9b, 0xfb, 0x40, 0x6d,
+    0xb1, 0xa4, 0x98, 0x63, 0xa7, 0x7c, 0x4b, 0x7f, 0x66, 0x68, 0x7a, 0xa1, 0x63, 0x1d, 0x8b, 0x1d,
+    0x9f, 0xe9, 0x89, 0x61, 0x8a, 0x81, 0x57, 0x77, 0x70, 0xca, 0xcb, 0xdf, 0xf8, 0x58, 0xe3, 0xcb,
+    0x63, 0xff, 0x31, 0xff, 0xcb, 0x3f, 0x95, 0x22, 0xc1, 0x7f, 0x6f, 0xce, 0x2f, 0xf6, 0x87, 0x4f,
+    0xea, 0x7d, 0x6b, 0xbe, 0x7f, 0xfe, 0x94, 0x5e, 0xe9, 0x2e, 0x14, 0x02, 0x72, 0xd7, 0x14, 0x20,
+    0x41, 0x73, 0x18, 0xbe, 0x4f, 0x85, 0x37, 0x69, 0x7d, 0xbc, 0xa6, 0x39, 0x6c, 0x52, 0xaf, 0xda,
+    0x00, 0xe8, 0xb5, 0xac, 0x8f, 0xd2, 0x2b, 0x99, 0xfe, 0x4c, 0xcf, 0xea, 0x0b, 0xd0, 0xeb, 0xe9,
+    0xde, 0x7f, 0x4d, 0x2f, 0x57, 0xef, 0xf7, 0x58, 0xd3, 0x14, 0xbe, 0xb6, 0x8f, 0x69, 0x0a, 0xcf,
+    0xc1, 0x3f, 0xb6, 0x3e, 0xa6, 0x38, 0x69, 0xca, 0xa4, 0x5e, 0xe7, 0x7c, 0x24, 0xc6, 0x9f, 0xd8,
+    0x44, 0xf7, 0xff, 0x4c, 0x41, 0xf2, 0x39, 0xbb, 0x8c, 0xf0, 0xf6, 0x1f, 0x39, 0x7d, 0xb5, 0xf7,
+    0xda, 0xfa, 0xea, 0x99, 0x90, 0xff, 0x99, 0xf2, 0x81, 0xc6, 0x19, 0x89, 0x2d, 0x35, 0x55, 0xd0,
+    0xf2, 0x89, 0x61, 0x4a, 0xa3, 0x65, 0x7d, 0x94, 0x46, 0xc9, 0x7d, 0x9c, 0xa1, 0xb1, 0xea, 0x14,
+    0x10, 0xa9, 0xf1, 0xeb, 0xbe, 0x5e, 0x20, 0xd2, 0xa7, 0x40, 0xa4, 0xab, 0x2f, 0x35, 0xbe, 0xf4,
+    0xc5, 0x4b, 0xde, 0x97, 0xce, 0x23, 0x91, 0x24, 0x3a, 0x2e, 0x42, 0xc7, 0x58, 0xb5, 0x0a, 0x3a,
+    0x65, 0x18, 0xe7, 0x34, 0xff, 0x62, 0xc0, 0x83, 0xf1, 0x2f, 0xce, 0xa1, 0x7f, 0x31, 0x53, 0x29,
+    0x4b, 0x64, 0x19, 0xf1, 0xb8, 0xae, 0xd1, 0xe8, 0x6e, 0xfc, 0xdf, 0x69, 0x87, 0xff, 0x54, 0xfd,
+    0x00, 0x69, 0xd2, 0xbc, 0xcb, 0xdc, 0x64, 0x98, 0x46, 0x20, 0x8f, 0xe6, 0x26, 0x25, 0x8f, 0x8e,
+    0xfe, 0x4c, 0x8f, 0xbe, 0xa9, 0x92, 0x47, 0xde, 0x1c, 0x1f, 0xfd, 0xf5, 0x4b, 0x7d, 0xff, 0x9a,
+    0x44, 0x1f, 0xf4, 0xa9, 0x22, 0x15, 0x2c, 0xba, 0xe5, 0xdf, 0xa6, 0xf1, 0x6f, 0xd3, 0xfa, 0xb7,
+    0x31, 0xfe, 0x19, 0xcc, 0x4d, 0xf1, 0x78, 0xf8, 0xf0, 0x7c, 0x1c, 0xae, 0xe6, 0x26, 0xfe, 0xcc,
+    0xd0, 0xdd, 0xbc, 0x33, 0xdc, 0xcf, 0xfb, 0xbe, 0x3f, 0xdc, 0x39, 0x7e, 0x3f, 0xc3, 0x8c, 0x12,
+    0x8c, 0x7f, 0x2d, 0x07, 0xa0, 0xd9, 0x96, 0x5c, 0x9b, 0x78, 0x63, 0x50, 0xec, 0x8e, 0x91, 0x78,
+    0x9d, 0x64, 0x8a, 0x26, 0x67, 0x3c, 0x7f, 0x9f, 0x49, 0x4e, 0x7a, 0x86, 0x67, 0x1a, 0xdb, 0x1e,
+    0xb0, 0xea, 0xd9, 0x5e, 0xb1, 0x8d, 0x21, 0x4d, 0x98, 0x37, 0x40, 0x9c, 0xf1, 0x1a, 0x78, 0x1d,
+    0x99, 0x69, 0xf4, 0x49, 0x79, 0x5a, 0x63, 0x1f, 0x7b, 0x4b, 0x6c, 0x65, 0xe4, 0xdd, 0xf1, 0xda,
+    0xdc, 0xec, 0x1c, 0xb3, 0x45, 0x59, 0x0e, 0x7a, 0x2b, 0x1e, 0x8f, 0x96, 0x41, 0xc7, 0x24, 0xb3,
+    0xc6, 0xd8, 0xfb, 0x40, 0x62, 0x28, 0x34, 0x10, 0xcf, 0x31, 0xc4, 0x27, 0x17, 0xdd, 0xdc, 0x98,
+    0xff, 0x58, 0x5e, 0x63, 0xa0, 0xbb, 0x6e, 0x9d, 0x64, 0x8d, 0xe6, 0x8e, 0x98, 0xf4, 0xf5, 0x0f,
+    0xa1, 0x48, 0xa5, 0xb7, 0x88, 0x3d, 0x33, 0x45, 0x8f, 0x81, 0x3b, 0x72, 0x45, 0xec, 0x9b, 0xe9,
+    0x3a, 0xc7, 0xa5, 0x5f, 0x86, 0x42, 0xed, 0xed, 0x7c, 0x40, 0x8c, 0x3b, 0xd2, 0x2a, 0xf6, 0xce,
+    0x74, 0xb9, 0xb9, 0xf4, 0x36, 0x72, 0x2d, 0xe1, 0xa2, 0xf1, 0x04, 0x19, 0x10, 0x47, 0x1e, 0x3a,
+    0x4a, 0x25, 0xf2, 0x85, 0x8f, 0xe1, 0xaf, 0xa0, 0x95, 0x4c, 0xda, 0xae, 0xdf, 0xa2, 0xfc, 0x56,
+    0xfa, 0x24, 0x93, 0x6f, 0xc4, 0x23, 0x55, 0x6a, 0xc9, 0x08, 0xf7, 0x51, 0x13, 0xb1, 0x76, 0x93,
+    0x86, 0xf3, 0x5f, 0xf7, 0x03, 0x7c, 0xbe, 0xf7, 0x10, 0x6d, 0xc1, 0xb7, 0x41, 0x8d, 0xaa, 0x9e,
+    0x87, 0x88, 0x09, 0xab, 0x72, 0xef, 0x0f, 0xc2, 0xdf, 0xf3, 0x5f, 0x91, 0xa1, 0x7e, 0xde, 0x07,
+    0x95, 0x9a, 0x9b, 0x79, 0x05, 0xab, 0x1d, 0x53, 0xeb, 0x9e, 0x1d, 0x38, 0x1f, 0x9a, 0xd7, 0x4d,
+    0x3e, 0x33, 0x5e, 0x25, 0x95, 0xdd, 0xdc, 0x7b, 0xbd, 0x2c, 0xf7, 0x5e, 0x13, 0x3c, 0x2d, 0xec,
+    0x78, 0x5e, 0x61, 0x4f, 0x44, 0x5c, 0x06, 0x20, 0xa4, 0x6d, 0xa0, 0x8d, 0xf4, 0x0d, 0x9c, 0x97,
+    0x2a, 0xf5, 0xec, 0x2d, 0xa9, 0x32, 0x3a, 0x6a, 0x88, 0x9c, 0xf2, 0x78, 0x67, 0x7a, 0x86, 0x66,
+    0x92, 0xb3, 0xf7, 0x54, 0x46, 0xdf, 0x63, 0xd2, 0x27, 0x9c, 0x81, 0x2e, 0x62, 0x87, 0xa5, 0xca,
+    0xee, 0x4c, 0xa1, 0x1e, 0x1b, 0xcb, 0xba, 0x47, 0x48, 0x13, 0x69, 0x21, 0xbd, 0x20, 0x6a, 0x63,
+    0x48, 0xa3, 0x95, 0xf8, 0x68, 0x80, 0x23, 0x59, 0x75, 0x40, 0x63, 0x49, 0x88, 0x71, 0x9d, 0x73,
+    0xfe, 0xc8, 0xe5, 0x77, 0x26, 0xbb, 0xdc, 0xce, 0xa7, 0xb9, 0x23, 0x6e, 0xd1, 0x37, 0x93, 0x3b,
+    0x72, 0x12, 0xe8, 0x92, 0xd0, 0x22, 0x0e, 0x1a, 0xb8, 0xbd, 0x1f, 0x00, 0x8e, 0xae, 0x7e, 0x67,
+    0x0c, 0x99, 0x41, 0x6c, 0x1a, 0x6f, 0x14, 0xd4, 0xda, 0x0e, 0xc9, 0x08, 0x32, 0xa3, 0x39, 0x43,
+    0x83, 0xf8, 0x1b, 0xaf, 0x1a, 0xcf, 0x75, 0x7d, 0x0c, 0x9c, 0x01, 0xda, 0xd5, 0xec, 0xc7, 0xca,
+    0x57, 0xb9, 0x9a, 0xcb, 0x68, 0xbd, 0xb3, 0xfc, 0xae, 0x16, 0xce, 0xf5, 0x77, 0xb5, 0xfd, 0xb8,
+    0x59, 0x6d, 0x00, 0x61, 0xad, 0x86, 0x3b, 0xdc, 0x72, 0xfe, 0x6b, 0x72, 0xde, 0x7b, 0x52, 0x5e,
+    0xe7, 0x77, 0x9d, 0xe5, 0x5c, 0xa2, 0x5a, 0x3c, 0x7e, 0xd6, 0x65, 0x32, 0x31, 0x00, 0x51, 0xf4,
+    0xb3, 0x5c, 0xcd, 0x26, 0x80, 0xc8, 0x1d, 0x3e, 0x4b, 0x2e, 0x9e, 0xff, 0x9a, 0xfb, 0xa8, 0xaf,
+    0x6b, 0x3d, 0x24, 0x49, 0xbb, 0xf1, 0xdc, 0xc0, 0x00, 0x69, 0x33, 0x9e, 0x73, 0xf5, 0x93, 0x46,
+    0xae, 0x26, 0x19, 0xf3, 0x82, 0x8d, 0xba, 0x16, 0x62, 0xca, 0x93, 0xdc, 0xcc, 0x77, 0x53, 0x18,
+    0x83, 0x06, 0xe7, 0x9a, 0xaa, 0x9e, 0x99, 0x48, 0xbb, 0x6b, 0x48, 0xfc, 0x2f, 0xc9, 0x25, 0xe2,
+    0x39, 0xff, 0x0d, 0xbe, 0x7e, 0x4e, 0x78, 0x1f, 0xbc, 0x7b, 0x23, 0xae, 0x74, 0xfd, 0x14, 0x5b,
+    0xe2, 0x5c, 0xc3, 0x1d, 0x69, 0x1e, 0x3d, 0x70, 0xf7, 0xac, 0x3b, 0x70, 0x38, 0xd7, 0x75, 0x78,
+    0x69, 0x06, 0xce, 0xe1, 0x68, 0xfd, 0xde, 0x27, 0x88, 0x87, 0xb4, 0x02, 0x26, 0x3d, 0xa4, 0xd1,
+    0xd5, 0xcf, 0xd5, 0x8c, 0x8c, 0xf8, 0xfd, 0x40, 0x99, 0xe6, 0x70, 0x8a, 0x85, 0x0f, 0x52, 0xdf,
+    0x27, 0xe2, 0x4c, 0x4e, 0xfc, 0x14, 0xb2, 0xe5, 0x2c, 0x16, 0xb0, 0x59, 0x34, 0x93, 0x5c, 0x83,
+    0xce, 0x01, 0x1d, 0x44, 0xe5, 0x1b, 0x78, 0xfd, 0x1c, 0x5f, 0x00, 0x99, 0x40, 0x8f, 0xa4, 0xcf,
+    0x78, 0x42, 0x12, 0x7c, 0x12, 0xdf, 0x4d, 0x04, 0x1f, 0xf7, 0xde, 0x25, 0x90, 0x84, 0x2b, 0xf0,
+    0x34, 0xb2, 0x24, 0xaf, 0x9b, 0x75, 0x47, 0xb4, 0x90, 0x8b, 0x64, 0x78, 0xe0, 0x1c, 0xe9, 0x19,
+    0x68, 0x93, 0xf2, 0xf4, 0xec, 0x65, 0x50, 0xa8, 0xa8, 0x93, 0xa4, 0xcd, 0xd3, 0x35, 0x13, 0x14,
+    0x8a, 0x9c, 0xbf, 0x27, 0x2f, 0xfa, 0x1e, 0xab, 0x3e, 0xe1, 0x22, 0xe9, 0x05, 0x18, 0xb1, 0x9f,
+    0x49, 0x79, 0xdd, 0x6b, 0x85, 0x83, 0xd8, 0x9a, 0x75, 0x23, 0xab, 0xfb, 0x9d, 0x61, 0x64, 0x0a,
+    0xd9, 0xa3, 0x11, 0x3b, 0x47, 0x22, 0x3c, 0xe4, 0x0a, 0x39, 0x45, 0xda, 0xc5, 0xe3, 0x5a, 0x2a,
+    0x1e, 0x94, 0x28, 0x15, 0x71, 0xfd, 0x97, 0xa1, 0x83, 0x2b, 0x40, 0xa3, 0x01, 0x24, 0x17, 0x90,
+    0x9e, 0x5c, 0x26, 0xe7, 0xc9, 0xc9, 0xae, 0xa7, 0xfc, 0x30, 0xcc, 0x26, 0x28, 0x6d, 0x3f, 0xdf,
+    0x49, 0x00, 0x37, 0xa8, 0x5c, 0xe5, 0xe9, 0xe4, 0x3e, 0x3a, 0x0f, 0xd5, 0xbe, 0xee, 0xfa, 0x2b,
+    0x8c, 0x2f, 0x28, 0x5f, 0xfa, 0xff, 0x3f, 0xd5, 0x13, 0x40, 0xf5, 0x46, 0xc4, 0x81, 0x99, 0x40,
+    0xcb, 0xf4, 0x21, 0x72, 0x39, 0x61, 0x48, 0x1c, 0x7a, 0x68, 0x5b, 0xa4, 0xc4, 0x6b, 0x49, 0x6f,
+    0x17, 0xca, 0x9e, 0xd1, 0x0d, 0x19, 0x9f, 0x50, 0x4d, 0xa9, 0x79, 0x03, 0xe9, 0x93, 0xe7, 0x23,
+    0xa7, 0x46, 0x3c, 0xa4, 0x52, 0x41, 0xfd, 0x1b, 0xe4, 0x3e, 0xf2, 0x91, 0xde, 0x80, 0xf2, 0x35,
+    0x04, 0x95, 0xaf, 0xaa, 0xef, 0x21, 0x72, 0x99, 0x7b, 0x7f, 0xe4, 0xfc, 0x57, 0x40, 0xdb, 0xfe,
+    0x46, 0x28, 0x1a, 0x68, 0xe6, 0x6f, 0x60, 0xe1, 0xa7, 0x6a, 0x8d, 0x5b, 0xa0, 0x69, 0x03, 0x6d,
+    0xa1, 0x26, 0x05, 0x74, 0x0e, 0xf4, 0xf3, 0xbd, 0x06, 0xa0, 0xb0, 0x8f, 0x95, 0x4c, 0xa0, 0x7e,
+    0x67, 0xd8, 0xf1, 0xc2, 0x0d, 0x55, 0xed, 0xba, 0xa9, 0xda, 0x35, 0xfe, 0xaf, 0x6a, 0xd7, 0x42,
+    0xd5, 0x2e, 0x45, 0xa8, 0x17, 0x8f, 0xeb, 0xc7, 0xa8, 0xd9, 0x32, 0xa9, 0x12, 0x0c, 0x9e, 0x56,
+    0x4a, 0x8e, 0xe6, 0xf6, 0x35, 0xaf, 0x62, 0xab, 0xa0, 0x5b, 0x11, 0xf1, 0x03, 0xea, 0x48, 0x82,
+    0xfe, 0x1d, 0x74, 0x91, 0x5c, 0x6e, 0x61, 0x8a, 0x9d, 0x81, 0x12, 0x72, 0x5e, 0xf1, 0xad, 0x82,
+    0x9f, 0x2b, 0xe2, 0x71, 0xcd, 0xbb, 0x58, 0x22, 0xe7, 0xdd, 0x28, 0x6e, 0x0e, 0xd5, 0x33, 0xc5,
+    0xe4, 0xd9, 0x10, 0xe2, 0xf1, 0x74, 0x69, 0x8a, 0xc9, 0x23, 0xe1, 0x62, 0x27, 0x57, 0x4c, 0xd2,
+    0x34, 0xa4, 0x42, 0x4b, 0x2c, 0x3a, 0xb9, 0xf2, 0x70, 0x69, 0x7c, 0x29, 0x93, 0xab, 0xfc, 0xda,
+    0x8c, 0x46, 0x51, 0xd7, 0x9c, 0x19, 0xcf, 0xa4, 0x02, 0x74, 0xe8, 0x91, 0x21, 0x99, 0x31, 0xc0,
+    0xd7, 0x4e, 0x1d, 0xc9, 0x8c, 0xf6, 0x78, 0xa1, 0x69, 0x7e, 0x78, 0x6e, 0x6e, 0xe9, 0x64, 0x25,
+    0x77, 0xc0, 0xef, 0x87, 0x9a, 0x47, 0xc1, 0x87, 0x62, 0xfa, 0x33, 0xb5, 0xac, 0x70, 0x0f, 0xd8,
+    0x3d, 0x63, 0x3f, 0x68, 0xf4, 0x54, 0xc9, 0x14, 0x23, 0x59, 0xb5, 0xdc, 0xbe, 0x87, 0xa3, 0xb3,
+    0xfd, 0x8b, 0x11, 0x01, 0xb3, 0x92, 0xa4, 0xc2, 0x25, 0x3e, 0xf1, 0xf8, 0x32, 0x3a, 0x30, 0x7b,
+    0x1f, 0x28, 0x61, 0x29, 0xa3, 0xdc, 0x4c, 0x08, 0x5a, 0xf5, 0xea, 0x6e, 0x06, 0x94, 0xce, 0xce,
+    0xc4, 0xc1, 0xa4, 0x76, 0x3a, 0x1d, 0xab, 0x6b, 0xde, 0x4d, 0xbf, 0x4b, 0xc3, 0xd4, 0x0b, 0xa0,
+    0x92, 0x75, 0x8c, 0x2c, 0xcf, 0x40, 0xa1, 0x39, 0xe9, 0xf9, 0x5a, 0x43, 0x5e, 0xdf, 0x01, 0xaf,
+    0xe2, 0xf5, 0x89, 0x44, 0x76, 0xc2, 0x8b, 0x6c, 0x3a, 0x4d, 0x4e, 0x8a, 0x9f, 0xeb, 0x88, 0xb5,
+    0x0a, 0xc6, 0x46, 0xe4, 0xdd, 0x98, 0x27, 0xaf, 0xa4, 0xb5, 0x69, 0xf6, 0x71, 0xcc, 0x36, 0xb5,
+    0x70, 0x07, 0xdc, 0x84, 0x7f, 0xc3, 0xe8, 0x4e, 0xfe, 0xb4, 0x0a, 0x39, 0xcf, 0x77, 0x10, 0xbe,
+    0x33, 0xc0, 0x48, 0x1c, 0xbc, 0x7c, 0xa4, 0x1f, 0xe4, 0x2e, 0x57, 0x79, 0x77, 0x9d, 0x4a, 0x02,
+    0xd7, 0x54, 0x80, 0xc0, 0x64, 0x41, 0xcd, 0xb7, 0x26, 0xc2, 0x9b, 0xe4, 0xc2, 0x4e, 0x8b, 0x89,
+    0xeb, 0xdb, 0x11, 0x4c, 0x60, 0xc7, 0xc4, 0x15, 0x89, 0x59, 0xcd, 0x2e, 0xc4, 0x6c, 0x06, 0x43,
+    0xc9, 0x92, 0xdc, 0x4f, 0xc9, 0xd2, 0xef, 0x42, 0x4d, 0x66, 0x39, 0x57, 0x13, 0xd0, 0x87, 0x3b,
+    0xe8, 0x32, 0x20, 0xc2, 0x9d, 0x1a, 0xa4, 0x7e, 0x08, 0x88, 0x42, 0xb1, 0x78, 0x84, 0xb6, 0x71,
+    0xfc, 0x88, 0x3b, 0x28, 0x2f, 0x87, 0x37, 0xee, 0xe0, 0xeb, 0xcb, 0x10, 0xe2, 0x99, 0x88, 0x8b,
+    0xce, 0x29, 0xd5, 0x43, 0x38, 0x21, 0x72, 0xae, 0x37, 0xa1, 0x6d, 0xb1, 0x38, 0xec, 0xe7, 0x5c,
+    0xaf, 0x84, 0xa0, 0xb1, 0x28, 0x2d, 0x57, 0xfe, 0x98, 0x46, 0x09, 0x03, 0xb6, 0x38, 0x4f, 0x21,
+    0x31, 0x64, 0x87, 0x9e, 0xec, 0x58, 0x44, 0x76, 0x24, 0x4a, 0xae, 0xf9, 0x88, 0xa2, 0xbc, 0x10,
+    0x61, 0x64, 0x2c, 0x23, 0x6b, 0x57, 0x36, 0x67, 0xc4, 0xf9, 0x31, 0x6b, 0x15, 0x15, 0x0d, 0x3f,
+    0x95, 0x54, 0x21, 0x9a, 0xca, 0x87, 0x72, 0x6e, 0x85, 0x0a, 0xa4, 0x99, 0x4a, 0x47, 0x33, 0x7f,
+    0x5a, 0x0f, 0x94, 0x27, 0x83, 0x1e, 0x05, 0xb8, 0xcb, 0x9f, 0x23, 0x83, 0x54, 0x34, 0xf8, 0x56,
+    0x92, 0xd7, 0x4e, 0xf2, 0x2e, 0x94, 0xc6, 0x5b, 0xe4, 0xbc, 0x37, 0x2d, 0xca, 0x8b, 0x6b, 0x55,
+    0xb2, 0xf0, 0x6e, 0x94, 0x0c, 0xb0, 0x26, 0x52, 0x38, 0xe1, 0xff, 0x24, 0xf1, 0x55, 0x84, 0xdf,
+    0x2f, 0xb9, 0x76, 0x53, 0xda, 0xf0, 0xff, 0x51, 0x3a, 0xd7, 0x22, 0xbb, 0x90, 0xf4, 0x66, 0x25,
+    0x43, 0x6d, 0x20, 0xf1, 0xed, 0xc4, 0x55, 0x8e, 0xa8, 0xf0, 0x17, 0x88, 0x6b, 0x33, 0x7d, 0x39,
+    0x2d, 0x99, 0x5a, 0x89, 0x6c, 0xa7, 0x24, 0x2c, 0x84, 0xbf, 0x14, 0x2d, 0xa3, 0xdb, 0x9c, 0xab,
+    0xdc, 0xab, 0x36, 0xb2, 0x58, 0x80, 0x94, 0xff, 0xb8, 0xa9, 0x92, 0x92, 0x7f, 0x0f, 0xe8, 0xf8,
+    0x2c, 0x8b, 0x33, 0x1c, 0x54, 0x93, 0xa8, 0x44, 0x55, 0xed, 0x7e, 0xd0, 0xcf, 0x08, 0x61, 0xeb,
+    0x84, 0x7e, 0x20, 0xcb, 0xdc, 0x40, 0x97, 0x14, 0xcf, 0xb3, 0x26, 0xb5, 0x5b, 0x0a, 0x58, 0x52,
+    0x3b, 0xe1, 0x4f, 0x13, 0x53, 0xab, 0x44, 0x3b, 0x27, 0xfc, 0x05, 0x89, 0xa2, 0x43, 0xf8, 0x76,
+    0xda, 0xad, 0x1d, 0x48, 0xcd, 0xd8, 0x94, 0x8f, 0x4c, 0x77, 0x3a, 0xde, 0x3d, 0xba, 0xe3, 0x10,
+    0x16, 0x23, 0x05, 0xa8, 0x48, 0x95, 0x4c, 0xca, 0x53, 0xaa, 0x76, 0x6b, 0xfd, 0x7e, 0x21, 0x6c,
+    0x35, 0x74, 0x7d, 0x22, 0xe9, 0x2c, 0x97, 0x79, 0x16, 0x6c, 0x23, 0x59, 0x1b, 0xed, 0x3a, 0xa1,
+    0x4e, 0x54, 0xa5, 0xac, 0xf1, 0x44, 0x76, 0xb6, 0xd9, 0xa6, 0xa4, 0x7c, 0x8b, 0x50, 0xa2, 0x61,
+    0x22, 0x73, 0x79, 0x20, 0xbf, 0x7a, 0x4f, 0xb4, 0xaa, 0xb6, 0xcf, 0x86, 0x06, 0x07, 0x01, 0x13,
+    0xcf, 0x40, 0x90, 0x27, 0x0f, 0x2e, 0x1f, 0xc3, 0x13, 0x3a, 0xa0, 0x51, 0x6c, 0x71, 0xa5, 0x22,
+    0xca, 0x2a, 0x67, 0x5c, 0xc9, 0xf0, 0x6e, 0x74, 0x13, 0x57, 0x16, 0x25, 0x60, 0x3a, 0xfc, 0x2d,
+    0x8d, 0x37, 0xcb, 0xfc, 0x9b, 0x66, 0xe5, 0xab, 0x35, 0x74, 0x14, 0xae, 0x7e, 0x60, 0x13, 0x0b,
+    0xa2, 0x02, 0xe6, 0x44, 0x62, 0x29, 0x9b, 0x8e, 0x23, 0x9b, 0xf8, 0x16, 0xe4, 0x91, 0x73, 0x82,
+    0xff, 0x99, 0x68, 0x5b, 0xae, 0xf2, 0xbe, 0x5a, 0x19, 0x1b, 0x9a, 0x61, 0xd4, 0xcf, 0xf7, 0xdd,
+    0x1e, 0xb5, 0xb0, 0xd9, 0x78, 0x4e, 0xaa, 0xec, 0x90, 0xf8, 0x4e, 0xc9, 0x74, 0x03, 0x86, 0xe7,
+    0x75, 0xc0, 0xb8, 0xd3, 0xaa, 0x6f, 0xa1, 0x82, 0x72, 0xae, 0xb3, 0x30, 0xb0, 0xae, 0xdf, 0x81,
+    0x44, 0x7a, 0xae, 0x6b, 0xb8, 0x03, 0xce, 0xa8, 0x50, 0xcf, 0x97, 0xda, 0xea, 0x11, 0xe6, 0xed,
+    0xa0, 0x0b, 0x52, 0xb3, 0xfe, 0x3b, 0xc0, 0xeb, 0xe2, 0x7f, 0xb1, 0xe0, 0xca, 0x14, 0xe3, 0xf0,
+    0x53, 0xbf, 0x43, 0x01, 0x4f, 0x37, 0x46, 0x7e, 0x00, 0xd3, 0xdf, 0xe2, 0xef, 0x50, 0x13, 0x92,
+    0x3d, 0x0a, 0x88, 0x4f, 0x77, 0xd7, 0x7d, 0x90, 0x82, 0x0e, 0x80, 0x38, 0xe0, 0x69, 0x32, 0xdc,
+    0x6b, 0x0d, 0xb7, 0xbb, 0xad, 0xb5, 0xe9, 0xaa, 0x2a, 0xbb, 0x19, 0x61, 0x66, 0xcd, 0x39, 0x61,
+    0xda, 0x0a, 0xd3, 0x1b, 0xc2, 0xa4, 0xd2, 0x72, 0xbf, 0xe0, 0x53, 0xec, 0xc9, 0x88, 0xb5, 0xb6,
+    0x6b, 0x0b, 0x0c, 0x3b, 0x85, 0x98, 0x6e, 0xd4, 0x9c, 0x23, 0x4d, 0xe0, 0x04, 0xc1, 0x48, 0x49,
+    0x8a, 0x56, 0xa4, 0xe2, 0xce, 0x08, 0x31, 0xaa, 0x21, 0xb4, 0x76, 0x2b, 0x5f, 0x2e, 0x43, 0x23,
+    0xd9, 0x1d, 0x34, 0x85, 0xdc, 0x81, 0x86, 0x2a, 0x70, 0x89, 0x0e, 0x9c, 0x64, 0xcf, 0x10, 0xa1,
+    0x93, 0x6d, 0x26, 0x95, 0x1d, 0xc6, 0x73, 0xc6, 0x13, 0x29, 0x46, 0x77, 0x16, 0xe8, 0x14, 0xdf,
+    0x2d, 0xad, 0x7c, 0xfd, 0xe5, 0x35, 0x2c, 0x18, 0x3e, 0x5f, 0xc0, 0xd4, 0x22, 0x1c, 0xee, 0x85,
+    0x5b, 0x68, 0x30, 0x84, 0x17, 0x89, 0xb5, 0x96, 0x98, 0x6a, 0x8a, 0x83, 0xdc, 0x29, 0x26, 0x47,
+    0x1e, 0x84, 0x17, 0x2a, 0x18, 0x01, 0xbb, 0x2a, 0xa7, 0x52, 0x45, 0xbf, 0xcd, 0xa5, 0x7e, 0xf2,
+    0x31, 0xe5, 0xd2, 0xc7, 0xc8, 0x25, 0xce, 0x48, 0xf8, 0x97, 0x07, 0xae, 0x10, 0xeb, 0x6b, 0xd4,
+    0xde, 0xa0, 0xb4, 0x2e, 0x79, 0x64, 0xb4, 0x56, 0x61, 0xb7, 0xcc, 0xf7, 0xd9, 0x45, 0x45, 0xb2,
+    0xab, 0xe7, 0x0e, 0x73, 0x72, 0xd8, 0x23, 0x08, 0x4d, 0x7c, 0x1d, 0x21, 0x33, 0xec, 0x88, 0x38,
+    0x92, 0xec, 0xf8, 0x3d, 0x67, 0x94, 0xf2, 0x5e, 0x1e, 0xb8, 0x2a, 0x99, 0x5e, 0x13, 0x2f, 0x33,
+    0x6c, 0x63, 0x54, 0x9b, 0x24, 0xbc, 0x98, 0xd4, 0x47, 0x5a, 0x60, 0xec, 0xb1, 0xad, 0x5c, 0x6a,
+    0x1b, 0xd0, 0x82, 0x4b, 0xed, 0x93, 0x4c, 0x35, 0x5c, 0xea, 0x59, 0xc9, 0x5a, 0x9b, 0x2a, 0x0e,
+    0x47, 0x00, 0x4f, 0x39, 0xd7, 0x78, 0x80, 0xe1, 0x9d, 0xc9, 0x1d, 0xe0, 0x3d, 0x40, 0x41, 0xbf,
+    0xd1, 0x6c, 0x9f, 0xb4, 0x96, 0x65, 0x94, 0xd5, 0x89, 0x14, 0xad, 0x43, 0x5a, 0x9c, 0x62, 0xf2,
+    0x14, 0x2a, 0xe1, 0x1a, 0x30, 0xde, 0xee, 0x74, 0x9b, 0x59, 0xe9, 0xbd, 0x97, 0x72, 0xa0, 0xc6,
+    0xed, 0xd4, 0x34, 0x65, 0x24, 0xb3, 0xef, 0x64, 0x81, 0x91, 0x16, 0x07, 0x93, 0xb9, 0x1a, 0x82,
+    0xb5, 0x27, 0xa0, 0xcd, 0x96, 0xcd, 0x2c, 0xb9, 0x0b, 0xf3, 0xc9, 0xa2, 0x6a, 0xb0, 0x5a, 0xdf,
+    0x3d, 0x18, 0x10, 0xee, 0x52, 0x06, 0xda, 0x2f, 0x4e, 0x50, 0xe5, 0x2e, 0x2b, 0x54, 0x1c, 0x0a,
+    0xe1, 0xf6, 0xbe, 0xf7, 0x1d, 0xd2, 0x29, 0x43, 0x1c, 0xf4, 0x3b, 0x67, 0x07, 0x61, 0x39, 0x53,
+    0xbe, 0x0f, 0x67, 0x65, 0x35, 0x10, 0xc7, 0x9f, 0x1c, 0x07, 0xd0, 0xf6, 0x05, 0xa1, 0xd9, 0x40,
+    0x1e, 0xcc, 0xca, 0x97, 0x73, 0xd5, 0xa9, 0xc5, 0x23, 0x7a, 0x42, 0x33, 0x00, 0x62, 0xc5, 0xc7,
+    0x5d, 0xd9, 0x00, 0xd2, 0xde, 0xba, 0x0e, 0x06, 0x52, 0xb5, 0x80, 0xd6, 0xad, 0x3e, 0x8e, 0xa2,
+    0x3b, 0x66, 0xe2, 0x79, 0xf6, 0x9e, 0xe0, 0xc4, 0xa3, 0x84, 0x83, 0x91, 0x87, 0xd1, 0xcc, 0x07,
+    0xef, 0x41, 0xf9, 0x0d, 0xbc, 0x2b, 0x7f, 0x06, 0x03, 0xa9, 0xac, 0x59, 0x0d, 0x7f, 0x0a, 0xc0,
+    0x14, 0x0f, 0x34, 0x01, 0x38, 0xbf, 0x10, 0x0b, 0x44, 0xd2, 0x9a, 0x95, 0x50, 0x15, 0xa2, 0x37,
+    0xd6, 0xfe, 0x96, 0x89, 0x65, 0xba, 0x5e, 0x43, 0xb7, 0x6e, 0x84, 0x15, 0xa2, 0x94, 0xe5, 0xa0,
+    0x6f, 0xca, 0x6c, 0xf8, 0xf3, 0xee, 0x9b, 0x20, 0x0f, 0xde, 0xb0, 0x77, 0xde, 0x54, 0x27, 0xe5,
+    0x71, 0x76, 0x2f, 0x60, 0xe2, 0xdd, 0x5a, 0xb5, 0x63, 0x02, 0x23, 0xac, 0x22, 0x4d, 0x52, 0x72,
+    0x0c, 0xe4, 0x0e, 0x88, 0x7b, 0xe2, 0xfc, 0xbb, 0x17, 0x1b, 0xfd, 0xeb, 0x8c, 0x57, 0xb9, 0x03,
+    0x19, 0x3a, 0x0b, 0x04, 0x4f, 0x66, 0xa5, 0x78, 0xbe, 0xaa, 0xbf, 0x6e, 0x27, 0x8c, 0x47, 0x01,
+    0x04, 0x00, 0x2f, 0x41, 0x9f, 0x99, 0xb6, 0x62, 0x4f, 0xdc, 0x9e, 0xcb, 0xde, 0x71, 0x90, 0xb7,
+    0x98, 0x86, 0x83, 0x6f, 0x53, 0x29, 0x9f, 0x60, 0x57, 0xb2, 0x61, 0x8c, 0x6f, 0xd2, 0x46, 0x9a,
+    0xaa, 0x55, 0x6f, 0xd0, 0x5c, 0x9d, 0x7d, 0xc1, 0x3a, 0x3a, 0xc2, 0x5f, 0xcc, 0x06, 0x84, 0xaa,
+    0x3a, 0xa0, 0xc6, 0xd5, 0x03, 0xc1, 0xb1, 0x92, 0xb3, 0x75, 0xd3, 0xdf, 0x89, 0xd6, 0x30, 0x4d,
+    0x61, 0xf8, 0x97, 0xb5, 0xbf, 0x92, 0xc3, 0x32, 0xd9, 0xca, 0x9f, 0xef, 0xa6, 0x1c, 0x25, 0x4d,
+    0x80, 0x58, 0xb2, 0xbd, 0x0f, 0xf2, 0x72, 0x15, 0xcf, 0xa8, 0xbc, 0x79, 0xf6, 0xcc, 0x75, 0x98,
+    0xf7, 0xd1, 0xa8, 0xbc, 0x18, 0x7b, 0x9e, 0x05, 0xf3, 0x7e, 0x71, 0x27, 0x8f, 0xab, 0xa9, 0x01,
+    0xec, 0x6a, 0x03, 0x1d, 0x20, 0x8e, 0xac, 0x94, 0x11, 0x27, 0xad, 0x35, 0x7c, 0x52, 0x73, 0x4f,
+    0x28, 0x63, 0x6c, 0x88, 0x38, 0x29, 0x64, 0xca, 0x77, 0xed, 0xdf, 0xcc, 0x30, 0x09, 0xad, 0x20,
+    0xa5, 0xc7, 0xf6, 0x3f, 0x0e, 0x9d, 0x9b, 0x4b, 0x99, 0x1c, 0xe0, 0xc1, 0x9c, 0x18, 0x04, 0x13,
+    0x63, 0x53, 0x2e, 0x51, 0x78, 0x9a, 0xd2, 0x68, 0xbb, 0xd3, 0x1b, 0xca, 0xd8, 0x77, 0xd8, 0x00,
+    0xff, 0x35, 0x59, 0x41, 0xb2, 0x4c, 0xb3, 0xef, 0x82, 0x5e, 0xbd, 0x61, 0xf6, 0x3c, 0xe4, 0xee,
+    0x7f, 0xfc, 0x98, 0xd6, 0x35, 0xba, 0x29, 0x67, 0x9b, 0xc2, 0x90, 0x00, 0xec, 0x7e, 0xd6, 0xeb,
+    0x53, 0x71, 0xf0, 0x7e, 0x79, 0x27, 0x80, 0xcb, 0xd3, 0xda, 0x0b, 0xc1, 0x64, 0x29, 0x8e, 0x95,
+    0xc1, 0x09, 0x34, 0x46, 0x74, 0x6b, 0x8c, 0xfe, 0x5c, 0xbb, 0x19, 0x24, 0x23, 0xd7, 0xce, 0x00,
+    0xe9, 0x20, 0x28, 0x5c, 0x38, 0x9b, 0xa2, 0xc1, 0x1d, 0xcc, 0x58, 0xb9, 0xca, 0xf2, 0x0d, 0x50,
+    0x33, 0x53, 0xdc, 0x63, 0x66, 0x9c, 0x3f, 0x96, 0x32, 0x0a, 0x7f, 0x1b, 0x05, 0xa6, 0xc0, 0xa9,
+    0x37, 0xdb, 0xed, 0x48, 0xf4, 0xfb, 0x68, 0xd7, 0x5a, 0xef, 0x7d, 0xdc, 0x27, 0x9d, 0xfa, 0x8a,
+    0x09, 0xf6, 0x1f, 0xa1, 0xda, 0x4c, 0x52, 0xf1, 0x29, 0x16, 0xf7, 0x3c, 0x18, 0x2a, 0xcc, 0xb1,
+    0xdf, 0x05, 0xa0, 0x95, 0x91, 0x79, 0x34, 0x8f, 0xf6, 0x6e, 0x53, 0x7e, 0xb7, 0x42, 0xa5, 0xd6,
+    0x60, 0x30, 0x8e, 0xaa, 0x5b, 0x1b, 0x57, 0x8f, 0x7d, 0x1b, 0xfd, 0xc6, 0x73, 0xdc, 0xfb, 0x0d,
+    0xe7, 0x3b, 0xa9, 0xef, 0xd9, 0x4a, 0x7e, 0xfe, 0x78, 0x08, 0xaa, 0x9e, 0x0e, 0x4c, 0x1b, 0x79,
+    0x7e, 0x03, 0xbc, 0xcb, 0x2f, 0x6d, 0xc0, 0x98, 0xa4, 0xb7, 0x94, 0x29, 0x0d, 0x51, 0xe6, 0xd3,
+    0xd8, 0x55, 0x6b, 0x67, 0xf4, 0x30, 0xa4, 0x5f, 0x05, 0xa6, 0x73, 0xde, 0x67, 0x51, 0x06, 0xa7,
+    0xd3, 0xf7, 0x2c, 0x97, 0x7b, 0x4f, 0x14, 0x77, 0x40, 0x17, 0x9a, 0x25, 0x0e, 0x2d, 0x70, 0x6a,
+    0x5c, 0x27, 0x84, 0xbf, 0x27, 0x93, 0xe6, 0x5c, 0x0b, 0x1a, 0xd0, 0xdf, 0x67, 0xa8, 0xea, 0x67,
+    0x52, 0x48, 0xaf, 0x45, 0x41, 0xcf, 0x02, 0x1a, 0xd4, 0x00, 0xf3, 0xfe, 0x44, 0xe3, 0x85, 0xea,
+    0xc6, 0x76, 0xec, 0xe7, 0x32, 0xf6, 0xe4, 0x17, 0x14, 0x05, 0x57, 0x15, 0xa0, 0x2b, 0xee, 0x60,
+    0xe8, 0x1c, 0xc6, 0xc7, 0x30, 0xab, 0xd0, 0xce, 0x0b, 0x53, 0xb0, 0x3c, 0x17, 0xa1, 0xfd, 0x59,
+    0x13, 0x30, 0x06, 0xc2, 0x5f, 0xbc, 0xdb, 0xa8, 0xb5, 0x14, 0x9e, 0xa4, 0x68, 0x61, 0xe1, 0x61,
+    0x3a, 0xa9, 0x69, 0xa5, 0xe7, 0x3b, 0x10, 0xe4, 0xf3, 0x34, 0xec, 0xea, 0x21, 0x57, 0x94, 0xfc,
+    0x30, 0x4c, 0x3e, 0x01, 0x5d, 0x97, 0x26, 0x2a, 0x9d, 0xc1, 0x99, 0x8f, 0x94, 0xeb, 0x9b, 0x93,
+    0xa3, 0x93, 0xc6, 0xb3, 0x4c, 0x73, 0x72, 0xcc, 0xd3, 0xf0, 0x23, 0xa9, 0x2d, 0x32, 0xe3, 0x3c,
+    0x83, 0x33, 0x49, 0xa6, 0x01, 0xbd, 0xf8, 0x4c, 0x4d, 0x97, 0x1b, 0x1c, 0x2b, 0xfb, 0x2c, 0xe4,
+    0xc1, 0xbb, 0xf7, 0xab, 0xa4, 0x0d, 0x76, 0x67, 0x52, 0xbb, 0x0b, 0x90, 0xfa, 0x21, 0x35, 0x65,
+    0xf4, 0x77, 0xbd, 0x34, 0x2a, 0x9e, 0x78, 0x02, 0x68, 0x2a, 0x09, 0x5a, 0xe2, 0x8b, 0x68, 0xe7,
+    0x6a, 0x64, 0x00, 0x2f, 0xa5, 0x9a, 0x81, 0x72, 0x2e, 0x37, 0x31, 0x5d, 0x70, 0x26, 0xf4, 0xa7,
+    0x16, 0x56, 0x39, 0xef, 0xe1, 0x0e, 0xee, 0xc5, 0x59, 0x1f, 0xe6, 0x2e, 0xe7, 0xdd, 0x10, 0x77,
+    0x16, 0x43, 0xe0, 0xf9, 0x9a, 0xa7, 0x58, 0x1c, 0x9c, 0xc5, 0xbd, 0xea, 0x36, 0xb4, 0xc0, 0x2c,
+    0xe1, 0x1d, 0x17, 0x0c, 0xe8, 0x9a, 0xfc, 0xe2, 0x79, 0x3f, 0xb1, 0x2a, 0xd2, 0xae, 0x79, 0xe8,
+    0xbf, 0x58, 0x6c, 0x4a, 0xcb, 0x37, 0x68, 0xa9, 0xf5, 0xc4, 0xda, 0x49, 0xda, 0xb8, 0x7d, 0x67,
+    0x09, 0x7f, 0x63, 0xe0, 0x2b, 0xf6, 0x64, 0x42, 0x13, 0x11, 0x3a, 0x62, 0xcf, 0x83, 0x4b, 0x25,
+    0xf1, 0x4a, 0x5d, 0x56, 0xdc, 0x31, 0xca, 0xf3, 0x7e, 0x1a, 0x55, 0xd4, 0xe3, 0xd4, 0x37, 0x9a,
+    0xfb, 0x03, 0x81, 0xc8, 0x63, 0x08, 0x04, 0x81, 0xe3, 0x3d, 0xc6, 0xab, 0x87, 0xfc, 0xe3, 0x18,
+    0x26, 0x69, 0x28, 0xb6, 0x8f, 0x4b, 0xbd, 0xc8, 0xa5, 0x36, 0x8b, 0x95, 0x3e, 0xc6, 0xa9, 0x93,
+    0x4c, 0x0a, 0x77, 0xf0, 0x27, 0x8f, 0x43, 0x04, 0x83, 0xe8, 0xf8, 0xd0, 0xa7, 0xc5, 0x09, 0xd3,
+    0x69, 0x93, 0xf2, 0x70, 0xfe, 0xe4, 0xde, 0x3b, 0x15, 0xee, 0xb9, 0x1e, 0xce, 0xb6, 0x44, 0x5d,
+    0x91, 0x4d, 0xaf, 0x81, 0xd4, 0x24, 0xe7, 0x98, 0xb3, 0xc1, 0x96, 0xfb, 0x1f, 0x50, 0x4c, 0x33,
+    0xa9, 0x90, 0xcb, 0xfc, 0x6b, 0x52, 0x32, 0xb8, 0xe9, 0xbe, 0x81, 0xaf, 0x88, 0x87, 0xed, 0x85,
+    0x24, 0xb7, 0x6f, 0x47, 0x3c, 0x7b, 0x49, 0x12, 0xda, 0x25, 0xab, 0x8f, 0xdb, 0xd7, 0x2b, 0xf1,
+    0x1d, 0x03, 0x9f, 0xb3, 0x17, 0x01, 0xc4, 0x88, 0x77, 0xdd, 0x6d, 0xa8, 0x61, 0x9e, 0xeb, 0x61,
+    0x77, 0xa0, 0x1a, 0x6e, 0x43, 0x1d, 0x98, 0x71, 0x1b, 0x6a, 0x16, 0x40, 0xed, 0x21, 0x83, 0x03,
+    0xd7, 0x81, 0xa9, 0x6d, 0x6c, 0xcf, 0x0f, 0x00, 0x0e, 0x46, 0x9d, 0x29, 0x65, 0xec, 0x88, 0xb1,
+    0xcd, 0xec, 0x17, 0x2e, 0x40, 0xe3, 0x4f, 0xd4, 0xc6, 0xe2, 0xf1, 0x27, 0x46, 0x85, 0x3d, 0xd5,
+    0xdd, 0x6f, 0x33, 0x34, 0x08, 0xa9, 0x5a, 0xb6, 0x80, 0x73, 0xe5, 0x03, 0x57, 0x21, 0xec, 0x3e,
+    0x93, 0x4c, 0x78, 0x45, 0xde, 0x8b, 0xca, 0x20, 0xcb, 0xeb, 0xd1, 0x79, 0x44, 0x38, 0xe6, 0x6c,
+    0xe5, 0x22, 0x75, 0x8d, 0x75, 0xe0, 0xdf, 0x83, 0x8f, 0x47, 0x1a, 0x9b, 0xf9, 0x0e, 0x1a, 0x00,
+    0x57, 0x82, 0x9b, 0xc7, 0xe2, 0xfa, 0xad, 0xfd, 0x1d, 0xb0, 0x0e, 0xca, 0x7f, 0xab, 0xb5, 0x64,
+    0x09, 0xdd, 0x3e, 0xf0, 0x72, 0x78, 0x85, 0x3b, 0xa0, 0xd1, 0x8b, 0x83, 0x0b, 0x9c, 0x06, 0x60,
+    0x77, 0x5c, 0xed, 0x5e, 0xac, 0x95, 0x5a, 0x3d, 0x8c, 0xc5, 0xc2, 0x75, 0x18, 0x59, 0x9d, 0x66,
+    0x32, 0x7b, 0x05, 0xc2, 0x3a, 0x2f, 0x12, 0x9c, 0x6d, 0x63, 0xcf, 0x63, 0xc8, 0x78, 0xd2, 0x78,
+    0x02, 0x34, 0xe6, 0x75, 0x8f, 0x94, 0xd7, 0xc1, 0x1d, 0xb8, 0x5a, 0xcf, 0xd2, 0xd8, 0x14, 0xbc,
+    0xe5, 0x0e, 0x29, 0xcf, 0xc7, 0x9e, 0x62, 0x4f, 0x82, 0x44, 0x90, 0x21, 0xf9, 0x75, 0x44, 0x4f,
+    0x71, 0x20, 0xde, 0x7c, 0xa7, 0xf1, 0x1c, 0x34, 0x5c, 0xf1, 0xfa, 0x06, 0xf4, 0x03, 0x5e, 0x81,
+    0x40, 0xa4, 0x9b, 0x13, 0x8b, 0x55, 0x7d, 0x38, 0xef, 0x17, 0x3a, 0x73, 0x65, 0x17, 0x56, 0x36,
+    0x83, 0x10, 0x95, 0xc2, 0x3c, 0x50, 0x15, 0xa6, 0x9a, 0xa1, 0x03, 0x19, 0xe1, 0xc9, 0x66, 0xe5,
+    0xe8, 0xd2, 0x80, 0x86, 0xa8, 0x69, 0xea, 0x28, 0x7f, 0x97, 0xaa, 0xce, 0x7a, 0x79, 0x37, 0x64,
+    0x8b, 0x16, 0xf3, 0xc9, 0x10, 0x80, 0xf1, 0x0b, 0xed, 0xf2, 0x5b, 0x08, 0xc8, 0x62, 0xbc, 0x6a,
+    0x01, 0x73, 0xb6, 0x4c, 0x85, 0x53, 0xb5, 0x0a, 0xcd, 0x21, 0x53, 0x3f, 0xc9, 0xc0, 0x32, 0x87,
+    0x3a, 0x66, 0xb2, 0x80, 0xac, 0x27, 0x97, 0xd2, 0xc3, 0xdf, 0x8a, 0xd6, 0xa8, 0x51, 0x05, 0x9c,
+    0xab, 0x8c, 0x5f, 0x8a, 0xaa, 0x0f, 0x59, 0xae, 0xab, 0xce, 0x29, 0x60, 0x04, 0x35, 0x92, 0xf5,
+    0x06, 0xdb, 0x60, 0x74, 0x4b, 0x95, 0xed, 0x30, 0xb2, 0x2e, 0x8c, 0x98, 0xfb, 0xf9, 0x0e, 0x16,
+    0xac, 0x29, 0xe7, 0xc2, 0x70, 0x1a, 0x42, 0x19, 0x95, 0x09, 0x50, 0x81, 0x0c, 0x83, 0xc1, 0x58,
+    0xa2, 0xbc, 0x4a, 0xdd, 0x5e, 0xb0, 0x17, 0x74, 0x40, 0xa3, 0x6c, 0xc6, 0x54, 0xb5, 0x26, 0x19,
+    0x06, 0x8e, 0x5b, 0x94, 0xb7, 0x98, 0xa0, 0xdd, 0xf8, 0xb3, 0x77, 0xc9, 0x2a, 0x06, 0x9c, 0x3a,
+    0x61, 0xb6, 0xea, 0x98, 0x7b, 0x3a, 0x43, 0x40, 0x28, 0x3a, 0x95, 0xe7, 0x96, 0xd0, 0x1a, 0xf5,
+    0x21, 0xd4, 0x07, 0xf1, 0x41, 0x28, 0xe2, 0xbd, 0xcb, 0x7e, 0x10, 0xe6, 0x5c, 0xe5, 0x3f, 0xef,
+    0xa3, 0xf4, 0xa8, 0x57, 0xbd, 0x13, 0x1f, 0xe0, 0x08, 0xb1, 0x36, 0xf8, 0xdf, 0xae, 0xb7, 0x40,
+    0xd1, 0xc5, 0xc1, 0x10, 0xae, 0x26, 0x82, 0xbe, 0x68, 0x85, 0x79, 0x01, 0x3d, 0x1d, 0x0b, 0x79,
+    0x8e, 0x0a, 0x59, 0xe2, 0xbb, 0xe3, 0xd9, 0xea, 0xe3, 0x28, 0x63, 0x54, 0xe8, 0xbc, 0x3d, 0xf6,
+    0x7f, 0x87, 0xc9, 0xa5, 0x94, 0x55, 0xf2, 0xa7, 0xdd, 0x5e, 0x6a, 0xec, 0x8e, 0x26, 0x56, 0x9f,
+    0xb8, 0x53, 0xb3, 0x9c, 0x7b, 0x01, 0xd7, 0x25, 0xc9, 0x59, 0xb0, 0x1f, 0x72, 0xca, 0x5c, 0x90,
+    0xc1, 0xa6, 0x94, 0x4d, 0x4c, 0x3d, 0x9a, 0x1e, 0xb3, 0x32, 0x7d, 0x49, 0x60, 0x52, 0x91, 0xd3,
+    0xc0, 0xdb, 0xee, 0x36, 0x2b, 0xba, 0x40, 0x46, 0xa3, 0x5f, 0xd0, 0xf9, 0x05, 0x60, 0x68, 0x52,
+    0x8a, 0x1a, 0x5e, 0x80, 0x45, 0xb5, 0x29, 0x1f, 0xc6, 0xd2, 0x84, 0x5f, 0xe8, 0xb6, 0x28, 0xbf,
+    0x58, 0x4c, 0x71, 0x91, 0x4d, 0x9d, 0xa0, 0x22, 0x36, 0x25, 0x14, 0xbd, 0x63, 0x6c, 0xa8, 0x42,
+    0xb6, 0x29, 0x3b, 0xd5, 0xf2, 0x9a, 0xab, 0xce, 0x7b, 0xc8, 0x10, 0x54, 0x41, 0xa3, 0xdc, 0xa9,
+    0xcc, 0xbf, 0x45, 0x89, 0xec, 0xe5, 0xec, 0x47, 0x00, 0x63, 0xe5, 0xdf, 0xee, 0x55, 0xe7, 0xc1,
+    0xab, 0xb8, 0x00, 0x13, 0x3d, 0x66, 0xe1, 0x60, 0x91, 0xb1, 0xbf, 0x3f, 0x75, 0x36, 0xb0, 0xeb,
+    0x22, 0x0a, 0xdb, 0x25, 0xa9, 0x7a, 0x03, 0x15, 0xc7, 0x6e, 0x72, 0x46, 0xfa, 0x05, 0x9d, 0x62,
+    0x52, 0xe3, 0x90, 0x2c, 0xca, 0xa3, 0x8b, 0x83, 0x93, 0x88, 0xf8, 0x5c, 0x1c, 0xf8, 0xf0, 0xef,
+    0xa1, 0x69, 0x04, 0x21, 0x7d, 0xaf, 0x71, 0x86, 0x9c, 0x06, 0xc1, 0x52, 0x8b, 0x78, 0x8b, 0x05,
+    0xe8, 0xad, 0xd0, 0xf6, 0x38, 0xc4, 0x1e, 0x02, 0xf5, 0x09, 0x2b, 0x3b, 0x48, 0x5e, 0xa7, 0x38,
+    0x38, 0x7e, 0xbb, 0x9e, 0x78, 0xa4, 0xf4, 0x17, 0xe6, 0x12, 0xcd, 0x4b, 0xa4, 0xa5, 0x2b, 0x0f,
+    0x55, 0x33, 0xeb, 0x26, 0x69, 0x20, 0x2d, 0x09, 0xed, 0xc4, 0x7a, 0x43, 0x8e, 0xfe, 0x39, 0xb1,
+    0xb6, 0x57, 0xac, 0x92, 0x32, 0x37, 0xa0, 0x2f, 0xf9, 0x47, 0xec, 0x16, 0xad, 0xce, 0xbb, 0x1b,
+    0x68, 0x0c, 0x11, 0xc2, 0x7a, 0xa2, 0x70, 0x7d, 0x09, 0x8c, 0x89, 0x26, 0x27, 0x1b, 0x24, 0x18,
+    0xcc, 0xc1, 0x7f, 0x4e, 0xa5, 0x72, 0x8b, 0x36, 0x87, 0xbf, 0xd1, 0xa5, 0x63, 0x51, 0x55, 0x07,
+    0xfa, 0x88, 0x27, 0xa9, 0xbd, 0xe2, 0x47, 0x52, 0xe6, 0xe3, 0x52, 0xa5, 0x22, 0x1d, 0x0c, 0x82,
+    0xf9, 0xcd, 0x28, 0x30, 0x2a, 0x0c, 0x99, 0xbf, 0x60, 0xf6, 0x2f, 0xf5, 0x0a, 0x12, 0x60, 0x89,
+    0x51, 0x86, 0x94, 0xf9, 0x84, 0x74, 0x54, 0xad, 0x3e, 0x38, 0xf0, 0x6b, 0x4a, 0x00, 0xeb, 0x69,
+    0x0c, 0x70, 0x5b, 0x28, 0xd4, 0xf3, 0x40, 0x80, 0x50, 0xbe, 0x55, 0xb2, 0x9e, 0x8e, 0x1a, 0x06,
+    0x87, 0xe0, 0x10, 0xae, 0x00, 0x66, 0xe7, 0x40, 0x40, 0xe5, 0x06, 0x69, 0xe9, 0x56, 0x66, 0x06,
+    0x70, 0xe1, 0xdd, 0xd2, 0x4b, 0x2a, 0x90, 0x16, 0x15, 0x88, 0xe7, 0x8b, 0x10, 0x70, 0xb4, 0x4f,
+    0xe6, 0xd6, 0x63, 0x03, 0x73, 0x8e, 0x85, 0x76, 0xbb, 0x44, 0xf9, 0x86, 0x72, 0x37, 0xc6, 0xd8,
+    0x2f, 0xe5, 0x81, 0x5c, 0x1e, 0x07, 0x9b, 0xb7, 0x62, 0x43, 0x5c, 0x45, 0x2e, 0x84, 0xbf, 0x80,
+    0x36, 0x28, 0x8c, 0xf4, 0xd3, 0x20, 0x14, 0x8a, 0x39, 0xeb, 0x8b, 0x3a, 0x29, 0x99, 0xda, 0xd9,
+    0x1e, 0x8a, 0xbb, 0x39, 0xdb, 0xbf, 0x54, 0xf9, 0x28, 0x16, 0x23, 0xb7, 0x6e, 0xb4, 0x87, 0x4d,
+    0x9a, 0xb4, 0xd5, 0xc2, 0x61, 0x20, 0x42, 0x28, 0xdf, 0x82, 0xa1, 0x11, 0x84, 0xdd, 0x79, 0x9d,
+    0xc9, 0x2b, 0x32, 0xe3, 0xb8, 0xbd, 0x35, 0x20, 0xe3, 0xde, 0x50, 0x64, 0x83, 0x4f, 0x3c, 0xbe,
+    0x28, 0xc8, 0x74, 0x9b, 0x64, 0xd2, 0x49, 0x56, 0x3d, 0x5d, 0x2b, 0xd2, 0xcb, 0xfb, 0x71, 0x2e,
+    0xf7, 0xef, 0xc7, 0x99, 0xd6, 0x0c, 0xde, 0x72, 0x9c, 0x5f, 0x88, 0xf1, 0x0b, 0xd1, 0xca, 0x2c,
+    0xea, 0x3e, 0xc4, 0x6c, 0x0c, 0xb4, 0x80, 0xba, 0xe5, 0x7a, 0x89, 0xce, 0xc7, 0x60, 0x03, 0x27,
+    0x4b, 0x2f, 0xdd, 0x64, 0x29, 0x45, 0xb3, 0xcd, 0xca, 0xf0, 0xc2, 0xd1, 0x53, 0x6a, 0xb7, 0x9a,
+    0x0a, 0xb4, 0xab, 0xee, 0x46, 0xd7, 0xc9, 0xe8, 0x96, 0x3f, 0xfe, 0x10, 0x50, 0x31, 0x53, 0x47,
+    0xca, 0x4c, 0x1d, 0x29, 0xe8, 0x4a, 0xa7, 0x7c, 0x15, 0x13, 0x74, 0xa5, 0x96, 0xa9, 0xae, 0xd4,
+    0xbd, 0x92, 0x49, 0x2b, 0xbd, 0x1e, 0x8d, 0xd6, 0xe2, 0xe3, 0x18, 0xb4, 0x04, 0xcf, 0x68, 0x48,
+    0x94, 0xf4, 0x7a, 0x1c, 0xcd, 0x30, 0xd0, 0x0c, 0x1d, 0xc9, 0x06, 0xcb, 0xe1, 0xa6, 0xf5, 0xb9,
+    0xd7, 0xdc, 0xd5, 0xc7, 0x11, 0xa6, 0xda, 0x5d, 0x6e, 0xb0, 0xbf, 0x7e, 0xf9, 0xc8, 0x07, 0xd0,
+    0x9f, 0x8d, 0xf6, 0x67, 0xa3, 0xfd, 0x81, 0x27, 0xa2, 0x55, 0xb6, 0x07, 0xfb, 0xcb, 0x0c, 0xf4,
+    0xb7, 0x50, 0x3c, 0x72, 0x13, 0x2a, 0x32, 0xce, 0x04, 0xf9, 0x08, 0x82, 0xcf, 0x55, 0xae, 0x44,
+    0x53, 0x21, 0x87, 0x41, 0x4e, 0x01, 0xb3, 0xfa, 0xd4, 0xc2, 0x80, 0xd6, 0xe6, 0x9a, 0x95, 0xd4,
+    0xc9, 0xaa, 0x5f, 0xe6, 0x0b, 0x74, 0x99, 0x7f, 0x47, 0x83, 0x56, 0x12, 0xeb, 0x71, 0x62, 0x02,
+    0xea, 0xeb, 0xc8, 0xe0, 0x78, 0x5e, 0xcf, 0xd5, 0xcc, 0x45, 0xb5, 0x11, 0x40, 0x20, 0xa2, 0x45,
+    0x37, 0x18, 0x82, 0xd3, 0xc6, 0x13, 0x60, 0xdb, 0xad, 0x20, 0x4d, 0xa1, 0x18, 0xb6, 0xdd, 0x20,
+    0xad, 0x93, 0xc1, 0x51, 0x81, 0x18, 0xf6, 0xdf, 0xa9, 0xa4, 0xe5, 0x75, 0x4b, 0x07, 0x90, 0xe1,
+    0xa0, 0x32, 0x36, 0x0b, 0x08, 0xd4, 0x0d, 0x72, 0x46, 0x79, 0xef, 0x2b, 0xd5, 0x47, 0x68, 0x24,
+    0xd6, 0x0e, 0x22, 0x1c, 0x4e, 0x18, 0xc0, 0x4d, 0x00, 0x41, 0x3f, 0x4d, 0x68, 0x05, 0x1b, 0xbf,
+    0x0f, 0x84, 0xdb, 0xd4, 0x0d, 0x73, 0x27, 0xdf, 0xce, 0x0e, 0x03, 0xcf, 0xb9, 0x7d, 0x43, 0x30,
+    0x27, 0xf3, 0x37, 0xee, 0xe7, 0xdb, 0x25, 0x53, 0x67, 0x2c, 0x18, 0x81, 0x6e, 0xe8, 0x25, 0xa1,
+    0x81, 0x4a, 0x53, 0x67, 0xec, 0x59, 0x88, 0xdb, 0x92, 0xda, 0x88, 0x2f, 0x76, 0x90, 0x4b, 0x1d,
+    0x21, 0x95, 0x17, 0x68, 0xac, 0xe7, 0x06, 0xe4, 0xfa, 0x93, 0x67, 0x6b, 0x85, 0x28, 0x89, 0x8f,
+    0x93, 0xe2, 0xde, 0x40, 0x4d, 0x80, 0x68, 0xfb, 0x1e, 0xaa, 0xd4, 0x31, 0x18, 0x63, 0xd6, 0x4b,
+    0x95, 0xdd, 0xb9, 0x4a, 0xa1, 0x31, 0x48, 0x02, 0xbf, 0x70, 0xda, 0xac, 0xbc, 0x4a, 0x9d, 0x63,
+    0x1d, 0x77, 0x30, 0x7c, 0x55, 0x24, 0x6e, 0x97, 0xb9, 0xd6, 0xa0, 0xd1, 0x18, 0x10, 0x9b, 0x75,
+    0x80, 0x20, 0x11, 0xda, 0xc1, 0xb1, 0x0d, 0x67, 0x80, 0xa1, 0x21, 0xce, 0x12, 0xf4, 0xf6, 0xef,
+    0x43, 0x76, 0x9c, 0x20, 0xc3, 0x49, 0x53, 0xb7, 0xeb, 0x52, 0xc4, 0x06, 0x5d, 0x52, 0x8b, 0x70,
+    0x93, 0x78, 0xbc, 0x5a, 0x5c, 0x0a, 0x19, 0x8f, 0x46, 0x40, 0xb7, 0x5a, 0x4a, 0xff, 0xe9, 0x60,
+    0x60, 0x4c, 0x42, 0xf7, 0xc0, 0x97, 0x38, 0x20, 0x1f, 0x77, 0x70, 0xcd, 0x4f, 0xbf, 0xe5, 0xf6,
+    0x9d, 0x61, 0xdb, 0xd0, 0x1a, 0x82, 0x73, 0x90, 0x8d, 0xb2, 0x59, 0xaf, 0x1c, 0x98, 0x12, 0x60,
+    0xa0, 0xda, 0xbb, 0xf3, 0x67, 0x5d, 0xff, 0xc3, 0xa8, 0x1b, 0x01, 0x6d, 0x8c, 0xda, 0xd1, 0x8a,
+    0xa9, 0x40, 0x0f, 0xf1, 0x33, 0xc6, 0xc1, 0x05, 0xba, 0xfb, 0x3b, 0xd8, 0x9d, 0x4a, 0x9f, 0x77,
+    0xbc, 0xeb, 0x04, 0xc2, 0xad, 0xc1, 0xfd, 0x14, 0x59, 0xb3, 0x5a, 0x5a, 0xf3, 0xc2, 0xcd, 0x84,
+    0x53, 0x92, 0xb5, 0x43, 0xbc, 0x02, 0xd8, 0xae, 0x79, 0x61, 0x30, 0xe9, 0x14, 0xbe, 0x89, 0x3f,
+    0xa3, 0xc5, 0x2f, 0x84, 0x6e, 0xf8, 0x56, 0xaa, 0x8c, 0xf1, 0x1f, 0xdc, 0x40, 0x65, 0x3a, 0x26,
+    0x51, 0x9d, 0x0c, 0x5e, 0xc0, 0x64, 0xd0, 0xaa, 0xf4, 0x0d, 0x7c, 0xc1, 0x5e, 0x0c, 0xe5, 0x6f,
+    0x4c, 0x16, 0xc0, 0xe9, 0x69, 0x91, 0xf2, 0x0e, 0xb3, 0x97, 0x61, 0xd6, 0x92, 0x2a, 0xdd, 0xb9,
+    0x36, 0x70, 0x77, 0xf8, 0x18, 0x7f, 0xa2, 0xa2, 0x9d, 0xa2, 0x4e, 0x95, 0x31, 0x2c, 0x70, 0xa4,
+    0x75, 0xb2, 0x15, 0x4a, 0x75, 0x49, 0x43, 0xa4, 0x15, 0xf8, 0x18, 0x0b, 0xcc, 0x8c, 0xe1, 0xf6,
+    0x2a, 0xd4, 0x96, 0xaf, 0x54, 0xa3, 0xce, 0x9f, 0x67, 0xd3, 0xb0, 0x45, 0x97, 0x4d, 0x43, 0xb3,
+    0x11, 0x10, 0x44, 0xfb, 0xe3, 0x30, 0x97, 0x79, 0x7b, 0xed, 0xcf, 0x80, 0xc0, 0x79, 0xbd, 0x20,
+    0x6d, 0x60, 0xac, 0x25, 0x2b, 0xcc, 0x04, 0xa7, 0x15, 0x3d, 0xce, 0x34, 0x1e, 0xa3, 0x1b, 0xfc,
+    0xf6, 0x50, 0xb0, 0x1b, 0xa0, 0xde, 0x77, 0x5c, 0xa2, 0x2c, 0x94, 0xa5, 0x33, 0x24, 0x0a, 0xf4,
+    0x4e, 0xfe, 0xf0, 0x3b, 0xd4, 0x3b, 0xdc, 0xc6, 0x36, 0x9b, 0xb3, 0x73, 0x14, 0xe1, 0x2e, 0xd5,
+    0x03, 0x73, 0x7d, 0x0e, 0xf9, 0xa5, 0xa1, 0xf6, 0x47, 0xa1, 0x33, 0xb3, 0xb2, 0x32, 0x2a, 0x18,
+    0x3c, 0xad, 0x94, 0x5d, 0x23, 0xa3, 0x4b, 0x66, 0xdf, 0x2e, 0x99, 0x2d, 0xbb, 0xf6, 0x61, 0x49,
+    0x98, 0x3d, 0x61, 0x1d, 0x96, 0x68, 0x6f, 0x97, 0x80, 0xff, 0x9c, 0xd9, 0xb5, 0x0b, 0x98, 0x59,
+    0xf7, 0xd6, 0x21, 0x5c, 0xc6, 0x39, 0x70, 0xaa, 0x7e, 0x10, 0x17, 0x36, 0xfc, 0x99, 0xcb, 0xdf,
+    0x48, 0xb4, 0xb2, 0x8c, 0x53, 0x9b, 0x2c, 0xfc, 0xa3, 0xeb, 0x27, 0x28, 0x27, 0x26, 0xe0, 0xac,
+    0x7c, 0x90, 0xae, 0xf5, 0xb4, 0xd1, 0x4a, 0xc5, 0x2b, 0x6a, 0xe7, 0x62, 0x95, 0x48, 0xd1, 0x1d,
+    0x22, 0xf4, 0x76, 0x2d, 0x62, 0xe9, 0x52, 0xe8, 0x91, 0xef, 0xe8, 0xe2, 0x9b, 0xa7, 0x33, 0x4c,
+    0x4e, 0x0f, 0xc1, 0xf5, 0x38, 0x72, 0xe9, 0x17, 0xa4, 0xb2, 0x75, 0x00, 0x5e, 0x3b, 0xa0, 0xf8,
+    0x18, 0x14, 0x43, 0x78, 0x19, 0x2e, 0xb9, 0x4e, 0x53, 0x50, 0x47, 0x3e, 0xa1, 0x3f, 0x97, 0x70,
+    0x01, 0xe3, 0xe0, 0x91, 0x06, 0x2c, 0xf5, 0x4b, 0xaf, 0xb7, 0x22, 0x90, 0xca, 0x1b, 0xe0, 0x65,
+    0x73, 0xe9, 0xc3, 0x75, 0x47, 0x0e, 0x53, 0xd4, 0xa0, 0x8e, 0xc2, 0xed, 0x1b, 0x0e, 0xad, 0xec,
+    0x06, 0xde, 0xb3, 0xc3, 0x09, 0xb8, 0xaf, 0x22, 0xf8, 0x56, 0xdd, 0xe4, 0x18, 0x66, 0x7b, 0x44,
+    0x73, 0x86, 0x46, 0x07, 0x64, 0xf5, 0x4e, 0x5c, 0x75, 0x13, 0x7c, 0xbb, 0xed, 0x7a, 0x48, 0xeb,
+    0xd5, 0x9d, 0x18, 0x74, 0x10, 0xbc, 0x93, 0x20, 0x8d, 0x5b, 0x32, 0xfb, 0x61, 0x02, 0xf7, 0x49,
+    0x7c, 0x27, 0xa8, 0x18, 0xce, 0x32, 0xd6, 0xee, 0x62, 0xb2, 0x56, 0x57, 0xbb, 0x71, 0x62, 0x31,
+    0xb1, 0xe9, 0x6b, 0xf7, 0x4c, 0x92, 0x5c, 0x2d, 0xd8, 0x73, 0x46, 0x34, 0x18, 0x77, 0xb2, 0x31,
+    0x46, 0x92, 0xdb, 0x31, 0xb9, 0x36, 0x9e, 0xd8, 0xe2, 0x24, 0xbe, 0xbd, 0x98, 0x64, 0xcc, 0xe5,
+    0xf6, 0xdd, 0x62, 0x2f, 0x91, 0x3d, 0xf3, 0x8c, 0x57, 0x81, 0x73, 0x88, 0x40, 0x6b, 0x15, 0xb8,
+    0xeb, 0x24, 0x23, 0xd1, 0xa9, 0x97, 0xf3, 0x3e, 0x2c, 0x26, 0x8f, 0x4c, 0xf5, 0x74, 0xe9, 0xe1,
+    0x27, 0xda, 0x1b, 0xc2, 0x36, 0x93, 0x3d, 0x06, 0xa3, 0x5f, 0xe6, 0x4f, 0x63, 0x54, 0x04, 0x56,
+    0xe8, 0xb2, 0x1a, 0xd6, 0xb9, 0xdc, 0xf5, 0x74, 0xb9, 0x16, 0x78, 0x7f, 0x9a, 0x64, 0x40, 0xb0,
+    0x58, 0x7d, 0x1c, 0xb9, 0x3e, 0xc6, 0x33, 0xae, 0x41, 0x55, 0x46, 0x69, 0x79, 0x43, 0x41, 0x6e,
+    0x1b, 0xaf, 0xe2, 0x42, 0x5b, 0x2d, 0x66, 0x9a, 0x74, 0x46, 0xff, 0xba, 0xaa, 0xdd, 0x49, 0xec,
+    0x02, 0xf9, 0x39, 0xd6, 0xd9, 0x2f, 0xf1, 0x6f, 0x82, 0x79, 0x82, 0x69, 0x7d, 0xd0, 0x20, 0x44,
+    0x4b, 0xfc, 0x61, 0xf9, 0x75, 0x75, 0x1d, 0x3b, 0x75, 0xaa, 0x47, 0x01, 0x3c, 0x52, 0xa3, 0x65,
+    0x4d, 0x92, 0xb1, 0xff, 0xd3, 0x5b, 0xb8, 0xd5, 0x74, 0xe0, 0xc5, 0x98, 0x30, 0x44, 0x01, 0x62,
+    0xc6, 0x48, 0xd7, 0x09, 0xe7, 0xa6, 0xb5, 0x69, 0x82, 0xd7, 0xbb, 0x9b, 0xf4, 0x0c, 0x5c, 0xce,
+    0x36, 0xcb, 0xae, 0x0a, 0xb4, 0xf2, 0xb8, 0xa6, 0xb6, 0x79, 0x19, 0x95, 0x8e, 0xa6, 0x9a, 0xe9,
+    0x08, 0x8a, 0x01, 0x1c, 0x80, 0x4e, 0x81, 0x72, 0x39, 0xef, 0xb4, 0x45, 0x89, 0x0a, 0x8e, 0x43,
+    0x5d, 0x3e, 0x4d, 0x18, 0xc8, 0x2c, 0x35, 0x58, 0xe4, 0x8f, 0xb1, 0xb6, 0x4d, 0x99, 0xaf, 0xb6,
+    0x26, 0xbd, 0x80, 0xa9, 0x77, 0xef, 0xc0, 0x35, 0xdb, 0x6d, 0xd0, 0x17, 0x95, 0x49, 0xcb, 0x30,
+    0xc4, 0x1d, 0x0b, 0x3b, 0x08, 0x98, 0x07, 0x03, 0x55, 0xaf, 0x7a, 0x8d, 0xea, 0x68, 0xff, 0x8d,
+    0xa1, 0xf1, 0xe3, 0xdb, 0xf3, 0x02, 0xbe, 0x56, 0x69, 0x96, 0xf2, 0x9a, 0xfa, 0x0e, 0x01, 0x92,
+    0x41, 0x16, 0xde, 0x38, 0x34, 0x01, 0xf5, 0xa8, 0xb9, 0xef, 0x7d, 0xee, 0xa0, 0xf5, 0x4b, 0x62,
+    0x5e, 0x24, 0x4c, 0xe6, 0x0e, 0x9a, 0x3a, 0x3d, 0xd7, 0xf5, 0x11, 0xe0, 0xa0, 0xfb, 0x20, 0x83,
+    0x34, 0x7b, 0xc3, 0x20, 0x44, 0xb1, 0xfa, 0xc0, 0xb5, 0x97, 0xf9, 0x37, 0xb8, 0x83, 0xe5, 0x3a,
+    0x39, 0x1d, 0x23, 0xf1, 0x81, 0x7e, 0x92, 0xb9, 0x92, 0xac, 0x5b, 0x06, 0x71, 0xba, 0x3b, 0x9d,
+    0x8e, 0xcf, 0x67, 0x56, 0xae, 0x87, 0xaa, 0x1d, 0x65, 0x26, 0x93, 0x67, 0xf5, 0xcd, 0x69, 0xd1,
+    0x3f, 0xba, 0x1b, 0x22, 0xd5, 0xb4, 0x98, 0x75, 0xf0, 0x23, 0x65, 0x2e, 0x23, 0x69, 0x71, 0xcd,
+    0x69, 0x06, 0x46, 0x0d, 0x58, 0x70, 0x63, 0xa5, 0xbd, 0xfa, 0x78, 0x4d, 0x70, 0xd1, 0xc9, 0x78,
+    0xd5, 0xfb, 0x4d, 0x90, 0x73, 0xcb, 0x50, 0x57, 0x2e, 0x92, 0x53, 0xdc, 0x81, 0x94, 0x89, 0xdc,
+    0xc1, 0x9d, 0x3a, 0x70, 0x4a, 0x64, 0xd7, 0x61, 0x0c, 0x6a, 0xc3, 0x68, 0x9c, 0x62, 0x56, 0x66,
+    0x2d, 0x0d, 0xac, 0xe2, 0x92, 0xca, 0x6e, 0x67, 0x29, 0x77, 0xd0, 0x36, 0x55, 0x7c, 0x56, 0x63,
+    0x10, 0x22, 0xc0, 0xf2, 0x46, 0x7b, 0x3a, 0xf5, 0x11, 0x0d, 0xe0, 0x69, 0x90, 0xcb, 0x66, 0xc5,
+    0x1c, 0x1a, 0x98, 0xce, 0xb8, 0x9a, 0x16, 0xb4, 0x0a, 0xcd, 0x92, 0x70, 0x01, 0xc2, 0x4c, 0x6e,
+    0x9f, 0xd0, 0x6d, 0x53, 0x88, 0x1a, 0x1c, 0x43, 0xa0, 0x3e, 0x0c, 0xb1, 0x80, 0xcd, 0x62, 0x01,
+    0x19, 0x30, 0x2b, 0x53, 0x69, 0xb8, 0x0e, 0x72, 0xd0, 0x21, 0x6b, 0x5c, 0x88, 0x2c, 0x38, 0xfd,
+    0x53, 0xee, 0x57, 0x97, 0x32, 0x32, 0xb8, 0x83, 0x69, 0x73, 0xa9, 0x5a, 0x8e, 0xf3, 0xd3, 0xbd,
+    0x51, 0xe8, 0x85, 0xef, 0x20, 0x4d, 0xdc, 0xbe, 0x01, 0x9b, 0xb2, 0x5c, 0x05, 0xc7, 0x1d, 0xb4,
+    0x00, 0xc2, 0x96, 0x79, 0xdc, 0xc1, 0x47, 0xe6, 0x42, 0x1c, 0x08, 0xee, 0x52, 0x76, 0x6e, 0x0e,
+    0x42, 0x06, 0xa7, 0xad, 0x5f, 0xaf, 0xc6, 0x70, 0x23, 0x86, 0x8a, 0x89, 0xc6, 0xfe, 0xb5, 0x12,
+    0xcc, 0x7c, 0x26, 0x5f, 0xd7, 0x8c, 0x10, 0xba, 0x0c, 0x2d, 0x67, 0xb3, 0xf2, 0xce, 0x89, 0xe8,
+    0x14, 0x75, 0x63, 0x70, 0x24, 0xdc, 0xf0, 0x7c, 0x19, 0x56, 0xa7, 0x31, 0xe2, 0xba, 0xc3, 0x10,
+    0x4e, 0x15, 0xd1, 0x46, 0xf0, 0x11, 0xc5, 0x4a, 0x1d, 0x53, 0xb7, 0xc6, 0x38, 0x9e, 0xab, 0xf9,
+    0x1d, 0xe4, 0x55, 0x0d, 0x71, 0x9c, 0x0b, 0x26, 0x72, 0xe6, 0x83, 0x64, 0xe7, 0x34, 0x95, 0x38,
+    0x06, 0x95, 0x52, 0x66, 0x65, 0x64, 0x71, 0x70, 0x73, 0xa1, 0x8e, 0x89, 0x9f, 0xc9, 0x1d, 0x68,
+    0x91, 0xa3, 0x57, 0xcb, 0xe9, 0x3f, 0xeb, 0x5b, 0x15, 0x8a, 0x46, 0xe6, 0x85, 0x3d, 0x48, 0xe3,
+    0xca, 0x4e, 0xa0, 0x08, 0xef, 0x93, 0xd3, 0x13, 0xc7, 0x83, 0xb3, 0x27, 0x47, 0xff, 0x8c, 0x54,
+    0x9e, 0x96, 0x5f, 0x5c, 0x85, 0x00, 0xe4, 0xd7, 0xee, 0xc2, 0x9f, 0x4f, 0x6f, 0xd1, 0xd0, 0x45,
+    0xa9, 0x4b, 0xcf, 0x8f, 0xac, 0x4d, 0x9f, 0x3a, 0x98, 0x26, 0xfc, 0x03, 0x17, 0xbe, 0x3b, 0xeb,
+    0x34, 0xb9, 0xb5, 0xe9, 0x51, 0x61, 0xa9, 0xe2, 0x70, 0xb8, 0xd0, 0x07, 0xce, 0x59, 0x5d, 0x4a,
+    0x1c, 0x78, 0x87, 0xb5, 0x35, 0x77, 0x35, 0x43, 0xa3, 0xba, 0x94, 0x19, 0xf0, 0xd6, 0x02, 0x6f,
+    0xae, 0x73, 0x30, 0x1a, 0xce, 0x85, 0xd2, 0x5e, 0x8f, 0xfd, 0x56, 0x1d, 0x0e, 0x43, 0xa8, 0x06,
+    0x41, 0x2b, 0xba, 0xfd, 0x8e, 0x1e, 0xa3, 0x3b, 0x4b, 0x96, 0x31, 0xa3, 0x29, 0x5d, 0xcb, 0x32,
+    0xa3, 0x63, 0xb0, 0x4f, 0xd4, 0x18, 0xac, 0x01, 0xdc, 0xa4, 0x6c, 0x1a, 0x81, 0x21, 0x0b, 0x0b,
+    0xe9, 0xe4, 0xdc, 0x5a, 0xa7, 0xed, 0xf7, 0x68, 0x25, 0x2b, 0xcc, 0x97, 0x37, 0x38, 0xd7, 0xbf,
+    0xc3, 0xe8, 0xeb, 0xff, 0xe1, 0x47, 0x10, 0x61, 0xa7, 0x0d, 0xc9, 0xc2, 0xa0, 0xc4, 0xeb, 0xea,
+    0x70, 0xad, 0x32, 0xdf, 0x78, 0xf5, 0x0f, 0x2c, 0x4c, 0xff, 0xc6, 0xfe, 0x8c, 0x95, 0xf3, 0x9d,
+    0x0b, 0xc5, 0x5b, 0x5a, 0xee, 0x55, 0x8f, 0x78, 0x2b, 0x92, 0x7b, 0x01, 0xa3, 0xe1, 0xd9, 0xa6,
+    0x4e, 0xe1, 0x59, 0xee, 0xa8, 0xdb, 0xac, 0x64, 0x46, 0x52, 0xb6, 0xd5, 0xa6, 0x4f, 0xf7, 0xa4,
+    0x61, 0x5b, 0x4d, 0x62, 0x06, 0x84, 0x5c, 0xa7, 0xbd, 0x33, 0xfb, 0xf9, 0x4e, 0x16, 0xd8, 0xe2,
+    0xdc, 0xa5, 0xe6, 0x7e, 0xaa, 0xa5, 0xb6, 0xb0, 0x93, 0x51, 0x97, 0x1c, 0x7f, 0x57, 0x3a, 0x5e,
+    0xe6, 0x3d, 0x66, 0x29, 0xaf, 0xdd, 0xa2, 0x7c, 0x1b, 0x19, 0x98, 0x0b, 0x02, 0x48, 0xd5, 0xfc,
+    0x9a, 0xca, 0x38, 0xca, 0x86, 0xca, 0x62, 0x6f, 0x5c, 0xd5, 0x90, 0x16, 0x77, 0x1a, 0x68, 0xb9,
+    0x30, 0xd1, 0x1b, 0x60, 0xbd, 0x9a, 0xce, 0x00, 0x59, 0xe3, 0xf6, 0x35, 0x7a, 0x94, 0x30, 0xb1,
+    0xc1, 0x20, 0x36, 0x1b, 0x92, 0x9a, 0xb8, 0xbd, 0xc3, 0x60, 0xb1, 0xbc, 0x61, 0x50, 0xcb, 0x7b,
+    0x15, 0x04, 0x85, 0xdb, 0x97, 0x77, 0xc1, 0x92, 0xad, 0xfc, 0x74, 0xae, 0x2a, 0x86, 0xa1, 0x90,
+    0x85, 0x7e, 0xd8, 0xb2, 0xa0, 0xf2, 0x94, 0xea, 0x94, 0xc3, 0x73, 0x83, 0x0b, 0xc8, 0xe3, 0x21,
+    0x40, 0x30, 0x2b, 0x5f, 0x3f, 0x40, 0x71, 0xaa, 0x1f, 0x8f, 0x8b, 0x1e, 0xbb, 0xc7, 0x21, 0xc9,
+    0x9b, 0x40, 0x6a, 0x99, 0x2c, 0xa1, 0x07, 0xb5, 0x6f, 0x99, 0xb1, 0xbf, 0xab, 0x0a, 0xe7, 0x33,
+    0x83, 0x05, 0x3d, 0xc3, 0xc3, 0x6a, 0x6d, 0xc8, 0xb4, 0xe3, 0x76, 0x43, 0x25, 0x88, 0xc4, 0x83,
+    0x86, 0x52, 0x83, 0x19, 0xcb, 0xde, 0x86, 0x32, 0x32, 0xa4, 0x96, 0x56, 0xf8, 0x47, 0xed, 0x3b,
+    0xa3, 0xa7, 0xbe, 0x53, 0x63, 0x74, 0x8b, 0x7e, 0xdd, 0xa1, 0x6f, 0x38, 0x5c, 0x8e, 0x69, 0x11,
+    0xfd, 0xfa, 0xa3, 0xdf, 0xe0, 0xce, 0x1c, 0xef, 0x8b, 0x38, 0x23, 0xfa, 0x0d, 0x9f, 0x7e, 0x03,
+    0x36, 0x93, 0xe3, 0xaf, 0x89, 0xc3, 0x21, 0x8e, 0x2d, 0x49, 0xe7, 0x1d, 0x25, 0x32, 0xef, 0x23,
+    0x7a, 0x63, 0xbf, 0x91, 0xae, 0x08, 0x41, 0x68, 0x8c, 0x1a, 0xf7, 0x01, 0xb5, 0x85, 0x10, 0x48,
+    0xfb, 0x32, 0xc1, 0x9b, 0xc7, 0xaa, 0x9a, 0xa4, 0x2b, 0xdb, 0xae, 0xdb, 0x14, 0x45, 0x8d, 0x62,
+    0xc1, 0x83, 0xe1, 0x15, 0x5c, 0x81, 0xf2, 0xcb, 0x79, 0x3e, 0xe7, 0x4c, 0x63, 0x3f, 0x31, 0xdd,
+    0x80, 0xca, 0x24, 0xfa, 0x0f, 0x00, 0xc1, 0xa2, 0x94, 0x50, 0x93, 0x7e, 0x03, 0x2a, 0x66, 0x24,
+    0x0d, 0x08, 0x5f, 0xd2, 0xd1, 0x91, 0x96, 0x51, 0xdb, 0xc3, 0xe8, 0xbd, 0x67, 0xe9, 0xa5, 0xec,
+    0xe4, 0xdb, 0xee, 0xbd, 0x5f, 0xd0, 0xa3, 0xff, 0xbd, 0x80, 0xda, 0xca, 0xe8, 0x31, 0x3e, 0x7e,
+    0x46, 0x3a, 0x8d, 0x81, 0xb7, 0x25, 0x2b, 0xb3, 0x68, 0xef, 0xda, 0xd2, 0x2c, 0x9b, 0x32, 0xe5,
+    0xbe, 0x51, 0x5e, 0x3d, 0x1d, 0xbc, 0x81, 0x58, 0x2f, 0xe0, 0x61, 0x13, 0x3e, 0x7a, 0x3c, 0x1f,
+    0xc3, 0xd5, 0xfc, 0x85, 0xa1, 0x2a, 0xcc, 0x1d, 0x4c, 0xd1, 0x71, 0x07, 0x56, 0x4f, 0x84, 0xd0,
+    0x85, 0x98, 0xda, 0x55, 0xaf, 0xb7, 0x03, 0xb0, 0x0d, 0x35, 0xe9, 0x88, 0x49, 0x99, 0x6c, 0xd5,
+    0xc3, 0xdc, 0x60, 0x74, 0x9b, 0xc1, 0xa1, 0xb3, 0xe5, 0x64, 0x2b, 0xee, 0x0e, 0xd5, 0xc7, 0x85,
+    0xa9, 0xf4, 0xbc, 0x54, 0x19, 0x7d, 0x7f, 0x25, 0x04, 0x43, 0x31, 0xd3, 0x4c, 0x20, 0x0b, 0xd7,
+    0x60, 0x7a, 0x05, 0x57, 0xf0, 0x0a, 0x04, 0x83, 0x09, 0x8d, 0x24, 0x0f, 0x3d, 0xd3, 0xd8, 0x56,
+    0x08, 0xd3, 0x12, 0xae, 0xd1, 0x5d, 0xca, 0xd8, 0xc6, 0xa4, 0x01, 0xd2, 0x12, 0xdb, 0xce, 0xa5,
+    0x5e, 0xe6, 0x52, 0x07, 0x30, 0x6c, 0x82, 0xd8, 0x58, 0x57, 0x2b, 0x7a, 0x46, 0x70, 0x11, 0xe9,
+    0x40, 0x2a, 0xf4, 0xef, 0x31, 0x9e, 0x08, 0x4d, 0x35, 0x70, 0xaf, 0x78, 0xb8, 0x83, 0x39, 0x60,
+    0x8e, 0x4e, 0x0e, 0x7c, 0xce, 0xb6, 0x85, 0xf2, 0xca, 0x64, 0x60, 0x99, 0x55, 0x2b, 0x55, 0xde,
+    0x60, 0x87, 0x2d, 0xb6, 0x6c, 0x73, 0x0e, 0xee, 0x18, 0x24, 0x42, 0xdf, 0xca, 0xe3, 0x3a, 0x9c,
+    0x2c, 0x3b, 0x28, 0x1d, 0x63, 0x70, 0x3d, 0x2a, 0x26, 0xea, 0x0a, 0xfa, 0x6a, 0xb1, 0x3e, 0x6e,
+    0x2f, 0x6e, 0xbb, 0x8a, 0xc7, 0x0d, 0xa3, 0x26, 0x57, 0xb3, 0x54, 0xa9, 0x95, 0x52, 0x34, 0x78,
+    0xe8, 0xe3, 0x5e, 0x71, 0x50, 0x2f, 0xa4, 0x43, 0xbc, 0x3b, 0x8e, 0x3b, 0xf8, 0x0c, 0xf4, 0xf4,
+    0x4c, 0x9c, 0x1c, 0x6d, 0x33, 0x97, 0x86, 0x98, 0x73, 0x72, 0xfd, 0x46, 0x25, 0x4c, 0x87, 0x84,
+    0x8b, 0xf3, 0x3e, 0x43, 0x29, 0xb3, 0x2f, 0x25, 0x4e, 0xd6, 0xbc, 0x6c, 0x3c, 0x97, 0x83, 0x61,
+    0x1c, 0x16, 0x7f, 0x39, 0x5e, 0x5d, 0x7c, 0x79, 0x2a, 0x94, 0xf3, 0x3e, 0x82, 0x30, 0x64, 0xa1,
+    0xb7, 0x18, 0x4f, 0x76, 0x04, 0x61, 0x91, 0x4b, 0xe4, 0x7c, 0x9b, 0x97, 0x3d, 0xcf, 0xf6, 0x21,
+    0x48, 0x0b, 0x14, 0xdb, 0xa0, 0xd9, 0xbe, 0xf1, 0x41, 0x37, 0x98, 0xee, 0x29, 0xcd, 0xf1, 0x83,
+    0xf0, 0x91, 0xe1, 0xfe, 0x06, 0x96, 0xc3, 0x3d, 0x1a, 0x2d, 0x61, 0x41, 0x16, 0x82, 0xd8, 0xa2,
+    0x04, 0x37, 0xfc, 0x83, 0x2e, 0x19, 0x80, 0xaf, 0x16, 0x92, 0xd7, 0x98, 0xd7, 0xd5, 0xd6, 0x4b,
+    0x85, 0x38, 0xaf, 0xeb, 0x27, 0xbd, 0x41, 0x69, 0x96, 0xf2, 0x74, 0x16, 0xe5, 0xda, 0xb8, 0x80,
+    0xab, 0x2f, 0x36, 0x85, 0xd8, 0x94, 0xa7, 0xe7, 0x04, 0x14, 0xaa, 0x6a, 0xc5, 0x02, 0x41, 0x63,
+    0xc9, 0xf5, 0x6a, 0x9b, 0xc6, 0x2d, 0x20, 0x83, 0xc9, 0x16, 0xb3, 0xb2, 0x34, 0x5c, 0x75, 0x88,
+    0xf3, 0xb4, 0x55, 0xcf, 0x4e, 0x60, 0x9c, 0x51, 0xb9, 0xf6, 0xbf, 0x81, 0xa3, 0x6a, 0x51, 0xe6,
+    0xd0, 0x19, 0x40, 0xe7, 0x4d, 0xcc, 0xb5, 0x28, 0xef, 0x29, 0x74, 0xfd, 0x01, 0xfc, 0xb4, 0x38,
+    0x48, 0xfd, 0x38, 0x24, 0x30, 0xdd, 0x0b, 0x13, 0x21, 0xf5, 0xe8, 0x40, 0xa0, 0xcc, 0x39, 0x9e,
+    0xec, 0xd0, 0x92, 0x72, 0x75, 0x9d, 0xdb, 0xe8, 0xf6, 0x0e, 0x50, 0x41, 0x14, 0xb4, 0x55, 0x0f,
+    0x32, 0xce, 0x29, 0x55, 0x60, 0xa2, 0x85, 0xbb, 0xfd, 0xdb, 0xe2, 0xfc, 0xdb, 0xf4, 0xca, 0x6b,
+    0xf1, 0xaa, 0xea, 0x8f, 0xb3, 0xf9, 0x6d, 0x31, 0x80, 0x96, 0x7f, 0x9b, 0xce, 0xbf, 0x4d, 0xab,
+    0x54, 0xaa, 0xd9, 0xa5, 0x89, 0x36, 0xc5, 0x11, 0x3f, 0x4a, 0x46, 0xe9, 0x8a, 0x20, 0xe3, 0xbc,
+    0x5b, 0x32, 0xe9, 0x43, 0xb3, 0x40, 0xd6, 0x63, 0xb2, 0x51, 0xde, 0x2f, 0xd2, 0x8d, 0x19, 0x1d,
+    0xd0, 0xc0, 0xff, 0x44, 0x34, 0xd4, 0x02, 0x51, 0x34, 0xab, 0xcb, 0x2f, 0x4a, 0x18, 0x55, 0x05,
+    0xfd, 0xe8, 0x03, 0x5d, 0xbc, 0x0e, 0xb8, 0x2c, 0x56, 0x46, 0x33, 0xdc, 0xeb, 0x8d, 0xb3, 0xf3,
+    0xf4, 0x55, 0x0f, 0x31, 0xce, 0xdc, 0xaa, 0xe7, 0x60, 0x26, 0xdf, 0xae, 0x17, 0x8c, 0xc6, 0x13,
+    0x9f, 0x20, 0xd5, 0x43, 0x73, 0xe3, 0xa4, 0xe7, 0x0c, 0x51, 0x67, 0xab, 0x3f, 0x67, 0x7c, 0x7e,
+    0x7f, 0x76, 0x76, 0x29, 0x9b, 0x6d, 0xce, 0xcd, 0xc9, 0xb6, 0x29, 0x55, 0x74, 0x95, 0x3d, 0x1e,
+    0xf0, 0x68, 0x4a, 0x66, 0x59, 0x50, 0xac, 0x9a, 0xab, 0x5c, 0xcd, 0x74, 0x9c, 0x73, 0x16, 0x7f,
+    0x00, 0x46, 0xbe, 0x39, 0xec, 0xc3, 0x68, 0x7a, 0x8c, 0x88, 0xe9, 0xa2, 0xd3, 0xd1, 0x81, 0x53,
+    0xd9, 0x74, 0x8d, 0xda, 0xec, 0xdf, 0x1e, 0xa7, 0xcc, 0xa6, 0x23, 0xd1, 0x93, 0xa6, 0x9a, 0xab,
+    0xce, 0x69, 0xd2, 0x83, 0x52, 0x86, 0xe6, 0x5d, 0xac, 0x4d, 0x56, 0x61, 0x4b, 0x20, 0xe1, 0xc2,
+    0xa3, 0xf8, 0xe2, 0x0d, 0x21, 0x03, 0x46, 0x37, 0xf0, 0xc0, 0x5f, 0x61, 0xf0, 0x57, 0xc4, 0x99,
+    0xcd, 0xb9, 0x16, 0xbf, 0x25, 0x1a, 0xc4, 0x02, 0x7e, 0x90, 0x42, 0xe0, 0x81, 0x14, 0x37, 0x87,
+    0xb2, 0x6c, 0xd7, 0x6f, 0x18, 0x3c, 0x33, 0x01, 0xd0, 0x95, 0x37, 0xee, 0x09, 0xae, 0xe0, 0xa0,
+    0x12, 0x3c, 0x1a, 0x27, 0xa5, 0x1a, 0xc8, 0xe5, 0x08, 0x8f, 0xb3, 0x22, 0x70, 0x3e, 0x8c, 0x2e,
+    0x85, 0xe9, 0x21, 0x7e, 0x4e, 0xe8, 0x83, 0x29, 0x2f, 0x76, 0xf0, 0x10, 0xa6, 0x92, 0x4e, 0x71,
+    0x69, 0x97, 0x61, 0xf6, 0xe1, 0x2f, 0xe7, 0x02, 0x61, 0xfc, 0x82, 0x0f, 0x94, 0x46, 0xeb, 0x37,
+    0x63, 0x4f, 0xa1, 0x74, 0x2c, 0x64, 0x70, 0x32, 0x1d, 0x0d, 0x6e, 0x1d, 0x40, 0x98, 0x66, 0x85,
+    0x12, 0xba, 0xb8, 0xb0, 0x21, 0x4e, 0x4a, 0x36, 0x80, 0xdb, 0x97, 0x74, 0x25, 0xb6, 0x99, 0x5c,
+    0xa4, 0xb0, 0xe4, 0x95, 0x91, 0x04, 0x5d, 0x6f, 0xad, 0xe3, 0x2d, 0x8a, 0x11, 0x2e, 0xc9, 0x7f,
+    0x42, 0xf7, 0x53, 0xb4, 0x74, 0x4c, 0xb8, 0x4e, 0xa1, 0x1b, 0xe3, 0xc4, 0xc6, 0x47, 0xe0, 0x02,
+    0x1e, 0x84, 0x18, 0xb2, 0x70, 0x2e, 0xb7, 0x34, 0x2c, 0xd7, 0x8e, 0x3b, 0xe4, 0x36, 0x8b, 0xf2,
+    0xa1, 0x96, 0xaa, 0x40, 0x53, 0x46, 0x18, 0x63, 0xff, 0x13, 0xc4, 0xa0, 0x36, 0xe5, 0xbf, 0x43,
+    0x6f, 0x7b, 0x94, 0x6e, 0xdc, 0x36, 0xd0, 0x29, 0xbf, 0x9d, 0x1d, 0x1c, 0x2e, 0x69, 0x97, 0xa6,
+    0xef, 0x47, 0xe2, 0x5d, 0x75, 0x4e, 0x48, 0x0a, 0xe5, 0x6a, 0xfe, 0x0f, 0x9a, 0xab, 0xc7, 0x74,
+    0xde, 0x6f, 0x4a, 0xf5, 0x8a, 0x18, 0xa8, 0xd5, 0x88, 0x86, 0x33, 0xf4, 0x28, 0x3d, 0x67, 0xe0,
+    0xcf, 0xb5, 0xe3, 0x8a, 0x7b, 0xae, 0x4d, 0x96, 0xcf, 0xf7, 0x03, 0x5f, 0x21, 0x44, 0xd2, 0x06,
+    0x96, 0x5b, 0x5d, 0x98, 0x21, 0x0e, 0xb2, 0xce, 0x29, 0xab, 0xfc, 0x74, 0x2b, 0xfb, 0x2d, 0xe8,
+    0xac, 0xba, 0x09, 0xab, 0x03, 0x00, 0x6f, 0x93, 0xe4, 0xda, 0x09, 0xd2, 0x4d, 0xd2, 0xb4, 0x66,
+    0x25, 0x21, 0x00, 0x39, 0x4d, 0x23, 0xc9, 0xcf, 0x40, 0xa6, 0xe7, 0xfa, 0x78, 0xd0, 0x7d, 0x7f,
+    0x85, 0x36, 0x27, 0x9b, 0x4e, 0x2c, 0x0a, 0xd5, 0xb7, 0x98, 0x77, 0x10, 0x33, 0x92, 0xa6, 0x23,
+    0x14, 0x45, 0x88, 0x11, 0xc1, 0x28, 0x91, 0x98, 0x75, 0x20, 0x6a, 0xd4, 0x3d, 0x1f, 0x90, 0xc0,
+    0x53, 0xe4, 0x15, 0x29, 0x4d, 0x0b, 0x06, 0x50, 0x76, 0x9d, 0x07, 0x6f, 0xa1, 0x99, 0x6f, 0x47,
+    0x76, 0x65, 0x72, 0x07, 0xd6, 0xf9, 0xc1, 0x09, 0x8f, 0x44, 0x6f, 0x3c, 0xac, 0x56, 0x9b, 0xec,
+    0xfd, 0x5b, 0x13, 0x5d, 0x16, 0x82, 0x69, 0x15, 0x03, 0xec, 0xdf, 0x51, 0xc9, 0x5a, 0x88, 0x87,
+    0xc6, 0xf6, 0xd1, 0x95, 0xd8, 0x4e, 0xf9, 0xe1, 0x59, 0x60, 0x90, 0xc1, 0x42, 0x1a, 0x48, 0x83,
+    0xf8, 0x39, 0x9b, 0xd0, 0x24, 0x3b, 0xa7, 0x5c, 0x13, 0x47, 0x34, 0xbb, 0x13, 0xe5, 0x38, 0x56,
+    0xec, 0x65, 0xd9, 0x2b, 0x55, 0xbb, 0x42, 0x59, 0x67, 0x78, 0xd5, 0xae, 0x90, 0x10, 0x21, 0xae,
+    0x6a, 0xf9, 0x5a, 0x21, 0xb2, 0x6a, 0x17, 0x6b, 0xe2, 0x6a, 0x70, 0x25, 0x97, 0x3b, 0xf0, 0x68,
+    0x48, 0xc2, 0x35, 0xf6, 0x8a, 0x38, 0x12, 0xfa, 0x5c, 0xbb, 0xf1, 0x1c, 0x68, 0x6f, 0x02, 0x77,
+    0x20, 0x2e, 0x4a, 0xbc, 0x35, 0xdf, 0x39, 0x4e, 0xbc, 0xb5, 0x42, 0x88, 0xf0, 0xc6, 0x56, 0xed,
+    0x8e, 0x62, 0x57, 0x38, 0x27, 0xc9, 0x0e, 0xb6, 0xf6, 0xcd, 0xbb, 0x90, 0x50, 0x49, 0x4d, 0xa4,
+    0x57, 0xb8, 0x4c, 0x1a, 0x9a, 0x6a, 0x68, 0x92, 0x51, 0xf1, 0xbf, 0x4d, 0xd5, 0xcc, 0xa0, 0x59,
+    0x70, 0x3e, 0x20, 0x21, 0x5e, 0x21, 0x60, 0xc8, 0x13, 0x3c, 0xb8, 0x9c, 0xec, 0x9d, 0x5f, 0x3d,
+    0xc4, 0xe2, 0x7e, 0xff, 0x5e, 0x3c, 0x7d, 0x43, 0x5a, 0xaa, 0xaf, 0x33, 0x10, 0x2f, 0xce, 0xc1,
+    0x5d, 0x0e, 0xb6, 0x81, 0x2e, 0xf8, 0x7a, 0x71, 0x1d, 0x1f, 0x5a, 0x11, 0x5c, 0xdb, 0xed, 0x04,
+    0x8e, 0x70, 0xae, 0x71, 0xb8, 0x53, 0xfd, 0x28, 0x77, 0xc0, 0x11, 0x22, 0x36, 0xdd, 0xe2, 0x6a,
+    0x70, 0x21, 0xbd, 0x7a, 0x84, 0x9e, 0x48, 0x10, 0x51, 0xcb, 0xc4, 0x86, 0x30, 0x5b, 0x8e, 0x4c,
+    0x19, 0x68, 0x56, 0x4e, 0xde, 0x1f, 0x88, 0x50, 0x16, 0x53, 0xc4, 0x02, 0xbe, 0x97, 0x8a, 0x1f,
+    0xe7, 0x7a, 0xd4, 0x3f, 0x0a, 0xcb, 0xa7, 0xa1, 0x6d, 0x97, 0x15, 0x27, 0x81, 0xca, 0x1b, 0x60,
+    0x03, 0x24, 0x88, 0xfb, 0x36, 0x84, 0x48, 0xe5, 0x91, 0x55, 0xcf, 0xf9, 0x19, 0x67, 0x61, 0x3f,
+    0xdf, 0xce, 0x3a, 0x27, 0xfa, 0x85, 0x6e, 0xdc, 0x0a, 0xfb, 0x1b, 0xdd, 0x37, 0xd1, 0xda, 0x94,
+    0x1f, 0x1b, 0x28, 0xef, 0x3d, 0x5f, 0x8c, 0x37, 0x9e, 0xc8, 0xb6, 0x65, 0x83, 0x6b, 0xad, 0x50,
+    0x9e, 0xdf, 0x54, 0x97, 0xdb, 0x31, 0x86, 0x6c, 0x27, 0x42, 0x80, 0x9f, 0x5d, 0x0b, 0xe1, 0x4f,
+    0xa9, 0x0e, 0xb5, 0xe1, 0xc3, 0x99, 0x81, 0x2d, 0x29, 0x0c, 0xe9, 0x50, 0xf8, 0xa9, 0x36, 0xa0,
+    0x44, 0x6c, 0xd0, 0x90, 0x72, 0x2d, 0x69, 0x82, 0x70, 0xa6, 0x6d, 0xe6, 0x98, 0xed, 0xb0, 0x87,
+    0x66, 0xd2, 0xed, 0xb0, 0x72, 0xf8, 0x91, 0x20, 0x14, 0xcc, 0x8c, 0x6b, 0xce, 0xbc, 0x1d, 0x64,
+    0x64, 0x6a, 0xbc, 0x07, 0xec, 0xbf, 0x54, 0xb7, 0xb3, 0x3f, 0x84, 0xf1, 0xd9, 0x1f, 0x5d, 0x8f,
+    0x2b, 0x0a, 0x68, 0x21, 0x4d, 0xd1, 0xa8, 0xa4, 0x66, 0xbd, 0x14, 0x22, 0xe5, 0x68, 0x3c, 0x9f,
+    0x8f, 0x0f, 0xb5, 0xea, 0xc5, 0x36, 0x46, 0x75, 0x11, 0xb2, 0x73, 0xd0, 0x2c, 0x26, 0x2a, 0x19,
+    0x2a, 0xb6, 0x41, 0x93, 0x0a, 0x28, 0x96, 0xeb, 0x95, 0x08, 0x15, 0xc5, 0x60, 0xa6, 0xe8, 0x06,
+    0xe2, 0xe7, 0x73, 0xaf, 0xb8, 0xd5, 0x0c, 0x93, 0x56, 0xce, 0xfe, 0x95, 0x9c, 0xd2, 0x29, 0x0e,
+    0x4f, 0xe5, 0xd2, 0x3c, 0xc1, 0x3c, 0xd2, 0x32, 0xd0, 0xce, 0x65, 0xa9, 0x49, 0x0b, 0xae, 0x3f,
+    0xf2, 0xda, 0xba, 0x58, 0xe3, 0x39, 0x30, 0x70, 0x91, 0xb5, 0x71, 0xfa, 0xba, 0xc7, 0xa3, 0xd8,
+    0x54, 0x6f, 0x6f, 0x13, 0x84, 0xdb, 0xa3, 0x97, 0x28, 0xb5, 0x75, 0x21, 0x75, 0xb3, 0x96, 0x75,
+    0x0a, 0x93, 0xc0, 0x85, 0x05, 0x87, 0x36, 0xa6, 0x4e, 0xb3, 0xb0, 0x2e, 0xde, 0x98, 0xb1, 0xac,
+    0xd3, 0xd9, 0x63, 0x3c, 0xb1, 0xac, 0x93, 0x7b, 0xcb, 0x23, 0xa7, 0x47, 0xf8, 0xbd, 0x21, 0x46,
+    0xf7, 0x6d, 0xc7, 0x44, 0x05, 0xcd, 0x1d, 0x65, 0xe4, 0x1d, 0xc7, 0x60, 0x1e, 0x3b, 0x63, 0x10,
+    0xfd, 0x53, 0xb9, 0xa3, 0x51, 0x5c, 0x9a, 0x8f, 0x5c, 0x12, 0xcf, 0x1a, 0xe4, 0x87, 0x8f, 0x89,
+    0x43, 0x80, 0xd7, 0x70, 0xd2, 0x88, 0xb0, 0x44, 0x85, 0xba, 0x92, 0xd6, 0xd7, 0x24, 0x42, 0x4b,
+    0xee, 0x68, 0xb4, 0x51, 0xce, 0x3a, 0x46, 0x9a, 0xa1, 0x26, 0xad, 0x36, 0x08, 0xf5, 0xc9, 0x79,
+    0xf1, 0x94, 0x9a, 0xba, 0x92, 0x91, 0xf4, 0x99, 0xf3, 0x7f, 0xa0, 0xe7, 0xd6, 0xd1, 0x3d, 0xdf,
+    0x31, 0x56, 0x30, 0xd7, 0x80, 0x32, 0x1a, 0xf0, 0x9c, 0xab, 0xa0, 0x5d, 0x0d, 0x31, 0xa2, 0xbb,
+    0x2e, 0xee, 0xc1, 0xe5, 0x71, 0xcb, 0x85, 0x28, 0x18, 0xe6, 0xdd, 0x49, 0x43, 0xa0, 0xcc, 0xc2,
+    0xdf, 0xbc, 0x13, 0x41, 0xb6, 0x23, 0xb9, 0xb7, 0xdc, 0xdc, 0x01, 0xb7, 0x9c, 0xce, 0xf8, 0xc7,
+    0x38, 0x15, 0x82, 0xde, 0xd5, 0xef, 0x4c, 0x5f, 0x6b, 0xf4, 0x53, 0x9c, 0x74, 0xcb, 0xf0, 0x98,
+    0xf0, 0xd1, 0xe8, 0x65, 0x72, 0xca, 0x31, 0x72, 0x0a, 0xb1, 0x18, 0x04, 0x2c, 0x2e, 0xcb, 0xa9,
+    0xc7, 0xd0, 0xa2, 0xb5, 0x8a, 0x2d, 0x06, 0x08, 0x62, 0x21, 0xa7, 0x21, 0xa9, 0x51, 0x98, 0x6c,
+    0x74, 0xd7, 0x9c, 0x70, 0xc6, 0x24, 0x8d, 0x60, 0x27, 0x1e, 0x2f, 0x07, 0x9d, 0x8c, 0x37, 0xba,
+    0x97, 0xb5, 0x41, 0x47, 0xd8, 0xcb, 0x28, 0x7f, 0x00, 0x42, 0x0e, 0xe0, 0x47, 0xd5, 0x6e, 0x96,
+    0x65, 0xe4, 0x64, 0x56, 0xe8, 0x1f, 0x7d, 0x4e, 0x57, 0xd0, 0x1e, 0xfb, 0x16, 0x8f, 0x0a, 0x45,
+    0xa2, 0x5b, 0x6a, 0x53, 0x7e, 0xcd, 0xa8, 0x11, 0x94, 0xc9, 0x97, 0x74, 0xc6, 0xf9, 0x50, 0x55,
+    0x12, 0xc3, 0xbd, 0xd6, 0x28, 0x82, 0x76, 0xbc, 0xde, 0x5c, 0xf3, 0x99, 0xb0, 0xe0, 0x28, 0x9a,
+    0xbf, 0xa4, 0x26, 0x7a, 0x62, 0x39, 0xf6, 0xa2, 0x63, 0x66, 0x4a, 0x6d, 0xfa, 0x2a, 0x5f, 0x26,
+    0x39, 0x23, 0xb8, 0x65, 0xbe, 0xbb, 0x54, 0x83, 0x13, 0xab, 0x52, 0x34, 0x37, 0xb0, 0xe1, 0x06,
+    0x2e, 0xbb, 0x3b, 0x2b, 0x78, 0xf2, 0x13, 0x3a, 0xac, 0x03, 0xd9, 0xf4, 0x54, 0x5d, 0xe7, 0xdc,
+    0x8a, 0x06, 0x08, 0xc1, 0xba, 0x65, 0x4d, 0x15, 0xd3, 0xa2, 0x96, 0x98, 0x60, 0xe8, 0x1e, 0x72,
+    0xb2, 0xaa, 0xe1, 0x57, 0x55, 0xc3, 0x61, 0xdb, 0xc3, 0x44, 0xf7, 0x6f, 0xbd, 0x33, 0x30, 0x79,
+    0x2c, 0x90, 0x3c, 0xe1, 0xe5, 0xaa, 0x3c, 0xad, 0xa2, 0xbb, 0xd5, 0x78, 0xee, 0xe1, 0xaa, 0xa1,
+    0x48, 0x18, 0xff, 0xa8, 0x21, 0x40, 0xf4, 0xc8, 0xeb, 0x41, 0x72, 0x70, 0x3b, 0x98, 0xf7, 0x19,
+    0x4f, 0x70, 0x47, 0xa7, 0x92, 0x76, 0xcd, 0xaf, 0x56, 0x62, 0xcb, 0xc6, 0xdf, 0x7a, 0x63, 0x20,
+    0x71, 0x4c, 0x4d, 0x9c, 0xf0, 0x8e, 0x87, 0x44, 0xeb, 0xca, 0x88, 0xed, 0xf3, 0xc5, 0xc6, 0x56,
+    0xf1, 0x96, 0xdf, 0x79, 0x2f, 0xf1, 0x81, 0x7b, 0x2a, 0x55, 0xea, 0x07, 0xbe, 0xe2, 0xf6, 0x9d,
+    0x65, 0xdb, 0x20, 0x48, 0xf6, 0xb1, 0x3d, 0xe4, 0x8a, 0x67, 0x78, 0x26, 0xdb, 0x1e, 0xd5, 0x06,
+    0x33, 0x59, 0x2a, 0x69, 0xf2, 0x7e, 0x04, 0x4c, 0x41, 0x47, 0x8a, 0xe8, 0xa1, 0xfa, 0xc9, 0x51,
+    0x43, 0x42, 0x09, 0xa8, 0x44, 0xd6, 0x73, 0x07, 0x38, 0x34, 0xc8, 0x53, 0x00, 0x13, 0xd7, 0x09,
+    0xe1, 0x6e, 0x20, 0xe4, 0x38, 0xba, 0xcc, 0xa7, 0xed, 0x9a, 0x03, 0x86, 0xa4, 0x29, 0x7c, 0x81,
+    0xbc, 0x91, 0xf5, 0x1a, 0x21, 0xdb, 0xa7, 0xee, 0x83, 0xd9, 0x94, 0xa2, 0x91, 0xc0, 0x96, 0x0e,
+    0xdb, 0xe7, 0x8d, 0xcd, 0xac, 0x1b, 0xb7, 0x72, 0x81, 0x33, 0x0a, 0x02, 0x56, 0xb4, 0xe1, 0x18,
+    0x6e, 0xd5, 0x86, 0x66, 0xa6, 0x79, 0xbb, 0x32, 0xf7, 0x2f, 0xa8, 0x7a, 0x68, 0x81, 0xf3, 0x8b,
+    0xd2, 0x10, 0xfb, 0x32, 0x2b, 0x1e, 0xab, 0x78, 0x9e, 0x42, 0xd5, 0x61, 0x60, 0x88, 0xc7, 0x55,
+    0x4b, 0x43, 0xed, 0x0f, 0xd1, 0xfc, 0xad, 0x77, 0xf2, 0xff, 0x43, 0xcd, 0x5f, 0x41, 0xf3, 0x6d,
+    0xc1, 0x7c, 0xe7, 0xb3, 0xa5, 0x1a, 0x7b, 0x1a, 0xcd, 0x4b, 0xbd, 0x9d, 0xf7, 0x14, 0xd4, 0x1b,
+    0x4f, 0x8f, 0x6b, 0xcc, 0xbf, 0x9d, 0xb7, 0x08, 0xfa, 0xda, 0x98, 0x8d, 0x79, 0x53, 0xef, 0xc0,
+    0x7c, 0x1c, 0x4d, 0x63, 0x9a, 0x3f, 0xc9, 0xc7, 0xd5, 0xe4, 0xc0, 0x2b, 0x6e, 0xbc, 0xd6, 0xac,
+    0xc6, 0xf8, 0x33, 0x74, 0x01, 0x35, 0x92, 0x69, 0x55, 0xcf, 0xfa, 0x17, 0xc8, 0x8f, 0xf9, 0x05,
+    0xf0, 0x4e, 0x92, 0xfa, 0xb8, 0xd7, 0xdc, 0x4d, 0x9a, 0x50, 0x86, 0x6d, 0x14, 0x9b, 0x43, 0xba,
+    0x66, 0xff, 0xb3, 0x62, 0xb6, 0x51, 0x85, 0x96, 0xde, 0x88, 0x25, 0x1c, 0xdf, 0xd8, 0x74, 0x67,
+    0x1d, 0x0b, 0x75, 0x42, 0x27, 0xf3, 0x10, 0x22, 0x0c, 0x36, 0x85, 0x3d, 0x78, 0x17, 0x18, 0xb0,
+    0xb7, 0xf1, 0x00, 0x47, 0x8d, 0x5b, 0x9a, 0x50, 0x3e, 0x47, 0xc3, 0x38, 0xa3, 0x81, 0xc0, 0x7a,
+    0xe5, 0xd8, 0x21, 0x56, 0xcd, 0x57, 0x73, 0xc5, 0xa1, 0xd0, 0x43, 0x7b, 0xd6, 0x41, 0x08, 0x1d,
+    0x69, 0xc6, 0x10, 0xfa, 0x64, 0x8d, 0x1b, 0xfe, 0x64, 0x2b, 0x6f, 0x50, 0xa7, 0x59, 0xe3, 0x17,
+    0x06, 0x6d, 0xca, 0xfb, 0xe3, 0xd5, 0x3d, 0x8b, 0x02, 0x3c, 0x23, 0xf0, 0x9c, 0x5a, 0x00, 0x16,
+    0x72, 0xf9, 0xa4, 0xd1, 0xc7, 0x64, 0x9c, 0x49, 0x55, 0x95, 0x5a, 0xc6, 0xf9, 0x40, 0xd5, 0x2a,
+    0x5d, 0x28, 0x86, 0xe5, 0xdf, 0x80, 0x9b, 0x71, 0xc8, 0x92, 0x8d, 0x30, 0x5b, 0xb2, 0xed, 0x4b,
+    0xf1, 0xe4, 0x46, 0xba, 0x0a, 0x47, 0xa9, 0xfc, 0x8e, 0x61, 0x94, 0x96, 0x7a, 0x6a, 0x66, 0x59,
+    0x73, 0x08, 0x63, 0x7f, 0x37, 0x07, 0x4a, 0xef, 0x55, 0x01, 0x2b, 0xdc, 0xe9, 0x3b, 0x41, 0x63,
+    0x62, 0xc0, 0x69, 0xe6, 0x5c, 0x0d, 0x34, 0x6c, 0x83, 0x99, 0x60, 0xbc, 0x29, 0x8e, 0xab, 0xf9,
+    0x90, 0x86, 0xf6, 0xd1, 0x60, 0x43, 0xa4, 0x8a, 0x68, 0x6e, 0x5f, 0x85, 0x06, 0xd7, 0x98, 0x88,
+    0xa0, 0x90, 0x11, 0xf6, 0x0c, 0x48, 0x65, 0x54, 0x03, 0x3d, 0x6a, 0x41, 0xac, 0xed, 0x39, 0x44,
+    0xb8, 0x60, 0x53, 0x5c, 0x67, 0xd5, 0xd0, 0xc9, 0x43, 0x2e, 0x8a, 0xcf, 0x1a, 0x58, 0x52, 0xe9,
+    0x13, 0xa6, 0x48, 0x69, 0x73, 0x8d, 0x2d, 0xe4, 0xa4, 0xf4, 0xc8, 0x3c, 0x63, 0x4f, 0x84, 0x87,
+    0xb4, 0xa9, 0xc2, 0x03, 0xd1, 0x57, 0x60, 0xd1, 0x49, 0x7c, 0x36, 0x9e, 0x91, 0xd2, 0xa2, 0x89,
+    0xd0, 0x29, 0x4c, 0xe6, 0xf6, 0xa5, 0x69, 0xcc, 0x4a, 0x6d, 0x6c, 0xc0, 0x41, 0x89, 0x87, 0x7c,
+    0xc9, 0x92, 0x48, 0xac, 0xa7, 0xa5, 0x47, 0x16, 0x11, 0x53, 0x8b, 0xbc, 0xdf, 0xaf, 0x1e, 0xb0,
+    0x5f, 0xed, 0xf3, 0x8c, 0x44, 0x90, 0x01, 0x8f, 0x7f, 0x66, 0xae, 0x2d, 0x3b, 0x47, 0x99, 0x78,
+    0xbb, 0x5b, 0x6b, 0xc7, 0xc0, 0x97, 0x84, 0x6f, 0x05, 0x1d, 0xe9, 0x60, 0x2f, 0x12, 0xd3, 0x71,
+    0xdc, 0x82, 0x18, 0x91, 0x4c, 0xa7, 0xef, 0x37, 0xb5, 0x4a, 0x7c, 0x4b, 0xac, 0xcf, 0xd8, 0x1f,
+    0xd1, 0xc2, 0xb9, 0x2e, 0xe0, 0x34, 0xf4, 0xac, 0x46, 0x7a, 0x44, 0x23, 0xe5, 0x75, 0x72, 0xfb,
+    0x2e, 0xc3, 0xd4, 0x39, 0x70, 0x1d, 0xc3, 0x3a, 0x6d, 0x28, 0x7f, 0x7c, 0xb2, 0xb5, 0x23, 0x37,
+    0xc7, 0xec, 0xaf, 0x88, 0xb7, 0x28, 0xcb, 0xce, 0x07, 0x0e, 0x42, 0x3a, 0xa7, 0xe2, 0x44, 0x5e,
+    0xf3, 0x26, 0xa2, 0xdb, 0xec, 0x17, 0x2f, 0xc2, 0x34, 0x18, 0xe1, 0x13, 0x8e, 0x75, 0x49, 0xe8,
+    0x9d, 0xa6, 0x19, 0x58, 0x1a, 0x66, 0xde, 0x20, 0x8f, 0xcc, 0x95, 0x84, 0x4e, 0x52, 0x31, 0x0f,
+    0x02, 0x75, 0x89, 0x8f, 0x21, 0x27, 0x89, 0x27, 0x61, 0x48, 0xaa, 0x8c, 0x9b, 0x56, 0xd9, 0x4d,
+    0x5a, 0x21, 0x66, 0x1c, 0xf8, 0x82, 0xdb, 0xd7, 0xc7, 0x5e, 0x94, 0xac, 0x17, 0x12, 0x1a, 0x24,
+    0xbe, 0x3d, 0xd6, 0x97, 0x70, 0x5e, 0x35, 0x53, 0x4d, 0x49, 0x97, 0xc9, 0x20, 0x84, 0x74, 0x10,
+    0x34, 0x56, 0xc2, 0x5f, 0xc0, 0x47, 0xc7, 0x0e, 0x82, 0x39, 0x0c, 0xcd, 0x8e, 0xb7, 0xe4, 0x98,
+    0x95, 0x03, 0xf7, 0x04, 0x4e, 0x02, 0xea, 0xd8, 0xcf, 0x00, 0xc7, 0xa8, 0xde, 0x15, 0x95, 0x31,
+    0xa4, 0x75, 0x1a, 0x1f, 0xa7, 0x72, 0x86, 0xdb, 0xbb, 0x15, 0x14, 0x75, 0x3f, 0x8b, 0x76, 0x5f,
+    0x3c, 0x9e, 0xa8, 0xae, 0xda, 0x7f, 0xb2, 0x86, 0x72, 0x7d, 0xdd, 0x77, 0x77, 0x78, 0xfc, 0xb8,
+    0x5c, 0xf9, 0x46, 0xe9, 0xe3, 0x78, 0x56, 0x7a, 0xd7, 0x3d, 0xaa, 0xfd, 0x3b, 0xf1, 0x47, 0x16,
+    0x66, 0x1b, 0x49, 0x23, 0xe3, 0x7a, 0x38, 0xc4, 0x6c, 0x43, 0x33, 0x4b, 0x99, 0xd2, 0xc7, 0x21,
+    0x54, 0x40, 0x23, 0x79, 0x9d, 0xea, 0x16, 0xde, 0x30, 0xdb, 0xb3, 0x16, 0x75, 0xed, 0xf7, 0x43,
+    0x41, 0xfd, 0xd3, 0x1b, 0xdd, 0xfd, 0x8d, 0x2c, 0x0d, 0x79, 0x49, 0x8f, 0xe0, 0xf6, 0x26, 0x54,
+    0x57, 0xbe, 0x0d, 0xfe, 0x0f, 0x23, 0xcc, 0x90, 0xf8, 0x0e, 0xb0, 0x72, 0x24, 0x95, 0x9e, 0x9d,
+    0x4d, 0xd5, 0x4a, 0x7c, 0xab, 0x64, 0xba, 0x40, 0x1e, 0xd6, 0x90, 0x90, 0x20, 0x7a, 0x8f, 0x8f,
+    0xd9, 0xe3, 0x4d, 0x07, 0xbb, 0x24, 0x57, 0x42, 0x6c, 0x39, 0x0e, 0x2f, 0x50, 0x58, 0x4a, 0x59,
+    0x8b, 0xfd, 0x28, 0x1e, 0x6a, 0xb2, 0x29, 0x9b, 0xd4, 0xde, 0xb9, 0x03, 0xe3, 0x3e, 0x78, 0x8e,
+    0x73, 0x6d, 0x87, 0x4c, 0x5a, 0x7a, 0x46, 0x2d, 0xe5, 0x83, 0xa5, 0x7c, 0x2f, 0x16, 0xe3, 0x91,
+    0x8a, 0x40, 0xf3, 0x6b, 0x6a, 0x85, 0xf8, 0xb1, 0x15, 0x96, 0x06, 0xdb, 0xff, 0x5d, 0x2d, 0x0e,
+    0x1b, 0x5b, 0x1c, 0x43, 0xdb, 0xd3, 0x33, 0x83, 0xc4, 0x27, 0x0b, 0xff, 0x65, 0xc9, 0xb6, 0x94,
+    0x6a, 0x6c, 0x66, 0xe5, 0x1a, 0xb5, 0x84, 0x31, 0x74, 0xbb, 0xde, 0x6c, 0x17, 0xd6, 0xa2, 0x3f,
+    0xbf, 0x6b, 0x76, 0x60, 0x51, 0x89, 0xab, 0xc1, 0xfb, 0x10, 0x74, 0x0b, 0xd5, 0x62, 0xb6, 0x94,
+    0x86, 0xda, 0xd0, 0x8f, 0xfa, 0x30, 0xd0, 0x82, 0x6e, 0xac, 0xda, 0x37, 0x65, 0x63, 0x8b, 0xac,
+    0x3b, 0x2d, 0xf6, 0xd1, 0x8b, 0x22, 0xf5, 0xa1, 0x81, 0x36, 0x4b, 0x68, 0x9b, 0x1d, 0x81, 0x36,
+    0xa1, 0xb4, 0xcd, 0xa3, 0xb4, 0x4d, 0x74, 0xb0, 0x8d, 0xf3, 0x39, 0x8b, 0x5a, 0x60, 0x29, 0xcd,
+    0xa1, 0xb5, 0x1f, 0xfe, 0x27, 0xb5, 0xbf, 0x9c, 0x15, 0xac, 0x9d, 0x0d, 0xd0, 0xc3, 0xc6, 0x60,
+    0x34, 0x35, 0x50, 0x3f, 0x8c, 0xd6, 0xc7, 0x4d, 0x12, 0x9b, 0x72, 0xe0, 0x76, 0xfd, 0x59, 0x96,
+    0xd2, 0x10, 0x8b, 0x7d, 0x59, 0x70, 0x27, 0xf2, 0x6f, 0xb7, 0x54, 0xba, 0x1c, 0xe4, 0x7b, 0xd5,
+    0x9d, 0xcc, 0xd7, 0x1b, 0x71, 0x63, 0x3e, 0x3d, 0xc8, 0x34, 0x75, 0x89, 0xc1, 0xd8, 0x9f, 0xab,
+    0x2c, 0x57, 0xe7, 0x06, 0xf0, 0x54, 0xa6, 0x1a, 0xdd, 0xb2, 0x70, 0xd3, 0x0c, 0x53, 0xab, 0x1d,
+    0x8f, 0x93, 0xd8, 0x72, 0x95, 0xdf, 0xa8, 0x50, 0xa4, 0x25, 0x18, 0x37, 0x69, 0xee, 0xec, 0x48,
+    0x56, 0x77, 0x47, 0xe3, 0x82, 0xa9, 0xab, 0x13, 0xdd, 0xca, 0xc7, 0x71, 0xbd, 0xb8, 0xc7, 0x10,
+    0x98, 0x88, 0xff, 0xc8, 0x4a, 0x2b, 0x5d, 0x54, 0x0a, 0x47, 0x3c, 0x23, 0x54, 0x0a, 0x6d, 0xb9,
+    0x6a, 0x45, 0x3a, 0x61, 0x5b, 0x6f, 0x8d, 0x96, 0xc5, 0x40, 0x81, 0x12, 0x37, 0x10, 0x94, 0xc8,
+    0xe8, 0xa0, 0x3c, 0xd2, 0x03, 0x2d, 0xc2, 0x1f, 0xbb, 0xb6, 0xc0, 0x6f, 0xf5, 0x11, 0x05, 0x37,
+    0x51, 0x41, 0x30, 0x39, 0x17, 0xee, 0xec, 0x93, 0x5b, 0xb8, 0x43, 0x03, 0x4e, 0x8c, 0x3e, 0xc9,
+    0x95, 0x88, 0x87, 0x59, 0x9e, 0xff, 0x02, 0xc6, 0x7d, 0xa8, 0x8a, 0x1e, 0xa7, 0x51, 0x0f, 0x62,
+    0x67, 0x83, 0xb6, 0xe5, 0x19, 0x02, 0xc7, 0xb0, 0xe7, 0x62, 0x9d, 0x7d, 0x3e, 0x02, 0x3a, 0x07,
+    0x73, 0x2f, 0xdb, 0x2b, 0xc9, 0xf3, 0x68, 0xce, 0x59, 0x72, 0xcd, 0xf3, 0xe5, 0x38, 0xb6, 0x29,
+    0xaa, 0x0d, 0x02, 0xf5, 0x7a, 0xf5, 0x0c, 0x8f, 0x2d, 0x70, 0x90, 0x1b, 0xe6, 0x05, 0x9b, 0xf2,
+    0x9b, 0x61, 0x8a, 0xad, 0xcc, 0x1f, 0x36, 0x9e, 0x20, 0x59, 0x3a, 0x92, 0xa5, 0x25, 0x59, 0x1a,
+    0xa2, 0x95, 0xe5, 0x35, 0xe8, 0xc5, 0xe8, 0xcd, 0xd9, 0xca, 0x62, 0xc3, 0x6d, 0x91, 0x98, 0x08,
+    0x38, 0x48, 0xe1, 0x74, 0x79, 0x04, 0x22, 0x6a, 0x92, 0xa2, 0x41, 0x67, 0x39, 0x45, 0x5b, 0x97,
+    0xa1, 0xab, 0x4d, 0xd1, 0xa5, 0x91, 0x9f, 0xe8, 0xa5, 0x8c, 0x68, 0x92, 0x12, 0x2d, 0xc9, 0x74,
+    0x82, 0xfb, 0x15, 0x35, 0x80, 0x7e, 0x6e, 0xf5, 0x67, 0xe4, 0x33, 0x8f, 0x3f, 0xc2, 0x73, 0x6b,
+    0x26, 0x39, 0x03, 0x46, 0x05, 0xfc, 0x58, 0x44, 0xf0, 0xe3, 0x27, 0x70, 0x2f, 0x5a, 0xe8, 0xe6,
+    0xf6, 0x0d, 0xa0, 0x99, 0x01, 0x45, 0x4c, 0x24, 0x8e, 0x45, 0xe4, 0xa2, 0x7a, 0xa4, 0x3c, 0xa1,
+    0x45, 0x3d, 0x54, 0x3e, 0xcd, 0xd4, 0x2d, 0xba, 0x59, 0x70, 0xaa, 0x61, 0x28, 0xdc, 0xbe, 0x76,
+    0x68, 0x79, 0x85, 0x3d, 0x89, 0x67, 0xef, 0x6d, 0xe0, 0x74, 0xea, 0x48, 0x06, 0x20, 0xde, 0x01,
+    0xc2, 0xff, 0xcc, 0xdf, 0xa9, 0x1b, 0x80, 0xeb, 0xdc, 0xbb, 0xf0, 0xe0, 0x37, 0xaf, 0x90, 0x0c,
+    0x33, 0x58, 0x4a, 0x92, 0xb1, 0x06, 0xd5, 0xdc, 0xd4, 0x49, 0xd6, 0x66, 0x91, 0x8c, 0xf4, 0xfd,
+    0x6c, 0x57, 0x1e, 0x14, 0x1f, 0x1b, 0x41, 0xd2, 0xe2, 0xe8, 0x0d, 0xdf, 0x06, 0x24, 0x83, 0xab,
+    0x11, 0xb1, 0x5d, 0x9e, 0x5e, 0xbc, 0xa5, 0xe1, 0x5e, 0x7c, 0x0a, 0x4f, 0x02, 0xe2, 0x21, 0x93,
+    0x56, 0xea, 0x9c, 0xa7, 0x43, 0xa0, 0x21, 0xa7, 0x7d, 0x4b, 0xf8, 0x0b, 0x18, 0x53, 0x78, 0x3a,
+    0x35, 0x61, 0x47, 0xe9, 0x9e, 0x6c, 0x76, 0xa9, 0x3e, 0xdb, 0x0c, 0x08, 0x80, 0x1f, 0xf2, 0xc4,
+    0x50, 0x50, 0x49, 0xc1, 0x93, 0xe7, 0x9c, 0x11, 0xe2, 0x60, 0x18, 0xe7, 0x1a, 0x46, 0x46, 0xf2,
+    0xa7, 0x21, 0x5c, 0x97, 0x73, 0x59, 0xba, 0xd9, 0x74, 0x28, 0x16, 0x37, 0x47, 0x8f, 0xe0, 0x91,
+    0xe2, 0xbe, 0xff, 0x94, 0xc2, 0x09, 0x65, 0x04, 0x92, 0x92, 0x9e, 0x63, 0x46, 0x6a, 0xd2, 0x83,
+    0xe6, 0x48, 0x50, 0x7a, 0xee, 0xdc, 0xe8, 0x07, 0x7c, 0xc8, 0xeb, 0x6b, 0x68, 0x61, 0x34, 0x71,
+    0x99, 0x91, 0x66, 0x47, 0xd4, 0x73, 0xfe, 0x37, 0x82, 0xe7, 0xfc, 0x15, 0x72, 0x64, 0x07, 0x3d,
+    0xa3, 0x4e, 0x6f, 0x4b, 0x7c, 0x8c, 0xc7, 0x7f, 0xa8, 0xa9, 0x76, 0x6e, 0x04, 0x2f, 0x38, 0xef,
+    0x82, 0xb1, 0x9f, 0xf8, 0xb8, 0xf7, 0x06, 0x23, 0xc8, 0x90, 0xe7, 0x7a, 0x44, 0xf5, 0x89, 0x33,
+    0x74, 0xfb, 0x03, 0x39, 0x1b, 0x10, 0xcd, 0xe0, 0x4d, 0x82, 0xb7, 0x06, 0x03, 0x43, 0x70, 0xdd,
+    0xa0, 0xe7, 0x7a, 0x38, 0x67, 0x18, 0x8c, 0x42, 0xd0, 0x4a, 0x54, 0x34, 0x8d, 0xfd, 0x77, 0xc6,
+    0xc5, 0x01, 0x88, 0x47, 0x84, 0xdf, 0x8e, 0x01, 0x7b, 0xf4, 0x5f, 0x81, 0xcd, 0x50, 0xc1, 0x56,
+    0x1d, 0x41, 0xa8, 0x4c, 0xbd, 0x9f, 0x5e, 0x0a, 0xc0, 0xab, 0x82, 0x5c, 0xcd, 0x19, 0x7a, 0x66,
+    0x88, 0x5e, 0x21, 0x09, 0x95, 0x28, 0x05, 0x30, 0xce, 0xa7, 0x14, 0x80, 0xe0, 0xbf, 0x8e, 0x52,
+    0xa0, 0x36, 0x0d, 0xec, 0x73, 0x2b, 0x49, 0xd3, 0x4b, 0xea, 0xe0, 0xd3, 0xa2, 0x43, 0x8f, 0xe0,
+    0xb0, 0x27, 0x7f, 0x8c, 0x54, 0x08, 0xa5, 0xb8, 0x89, 0x17, 0x19, 0xf2, 0x6c, 0x22, 0xa9, 0x58,
+    0x24, 0xb9, 0xba, 0xf1, 0x66, 0x57, 0xda, 0xb2, 0xe6, 0xb4, 0x95, 0xea, 0x81, 0x24, 0x7a, 0x16,
+    0x2a, 0x2d, 0xc6, 0x02, 0xf2, 0x6d, 0x56, 0x1e, 0xe9, 0x0e, 0x48, 0x89, 0x13, 0x8c, 0x7f, 0x8b,
+    0x64, 0x6d, 0xa7, 0xc6, 0xff, 0x38, 0x35, 0xfe, 0x87, 0x25, 0x93, 0x7b, 0x94, 0xf1, 0xaf, 0x4d,
+    0x4b, 0xb6, 0x28, 0x6c, 0x77, 0x70, 0xcd, 0x6f, 0x62, 0x60, 0x03, 0x93, 0xa4, 0x6d, 0x86, 0xf2,
+    0x88, 0x40, 0x0a, 0xab, 0xd9, 0x9b, 0xd2, 0xd6, 0x33, 0xf4, 0x68, 0xe0, 0x77, 0xaa, 0x50, 0x81,
+    0x0c, 0x49, 0x95, 0xdd, 0x12, 0x7f, 0x1a, 0x49, 0x55, 0x73, 0x89, 0xde, 0x47, 0xe3, 0xd4, 0xb1,
+    0x66, 0x8a, 0x7e, 0x0d, 0xe7, 0xc2, 0x9d, 0x56, 0xaa, 0xdc, 0x5d, 0x7a, 0x7a, 0x41, 0x2e, 0x28,
+    0x4f, 0xf4, 0x32, 0x61, 0x8f, 0x2c, 0x74, 0x58, 0x4a, 0xf5, 0x16, 0xb3, 0x2d, 0x5b, 0xd1, 0x0d,
+    0xa8, 0x94, 0xdb, 0xa3, 0x61, 0xb8, 0x9a, 0x57, 0xe9, 0xb4, 0xad, 0x93, 0x58, 0x3c, 0x56, 0x19,
+    0x2e, 0xa5, 0x68, 0x48, 0x86, 0x46, 0x4a, 0xd1, 0x92, 0x0c, 0x6d, 0x5d, 0x8a, 0xae, 0x36, 0x43,
+    0x97, 0x49, 0xf6, 0xe8, 0xa5, 0x94, 0x68, 0xdc, 0x33, 0x05, 0xc9, 0xd8, 0xb8, 0x88, 0x64, 0x24,
+    0xa2, 0x64, 0x6c, 0x5c, 0x49, 0x2f, 0xaa, 0xc4, 0xa8, 0xdc, 0x00, 0x4d, 0xc9, 0xf4, 0x06, 0x69,
+    0x70, 0xaf, 0xa4, 0x5e, 0x6d, 0x00, 0x45, 0x51, 0x49, 0x0e, 0xba, 0xa2, 0xca, 0xa3, 0x4c, 0x59,
+    0x41, 0x35, 0xe6, 0x8f, 0x6c, 0xed, 0xc6, 0x64, 0x9b, 0x32, 0xf0, 0x35, 0xa5, 0x84, 0xd1, 0x0f,
+    0xb4, 0x88, 0x22, 0x19, 0x48, 0x04, 0x1d, 0x1e, 0x09, 0xc8, 0x36, 0xfa, 0xd7, 0x79, 0xd7, 0x00,
+    0x1d, 0x32, 0xec, 0x4d, 0x19, 0x40, 0x87, 0x14, 0x7c, 0x85, 0xfa, 0xcd, 0xa3, 0xea, 0x8f, 0x53,
+    0xeb, 0x87, 0x04, 0x6b, 0xb1, 0xb2, 0x2a, 0xcf, 0x21, 0x12, 0x90, 0x3b, 0x63, 0x03, 0x59, 0xfb,
+    0xb8, 0x94, 0x0a, 0xe3, 0x78, 0x42, 0x4a, 0x05, 0x7d, 0x2e, 0xc4, 0x98, 0x3d, 0x3a, 0xb8, 0x27,
+    0x21, 0xae, 0xc2, 0x53, 0xe9, 0x20, 0xc8, 0xd4, 0x9c, 0x53, 0x6b, 0xfe, 0x0e, 0x1e, 0x58, 0x97,
+    0x74, 0xfb, 0xab, 0x76, 0x26, 0x33, 0xce, 0x69, 0xa2, 0x27, 0xbd, 0x54, 0x9f, 0x9b, 0xad, 0xfc,
+    0x6c, 0x5a, 0xc0, 0x46, 0xd1, 0x62, 0xa7, 0x91, 0x56, 0x58, 0xcf, 0x38, 0x63, 0x44, 0xcf, 0x06,
+    0x5a, 0xa1, 0x7c, 0x6c, 0x05, 0x7d, 0xc6, 0x8a, 0xc5, 0x08, 0xda, 0xf1, 0x31, 0xc4, 0x55, 0xe1,
+    0x46, 0x77, 0xa3, 0xa4, 0xd9, 0x8f, 0xb6, 0x9f, 0x9e, 0x8c, 0x07, 0x9c, 0x57, 0xdd, 0xe9, 0x50,
+    0x3d, 0x22, 0x2f, 0x45, 0xff, 0xa1, 0x6a, 0x97, 0x1d, 0x7a, 0xcc, 0xf5, 0x3b, 0x36, 0x2b, 0x6f,
+    0xf9, 0x02, 0x8b, 0xaf, 0x6a, 0xa1, 0x33, 0x8a, 0xb6, 0xcb, 0x48, 0x6a, 0x72, 0x5c, 0xba, 0x0d,
+    0xef, 0x0f, 0x08, 0x4f, 0x9a, 0x40, 0x01, 0x9e, 0x70, 0x3e, 0x10, 0x88, 0x6e, 0xac, 0x7a, 0x10,
+    0x91, 0xba, 0x3c, 0xad, 0xb4, 0x8a, 0x42, 0x1d, 0x97, 0x54, 0xae, 0x15, 0x22, 0x97, 0x6d, 0xd0,
+    0x09, 0x61, 0x49, 0x66, 0xbd, 0x53, 0x2b, 0x36, 0x6b, 0x56, 0x0b, 0x5d, 0x81, 0x90, 0x18, 0xc1,
+    0x04, 0xdb, 0xcf, 0xa0, 0x11, 0xbd, 0x55, 0x2b, 0x2d, 0xa6, 0xed, 0xc2, 0x93, 0xb0, 0x72, 0x13,
+    0x54, 0xbe, 0x49, 0x23, 0x77, 0xa8, 0x0a, 0x15, 0xc0, 0xe2, 0x69, 0x65, 0xdc, 0x26, 0xf8, 0x36,
+    0xdb, 0x1c, 0x58, 0x8d, 0xd5, 0x8d, 0xbe, 0xdc, 0x46, 0x6f, 0x8f, 0xca, 0x82, 0x4f, 0xbd, 0xf7,
+    0x08, 0xb6, 0xa5, 0x31, 0x84, 0x3b, 0x90, 0x36, 0x82, 0x96, 0xfd, 0x6b, 0x5c, 0x45, 0x1a, 0x9c,
+    0xe3, 0x8c, 0xab, 0xf6, 0x8f, 0xe0, 0x46, 0x7e, 0x64, 0xed, 0x0b, 0x6b, 0xa0, 0xa3, 0x4c, 0xf0,
+    0x8a, 0x9b, 0xe8, 0x1b, 0x93, 0xe6, 0x3d, 0x0f, 0x95, 0xc1, 0x2e, 0x3c, 0xf9, 0xdc, 0x32, 0x71,
+    0x30, 0x67, 0x4f, 0xae, 0x38, 0x68, 0xe1, 0x6a, 0x1e, 0xc2, 0x35, 0xa1, 0x41, 0x2b, 0x57, 0x73,
+    0x37, 0x7d, 0xd9, 0xc0, 0xb9, 0xaa, 0xe9, 0x61, 0x16, 0xd9, 0xa1, 0x05, 0x37, 0x72, 0x12, 0x19,
+    0xf2, 0x97, 0x6b, 0x94, 0x1f, 0x01, 0x2e, 0x5d, 0x11, 0xf4, 0xbc, 0xda, 0xcb, 0xe2, 0x90, 0x76,
+    0x7b, 0xaa, 0x3f, 0x5e, 0xce, 0xc2, 0xf9, 0xf3, 0x92, 0x34, 0x09, 0x46, 0x4c, 0x7a, 0xc0, 0xf9,
+    0x0b, 0xc7, 0x3a, 0xef, 0x53, 0x20, 0xf7, 0x38, 0xd7, 0x88, 0x83, 0xe9, 0xaa, 0x23, 0xf4, 0x3d,
+    0x48, 0x1b, 0xc1, 0x48, 0x77, 0x1d, 0xa3, 0x3a, 0xb5, 0x89, 0xab, 0xa9, 0xa2, 0xd5, 0x0b, 0x39,
+    0xd7, 0x04, 0xf5, 0xd4, 0x1d, 0x05, 0xd6, 0x8a, 0x71, 0x6b, 0x8f, 0x59, 0x79, 0x00, 0xab, 0xe2,
+    0xc9, 0x66, 0x29, 0x44, 0x6c, 0xd0, 0xe0, 0x7d, 0x5f, 0x5e, 0x31, 0x2b, 0x0f, 0xfa, 0xd4, 0x30,
+    0xd1, 0x23, 0x7a, 0x70, 0xdc, 0x2f, 0xd9, 0xb0, 0xe5, 0x49, 0xb9, 0xdc, 0xbf, 0x1a, 0x37, 0x84,
+    0x4c, 0x0a, 0x04, 0xf5, 0xfe, 0x7b, 0xd0, 0x3d, 0xf6, 0x09, 0x9d, 0xae, 0x7e, 0xe7, 0xc2, 0x7a,
+    0x5c, 0xa1, 0xae, 0xf6, 0xe3, 0x5f, 0x49, 0x50, 0x9c, 0xd3, 0x49, 0x5b, 0xdd, 0x14, 0x39, 0x93,
+    0xad, 0xfd, 0x3f, 0x48, 0x13, 0xb1, 0x8b, 0x75, 0x8c, 0xcf, 0x50, 0x29, 0x46, 0x9a, 0x85, 0xbf,
+    0xe2, 0x9a, 0x42, 0x33, 0xd0, 0x37, 0x40, 0x31, 0x70, 0x83, 0xbb, 0xea, 0x7e, 0x38, 0x86, 0x67,
+    0x02, 0x1b, 0xdc, 0xbd, 0x64, 0xa4, 0x0b, 0x97, 0xc5, 0xa4, 0x48, 0x39, 0x95, 0x1e, 0xe6, 0xc1,
+    0xcb, 0xf4, 0x52, 0x8e, 0xc6, 0x75, 0x8e, 0xab, 0x79, 0x98, 0xce, 0x1c, 0x37, 0x8e, 0xde, 0xe9,
+    0xdd, 0x19, 0xf7, 0x70, 0x1d, 0x2b, 0x6f, 0x67, 0x55, 0xbe, 0x88, 0x5f, 0x43, 0xcf, 0x29, 0x81,
+    0x9e, 0x07, 0xa0, 0x67, 0xc1, 0x07, 0xbd, 0xe0, 0x0d, 0xd4, 0x1b, 0x5d, 0x13, 0xd1, 0x9d, 0xa0,
+    0x25, 0xdc, 0x0b, 0x5d, 0x00, 0x52, 0xc5, 0xe6, 0xa1, 0xcc, 0x2e, 0xbc, 0x37, 0x45, 0x89, 0x81,
+    0x0c, 0xc7, 0x85, 0x89, 0x3a, 0x6d, 0x0d, 0x74, 0xfb, 0xdf, 0xf0, 0x96, 0xac, 0x76, 0xa2, 0x5e,
+    0x06, 0xae, 0xfd, 0x29, 0x65, 0x7d, 0x9d, 0x36, 0xb9, 0xe6, 0x84, 0xf0, 0x65, 0x17, 0x06, 0xc0,
+    0xa3, 0x39, 0xf5, 0x07, 0xdc, 0x04, 0x1f, 0x86, 0x11, 0x74, 0x7d, 0xc4, 0x04, 0x7b, 0xda, 0xae,
+    0xab, 0x0b, 0xb9, 0x23, 0x31, 0xd0, 0x85, 0xd7, 0x01, 0xc4, 0xac, 0x63, 0xc1, 0xcc, 0x38, 0x52,
+    0x10, 0x2f, 0x6b, 0x77, 0x60, 0x18, 0x39, 0x81, 0x6a, 0x75, 0x6c, 0x4a, 0x8d, 0x5b, 0xf8, 0xda,
+    0x9b, 0xf9, 0x5f, 0x73, 0x0f, 0x0d, 0xe3, 0x22, 0xa3, 0x5a, 0xbc, 0x46, 0xa5, 0x6c, 0x66, 0xdd,
+    0xcf, 0xfc, 0xc0, 0xbb, 0x14, 0x41, 0xf1, 0x3e, 0xf4, 0x87, 0xb9, 0xf5, 0xa3, 0x2a, 0x4c, 0x0a,
+    0x62, 0x57, 0x8b, 0x15, 0x92, 0xa1, 0x42, 0xd8, 0x31, 0xba, 0x77, 0x73, 0x5b, 0x50, 0xbd, 0xb1,
+    0x6a, 0x87, 0xde, 0x6f, 0xbe, 0x57, 0x40, 0x1a, 0xc0, 0x64, 0x75, 0xe1, 0x42, 0x42, 0xd5, 0x2a,
+    0x1a, 0x08, 0x3b, 0xcb, 0x5c, 0x7e, 0xe7, 0x26, 0x63, 0x7f, 0x30, 0x58, 0xb5, 0x04, 0xf2, 0x85,
+    0x87, 0xab, 0x56, 0x3d, 0x44, 0x2b, 0xa4, 0x70, 0x07, 0x9e, 0xa7, 0xf4, 0x1e, 0x9c, 0xe6, 0x4c,
+    0x10, 0x07, 0x23, 0x85, 0x89, 0xa5, 0x13, 0x94, 0x57, 0xcb, 0x29, 0x03, 0xf7, 0x47, 0x7a, 0xa7,
+    0xd0, 0xdd, 0xdf, 0x65, 0xdd, 0x41, 0xf7, 0x72, 0x52, 0x1d, 0xad, 0xcd, 0x1d, 0x80, 0xdc, 0x2d,
+    0x6a, 0x2d, 0xdc, 0x4f, 0xfc, 0x55, 0xf0, 0x3a, 0x66, 0xb0, 0xa3, 0x07, 0xc4, 0x55, 0x9b, 0x21,
+    0xca, 0x06, 0x7a, 0x3f, 0x4b, 0xaf, 0x2f, 0xbd, 0x63, 0x87, 0x54, 0xae, 0x1d, 0xdb, 0xfa, 0x17,
+    0xed, 0x57, 0x1a, 0xde, 0xa7, 0xaa, 0x0b, 0x36, 0x0a, 0x6b, 0x39, 0xae, 0xd3, 0x35, 0x01, 0x40,
+    0xb5, 0xde, 0xd8, 0x2f, 0xe7, 0x1d, 0x2e, 0x9d, 0x5b, 0xca, 0x58, 0x94, 0x4d, 0x53, 0xd4, 0x43,
+    0x64, 0x47, 0x03, 0xf8, 0x45, 0x0a, 0xf7, 0x35, 0xf3, 0x9d, 0x13, 0x26, 0x82, 0x3b, 0x0d, 0xf3,
+    0x87, 0x32, 0xf3, 0x08, 0x75, 0x37, 0xf1, 0x06, 0x94, 0x45, 0x59, 0xaa, 0xd6, 0xad, 0x8f, 0x84,
+    0x52, 0x6f, 0xd8, 0x04, 0x66, 0x22, 0x3d, 0x2a, 0x4d, 0xeb, 0x0d, 0x1c, 0xa6, 0xf5, 0x10, 0xcb,
+    0xdf, 0x74, 0xf5, 0x8e, 0x3a, 0xc1, 0x1f, 0x07, 0x2c, 0xb7, 0x6a, 0x8d, 0x6e, 0x82, 0xdb, 0xa6,
+    0x37, 0x70, 0x7f, 0x11, 0x6f, 0x72, 0xb6, 0x43, 0x2c, 0xd9, 0xea, 0xb4, 0xe2, 0x0d, 0x6d, 0xd4,
+    0x33, 0x63, 0x83, 0xb1, 0x39, 0xa1, 0x39, 0xb6, 0xe1, 0xd3, 0x49, 0x0c, 0xbd, 0x07, 0x06, 0x0e,
+    0x40, 0x64, 0x4e, 0xae, 0x72, 0xbf, 0x3b, 0x10, 0xe2, 0xb2, 0x1e, 0x79, 0x11, 0x21, 0x43, 0x09,
+    0x3d, 0x55, 0x27, 0x12, 0x6b, 0xd7, 0x4c, 0x6f, 0x7f, 0xe4, 0x50, 0x04, 0x2e, 0x78, 0x0d, 0xd1,
+    0x93, 0xf7, 0xe0, 0xda, 0x91, 0x66, 0xc7, 0x09, 0xb1, 0x52, 0xcb, 0xec, 0x88, 0x4b, 0xf3, 0xce,
+    0x90, 0xd8, 0x55, 0x54, 0x94, 0x78, 0x72, 0x16, 0xaf, 0x5d, 0x73, 0x4d, 0x55, 0x38, 0xb2, 0x44,
+    0xef, 0x03, 0x4d, 0xe9, 0xd3, 0xdb, 0x7f, 0x0c, 0xac, 0xab, 0x83, 0x5f, 0x20, 0xf2, 0x3d, 0xb2,
+    0xa9, 0x5d, 0x5e, 0x33, 0x9e, 0x95, 0xee, 0xae, 0x1e, 0x56, 0x45, 0x42, 0x76, 0xb0, 0x64, 0x69,
+    0xed, 0x5e, 0xac, 0xae, 0x8a, 0xd5, 0x0d, 0x69, 0x9c, 0xda, 0x1a, 0x37, 0x0e, 0xc7, 0x04, 0x71,
+    0x06, 0x72, 0x31, 0x30, 0xac, 0x51, 0x63, 0xe2, 0x2f, 0x34, 0xf1, 0x0a, 0x44, 0x53, 0x30, 0xb4,
+    0xc7, 0x61, 0x68, 0x72, 0x65, 0x57, 0x70, 0x2c, 0x36, 0x25, 0xff, 0xd8, 0x9d, 0xb1, 0xe8, 0x08,
+    0xe9, 0x4b, 0x38, 0x55, 0x75, 0x2a, 0xb1, 0x36, 0x7f, 0x64, 0x9d, 0x3a, 0x94, 0x1e, 0xea, 0x69,
+    0x4d, 0x13, 0xba, 0x49, 0x93, 0xe3, 0x24, 0xbd, 0x07, 0xb8, 0x8a, 0xe2, 0x94, 0x80, 0x77, 0xaa,
+    0xa2, 0x6a, 0xdf, 0xa0, 0x38, 0xcd, 0xcc, 0xac, 0xb9, 0x2a, 0xfc, 0xd5, 0x7b, 0x57, 0x70, 0x84,
+    0x13, 0x69, 0x61, 0x60, 0x7c, 0x12, 0x7b, 0x1b, 0x55, 0xc3, 0x18, 0x54, 0x71, 0xe3, 0x92, 0x6e,
+    0xb5, 0x8e, 0xc5, 0x96, 0xa2, 0x8a, 0x5c, 0xd8, 0x24, 0xf3, 0x5d, 0xe4, 0x22, 0xb9, 0x25, 0x7e,
+    0xc1, 0xd5, 0x49, 0xbb, 0x40, 0x19, 0x6a, 0x4d, 0x7d, 0xb5, 0x59, 0x23, 0xa4, 0x8d, 0x7b, 0x6f,
+    0x38, 0xce, 0xf3, 0x77, 0x4d, 0xd6, 0xa7, 0x1c, 0x62, 0x78, 0x8b, 0x5e, 0x17, 0x8c, 0x3d, 0x0b,
+    0xd0, 0x7a, 0x1d, 0x6d, 0x07, 0x13, 0x3f, 0xa1, 0xce, 0x6f, 0x65, 0x77, 0x5d, 0x5e, 0x9f, 0xb4,
+    0xb4, 0x7a, 0x84, 0x62, 0x9b, 0x2b, 0xaf, 0x05, 0x82, 0xd7, 0x1e, 0xa5, 0xd8, 0x7e, 0x82, 0x17,
+    0x6a, 0x52, 0x85, 0xcf, 0xa5, 0xbb, 0xbd, 0xe9, 0xff, 0x95, 0x58, 0xff, 0x9d, 0x5a, 0x1d, 0xb7,
+    0x44, 0x82, 0xd5, 0x73, 0xe4, 0x3d, 0x2c, 0x49, 0x82, 0xcc, 0xda, 0x9f, 0xd3, 0x16, 0x2f, 0xbf,
+    0x64, 0x46, 0x55, 0xfc, 0xec, 0x07, 0x54, 0xa7, 0xfb, 0x7b, 0x4d, 0x94, 0x31, 0x4c, 0xcd, 0x55,
+    0xe7, 0x67, 0xb7, 0x59, 0xf6, 0x67, 0xf9, 0x61, 0xec, 0xf0, 0xdf, 0x68, 0xf3, 0x98, 0x64, 0xef,
+    0xe7, 0xd4, 0xce, 0x7a, 0xdd, 0xb7, 0x57, 0x71, 0xb5, 0xae, 0x7e, 0x21, 0x84, 0xfc, 0xdd, 0x8e,
+    0x90, 0x95, 0x59, 0xd4, 0xb9, 0xd6, 0x1c, 0x7b, 0xd1, 0x86, 0xcb, 0xf3, 0xe8, 0x8f, 0x3d, 0x25,
+    0x2d, 0x09, 0xe8, 0xd2, 0xa1, 0x5a, 0x6f, 0x28, 0xc3, 0xa5, 0x9f, 0x95, 0xa2, 0x92, 0x1a, 0x2a,
+    0x1e, 0x04, 0x3b, 0x08, 0x4e, 0xd4, 0x45, 0xf2, 0x19, 0x1a, 0xab, 0x5b, 0x55, 0x2b, 0x63, 0x19,
+    0xf9, 0x31, 0x56, 0x18, 0x90, 0xa2, 0x63, 0x93, 0x1a, 0x1c, 0x5f, 0xb1, 0x43, 0xa4, 0x21, 0xa1,
+    0x37, 0x27, 0xdb, 0x6c, 0x97, 0x80, 0x5c, 0xca, 0x49, 0xea, 0x99, 0xc2, 0x84, 0xec, 0xa3, 0x90,
+    0xbd, 0x13, 0xcd, 0xf6, 0x5f, 0x62, 0x77, 0xff, 0x35, 0xa8, 0xce, 0xee, 0xfd, 0xc2, 0x2b, 0xf6,
+    0x30, 0xac, 0xf8, 0x8e, 0x9a, 0x31, 0x8a, 0x3b, 0x55, 0xab, 0x9e, 0x78, 0x9c, 0xde, 0xd2, 0xfc,
+    0x33, 0x3d, 0x1c, 0xaf, 0xad, 0x6e, 0xa4, 0x96, 0xfa, 0x0b, 0xdc, 0xc1, 0x7c, 0x67, 0x33, 0x14,
+    0x49, 0x8b, 0xed, 0xf0, 0x97, 0xf4, 0xb0, 0x97, 0x49, 0x83, 0x78, 0x0e, 0xaf, 0x6c, 0xea, 0x99,
+    0xa4, 0xb3, 0x54, 0xee, 0x63, 0xdb, 0x1c, 0x4f, 0xe2, 0xe5, 0xd5, 0xec, 0x52, 0x96, 0xee, 0x57,
+    0x66, 0x83, 0xb3, 0x67, 0x7f, 0x19, 0x14, 0xdd, 0xfe, 0x36, 0xfc, 0x51, 0x16, 0x47, 0x20, 0xfd,
+    0xe6, 0xa9, 0x00, 0x6a, 0xdc, 0xe4, 0x33, 0x21, 0x99, 0x42, 0xac, 0x6e, 0xc2, 0xca, 0x78, 0x34,
+    0xbc, 0x07, 0xc7, 0x81, 0x5f, 0xd0, 0xb8, 0x35, 0x16, 0x2c, 0xa1, 0x4d, 0xde, 0xc5, 0xca, 0x15,
+    0xff, 0x6e, 0x8f, 0x56, 0x77, 0x2c, 0x86, 0xbd, 0x78, 0x6c, 0x0d, 0xaf, 0xcc, 0x18, 0xe9, 0xca,
+    0x9c, 0x8e, 0x5d, 0x85, 0xb5, 0xc4, 0xbb, 0xb0, 0x1a, 0x73, 0x08, 0xbb, 0xfc, 0x04, 0x3b, 0xb7,
+    0x28, 0x26, 0x46, 0x9d, 0x97, 0x7c, 0xea, 0xa2, 0x0c, 0x87, 0x37, 0xc0, 0x8e, 0xd2, 0x75, 0x66,
+    0x43, 0x9d, 0x29, 0x9e, 0x3b, 0x60, 0x9d, 0xcb, 0x1d, 0x38, 0x01, 0xa6, 0x8d, 0xee, 0xbc, 0x8d,
+    0x39, 0x04, 0x01, 0xd1, 0xf8, 0xa8, 0x01, 0x38, 0xe9, 0x36, 0xdf, 0xbc, 0x3b, 0x82, 0xfc, 0x38,
+    0xb1, 0x1e, 0x97, 0x42, 0x8c, 0xe7, 0x1e, 0x26, 0xd6, 0x0b, 0x78, 0x03, 0xe8, 0x06, 0x57, 0xb3,
+    0x0e, 0x03, 0xac, 0x6c, 0x85, 0x58, 0x5b, 0xe5, 0x6c, 0x2d, 0xb1, 0xba, 0x81, 0x69, 0xbc, 0x4f,
+    0xd6, 0x3c, 0x26, 0xee, 0xf6, 0xe8, 0x59, 0xce, 0x95, 0x8a, 0xbe, 0xc2, 0x22, 0x0f, 0xba, 0xe4,
+    0x57, 0x70, 0xdf, 0x26, 0xef, 0x34, 0x11, 0x0e, 0xc3, 0x9c, 0xc7, 0xed, 0x3d, 0x46, 0xef, 0x94,
+    0xd7, 0x13, 0xeb, 0x9f, 0xa4, 0x29, 0x18, 0x37, 0xf1, 0xdd, 0xd2, 0x1e, 0x2d, 0x7b, 0x89, 0x54,
+    0x76, 0x48, 0x1b, 0x75, 0x51, 0x8d, 0x52, 0xca, 0xa0, 0x64, 0x64, 0x9b, 0x88, 0xb0, 0x5f, 0x7a,
+    0xe6, 0x5b, 0x69, 0xa7, 0x26, 0x6a, 0x80, 0x58, 0xdb, 0x93, 0x5a, 0x49, 0xef, 0x34, 0x6b, 0x37,
+    0xf7, 0x6a, 0x13, 0x18, 0xb3, 0x15, 0x10, 0x0e, 0xf2, 0xfb, 0x89, 0xd0, 0x49, 0xf2, 0x5a, 0x62,
+    0xaf, 0xe1, 0xc9, 0xa2, 0x57, 0x1a, 0x0c, 0xbd, 0x55, 0xc3, 0xac, 0x70, 0xf7, 0x0a, 0x30, 0x05,
+    0x23, 0xb1, 0xd7, 0x1c, 0x13, 0xa1, 0x0e, 0x19, 0x99, 0x26, 0xb4, 0x70, 0x7b, 0xff, 0x01, 0x78,
+    0x06, 0xb2, 0xa1, 0x79, 0xcd, 0x39, 0x70, 0xef, 0x85, 0x16, 0x68, 0x2c, 0x09, 0x1d, 0x44, 0x00,
+    0x58, 0x0a, 0xd6, 0xeb, 0x04, 0x10, 0x35, 0x17, 0x85, 0x70, 0x89, 0x6f, 0x47, 0x45, 0x11, 0x0e,
+    0x93, 0x3d, 0x1a, 0x70, 0xd1, 0xad, 0x0a, 0xae, 0x9c, 0x75, 0xc6, 0x0e, 0x12, 0x1b, 0xb8, 0xb7,
+    0xe0, 0x7a, 0x9d, 0x96, 0x00, 0x6b, 0xbe, 0x5e, 0xf4, 0xc4, 0x64, 0x71, 0xea, 0x4d, 0xf2, 0x0c,
+    0xad, 0xb4, 0x56, 0x47, 0x1a, 0x22, 0x4e, 0x3a, 0x37, 0xd0, 0x75, 0xd2, 0x87, 0x57, 0x21, 0x8f,
+    0xc9, 0x49, 0xf1, 0x0a, 0xe3, 0xc8, 0x90, 0xa6, 0xa0, 0xd3, 0x32, 0x40, 0x2e, 0x56, 0x37, 0x51,
+    0xf7, 0x23, 0x17, 0x9c, 0x18, 0x05, 0xd8, 0xfe, 0x29, 0x0a, 0xd9, 0xac, 0x6b, 0xa1, 0x7c, 0xf7,
+    0x64, 0x93, 0x02, 0x50, 0xc9, 0xd2, 0x04, 0x1f, 0xc9, 0xd5, 0x00, 0xff, 0xd7, 0xe9, 0x0e, 0xd1,
+    0xb2, 0x16, 0x92, 0xa9, 0xc5, 0x2b, 0xc5, 0xbc, 0xcf, 0x1b, 0x87, 0x87, 0xc2, 0x34, 0xab, 0x25,
+    0x6b, 0x2b, 0xf8, 0x07, 0x8b, 0x1a, 0x48, 0xcb, 0x21, 0xf4, 0xfd, 0xfa, 0xde, 0xcf, 0x7a, 0x04,
+    0x2a, 0xa4, 0x25, 0x35, 0x72, 0x7b, 0x45, 0x3c, 0x62, 0x05, 0x0e, 0xc1, 0x61, 0x4a, 0x59, 0x9f,
+    0xd1, 0x2d, 0xc7, 0x25, 0x8b, 0xbb, 0x2f, 0x23, 0x1b, 0xf0, 0xa6, 0xa9, 0xbc, 0xf2, 0xb2, 0x74,
+    0xb7, 0xb4, 0x5d, 0x73, 0x88, 0xce, 0xa5, 0x56, 0x25, 0xa9, 0x4d, 0x95, 0xb6, 0x1e, 0x69, 0x9d,
+    0x56, 0xca, 0xd5, 0x01, 0x8a, 0x8e, 0x34, 0x72, 0x32, 0xd4, 0xa4, 0x4c, 0x16, 0xba, 0xab, 0x87,
+    0x58, 0x14, 0xd1, 0x6b, 0x8c, 0x63, 0x29, 0xcc, 0xfe, 0xd5, 0x27, 0x10, 0x19, 0x16, 0xac, 0xe2,
+    0x0d, 0x79, 0xcd, 0x65, 0x2d, 0x1a, 0xde, 0x6e, 0xf1, 0x9c, 0x9f, 0x18, 0x49, 0xb6, 0xa6, 0x39,
+    0x93, 0xee, 0xdc, 0x37, 0x8f, 0xa3, 0xe3, 0xed, 0xf1, 0x86, 0x42, 0x59, 0x44, 0x9b, 0x10, 0x23,
+    0x59, 0x7d, 0xb2, 0x2e, 0x47, 0x12, 0x5a, 0xe5, 0x45, 0x67, 0x02, 0x98, 0x82, 0xd4, 0xf8, 0xb2,
+    0x00, 0x46, 0xf2, 0x0a, 0xde, 0xc7, 0xed, 0xcd, 0xa7, 0x11, 0xaf, 0x8f, 0x34, 0xa0, 0x30, 0x09,
+    0x13, 0xe8, 0x35, 0x24, 0x5f, 0xd7, 0x83, 0xf4, 0x84, 0x3c, 0xba, 0x5f, 0xa6, 0x0e, 0xd2, 0x62,
+    0x3c, 0x01, 0x1e, 0x9d, 0x6e, 0xb5, 0xac, 0x69, 0x21, 0x78, 0x98, 0xdb, 0x97, 0x74, 0x12, 0xaf,
+    0x89, 0xb5, 0x56, 0x24, 0x21, 0x83, 0xf4, 0x52, 0xb9, 0x46, 0xbd, 0xfd, 0x4c, 0x1a, 0x51, 0x7a,
+    0xc6, 0xe1, 0xbe, 0xf0, 0x3a, 0x0d, 0xc8, 0x48, 0x4b, 0x2c, 0x7e, 0xc0, 0x83, 0x4b, 0xed, 0xc1,
+    0x43, 0x38, 0xa9, 0x56, 0x85, 0x4b, 0x6d, 0x4c, 0x13, 0x9b, 0x63, 0x92, 0x2e, 0x0b, 0x97, 0x64,
+    0x5d, 0x32, 0x78, 0x56, 0x72, 0xb4, 0x4a, 0x3d, 0x39, 0xef, 0x0d, 0xf2, 0x19, 0xb9, 0xd8, 0xf7,
+    0x3e, 0x4d, 0xe1, 0x3c, 0xd9, 0x3e, 0x2a, 0x45, 0xae, 0xf5, 0xbd, 0x2f, 0x99, 0x3a, 0x53, 0x44,
+    0xbe, 0x23, 0x66, 0x85, 0xe9, 0x02, 0xe7, 0x2a, 0xc3, 0x5d, 0x4f, 0x77, 0x22, 0x5e, 0x4e, 0x72,
+    0x23, 0x20, 0xeb, 0x0d, 0xc9, 0x79, 0x52, 0x5f, 0x3d, 0x82, 0x43, 0x87, 0x10, 0x7b, 0x84, 0x15,
+    0xca, 0xa4, 0x4a, 0x00, 0x7e, 0x36, 0xc9, 0x31, 0x57, 0x28, 0x94, 0x9c, 0x67, 0xb5, 0xd2, 0xe3,
+    0x67, 0x75, 0x78, 0xa2, 0x7d, 0x2a, 0xc8, 0x18, 0xdb, 0x27, 0x39, 0x34, 0x40, 0xdb, 0x07, 0x1c,
+    0x71, 0x0f, 0x3c, 0x1a, 0x13, 0xd1, 0x27, 0xa4, 0x82, 0x1f, 0x1a, 0xea, 0x30, 0x80, 0xe4, 0x4e,
+    0x7e, 0x34, 0x5e, 0x5e, 0x7f, 0x56, 0x4b, 0x1e, 0xd5, 0x90, 0x85, 0xb2, 0x39, 0x44, 0xca, 0xf3,
+    0x25, 0x5d, 0xa9, 0x98, 0x9e, 0xd0, 0x28, 0x36, 0x8e, 0x48, 0xd6, 0x4e, 0x39, 0xfa, 0xa4, 0xbc,
+    0x4b, 0x51, 0x91, 0x02, 0xec, 0xc4, 0x86, 0x98, 0x47, 0x84, 0xbf, 0x03, 0x21, 0x2f, 0x00, 0xb1,
+    0x4d, 0xbe, 0x64, 0x98, 0xe7, 0xc0, 0xe5, 0xbd, 0x90, 0x04, 0x42, 0xfe, 0x14, 0xa5, 0xe9, 0x71,
+    0xbc, 0xdb, 0xad, 0x0d, 0x2e, 0x7a, 0xda, 0x7f, 0xae, 0xde, 0x6e, 0xfd, 0xf4, 0x2b, 0xea, 0x12,
+    0xe0, 0x81, 0x92, 0x3b, 0xb6, 0xa2, 0x94, 0x0d, 0x2e, 0x9c, 0xbc, 0x83, 0x49, 0x12, 0xde, 0x14,
+    0x86, 0xe6, 0x90, 0xad, 0xc7, 0x1a, 0xa3, 0x0e, 0x38, 0xe9, 0xc4, 0x55, 0xd1, 0xb9, 0xd4, 0xcd,
+    0x79, 0x85, 0xae, 0x97, 0xd4, 0xc7, 0x40, 0x4a, 0x9a, 0x4e, 0xdb, 0x80, 0x7c, 0xdc, 0xc2, 0x23,
+    0xd5, 0x5c, 0x4d, 0x07, 0x3d, 0xc3, 0xfe, 0x17, 0xfa, 0xf1, 0xb0, 0xd7, 0x56, 0x23, 0x88, 0x20,
+    0x25, 0x9b, 0x80, 0x92, 0xbb, 0x34, 0x52, 0xa4, 0xe4, 0xd0, 0xe2, 0x45, 0x72, 0x9f, 0xe4, 0xd0,
+    0x45, 0x8d, 0x88, 0xbb, 0x50, 0x34, 0x71, 0x1b, 0xe8, 0x13, 0x5c, 0x8e, 0x2a, 0x96, 0x26, 0x71,
+    0xc7, 0xce, 0x71, 0x07, 0xaf, 0x78, 0xbe, 0xd0, 0x54, 0x0f, 0x33, 0x6f, 0xfb, 0xfd, 0x9f, 0xe0,
+    0xe7, 0x94, 0x38, 0xd3, 0x95, 0xa4, 0xcb, 0x78, 0x86, 0x3d, 0x5f, 0xed, 0x4f, 0x8e, 0xa6, 0x1d,
+    0x48, 0x2f, 0xe6, 0x60, 0x07, 0xc7, 0xd0, 0x97, 0x4c, 0x3a, 0x4b, 0x67, 0xc6, 0x69, 0x87, 0x73,
+    0xde, 0x43, 0x2f, 0x6b, 0x49, 0x75, 0xa5, 0x8f, 0x05, 0x9e, 0x90, 0x01, 0x68, 0x26, 0x55, 0x2a,
+    0xdc, 0xde, 0x53, 0x14, 0x23, 0xda, 0x00, 0x64, 0x19, 0x84, 0x99, 0x7d, 0x58, 0x2b, 0xe6, 0xe8,
+    0xfc, 0xcd, 0xa9, 0xaa, 0xf0, 0x86, 0xa0, 0xf5, 0x3d, 0xa4, 0x22, 0x11, 0xc1, 0x1d, 0x6b, 0xe3,
+    0x0e, 0x9e, 0xf4, 0x5c, 0x1f, 0x8b, 0xc4, 0xc9, 0x4f, 0xb0, 0x0e, 0xf8, 0x2e, 0x49, 0xc3, 0xf4,
+    0x73, 0x28, 0xb1, 0xbd, 0x0e, 0x7b, 0xc0, 0xfd, 0x89, 0xed, 0xa9, 0xc8, 0xbb, 0xd3, 0xf8, 0x04,
+    0x77, 0xb0, 0xcd, 0xf3, 0xb9, 0xa6, 0x7a, 0x08, 0x1b, 0x1f, 0x52, 0x1b, 0xb7, 0x05, 0x50, 0x57,
+    0x69, 0x83, 0xbe, 0xc0, 0xe1, 0xd5, 0x1f, 0x40, 0xc6, 0xfd, 0xf8, 0x2d, 0xa3, 0x6e, 0xe9, 0xc5,
+    0xd5, 0x1f, 0x42, 0x22, 0xb6, 0x87, 0xbd, 0x84, 0x77, 0x15, 0x0e, 0xe7, 0x60, 0x11, 0x7e, 0x96,
+    0xe9, 0xc5, 0x1c, 0xcc, 0xf7, 0x86, 0xab, 0xad, 0xd3, 0x08, 0xfd, 0x81, 0x01, 0x65, 0x8a, 0xee,
+    0x98, 0x15, 0x94, 0x21, 0x64, 0x88, 0xdb, 0xfb, 0x2c, 0x5d, 0xd3, 0xb9, 0xc3, 0x53, 0x9b, 0x62,
+    0xa2, 0x2b, 0x81, 0x1a, 0x6a, 0x42, 0xea, 0x97, 0x56, 0x69, 0x98, 0x59, 0x2d, 0x6c, 0xcb, 0x21,
+    0x94, 0x52, 0x9b, 0xad, 0x94, 0xb5, 0x65, 0xdb, 0xcc, 0xb6, 0xec, 0x51, 0x66, 0x5e, 0xa6, 0xe7,
+    0x0e, 0xe6, 0x8d, 0x86, 0x30, 0x5e, 0x85, 0xa0, 0x4a, 0x03, 0x13, 0x3c, 0x86, 0x62, 0xbf, 0xa9,
+    0x2e, 0xef, 0x97, 0xff, 0x95, 0x8a, 0x12, 0xee, 0x98, 0x4f, 0xa0, 0x58, 0x68, 0xa9, 0x3c, 0x50,
+    0x71, 0x09, 0xcc, 0xa7, 0x82, 0x51, 0xe2, 0x75, 0x61, 0x68, 0x69, 0xe6, 0x20, 0x16, 0xf8, 0xc5,
+    0x80, 0x73, 0xd9, 0x39, 0x39, 0x39, 0xd9, 0x39, 0xe6, 0x9c, 0xb1, 0x93, 0x0c, 0x17, 0x12, 0x98,
+    0x64, 0xe8, 0x3c, 0x05, 0xd0, 0x27, 0xa9, 0xd0, 0xe9, 0x85, 0xae, 0x52, 0xc6, 0x4c, 0x0f, 0x0a,
+    0x4c, 0x1f, 0x75, 0x20, 0x09, 0xf7, 0x7e, 0xf4, 0xff, 0xea, 0xa0, 0x52, 0x0c, 0xee, 0x19, 0x41,
+    0xec, 0x9c, 0xae, 0xc5, 0xb5, 0x29, 0xfc, 0x4e, 0xd0, 0xed, 0x09, 0x7e, 0x84, 0xde, 0xb6, 0xa7,
+    0x22, 0xdb, 0x92, 0xb5, 0x63, 0x57, 0x82, 0x15, 0xcd, 0xa9, 0xbc, 0xe8, 0xbf, 0xdf, 0x40, 0x6a,
+    0x3f, 0xc8, 0x0a, 0x4f, 0x48, 0x19, 0x3e, 0xc9, 0x76, 0x53, 0xda, 0x33, 0x08, 0xee, 0x19, 0xdb,
+    0x2c, 0x6d, 0xfc, 0x36, 0xea, 0xbc, 0xeb, 0xea, 0x9e, 0xa8, 0xaa, 0xca, 0x68, 0x46, 0x18, 0x6f,
+    0xf4, 0xbb, 0xce, 0x7d, 0x8a, 0xcb, 0xbc, 0xcf, 0x2d, 0xc3, 0x4f, 0x89, 0x54, 0xde, 0x00, 0xde,
+    0x89, 0x57, 0x19, 0x8a, 0x8c, 0x25, 0x97, 0x98, 0x3a, 0xf1, 0xa0, 0xb7, 0xfc, 0x27, 0xd0, 0x3f,
+    0x53, 0x27, 0x60, 0x04, 0xbe, 0xf4, 0x79, 0xb0, 0x0f, 0x2b, 0x2a, 0x3b, 0x48, 0xfb, 0x34, 0x30,
+    0x4e, 0xbc, 0x52, 0x19, 0xbd, 0x5a, 0x6c, 0x52, 0x5c, 0x27, 0x9e, 0x7b, 0xd5, 0xfe, 0xae, 0x99,
+    0x0e, 0x34, 0xe1, 0x86, 0xdf, 0x9f, 0x30, 0x1c, 0xdb, 0x4e, 0x9a, 0x8c, 0x6e, 0x20, 0x90, 0xd9,
+    0x9c, 0x8d, 0xe7, 0xb2, 0x6c, 0x39, 0x96, 0xdc, 0x51, 0xe4, 0xf1, 0xd1, 0x11, 0xce, 0x43, 0x24,
+    0x9c, 0x93, 0xc9, 0x2a, 0x44, 0x96, 0x4c, 0x7f, 0x13, 0x25, 0x1f, 0x5f, 0xbd, 0x13, 0xfd, 0x78,
+    0x11, 0x2c, 0x57, 0x99, 0xa1, 0x1e, 0x3a, 0x1d, 0xa5, 0xd9, 0x4c, 0x60, 0xbd, 0x4e, 0x83, 0x77,
+    0xa7, 0x63, 0x46, 0x79, 0x02, 0xae, 0x51, 0x9f, 0xa2, 0xd2, 0xe2, 0xe9, 0xf7, 0x73, 0xc4, 0xac,
+    0x21, 0xb8, 0x5b, 0xff, 0xac, 0x64, 0xd5, 0x8b, 0x0d, 0xfa, 0xc0, 0x9a, 0x58, 0xf0, 0xca, 0xee,
+    0x72, 0x56, 0x30, 0x4b, 0xa9, 0x3e, 0x69, 0xd7, 0xcd, 0xa3, 0x54, 0xd9, 0x02, 0x9b, 0xdc, 0x23,
+    0xd2, 0xa3, 0x83, 0x8e, 0x05, 0xe4, 0x1a, 0xdb, 0x34, 0x79, 0xd7, 0xb7, 0xd5, 0x23, 0xa8, 0x70,
+    0xa8, 0xa5, 0xb3, 0xc1, 0x09, 0x4b, 0x68, 0x9a, 0x80, 0x4a, 0x06, 0x7e, 0x0e, 0x6a, 0xa1, 0xe0,
+    0x0b, 0xcd, 0xeb, 0x66, 0x1b, 0xc1, 0x0c, 0x7a, 0xb5, 0x2c, 0xfc, 0x09, 0x65, 0xf3, 0x20, 0xae,
+    0x8c, 0x59, 0x2d, 0xbc, 0x4f, 0xfb, 0xf7, 0x91, 0x2c, 0x0d, 0x8a, 0xbd, 0x3e, 0xe0, 0x97, 0x35,
+    0x68, 0x98, 0x3b, 0xdf, 0x32, 0x12, 0xe2, 0xf0, 0xdb, 0x38, 0xbc, 0x4e, 0xd2, 0xe3, 0x01, 0xf4,
+    0x96, 0x08, 0x1f, 0x57, 0xf3, 0x37, 0x0c, 0x77, 0xf9, 0x79, 0xb3, 0xf9, 0x44, 0xf5, 0xd3, 0x50,
+    0xa1, 0x26, 0x3d, 0x9e, 0xa6, 0x14, 0xa2, 0x89, 0xd0, 0x8d, 0x07, 0x8c, 0xb5, 0xce, 0x27, 0x24,
+    0x3e, 0x5e, 0xae, 0xd0, 0x83, 0x73, 0xa9, 0x49, 0x0a, 0x17, 0xd6, 0xe0, 0x91, 0x98, 0x3d, 0x3e,
+    0x69, 0xe3, 0x4d, 0x29, 0x63, 0x90, 0x1d, 0x94, 0xd6, 0x7e, 0x1b, 0x75, 0x19, 0xc6, 0x99, 0x34,
+    0x2c, 0x59, 0xa3, 0xc9, 0xa5, 0xd8, 0xcf, 0xb8, 0x57, 0x1a, 0x93, 0x78, 0x7d, 0xec, 0x49, 0xee,
+    0xd5, 0x66, 0xf0, 0x02, 0x20, 0x94, 0xe1, 0x5e, 0x71, 0x6b, 0xdb, 0xb5, 0x83, 0x42, 0x78, 0x55,
+    0xe5, 0x3c, 0x98, 0xc8, 0x6b, 0xf0, 0x54, 0x19, 0x9a, 0x7a, 0x3e, 0xde, 0xe9, 0x14, 0x9b, 0x62,
+    0x1e, 0x16, 0x7e, 0x5d, 0x55, 0x39, 0x97, 0x71, 0x42, 0x71, 0x22, 0xe3, 0xdc, 0x8c, 0x7f, 0x25,
+    0x41, 0xe7, 0x9c, 0x21, 0x03, 0x82, 0x97, 0xfd, 0x82, 0x61, 0xb4, 0x47, 0xa5, 0xd8, 0xd4, 0x33,
+    0xa5, 0xde, 0x7b, 0x8d, 0x6e, 0x6f, 0x12, 0xd4, 0x00, 0x50, 0x3f, 0xac, 0x64, 0x54, 0x2b, 0xe1,
+    0xe6, 0x6e, 0xa5, 0x0f, 0xcf, 0x9f, 0x03, 0xef, 0xea, 0xe8, 0x67, 0x71, 0x34, 0x30, 0xa9, 0x85,
+    0xef, 0x67, 0x83, 0xa7, 0x57, 0xed, 0xbf, 0x51, 0x6f, 0xc3, 0xf8, 0xae, 0xdf, 0x89, 0xee, 0x96,
+    0x49, 0xbc, 0x3e, 0x14, 0xef, 0x4f, 0x29, 0x12, 0x1f, 0x3d, 0x99, 0xd7, 0xe1, 0x4c, 0x38, 0x15,
+    0x3f, 0x02, 0xf6, 0x73, 0x5c, 0x78, 0xb0, 0xba, 0xe5, 0x14, 0x88, 0xfa, 0x0e, 0x1b, 0xd1, 0x59,
+    0xc3, 0xef, 0xd3, 0xf0, 0x9d, 0xb2, 0x06, 0x26, 0xda, 0xe3, 0xf2, 0x4a, 0x8f, 0x34, 0x4e, 0xda,
+    0xae, 0x25, 0xc2, 0x69, 0xb6, 0x09, 0x66, 0x4d, 0xea, 0x00, 0xb4, 0x44, 0x9d, 0x5c, 0x01, 0xa0,
+    0x4e, 0x4d, 0xcb, 0xd3, 0x39, 0x7e, 0x94, 0x24, 0x80, 0x4b, 0xd2, 0x1d, 0x7b, 0x1e, 0x27, 0xa8,
+    0x76, 0x70, 0xe8, 0x24, 0xd3, 0x61, 0x70, 0xe4, 0x02, 0x53, 0xf9, 0x23, 0x30, 0xeb, 0xe2, 0x54,
+    0xde, 0xf5, 0x16, 0x0d, 0x17, 0xc1, 0x85, 0x6a, 0x0d, 0xb6, 0xe4, 0x5e, 0xe5, 0xfb, 0xd0, 0x9d,
+    0x82, 0xf7, 0x6e, 0xbc, 0xd1, 0x67, 0x3d, 0x2e, 0xaf, 0x3f, 0x0f, 0x9e, 0xe1, 0x85, 0x8a, 0x07,
+    0xaa, 0x2a, 0xfb, 0xf0, 0xd3, 0x00, 0x42, 0xab, 0x0a, 0x7b, 0x5a, 0x5e, 0x47, 0xc5, 0x4c, 0x98,
+    0x03, 0xc9, 0x52, 0x3c, 0xe4, 0x9e, 0xaf, 0x49, 0xf0, 0xc5, 0x5e, 0x0e, 0xe5, 0x4f, 0x4f, 0x36,
+    0xb5, 0x48, 0xd6, 0x0b, 0x24, 0x84, 0x3c, 0xac, 0xf1, 0x2e, 0x03, 0x77, 0x27, 0x09, 0x8f, 0xa8,
+    0x82, 0xb7, 0xd6, 0x11, 0x3b, 0xc0, 0xbd, 0xda, 0xa8, 0xcd, 0xeb, 0x13, 0x96, 0x24, 0x59, 0x15,
+    0xf0, 0xcf, 0x62, 0x07, 0x1c, 0xf3, 0x24, 0xd3, 0xe9, 0x50, 0x13, 0x08, 0x72, 0x0b, 0x0c, 0x3d,
+    0xa1, 0x0d, 0xe6, 0x7d, 0x68, 0x19, 0x49, 0x52, 0x35, 0xe8, 0x34, 0xe1, 0xdd, 0xf1, 0xce, 0xe4,
+    0xa4, 0x76, 0x6e, 0x6f, 0x08, 0x1e, 0x85, 0x7a, 0x06, 0x30, 0x9c, 0x66, 0x02, 0xef, 0xad, 0xbd,
+    0xa2, 0x80, 0xf4, 0x04, 0xb0, 0xe0, 0xbb, 0x63, 0x5b, 0xa0, 0x6e, 0xc5, 0x9f, 0xa5, 0xca, 0x0b,
+    0x92, 0xf5, 0x74, 0xa8, 0x35, 0x08, 0xab, 0x97, 0xdc, 0x3d, 0x0d, 0x9c, 0xc7, 0x4c, 0x8d, 0x3a,
+    0xb9, 0x55, 0x3c, 0x88, 0x24, 0x00, 0xef, 0x77, 0x77, 0x9b, 0x9e, 0x80, 0x6b, 0x9b, 0x86, 0x22,
+    0xbb, 0xde, 0xa3, 0xc1, 0x4b, 0x65, 0x2b, 0x3d, 0x09, 0x30, 0x4d, 0x77, 0x4c, 0xa3, 0x39, 0x3a,
+    0xe2, 0xf4, 0x68, 0xbd, 0xcf, 0x03, 0x4c, 0x6f, 0x75, 0xf5, 0x2d, 0x3f, 0xbd, 0x75, 0xe2, 0xde,
+    0x36, 0x31, 0x68, 0x3a, 0x17, 0x77, 0xa2, 0x13, 0x2f, 0xf1, 0x31, 0xf2, 0xa2, 0xc7, 0x48, 0x7a,
+    0x8f, 0x1e, 0xb7, 0x3e, 0xd2, 0x7b, 0x34, 0x78, 0x3a, 0x49, 0xd3, 0x03, 0x1c, 0x84, 0x84, 0x0e,
+    0x38, 0x0a, 0x3f, 0xda, 0x34, 0x32, 0x35, 0xb8, 0xda, 0x80, 0x56, 0xaf, 0x5c, 0xf9, 0x2a, 0x60,
+    0x94, 0x93, 0x27, 0xb0, 0xea, 0x79, 0x00, 0xb1, 0x7b, 0xae, 0x2c, 0x5c, 0xc0, 0x95, 0x01, 0x9b,
+    0x32, 0x3d, 0x5c, 0xfd, 0x30, 0x4a, 0x46, 0xbc, 0xd9, 0x46, 0xed, 0xfc, 0x54, 0xe5, 0xaf, 0x1f,
+    0xd2, 0x15, 0x01, 0xee, 0x60, 0x46, 0xfc, 0xaa, 0xb5, 0x90, 0x29, 0x08, 0xdc, 0x41, 0xbc, 0x47,
+    0xa4, 0xe1, 0x0e, 0x0a, 0x37, 0xd9, 0xa6, 0xd2, 0x70, 0x7b, 0xa4, 0x09, 0xf7, 0xe5, 0x66, 0x84,
+    0x07, 0x56, 0x54, 0x85, 0xc7, 0xa0, 0x6e, 0xf8, 0x2a, 0x1c, 0xef, 0xb6, 0x5c, 0x29, 0x63, 0x2e,
+    0x77, 0xd0, 0xe7, 0x51, 0x74, 0x62, 0xa7, 0x0f, 0x2a, 0x6b, 0xec, 0x0d, 0x74, 0xd3, 0xaf, 0x27,
+    0x2c, 0x58, 0x79, 0x25, 0x9e, 0x44, 0xbd, 0xfe, 0x7b, 0x8a, 0x53, 0xd5, 0xaa, 0x55, 0x74, 0x95,
+    0x65, 0x82, 0xfd, 0x7d, 0xfc, 0xae, 0xc3, 0x72, 0xba, 0x34, 0xad, 0x11, 0x8f, 0xcf, 0x05, 0x1f,
+    0xc2, 0xfe, 0x02, 0x64, 0x79, 0x27, 0xdb, 0x5b, 0xf0, 0xde, 0x96, 0xce, 0x9e, 0x65, 0xa2, 0x17,
+    0xbb, 0x3c, 0x6a, 0x50, 0x33, 0xe7, 0xb3, 0xa0, 0x28, 0x57, 0x77, 0xef, 0x40, 0x62, 0x09, 0x3a,
+    0x57, 0xbf, 0xf3, 0xc7, 0x10, 0xad, 0x77, 0x04, 0x57, 0xec, 0x0d, 0x81, 0xfd, 0x07, 0x9b, 0xf2,
+    0x44, 0x47, 0x60, 0xb1, 0x96, 0x73, 0xdd, 0x83, 0x7b, 0x3c, 0x6f, 0x61, 0xbe, 0xd7, 0x8e, 0x37,
+    0x2a, 0xe9, 0xd6, 0x43, 0x38, 0x5e, 0xfe, 0xc9, 0xd0, 0x14, 0x37, 0x67, 0x84, 0x84, 0x32, 0x04,
+    0x70, 0xd7, 0x90, 0x1e, 0xf1, 0xba, 0xee, 0x18, 0x6e, 0xc7, 0xcd, 0x1a, 0xcc, 0x36, 0x97, 0x3e,
+    0xa3, 0xac, 0xa0, 0xf8, 0xea, 0xa4, 0x6d, 0xe1, 0x24, 0x30, 0xb6, 0x59, 0x23, 0x10, 0xb6, 0xaf,
+    0xd2, 0xa3, 0x77, 0x23, 0x4c, 0xb5, 0xcf, 0xa5, 0x77, 0x24, 0x15, 0x2b, 0x58, 0xde, 0x03, 0x1a,
+    0xf5, 0x4c, 0x5c, 0x18, 0x96, 0xb1, 0xd2, 0xc6, 0x68, 0xf9, 0x63, 0xfc, 0x7c, 0x55, 0xe9, 0x42,
+    0x24, 0xf7, 0xef, 0x35, 0x81, 0xef, 0x73, 0x41, 0x27, 0xe2, 0x97, 0x13, 0xb9, 0x83, 0x6e, 0x9b,
+    0xb9, 0x54, 0xa7, 0x74, 0x7c, 0x44, 0xc1, 0xe3, 0x6a, 0x39, 0xe7, 0x2a, 0x56, 0x3f, 0x65, 0xa5,
+    0xa7, 0xfb, 0x24, 0xdd, 0x2a, 0x8e, 0xf6, 0x97, 0xf0, 0x10, 0x0a, 0x00, 0xd8, 0x12, 0x00, 0xb0,
+    0x31, 0x44, 0x76, 0x65, 0xe0, 0x56, 0x8a, 0xa0, 0x37, 0x2b, 0xdd, 0x97, 0xe9, 0x00, 0x03, 0x50,
+    0x39, 0x15, 0xea, 0x1c, 0xe5, 0xf9, 0xd1, 0x50, 0xf5, 0x38, 0x5f, 0xf2, 0xdd, 0xad, 0xa5, 0x89,
+    0xca, 0xc5, 0x80, 0x81, 0x6f, 0x92, 0xf8, 0x26, 0xa3, 0x9f, 0xec, 0x31, 0x90, 0x8c, 0xb8, 0xfd,
+    0x6c, 0x6d, 0x78, 0x6d, 0x46, 0x3c, 0xd9, 0x38, 0x17, 0xc8, 0x30, 0x8f, 0x67, 0x40, 0x98, 0xcc,
+    0xca, 0xa4, 0xab, 0x6a, 0x45, 0x50, 0xcb, 0x3c, 0x9f, 0xbc, 0x21, 0xc4, 0xa2, 0xfc, 0x32, 0xd0,
+    0x34, 0x43, 0xdb, 0xc4, 0x2c, 0x80, 0xe8, 0x25, 0xd9, 0x2f, 0x28, 0x14, 0x05, 0x77, 0x68, 0x00,
+    0x2f, 0x5d, 0x7d, 0x1d, 0x7a, 0x4d, 0x6f, 0xed, 0xc6, 0x2d, 0xa0, 0x5c, 0x8b, 0x72, 0x38, 0x34,
+    0x70, 0x83, 0xc4, 0x47, 0xd2, 0x42, 0x8a, 0x9b, 0x45, 0x2c, 0x65, 0x78, 0x50, 0xa0, 0x62, 0x22,
+    0xbe, 0x88, 0x35, 0x5d, 0xcf, 0x8f, 0x04, 0x86, 0x31, 0x27, 0x30, 0x8c, 0x76, 0x1c, 0xc6, 0x17,
+    0x48, 0x1c, 0x8b, 0xb9, 0xd4, 0xa0, 0x1c, 0xfb, 0x30, 0xb8, 0x71, 0x3a, 0x07, 0xc8, 0x42, 0xe1,
+    0xda, 0x7f, 0x8c, 0xd7, 0xb1, 0xc7, 0x77, 0xd1, 0xfa, 0x78, 0x6e, 0xf9, 0x13, 0xf5, 0x30, 0x74,
+    0xd7, 0x8f, 0xd4, 0xbb, 0x6f, 0x5a, 0x4a, 0x3b, 0xc5, 0xac, 0xac, 0x0b, 0xac, 0xf6, 0xf2, 0x3e,
+    0xff, 0xb6, 0x38, 0xe5, 0x2f, 0x03, 0x01, 0xec, 0xf5, 0x52, 0x46, 0xdc, 0xf8, 0x0c, 0x03, 0x57,
+    0xd3, 0x4c, 0x8f, 0xf8, 0xf9, 0x88, 0x47, 0xbc, 0xce, 0x11, 0xd3, 0x69, 0x64, 0x3d, 0xdf, 0x2a,
+    0xf3, 0xd7, 0xe8, 0x91, 0x70, 0xb1, 0x73, 0x62, 0x60, 0x32, 0x03, 0x54, 0x08, 0x7f, 0x81, 0x3b,
+    0xe8, 0x81, 0x78, 0xc2, 0xe8, 0x6f, 0xe6, 0xaf, 0x61, 0x66, 0x71, 0x33, 0xff, 0x39, 0xb6, 0x3e,
+    0x5d, 0x8c, 0x97, 0xd8, 0xf8, 0x56, 0xf8, 0xf9, 0x12, 0xbf, 0xb2, 0x20, 0xb4, 0x97, 0xce, 0x56,
+    0x22, 0x83, 0x48, 0x73, 0xae, 0x77, 0xb1, 0x8f, 0x0c, 0x3d, 0x3b, 0xc8, 0x1d, 0x34, 0x7d, 0x9e,
+    0x4d, 0xbf, 0xa5, 0xa3, 0x7e, 0x0d, 0x04, 0x54, 0xcc, 0xfa, 0x39, 0x7b, 0xa9, 0x78, 0x05, 0x98,
+    0x25, 0xfa, 0xfd, 0x96, 0x8a, 0x79, 0x60, 0xd1, 0xaa, 0xbe, 0x60, 0x85, 0xf8, 0xa4, 0x66, 0xf5,
+    0x8c, 0xfe, 0xa9, 0x8a, 0xd8, 0x1c, 0xfb, 0x71, 0xd4, 0x8d, 0x19, 0xea, 0x51, 0x70, 0xb5, 0x22,
+    0xfd, 0xe6, 0x53, 0x52, 0x33, 0xdd, 0x51, 0x8c, 0x05, 0x07, 0xbe, 0x14, 0x77, 0x5b, 0xf9, 0x6b,
+    0xc5, 0xcd, 0xf4, 0x42, 0xa3, 0x8a, 0x3a, 0x77, 0xf0, 0x84, 0x39, 0xbb, 0x74, 0x96, 0x52, 0xf5,
+    0x9f, 0x01, 0x4c, 0x84, 0x25, 0x94, 0x59, 0x3e, 0x45, 0xee, 0x57, 0xe9, 0x3c, 0x80, 0x5b, 0x2d,
+    0x3b, 0x6e, 0x7f, 0xb0, 0xe7, 0x8a, 0xaa, 0x5a, 0x27, 0xaf, 0xe2, 0xa5, 0x5f, 0x5c, 0x5b, 0x05,
+    0x2f, 0xff, 0x08, 0x24, 0xec, 0xeb, 0x51, 0x03, 0xff, 0x8a, 0x96, 0xa3, 0x7e, 0xa4, 0x12, 0xdd,
+    0x55, 0x2d, 0x74, 0xb4, 0x68, 0x52, 0xb1, 0xa4, 0x87, 0xb4, 0x1e, 0xd2, 0x89, 0xfb, 0xd9, 0xe2,
+    0xa4, 0x5e, 0x61, 0x46, 0xa0, 0x58, 0x3f, 0x70, 0xae, 0x98, 0xe8, 0x8b, 0x25, 0xe6, 0x13, 0xb5,
+    0x78, 0x52, 0x71, 0x52, 0x2b, 0xf7, 0xba, 0xfb, 0x13, 0x5a, 0x4a, 0x22, 0x03, 0xf1, 0x01, 0x9a,
+    0xa1, 0x3f, 0xb2, 0xca, 0xfb, 0x80, 0x7a, 0x0d, 0x50, 0x49, 0x46, 0x59, 0x10, 0x5a, 0x55, 0xab,
+    0xf4, 0x02, 0x1b, 0xb4, 0x4a, 0x6c, 0x3c, 0xb5, 0x4a, 0x77, 0x29, 0xeb, 0x3e, 0xa0, 0xc3, 0x50,
+    0x04, 0x5a, 0x5f, 0x28, 0xb8, 0x51, 0xf8, 0x41, 0x88, 0x30, 0xbc, 0xff, 0xa3, 0x2f, 0x0b, 0x03,
+    0x6f, 0xad, 0xf4, 0x8d, 0x75, 0x0e, 0xdf, 0x78, 0x82, 0x78, 0x02, 0x79, 0x6d, 0xc1, 0xd2, 0xaa,
+    0x13, 0x21, 0xa4, 0xe5, 0xcb, 0x27, 0x02, 0xd9, 0xbf, 0x0f, 0x66, 0x2b, 0xf7, 0xa9, 0xd0, 0x26,
+    0xdf, 0x78, 0x05, 0x92, 0xe1, 0xf1, 0xdf, 0xea, 0x42, 0xbe, 0x7c, 0x45, 0x99, 0x84, 0xd2, 0x43,
+    0x8f, 0x12, 0xcc, 0xdd, 0x38, 0x6a, 0x39, 0x2e, 0x59, 0xe6, 0x4f, 0x23, 0x7a, 0x66, 0x45, 0x61,
+    0x02, 0x17, 0x5d, 0x8e, 0x31, 0xc0, 0x15, 0x39, 0xef, 0x4f, 0xf8, 0x9d, 0x49, 0x05, 0x5d, 0x1f,
+    0x25, 0x86, 0x7a, 0x40, 0x37, 0xcc, 0x29, 0x26, 0x0b, 0xc9, 0xeb, 0xc0, 0xcb, 0x74, 0x66, 0x40,
+    0xfe, 0x95, 0xdf, 0x04, 0x3e, 0x2b, 0x75, 0x81, 0x15, 0x16, 0x12, 0x1f, 0x19, 0x96, 0x8f, 0xc5,
+    0x94, 0x05, 0xc3, 0x1c, 0x08, 0x17, 0x45, 0xfc, 0xa0, 0xc8, 0x14, 0xd2, 0x94, 0x01, 0x0e, 0x0e,
+    0xb9, 0x24, 0xec, 0xb7, 0x3f, 0x6f, 0xa2, 0xbc, 0x78, 0xf0, 0x0a, 0x7e, 0xbf, 0x31, 0x83, 0x2c,
+    0x46, 0x77, 0x59, 0x3c, 0x9e, 0x3c, 0xea, 0x32, 0x0a, 0xf5, 0x64, 0xa3, 0xfd, 0x8b, 0x5c, 0x9b,
+    0xad, 0x2c, 0x63, 0x8f, 0x52, 0xeb, 0x4f, 0x84, 0xfa, 0xf5, 0x55, 0x18, 0xcd, 0xd5, 0xda, 0x6d,
+    0x2c, 0x10, 0xfb, 0x45, 0xc6, 0x50, 0xae, 0x61, 0x9a, 0x6b, 0x98, 0xd9, 0xf0, 0x03, 0xb8, 0xbd,
+    0x44, 0x2f, 0x45, 0xbe, 0xc8, 0xdc, 0x0b, 0x49, 0xd1, 0xad, 0x11, 0x2e, 0x01, 0x30, 0x8e, 0x9d,
+    0xfe, 0x31, 0x78, 0x6e, 0x79, 0x8d, 0xb6, 0x5c, 0xfc, 0xfe, 0x31, 0x69, 0x96, 0x9c, 0xf1, 0x7a,
+    0x69, 0x4d, 0x7c, 0x74, 0xdf, 0x7b, 0xf9, 0x1b, 0x1b, 0x73, 0xa5, 0xf5, 0xf1, 0x5a, 0x08, 0x71,
+    0xa1, 0x04, 0xf2, 0xf4, 0x7d, 0xbf, 0x23, 0xad, 0xf9, 0x3f, 0xa8, 0x99, 0x34, 0xb0, 0x5d, 0xd3,
+    0xf7, 0x9e, 0x57, 0x27, 0xef, 0xe6, 0xfc, 0xb2, 0x73, 0xa2, 0xff, 0xbb, 0xbe, 0xf7, 0xbe, 0x85,
+    0xb6, 0x50, 0x6d, 0x37, 0x34, 0x0b, 0x82, 0xfb, 0xb5, 0x73, 0x7c, 0x5d, 0xa6, 0xff, 0x47, 0x19,
+    0x7e, 0xee, 0xa8, 0x1b, 0x77, 0x03, 0xa1, 0xc6, 0xe9, 0xd1, 0xff, 0xbe, 0x35, 0xe2, 0xf2, 0x9f,
+    0x19, 0xc6, 0x11, 0x0b, 0x43, 0x78, 0xf9, 0xe5, 0x60, 0x9a, 0x55, 0x22, 0xc6, 0xa4, 0x43, 0x94,
+    0xa1, 0x91, 0xd1, 0xe9, 0x50, 0xa5, 0x6b, 0x4c, 0x5a, 0xa3, 0x5c, 0x1e, 0x93, 0x0e, 0x53, 0x4e,
+    0x8c, 0x49, 0x87, 0x2b, 0x87, 0xc6, 0xa4, 0xc7, 0x29, 0xbf, 0x55, 0xd3, 0x1b, 0x68, 0x52, 0xab,
+    0xfc, 0x1b, 0x4d, 0xde, 0x2e, 0x8f, 0x50, 0xc8, 0xe8, 0xf2, 0x48, 0x65, 0x57, 0xa0, 0x5c, 0x4d,
+    0x8f, 0x57, 0x4a, 0xc7, 0xa4, 0x75, 0xca, 0xa3, 0x63, 0xd2, 0x13, 0x94, 0x87, 0xc7, 0xa4, 0x27,
+    0xd2, 0xe3, 0x28, 0xa3, 0xe0, 0x73, 0x4a, 0xc2, 0x18, 0x7c, 0xf4, 0x4a, 0xec, 0xe8, 0xfe, 0xa2,
+    0x94, 0xc8, 0xb1, 0xf5, 0x27, 0x29, 0x43, 0xdf, 0x8d, 0xae, 0x3f, 0x59, 0xe9, 0x1a, 0x93, 0x8e,
+    0x56, 0x2e, 0x8f, 0x49, 0xdf, 0xa5, 0x9c, 0x18, 0x93, 0x9e, 0xa2, 0x1c, 0x1a, 0x93, 0xbe, 0x5b,
+    0xf9, 0xed, 0x98, 0x74, 0x8c, 0xf2, 0x8b, 0x31, 0xe9, 0x58, 0x85, 0x8c, 0x49, 0x4f, 0x55, 0x76,
+    0x8e, 0x49, 0x4f, 0x53, 0x4a, 0xc6, 0xa4, 0xe3, 0x94, 0x9f, 0x8c, 0x49, 0x4f, 0x57, 0x56, 0x7f,
+    0x37, 0x6a, 0x3c, 0x33, 0x94, 0xe5, 0xdf, 0x8d, 0x19, 0xcf, 0x4c, 0x25, 0xe1, 0x3b, 0xf5, 0xe8,
+    0x0b, 0x83, 0x3e, 0x04, 0x7e, 0x69, 0x00, 0x6f, 0x02, 0x60, 0x20, 0x87, 0x32, 0xcb, 0xe0, 0xc1,
+    0xbb, 0x44, 0xdc, 0xa3, 0x82, 0x27, 0x2d, 0x3d, 0x31, 0xd1, 0xc8, 0xa4, 0x38, 0x9d, 0x45, 0x5b,
+    0xca, 0x9d, 0x45, 0x85, 0x86, 0x6d, 0x65, 0x9b, 0x85, 0x2d, 0x45, 0xf9, 0x8e, 0xa2, 0x82, 0xc2,
+    0xb9, 0x09, 0x86, 0xb2, 0xad, 0x86, 0xf2, 0x1d, 0x45, 0xcc, 0x5a, 0xd3, 0x6a, 0xc6, 0x52, 0xb4,
+    0x49, 0x70, 0x94, 0x38, 0x77, 0x32, 0xeb, 0xb6, 0x15, 0x39, 0x8a, 0x37, 0x97, 0x6d, 0x67, 0xb6,
+    0x14, 0x6d, 0x15, 0x18, 0x53, 0xd1, 0x96, 0x32, 0xc7, 0x4e, 0xc3, 0x96, 0x82, 0x72, 0x43, 0xd1,
+    0x0e, 0x7b, 0x81, 0x50, 0x01, 0x40, 0xe6, 0x33, 0xe6, 0x0d, 0xfc, 0x5a, 0xdb, 0xfd, 0xcc, 0x9c,
+    0x0a, 0xc8, 0xdc, 0x54, 0x54, 0xee, 0x2c, 0x01, 0x40, 0x05, 0x4e, 0xc3, 0x9c, 0x1d, 0xf3, 0x0d,
+    0xbc, 0xc3, 0x51, 0xe6, 0x30, 0x6c, 0x2a, 0x2b, 0x2c, 0x5a, 0x0e, 0x69, 0x00, 0xfb, 0x14, 0xc0,
+    0x71, 0x1a, 0xb6, 0x96, 0x39, 0x0d, 0xe5, 0x8e, 0xa2, 0x0a, 0x78, 0x67, 0xa0, 0x4b, 0x03, 0x74,
+    0x52, 0x81, 0xad, 0x9c, 0x65, 0x65, 0x86, 0xb2, 0xcd, 0x85, 0x4c, 0xd1, 0x0e, 0x27, 0x56, 0x2b,
+    0x86, 0xb6, 0x4f, 0x6e, 0x2e, 0xdb, 0xf4, 0x34, 0x6d, 0x50, 0x5c, 0x26, 0x6c, 0x2d, 0x64, 0x56,
+    0x6f, 0xdd, 0x56, 0xb0, 0xb9, 0xa4, 0xd0, 0x50, 0x56, 0x8e, 0x50, 0x99, 0xf5, 0xd0, 0x62, 0x4b,
+    0xc1, 0xd6, 0x9d, 0x06, 0x7e, 0xd9, 0xc2, 0x44, 0x03, 0x34, 0x72, 0x94, 0x14, 0x55, 0xcc, 0x62,
+    0xd2, 0xca, 0x84, 0xcd, 0x85, 0xb4, 0x55, 0xd1, 0xd6, 0x82, 0x27, 0x37, 0x17, 0x19, 0x52, 0xa0,
+    0x74, 0x73, 0xc9, 0xd6, 0x22, 0x04, 0xbd, 0x70, 0xb9, 0xc1, 0x5c, 0xe0, 0x70, 0x1a, 0xca, 0x8a,
+    0x0d, 0xe5, 0x05, 0x4e, 0xbb, 0xa1, 0xa4, 0x82, 0xd6, 0x2c, 0x2c, 0x71, 0x14, 0x6d, 0x72, 0xe2,
+    0xf8, 0xb6, 0x42, 0xbf, 0x15, 0x3b, 0xb7, 0x40, 0xfd, 0xa7, 0x23, 0x19, 0xcb, 0x6a, 0x53, 0x3a,
+    0xc3, 0xa4, 0x02, 0x8d, 0x9e, 0x2e, 0x2f, 0x2b, 0x01, 0x84, 0x33, 0x8b, 0xb6, 0x16, 0x39, 0x0a,
+    0x36, 0xc3, 0x00, 0xca, 0x9c, 0xd0, 0x00, 0xf1, 0x2e, 0x2e, 0x10, 0x36, 0x3b, 0x99, 0xf4, 0x92,
+    0x8a, 0xa7, 0x0d, 0x45, 0x74, 0xc4, 0x38, 0xf6, 0x74, 0x47, 0xc9, 0xb6, 0x22, 0x1c, 0xb5, 0xda,
+    0x65, 0x6e, 0x4a, 0xce, 0xda, 0xd5, 0x6b, 0x33, 0x97, 0x1b, 0x32, 0x4a, 0x00, 0x9f, 0x8a, 0x9d,
+    0x40, 0xbb, 0x2d, 0x06, 0x7b, 0x01, 0x10, 0x6d, 0xeb, 0x26, 0xc7, 0x4e, 0x95, 0x6a, 0xc5, 0x45,
+    0x05, 0x4e, 0xc1, 0x51, 0x04, 0x9c, 0x98, 0x67, 0xa8, 0x70, 0x0a, 0xc5, 0xc5, 0x30, 0x36, 0x20,
+    0x77, 0x49, 0xc5, 0x93, 0x45, 0xf6, 0x82, 0x6d, 0x45, 0x91, 0x4c, 0x3e, 0x9f, 0x96, 0x95, 0x9f,
+    0x61, 0xc9, 0x67, 0xf8, 0x8c, 0xd5, 0x06, 0x73, 0x4a, 0xce, 0x7a, 0x24, 0xbe, 0xa1, 0x64, 0x6b,
+    0x85, 0xb3, 0x60, 0xf3, 0xe6, 0x02, 0x0a, 0x63, 0x93, 0xbd, 0x08, 0x08, 0x56, 0x5c, 0x00, 0xbd,
+    0x14, 0x22, 0x71, 0x97, 0x1b, 0x2c, 0xc2, 0xa6, 0x4d, 0x45, 0x15, 0x15, 0xc5, 0xc2, 0xe6, 0xcd,
+    0x3b, 0xa1, 0x6e, 0x89, 0xb3, 0x04, 0x28, 0xb8, 0xab, 0xa8, 0x30, 0x92, 0x71, 0x16, 0x3b, 0xcb,
+    0xa1, 0xbc, 0xc8, 0x01, 0x0c, 0x40, 0x32, 0x00, 0x43, 0x0a, 0x4b, 0xb6, 0x3e, 0x65, 0x70, 0xda,
+    0x8b, 0x0c, 0xc5, 0x88, 0x66, 0xc9, 0x56, 0x43, 0xc5, 0x16, 0x00, 0x0d, 0xc5, 0xe5, 0x05, 0x9b,
+    0x9e, 0x2e, 0x72, 0x56, 0x18, 0xe6, 0x96, 0x38, 0xb1, 0x1e, 0xf0, 0xb7, 0xd0, 0xf0, 0xe4, 0x4e,
+    0x67, 0x51, 0x45, 0xc2, 0x3c, 0x43, 0x61, 0xd9, 0xf6, 0xad, 0x9b, 0xcb, 0x0a, 0x0a, 0x01, 0xd5,
+    0xa7, 0xec, 0x4e, 0x83, 0xb3, 0xe0, 0xe9, 0x22, 0xc3, 0xe6, 0xb2, 0xad, 0x4f, 0x15, 0x39, 0xe6,
+    0x47, 0x32, 0x19, 0x29, 0xeb, 0x1f, 0x58, 0xc8, 0x64, 0x50, 0x84, 0x80, 0xc3, 0x06, 0x5a, 0x11,
+    0x10, 0x7e, 0xaa, 0xc8, 0xf0, 0xc0, 0x7c, 0x66, 0xc1, 0x93, 0x65, 0x65, 0xce, 0x05, 0x9b, 0x4b,
+    0xb6, 0x00, 0x73, 0x7e, 0xfc, 0x64, 0x49, 0x59, 0xc5, 0x7c, 0x20, 0x0d, 0xf3, 0xbd, 0xb4, 0xa1,
+    0x02, 0xf0, 0x05, 0x64, 0x36, 0x95, 0x39, 0x90, 0x47, 0x00, 0x74, 0xda, 0x63, 0x0f, 0x18, 0xb7,
+    0x98, 0x53, 0xd6, 0xae, 0x4e, 0x83, 0xb7, 0xa5, 0x2b, 0x8c, 0x5b, 0xa6, 0x3d, 0x96, 0xb8, 0x65,
+    0xb9, 0x81, 0x49, 0x01, 0xe6, 0x6d, 0xfd, 0xb1, 0x50, 0x41, 0x99, 0xbe, 0x65, 0x94, 0xb8, 0x82,
+    0x64, 0xec, 0xc4, 0x21, 0x02, 0xad, 0x4a, 0x0a, 0x8b, 0x0c, 0x05, 0x86, 0x40, 0x9d, 0x0a, 0x95,
+    0x85, 0xf3, 0x99, 0xdb, 0xfc, 0x59, 0xbf, 0x6e, 0x9d, 0xc1, 0x94, 0xb2, 0xf6, 0x27, 0x06, 0xdb,
+    0xba, 0x35, 0x56, 0x13, 0x6f, 0x19, 0x2d, 0x4d, 0x85, 0x45, 0xce, 0x22, 0x07, 0xa2, 0x66, 0x40,
+    0xb4, 0x0d, 0x85, 0xc8, 0x62, 0x86, 0xa2, 0x01, 0x7d, 0x27, 0x06, 0x59, 0x2d, 0x6c, 0x05, 0x2c,
+    0xcb, 0x80, 0xa6, 0xb4, 0x07, 0x2a, 0x11, 0x15, 0xaa, 0xf8, 0x46, 0x32, 0x66, 0x10, 0xfb, 0x0a,
+    0xe8, 0xfe, 0xe9, 0xa2, 0x9d, 0x48, 0x0c, 0x47, 0x11, 0x30, 0x1c, 0x05, 0xdf, 0x30, 0xa7, 0x62,
+    0x7e, 0x80, 0x1f, 0x69, 0x9b, 0xcb, 0x2a, 0x8a, 0x28, 0x07, 0x41, 0x16, 0x40, 0xaa, 0xb6, 0x95,
+    0xa0, 0x72, 0x30, 0xaa, 0x26, 0xa8, 0x64, 0x05, 0x0e, 0x15, 0x6c, 0x35, 0xa8, 0x6a, 0x02, 0xfd,
+    0x26, 0x32, 0x16, 0x27, 0xb0, 0xc7, 0xe9, 0x28, 0xd8, 0x54, 0xb4, 0x3c, 0x92, 0x31, 0x18, 0x1e,
+    0x9b, 0x53, 0x9e, 0x17, 0xc9, 0x64, 0x01, 0x37, 0x82, 0x44, 0x00, 0x26, 0x96, 0x6d, 0x2a, 0x00,
+    0xf1, 0x5e, 0x6e, 0x58, 0x27, 0x50, 0xd9, 0x57, 0x0b, 0x54, 0xed, 0x05, 0x7e, 0x38, 0x84, 0x4d,
+    0x54, 0xf6, 0x2a, 0x4a, 0x9e, 0xda, 0xaa, 0x4a, 0x21, 0x52, 0x5b, 0x40, 0x3b, 0xc1, 0xa4, 0x22,
+    0xee, 0x06, 0x47, 0x01, 0x74, 0x4d, 0x75, 0xbc, 0xa8, 0x10, 0x32, 0xcd, 0xc8, 0x41, 0x55, 0xf2,
+    0x4b, 0x02, 0x4a, 0x19, 0xd0, 0xdb, 0x2d, 0x05, 0x4f, 0x95, 0x6c, 0x0a, 0xd0, 0x82, 0xdf, 0xea,
+    0x04, 0x3b, 0x12, 0xd4, 0x31, 0x47, 0xd1, 0x53, 0xc2, 0xe6, 0x02, 0x87, 0x2a, 0x5c, 0x63, 0xd4,
+    0xec, 0xa1, 0x87, 0x1e, 0x62, 0x8a, 0x0a, 0x4b, 0x00, 0x41, 0x14, 0x18, 0x66, 0xfe, 0x02, 0x26,
+    0x92, 0x59, 0xbb, 0x3e, 0xc3, 0x12, 0x00, 0x83, 0x0d, 0x46, 0xe9, 0x8c, 0xb0, 0xb5, 0x42, 0x28,
+    0x2f, 0x2f, 0x73, 0xa0, 0x11, 0x0b, 0x28, 0x4d, 0x05, 0xa8, 0x5a, 0x64, 0xd0, 0x72, 0xdc, 0xb1,
+    0x17, 0xa6, 0x31, 0xc3, 0x57, 0x95, 0x95, 0x12, 0x76, 0x3e, 0x33, 0x0b, 0x86, 0xce, 0xa4, 0x17,
+    0x6d, 0x2b, 0xd9, 0x54, 0x44, 0x1b, 0x14, 0x6c, 0x83, 0x12, 0x64, 0xd9, 0x6d, 0x23, 0xb3, 0xde,
+    0x62, 0x61, 0x22, 0x67, 0xcd, 0x32, 0x58, 0x54, 0x69, 0x0d, 0xa2, 0x1d, 0x80, 0x3d, 0x0b, 0x8b,
+    0xb2, 0x40, 0x2f, 0x0d, 0x3b, 0xcb, 0x04, 0xa0, 0x56, 0x79, 0x09, 0x60, 0xf3, 0x7d, 0xc9, 0x05,
+    0xce, 0xa2, 0x36, 0x39, 0x40, 0x5c, 0xe6, 0x19, 0xa8, 0xb0, 0xc3, 0x8f, 0x5a, 0x69, 0x9e, 0x01,
+    0x08, 0x30, 0x5a, 0xfe, 0x11, 0x5e, 0xd0, 0x0a, 0x81, 0x19, 0x43, 0x26, 0x95, 0x81, 0xa8, 0xc1,
+    0x0f, 0x82, 0x28, 0x07, 0x9b, 0x55, 0x82, 0x23, 0xa8, 0x40, 0x4b, 0x8d, 0x39, 0xaa, 0x0c, 0xd2,
+    0x01, 0x3c, 0x14, 0x19, 0xc9, 0xfc, 0x40, 0x8b, 0x54, 0x59, 0x4b, 0x5b, 0x9f, 0xb3, 0xe6, 0xfe,
+    0x94, 0x35, 0xeb, 0xef, 0x4f, 0xe7, 0xd7, 0xa8, 0x22, 0x87, 0xed, 0xe6, 0xab, 0x22, 0xf3, 0xe3,
+    0x8a, 0x80, 0x49, 0x56, 0x19, 0x99, 0xb2, 0x19, 0xb8, 0x4f, 0xd3, 0xd4, 0x8c, 0x30, 0xa6, 0x82,
+    0x4d, 0x76, 0x94, 0x76, 0x35, 0x15, 0xe8, 0xe0, 0x07, 0xfd, 0xcc, 0x07, 0x6e, 0xfd, 0x80, 0xce,
+    0x15, 0x30, 0x94, 0x0a, 0x4c, 0x6e, 0x07, 0x59, 0x51, 0x05, 0xfb, 0x8e, 0x0d, 0x28, 0x2b, 0x2f,
+    0xda, 0xaa, 0x52, 0x73, 0xce, 0x0e, 0xa4, 0xc2, 0x93, 0x60, 0x12, 0x54, 0x03, 0x43, 0x55, 0x7d,
+    0x8c, 0x55, 0xf8, 0x7f, 0x1a, 0x87, 0x27, 0x85, 0x12, 0x50, 0xcf, 0xd5, 0xe9, 0x68, 0x28, 0xb7,
+    0x14, 0x38, 0x37, 0xd9, 0xe7, 0x47, 0xde, 0x36, 0xf3, 0x60, 0xde, 0x0b, 0xcb, 0x8a, 0x54, 0xe1,
+    0x03, 0x9b, 0x03, 0x56, 0x1f, 0x4c, 0xda, 0x82, 0x40, 0xb1, 0x45, 0x15, 0xbe, 0x0a, 0xc3, 0xf6,
+    0x12, 0xac, 0x57, 0x54, 0xe1, 0x2c, 0xd9, 0xaa, 0xca, 0x08, 0xce, 0x0b, 0x15, 0x63, 0x74, 0x6d,
+    0x49, 0x22, 0x10, 0xa1, 0xc0, 0x31, 0x46, 0xf4, 0x22, 0x19, 0x1e, 0xd4, 0x02, 0xd9, 0x83, 0x8a,
+    0x37, 0xdf, 0x00, 0x86, 0x62, 0xeb, 0x36, 0x20, 0x1e, 0x40, 0x80, 0xf9, 0x61, 0xcb, 0x3f, 0x95,
+    0x3c, 0x20, 0x46, 0x7a, 0x99, 0x80, 0x76, 0x41, 0xa5, 0xf8, 0x8e, 0x65, 0x4b, 0x19, 0x5b, 0x89,
+    0xc3, 0x29, 0x80, 0xc0, 0x55, 0xd0, 0x6a, 0x4c, 0x49, 0x45, 0x59, 0xd2, 0x92, 0x25, 0x89, 0xea,
+    0x4c, 0xb1, 0xb5, 0x60, 0x4b, 0x91, 0x6a, 0xfe, 0x6e, 0x2b, 0x5e, 0xa2, 0x71, 0xe1, 0x03, 0x8b,
+    0x16, 0x2f, 0x59, 0xba, 0x2c, 0xa9, 0xe0, 0xc9, 0x4d, 0x85, 0x45, 0xc5, 0x01, 0x7d, 0x37, 0xac,
+    0x9c, 0x53, 0x71, 0xff, 0x9c, 0xf2, 0x07, 0x23, 0x99, 0xd5, 0x96, 0x75, 0x2a, 0x80, 0xad, 0x65,
+    0x30, 0x4b, 0x95, 0x6c, 0x29, 0x00, 0x34, 0xd4, 0xa9, 0x1e, 0x07, 0xb9, 0xc9, 0x51, 0x52, 0x8e,
+    0x6a, 0x36, 0x0b, 0x67, 0xde, 0x7f, 0xa6, 0xed, 0x2a, 0xb3, 0x72, 0xc0, 0x29, 0xb8, 0x63, 0x84,
+    0x8a, 0x9e, 0x14, 0x9e, 0x62, 0x36, 0x64, 0xf0, 0x39, 0xcc, 0xdc, 0xad, 0x30, 0x8f, 0x24, 0x04,
+    0x2a, 0x05, 0x15, 0x65, 0xb5, 0x79, 0xdb, 0x22, 0x43, 0x41, 0x61, 0x21, 0x0a, 0xdc, 0x72, 0xc3,
+    0xec, 0x39, 0x15, 0xb3, 0xd1, 0x19, 0xd1, 0x80, 0x23, 0xa2, 0x67, 0x43, 0x34, 0x5a, 0xbd, 0x21,
+    0xb9, 0x8a, 0x3a, 0x27, 0xe0, 0x94, 0xcc, 0x87, 0xff, 0xf0, 0x59, 0xc0, 0x50, 0xb9, 0x61, 0xf6,
+    0x26, 0xb2, 0x4c, 0x87, 0x51, 0x7d, 0xfe, 0x11, 0xf8, 0x9d, 0xb7, 0xf0, 0x4e, 0x1e, 0x96, 0xe3,
+    0x57, 0x94, 0xfe, 0x06, 0x31, 0xd5, 0xe5, 0x35, 0x2c, 0xf3, 0x77, 0x70, 0xd6, 0xbf, 0x84, 0x5f,
+    0xfc, 0xce, 0xd2, 0x76, 0x78, 0x6f, 0xce, 0x66, 0x99, 0xe5, 0x50, 0xb6, 0x0e, 0x7e, 0x3b, 0xe0,
+    0x59, 0x04, 0x79, 0x9e, 0x1c, 0x96, 0x19, 0x82, 0x5f, 0x36, 0x5b, 0xcd, 0xcf, 0x84, 0xf2, 0x3f,
+    0x43, 0xde, 0x5f, 0xf1, 0x4e, 0x04, 0xe4, 0x3f, 0x12, 0xa8, 0xff, 0xff, 0x7a, 0xfe, 0x02, 0xfd,
+    0xbc, 0xfc, 0x30, 0xcb, 0xbc, 0x0d, 0xcf, 0x7e, 0x78, 0xdc, 0xf0, 0xb4, 0xc2, 0xd3, 0x09, 0x8f,
+    0x0f, 0x0f, 0x19, 0x3d, 0xc2, 0x32, 0x7a, 0x78, 0x0c, 0xf0, 0x24, 0xc2, 0x93, 0x0c, 0x8f, 0x19,
+    0x9e, 0x27, 0xe0, 0x29, 0x87, 0xa7, 0x0a, 0x9e, 0x97, 0xe1, 0x79, 0x1b, 0x9e, 0xfd, 0xf0, 0xb8,
+    0xe1, 0x69, 0x85, 0xa7, 0x13, 0x1e, 0x1f, 0x3c, 0x0c, 0xc0, 0xd7, 0xc3, 0x63, 0x80, 0x27, 0x11,
+    0x9e, 0x64, 0x78, 0xcc, 0xf0, 0x3c, 0x01, 0x4f, 0x39, 0x3c, 0x55, 0xf0, 0xa0, 0x3f, 0x17, 0x8d,
+    0x4b, 0xae, 0x78, 0x02, 0x72, 0xad, 0x95, 0x49, 0xd9, 0x48, 0xde, 0xfc, 0xe0, 0xb8, 0x2d, 0xf5,
+    0xfe, 0xa4, 0x92, 0x25, 0xab, 0x8a, 0xef, 0x7b, 0xf0, 0xd6, 0xb6, 0x75, 0x8f, 0x25, 0x43, 0x04,
+    0x52, 0x51, 0x5e, 0xb2, 0x55, 0x28, 0x67, 0xa6, 0xde, 0x64, 0x98, 0xfc, 0xfc, 0x2d, 0x65, 0x85,
+    0x85, 0x25, 0x0f, 0x30, 0x84, 0x26, 0x84, 0xc2, 0x92, 0x6d, 0x98, 0x7a, 0xef, 0x1f, 0xc1, 0x14,
+    0x2d, 0x5e, 0xc4, 0x68, 0x06, 0x69, 0x46, 0xa0, 0xf2, 0xf8, 0x21, 0x86, 0x01, 0x95, 0x7d, 0x9a,
+    0xba, 0x83, 0xf9, 0x15, 0xd4, 0x0a, 0x55, 0x30, 0xbe, 0x60, 0xee, 0x26, 0xc8, 0x76, 0x16, 0xe5,
+    0x97, 0x6c, 0x2d, 0x2c, 0xda, 0xc1, 0x94, 0x80, 0xbb, 0x49, 0xa7, 0x54, 0xc6, 0xca, 0xb2, 0x0c,
+    0x9d, 0xcc, 0x1f, 0xc8, 0x47, 0xd7, 0x82, 0x79, 0x38, 0x84, 0xa5, 0xda, 0x95, 0x8f, 0x2a, 0xce,
+    0xac, 0xd7, 0x04, 0x52, 0x4f, 0x15, 0x39, 0xa1, 0x1c, 0x3d, 0xb6, 0x90, 0xf0, 0x40, 0x16, 0xd8,
+    0xb3, 0x8a, 0xa2, 0x7c, 0xb4, 0x77, 0x30, 0x87, 0xb9, 0xb4, 0x00, 0x46, 0x55, 0xc7, 0x7c, 0x67,
+    0x59, 0xa0, 0x6a, 0x7a, 0x04, 0xcb, 0x04, 0xba, 0xa5, 0x5a, 0x94, 0x0f, 0x33, 0x39, 0x83, 0x9f,
+    0xde, 0xa4, 0xed, 0x11, 0x4d, 0xe6, 0xe9, 0x60, 0x6a, 0x13, 0x4e, 0x9a, 0xcc, 0xbb, 0xe3, 0x47,
+    0xf5, 0xf7, 0x94, 0x50, 0x52, 0xc8, 0x4c, 0xd2, 0x8d, 0xca, 0x01, 0xeb, 0x5e, 0xb4, 0x99, 0x79,
+    0x1e, 0xb2, 0x68, 0x07, 0x2a, 0x88, 0x9b, 0x13, 0x21, 0xd6, 0x2b, 0x70, 0x3e, 0x30, 0xba, 0xca,
+    0x5d, 0x5c, 0x30, 0x0f, 0x07, 0x95, 0xbf, 0xa9, 0x6c, 0xab, 0x13, 0x80, 0x30, 0x71, 0x51, 0xc1,
+    0x6c, 0x3a, 0xba, 0x8b, 0x93, 0x46, 0x27, 0xa1, 0x2a, 0xb3, 0x7b, 0x0a, 0x60, 0x0c, 0x36, 0xb3,
+    0x08, 0xf0, 0x41, 0xef, 0xd8, 0x91, 0x0f, 0x46, 0x03, 0xf2, 0xf1, 0x2b, 0x2c, 0x6a, 0x4d, 0xda,
+    0xe5, 0xba, 0xdb, 0x49, 0x15, 0xed, 0x9d, 0x90, 0xa6, 0x54, 0x1f, 0xdb, 0x6a, 0x67, 0xcc, 0xf7,
+    0xb2, 0x8b, 0x1d, 0x65, 0x5b, 0x28, 0x11, 0xee, 0x8b, 0x05, 0x00, 0x15, 0xa3, 0x10, 0x4e, 0xb9,
+    0x93, 0x41, 0x87, 0xfd, 0x30, 0xa6, 0x29, 0x92, 0xed, 0xf8, 0xa6, 0x76, 0x33, 0x7d, 0x2a, 0xbc,
+    0x52, 0x04, 0xd2, 0x82, 0x6f, 0x40, 0x57, 0xe6, 0xd1, 0x51, 0x09, 0x94, 0x9c, 0x22, 0xe6, 0xfa,
+    0x34, 0x36, 0x68, 0x85, 0xd4, 0x91, 0xe2, 0x05, 0xcf, 0x60, 0x06, 0x05, 0x50, 0x3e, 0x2a, 0x43,
+    0x05, 0xee, 0xa2, 0x39, 0x60, 0x6e, 0x80, 0x9b, 0x3f, 0x87, 0x77, 0x67, 0x19, 0x98, 0xc9, 0x22,
+    0x07, 0xf3, 0x3b, 0x78, 0x2f, 0x78, 0xb2, 0x82, 0x39, 0x34, 0x13, 0x05, 0xc5, 0xb1, 0xa9, 0x7c,
+    0x27, 0xd3, 0x11, 0x78, 0xdd, 0x52, 0xce, 0xe0, 0x87, 0x46, 0xf0, 0xb5, 0x00, 0xe4, 0x0d, 0x92,
+    0x2f, 0xa9, 0xc9, 0xad, 0xf8, 0x7e, 0x26, 0xf8, 0x1e, 0x28, 0x5b, 0x3a, 0x8b, 0xa6, 0xc1, 0x24,
+    0x32, 0x6b, 0x66, 0x21, 0x07, 0x61, 0xac, 0x60, 0xc8, 0xb6, 0x32, 0x47, 0x20, 0x05, 0x86, 0x50,
+    0x95, 0x1b, 0x27, 0x73, 0x09, 0x92, 0x85, 0x25, 0x4f, 0x01, 0xdb, 0x02, 0x19, 0xdc, 0x6c, 0xda,
+    0x10, 0x10, 0x2a, 0x61, 0x5e, 0x86, 0x77, 0x24, 0x12, 0x60, 0x04, 0x06, 0x11, 0x04, 0x0b, 0x2d,
+    0x3d, 0x73, 0xe3, 0x1e, 0xd0, 0xb7, 0x82, 0xad, 0xe0, 0xb4, 0xfc, 0x21, 0x9e, 0x65, 0x46, 0x45,
+    0x45, 0xcc, 0xeb, 0xf7, 0x42, 0xfd, 0x72, 0xe7, 0x1d, 0xc2, 0xce, 0xbd, 0x0f, 0x87, 0x99, 0x4f,
+    0xcd, 0x5e, 0xfe, 0x96, 0x27, 0x1d, 0xcc, 0x5f, 0xe6, 0xb2, 0x0c, 0xfc, 0xaa, 0x12, 0x5e, 0xc8,
+    0xc4, 0x24, 0x20, 0x28, 0x07, 0x6d, 0xc1, 0xbc, 0x3b, 0xff, 0x36, 0x34, 0x2c, 0x7e, 0x72, 0xa7,
+    0x0a, 0x23, 0x7a, 0xc1, 0xf7, 0xb3, 0x8b, 0x2b, 0x54, 0x36, 0x16, 0xfe, 0xa0, 0x64, 0x53, 0x59,
+    0x99, 0xa3, 0x90, 0x79, 0xef, 0x07, 0xf9, 0x38, 0xfb, 0xe5, 0xab, 0xfe, 0xe7, 0x59, 0x28, 0x54,
+    0xe9, 0xae, 0x60, 0x35, 0xf5, 0x75, 0xca, 0x22, 0xcc, 0x04, 0xa1, 0x64, 0xfe, 0x16, 0x78, 0x83,
+    0xd1, 0xbf, 0xb1, 0x58, 0x7d, 0xdd, 0xc1, 0xbc, 0xb6, 0x24, 0xd0, 0x26, 0xbf, 0xe2, 0xb6, 0xe7,
+    0xc8, 0x2c, 0x59, 0x0a, 0xd2, 0x0b, 0x53, 0x58, 0x3e, 0x4c, 0x5d, 0xaa, 0xc6, 0x31, 0x73, 0x96,
+    0xc1, 0xe8, 0x8a, 0xb6, 0x80, 0xcc, 0x05, 0x54, 0x90, 0x3a, 0x81, 0x4c, 0x01, 0x64, 0x57, 0x14,
+    0x60, 0x28, 0x01, 0x2a, 0x1c, 0x88, 0xba, 0x98, 0x84, 0x95, 0x2a, 0x6d, 0xd5, 0xfa, 0xcc, 0xa3,
+    0x2b, 0x91, 0x49, 0x25, 0xb7, 0xd3, 0xce, 0x07, 0xd5, 0x62, 0x47, 0xc1, 0xf6, 0x60, 0x16, 0x81,
+    0xac, 0xf2, 0x2d, 0x5b, 0x40, 0xae, 0x8b, 0x8a, 0x98, 0x73, 0x0f, 0x52, 0x4d, 0x1d, 0xd5, 0xb9,
+    0xf7, 0xfb, 0x39, 0xf9, 0xce, 0x9d, 0xe5, 0x68, 0x0b, 0x60, 0xd2, 0x82, 0x79, 0x2a, 0xf4, 0xa1,
+    0xff, 0xad, 0x58, 0x95, 0xe4, 0x05, 0xc9, 0x80, 0x3f, 0x62, 0xaf, 0x1a, 0xa0, 0xe2, 0x32, 0xa6,
+    0x35, 0xf9, 0x9f, 0x8d, 0x08, 0x95, 0xf7, 0x66, 0x8a, 0x8a, 0xcd, 0xd6, 0xa2, 0xed, 0xf9, 0xaa,
+    0x71, 0xbb, 0x9e, 0xc6, 0x62, 0x08, 0x05, 0xc4, 0xde, 0x5a, 0x98, 0xaf, 0xd2, 0x9f, 0xb9, 0x19,
+    0xc8, 0xa3, 0xd6, 0xee, 0x58, 0x3a, 0x4b, 0x67, 0x42, 0x55, 0x4b, 0xe6, 0x67, 0x81, 0xa8, 0x2f,
+    0x04, 0x85, 0xa0, 0xde, 0xd2, 0xae, 0x40, 0x4a, 0x8d, 0x40, 0x99, 0xfb, 0x56, 0x07, 0xc8, 0x51,
+    0x04, 0x91, 0x2a, 0x73, 0x70, 0x35, 0xe2, 0x8e, 0xd1, 0x32, 0x73, 0x31, 0x58, 0x50, 0x52, 0xe8,
+    0x64, 0x70, 0x51, 0x5a, 0xfd, 0x7f, 0x09, 0xb1, 0xc1, 0xff, 0xa9, 0x90, 0xfe, 0x7b, 0xff, 0x8f,
+    0x21, 0x2c, 0xff, 0x65, 0xe0, 0xf7, 0xd5, 0x60, 0xfa, 0x6c, 0x20, 0x7d, 0x56, 0xad, 0xf4, 0x4b,
+    0x83, 0xfa, 0xfb, 0xea, 0x9d, 0xff, 0x6b, 0xd5, 0xff, 0x05, 0xa9, 0x0f, 0xee, 0xbf, 0xb0, 0x6c,
+    0x00, 0x00,
+};
diff --git a/limine-bios-pxe.bin b/limine-bios-pxe.bin
new file mode 100644
index 00000000..a489c627
Binary files /dev/null and b/limine-bios-pxe.bin differ
diff --git a/limine-bios.sys b/limine-bios.sys
new file mode 100644
index 00000000..ef8b090b
Binary files /dev/null and b/limine-bios.sys differ
diff --git a/limine-uefi-cd.bin b/limine-uefi-cd.bin
new file mode 100644
index 00000000..b88a9cd9
Binary files /dev/null and b/limine-uefi-cd.bin differ
diff --git a/limine.c b/limine.c
new file mode 100644
index 00000000..cbcee9e0
--- /dev/null
+++ b/limine.c
@@ -0,0 +1,1290 @@
+#undef IS_WINDOWS
+#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
+#define IS_WINDOWS 1
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <stdbool.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <limits.h>
+
+#ifndef LIMINE_NO_BIOS
+#include "limine-bios-hdd.h"
+#endif
+
+static char *program_name = NULL;
+
+static void perror_wrap(const char *fmt, ...) {
+    int old_errno = errno;
+
+    fprintf(stderr, "%s: ", program_name);
+
+    va_list args;
+    va_start(args, fmt);
+
+    vfprintf(stderr, fmt, args);
+
+    va_end(args);
+
+    fprintf(stderr, ": %s\n", strerror(old_errno));
+}
+
+static void remove_arg(int *argc, char *argv[], int index) {
+    for (int i = index; i < *argc - 1; i++) {
+        argv[i] = argv[i + 1];
+    }
+
+    (*argc)--;
+
+    argv[*argc] = NULL;
+}
+
+#ifndef LIMINE_NO_BIOS
+
+static bool quiet = false;
+
+static int set_pos(FILE *stream, uint64_t pos) {
+    if (sizeof(long) >= 8) {
+        return fseek(stream, (long)pos, SEEK_SET);
+    }
+
+    long jump_size = (LONG_MAX / 2) + 1;
+    long last_jump = pos % jump_size;
+    uint64_t jumps = pos / jump_size;
+
+    rewind(stream);
+
+    for (uint64_t i = 0; i < jumps; i++) {
+        if (fseek(stream, jump_size, SEEK_CUR) != 0) {
+            return -1;
+        }
+    }
+    if (fseek(stream, last_jump, SEEK_CUR) != 0) {
+        return -1;
+    }
+
+    return 0;
+}
+
+#define DIV_ROUNDUP(a, b) (((a) + ((b) - 1)) / (b))
+
+struct gpt_table_header {
+    // the head
+    char     signature[8];
+    uint32_t revision;
+    uint32_t header_size;
+    uint32_t crc32;
+    uint32_t _reserved0;
+
+    // the partitioning info
+    uint64_t my_lba;
+    uint64_t alternate_lba;
+    uint64_t first_usable_lba;
+    uint64_t last_usable_lba;
+
+    // the guid
+    uint64_t disk_guid[2];
+
+    // entries related
+    uint64_t partition_entry_lba;
+    uint32_t number_of_partition_entries;
+    uint32_t size_of_partition_entry;
+    uint32_t partition_entry_array_crc32;
+};
+
+struct gpt_entry {
+    uint64_t partition_type_guid[2];
+
+    uint64_t unique_partition_guid[2];
+
+    uint64_t starting_lba;
+    uint64_t ending_lba;
+
+    uint64_t attributes;
+
+    uint16_t partition_name[36];
+};
+
+// This table from https://web.mit.edu/freebsd/head/sys/libkern/crc32.c
+static const uint32_t crc32_table[] = {
+	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
+	0xe963a535, 0x9e6495a3,	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
+	0xf3b97148, 0x84be41de,	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,	0x14015c4f, 0x63066cd9,
+	0xfa0f3d63, 0x8d080df5,	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,	0x35b5a8fa, 0x42b2986c,
+	0xdbbbc9d6, 0xacbcf940,	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
+	0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,	0x76dc4190, 0x01db7106,
+	0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
+	0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+	0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
+	0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
+	0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
+	0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
+	0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+	0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
+	0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
+	0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
+	0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
+	0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+	0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
+	0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
+	0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
+	0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
+};
+
+static uint32_t crc32(void *_stream, size_t len) {
+    uint8_t *stream = _stream;
+    uint32_t ret = 0xffffffff;
+
+    for (size_t i = 0; i < len; i++) {
+        ret = (ret >> 8) ^ crc32_table[(ret ^ stream[i]) & 0xff];
+    }
+
+    ret ^= 0xffffffff;
+    return ret;
+}
+
+static uint16_t endswap16(uint16_t value) {
+    uint16_t ret = 0;
+    ret |= (value >> 8) & 0x00ff;
+    ret |= (value << 8) & 0xff00;
+    return ret;
+}
+
+static uint32_t endswap32(uint32_t value) {
+    uint32_t ret = 0;
+    ret |= (value >> 24) & 0x000000ff;
+    ret |= (value >> 8)  & 0x0000ff00;
+    ret |= (value << 8)  & 0x00ff0000;
+    ret |= (value << 24) & 0xff000000;
+    return ret;
+}
+
+static uint64_t endswap64(uint64_t value) {
+    uint64_t ret = 0;
+    ret |= (value >> 56) & 0x00000000000000ff;
+    ret |= (value >> 40) & 0x000000000000ff00;
+    ret |= (value >> 24) & 0x0000000000ff0000;
+    ret |= (value >> 8)  & 0x00000000ff000000;
+    ret |= (value << 8)  & 0x000000ff00000000;
+    ret |= (value << 24) & 0x0000ff0000000000;
+    ret |= (value << 40) & 0x00ff000000000000;
+    ret |= (value << 56) & 0xff00000000000000;
+    return ret;
+}
+
+#ifdef __BYTE_ORDER__
+
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#define bigendian true
+#else
+#define bigendian false
+#endif
+
+#else /* !__BYTE_ORDER__ */
+
+static bool bigendian = false;
+
+#endif /* !__BYTE_ORDER__ */
+
+#define ENDSWAP(VALUE) (bigendian ? (                    \
+    sizeof(VALUE) == 1 ? (VALUE)          :              \
+    sizeof(VALUE) == 2 ? endswap16(VALUE) :              \
+    sizeof(VALUE) == 4 ? endswap32(VALUE) :              \
+    sizeof(VALUE) == 8 ? endswap64(VALUE) : (abort(), 1) \
+) : (VALUE))
+
+static enum {
+    CACHE_CLEAN,
+    CACHE_DIRTY
+} cache_state;
+static uint64_t cached_block;
+static uint8_t *cache  = NULL;
+static FILE    *device = NULL;
+static size_t   block_size;
+
+static bool device_init(void) {
+    size_t guesses[] = { 512, 2048, 4096 };
+
+    for (size_t i = 0; i < sizeof(guesses) / sizeof(size_t); i++) {
+        void *tmp = realloc(cache, guesses[i]);
+        if (tmp == NULL) {
+            perror_wrap("error: device_init(): realloc()");
+            return false;
+        }
+        cache = tmp;
+
+        rewind(device);
+
+        size_t ret = fread(cache, guesses[i], 1, device);
+        if (ret != 1) {
+            continue;
+        }
+
+        block_size = guesses[i];
+
+        if (!quiet) {
+            fprintf(stderr, "Physical block size of %zu bytes.\n", block_size);
+        }
+
+        cache_state  = CACHE_CLEAN;
+        cached_block = 0;
+        return true;
+    }
+
+    fprintf(stderr, "%s: error: device_init(): Couldn't determine block size of device.\n", program_name);
+    return false;
+}
+
+static bool device_flush_cache(void) {
+    if (cache_state == CACHE_CLEAN)
+        return true;
+
+    if (set_pos(device, cached_block * block_size) != 0) {
+        perror_wrap("error: device_flush_cache(): set_pos()");
+        return false;
+    }
+
+    size_t ret = fwrite(cache, block_size, 1, device);
+    if (ret != 1) {
+        if (ferror(device)) {
+            perror_wrap("error: device_flush_cache(): fwrite()");
+        }
+        return false;
+    }
+
+    cache_state = CACHE_CLEAN;
+    return true;
+}
+
+static bool device_cache_block(uint64_t block) {
+    if (cached_block == block)
+        return true;
+
+    if (cache_state == CACHE_DIRTY) {
+        if (!device_flush_cache())
+            return false;
+    }
+
+    if (set_pos(device, block * block_size) != 0) {
+        perror_wrap("error: device_cache_block(): set_pos()");
+        return false;
+    }
+
+    size_t ret = fread(cache, block_size, 1, device);
+    if (ret != 1) {
+        if (ferror(device)) {
+            perror_wrap("error: device_cache_block(): fread()");
+        }
+        return false;
+    }
+
+    cached_block = block;
+
+    return true;
+}
+
+struct uninstall_data {
+    void *data;
+    uint64_t loc;
+    uint64_t count;
+};
+
+#define UNINSTALL_DATA_MAX 256
+
+static bool uninstalling = false;
+static struct uninstall_data uninstall_data[UNINSTALL_DATA_MAX];
+static struct uninstall_data uninstall_data_rev[UNINSTALL_DATA_MAX];
+static uint64_t uninstall_data_i = 0;
+static const char *uninstall_file = NULL;
+
+static void reverse_uninstall_data(void) {
+    for (size_t i = 0, j = uninstall_data_i - 1; i < uninstall_data_i; i++, j--) {
+        uninstall_data_rev[j] = uninstall_data[i];
+    }
+
+    memcpy(uninstall_data, uninstall_data_rev, uninstall_data_i * sizeof(struct uninstall_data));
+}
+
+static void free_uninstall_data(void) {
+    for (size_t i = 0; i < uninstall_data_i; i++) {
+        free(uninstall_data[i].data);
+    }
+}
+
+static bool store_uninstall_data(const char *filename) {
+    if (!quiet) {
+        fprintf(stderr, "Storing uninstall data to file: `%s`...\n", filename);
+    }
+
+    FILE *udfile = fopen(filename, "wb");
+    if (udfile == NULL) {
+        perror_wrap("error: `%s`", filename);
+        goto error;
+    }
+
+    if (fwrite(&uninstall_data_i, sizeof(uint64_t), 1, udfile) != 1) {
+        goto fwrite_error;
+    }
+
+    for (size_t i = 0; i < uninstall_data_i; i++) {
+        if (fwrite(&uninstall_data[i].loc, sizeof(uint64_t), 1, udfile) != 1) {
+            goto fwrite_error;
+        }
+        if (fwrite(&uninstall_data[i].count, sizeof(uint64_t), 1, udfile) != 1) {
+            goto fwrite_error;
+        }
+        if (fwrite(uninstall_data[i].data, uninstall_data[i].count, 1, udfile) != 1) {
+            goto fwrite_error;
+        }
+    }
+
+    fclose(udfile);
+    return true;
+
+fwrite_error:
+    perror_wrap("error: store_uninstall_data(): fwrite()");
+
+error:
+    if (udfile != NULL) {
+        fclose(udfile);
+    }
+    return false;
+}
+
+static bool load_uninstall_data(const char *filename) {
+    if (!quiet) {
+        fprintf(stderr, "Loading uninstall data from file: `%s`...\n", filename);
+    }
+
+    FILE *udfile = fopen(filename, "rb");
+    if (udfile == NULL) {
+        perror_wrap("error: `%s`", filename);
+        goto error;
+    }
+
+    if (fread(&uninstall_data_i, sizeof(uint64_t), 1, udfile) != 1) {
+        goto fread_error;
+    }
+
+    for (size_t i = 0; i < uninstall_data_i; i++) {
+        if (fread(&uninstall_data[i].loc, sizeof(uint64_t), 1, udfile) != 1) {
+            goto fread_error;
+        }
+        if (fread(&uninstall_data[i].count, sizeof(uint64_t), 1, udfile) != 1) {
+            goto fread_error;
+        }
+        uninstall_data[i].data = malloc(uninstall_data[i].count);
+        if (uninstall_data[i].data == NULL) {
+            perror_wrap("error: load_uninstall_data(): malloc()");
+            goto error;
+        }
+        if (fread(uninstall_data[i].data, uninstall_data[i].count, 1, udfile) != 1) {
+            goto fread_error;
+        }
+    }
+
+    fclose(udfile);
+    return true;
+
+fread_error:
+    perror_wrap("error: load_uninstall_data(): fread()");
+
+error:
+    if (udfile != NULL) {
+        fclose(udfile);
+    }
+    return false;
+}
+
+static bool _device_read(void *_buffer, uint64_t loc, size_t count) {
+    uint8_t *buffer = _buffer;
+    uint64_t progress = 0;
+    while (progress < count) {
+        uint64_t block = (loc + progress) / block_size;
+
+        if (!device_cache_block(block)) {
+            return false;
+        }
+
+        uint64_t chunk = count - progress;
+        uint64_t offset = (loc + progress) % block_size;
+        if (chunk > block_size - offset)
+            chunk = block_size - offset;
+
+        memcpy(buffer + progress, &cache[offset], chunk);
+        progress += chunk;
+    }
+
+    return true;
+}
+
+static bool _device_write(const void *_buffer, uint64_t loc, size_t count) {
+    if (uninstalling) {
+        goto skip_save;
+    }
+
+    if (uninstall_data_i >= UNINSTALL_DATA_MAX) {
+        fprintf(stderr, "%s: error: Too many uninstall data entries! Please report this bug upstream.\n", program_name);
+        return false;
+    }
+
+    struct uninstall_data *ud = &uninstall_data[uninstall_data_i];
+
+    ud->data = malloc(count);
+    if (ud->data == NULL) {
+        perror_wrap("error: _device_write(): malloc()");
+        return false;
+    }
+
+    if (!_device_read(ud->data, loc, count)) {
+        return false;
+    }
+
+    ud->loc = loc;
+    ud->count = count;
+
+skip_save:;
+    const uint8_t *buffer = _buffer;
+    uint64_t progress = 0;
+    while (progress < count) {
+        uint64_t block = (loc + progress) / block_size;
+
+        if (!device_cache_block(block)) {
+            return false;
+        }
+
+        uint64_t chunk = count - progress;
+        uint64_t offset = (loc + progress) % block_size;
+        if (chunk > block_size - offset)
+            chunk = block_size - offset;
+
+        memcpy(&cache[offset], buffer + progress, chunk);
+        cache_state = CACHE_DIRTY;
+        progress += chunk;
+    }
+
+    if (!uninstalling) {
+        uninstall_data_i++;
+    }
+    return true;
+}
+
+static bool uninstall(bool quiet_arg) {
+    bool print_cache_flush_fail = false;
+    bool print_write_fail = false;
+    bool ret = true;
+
+    uninstalling = true;
+
+    cache_state = CACHE_CLEAN;
+    cached_block = (uint64_t)-1;
+
+    for (size_t i = 0; i < uninstall_data_i; i++) {
+        struct uninstall_data *ud = &uninstall_data[i];
+        bool retry = false;
+        while (!_device_write(ud->data, ud->loc, ud->count)) {
+            if (retry) {
+                fprintf(stderr, "%s: warning: Retry failed.\n", program_name);
+                print_write_fail = true;
+                break;
+            }
+            if (!quiet) {
+                fprintf(stderr, "%s: warning: Uninstall data index %zu failed to write, retrying...\n", program_name, i);
+            }
+            if (!device_flush_cache()) {
+                print_cache_flush_fail = true;
+            }
+            cache_state = CACHE_CLEAN;
+            cached_block = (uint64_t)-1;
+            retry = true;
+        }
+    }
+
+    if (!device_flush_cache()) {
+        print_cache_flush_fail = true;
+    }
+
+    if (print_write_fail) {
+        fprintf(stderr, "%s: error: Some data failed to be uninstalled correctly.\n", program_name);
+        ret = false;
+    }
+
+    if (print_cache_flush_fail) {
+        fprintf(stderr, "%s: error: Device cache flush failure. Uninstall may be incomplete.\n", program_name);
+        ret = false;
+    }
+
+    if (ret == true && !quiet && !quiet_arg) {
+        fprintf(stderr, "Uninstall data restored successfully.\n");
+    }
+
+    return ret;
+}
+
+#define device_read(BUFFER, LOC, COUNT)        \
+    do {                                       \
+        if (!_device_read(BUFFER, LOC, COUNT)) \
+            goto cleanup;                      \
+    } while (0)
+
+#define device_write(BUFFER, LOC, COUNT)        \
+    do {                                        \
+        if (!_device_write(BUFFER, LOC, COUNT)) \
+            goto cleanup;                       \
+    } while (0)
+
+static void bios_install_usage(void) {
+    printf("usage: %s bios-install <device> [GPT partition index]\n", program_name);
+    printf("\n");
+    printf("    --force-mbr     Force MBR detection to work even if the\n");
+    printf("                    safety checks fail (DANGEROUS!)\n");
+    printf("\n");
+    printf("    --uninstall     Reverse the entire install procedure\n");
+    printf("\n");
+    printf("    --uninstall-data-file=<filename>\n");
+    printf("                    Set the input (for --uninstall) or output file\n");
+    printf("                    name of the file which contains uninstall data\n");
+    printf("\n");
+    printf("    --quiet         Do not print verbose diagnostic messages\n");
+    printf("\n");
+    printf("    --help | -h     Display this help message\n");
+    printf("\n");
+}
+
+static int bios_install(int argc, char *argv[]) {
+    int      ok = EXIT_FAILURE;
+    int      force_mbr = 0;
+    bool uninstall_mode = false;
+    const uint8_t *bootloader_img = binary_limine_hdd_bin_data;
+    size_t   bootloader_file_size = sizeof(binary_limine_hdd_bin_data);
+    uint8_t  orig_mbr[70], timestamp[6];
+    const char *part_ndx = NULL;
+
+#ifndef __BYTE_ORDER__
+    uint32_t endcheck = 0x12345678;
+    uint8_t endbyte = *((uint8_t *)&endcheck);
+    bigendian = endbyte == 0x12;
+#endif
+
+    if (argc < 2) {
+        bios_install_usage();
+#ifdef IS_WINDOWS
+        system("pause");
+#endif
+        return EXIT_FAILURE;
+    }
+
+    for (int i = 1; i < argc; i++) {
+        if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) {
+            bios_install_usage();
+            return EXIT_SUCCESS;
+        } else if (strcmp(argv[i], "--quiet") == 0) {
+            quiet = true;
+        } else if (strcmp(argv[i], "--force-mbr") == 0) {
+            if (force_mbr && !quiet) {
+                fprintf(stderr, "%s: warning: --force-mbr already set.\n", program_name);
+            }
+            force_mbr = 1;
+        } else if (strcmp(argv[i], "--uninstall") == 0) {
+            if (uninstall_mode && !quiet) {
+                fprintf(stderr, "%s: warning: --uninstall already set.\n", program_name);
+            }
+            uninstall_mode = true;
+        } else if (memcmp(argv[i], "--uninstall-data-file=", 21) == 0) {
+            if (uninstall_file != NULL && !quiet) {
+                fprintf(stderr, "%s: warning: --uninstall-data-file already set. Overriding...\n", program_name);
+            }
+            uninstall_file = argv[i] + 21;
+            if (strlen(uninstall_file) == 0) {
+                fprintf(stderr, "%s: error: Uninstall data file has a zero-length name!\n", program_name);
+                return EXIT_FAILURE;
+            }
+        } else {
+            if (device != NULL) { // [GPT partition index]
+                part_ndx = argv[i]; // TODO: Make this non-positional?
+            } else if ((device = fopen(argv[i], "r+b")) == NULL) { // <device>
+                perror_wrap("error: `%s`", argv[i]);
+                return EXIT_FAILURE;
+            }
+        }
+    }
+
+    if (device == NULL) {
+        fprintf(stderr, "%s: error: No device specified\n", program_name);
+        bios_install_usage();
+        return EXIT_FAILURE;
+    }
+
+    if (!device_init()) {
+        goto uninstall_mode_cleanup;
+    }
+
+    if (uninstall_mode) {
+        if (uninstall_file == NULL) {
+            fprintf(stderr, "%s: error: Uninstall mode set but no --uninstall-data-file=... passed.\n", program_name);
+            goto uninstall_mode_cleanup;
+        }
+
+        if (!load_uninstall_data(uninstall_file)) {
+            goto uninstall_mode_cleanup;
+        }
+
+        if (uninstall(false) == false) {
+            ok = EXIT_FAILURE;
+        } else {
+            ok = EXIT_SUCCESS;
+        }
+        goto uninstall_mode_cleanup;
+    }
+
+    // Probe for GPT and logical block size
+    int gpt = 0;
+    struct gpt_table_header gpt_header;
+    uint64_t lb_guesses[] = { 512, 4096 };
+    uint64_t lb_size = 0;
+    for (size_t i = 0; i < sizeof(lb_guesses) / sizeof(uint64_t); i++) {
+        device_read(&gpt_header, lb_guesses[i], sizeof(struct gpt_table_header));
+        if (!strncmp(gpt_header.signature, "EFI PART", 8)) {
+            lb_size = lb_guesses[i];
+            if (!force_mbr) {
+                gpt = 1;
+                if (!quiet) {
+                    fprintf(stderr, "Installing to GPT. Logical block size of %" PRIu64 " bytes.\n",
+                            lb_guesses[i]);
+                }
+            } else {
+                fprintf(stderr, "%s: error: Device has a valid GPT, refusing to force MBR.\n", program_name);
+                goto cleanup;
+            }
+            break;
+        }
+    }
+
+    struct gpt_table_header secondary_gpt_header;
+    if (gpt) {
+        if (!quiet) {
+            fprintf(stderr, "Secondary header at LBA 0x%" PRIx64 ".\n",
+                    ENDSWAP(gpt_header.alternate_lba));
+        }
+        device_read(&secondary_gpt_header, lb_size * ENDSWAP(gpt_header.alternate_lba),
+              sizeof(struct gpt_table_header));
+        if (!strncmp(secondary_gpt_header.signature, "EFI PART", 8)) {
+            if (!quiet) {
+                fprintf(stderr, "Secondary header valid.\n");
+            }
+        } else {
+            fprintf(stderr, "%s: error: Secondary header not valid, aborting.\n", program_name);
+            goto cleanup;
+        }
+    }
+
+    int mbr = 0;
+    if (gpt == 0) {
+        // Do all sanity checks on MBR
+        mbr = 1;
+
+        uint8_t hint8 = 0;
+        uint16_t hint16 = 0;
+        uint32_t hint32 = 0;
+
+        bool any_active = false;
+
+        device_read(&hint8, 446, sizeof(uint8_t));
+        if (hint8 != 0x00 && hint8 != 0x80) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                hint8 &= 0x80;
+                device_write(&hint8, 446, sizeof(uint8_t));
+            }
+        }
+        any_active = any_active || (hint8 & 0x80) != 0;
+        device_read(&hint8, 446 + 4, sizeof(uint8_t));
+        if (hint8 != 0x00) {
+            device_read(&hint32, 446 + 8, sizeof(uint32_t));
+            hint32 = ENDSWAP(hint32);
+            if (hint32 < 63) {
+                goto part_too_low;
+            }
+        }
+        device_read(&hint8, 462, sizeof(uint8_t));
+        if (hint8 != 0x00 && hint8 != 0x80) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                hint8 &= 0x80;
+                device_write(&hint8, 462, sizeof(uint8_t));
+            }
+        }
+        any_active = any_active || (hint8 & 0x80) != 0;
+        device_read(&hint8, 462 + 4, sizeof(uint8_t));
+        if (hint8 != 0x00) {
+            device_read(&hint32, 462 + 8, sizeof(uint32_t));
+            hint32 = ENDSWAP(hint32);
+            if (hint32 < 63) {
+                goto part_too_low;
+            }
+        }
+        device_read(&hint8, 478, sizeof(uint8_t));
+        if (hint8 != 0x00 && hint8 != 0x80) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                hint8 &= 0x80;
+                device_write(&hint8, 478, sizeof(uint8_t));
+            }
+        }
+        any_active = any_active || (hint8 & 0x80) != 0;
+        device_read(&hint8, 478 + 4, sizeof(uint8_t));
+        if (hint8 != 0x00) {
+            device_read(&hint32, 478 + 8, sizeof(uint32_t));
+            hint32 = ENDSWAP(hint32);
+            if (hint32 < 63) {
+                goto part_too_low;
+            }
+        }
+        device_read(&hint8, 494, sizeof(uint8_t));
+        if (hint8 != 0x00 && hint8 != 0x80) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                hint8 &= 0x80;
+                device_write(&hint8, 494, sizeof(uint8_t));
+            }
+        }
+        any_active = any_active || (hint8 & 0x80) != 0;
+        device_read(&hint8, 494 + 4, sizeof(uint8_t));
+        if (hint8 != 0x00) {
+            device_read(&hint32, 494 + 8, sizeof(uint32_t));
+            hint32 = ENDSWAP(hint32);
+            if (hint32 < 63) {
+                goto part_too_low;
+            }
+        }
+
+        if (0) {
+part_too_low:
+            fprintf(stderr, "%s: error: A partition's start sector is less than 63, aborting.\n", program_name);
+            goto cleanup;
+        }
+
+        char hintc[64];
+        device_read(hintc, 4, 8);
+        if (memcmp(hintc, "_ECH_FS_", 8) == 0) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                memset(hintc, 0, 8);
+                device_write(hintc, 4, 8);
+            }
+        }
+        device_read(hintc, 3, 4);
+        if (memcmp(hintc, "NTFS", 4) == 0) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                memset(hintc, 0, 4);
+                device_write(hintc, 3, 4);
+            }
+        }
+        device_read(hintc, 54, 3);
+        if (memcmp(hintc, "FAT", 3) == 0) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                memset(hintc, 0, 5);
+                device_write(hintc, 54, 5);
+            }
+        }
+        device_read(hintc, 82, 3);
+        if (memcmp(hintc, "FAT", 3) == 0) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                memset(hintc, 0, 5);
+                device_write(hintc, 82, 5);
+            }
+        }
+        device_read(hintc, 3, 5);
+        if (memcmp(hintc, "FAT32", 5) == 0) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                memset(hintc, 0, 5);
+                device_write(hintc, 3, 5);
+            }
+        }
+        device_read(&hint16, 1080, sizeof(uint16_t));
+        hint16 = ENDSWAP(hint16);
+        if (hint16 == 0xef53) {
+            if (!force_mbr) {
+                mbr = 0;
+            } else {
+                hint16 = 0;
+                hint16 = ENDSWAP(hint16);
+                device_write(&hint16, 1080, sizeof(uint16_t));
+            }
+        }
+
+        if (mbr && !any_active) {
+            if (!quiet) {
+                fprintf(stderr, "No active partition found, some systems may not boot.\n");
+                fprintf(stderr, "Setting partition 1 as active to work around the issue...\n");
+            }
+            hint8 = 0x80;
+            device_write(&hint8, 446, sizeof(uint8_t));
+        }
+    }
+
+    if (gpt == 0 && mbr == 0) {
+        fprintf(stderr, "error: Could not determine if the device has a valid partition table.\n");
+        fprintf(stderr, "       Please ensure the device has a valid MBR or GPT.\n");
+        fprintf(stderr, "       Alternatively, pass `--force-mbr` to override these checks.\n");
+        fprintf(stderr, "       **ONLY DO THIS AT YOUR OWN RISK, DATA LOSS MAY OCCUR!**\n");
+        goto cleanup;
+    }
+
+    size_t   stage2_size   = bootloader_file_size - 512;
+
+    size_t   stage2_sects  = DIV_ROUNDUP(stage2_size, 512);
+
+    uint16_t stage2_size_a = (stage2_sects / 2) * 512 + (stage2_sects % 2 ? 512 : 0);
+    uint16_t stage2_size_b = (stage2_sects / 2) * 512;
+
+    // Default split of stage2 for MBR (consecutive in post MBR gap)
+    uint64_t stage2_loc_a = 512;
+    uint64_t stage2_loc_b = stage2_loc_a + stage2_size_a;
+
+    if (gpt) {
+        if (part_ndx != NULL) {
+            uint32_t partition_num;
+            sscanf(part_ndx, "%" SCNu32, &partition_num);
+            partition_num--;
+            if (partition_num > ENDSWAP(gpt_header.number_of_partition_entries)) {
+                fprintf(stderr, "%s: error: Partition number is too large.\n", program_name);
+                goto cleanup;
+            }
+
+            struct gpt_entry gpt_entry;
+            device_read(&gpt_entry,
+                (ENDSWAP(gpt_header.partition_entry_lba) * lb_size)
+                + (partition_num * ENDSWAP(gpt_header.size_of_partition_entry)),
+                sizeof(struct gpt_entry));
+
+            if (gpt_entry.unique_partition_guid[0] == 0 &&
+              gpt_entry.unique_partition_guid[1] == 0) {
+                fprintf(stderr, "%s: error: No such partition: `%s`.\n", program_name, part_ndx);
+                goto cleanup;
+            }
+
+            if (!quiet) {
+                fprintf(stderr, "GPT partition specified. Installing there instead of embedding.\n");
+            }
+
+            stage2_loc_a = ENDSWAP(gpt_entry.starting_lba) * lb_size;
+            stage2_loc_b = stage2_loc_a + stage2_size_a;
+            if (stage2_loc_b & (lb_size - 1))
+                stage2_loc_b = (stage2_loc_b + lb_size) & ~(lb_size - 1);
+        } else {
+            if (!quiet) {
+                fprintf(stderr, "GPT partition NOT specified. Attempting GPT embedding.\n");
+            }
+
+            int64_t max_partition_entry_used = -1;
+            for (int64_t i = 0; i < (int64_t)ENDSWAP(gpt_header.number_of_partition_entries); i++) {
+                struct gpt_entry gpt_entry;
+                device_read(&gpt_entry,
+                    (ENDSWAP(gpt_header.partition_entry_lba) * lb_size)
+                      + (i * ENDSWAP(gpt_header.size_of_partition_entry)),
+                    sizeof(struct gpt_entry));
+
+                if (gpt_entry.unique_partition_guid[0] != 0 ||
+                  gpt_entry.unique_partition_guid[1] != 0) {
+                    if (i > max_partition_entry_used)
+                        max_partition_entry_used = i;
+                }
+            }
+
+            stage2_loc_a  = (ENDSWAP(gpt_header.partition_entry_lba) + 32) * lb_size;
+            stage2_loc_a -= stage2_size_a;
+            stage2_loc_a &= ~(lb_size - 1);
+            stage2_loc_b  = (ENDSWAP(secondary_gpt_header.partition_entry_lba) + 32) * lb_size;
+            stage2_loc_b -= stage2_size_b;
+            stage2_loc_b &= ~(lb_size - 1);
+
+            size_t partition_entries_per_lb =
+                lb_size / ENDSWAP(gpt_header.size_of_partition_entry);
+            size_t new_partition_array_lba_size =
+                stage2_loc_a / lb_size - ENDSWAP(gpt_header.partition_entry_lba);
+            size_t new_partition_entry_count =
+                new_partition_array_lba_size * partition_entries_per_lb;
+
+            if ((int64_t)new_partition_entry_count <= max_partition_entry_used) {
+                fprintf(stderr, "%s: error: Cannot embed because there are too many used partition entries.\n", program_name);
+                goto cleanup;
+            }
+
+            if (!quiet) {
+                fprintf(stderr, "New maximum count of partition entries: %zu.\n", new_partition_entry_count);
+            }
+
+            // Zero out unused partitions
+            void *empty = calloc(1, ENDSWAP(gpt_header.size_of_partition_entry));
+            for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
+                device_write(empty,
+                    ENDSWAP(gpt_header.partition_entry_lba) * lb_size + i * ENDSWAP(gpt_header.size_of_partition_entry),
+                    ENDSWAP(gpt_header.size_of_partition_entry));
+            }
+            for (size_t i = max_partition_entry_used + 1; i < new_partition_entry_count; i++) {
+                device_write(empty,
+                    ENDSWAP(secondary_gpt_header.partition_entry_lba) * lb_size + i * ENDSWAP(secondary_gpt_header.size_of_partition_entry),
+                    ENDSWAP(secondary_gpt_header.size_of_partition_entry));
+            }
+            free(empty);
+
+            uint8_t *partition_array =
+                malloc(new_partition_entry_count * ENDSWAP(gpt_header.size_of_partition_entry));
+            if (partition_array == NULL) {
+                perror_wrap("error: bios_install(): malloc()");
+                goto cleanup;
+            }
+
+            device_read(partition_array,
+                  ENDSWAP(gpt_header.partition_entry_lba) * lb_size,
+                  new_partition_entry_count * ENDSWAP(gpt_header.size_of_partition_entry));
+
+            uint32_t crc32_partition_array =
+                crc32(partition_array,
+                      new_partition_entry_count * ENDSWAP(gpt_header.size_of_partition_entry));
+
+            free(partition_array);
+
+            gpt_header.partition_entry_array_crc32 = ENDSWAP(crc32_partition_array);
+            gpt_header.number_of_partition_entries = ENDSWAP(new_partition_entry_count);
+            gpt_header.crc32 = 0;
+            gpt_header.crc32 = crc32(&gpt_header, 92);
+            gpt_header.crc32 = ENDSWAP(gpt_header.crc32);
+            device_write(&gpt_header,
+                         lb_size,
+                         sizeof(struct gpt_table_header));
+
+            secondary_gpt_header.partition_entry_array_crc32 = ENDSWAP(crc32_partition_array);
+            secondary_gpt_header.number_of_partition_entries =
+                ENDSWAP(new_partition_entry_count);
+            secondary_gpt_header.crc32 = 0;
+            secondary_gpt_header.crc32 = crc32(&secondary_gpt_header, 92);
+            secondary_gpt_header.crc32 = ENDSWAP(secondary_gpt_header.crc32);
+            device_write(&secondary_gpt_header,
+                         lb_size * ENDSWAP(gpt_header.alternate_lba),
+                         sizeof(struct gpt_table_header));
+        }
+    } else {
+        if (!quiet) {
+            fprintf(stderr, "Installing to MBR.\n");
+        }
+    }
+
+    if (!quiet) {
+        fprintf(stderr, "Stage 2 to be located at 0x%" PRIx64 " and 0x%" PRIx64 ".\n",
+                stage2_loc_a, stage2_loc_b);
+    }
+
+    // Save original timestamp
+    device_read(timestamp, 218, 6);
+
+    // Save the original partition table of the device
+    device_read(orig_mbr, 440, 70);
+
+    // Write the bootsector from the bootloader to the device
+    device_write(&bootloader_img[0], 0, 512);
+
+    // Write the rest of stage 2 to the device
+    device_write(&bootloader_img[512], stage2_loc_a, stage2_size_a);
+    device_write(&bootloader_img[512 + stage2_size_a],
+                 stage2_loc_b, stage2_size - stage2_size_a);
+
+    // Hardcode in the bootsector the location of stage 2 halves
+    stage2_size_a = ENDSWAP(stage2_size_a);
+    device_write(&stage2_size_a, 0x1a4 + 0,  sizeof(uint16_t));
+    stage2_size_b = ENDSWAP(stage2_size_b);
+    device_write(&stage2_size_b, 0x1a4 + 2,  sizeof(uint16_t));
+    stage2_loc_a = ENDSWAP(stage2_loc_a);
+    device_write(&stage2_loc_a,  0x1a4 + 4,  sizeof(uint64_t));
+    stage2_loc_b = ENDSWAP(stage2_loc_b);
+    device_write(&stage2_loc_b,  0x1a4 + 12, sizeof(uint64_t));
+
+    // Write back timestamp
+    device_write(timestamp, 218, 6);
+
+    // Write back the saved partition table to the device
+    device_write(orig_mbr, 440, 70);
+
+    if (!device_flush_cache())
+        goto cleanup;
+
+    if (!quiet) {
+        fprintf(stderr, "Reminder: Remember to copy the limine-bios.sys file in either\n"
+                        "          the root, /boot, /limine, or /boot/limine directories of\n"
+                        "          one of the partitions on the device, or boot will fail!\n");
+
+        fprintf(stderr, "Limine BIOS stages installed successfully!\n");
+    }
+
+    ok = EXIT_SUCCESS;
+
+cleanup:
+    reverse_uninstall_data();
+    if (ok != EXIT_SUCCESS) {
+        // If we failed, attempt to reverse install process
+        fprintf(stderr, "%s: Install failed, undoing work...\n", program_name);
+        uninstall(true);
+    } else if (uninstall_file != NULL) {
+        store_uninstall_data(uninstall_file);
+    }
+uninstall_mode_cleanup:
+    free_uninstall_data();
+    if (cache)
+        free(cache);
+    if (device != NULL)
+        fclose(device);
+
+    return ok;
+}
+#endif
+
+#define CONFIG_B2SUM_SIGNATURE "++CONFIG_B2SUM_SIGNATURE++"
+
+static void enroll_config_usage(void) {
+    printf("usage: %s enroll-config <Limine executable> <BLAKE2B of config file>\n", program_name);
+    printf("\n");
+    printf("    --reset      Remove enrolled BLAKE2B, will not check config integrity\n");
+    printf("\n");
+    printf("    --quiet      Do not print verbose diagnostic messages\n");
+    printf("\n");
+    printf("    --help | -h  Display this help message\n");
+    printf("\n");
+}
+
+static int enroll_config(int argc, char *argv[]) {
+    int ret = EXIT_FAILURE;
+
+    char *bootloader = NULL;
+    FILE *bootloader_file = NULL;
+    bool quiet = false;
+    bool reset = false;
+
+    for (int i = 1; i < argc; i++) {
+        if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) {
+            enroll_config_usage();
+            return EXIT_SUCCESS;
+        } else if (strcmp(argv[i], "--quiet") == 0) {
+            remove_arg(&argc, argv, i);
+            quiet = true;
+        } else if (strcmp(argv[i], "--reset") == 0) {
+            remove_arg(&argc, argv, i);
+            reset = true;
+        }
+    }
+
+    if (argc <= (reset ? 1 : 2)) {
+        enroll_config_usage();
+#ifdef IS_WINDOWS
+        system("pause");
+#endif
+        return EXIT_FAILURE;
+    }
+
+    if (!reset && strlen(argv[2]) != 128) {
+        fprintf(stderr, "%s: error: BLAKE2B specified is not 128 characters long.\n", program_name);
+        goto cleanup;
+    }
+
+    bootloader_file = fopen(argv[1], "r+b");
+    if (bootloader_file == NULL) {
+        perror_wrap("error: `%s`", argv[1]);
+        goto cleanup;
+    }
+
+    if (fseek(bootloader_file, 0, SEEK_END) != 0) {
+        perror_wrap("error: enroll_config(): fseek()");
+        goto cleanup;
+    }
+    size_t bootloader_size = ftell(bootloader_file);
+    rewind(bootloader_file);
+
+    bootloader = malloc(bootloader_size);
+    if (bootloader == NULL) {
+        perror_wrap("error: enroll_config(): malloc()");
+        goto cleanup;
+    }
+
+    if (fread(bootloader, bootloader_size, 1, bootloader_file) != 1) {
+        perror_wrap("error: enroll_config(): fread()");
+        goto cleanup;
+    }
+
+    char *checksum_loc = NULL;
+    size_t checked_count = 0;
+    const char *config_b2sum_sign = CONFIG_B2SUM_SIGNATURE;
+    for (size_t i = 0; i < bootloader_size - ((sizeof(CONFIG_B2SUM_SIGNATURE) - 1) + 128) + 1; i++) {
+        if (bootloader[i] != config_b2sum_sign[checked_count]) {
+            checked_count = 0;
+            continue;
+        }
+
+        checked_count++;
+
+        if (checked_count == sizeof(CONFIG_B2SUM_SIGNATURE) - 1) {
+            checksum_loc = &bootloader[i + 1];
+            break;
+        }
+    }
+
+    if (checksum_loc == NULL) {
+        fprintf(stderr, "%s: error: Checksum location not found in provided executable.\n", program_name);
+        goto cleanup;
+    }
+
+    if (!reset) {
+        memcpy(checksum_loc, argv[2], 128);
+    } else {
+        memset(checksum_loc, '0', 128);
+    }
+
+    if (fseek(bootloader_file, 0, SEEK_SET) != 0) {
+        perror_wrap("error: enroll_config(): fseek()");
+        goto cleanup;
+    }
+    if (fwrite(bootloader, bootloader_size, 1, bootloader_file) != 1) {
+        perror_wrap("error: enroll_config(): fwrite()");
+        goto cleanup;
+    }
+
+    if (!quiet) {
+        fprintf(stderr, "Config file BLAKE2B successfully %s!\n", reset ? "reset" : "enrolled");
+    }
+    ret = EXIT_SUCCESS;
+
+cleanup:
+    if (bootloader != NULL) {
+        free(bootloader);
+    }
+    if (bootloader_file != NULL) {
+        fclose(bootloader_file);
+    }
+    return ret;
+}
+
+#define LIMINE_VERSION "8.0.0"
+#define LIMINE_COPYRIGHT "Copyright (C) 2019-2024 mintsuki and contributors."
+
+static void version_usage(void) {
+    printf("usage: %s version [options...]\n", program_name);
+    printf("\n");
+    printf("    --version-only  Only print the version number without licensing info\n");
+    printf("                    and other distractions\n");
+    printf("\n");
+    printf("    --help | -h     Display this help message\n");
+    printf("\n");
+}
+
+static int version(int argc, char *argv[]) {
+    if (argc >= 2) {
+        if (strcmp(argv[1], "--help") == 0) {
+            version_usage();
+            return EXIT_SUCCESS;
+        } else if (strcmp(argv[1], "--version-only") == 0) {
+            puts(LIMINE_VERSION);
+            return EXIT_SUCCESS;
+        }
+    }
+
+    puts("Limine " LIMINE_VERSION);
+    puts(LIMINE_COPYRIGHT);
+    puts("Limine is distributed under the terms of the BSD-2-Clause license.");
+    puts("There is ABSOLUTELY NO WARRANTY, to the extent permitted by law.");
+    return EXIT_SUCCESS;
+}
+
+static void general_usage(void) {
+    printf("usage: %s <command> <args...>\n", program_name);
+    printf("\n");
+    printf("    --print-datadir   Print the directory containing the bootloader files\n");
+    printf("\n");
+    printf("    --version         Print the Limine version (like the `version` command)\n");
+    printf("\n");
+    printf("    --help | -h       Display this help message\n");
+    printf("\n");
+    printf("Commands: `help`, `version`, `bios-install`, `enroll-config`\n");
+    printf("Use `--help` after specifying the command for command-specific help.\n");
+}
+
+static int print_datadir(void) {
+#ifdef LIMINE_DATADIR
+    puts(LIMINE_DATADIR);
+    return EXIT_SUCCESS;
+#else
+    fprintf(stderr, "%s: error: Cannot print datadir for `limine` built out-of-tree.\n", program_name);
+    return EXIT_FAILURE;
+#endif
+}
+
+int main(int argc, char *argv[]) {
+    program_name = argv[0];
+
+    if (argc <= 1) {
+        general_usage();
+        return EXIT_FAILURE;
+    }
+
+    if (strcmp(argv[1], "help") == 0
+     || strcmp(argv[1], "--help") == 0
+     || strcmp(argv[1], "-h") == 0) {
+        general_usage();
+        return EXIT_SUCCESS;
+    } else if (strcmp(argv[1], "bios-install") == 0) {
+#ifndef LIMINE_NO_BIOS
+        return bios_install(argc - 1, &argv[1]);
+#else
+        fprintf(stderr, "%s: error: Limine has been compiled without BIOS support.\n", program_name);
+        return EXIT_FAILURE;
+#endif
+    } else if (strcmp(argv[1], "enroll-config") == 0) {
+        return enroll_config(argc - 1, &argv[1]);
+    } else if (strcmp(argv[1], "--print-datadir") == 0) {
+        return print_datadir();
+    } else if (strcmp(argv[1], "version") == 0
+            || strcmp(argv[1], "--version") == 0) {
+        return version(argc - 1, &argv[1]);
+    }
+
+    general_usage();
+    return EXIT_FAILURE;
+}
diff --git a/limine.exe b/limine.exe
new file mode 100755
index 00000000..2affd317
Binary files /dev/null and b/limine.exe differ
diff --git a/limine.h b/limine.h
new file mode 100644
index 00000000..099b6d1e
--- /dev/null
+++ b/limine.h
@@ -0,0 +1,625 @@
+/* BSD Zero Clause License */
+
+/* Copyright (C) 2022-2024 mintsuki and contributors.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef LIMINE_H
+#define LIMINE_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+/* Misc */
+
+#ifdef LIMINE_NO_POINTERS
+#  define LIMINE_PTR(TYPE) uint64_t
+#else
+#  define LIMINE_PTR(TYPE) TYPE
+#endif
+
+#ifdef __GNUC__
+#  define LIMINE_DEPRECATED __attribute__((__deprecated__))
+#  define LIMINE_DEPRECATED_IGNORE_START \
+    _Pragma("GCC diagnostic push") \
+    _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+#  define LIMINE_DEPRECATED_IGNORE_END \
+    _Pragma("GCC diagnostic pop")
+#else
+#  define LIMINE_DEPRECATED
+#  define LIMINE_DEPRECATED_IGNORE_START
+#  define LIMINE_DEPRECATED_IGNORE_END
+#endif
+
+#define LIMINE_REQUESTS_START_MARKER \
+    uint64_t limine_requests_start_marker[4] = { 0xf6b8f4b39de7d1ae, 0xfab91a6940fcb9cf, \
+                                                 0x785c6ed015d3e316, 0x181e920a7852b9d9 };
+#define LIMINE_REQUESTS_END_MARKER \
+    uint64_t limine_requests_end_marker[2] = { 0xadc0e0531bb10d03, 0x9572709f31764c62 };
+
+#define LIMINE_REQUESTS_DELIMITER LIMINE_REQUESTS_END_MARKER
+
+#define LIMINE_BASE_REVISION(N) \
+    uint64_t limine_base_revision[3] = { 0xf9562b2d5c95a6c8, 0x6a7b384944536bdc, (N) };
+
+#define LIMINE_BASE_REVISION_SUPPORTED (limine_base_revision[2] == 0)
+
+#define LIMINE_COMMON_MAGIC 0xc7b1dd30df4c8b88, 0x0a82e883a194f07b
+
+struct limine_uuid {
+    uint32_t a;
+    uint16_t b;
+    uint16_t c;
+    uint8_t d[8];
+};
+
+#define LIMINE_MEDIA_TYPE_GENERIC 0
+#define LIMINE_MEDIA_TYPE_OPTICAL 1
+#define LIMINE_MEDIA_TYPE_TFTP 2
+
+struct limine_file {
+    uint64_t revision;
+    LIMINE_PTR(void *) address;
+    uint64_t size;
+    LIMINE_PTR(char *) path;
+    LIMINE_PTR(char *) cmdline;
+    uint32_t media_type;
+    uint32_t unused;
+    uint32_t tftp_ip;
+    uint32_t tftp_port;
+    uint32_t partition_index;
+    uint32_t mbr_disk_id;
+    struct limine_uuid gpt_disk_uuid;
+    struct limine_uuid gpt_part_uuid;
+    struct limine_uuid part_uuid;
+};
+
+/* Boot info */
+
+#define LIMINE_BOOTLOADER_INFO_REQUEST { LIMINE_COMMON_MAGIC, 0xf55038d8e2a1202f, 0x279426fcf5f59740 }
+
+struct limine_bootloader_info_response {
+    uint64_t revision;
+    LIMINE_PTR(char *) name;
+    LIMINE_PTR(char *) version;
+};
+
+struct limine_bootloader_info_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_bootloader_info_response *) response;
+};
+
+/* Firmware type */
+
+#define LIMINE_FIRMWARE_TYPE_REQUEST { LIMINE_COMMON_MAGIC, 0x8c2f75d90bef28a8, 0x7045a4688eac00c3 }
+
+#define LIMINE_FIRMWARE_TYPE_X86BIOS 0
+#define LIMINE_FIRMWARE_TYPE_UEFI32 1
+#define LIMINE_FIRMWARE_TYPE_UEFI64 2
+
+struct limine_firmware_type_response {
+    uint64_t revision;
+    uint64_t firmware_type;
+};
+
+struct limine_firmware_type_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_firmware_type_response *) response;
+};
+
+/* Stack size */
+
+#define LIMINE_STACK_SIZE_REQUEST { LIMINE_COMMON_MAGIC, 0x224ef0460a8e8926, 0xe1cb0fc25f46ea3d }
+
+struct limine_stack_size_response {
+    uint64_t revision;
+};
+
+struct limine_stack_size_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_stack_size_response *) response;
+    uint64_t stack_size;
+};
+
+/* HHDM */
+
+#define LIMINE_HHDM_REQUEST { LIMINE_COMMON_MAGIC, 0x48dcf1cb8ad2b852, 0x63984e959a98244b }
+
+struct limine_hhdm_response {
+    uint64_t revision;
+    uint64_t offset;
+};
+
+struct limine_hhdm_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_hhdm_response *) response;
+};
+
+/* Framebuffer */
+
+#define LIMINE_FRAMEBUFFER_REQUEST { LIMINE_COMMON_MAGIC, 0x9d5827dcd881dd75, 0xa3148604f6fab11b }
+
+#define LIMINE_FRAMEBUFFER_RGB 1
+
+struct limine_video_mode {
+    uint64_t pitch;
+    uint64_t width;
+    uint64_t height;
+    uint16_t bpp;
+    uint8_t memory_model;
+    uint8_t red_mask_size;
+    uint8_t red_mask_shift;
+    uint8_t green_mask_size;
+    uint8_t green_mask_shift;
+    uint8_t blue_mask_size;
+    uint8_t blue_mask_shift;
+};
+
+struct limine_framebuffer {
+    LIMINE_PTR(void *) address;
+    uint64_t width;
+    uint64_t height;
+    uint64_t pitch;
+    uint16_t bpp;
+    uint8_t memory_model;
+    uint8_t red_mask_size;
+    uint8_t red_mask_shift;
+    uint8_t green_mask_size;
+    uint8_t green_mask_shift;
+    uint8_t blue_mask_size;
+    uint8_t blue_mask_shift;
+    uint8_t unused[7];
+    uint64_t edid_size;
+    LIMINE_PTR(void *) edid;
+    /* Response revision 1 */
+    uint64_t mode_count;
+    LIMINE_PTR(struct limine_video_mode **) modes;
+};
+
+struct limine_framebuffer_response {
+    uint64_t revision;
+    uint64_t framebuffer_count;
+    LIMINE_PTR(struct limine_framebuffer **) framebuffers;
+};
+
+struct limine_framebuffer_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_framebuffer_response *) response;
+};
+
+/* Terminal */
+
+#define LIMINE_TERMINAL_REQUEST { LIMINE_COMMON_MAGIC, 0xc8ac59310c2b0844, 0xa68d0c7265d38878 }
+
+#define LIMINE_TERMINAL_CB_DEC 10
+#define LIMINE_TERMINAL_CB_BELL 20
+#define LIMINE_TERMINAL_CB_PRIVATE_ID 30
+#define LIMINE_TERMINAL_CB_STATUS_REPORT 40
+#define LIMINE_TERMINAL_CB_POS_REPORT 50
+#define LIMINE_TERMINAL_CB_KBD_LEDS 60
+#define LIMINE_TERMINAL_CB_MODE 70
+#define LIMINE_TERMINAL_CB_LINUX 80
+
+#define LIMINE_TERMINAL_CTX_SIZE ((uint64_t)(-1))
+#define LIMINE_TERMINAL_CTX_SAVE ((uint64_t)(-2))
+#define LIMINE_TERMINAL_CTX_RESTORE ((uint64_t)(-3))
+#define LIMINE_TERMINAL_FULL_REFRESH ((uint64_t)(-4))
+
+/* Response revision 1 */
+#define LIMINE_TERMINAL_OOB_OUTPUT_GET ((uint64_t)(-10))
+#define LIMINE_TERMINAL_OOB_OUTPUT_SET ((uint64_t)(-11))
+
+#define LIMINE_TERMINAL_OOB_OUTPUT_OCRNL (1 << 0)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OFDEL (1 << 1)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OFILL (1 << 2)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OLCUC (1 << 3)
+#define LIMINE_TERMINAL_OOB_OUTPUT_ONLCR (1 << 4)
+#define LIMINE_TERMINAL_OOB_OUTPUT_ONLRET (1 << 5)
+#define LIMINE_TERMINAL_OOB_OUTPUT_ONOCR (1 << 6)
+#define LIMINE_TERMINAL_OOB_OUTPUT_OPOST (1 << 7)
+
+LIMINE_DEPRECATED_IGNORE_START
+
+struct LIMINE_DEPRECATED limine_terminal;
+
+typedef void (*limine_terminal_write)(struct limine_terminal *, const char *, uint64_t);
+typedef void (*limine_terminal_callback)(struct limine_terminal *, uint64_t, uint64_t, uint64_t, uint64_t);
+
+struct LIMINE_DEPRECATED limine_terminal {
+    uint64_t columns;
+    uint64_t rows;
+    LIMINE_PTR(struct limine_framebuffer *) framebuffer;
+};
+
+struct LIMINE_DEPRECATED limine_terminal_response {
+    uint64_t revision;
+    uint64_t terminal_count;
+    LIMINE_PTR(struct limine_terminal **) terminals;
+    LIMINE_PTR(limine_terminal_write) write;
+};
+
+struct LIMINE_DEPRECATED limine_terminal_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_terminal_response *) response;
+    LIMINE_PTR(limine_terminal_callback) callback;
+};
+
+LIMINE_DEPRECATED_IGNORE_END
+
+/* Paging mode */
+
+#define LIMINE_PAGING_MODE_REQUEST { LIMINE_COMMON_MAGIC, 0x95c1a0edab0944cb, 0xa4e5cb3842f7488a }
+
+#if defined (__x86_64__) || defined (__i386__)
+#define LIMINE_PAGING_MODE_X86_64_4LVL 0
+#define LIMINE_PAGING_MODE_X86_64_5LVL 1
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_X86_64_5LVL
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_X86_64_4LVL
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_X86_64_4LVL
+#elif defined (__aarch64__)
+#define LIMINE_PAGING_MODE_AARCH64_4LVL 0
+#define LIMINE_PAGING_MODE_AARCH64_5LVL 1
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_AARCH64_5LVL
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_AARCH64_4LVL
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_AARCH64_4LVL
+#elif defined (__riscv) && (__riscv_xlen == 64)
+#define LIMINE_PAGING_MODE_RISCV_SV39 0
+#define LIMINE_PAGING_MODE_RISCV_SV48 1
+#define LIMINE_PAGING_MODE_RISCV_SV57 2
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_RISCV_SV57
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_RISCV_SV39
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_RISCV_SV48
+#elif defined (__loongarch__) && (__loongarch_grlen == 64)
+#define LIMINE_PAGING_MODE_LOONGARCH64_4LVL 0
+#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_LOONGARCH64_4LVL
+#define LIMINE_PAGING_MODE_MIN LIMINE_PAGING_MODE_LOONGARCH64_4LVL
+#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_LOONGARCH64_4LVL
+#else
+#error Unknown architecture
+#endif
+
+struct limine_paging_mode_response {
+    uint64_t revision;
+    uint64_t mode;
+};
+
+struct limine_paging_mode_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_paging_mode_response *) response;
+    uint64_t mode;
+    uint64_t max_mode;
+    uint64_t min_mode;
+};
+
+/* 5-level paging */
+
+#define LIMINE_5_LEVEL_PAGING_REQUEST { LIMINE_COMMON_MAGIC, 0x94469551da9b3192, 0xebe5e86db7382888 }
+
+LIMINE_DEPRECATED_IGNORE_START
+
+struct LIMINE_DEPRECATED limine_5_level_paging_response {
+    uint64_t revision;
+};
+
+struct LIMINE_DEPRECATED limine_5_level_paging_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_5_level_paging_response *) response;
+};
+
+LIMINE_DEPRECATED_IGNORE_END
+
+/* SMP */
+
+#define LIMINE_SMP_REQUEST { LIMINE_COMMON_MAGIC, 0x95a67b819a1b857e, 0xa0b61b723b6a73e0 }
+
+struct limine_smp_info;
+
+typedef void (*limine_goto_address)(struct limine_smp_info *);
+
+#if defined (__x86_64__) || defined (__i386__)
+
+#define LIMINE_SMP_X2APIC (1 << 0)
+
+struct limine_smp_info {
+    uint32_t processor_id;
+    uint32_t lapic_id;
+    uint64_t reserved;
+    LIMINE_PTR(limine_goto_address) goto_address;
+    uint64_t extra_argument;
+};
+
+struct limine_smp_response {
+    uint64_t revision;
+    uint32_t flags;
+    uint32_t bsp_lapic_id;
+    uint64_t cpu_count;
+    LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#elif defined (__aarch64__)
+
+struct limine_smp_info {
+    uint32_t processor_id;
+    uint32_t reserved1;
+    uint64_t mpidr;
+    uint64_t reserved;
+    LIMINE_PTR(limine_goto_address) goto_address;
+    uint64_t extra_argument;
+};
+
+struct limine_smp_response {
+    uint64_t revision;
+    uint64_t flags;
+    uint64_t bsp_mpidr;
+    uint64_t cpu_count;
+    LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#elif defined (__riscv) && (__riscv_xlen == 64)
+
+struct limine_smp_info {
+    uint64_t processor_id;
+    uint64_t hartid;
+    uint64_t reserved;
+    LIMINE_PTR(limine_goto_address) goto_address;
+    uint64_t extra_argument;
+};
+
+struct limine_smp_response {
+    uint64_t revision;
+    uint64_t flags;
+    uint64_t bsp_hartid;
+    uint64_t cpu_count;
+    LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#elif defined (__loongarch__) && (__loongarch_grlen == 64)
+
+struct limine_smp_info {
+    uint64_t reserved;
+};
+
+struct limine_smp_response {
+    uint64_t cpu_count;
+    LIMINE_PTR(struct limine_smp_info **) cpus;
+};
+
+#else
+#error Unknown architecture
+#endif
+
+struct limine_smp_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_smp_response *) response;
+    uint64_t flags;
+};
+
+/* Memory map */
+
+#define LIMINE_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x67cf3d9d378a806f, 0xe304acdfc50c3c62 }
+
+#define LIMINE_MEMMAP_USABLE                 0
+#define LIMINE_MEMMAP_RESERVED               1
+#define LIMINE_MEMMAP_ACPI_RECLAIMABLE       2
+#define LIMINE_MEMMAP_ACPI_NVS               3
+#define LIMINE_MEMMAP_BAD_MEMORY             4
+#define LIMINE_MEMMAP_BOOTLOADER_RECLAIMABLE 5
+#define LIMINE_MEMMAP_KERNEL_AND_MODULES     6
+#define LIMINE_MEMMAP_FRAMEBUFFER            7
+
+struct limine_memmap_entry {
+    uint64_t base;
+    uint64_t length;
+    uint64_t type;
+};
+
+struct limine_memmap_response {
+    uint64_t revision;
+    uint64_t entry_count;
+    LIMINE_PTR(struct limine_memmap_entry **) entries;
+};
+
+struct limine_memmap_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_memmap_response *) response;
+};
+
+/* Entry point */
+
+#define LIMINE_ENTRY_POINT_REQUEST { LIMINE_COMMON_MAGIC, 0x13d86c035a1cd3e1, 0x2b0caa89d8f3026a }
+
+typedef void (*limine_entry_point)(void);
+
+struct limine_entry_point_response {
+    uint64_t revision;
+};
+
+struct limine_entry_point_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_entry_point_response *) response;
+    LIMINE_PTR(limine_entry_point) entry;
+};
+
+/* Kernel File */
+
+#define LIMINE_KERNEL_FILE_REQUEST { LIMINE_COMMON_MAGIC, 0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69 }
+
+struct limine_kernel_file_response {
+    uint64_t revision;
+    LIMINE_PTR(struct limine_file *) kernel_file;
+};
+
+struct limine_kernel_file_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_kernel_file_response *) response;
+};
+
+/* Module */
+
+#define LIMINE_MODULE_REQUEST { LIMINE_COMMON_MAGIC, 0x3e7e279702be32af, 0xca1c4f3bd1280cee }
+
+#define LIMINE_INTERNAL_MODULE_REQUIRED (1 << 0)
+#define LIMINE_INTERNAL_MODULE_COMPRESSED (1 << 1)
+
+struct limine_internal_module {
+    LIMINE_PTR(const char *) path;
+    LIMINE_PTR(const char *) cmdline;
+    uint64_t flags;
+};
+
+struct limine_module_response {
+    uint64_t revision;
+    uint64_t module_count;
+    LIMINE_PTR(struct limine_file **) modules;
+};
+
+struct limine_module_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_module_response *) response;
+
+    /* Request revision 1 */
+    uint64_t internal_module_count;
+    LIMINE_PTR(struct limine_internal_module **) internal_modules;
+};
+
+/* RSDP */
+
+#define LIMINE_RSDP_REQUEST { LIMINE_COMMON_MAGIC, 0xc5e77b6b397e7b43, 0x27637845accdcf3c }
+
+struct limine_rsdp_response {
+    uint64_t revision;
+    LIMINE_PTR(void *) address;
+};
+
+struct limine_rsdp_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_rsdp_response *) response;
+};
+
+/* SMBIOS */
+
+#define LIMINE_SMBIOS_REQUEST { LIMINE_COMMON_MAGIC, 0x9e9046f11e095391, 0xaa4a520fefbde5ee }
+
+struct limine_smbios_response {
+    uint64_t revision;
+    LIMINE_PTR(void *) entry_32;
+    LIMINE_PTR(void *) entry_64;
+};
+
+struct limine_smbios_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_smbios_response *) response;
+};
+
+/* EFI system table */
+
+#define LIMINE_EFI_SYSTEM_TABLE_REQUEST { LIMINE_COMMON_MAGIC, 0x5ceba5163eaaf6d6, 0x0a6981610cf65fcc }
+
+struct limine_efi_system_table_response {
+    uint64_t revision;
+    LIMINE_PTR(void *) address;
+};
+
+struct limine_efi_system_table_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_efi_system_table_response *) response;
+};
+
+/* EFI memory map */
+
+#define LIMINE_EFI_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x7df62a431d6872d5, 0xa4fcdfb3e57306c8 }
+
+struct limine_efi_memmap_response {
+    uint64_t revision;
+    LIMINE_PTR(void *) memmap;
+    uint64_t memmap_size;
+    uint64_t desc_size;
+    uint64_t desc_version;
+};
+
+struct limine_efi_memmap_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_efi_memmap_response *) response;
+};
+
+/* Boot time */
+
+#define LIMINE_BOOT_TIME_REQUEST { LIMINE_COMMON_MAGIC, 0x502746e184c088aa, 0xfbc5ec83e6327893 }
+
+struct limine_boot_time_response {
+    uint64_t revision;
+    int64_t boot_time;
+};
+
+struct limine_boot_time_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_boot_time_response *) response;
+};
+
+/* Kernel address */
+
+#define LIMINE_KERNEL_ADDRESS_REQUEST { LIMINE_COMMON_MAGIC, 0x71ba76863cc55f63, 0xb2644a48c516a487 }
+
+struct limine_kernel_address_response {
+    uint64_t revision;
+    uint64_t physical_base;
+    uint64_t virtual_base;
+};
+
+struct limine_kernel_address_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_kernel_address_response *) response;
+};
+
+/* Device Tree Blob */
+
+#define LIMINE_DTB_REQUEST { LIMINE_COMMON_MAGIC, 0xb40ddb48fb54bac7, 0x545081493f81ffb7 }
+
+struct limine_dtb_response {
+    uint64_t revision;
+    LIMINE_PTR(void *) dtb_ptr;
+};
+
+struct limine_dtb_request {
+    uint64_t id[4];
+    uint64_t revision;
+    LIMINE_PTR(struct limine_dtb_response *) response;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
tab: 248 wrap: offon