Code Monkey home page Code Monkey logo

Comments (43)

JamieDriver avatar JamieDriver commented on August 15, 2024 4

Thanks for your time on this.
I will look to add the display/verification of the fw hash to an upcoming release.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024 2

So an update from any firmware to 0.1.32ff will prompt something equivalent to "Do you want to install whatever validly signed file we are about to receive from the companion app? [yes] [no]".

After this update, the question will remain the same if the companion app isn't updated itself or chooses to not have a the hash checked.

If the app opts into a hash-check feature the device will prompt something equivalent to "Do you want to install the validly signed file with hash X we are about to receive from the companion app? [yes] [no]".

A later update might force the companion app to provide the hash.

Side note: Please invite the user to at least record the hash (photo with cellphone) to be able to check later. It's enough to keep you honest and unable to sneak binaries in on any scale. If LE forces you and gags you, you want your users to still notice in a way LE can't do anything about it.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

It is worth noting that you can upgrade it 'manually' in two steps if you prefer - ie. decline when the app offers to upgrade it in situ, and instead:

  1. download the firmware as discussed above [ edit: the fw can be downloaded using the jade_ota.py script: eg: python3 jade_ota.py --skipble --download-firmware --hw-target jade1.1 --write-compressed ]
  2. verify the build from source by checking the one you build is the same as the one downloaded, bar the appended padding/signature
  3. use the jade_ota.py script above to upload the one you have manually downloaded and verified:
    python3 jade_ota.py --skipble --fwfile <filepath>

Obviously in our apps we are trying to make life as straightforward as possible for casual users, and by insisting on signed binaries we are trying to prevent the accidental upload of malicious firmware on to a user's device.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

Note also of course that if preferred, a user is quite at liberty to buy an inexpensive, off-the-shelf esp32 device (eg. m5stack-basic, m5stack-fire, ttgo-tdisplay), and download, build and flash the Jade firmware onto that.
It should then operate exactly like a proper Jade.
Since that is not an official Blockstream Jade device, it won't insist on signed binaries, nor will our apps try to upgrade it on your behalf - you are totally in control of what code gets uploaded onto it and when.
(Note: our applications may insist on a certain minimum supported version - eg. if security issues are found and fixed)

from jade.

Giszmo avatar Giszmo commented on August 15, 2024 1

So to download the firmware, I don't need the 460 lines of python code. With those few lines of shell script it works, too:

withoutWheel="jade1.1"
withWheel="jade"
for model in $withoutWheel $withWheel; do
	files=$( wget --output-document=- https://jadefw.blockstream.com/bin/$model/index.json | jq '.stable.full[].filename' --raw-output )
	for file in $files; do
		wget https://jadefw.blockstream.com/bin/$model/$file
	done
done

I will check reproducibility from that.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

Sure - agree we need to document it - as you say a section on reproducible builds would probably be clearest.
I'll put something together on a branch and we can polish it as you go through the process.

fyi the 'sdkconfig' copied is what controls the build - the four production configs are in a directory called production.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024 1

Please let me know when you have the documentation to give it another try.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

Apologies for the delay. You know, busy ... ;-)

Reproducible production build instructions a discussed - I have followed them and they appear to reproduce the build locally - as best we can : https://github.com/Blockstream/Jade/blob/reproducible_build_instructions/REPRODUCIBLE.md
in #38
Please give feedback on the PR - I am happy to iterate on that with you before we merge it.

Before the next release I will add a 'dev' key to the repo, so you can easily reproduce the effect of signing the binary.

I will also include a section about recreating the deltas/patches, if/when that becomes relevant.

As always - many thanks for your time and diligence.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

Ok, I ran the steps and I get the same as you re: downloaded-firmware.bin and build/jade.bin.
(You can ignore build/jade_signed.bin - every signature is different as contains random nonce input - you'll see if you re-run the espsecure.py step multiple times the sha256 of the output file is always different ...)

d329dbf4fea13c6cde7df9682febae15e162947dc5a747aae98540f69e1a25d3  downloaded-firmware.bin
282eec5376bf0bf0f7c93f4c99f5a5135d2a3fe64384a9a95b414ccd38494c7c  jade_signed.hex
b74dc0d9df905f53097f3dfe66b62798257e9e7ae52a10815ec6d9f3ab2c2d89  build/jade.bin

So you didn't do anything wrong!

I used 'meld' to look at the xxd diffs - it's more of a graphical diff so you can see where the diffs are more clearly - the most substantial diff is the signature block at the very end.
The signature block is large I'm afraid - not just a hash or two!

(You can convince yourself it is just a sig block (and its associated padding) by comparing the xxd hex of build/jade.bin and build/jade_signed.bin - and you'll see how all that was added by the signing process, and the rest of the binary is the same.)

However, there are other diffs, I agree.

The two small unexpected diffs right at the start of the files (downloaded vs built/signed):

4c4
< 00000030: 302e 312e 3438 0000 0000 0000 0000 0000  0.1.48..........
---
> 00000030: 3100 0000 0000 0000 0000 0000 0000 0000  1...............

0x30 - 0x50 is the application version number - we're expecting 0.1.48 here, as it is in the downloaded file.
This looks like 'git describe' did not run properly to put the git tag version into the build.
This must be an issue with the docker image - I will investigate.

12,13c12,13
< 000000b0: 0c00 a08c c9d3 f9ef 58bd 2405 e51c d269  ........X.$....i
< 000000c0: 194e 435e 6818 56ea 80ec c5aa 0259 2c1c  .NC^h.V......Y,.
---
> 000000b0: c250 4a04 278e 4d62 9f4d 6ba2 0e03 f187  .PJ.'.Mb.Mk.....
> 000000c0: d606 74fa 6ed5 0ccb 19e2 fa08 05a2 524e  ..t.n.........RN

0xb0-0xd0 is the hash of the associated 'elf' (linker) file - this hash is different - this is a 'cascade' error and should go away if all other diffs are resolved.

Other 'spotty' diffs throughout the file - these need investigating - this is my problem, not yours ;-)
I will investigate further.

Many thanks for the feedback (and I like your script! ;-) )

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

This looks like 'git describe' did not run properly to put the git tag version into the build.

Near the start of the build log:

-- Project is not inside a git repository, or git repository has no commits; will not use 'git describe' to determine PROJECT_VER.

aha! The clues were all there all along.

If we run this before the idf.py fullclean build line, this issue is resolved.

git config --global --add safe.directory /builds/blockstream/jade

I will add this to REPRODUCIBLE.md.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

Sorry - I didn't mean all the issues - I just meant the one about the version number at the start.

I'll have to dig deeper to get to the odd diffs scattered throughout ...

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

OK, yes, there is definitely a problem with the reproducible builds.
I tried again with the latest release, 1.0.21.

I ran it following REPRODUCIBLE.md instructions explicitly, and also using your provided script (with this line added: git config --global --add safe.directory /builds/blockstream/jade):

In both cases I get:
76f763f5c468e5b8d4c2731862851332d7d51195c55b6b6eecce71ab91c6a6e8 build/jade.bin

When I sign this, and diff the hex against the downloaded file, I see small diffs scattered throughout (as well as the sig block).

I then ran again, but rather than rebuilding the docker image, I used the one the build uses (which you can see in the .gitlab-ci.yml file: image: blockstream/verde@sha256:dac128d884e5932c68ddfa72702b0f2cc534fe6068e042f6ccbdf42b53c93df7

In this case I get:
1b2254292da70dcf25faebd2c1d02fd5393ac1f4375dfa7da0e6d37316ab5454 build/jade.bin

When I sign and compare the hex, I see the only difference is in the signature block as expected.

So the issue appears to be that rebuilding the docker image is not properly reproducible.

The Dockerfile includes:

RUN apt-get update -qq && apt-get upgrade --no-install-recommends --no-install-suggests -yqq && apt-get install --no-install-recommends --no-install-suggests -yqq git wget libncurses-dev flex bison gperf libffi-
dev libssl-dev dfu-util cmake ninja-build ccache build-essential ca-certificates ccache cmake curl make pkg-config python3 python3-dev python3-pip python3-setuptools python3-serial python3-click python3-cryptography python3-future python3-pyparsing python3-pyelftools python3-pkg-resources python3-wheel python3-venv unzip bluez-tools bluez libusb-1.0-0 clang-format libglib2.0-dev libpixman-1-dev libgcrypt20-dev virtualenv libslirp-dev && apt-get -yqq autoremove && apt-get -yqq clean && rm -rf /var/lib/apt/lists/* /var/cache/* /tmp/*
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10
RUN python -m pip install --user pycodestyle

which I guess are not pinned to specific versions, so these could be the cause of the issue.

We will continue to investigate.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024 1

Version 1.0.21 is reproducible.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024 1

Thanks for keeping replying. I'm not sure I understand how Jade does things. It sounds scarily like uploading the firmware would immediately overwrite the current firmware?

You talk about the "host app" downloading stuff. With any hardware wallet I consider the hardware wallet itself the line of defence with whatever the "host app" or "companion app" is doing not all too relevant, so my assumption about how an update should work was:

  1. Anything up to some data blob getting copied to a folder on the HWW is not critical. The HWW only makes sure that writing is only possible to some, lets call it inbox folder, maybe with a size limit. This step is akin to how with a coldcard one can put the new firmware on the sdcard without the coldcard being able to stop it.
  2. If something is found in the inbox folder, the user is asked if he intended to update the firmware. This step should require authentication.
  3. If yes, that new file gets examined. If it looks like a patch and not a full firmware, produce a firmware file on the HWW by patching the old firmware but in a new file or maybe the companion app should have produced the firmware file already before putting it on the HWW.
  4. HWW checks the signature and version of the candidate firmware file. If there ever was a security issue fixed, we don't want to down-grade to prior to that fix. So I see how a feature release breaking stuff might make a down-grade interesting but some version check probably always should be in place.
  5. Ask for confirmation, providing:
    • "Signature was good and same keys as currently installed firmware were used"
    • version is ...
    • fingerprint is ...

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

@Lagrang3 - a 'production' jade hw unit cannot be directly flashed, it can only be updated by OTA once the current fw is running.
a) the ability to 'flash' is disabled (otherwise an attacker could sneakily grab your unit, flash on some malicious fw, and put it back in your bag ...)
b) the fw has to be signed by Blockstream (ie. has to be an official fw) for it to boot - again to stop a malicious fw being loaded onto the device

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024 1

@Giszmo

Thank you for putting thought and effort into auditing our process! ;-)

When we upload fw to jade it goes into a holding area, it does not overwrite the currently running fw.

What happens currently is:
a) start uploading fw (to the holding/staging area) - initial 'chunk' includes expected hash and version number etc.
b) some checks are done immediately - eg. is the new version number allowed (ie. don't downgrade prior to important security fix), is the fw appropriate for this revision of the hw, etc.
c) version info and hash are shown to the user to confirm - we assume they agree ...
d) the rest of the fw is uploaded to the staging area - this can take some time ... If it is a 'delta' the diff is combined with the current fw as it arrives - ie. what is written to the staging area is the final fw image. (*note there is no value in the host app applying the diff to get the full fw - if it wanted the full fw it may as well have just downloaded it - also the whole point of the delta upgrade is to have less data to upload to hw over the slow and potentially flaky connection)
e) when complete the staged fw is verified - does it have the hash the user agreed to, is it correctly signed, etc.
f) if all good, the unit reboots and tries to run this new fw image
g) when the unit boots the fw integrity and signatures are checked - only if this is all good is the new fw then fully promoted to be the fw to run on every boot from now on, and the prior fw effectively lost/redundant.

If there are any issues/failures/errors etc. in any of the above, whatever was staged is lost, and the old/current/existing fw remains in place.

I think this is pretty similar to your process - the main difference being that we send up the expected hash early so the user can view and confirm the versions and hash before spending several minutes uploading the whole fw - then when the entire fw was uploaded we compute the hash and ensure it was the same as you saw/agreed.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

Hi Giszmo, I'll try to assist.

where do I get the firmware binary?

The apps that upgrade Jade as above will download the firmware as part of the upgrade process. It's a little involved as there are different fw builds for different hardware configurations.
They are all available (but not easily 'browsable') at: 'https://jadefw.blockstream.com/bin'

Essentially the app would:

  1. inspect the connected Jade's 'version info' to get the 'board type' (there are two slightly different hw types, the initial batch had a true wheel, a second batch had a rocker/jog-wheel), and deduce which fw subdirectory to use ('jade' or 'jade1.1')
  2. download the relevant index file (by default 'LATEST' for the latest stable (ie. recommended) release)
  3. download one of the firmware files listed in that file (ble-enabled, or no-radio firmware)
  4. pass this to the jade via the 'ota' method

In the top level of this repo is a simple python script jade_ota.py which can be invoked to download and update the fw.
eg: python3 jade_ota.py --skipble --download-firmware --hw-target jade1.1
A look at this script should help with the steps as above (although the first step not present as with this tool the caller passes the flavour to download and use).
eg. python3 jade_ota.py --skipble --download-firmware --hw-target jade --release previous
will offer a large list of old firmwares for download.

Does the Jade display the binary's hash prior to installation?

Not at this time, no. When the upgrade process is started and the first 'chunk' of the fw file is uploaded, Jade inspects the header and displays the embedded version info on the Jade screen where the user can approve or decline the update.

Does the Jade verify the signature of an update?

Yes - the binaries on our fw server are signed, and a 'production' jade should refuse to boot any image not correctly signed.

If so, how can I accomplish build reproduction? Which bytes is the signature?

If you have downloaded the firmware to a file using wget or curl or similar, you can then uncompress it:
cp 0.1.27_ble_1183744_fw.bin 0.1.27_ble_1183744.fw.gz
pigz -d -z 0.1.27_ble_1183744.fw.gz

You can xxd the fw - you can then see the file is: firmware-proper+lots of 0's padding+signature+more 0's padding

You should be able to build the firmware locally - if you build a tagged release in the Docker image as documented in the README, and you use the configs from the 'production' subdirectory (eg. rm sdkconfig; cp production/sdkconfig_jade_prod.defaults ./sdkconfig.defaults) the binary you build should be the same as the one you have downloaded, minus the appended padding and signature.

Hope this helps,
Jamie.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

Thank you! This helps a lot!

So while a user can download some binaries that he could reproduce, he cannot verify if the binary he installs using the normal installation process matches the public source code? While only holders of the signing key controlling the download server could release variations, they - the provider - could indeed do just that. There would be no way of knowing if people were en mass installing a compromised version.

I think you are familiar with my project WalletScrutiny. We try to answer the question: Could the provider empty all the wallets of all the users at once? and with your description I'm not convinced he couldn't.

I don't claim you do this but it would be rather trivial to have the server detect if the update software is downloading the binary or some wget. Just have some kind of port-knocking (if the same IP requests alerts twice and then the list of versions within 200ms ...) after which a malicious binary is served.

I hold Blockstream in high regards and assume you agree that this is an issue.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

by insisting on signed binaries we are trying to prevent the accidental upload of malicious firmware on to a user's device.

This does not prevent malicious firmware. It does only prevent to a degree unapproved firmware.

I wish there was more of a community around WalletScrutiny to bounce off ideas on what to do with this, as our stance so far always was not to trust the provider.

With

  • the infrastructure in place to provide all users with malicious updates as discussed above
  • the mechanism to push for those through "minimum supported version" in the companion apps
  • the company residing in the US

another question would be if Blockstream has a warrant canary as to at least assure there is a way to protect the users if Blockstream was forced to turn evil.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

This does not prevent malicious firmware. It does only prevent to a degree unapproved firmware.

Agreed - I just meant we sign them to prevent 3rd-party malicious firmwares being introduced into the 'supply chain'. I accept that it wouldn't prevent someone with the private key distributing malicious firmware - eg. if we were indeed evil or were in some way compromised.

Does the 'two phase' upgrade described above not satisfy ?
Otherwise, what would you suggest ?

Does the Jade display the binary's hash prior to installation?

Not atm, but we could certainly add this - the Jade could be given the expected sha before the fw upload starts, display the purported sha as part of the user upgrade confirmation, then only allow the upgrade to complete successfully if once the entire fw has been uploaded the calculated sha agrees with that initially stated.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

Sadly it's impossible to make security trivial. For the purpose of WalletScrutiny, non-default tools are not considered, so if the Jade comes with the instructions to download the companion app which then doesn't allow to verify the binary's hash, then I consider this a problem for verifiability. I don't know exactly how to deal with it or if other HWs that were given the top verdict "reproducible" are affected, too and am trying to find security researchers willing to collaborate in order to handle this professionally.

(On Android, users normally do not get this binary transparency neither as the provider might distribute a different binary to us than to others based on phone model or country for example. To still get this situation somewhat under control, we are developing an app that uploads binaries after installation, so rogue binaries can trigger alerts. In case of Jade I don't see how to monitor what binaries get installed.)

I think it's reasonable to implement the approach you mentioned. As to how to communicate it to the user ... most will probably click it away before understanding what it is. I know I would later regret having clicked it away. Maybe the user can be invited to compare this with ideally github release notes or to take a photo to do so later? Certainly displaying the hash is enough as it would eliminate the trivial mass distribution of malicious firmware, effectively preventing a big exit scam potential.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

Jade fw 0.1.32 is now available. This supports passing/verifying the sha256 hash of the compressed fw file.
(Atm this hash is optional (so as not to break existing clients), but if passed must be correct or the OTA will fail. The blockstream apps will be updated to pass this hash. In a future fw release it will be made a mandatory parameter.)

from jade.

 avatar commented on August 15, 2024

Friendly ping to @Giszmo - is the changes @JamieDriver provided in 0.1.32 allow for the Wallet Scrutiny analysis to be reran?

I see we're still showing a NOT REPRODUCIBLE for the Jade -

https://walletscrutiny.com/hardware/blockstreamjade/

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

@LaserHodl thanks for pinging.

So ... passing/verifying ... how exactly? To my understanding, there is a bootstrapping issue here. Until you install this version, you have no tools to check what it is you are actually installing, so arguably installing this version is not verifiable but if we assume nothing bad happened up to this step, the user will be able to verify what version he's installing next.

But what does "passing" mean? To pass in the hash so the device can verify it without displaying it would be completely futile as we should not trust whoever is doing the passing-in. If my PC with greenwallet installed is running a compromised version, it can trivially show me one hash and tell the hardware wallet a different, correct hash of a compromised firmware. It's the hardware wallet that has to compute and display the hash prior to installation, so the user can profit from independent audits that publish audited binary hashes.

Edit: I will update the review asap although I'm not sure what to make of it if the built file matches the binary I can download as described above. Without a way to see the hash, it would be trivial to deliver a different binary via the companion app than via wget even if the url was the same.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

Hey @Giszmo - agree.
Jade fw will now display a hash on hw on the 'confirm upgrade' screen, if one is passed in.
[ The hash is passed before the upload, and is displayed (on Jade) and the user confirms ... then after the fw has been fully uploaded the hash of the binary is calculated on hw and checked against that which was sent/confirmed before the upload. ]
However, I think the passing of this value has yet to be released in the apps - I'll check and confirm asap.
Cheers.

from jade.

georgantas avatar georgantas commented on August 15, 2024

Thank you @Giszmo for auditing the Jade and @JamieDriver for addressing the issues.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

Nice one - yes that python script is a bit of a swiss-army-knife test tool so ofc much simpler to just wget the file you want.

The index.json is a new index file - but its format should now be fixed so you are good to use that - we will be moving our wallet apps over to use that file soon (rather than LATEST, BETA, PREVIOUS - compare the jade_ota.py from latest master vs last tagged release 0.1.33).
NOTE: index.json currently has '0.1.32' as the 'stable', and '0.1.33' in the 'beta' section - when in fact '0.1.33' is the latest stable release - I haven't updated it as yet just to test having beta, stable and previous entries in the new index...

You will see from the index.json a section called 'deltas' - this is probably most unhelpful to you ;-)
Because the full firmware is large, and in many cases a lot of the base libraries are unchanged between releases, we have been looking at uploading fw deltas in place of the full fw - much smaller and quicker to upload to the hw unit.

The script to create deltas between two full fws is in the repo jade/tools/mkpatch.py - we will run this on a range of prior fws against any new fw file, and upload a suite of deltas to the fw server (along with the full fw) and our apps will consider/prefer these if applicable.
This is all wip atm, and ofc will require much testing - but we hope to be able to use delta upgrades in the next release or two.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

Binary deltas would open a can of worms for auditability. With its combinatory explosion you would now have to look into not one binary per release but with your 4 thanks to radio, trueWheel maybe 20 if you have 5 versions to update from? Would the device then combine the old firmware and the patch to check the signature and calculate the hash to display, so we can focus on checking the actual release, only? Or might the hash differ? Or did you go with trusting the signature on the patch rather than the patched binary?

I hope for transparency the binary patches can be ignored as described above ...

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

Binary deltas would open a can of worms for auditability.

I appreciate that might be the case - but it is something we are keen to work with you on.

Atm the diff is not signed in itself, but when the diff the applied to the 'base' (signed) fw, the result should be the new fw with the new/appropriate signature.

In theory one could automate:

  • download new fw z
  • run reproducibility checks on z
  • download prior full fws a,b,c [ let's assume these have previously been vetted and found to be reproducible ]
  • call 'mkpatch' to locally create a patches between a->z, b->z, c->z
  • These local patches should be identical to the ones available on the fw server.

As it stands the hash displayed on the Jade screen prior to patch upload would be the sha256 of the patch file.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

For third party auditability, the hash of the patch is almost irrelevant as it's probably hard to test and communicate all possible patch hashes but assuming there is no vulnerability in the patch mechanism by which other files in the system can be altered it should be very feasible to communicate the hash of the patched file and delete the patch and patched file if it doesn't match the hash rather than caring much about the patch hash itself.

If a vulnerability in the patch mechanism is a bigger concern than a vulnerability in the signature check, an additional signature on the patch file would be an option.

If you continue with hash-of-patch, a third party (me?) should keep an updated list of patch hashes that were verified to result in the signed binaries in addition to the reproducibility test of the full release files. The update instructions should include a link to such a list maintained by you which ideally would point to independent lists.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

With your help so far I now tried to reproduce the firmware but ran into a bit of a problem. Your build instructions don't provide an easy way of configuring the build to match the downloaded binaries. In fact the "Build the firmware" instructions only build something if there is a Jade connected, so maybe there should be an independent "Build instructions" with the above being renamed to "Update your Jade from source"?

Also there are two Dockerfiles, one of which uses Blockstream binaries. That one is exactly what the build instructions use, so there is a transparency issue, too.

Maybe for reproducible builds a completely separate section should provide guidance avoiding those issues.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

only build something if there is a Jade connected

idf.py flash assumes you want to flash a dev device, which yes must be connected.
to just build - idf.py build should suffice. (or idf.py fullclean build if you want to clean prior artifacts first).

Regarding Dockerfiles, the one called simply 'Dockerfile' is the one which builds all the tools etc from their source repos.
Is there anything in there which concerns you ?

Yes, I am more than happy to document the preferred solution we arrive at.

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

idf.py fullclean build gives me one 1.1MB jade.bin. No idea which of the 4 I downloaded this should match.

Following the "Build instructions", I used the docker-compose up -d which uses the Dockerfile.dev which uses FROM blockstream/verde@sha256:3338e3fc877261df4017ddc8fdb173e43e26922a3551f8d2000e0935e4d250de which could be malicious. For audits, the other Dockerfile looks better.

from jade.

mohammadrafigh avatar mohammadrafigh commented on August 15, 2024

I was able to build the firmware for BLE using this guide and automatically download the provided version using some simple bash commands instead of using this script. Here is the script I used (blockstreamjade.sh):

#!/bin/bash

### provide this script with the version without "v"

version=$1

cd /tmp
git clone https://github.com/Blockstream/jade
cd jade
git checkout ${version}
git submodule update --init --recursive
DOCKER_BUILDKIT=1 docker build -f ./Dockerfile -t jade_builder .
docker run --rm -v ${PWD}:/builds/blockstream/jade --name jade_builder -it jade_builder bash -c "\
    . /root/esp/esp-idf/export.sh; \
    cd /builds/blockstream/jade; \
    cp ./production/sdkconfig_jade_prod.defaults sdkconfig.defaults; \
    rm -f sdkconfig; \
    idf.py fullclean all; \
    espsecure.py sign_data --keyfile ./release/scripts/dev_fw_signing_key.pem --version 2 --output ./build/jade_signed.bin ./build/jade.bin"

binary_file=$(curl "https://jadefw.blockstream.com/bin/jade/index.json" | grep -o "\"${version}_ble.*" | cut -d '"' -f 2)
wget -O "downloaded-firmware.bin.gz" "https://jadefw.blockstream.com/bin/jade/${binary_file}"
pigz -z -d downloaded-firmware.bin.gz
sha256sum downloaded-firmware.bin build/jade_signed.bin build/jade.bin

After running this script with ./blockstreamjade.sh 0.1.48 I get this result:

d329dbf4fea13c6cde7df9682febae15e162947dc5a747aae98540f69e1a25d3  downloaded-firmware.bin
a249638d43723e21927610f208727eda585e569f384cf14944297aedb85d66d1  build/jade_signed.bin
b74dc0d9df905f53097f3dfe66b62798257e9e7ae52a10815ec6d9f3ab2c2d89  build/jade.bin

Obviously hashes wouldn't be the same because of the signature. So I converted binaries to hex to see the diff, unfortunately the diff was something more than signature:

$ xxd downloaded-firmware.bin > downloaded-firmware.hex
$ xxd build/jade_signed.bin > jade_signed.hex
$ diff downloaded-firmware.hex jade_signed.hex

4c4
< 00000030: 302e 312e 3438 0000 0000 0000 0000 0000  0.1.48..........
---
> 00000030: 3100 0000 0000 0000 0000 0000 0000 0000  1...............
12,13c12,13
< 000000b0: 0c00 a08c c9d3 f9ef 58bd 2405 e51c d269  ........X.$....i
< 000000c0: 194e 435e 6818 56ea 80ec c5aa 0259 2c1c  .NC^h.V......Y,.
---
> 000000b0: c250 4a04 278e 4d62 9f4d 6ba2 0e03 f187  .PJ.'.Mb.Mk.....
> 000000c0: d606 74fa 6ed5 0ccb 19e2 fa08 05a2 524e  ..t.n.........RN
24941c24941
< 000616c0: 60db fb3f c088 fc3f 0000 803f 0000 c03f  `..?...?...?...?
---
> 000616c0: 60db fb3f e0a3 fc3f 0000 803f 0000 c03f  `..?...?...?...?
26982c26982
< 00069650: 0000 0000 2000 0000 0800 803f 0000 0000  .... ......?....
---
> 00069650: 0000 0000 2000 0000 407e fc3f 0000 0000  .... ...@~.?....
27277c27277
< 0006a8c0: b468 fc3f 0080 f43f c088 fc3f a068 fc3f  .h.?...?...?.h.?
---
> 0006a8c0: b468 fc3f 0080 f43f e0a3 fc3f a068 fc3f  .h.?...?...?.h.?
27279c27279
< 0006a8e0: 2c00 f03f 8815 0840 201b 803f 0000 803f  ,..?...@ ..?...?
---
> 0006a8e0: 2c00 f03f 8815 0840 0000 803f 0000 803f  ,..?...@...?...?
27352,27353c27352,27353
< 0006ad70: 6458 0d40 c40c 803f d801 803f dc09 803f  dX.@...?...?...?
< 0006ad80: 580c 803f 500c 803f c80c 803f 95f4 413f  X..?P..?...?..A?
---
> 0006ad70: 6458 0d40 fc8a fc3f 1080 fc3f 1488 fc3f  dX.@...?...?...?
> 0006ad80: 908a fc3f 888a fc3f 008b fc3f 95f4 413f  ...?...?...?..A?
27356c27356
< 0006adb0: 81f4 413f 26f6 413f 0c13 803f ecf7 413f  ..A?&.A?...?..A?
---
> 0006adb0: 81f4 413f 26f6 413f 4491 fc3f ecf7 413f  ..A?&.A?D..?..A?
27358c27358
< 0006add0: 7074 1040 780f 803f 9bf4 413f a0f7 413f  pt.@x..?..A?..A?
---
> 0006add0: 7074 1040 b08d fc3f 9bf4 413f a0f7 413f  pt.@...?..A?..A?
27360c27360
< 0006adf0: f40c 803f baf4 413f 88f6 413f 380d 803f  ...?..A?..A?8..?
---
> 0006adf0: 2c8b fc3f baf4 413f 88f6 413f 708b fc3f  ,..?..A?..A?p..?
27366c27366
< 0006ae50: 340f 803f 3ff6 413f 7449 0840 16f5 413f  [email protected]?
---
> 0006ae50: 6c8d fc3f 3ff6 413f 7449 0840 16f5 413f  [email protected]?
28601c28601
< 0006fb80: f000 0000 407e fc3f 247f fc3f 2cdf 1140  ....@~.?$..?,..@
---
> 0006fb80: f000 0000 6099 fc3f 449a fc3f 2cdf 1140  ....`..?D..?,..@
28737c28737
< 00070400: 0440 fc3f c03f fc3f 0000 803f 0439 0840  .@.?.?.?...?.9.@
---
> 00070400: 0440 fc3f c03f fc3f 387e fc3f 0439 0840  .@.?.?.?8~.?.9.@
28740c28740
< 00070430: 5c00 f03f 201b 803f 0000 803f 8cf6 1740  \..? ..?...?...@
---
> 00070430: 5c00 f03f 0000 803f 0000 803f 8cf6 1740  \..?...?...?...@
29222,29223c29222,29223
< 00072250: 49eb 413f 745a fc3f 58eb 413f 0600 803f  I.A?tZ.?X.A?...?
< 00072260: 0400 803f 74fe 1740 bceb 413f 8eeb 413f  [email protected]?..A?
---
> 00072250: 49eb 413f 745a fc3f 58eb 413f 3e7e fc3f  I.A?tZ.?X.A?>~.?
> 00072260: 3c7e fc3f 74fe 1740 bceb 413f 8eeb 413f  <[email protected]?..A?
29226c29226
< 00072290: 5cec 413f 0a00 803f 38ec 413f 3cfd 1740  \.A?...?8.A?<..@
---
> 00072290: 5cec 413f 427e fc3f 38ec 413f 3cfd 1740  \.A?B~.?8.A?<..@
29228,29230c29228,29230
< 000722b0: 34fb 1740 0c00 803f 1920 0000 1a20 0000  4..@...?. ... ..
< 000722c0: 1400 803f 1b20 0000 54fb 1740 dcec 413f  ...?. [email protected]?
< 000722d0: c40c 803f 24ff 1740 08ed 413f 84fb 1740  [email protected]?...@
---
> 000722b0: 34fb 1740 447e fc3f 1920 0000 1a20 0000  4..@D~.?. ... ..
> 000722c0: 4c7e fc3f 1b20 0000 54fb 1740 dcec 413f  L~.?. [email protected]?
> 000722d0: fc8a fc3f 24ff 1740 08ed 413f 84fb 1740  [email protected]?...@
29232,29238c29232,29238
< 000722f0: 3000 803f 0600 4100 3cd1 0f40 b601 803f  0..?..A.<..@...?
< 00072300: b001 803f 96f2 413f a8fd 1740 e801 803f  ...?..A?...@...?
< 00072310: d401 803f a447 0840 9002 803f c801 803f  ...?.G.@...?...?
< 00072320: e401 803f d801 803f d047 0840 e447 0840  [email protected].@
< 00072330: e501 803f e001 803f 7400 1840 0521 403f  ...?...?t..@.!@?
< 00072340: bbed 413f 79ed 413f dc01 803f c401 803f  ..A?y.A?...?...?
< 00072350: 58dd 0f40 b847 0840 f001 803f d4de 0f40  [email protected].@...?...@

... and the diff goes on...

Did I do something wrong?

from jade.

mohammadrafigh avatar mohammadrafigh commented on August 15, 2024

Thank you for being responsible, I will try it and update you 👍

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

a full diffoscope after running the same as @mohammadrafigh

$ docker run --rm -t -w $(pwd) -v $(pwd):$(pwd):ro registry.salsa.debian.org/reproducible-builds/diffoscope downloaded-firmware.bin build/jade_signed.bin
--- downloaded-firmware.bin
+++ build/jade_signed.bin
@@ -1,20 +1,20 @@
 00000000: e906 0220 1c16 0840 ee00 0000 0000 032c  ... ...@.......,
 00000010: 018f 0100 0000 0001 2000 403f 0817 0600  ........ .@?....
 00000020: 3254 cdab 0000 0000 0000 0000 0000 0000  2T..............
-00000030: 302e 312e 3438 0000 0000 0000 0000 0000  0.1.48..........
+00000030: 3100 0000 0000 0000 0000 0000 0000 0000  1...............
 00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000090: 7635 2e30 2e31 0000 0000 0000 0000 0000  v5.0.1..........
 000000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
-000000b0: 0c00 a08c c9d3 f9ef 58bd 2405 e51c d269  ........X.$....i
-000000c0: 194e 435e 6818 56ea 80ec c5aa 0259 2c1c  .NC^h.V......Y,.
+000000b0: c250 4a04 278e 4d62 9f4d 6ba2 0e03 f187  .PJ.'.Mb.Mk.....
+000000c0: d606 74fa 6ed5 0ccb 19e2 fa08 05a2 524e  ..t.n.........RN
 000000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 000000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 000000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00000120: 014a 4144 4500 0000 0000 0000 0000 0000  .JADE...........
 00000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
@@ -24934,15 +24934,15 @@
 00061650: 0000 0000 0400 0000 000e 2000 0c00 0000  .......... .....
 00061660: 0000 0000 0300 017c 000c 0100 1400 0000  .......|........
 00061670: 1400 0000 0000 0000 0000 0000 0400 0000  ................
 00061680: 000e 2000 0000 0000 0000 0000 4c2a 0d40  .. .........L*.@
 00061690: 102d 0d40 f833 0d40 c8c6 1540 fc1c 1640  [email protected].@...@...@
 000616a0: 60ed 1640 0cef 1640 ffff ffff b4ed 1640  `..@...@.......@
 000616b0: 30ef 1640 0000 0000 0000 0840 48bb 0940  0..@.......@H..@
-000616c0: 60db fb3f c088 fc3f 0000 803f 0000 c03f  `..?...?...?...?
+000616c0: 60db fb3f e0a3 fc3f 0000 803f 0000 c03f  `..?...?...?...?
 000616d0: 00e0 fa3f e0e6 fa3f 203f fe3f 5043 fe3f  ...?...? ?.?PC.?
 000616e0: 0000 fe3f 4004 fe3f 0080 0740 0000 0840  ...?@..?...@...@
 000616f0: 0000 0740 0080 0740 e0e6 fa3f 10ff fa3f  ...@...@...?...?
 00061700: 28db fb3f 5cdb fb3f 0080 fb3f 209a fb3f  (..?\..?...? ..?
 00061710: 0000 fb3f 8863 fb3f 584f 0d40 0100 0000  ...?.c.?XO.@....
 00061720: a4f2 1740 0100 0000 60db fb3f 388d 0000  ...@....`..?8...
 00061730: 0100 0000 ffff 3fb3 0000 0000 ffff 3fb3  ......?.......?.
@@ -26975,15 +26975,15 @@
 000695e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 000695f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00069600: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00069610: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00069620: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00069630: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00069640: 0000 0000 a45a fc3f c8b9 0f40 0000 0000  .....Z.?...@....
-00069650: 0000 0000 2000 0000 0800 803f 0000 0000  .... ......?....
+00069650: 0000 0000 2000 0000 407e fc3f 0000 0000  .... ...@~.?....
 00069660: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 00069670: 0000 0000 1000 052a 1000 0118 f85a fc3f  .......*.....Z.?
 00069680: 60ba 0f40 0000 0000 0000 0000 0200 0000  `..@............
 00069690: 0000 0000 f45a fc3f 60ba 0f40 0000 0000  .....Z.?`..@....
 000696a0: 0000 0000 0200 0000 0000 0000 0000 0000  ................
 000696b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 000696c0: 0000 0000 1000 012a 1000 002a 1000 0018  .......*...*....
@@ -27270,17 +27270,17 @@
 0006a850: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0006a860: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0006a870: 3681 0000 60db fb3f 2000 403f a068 fc3f  6...`..? .@?.h.?
 0006a880: dc2a 0d40 0702 403f 2a02 403f d901 403f  .*.@..@?*.@?..@?
 0006a890: 2c33 fc3f 0000 0840 6804 f03f bb68 fc3f  ,3.?...@h..?.h.?
 0006a8a0: b968 fc3f b868 fc3f e803 403f 9c68 0040  .h.?.h.?..@?.h.@
 0006a8b0: 80a8 1540 202d 0d40 202f 0d40 3485 0040  ...@ -.@ /.@4..@
-0006a8c0: b468 fc3f 0080 f43f c088 fc3f a068 fc3f  .h.?...?...?.h.?
+0006a8c0: b468 fc3f 0080 f43f e0a3 fc3f a068 fc3f  .h.?...?...?.h.?
 0006a8d0: 0000 0050 0000 0050 3000 f03f 3400 f03f  ...P...P0..?4..?
-0006a8e0: 2c00 f03f 8815 0840 201b 803f 0000 803f  ,..?...@ ..?...?
+0006a8e0: 2c00 f03f 8815 0840 0000 803f 0000 803f  ,..?...@...?...?
 0006a8f0: e068 fc3f c880 f43f d481 0040 4cc4 0040  .h.?...?...@L..@
 0006a900: 8470 1540 d8b1 1540 b051 0d40 4059 0d40  .p.@[email protected].@@Y.@
 0006a910: c848 0d40 149a 0040 849a 0040 a02d 0d40  .H.@...@[email protected].@
 0006a920: 382e 0d40 843e 0d40 c8c2 0040 8c1b 0840  8..@.>.@...@...@
 0006a930: 7800 f43f ec00 f03f f800 f03f a0db fb3f  x..?...?...?...?
 0006a940: a4db fb3f ffff fffb 0000 f63f a13a d850  ...?.......?.:.P
 0006a950: bd68 fc3f 2500 0400 003f 1000 0c20 1000  .h.?%....?... ..
@@ -27345,29 +27345,29 @@
 0006ad00: 00f5 0000 906f fc3f 0000 0035 fc33 f43f  .....o.?...5.3.?
 0006ad10: ffff ff7f 5430 f43f ffff 3ff0 5c30 f43f  ....T0.?..?.\0.?
 0006ad20: ffff ff0f 6030 f43f ff3f c0ff 4000 f03f  ....`0.?.?..@..?
 0006ad30: fff7 feff 5800 f03f ffb7 ffff 4400 f03f  ....X..?....D..?
 0006ad40: 5c00 f03f 286d 1540 2c48 1840 5886 0040  \..?(m.@,H.@X..@
 0006ad50: e8b1 1540 0c9f 0040 dc9e 0040 98a7 1540  ...@...@...@...@
 0006ad60: c82b 0640 6c54 0d40 c853 0d40 b056 0d40  .+.@[email protected][email protected].@
-0006ad70: 6458 0d40 c40c 803f d801 803f dc09 803f  dX.@...?...?...?
-0006ad80: 580c 803f 500c 803f c80c 803f 95f4 413f  X..?P..?...?..A?
+0006ad70: 6458 0d40 fc8a fc3f 1080 fc3f 1488 fc3f  dX.@...?...?...?
+0006ad80: 908a fc3f 888a fc3f 008b fc3f 95f4 413f  ...?...?...?..A?
 0006ad90: 06f4 413f b9f7 413f 14f4 413f 0521 403f  ..A?..A?..A?.!@?
 0006ada0: 67f4 413f 547d 0040 79f4 413f 66f7 413f  g.A?T}[email protected]?f.A?
-0006adb0: 81f4 413f 26f6 413f 0c13 803f ecf7 413f  ..A?&.A?...?..A?
+0006adb0: 81f4 413f 26f6 413f 4491 fc3f ecf7 413f  ..A?&.A?D..?..A?
 0006adc0: 90ff 1740 0874 1040 91f4 413f d2f7 413f  [email protected][email protected]?..A?
-0006add0: 7074 1040 780f 803f 9bf4 413f a0f7 413f  pt.@x..?..A?..A?
+0006add0: 7074 1040 b08d fc3f 9bf4 413f a0f7 413f  pt.@...?..A?..A?
 0006ade0: a2f4 413f 85f7 413f acf4 413f e9f6 413f  ..A?..A?..A?..A?
-0006adf0: f40c 803f baf4 413f 88f6 413f 380d 803f  ...?..A?..A?8..?
+0006adf0: 2c8b fc3f baf4 413f 88f6 413f 708b fc3f  ,..?..A?..A?p..?
 0006ae00: cbf4 413f 4ef7 413f d4f4 413f fbf4 413f  ..A?N.A?..A?..A?
 0006ae10: 36f7 413f 585b fc3f 1bf7 413f ffff 3fb3  6.A?X[.?..A?..?.
 0006ae20: 03f7 413f d1f6 413f b6f6 413f a0f6 413f  ..A?..A?..A?..A?
 0006ae30: 72f6 413f 09f5 413f 59f6 413f 0af6 413f  r.A?..A?Y.A?..A?
 0006ae40: a44e 0d40 68f6 1740 84ca 0040 cdcc cccc  .N.@h..@...@....
-0006ae50: 340f 803f 3ff6 413f 7449 0840 16f5 413f  [email protected]?
+0006ae50: 6c8d fc3f 3ff6 413f 7449 0840 16f5 413f  [email protected]?
 0006ae60: 23f5 413f 2af4 413f 3c4e 0d40 1040 fc3f  #.A?*.A?<N.@.@.?
 0006ae70: 1440 fc3f 4cc8 0040 18c8 0040 0521 403f  .@.?L..@...@.!@?
 0006ae80: cbfb 413f 13fa 413f 52fb 413f 1840 fc3f  ..A?..A?R.A?.@.?
 0006ae90: 5cd5 1540 7028 0940 90c7 1540 18fa 413f  \..@p(.@[email protected]?
 0006aea0: a8fb 413f 6ffb 413f 39fb 413f 0440 fc3f  ..A?o.A?9.A?.@.?
 0006aeb0: 4cfa 413f 20fb 413f 0000 7f43 c58f 3177  L.A? .A?...C..1w
 0006aec0: 2d21 d33f 5eba 490c 022b df3f 3108 ac1c  -!.?^.I..+.?1...
@@ -28594,15 +28594,15 @@
 0006fb10: e3ec c1e8 eca1 dbec b2a2 0310 1120 257e  ............. %~
 0006fb20: 14a5 120d 81e2 ec92 0804 b2c9 01b2 4804  ..............H.
 0006fb30: 5629 00a2 6800 1df0 3641 00b2 a404 20a2  V)..h...6A.... .
 0006fb40: 2025 c4fc a02a 2090 0000 0000 3641 00c2   %...* .....6A..
 0006fb50: a404 30b3 2020 a220 e5f8 fca0 2a20 1df0  ..0.  . ....* ..
 0006fb60: 3641 00ad 02e5 ddfc 1df0 0000 3641 0081  6A..........6A..
 0006fb70: 70eb 9063 0088 0828 0290 e613 1020 001d  p..c...(..... ..
-0006fb80: f000 0000 407e fc3f 247f fc3f 2cdf 1140  ....@~.?$..?,..@
+0006fb80: f000 0000 6099 fc3f 449a fc3f 2cdf 1140  ....`..?D..?,..@
 0006fb90: 3641 0022 c2ee fc62 9643 0381 faff 0c19  6A."...b.C......
 0006fba0: 9248 00c0 2000 3df0 3df0 3df0 3df0 81f6  .H.. .=.=.=.=...
 0006fbb0: ff88 08a2 2819 e00a 008c 5a0c 4a65 d406  ....(.....Z.Je..
 0006fbc0: 1df0 dd0a cd0a bd0a 0c4a 81f0 ffe0 0800  .........J......
 0006fbd0: 1df0 0000 3641 0000 0000 1df0 7d41 fc3f  ....6A......}A.?
 0006fbe0: 4341 fc3f 1941 fc3f 1041 fc3f 0241 fc3f  CA.?.A.?.A.?.A.?
 0006fbf0: c85b fc3f e040 fc3f b45b fc3f 5080 f43f  .[.?.@.?.[.?P..?
@@ -28730,18 +28730,18 @@
 00070390: 344d 0d40 4434 0840 e068 fc3f 906e fc3f  4M.@[email protected].?.n.?
 000703a0: a84c 0d40 cc48 1840 70f0 f53f 8cf0 f53f  [email protected].@p..?...?
 000703b0: 90f0 f53f 84f0 f53f 88f0 f53f 94f0 f53f  ...?...?...?...?
 000703c0: a4f0 f53f ff1f 00e0 0008 00c0 986e fc3f  ...?.........n.?
 000703d0: 9c6e fc3f 7835 0840 98f0 f53f 83de 1b43  .n.?x5.@...?...C
 000703e0: 74f0 f53f 272f 403f 512f 403f 902e 403f  t..?'/@?Q/@?..@?
 000703f0: a06e fc3f f4d5 1540 30d6 1540 c43f fc3f  .n.?...@0..@.?.?
-00070400: 0440 fc3f c03f fc3f 0000 803f 0439 0840  .@.?.?.?...?.9.@
+00070400: 0440 fc3f c03f fc3f 387e fc3f 0439 0840  .@.?.?.?8~.?.9.@
 00070410: 842f 403f 1730 403f eb2f 403f a46e fc3f  ./@?.0@?./@?.n.?
 00070420: 9603 403f db30 403f 4230 403f ff7f 0000  ..@?.0@?B0@?....
-00070430: 5c00 f03f 201b 803f 0000 803f 8cf6 1740  \..? ..?...?...@
+00070430: 5c00 f03f 0000 803f 0000 803f 8cf6 1740  \..?...?...?...@
 00070440: 9030 403f 4e30 403f b430 403f 9c30 403f  .0@?N0@?.0@?.0@?
 00070450: a830 403f 0020 f43f 0030 f43f 1c20 f43f  .0@?. .?.0.?. .?
 00070460: 1c30 f43f 2020 f43f 2030 f43f 2420 f43f  .0.?  .? 0.?$ .?
 00070470: 2430 f43f 62ff 0300 806f fc3f 746f fc3f  $0.?b....o.?to.?
 00070480: 686f fc3f ffff ff0f ffff ff03 0420 f43f  ho.?......... .?
 00070490: 8020 f43f 2820 f43f ffff fff7 2c20 f43f  . .?( .?...., .?
 000704a0: ffff ffef ffff ffdf 8c6f fc3f 9f00 0800  .........o.?....
@@ -29215,141 +29215,141 @@
 000721e0: 11ea 413f 16ea 413f 1eea 413f 32ea 413f  ..A?..A?..A?2.A?
 000721f0: e56d 403f 4dea 413f 4370 403f 91ea 413f  .m@?M.A?Cp@?..A?
 00072200: 1cd5 403f 7264 443f 61ea 413f d437 453f  ..@?rdD?a.A?.7E?
 00072210: 6dea 413f a26e 403f c66e 403f 46e3 413f  m.A?.n@?.n@?F.A?
 00072220: 79ea 413f 7fea 413f e56d 403f 75d8 403f  y.A?..A?.m@?u.@?
 00072230: 8eea 413f 99ea 413f a4ea 413f afea 413f  ..A?..A?..A?..A?
 00072240: baea 413f fb3b 423f deea 413f 96eb 413f  ..A?.;B?..A?..A?
-00072250: 49eb 413f 745a fc3f 58eb 413f 0600 803f  I.A?tZ.?X.A?...?
-00072260: 0400 803f 74fe 1740 bceb 413f 8eeb 413f  [email protected]?..A?
+00072250: 49eb 413f 745a fc3f 58eb 413f 3e7e fc3f  I.A?tZ.?X.A?>~.?
+00072260: 3c7e fc3f 74fe 1740 bceb 413f 8eeb 413f  <[email protected]?..A?
 00072270: aaeb 413f dceb 413f 81ec 413f 2aec 413f  ..A?..A?..A?*.A?
 00072280: 002a 0000 012a 0000 005b fc3f 0521 403f  .*...*...[.?.!@?
-00072290: 5cec 413f 0a00 803f 38ec 413f 3cfd 1740  \.A?...?8.A?<..@
+00072290: 5cec 413f 427e fc3f 38ec 413f 3cfd 1740  \.A?B~.?8.A?<..@
 000722a0: a8ec 413f 8eeb 413f 94ec 413f a4bb 0f40  ..A?..A?..A?...@
-000722b0: 34fb 1740 0c00 803f 1920 0000 1a20 0000  4..@...?. ... ..
-000722c0: 1400 803f 1b20 0000 54fb 1740 dcec 413f  ...?. [email protected]?
-000722d0: c40c 803f 24ff 1740 08ed 413f 84fb 1740  [email protected]?...@
+000722b0: 34fb 1740 447e fc3f 1920 0000 1a20 0000  4..@D~.?. ... ..
+000722c0: 4c7e fc3f 1b20 0000 54fb 1740 dcec 413f  L~.?. [email protected]?
+000722d0: fc8a fc3f 24ff 1740 08ed 413f 84fb 1740  [email protected]?...@
 000722e0: 98fb 1740 3f42 0f00 68fd 1740 c8ec 413f  ...@[email protected]?
-000722f0: 3000 803f 0600 4100 3cd1 0f40 b601 803f  0..?..A.<..@...?
-00072300: b001 803f 96f2 413f a8fd 1740 e801 803f  ...?..A?...@...?
-00072310: d401 803f a447 0840 9002 803f c801 803f  ...?.G.@...?...?
-00072320: e401 803f d801 803f d047 0840 e447 0840  [email protected].@
-00072330: e501 803f e001 803f 7400 1840 0521 403f  ...?...?t..@.!@?
-00072340: bbed 413f 79ed 413f dc01 803f c401 803f  ..A?y.A?...?...?
-00072350: 58dd 0f40 b847 0840 f001 803f d4de 0f40  [email protected].@...?...@
+000722f0: 687e fc3f 0600 4100 3cd1 0f40 ee7f fc3f  h~.?..A.<..@...?
+00072300: e87f fc3f 96f2 413f a8fd 1740 2080 fc3f  ...?..A?...@ ..?
+00072310: 0c80 fc3f a447 0840 c880 fc3f 0080 fc3f  ...?.G.@...?...?
+00072320: 1c80 fc3f 1080 fc3f d047 0840 e447 0840  [email protected].@
+00072330: 1d80 fc3f 1880 fc3f 7400 1840 0521 403f  ...?...?t..@.!@?
+00072340: bbed 413f 79ed 413f 1480 fc3f fc7f fc3f  ..A?y.A?...?...?
+00072350: 58dd 0f40 b847 0840 2880 fc3f d4de 0f40  [email protected].@(..?...@
 00072360: cced 413f 8eeb 413f 95ed 413f 82ed 413f  ..A?..A?..A?..A?
-00072370: f801 803f afed 413f a8dd 0f40 f401 803f  ...?..A?...@...?
-00072380: 20df 0f40 e0dc 0f40 ec01 803f ece0 0f40   ..@...@...?...@
+00072370: 3080 fc3f afed 413f a8dd 0f40 2c80 fc3f  0..?..A?...@,..?
+00072380: 20df 0f40 e0dc 0f40 2480 fc3f ece0 0f40   ..@...@$..?...@
 00072390: b4df 0f40 84dd 0f40 505b 1040 9448 0840  ...@...@P[[email protected].@
 000723a0: dced 413f 40ee 413f 70ee 413f 5cfd 1740  [email protected]?p.A?\..@
-000723b0: ac02 803f 10e9 0f40 ae02 803f b802 803f  ...?...@...?...?
-000723c0: c002 803f 48ef 413f 4cef 413f 50fd 1740  ...?H.A?L.A?P..@
-000723d0: a4fe 1740 b402 803f fc47 0840 50fc 1740  ...@...?.G.@P..@
+000723b0: e480 fc3f 10e9 0f40 e680 fc3f f080 fc3f  ...?...@...?...?
+000723c0: f880 fc3f 48ef 413f 4cef 413f 50fd 1740  ...?H.A?L.A?P..@
+000723d0: a4fe 1740 ec80 fc3f fc47 0840 50fc 1740  ...@...?.G.@P..@
 000723e0: 58f0 413f e8f3 0f40 50ef 413f 28fc 1740  [email protected]?(..@
 000723f0: e0ef 413f 44fc 1740 1cf0 413f b468 fc3f  [email protected]?.h.?
 00072400: c0ef 413f a0ef 413f 88ef 413f 78ef 413f  ..A?..A?..A?x.A?
-00072410: 68ef 413f 54ef 413f dc02 803f 4cc4 0040  h.A?T.A?...?L..@
+00072410: 68ef 413f 54ef 413f 1481 fc3f 4cc4 0040  h.A?T.A?...?L..@
 00072420: 18fc 1740 c8c2 0040 3400 1840 10fc 1740  ...@...@4..@...@
 00072430: 7ffe 0f00 030c 0000 0110 0000 0310 0000  ................
 00072440: 010c 0000 630c 0000 0120 0000 0220 0000  ....c.... ... ..
-00072450: 0510 0000 0320 0000 0910 0000 ec03 803f  ..... .........?
-00072460: f003 803f bc03 803f ecfc 1740 18f1 413f  [email protected]?
+00072450: 0510 0000 0320 0000 0910 0000 2482 fc3f  ..... ......$..?
+00072460: 2882 fc3f f481 fc3f ecfc 1740 18f1 413f  ([email protected]?
 00072470: 4401 1840 94f0 413f fef0 413f d6f0 413f  [email protected]?..A?..A?
 00072480: 0c01 1840 f400 1840 00fd 1740 d400 1840  ...@...@...@...@
 00072490: 0500 6400 9c11 1040 ffff ff7f e6f0 413f  [email protected]?
-000724a0: d803 803f 0e20 0000 0c20 0000 0a20 0000  ...?. ... ... ..
-000724b0: 0c04 803f 4804 803f 6804 803f 1004 803f  ...?H..?h..?...?
-000724c0: 4404 803f 1048 0840 0521 403f d2f1 413f  D..?.H.@.!@?..A?
+000724a0: 1082 fc3f 0e20 0000 0c20 0000 0a20 0000  ...?. ... ... ..
+000724b0: 4482 fc3f 8082 fc3f a082 fc3f 4882 fc3f  D..?...?...?H..?
+000724c0: 7c82 fc3f 1048 0840 0521 403f d2f1 413f  |..?.H.@.!@?..A?
 000724d0: b9f1 413f 1620 0000 60c2 0040 b8fe 1740  ..A?. ..`..@...@
 000724e0: ffff 0000 3c48 0840 0620 0000 2448 0840  ....<H.@. ..$H.@
 000724f0: b029 1040 2120 0000 800c 0000 1320 0000  .).@! ....... ..
-00072500: 0804 803f f803 803f c3f1 413f 2c04 803f  ...?...?..A?,..?
-00072510: ebf1 413f 88fe 1740 7c04 803f 8c04 803f  ..A?...@|..?...?
-00072520: 350c 0000 c804 803f 8e04 803f c004 803f  5......?...?...?
-00072530: c404 803f 310c 0000 330c 0000 0838 1040  ...?1...3....8.@
-00072540: e437 1040 2006 803f cb1c 423f 50f2 413f  .7.@ ..?..B?P.A?
-00072550: 30f2 413f 3cf2 413f cc04 803f 5d06 803f  0.A?<.A?...?]..?
-00072560: 3c06 803f 3d06 803f dcfc 1740 7df2 413f  <..?=..?...@}.A?
-00072570: 64f2 413f 7d06 803f 6401 1840 5046 1040  d.A?}..?d..@PF.@
-00072580: c806 803f cc06 803f a006 803f c406 803f  ...?...?...?...?
-00072590: f056 0840 d406 803f d006 803f 80fc 1740  .V.@...?...?...@
-000725a0: 405b fc3f 445b fc3f be01 803f 4847 1040  @[.?D[.?...?HG.@
-000725b0: 7047 1040 3c5b fc3f bc01 803f 9049 1040  pG.@<[.?...?.I.@
+00072500: 4082 fc3f 3082 fc3f c3f1 413f 6482 fc3f  @..?0..?..A?d..?
+00072510: ebf1 413f 88fe 1740 b482 fc3f c482 fc3f  ..A?...@...?...?
+00072520: 350c 0000 0083 fc3f c682 fc3f f882 fc3f  5......?...?...?
+00072530: fc82 fc3f 310c 0000 330c 0000 0838 1040  ...?1...3....8.@
+00072540: e437 1040 5884 fc3f cb1c 423f 50f2 413f  .7.@X..?..B?P.A?
+00072550: 30f2 413f 3cf2 413f 0483 fc3f 9584 fc3f  0.A?<.A?...?...?
+00072560: 7484 fc3f 7584 fc3f dcfc 1740 7df2 413f  t..?u..?...@}.A?
+00072570: 64f2 413f b584 fc3f 6401 1840 5046 1040  d.A?...?d..@PF.@
+00072580: 0085 fc3f 0485 fc3f d884 fc3f fc84 fc3f  ...?...?...?...?
+00072590: f056 0840 0c85 fc3f 0885 fc3f 80fc 1740  .V.@...?...?...@
+000725a0: 405b fc3f 445b fc3f f67f fc3f 4847 1040  @[.?D[.?...?HG.@
+000725b0: 7047 1040 3c5b fc3f f47f fc3f 9049 1040  pG.@<[.?...?.I.@
 000725c0: 385b fc3f 5c48 1040 304a 1040 345b fc3f  8[.?\H.@0J.@4[.?
-000725d0: ac48 1040 f4fd 1740 a806 803f c001 803f  .H.@...@...?...?
-000725e0: b4f2 413f 9cf2 413f a406 803f c856 0840  ..A?..A?...?.V.@
+000725d0: ac48 1040 f4fd 1740 e084 fc3f f87f fc3f  .H.@...@...?...?
+000725e0: b4f2 413f 9cf2 413f dc84 fc3f c856 0840  ..A?..A?...?.V.@
 000725f0: c0fd 1740 bc9f 0940 08fe 1740 20fe 1740  ...@...@...@ ..@
-00072600: f806 803f 3408 803f 2808 803f d806 803f  ...?4..?(..?...?
-00072610: 3008 803f 2c08 803f 2859 1040 54fe 1740  0..?,..?(Y.@T..@
-00072620: 2408 803f 2008 803f b8f2 413f dc06 803f  $..? ..?..A?...?
-00072630: 0407 803f 0720 0000 0520 0000 d409 803f  ...?. ... .....?
-00072640: f008 803f 00ff 1740 4008 803f 3c08 803f  ...?...@@..?<..?
-00072650: c0c3 0040 3808 803f 1d09 803f 5048 0840  ...@8..?...?PH.@
-00072660: 2909 803f dc09 803f b7a1 ffff acfb 1740  )..?...?.......@
-00072670: a0bb 0d00 5861 1040 e409 803f e009 803f  ....Xa.@...?...?
-00072680: 640a 803f 680a 803f 580b 803f 600b 803f  d..?h..?X..?`..?
+00072600: 3085 fc3f 6c86 fc3f 6086 fc3f 1085 fc3f  0..?l..?`..?...?
+00072610: 6886 fc3f 6486 fc3f 2859 1040 54fe 1740  h..?d..?(Y.@T..@
+00072620: 5c86 fc3f 5886 fc3f b8f2 413f 1485 fc3f  \..?X..?..A?...?
+00072630: 3c85 fc3f 0720 0000 0520 0000 0c88 fc3f  <..?. ... .....?
+00072640: 2887 fc3f 00ff 1740 7886 fc3f 7486 fc3f  (..?...@x..?t..?
+00072650: c0c3 0040 7086 fc3f 5587 fc3f 5048 0840  ...@p..?U..?PH.@
+00072660: 6187 fc3f 1488 fc3f b7a1 ffff acfb 1740  a..?...?.......@
+00072670: a0bb 0d00 5861 1040 1c88 fc3f 1888 fc3f  ....Xa.@...?...?
+00072680: 9c88 fc3f a088 fc3f 9089 fc3f 9889 fc3f  ...?...?...?...?
 00072690: a8fc 1740 8469 1040 3468 1040 006a 1040  [email protected].@[email protected].@
 000726a0: c8f2 413f d4f2 413f def2 413f e4f2 413f  ..A?..A?..A?..A?
 000726b0: edf2 413f f5f2 413f 34ad 1740 0211 0000  ..A?..A?4..@....
-000726c0: 540c 803f 580c 803f 00f3 413f 7871 1040  T..?X..?..A?xq.@
-000726d0: 5c0c 803f 8c71 1040 500c 803f 680c 803f  \..?.q.@P..?h..?
+000726c0: 8c8a fc3f 908a fc3f 00f3 413f 7871 1040  ...?...?..A?xq.@
+000726d0: 948a fc3f 8c71 1040 888a fc3f a08a fc3f  ...?.q.@...?...?
 000726e0: 28f3 413f 485b fc3f 40ff 1740 0000 1840  (.A?H[.?@..@...@
 000726f0: 505b fc3f 34f3 413f 8bf3 413f 81f3 413f  P[.?4.A?..A?..A?
 00072700: e4ff 1740 1000 1840 7c15 0840 c8ff 1740  ...@...@|..@...@
-00072710: 8eeb 413f f4f3 413f d7f3 413f c00c 803f  ..A?..A?..A?...?
-00072720: 940c 803f dc56 0840 e6f3 413f b40c 803f  [email protected]?...?
-00072730: 980c 803f edf3 413f 880c 803f 6c0c 803f  ...?..A?...?l..?
+00072710: 8eeb 413f f4f3 413f d7f3 413f f88a fc3f  ..A?..A?..A?...?
+00072720: cc8a fc3f dc56 0840 e6f3 413f ec8a fc3f  [email protected]?...?
+00072730: d08a fc3f edf3 413f c08a fc3f a48a fc3f  ...?..A?...?...?
 00072740: 54f5 413f 0521 403f f2f5 413f 67f4 413f  T.A?.!@?..A?g.A?
 00072750: 04f8 413f b09f 0940 b4a9 1740 6af5 413f  ..A?...@[email protected]?
-00072760: 940f 803f 0c13 803f 7ff5 413f 500f 803f  ...?...?..A?P..?
-00072770: 780f 803f 95f5 413f 540d 803f 340f 803f  x..?..A?T..?4..?
-00072780: aaf5 413f 100d 803f 380d 803f c0f5 413f  ..A?...?8..?..A?
-00072790: cc0c 803f f40c 803f 8eeb 413f 06f4 413f  ...?...?..A?..A?
+00072760: cc8d fc3f 4491 fc3f 7ff5 413f 888d fc3f  ...?D..?..A?...?
+00072770: b08d fc3f 95f5 413f 8c8b fc3f 6c8d fc3f  ...?..A?...?l..?
+00072780: aaf5 413f 488b fc3f 708b fc3f c0f5 413f  ..A?H..?p..?..A?
+00072790: 048b fc3f 2c8b fc3f 8eeb 413f 06f4 413f  ...?,..?..A?..A?
 000727a0: d8f5 413f 14f4 413f 547d 0040 d09f 0940  ..A?..A?T}.@...@
-000727b0: 2813 803f 1852 0940 4c13 803f 2c13 803f  (..?.R.@L..?,..?
-000727c0: 6c13 803f 8c13 803f cc13 803f c813 803f  l..?...?...?...?
-000727d0: c413 803f c013 803f 8c57 0940 7013 803f  ...?...?.W.@p..?
-000727e0: 5013 803f 3013 803f 0521 403f b7f9 413f  P..?0..?.!@?..A?
+000727b0: 6091 fc3f 1852 0940 8491 fc3f 6491 fc3f  `..?.R.@...?d..?
+000727c0: a491 fc3f c491 fc3f 0492 fc3f 0092 fc3f  ...?...?...?...?
+000727d0: fc91 fc3f f891 fc3f 8c57 0940 a891 fc3f  ...?...?.W.@...?
+000727e0: 8891 fc3f 6891 fc3f 0521 403f b7f9 413f  ...?h..?.!@?..A?
 000727f0: def8 413f 93f9 413f eff8 413f 8eeb 413f  ..A?..A?..A?..A?
-00072800: b413 803f a0f9 413f fdf8 413f 90ff 1740  ...?..A?..A?...@
-00072810: 26f9 413f cff9 413f 9013 803f e8f9 413f  &.A?..A?...?..A?
+00072800: ec91 fc3f a0f9 413f fdf8 413f 90ff 1740  ...?..A?..A?...@
+00072810: 26f9 413f cff9 413f c891 fc3f e8f9 413f  &.A?..A?...?..A?
 00072820: 32f9 413f 7cf9 413f 43f9 413f 54f9 413f  2.A?|.A?C.A?T.A?
 00072830: 68f9 413f fc50 0940 605a 0940 0c40 fc3f  h.A?.P.@`Z.@.@.?
 00072840: cdcc cccc 5efa 413f eefb 413f 13fa 413f  ....^.A?..A?..A?
 00072850: 64fa 413f 73fa 413f 7826 0840 5850 0940  d.A?s.A?x&.@XP.@
 00072860: 81fa 413f 03fc 413f 8cfa 413f 2840 fc3f  ..A?..A?..A?(@.?
 00072870: 386b 0940 1860 0940 8cfb 413f 4054 0940  8k.@.`[email protected]?@T.@
 00072880: ec00 f03f 9ffa 413f 0afb 413f a6fa 413f  ...?..A?..A?..A?
 00072890: a835 403f b3fa 413f 909e 0940 9851 0940  .5@[email protected].@
 000728a0: 3040 fc3f 2040 fc3f 1440 fc3f 4084 1040  0@.? @.?.@.?@..@
 000728b0: 2088 1040 605b fc3f bffa 413f 3ffc 413f   ..@`[.?..A??.A?
-000728c0: f1f9 413f 387e fc3f 3080 fc3f b45b fc3f  ..A?8~.?0..?.[.?
+000728c0: f1f9 413f 5899 fc3f 509b fc3f b45b fc3f  ..A?X..?P..?.[.?
 000728d0: d85b fc3f d449 0940 5087 1040 60fc 413f  .[.?.I.@P..@`.A?
 000728e0: ff0d 0000 0712 2220 e0e6 fa3f 10ff fa3f  ......" ...?...?
 000728f0: f4d4 0040 1040 fc3f 0000 1000 83de 1b43  ...@.@.?.......C
 00072900: ecfa 413f 28fc 413f 0c08 0940 5c27 0840  ..A?(.A?...@\'.@
 00072910: 9888 1040 cc48 1840 0049 1840 3485 0040  [email protected][email protected].@4..@
-00072920: 3814 803f 5414 803f 8eeb 413f a8fd 413f  8..?T..?..A?..A?
-00072930: 89fd 413f bafd 413f 97fd 413f d013 803f  ..A?..A?..A?...?
-00072940: 9017 803f 5814 803f 7417 803f 9417 803f  ...?X..?t..?...?
-00072950: a017 803f 0128 0000 ff27 0000 0328 0000  ...?.(...'...(..
-00072960: fdd7 ffff 3cfd 1740 c40c 803f c0fd 413f  ....<..@...?..A?
-00072970: d7fd 413f 7414 803f 9817 803f a817 803f  ..A?t..?...?...?
-00072980: e087 1640 b44b 1640 2418 803f f3fd 413f  [email protected].@$..?..A?
-00072990: 3018 803f 24ff 1740 b468 fc3f f5fd 413f  [email protected].?..A?
+00072920: 7092 fc3f 8c92 fc3f 8eeb 413f a8fd 413f  p..?...?..A?..A?
+00072930: 89fd 413f bafd 413f 97fd 413f 0892 fc3f  ..A?..A?..A?...?
+00072940: c895 fc3f 9092 fc3f ac95 fc3f cc95 fc3f  ...?...?...?...?
+00072950: d895 fc3f 0128 0000 ff27 0000 0328 0000  ...?.(...'...(..
+00072960: fdd7 ffff 3cfd 1740 fc8a fc3f c0fd 413f  ....<..@...?..A?
+00072970: d7fd 413f ac92 fc3f d095 fc3f e095 fc3f  ..A?...?...?...?
+00072980: e087 1640 b44b 1640 5c96 fc3f f3fd 413f  [email protected].@\..?..A?
+00072990: 6896 fc3f 24ff 1740 b468 fc3f f5fd 413f  [email protected].?..A?
 000729a0: 2afe 413f c8c2 0040 4042 0f00 dcfe 1740  *.A?...@@B.....@
-000729b0: 4cc4 0040 d02c 1840 3afe 413f 5818 803f  L..@.,.@:.A?X..?
-000729c0: 5418 803f 6018 803f 5c18 803f e401 803f  T..?`..?\..?...?
+000729b0: 4cc4 0040 d02c 1840 3afe 413f 9096 fc3f  L..@.,.@:.A?...?
+000729c0: 8c96 fc3f 9896 fc3f 9496 fc3f 1c80 fc3f  ...?...?...?...?
 000729d0: c0af 1040 0521 403f 9dfe 413f 8ffe 413f  ...@.!@?..A?..A?
 000729e0: 58af 1040 b8af 1040 9448 0840 0521 403f  X..@[email protected].@.!@?
 000729f0: 0bff 413f e4fe 413f a4fe 1740 34b1 1040  ..A?..A?...@4..@
-00072a00: 1142 0821 a818 803f ffff 0000 f400 1840  .B.!...?.......@
-00072a10: f4fe 413f 8818 803f 6c18 803f 60c2 0040  ..A?...?l..?`..@
-00072a20: b418 803f b018 803f 3419 803f 3819 803f  ...?...?4..?8..?
-00072a30: 281a 803f 301a 803f dcfc 1740 0c5b fc3f  (..?0..?...@.[.?
+00072a00: 1142 0821 e096 fc3f ffff 0000 f400 1840  .B.!...?.......@
+00072a10: f4fe 413f c096 fc3f a496 fc3f 60c2 0040  ..A?...?...?`..@
+00072a20: ec96 fc3f e896 fc3f 6c97 fc3f 7097 fc3f  ...?...?l..?p..?
+00072a30: 6098 fc3f 6898 fc3f dcfc 1740 0c5b fc3f  `..?h..?...@.[.?
 00072a40: d8b7 1040 b0b6 1040 54b8 1040 3641 00b2  ...@...@T..@6A..
 00072a50: a000 b0ab 20e5 9bae 9000 0000 3641 00ad  .... .......6A..
 00072a60: 02e5 56c7 1df0 0000 3641 0031 6ef5 b16c  ..V.....6A.1n..l
 00072a70: f530 a320 a515 002d 0adc 0a0c 1a25 9cc2  .0. ...-.....%..
 00072a80: 816a f5a9 08cc 7aa2 2300 6518 0022 a101  .j....z.#.e.."..
 00072a90: 1df0 0000 3641 0082 a016 1602 0316 8300  ....6A..........
 00072aa0: 4803 ac84 3813 f633 240c 8a65 50c7 4d0a  H...8..3$..eP.M.
@@ -43912,17 +43912,17 @@
 000ab870: ff2d 0a46 fbff 0000 00c1 6d1c b16e 1cc6  .-.F......m..n..
 000ab880: faff 0000 65db ffcd 0a0c 5226 0ad5 2165  ....e.....R&..!e
 000ab890: 1c88 020b 8889 020c 0287 aac7 c09a 11a1  ................
 000ab8a0: 601c c0c8 c0aa a9b2 ca10 8169 1be0 0800  `..........i....
 000ab8b0: 06ec ff00 3641 0081 611c 9161 1c99 5891  ....6A..a..a..X.
 000ab8c0: 611c 9968 9161 1c99 7891 591c 0c08 8909  a..h.a..x.Y.....
 000ab8d0: 9156 1c89 0991 531c 8909 1df0 3641 000c  .V....S.....6A..
-000ab8e0: 021d f000 3641 000c 021d f000 1c80 fc3f  ....6A.........?
-000ab8f0: 247f fc3f 1480 fc3f 1880 fc3f dc7f fc3f  $..?...?...?...?
-000ab900: 1080 fc3f 3c7e fc3f 58c4 0840 3641 0021  ...?<~.?X..@6A.!
+000ab8e0: 021d f000 3641 000c 021d f000 3c9b fc3f  ....6A......<..?
+000ab8f0: 449a fc3f 349b fc3f 389b fc3f fc9a fc3f  D..?4..?8..?...?
+000ab900: 309b fc3f 5c99 fc3f 58c4 0840 3641 0021  0..?\..?X..@6A.!
 000ab910: f7ff a802 8cca 81f6 ff88 0888 88e0 0800  ................
 000ab920: 0c08 8902 3df0 3df0 3df0 3df0 21f2 ffa8  ....=.=.=.=.!...
 000ab930: 028c da81 efff 8808 8228 18e0 0800 0c08  .........(......
 000ab940: 8902 3df0 3df0 3df0 3df0 21eb ffa8 028c  ..=.=.=.=.!.....
 000ab950: da81 e7ff 8808 8228 12e0 0800 0c08 8902  .......(........
 000ab960: 3df0 3df0 3df0 3df0 21e5 ffa8 028c ca81  =.=.=.=.!.......
 000ab970: e0ff 8808 8888 e008 000c 0889 0281 e2ff  ................
@@ -43939,15 +43939,15 @@
 000aba20: f4c0 2000 a809 81f9 ff80 8a10 3038 2081  .. .........08 .
 000aba30: f8ff c020 0039 090c 493d f03d f03d f0c0  ... .9..I=.=.=..
 000aba40: 2000 3808 9093 2031 f3ff c020 0099 080c   .8... 1... ....
 000aba50: 29c0 2000 2903 3df0 3df0 3df0 3df0 c020  ). .).=.=.=.=.. 
 000aba60: 0038 0890 9320 c020 0099 081d f000 0000  .8... . ........
 000aba70: 0002 0100 3641 0021 feff 1df0 a068 fc3f  ....6A.!.....h.?
 000aba80: 3641 002d 0181 fdff 2028 c020 20f4 1df0  6A.-.... (.  ...
-000aba90: 307f fc3f 1fff 413f 3641 0081 fdff d2a1  0..?..A?6A......
+000aba90: 509a fc3f 1fff 413f 3641 0081 fdff d2a1  P..?..A?6A......
 000abaa0: 6d0c 0bad 0288 08c1 fbff 8228 06e0 0800  m..........(....
 000abab0: 1df0 0000 0000 0004 0000 0008 0000 0001  ................
 000abac0: 0000 0002 d800 f03f fc56 0840 3641 0026  .......?.V.@6A.&
 000abad0: 120a 9ce2 2622 0c26 3211 8611 0021 f6ff  ....&".&2....!..
 000abae0: c604 0000 21f6 ff06 0300 0000 21f5 ff06  ....!.......!...
 000abaf0: 0100 0000 21f0 ff31 f3ff ad03 81f3 ffe0  ....!..1........
 000abb00: 0800 a0a0 b420 aa20 c020 00a9 03ad 0381  ..... . . ......
@@ -43967,15 +43967,15 @@
 000abbe0: 3df0 3df0 3df0 2804 2832 e002 001d f000  =.=.=.(.(2......
 000abbf0: 3641 0020 2074 913e ff81 40ff 8cd2 7cfb  6A.  t.>..@...|.
 000abc00: 2809 a808 28b2 e002 001d f000 0092 2900  (...(.........).
 000abc10: a228 0092 290c e009 00dd 02cd 02bd 020c  .(..)...........
 000abc20: 5aa5 3012 1df0 0000 0c12 f73f 3641 0091  Z.0........?6A..
 000abc30: feff 7ce8 c020 00a8 0980 8a10 c020 0089  ..|.. ....... ..
 000abc40: 091d f000 c85b fc3f 2bff 413f dcb8 1040  .....[.?+.A?...@
-000abc50: c0a3 0940 e4b8 1040 287f fc3f 2c7f fc3f  ...@...@(..?,..?
+000abc50: c0a3 0940 e4b8 1040 489a fc3f 4c9a fc3f  ...@...@H..?L..?
 000abc60: e011 423f 42ff 413f 7800 0140 9842 0540  [email protected].@
 000abc70: f09a 0140 7c42 0540 8842 0540 0400 0140  ...@|[email protected].@...@
 000abc80: 3661 0031 f0ff 2223 00a6 3210 81f7 ffe0  6a.1.."#..2.....
 000abc90: 0800 bd0a a1ed ff81 c41a e008 0081 f3ff  ................
 000abca0: e008 0021 eaff 290a 3df0 3df0 3df0 3df0  ...!..).=.=.=.=.
 000abcb0: 21e8 ff29 1a3d f03d f03d f03d f021 e5ff  !..).=.=.=.=.!..
 000abcc0: 226a 0281 ebff e008 0021 e3ff a902 81e9  "j.......!......
@@ -44001,16 +44001,16 @@
 000abe00: 1ae0 0800 a5e7 ffb0 eb03 b0bd 0422 2200  ............."".
 000abe10: a642 08a1 f0ff 8164 1ae0 0800 0c1a 318f  .B.....d......1.
 000abe20: ff28 0322 2266 e002 0021 19ff 8802 8228  .(.""f...!.....(
 000abe30: 0de0 0800 8802 8228 11e0 0800 8802 8228  .......(.......(
 000abe40: 16e0 0800 b2a7 fc0c 4a88 0382 284e e008  ........J...(N..
 000abe50: 0088 0288 e8e0 0800 8802 8228 15e0 0800  ...........(....
 000abe60: 8802 8228 13e0 0800 0c0a 3803 3223 57e0  ...(......8.2#W.
-000abe70: 0300 2802 2802 e002 001d f000 a880 fc3f  ..(.(..........?
-000abe80: 387e fc3f a480 fc3f 48c4 0840 0462 0840  [email protected].@
+000abe70: 0300 2802 2802 e002 001d f000 c89b fc3f  ..(.(..........?
+000abe80: 5899 fc3f c49b fc3f 48c4 0840 0462 0840  [email protected].@
 000abe90: 3485 0040 3641 0031 71ff 2803 2222 5ae0  [email protected].(.""Z.
 000abea0: 0200 21fb fe42 2200 a224 02e0 0a00 4d0a  ..!..B"..$....M.
 000abeb0: 3223 00a2 235b e00a 00ad 0438 0238 33e0  2#..#[.....8.83.
 000abec0: 0300 3d02 81ee ff4d 0898 0866 196b 81ee  ..=....M...f.k..
 000abed0: ffe0 0800 176a 0581 edff e008 000c 5246  .....j........RF
 000abee0: 0700 0b22 a2a0 0420 2074 81e9 ffe0 0800  ..."...  t......
 000abef0: ccc2 217f fe28 0222 2225 dc32 0605 0000  ..!..(.""%.2....
@@ -44020,15 +44020,15 @@
 000abf30: f028 0328 32e0 0200 1df0 21d2 ffa2 2200  .(.(2.....!...".
 000abf40: 665a 0ad2 a000 d0cd 20bd 0d25 fe11 1df0  fZ...... ..%....
 000abf50: ceff 413f 0c10 f73f ffff feff 0000 0100  ..A?...?........
 000abf60: e1ff 413f 2057 0840 f4ff 413f 00cf 1040  ..A? [email protected]?...@
 000abf70: 0f00 423f 14cf 1040 3100 423f 0010 f73f  [email protected]?...?
 000abf80: ffff fff7 ffff fffd ffff fffe 1011 f53f  ...............?
 000abf90: 0000 c0ff 1810 f73f 6300 423f 0012 f73f  .......?c.B?...?
-000abfa0: 1812 f73f 7700 423f d000 f03f 407e fc3f  ...?w.B?...?@~.?
+000abfa0: 1812 f73f 7700 423f d000 f03f 6099 fc3f  ...?w.B?...?`..?
 000abfb0: 0521 403f 74c4 0840 64c4 0840 3661 0021  .!@?t..@d..@6a.!
 000abfc0: 4cfe 0c03 7cfc bd01 4802 514b fe42 2415  L...|...H.QK.B$.
 000abfd0: a805 e004 004d 0a66 1ae9 8801 0c95 5798  .....M.f......W.
 000abfe0: 0246 5f00 8735 1c66 6802 c613 01f6 7807  .F_..5.fh.....x.
 000abff0: 2638 3186 2901 0000 6678 0286 1501 2688  &81.)...fx....&.
 000ac000: 3e06 2601 0cb4 4798 0246 1b01 47b8 02c6  >.&...G..F..G...
 000ac010: 1501 66a8 0286 1c01 0cd4 4798 0246 1c01  ..f.......G..F..
@@ -44190,15 +44190,15 @@
 000ac9d0: 0265 5411 dca2 21c6 fb28 0222 2228 e002  .eT...!..(.""(..
 000ac9e0: 001d f000 8174 fde0 0800 661a 04ad 02a5  .....t....f.....
 000ac9f0: 5211 1df0 3641 0020 a074 a550 111d f000  R...6A. .t.P....
 000aca00: 3641 0081 6cfd e008 002d 0a1d f000 0000  6A..l....-......
 000aca10: b85b fc3f 3641 0020 a074 9c7a 262a 1521  .[.?6A. .t.z&*.!
 000aca20: 1cfc d2a5 b90c 0b28 02c1 1afc 2862 e002  .......(....(b..
 000aca30: 000c 021d f021 f6ff 1df0 0000 8097 fb3f  .....!.........?
-000aca40: 3880 fc3f 4080 fc3f 3641 0021 83fc 8802  8..?@..?6A.!....
+000aca40: 589b fc3f 609b fc3f 3641 0021 83fc 8802  X..?`..?6A.!....
 000aca50: 82d8 0982 2826 a1f9 ffe0 0800 81f9 ff82  ....(&..........
 000aca60: 0800 8cc8 8802 82d8 0922 2826 a1f6 ffe0  ........."(&....
 000aca70: 0200 1df0 3641 0021 06fc 3802 a823 e00a  ....6A.!..8..#..
 000aca80: 003d 0a81 4dfd e008 004d 0a81 4bfd e008  .=..M....M..K...
 000aca90: 00a0 a410 17ea 0246 2700 8138 fd91 38fd  .......F'..8..8.
 000acaa0: c020 00a8 0890 aa10 9104 fc90 9a20 c020  . ........... . 
 000acab0: 0099 083d f03d f03d f03d f0c0 2000 a808  ...=.=.=.=.. ...
@@ -44248,15 +44248,15 @@
 000acd70: 5307 0b93 9099 a090 9074 4cfa 9083 4197  S........tL...A.
 000acd80: 3a19 0c8b 9090 2490 9bc0 b2a0 ff80 a280  :.....$.........
 000acd90: 0009 40b0 90b1 924a 00c0 2000 8080 741b  [email protected].. ...t.
 000acda0: 980c 9a97 2a09 9a92 0c0a a249 00c0 2000  ....*......I.. .
 000acdb0: 2b88 0c99 8729 098a 820c 0992 4800 c020  +....)......H.. 
 000acdc0: 0030 33a0 fb33 3030 744c f837 3819 3083  .03..300tL.78.0.
 000acdd0: 4130 3024 8a22 32c3 0182 a0ff 0013 4000  A00$."2.......@.
-000acde0: 38a1 3242 00c0 2000 1df0 0000 447e fc3f  8.2B.. .....D~.?
+000acde0: 38a1 3242 00c0 2000 1df0 0000 6499 fc3f  8.2B.. .....d..?
 000acdf0: 3641 0081 feff 2208 071d f000 3641 0081  6A....".....6A..
 000ace00: fbff 2248 08c0 2000 1df0 0000 3641 0081  .."H.. .....6A..
 000ace10: f7ff 2208 081d f000 5917 b7d1 ffff ff07  ..".....Y.......
 000ace20: 1901 423f 3641 0031 f1ff 0c02 71b1 fa22  ..B?6A.1....q.."
 000ace30: 4307 c020 003d f03d f03d f03d f028 07a2  C.. .=.=.=.=.(..
 000ace40: 2235 e00a 002d 0a16 3a08 4183 fb48 04a2  "5...-..:.A..H..
 000ace50: 2438 e00a 004d 0a58 07a2 2534 6202 00e0  $8...M.X..%4b...
@@ -44430,15 +44430,15 @@
 000ad8d0: 1c22 1df0 5093 fb3f 60c2 0040 3641 0041  ."..P..?`[email protected]
 000ad8e0: fdff 0c03 8204 108c d80c 6cbd 02a2 c411  ..........l.....
 000ad8f0: 81fa ffe0 0800 8cca 1b33 3030 747b 4466  .........300t{Df
 000ad900: 73e1 0c02 1df0 0c12 1df0 0000 08d7 1040  s..............@
 000ad910: 9cd8 1040 60d8 1040 3641 0081 cff8 91fb  ...@`..@6A......
 000ad920: ff88 0892 685c 3df0 3df0 3df0 3df0 91f8  ....h\=.=.=.=...
 000ad930: ff92 684b 3df0 3df0 3df0 3df0 91f6 ff92  ..hK=.=.=.=.....
-000ad940: 684c 1df0 5481 fb3f 587e fc3f 1c02 423f  hL..T..?X~.?..B?
+000ad940: 684c 1df0 5481 fb3f 7899 fc3f 1c02 423f  hL..T..?x..?..B?
 000ad950: 0000 fb3f 7cdf 1040 0908 0000 0608 0000  ...?|..@........
 000ad960: 0b08 0000 0d08 0000 3681 0041 f6ff 2804  ........6..A..(.
 000ad970: 56c2 5221 b9f8 3802 a223 5420 3220 e00a  V.R!..8..#T 2 ..
 000ad980: 008c 3a28 a456 7251 2803 a222 53e0 0a00  ..:(.VrQ(.."S...
 000ad990: 31ee ff8c da0c 0528 5452 4300 c020 0056  1......(TRC.. .V
 000ad9a0: d24f 1df0 0c12 2243 00c0 2000 1df0 0000  .O...."C.. .....
 000ad9b0: 0032 044d 0053 23e6 5507 1b33 3244 4dc0  .2.M.S#.U..32DM.
@@ -44551,15 +44551,15 @@
 000ae060: 3bfe e007 0078 f38c 97ad 0328 0528 42e0  ;....x.....(.(B.
 000ae070: 0200 2d0a ad02 3805 3223 35e0 0300 ad06  ..-...8.2#5.....
 000ae080: 2224 0022 2203 e002 00e5 8dff 1df0 0000  "$.""...........
 000ae090: 3641 0081 2dfe 8208 0016 b800 812a fe82  6A..-........*..
 000ae0a0: 084c 6618 0225 8cff 1df0 0000 18df 1040  .Lf..%.........@
 000ae0b0: 3641 0081 e9f6 91fd ff88 0892 6863 1df0  6A..........hc..
 000ae0c0: 00e0 0000 f43f 0000 ffff 00ff 0000 8000  .....?..........
-000ae0d0: 5c7e fc3f 2502 423f 2d02 423f 80da ffff  \~.?%.B?-.B?....
+000ae0d0: 7c99 fc3f 2502 423f 2d02 423f 80da ffff  |..?%.B?-.B?....
 000ae0e0: 6042 3500 0010 0e00 00b4 c404 0040 f53f  `B5..........@.?
 000ae0f0: 2c40 f53f 6440 f53f 0080 0004 0000 0600  ,@.?d@.?........
 000ae100: ffff f9ff 0008 0000 0c40 f53f 0000 f800  .........@.?....
 000ae110: 3661 000c 4222 4105 c020 0081 fbf5 e008  6a..B"A.. ......
 000ae120: 0032 0a03 21e8 ff81 f8f5 e008 002a 3300  .2..!........*3.
 000ae130: 3311 520a 0341 e2ff f625 010c 0481 f2f5  3.R..A...%......
 000ae140: e008 004a 3342 0a03 81f0 f5e0 0800 2a24  ...J3B........*$
@@ -44759,15 +44759,15 @@
 000aed60: 7430 32a0 ad02 4803 31bc f358 0352 d505  t02...H.1..X.R..
 000aed70: 58c5 e005 000c 0b0c 1592 2300 20a2 2092  X.........#. . .
 000aed80: d905 8204 4980 b593 8229 25e0 0800 cd05  ....I....)%.....
 000aed90: 8803 82d8 04b2 1412 8228 39a2 1418 e008  .........(9.....
 000aeda0: 00bd 0aad 0288 0382 d805 8228 26e0 0800  ...........(&...
 000aedb0: ad02 0cbb 5244 5cc0 2000 3df0 3df0 3df0  ....RD\. .=.=.=.
 000aedc0: 3df0 5803 c204 4252 2584 e005 00ad 0238  =.X...BR%......8
-000aedd0: 0332 d305 38d3 e003 001d f000 3080 fc3f  .2..8.......0..?
+000aedd0: 0332 d305 38d3 e003 001d f000 509b fc3f  .2..8.......P..?
 000aede0: 48c9 0140 3641 0081 feff e008 00a1 fbff  H..@6A..........
 000aedf0: 0c7c 0c0b 814e f8e0 0800 1df0 9cc9 0140  .|...N.........@
 000aee00: 3641 0081 feff e008 00a1 f4ff 0c7c 0c0b  6A...........|..
 000aee10: 8147 f8e0 0800 1df0 28ca 0140 3681 0082  .G......(..@6...
 000aee20: 0144 2020 74ad 0270 f074 60e0 f489 11cd  .D  t..p.t`.....
 000aee30: 04dd 0530 b074 3df0 8211 2082 5100 c020  ...0.t=... .Q.. 
 000aee40: 003d f03d f03d f03d f082 0142 8241 02c0  .=.=.=.=...B.A..
@@ -45594,15 +45594,15 @@
 000b2190: b3e6 4040 f4ad 0420 20f4 5050 f488 0882  ..@@...  .PP....
 000b21a0: 2843 e008 0026 5a17 2c48 871a 12dd 05cd  (C...&Z.,H......
 000b21b0: 04bd 0320 a220 81f4 ffe0 0800 8600 0000  ... . ..........
 000b21c0: 0c0a 2d0a 1df0 0000 9c85 0240 3641 0081  ..-........@6A..
 000b21d0: a3e6 4040 f4ad 0420 20f4 5050 f488 0882  ..@@...  .PP....
 000b21e0: 2843 e008 0026 5a17 2c48 871a 12dd 05cd  (C...&Z.,H......
 000b21f0: 04bd 0320 a220 81f4 ffe0 0800 8600 0000  ... . ..........
-000b2200: 0c0a 2d0a 1df0 0000 687e fc3f 607e fc3f  ..-.....h~.?`~.?
+000b2200: 0c0a 2d0a 1df0 0000 8899 fc3f 8099 fc3f  ..-........?...?
 000b2210: f472 0840 70f2 0240 3661 0040 40f4 81fa  .r.@p..@6a.@@...
 000b2220: ff40 6841 8086 a020 70f4 0c02 2908 50d0  .@hA... p...).P.
 000b2230: f43d f03d f03d f081 f5ff 6a88 5115 e622  .=.=.=....j.Q.."
 000b2240: 4800 c020 003d f03d f03d f03d f088 05a8  H.. .=.=.=.=....
 000b2250: 28d9 11e0 0a00 8d0a ad06 8901 81ed ffe0  (...............
 000b2260: 0800 5805 8801 ad08 5835 e005 00ad 0451  ..X.....X5.....Q
 000b2270: 7be6 5805 5225 43e0 0500 d811 271a 0ecd  {.X.R%C.....'...
@@ -46243,24 +46243,24 @@
 000b4a20: 00c1 f7ff 0c08 0cdb 1c4d 1c5f e1f4 ff22  .........M._..."
 000b4a30: a011 92a0 1676 8957 b718 2c87 2b0d 2618  .....v.W..,.+.&.
 000b4a40: 3e26 7813 5668 0446 0b00 0000 d718 10f7  >&x.Vh.F........
 000b4a50: 1835 2798 3886 0500 31e8 ff39 ea46 0b00  .5'.8...1..9.F..
 000b4a60: e26a 28c6 0900 0000 c26a 1ac6 0700 0031  .j(......j.....1
 000b4a70: e5ff 326a 2246 0500 31e4 ff39 0a46 0300  ..2j"F..1..9.F..
 000b4a80: 31e3 ff39 2a46 0100 31e2 ff32 6a2a 1b88  1..9*F..1..2j*..
-000b4a90: 1df0 0000 3641 0025 f8ff 1df0 c17e fc3f  ....6A.%.....~.?
+000b4a90: 1df0 0000 3641 0025 f8ff 1df0 e199 fc3f  ....6A.%.......?
 000b4aa0: 3641 0081 6edc 2020 f4bd 020c 6d1c 3c88  6A..n.  ....m.<.
 000b4ab0: 0830 3074 8228 30a1 11e3 e008 000c 180c  .00t.(0.........
 000b4ac0: 0b82 4a00 c020 003d f03d f03d f03d f081  ..J.. .=.=.=.=..
 000b4ad0: f3ff 2a98 9209 0022 5a01 325a 02c0 2000  ..*...."Z.2Z.. .
 000b4ae0: 97b3 0530 99c0 90b0 742a 28b2 4200 c020  ...0....t*(.B.. 
 000b4af0: 003d f03d f03d f03d f021 57dc 2802 2222  .=.=.=.=.!W.(.""
 000b4b00: 5ce0 0200 1df0 0000 ac49 0440 3641 0020  \........I.@6A. 
 000b4b10: 20f4 20a2 2081 fcff e008 0020 a220 a535   . . ...... . .5
-000b4b20: 0190 0000 c07e fc3f 3641 0031 d9db 2020  .....~.?6A.1..  
+000b4b20: 0190 0000 e099 fc3f 3641 0031 d9db 2020  .......?6A.1..  
 000b4b30: 7488 03a2 2802 e00a 000c a827 381e 91f9  t...(......'8...
 000b4b40: ff20 8341 8a89 2020 247c e900 1240 9029  . .A..  $|...@.)
 000b4b50: 8192 0800 9022 1022 4800 c020 003d f03d  ....."."H.. .=.=
 000b4b60: f03d f03d f028 0328 32e0 0200 1df0 0000  .=.=.(.(2.......
 000b4b70: 6a0b 423f 6c97 fb3f 3661 0062 1348 42c3  j.B?l..?6a.b.HB.
 000b4b80: 2880 5611 4921 0c64 4055 2050 50f4 3df0  (.V.I!.d@U PP.=.
 000b4b90: 41eb fb59 11e0 5611 5a74 3df0 3df0 7807  A..Y..V.Zt=.=.x.
@@ -46502,16 +46502,16 @@
 000b5a50: e2fb ad05 2804 2222 2ce0 0200 1647 e7ad  ....(."",....G..
 000b5a60: 0728 0422 222c e002 000c 1286 93ff 0000  .(."",..........
 000b5a70: 0061 07d8 5806 a891 5835 e005 00bc c3ad  .a..X...X5......
 000b5a80: 0138 0438 43e0 0300 3d0a 6173 d846 0a00  .8.8C...=.as.F..
 000b5a90: 00b2 0304 8ccb 5806 52d5 0852 2511 a213  ......X.R..R%...
 000b5aa0: 03e0 0500 ad03 5804 5225 2ce0 0500 ad01  ......X.R%,.....
 000b5ab0: 3804 3223 04e0 0300 3d0a 5633 fd1d f000  8.2#....=.V3....
-000b5ac0: d000 fb3f ce00 fb3f cd7e fc3f cc7e fc3f  ...?...?.~.?.~.?
-000b5ad0: 547e fc3f feff ff03 84c4 0840 dc66 0440  [email protected].@
+000b5ac0: d000 fb3f ce00 fb3f ed99 fc3f ec99 fc3f  ...?...?...?...?
+000b5ad0: 7499 fc3f feff ff03 84c4 0840 dc66 0440  [email protected].@
 000b5ae0: 3681 0041 5ed8 0c9a 2804 2222 2306 8f00  6..A^...(.""#...
 000b5af0: a212 480c a352 c228 a7b3 11d2 a711 31e4  ..H..R.(......1.
 000b5b00: d70c 0b38 03c1 47ff 3863 e003 00b2 0101  ...8..G.8c......
 000b5b10: 3152 d866 3b7a bd02 6803 62d6 0862 2612  1R.f;z..h.b..b&.
 000b5b20: a212 48e0 0600 6803 62d6 0862 2615 a212  ..H...h.b..b&...
 000b5b30: 48e0 0600 ad05 6803 62d6 0862 261d e006  H.....h.b..b&...
 000b5b40: 0072 1248 61fe f760 87a0 8808 9208 a590  .r.Ha..`........
@@ -46545,16 +46545,16 @@
 000b5d00: 2000 3df0 3df0 3df0 3df0 5201 010b 5550   .=.=.=.=.R...UP
 000b5d10: 5074 f625 2a56 7602 a212 4822 caf7 2020  Pt.%*Vv...H"..  
 000b5d20: f4b6 2210 2223 0022 d208 2222 1fe0 0200  .."."#."..""....
 000b5d30: 0603 0000 0028 0322 d20a 2222 1ae0 0200  .....(."..""....
 000b5d40: bd01 1ba1 8166 ffe0 0800 2d0a 560a da1d  .....f....-.V...
 000b5d50: f000 0000 3c6b 0440 3641 0020 a074 81fd  ....<k.@6A. .t..
 000b5d60: ffe0 0800 81e9 d6e0 0800 920a 1b81 e9fd  ................
-000b5d70: 9248 64c0 2000 1df0 ec7e fc3f 3641 0081  .Hd. ....~.?6A..
-000b5d80: feff 2248 00c0 2000 1df0 0000 f07e fc3f  .."H.. ......~.?
+000b5d70: 9248 64c0 2000 1df0 0c9a fc3f 3641 0081  .Hd. ......?6A..
+000b5d80: feff 2248 00c0 2000 1df0 0000 109a fc3f  .."H.. ........?
 000b5d90: 3641 0020 2074 81fd ff20 9004 2021 0492  6A.  t... .. !..
 000b5da0: 4800 2248 01c0 2000 1df0 0000 3641 0081  H."H.. .....6A..
 000b5db0: f7ff 2838 1df0 0000 3641 0041 a8d7 bd02  ..(8....6A.A....
 000b5dc0: 3804 a1d4 fd38 73e0 0300 0c03 379a 2120  8....8s.....7.! 
 000b5dd0: a220 8199 fee0 0800 0c13 9c3a 4804 4224  . .........:H.B$
 000b5de0: 2ce0 0400 ad02 419c d748 0442 2439 e004  ,.....A..H.B$9..
 000b5df0: 002d 031d f000 0000 cc5b fc3f 3641 0020  .-.......[.?6A. 
@@ -46565,15 +46565,15 @@
 000b5e40: a828 e00a 00f0 9211 2a29 c082 1120 28c0  .(......*)... (.
 000b5e50: 81f8 ff80 8290 2218 0081 f6ff 9a98 2259  ......"......."Y
 000b5e60: 04c0 2000 3df0 3df0 3df0 3df0 2803 2222  .. .=.=.=.=.(.""
 000b5e70: 03e0 0200 1df0 0000 3641 0031 05d7 8b22  ........6A.1..."
 000b5e80: 8803 a228 02e0 0a00 81eb ff80 2290 0c08  ...(........"...
 000b5e90: 8252 06c0 2000 3df0 3df0 3df0 3df0 2803  .R.. .=.=.=.=.(.
 000b5ea0: 2832 e002 001d f000 3641 0081 e2ff 2248  (2......6A...."H
-000b5eb0: 00c0 2000 1df0 0000 8c80 fc3f f90a 0000  .. ........?....
+000b5eb0: 00c0 2000 1df0 0000 ac9b fc3f f90a 0000  .. ........?....
 000b5ec0: 0521 403f 5088 0840 3641 0021 fbff 41f0  .!@?P..@6A.!..A.
 000b5ed0: d638 1228 04a8 22e0 0a00 6d0a cc53 0c02  .8.(.."...m..S..
 000b5ee0: 0615 0000 0021 5dd7 bd03 2802 a18a fd28  .....!]...(....(
 000b5ef0: 72e0 0200 5d0a 564a fecd 0a0c 1bad 03a5  r...].VJ........
 000b5f00: ebff 2d0a 160a 02a2 a006 81ee ffe0 0800  ..-.............
 000b5f10: 2152 d7bd 05ad 0328 0222 d208 2222 2be0  !R.....(."..""+.
 000b5f20: 0200 2d0a 0604 0000 5804 c1e4 ff58 55b1  ..-.....X....XU.
@@ -47227,15 +47227,15 @@
 000b87a0: 3df0 3df0 3df0 3df0 a1f0 ffa2 693e 3df0  =.=.=.=.....i>=.
 000b87b0: 3df0 3df0 3df0 a1ed ffa2 693f 3df0 3df0  =.=.=.....i?=.=.
 000b87c0: 3df0 3df0 91eb ff99 083d f03d f03d f03d  =.=......=.=.=.=
 000b87d0: f091 e8ff 9918 3df0 3df0 3df0 3df0 91e6  ......=.=.=.=...
 000b87e0: ff99 283d f03d f03d f03d f091 e4ff 9938  ..(=.=.=.=.....8
 000b87f0: 3df0 3df0 3df0 3df0 91e2 ff99 a83d f03d  =.=.=.=......=.=
 000b8800: f03d f03d f091 dfff 9998 3df0 3df0 3df0  .=.=......=.=.=.
-000b8810: 3df0 91dd ff99 581d f000 0000 ce7e fc3f  =.....X......~.?
+000b8810: 3df0 91dd ff99 581d f000 0000 ee99 fc3f  =.....X........?
 000b8820: 4e0e 423f 4097 fb3f 36a1 0051 0ccd ad01  N.B?@..?6..Q....
 000b8830: 3805 3223 00e0 0300 3212 3439 813d f03d  8.2#....2.49.=.=
 000b8840: f03d f03d f031 92cc 4803 a224 02e0 0a00  .=.=.1..H..$....
 000b8850: 4803 4834 68c2 e004 000c 0488 8180 7890  H.H4h.........x.
 000b8860: 81ef ff7a 8889 9186 4000 0000 8216 0291  ...z....@.......
 000b8870: 1cf6 9088 b082 1800 f7e8 1588 8162 c8f7  .............b..
 000b8880: 6060 f469 9116 c413 b626 0286 3900 c64c  ``.i.....&..9..L
@@ -47490,15 +47490,15 @@
 000b9810: 9201 0090 8990 9088 a071 aaff 7088 a072  .........q..p..r
 000b9820: 1800 17e7 0346 0f00 0068 060c 5a72 2642  .....F...h..Zr&B
 000b9830: 6226 43e0 0600 7c3b 82a0 08b0 aa10 80ba  b&C...|;........
 000b9840: 20b0 b074 a2a0 05e0 0700 6803 ad02 62d6   ..t......h...b.
 000b9850: 0968 26c2 1534 b19c ffe0 0600 2197 f1a9  .h&..4......!...
 000b9860: 12dc ba86 0200 1c24 0605 0000 0c95 4600  .......$......F.
 000b9870: 001c f528 034d 0522 d209 2222 3de0 0200  ...(.M."..""=...
-000b9880: 2d04 1df0 147f fc3f 6480 fc3f 7880 fc3f  -......?d..?x..?
+000b9880: 2d04 1df0 349a fc3f 849b fc3f 989b fc3f  -...4..?...?...?
 000b9890: f8c9 0440 3641 00a1 88f1 0ccc b2a0 0081  ...@6A..........
 000b98a0: a3cd e008 0020 2074 ad02 81f9 ffe0 0800  .....  t........
 000b98b0: 8176 c9e0 0800 3162 cc37 6a47 8113 c8e0  .v....1b.7jG....
 000b98c0: 0800 420a 0866 1402 4600 000c 0442 4300  ..B..f..F....BC.
 000b98d0: c020 0081 0dc8 e008 0042 0a09 4243 01c0  . .......B..BC..
 000b98e0: 2000 8109 c8e0 0800 421a 0542 5301 c020   .......B..BS.. 
 000b98f0: 0081 05c8 e008 0042 1a06 4253 020c 0442  .......B..BS...B
@@ -47534,15 +47534,15 @@
 000b9ad0: 0242 d409 4804 b1fc fe06 f3ff 0000 2802  .B..H.........(.
 000b9ae0: 22d2 0922 223d e002 000c 5a28 0542 2242  "..""=....Z(.B"B
 000b9af0: 2222 43e0 0200 7c3b b0aa 100c 4220 ba20  ""C...|;....B . 
 000b9b00: b0b0 740c 5ae0 0400 8180 c7e0 0800 221a  ..t.Z.........".
 000b9b10: 1016 f2ee 817d c7e0 0800 221a 1020 22a0  .....}....".. ".
 000b9b20: 2022 a0a0 2211 38a3 3213 0230 22d2 31c4   "..".8.2..0".1.
 000b9b30: cb8c 3229 73c6 b2ff 0c14 4973 1df0 0000  ..2)s.....Is....
-000b9b40: 5209 fb3f 5009 fb3f f27e fc3f 187f fc3f  R..?P..?.~.?...?
+000b9b40: 5209 fb3f 5009 fb3f 129a fc3f 389a fc3f  R..?P..?...?8..?
 000b9b50: 4c09 fb3f 750f 423f 7b0f 423f 960f 423f  L..?u.B?{.B?..B?
 000b9b60: 0303 2718 0303 2818 c80f 423f 4e09 fb3f  ..'...(...B?N..?
 000b9b70: 4fec c44e 36e1 0041 85f0 2020 7432 0400  O..N6..A..  t2..
 000b9b80: 16a3 0420 5290 e055 1131 edff 3a35 3213  ... R..U.1..:52.
 000b9b90: 0030 30f4 b16f cf8c 6332 c318 4602 0000  .00..o..c2..F...
 000b9ba0: 0031 e8ff 3a55 3215 0030 30f4 0c6c bab3  .1..:U2..00..l..
 000b9bb0: 10a1 2081 c9cd e008 00a1 e3ff 0c6c bd01  .. ..........l..
@@ -48048,15 +48048,15 @@
 000bbaf0: fbff 9268 1a3d f03d f03d f03d f091 f8ff  ...h.=.=.=.=....
 000bbb00: 9268 1b1d f000 0000 6098 fb3f 3641 000c  .h......`..?6A..
 000bbb10: 0320 5074 4d03 2d03 8609 0000 61fb ff30  . PtM.-.....a..0
 000bbb20: 83b0 8a86 9208 3cb6 3912 8208 3d66 1807  ......<.9...=f..
 000bbb30: 1b44 4040 7406 0100 1b82 8020 741b 3330  .D@@t...... t.30
 000bbb40: 3074 8171 bfe0 0800 820a 1687 33cd 5080  0t.q........3.P.
 000bbb50: 040c 0380 2383 1765 042a 2420 2074 1df0  ....#..e.*$  t..
-000bbb60: ad10 423f 9880 fc3f 34ed 0440 3641 0020  ..B?...?4..@6A. 
+000bbb60: ad10 423f b89b fc3f 34ed 0440 3641 0020  ..B?...?4..@6A. 
 000bbb70: a074 81fd ffe0 0800 2133 c028 02a6 3211  .t......!3.(..2.
 000bbb80: 8162 bfe0 0800 b20a 16a1 f5ff 8197 c2e0  .b..............
 000bbb90: 0800 0c64 7cf5 31dc ff2d 0346 0200 0000  ...d|.1..-.F....
 000bbba0: 5243 7bc0 2000 0b44 8158 bfe0 0800 32c3  RC{. ..D.X....2.
 000bbbb0: f782 0a16 87a4 e8c2 a00a b2a0 ff31 e9ff  .............1..
 000bbbc0: 42a0 7f30 a320 81d9 c4e0 0800 82d2 0122  B..0. ........."
 000bbbd0: 0861 4022 1042 4309 2248 61c0 2000 1df0  .a@".BC."Ha. ...
@@ -48465,15 +48465,15 @@
 000bd500: 21d1 b928 02a6 3208 a1be ff81 37bc e008  !..(..2.....7...
 000bd510: 001d f000 f810 f53f 0901 0400 8412 423f  .......?......B?
 000bd520: 3641 0081 cbb9 e008 0081 faff 91fb ffc0  6A..............
 000bd530: 2000 9908 3df0 3df0 3df0 3df0 81c2 b988   ...=.=.=.=.....
 000bd540: 08a6 3808 a1f6 ff81 28bc e008 00a2 a001  ..8.....(.......
 000bd550: e5d0 52a2 a001 25d9 521d f000 08d4 1140  ..R...%.R......@
 000bd560: 3641 0081 beb9 91fd ff88 0892 6855 1df0  6A..........hU..
-000bd570: 347f fc3f 3641 0020 2074 0c98 8792 0246  4..?6A.  t.....F
+000bd570: 549a fc3f 3641 0020 2074 0c98 8792 0246  T..?6A.  t.....F
 000bd580: 3800 2738 3e66 4202 062c 00f6 5219 6612  8.'8>fB..,..R.f.
 000bd590: 02c6 2300 1652 0866 2202 8623 0066 3202  ..#..R.f"..#.f2.
 000bd5a0: 0624 0046 4500 0000 6662 0206 2700 f662  .$.FE...fb..'..b
 000bd5b0: 02c6 2300 6672 0246 2600 6682 02c6 2600  ..#.fr.F&.f...&.
 000bd5c0: 063e 0000 0ce8 8792 02c6 2f00 2738 1e0c  .>......../.'8..
 000bd5d0: b887 9202 0627 0087 b202 8623 0066 a202  .....'.....#.f..
 000bd5e0: 0626 000c d887 9202 0626 0046 3300 1c18  .&.......&.F3...
@@ -48487,15 +48487,15 @@
 000bd660: 821d f000 21c3 ff28 921d f000 21c1 ff28  ....!..(....!..(
 000bd670: a21d f000 21bf ff28 b21d f000 21bd ff28  ....!..(....!..(
 000bd680: c21d f000 21bb ff28 d21d f000 21b9 ff28  ....!..(....!..(
 000bd690: e21d f000 21b7 ff28 f21d f000 21b5 ff22  ....!..(....!.."
 000bd6a0: 2210 1df0 21b3 ff22 2211 1df0 21b1 ff22  "...!..""...!.."
 000bd6b0: 2212 1df0 21af ff22 2213 1df0 0c02 1df0  "...!.."".......
 000bd6c0: 5cb1 0840 3641 0081 64b9 8808 82d8 0b91  \[email protected].......
-000bd6d0: fcff 9268 1a1d f000 847f fc3f 3641 0020  ...h.......?6A. 
+000bd6d0: fcff 9268 1a1d f000 a49a fc3f 3641 0020  ...h.......?6A. 
 000bd6e0: 2074 6692 02c6 4200 0ca8 2738 4b66 4202   tf...B...'8KfB.
 000bd6f0: 0634 00f6 5219 6612 02c6 2b00 1652 0a66  .4..R.f...+..R.f
 000bd700: 2202 462b 0066 3202 062c 0046 5100 0000  ".F+.f2..,.FQ...
 000bd710: 6672 0246 3100 f682 0e66 5202 062b 0066  fr.F1....fR..+.f
 000bd720: 6202 862b 00c6 4a00 6682 0246 2d00 0c98  b..+..J.f..F-...
 000bd730: 8792 0246 2d00 8646 0066 b202 0639 001c  ...F-..F.f...9..
 000bd740: 0827 382f 0cd8 8792 0286 2f00 2738 100c  .'8/....../.'8..
@@ -48614,34 +48614,34 @@
 000bde50: 8802 0c02 8029 831d f000 0000 3641 0081  .....)......6A..
 000bde60: 89fe 2218 001d f000 a0d8 1140 74da 1140  .."........@t..@
 000bde70: ecda 1140 6cc3 0840 e4c3 0840 3641 0081  ...@l..@...@6A..
 000bde80: 77b7 91f9 ff88 0892 6857 3df0 3df0 3df0  w.......hW=.=.=.
 000bde90: 3df0 91f6 ff92 6858 3df0 3df0 3df0 3df0  =.....hX=.=.=.=.
 000bdea0: 91f4 ff92 685b 3df0 3df0 3df0 3df0 91f1  ....h[=.=.=.=...
 000bdeb0: ff92 685c 3df0 3df0 3df0 3df0 91ef ff92  ..h\=.=.=.=.....
-000bdec0: 685e 1df0 e47f fc3f 3641 0081 feff 2908  h^.....?6A....).
-000bded0: 1df0 0000 e87f fc3f 3641 00a1 feff 2c8c  .......?6A....,.
-000bdee0: bd02 81fd bce0 0800 1df0 0000 e27f fc3f  ...............?
+000bdec0: 685e 1df0 049b fc3f 3641 0081 feff 2908  h^.....?6A....).
+000bded0: 1df0 0000 089b fc3f 3641 00a1 feff 2c8c  .......?6A....,.
+000bdee0: bd02 81fd bce0 0800 1df0 0000 029b fc3f  ...............?
 000bdef0: 3641 0081 feff 2248 00c0 2000 1df0 0000  6A...."H.. .....
-000bdf00: e17f fc3f 3641 0081 feff 2248 00c0 2000  ...?6A...."H.. .
-000bdf10: 1df0 0000 e07f fc3f 3641 0081 feff 2248  .......?6A...."H
+000bdf00: 019b fc3f 3641 0081 feff 2248 00c0 2000  ...?6A...."H.. .
+000bdf10: 1df0 0000 009b fc3f 3641 0081 feff 2248  .......?6A...."H
 000bdf20: 00c0 2000 1df0 0000 0413 423f 3661 000c  .. .......B?6a..
 000bdf30: d950 5074 7cf8 2739 7a29 013d f03d f03d  .PPt|.'9z).=.=.=
 000bdf40: f03d f021 6bb6 aca3 ad04 8802 8228 1be0  .=.!k........(..
 000bdf50: 0800 7ce8 a911 16aa 05cd 04b2 a000 81f3  ..|.............
 000bdf60: bbe0 0800 a811 cd04 bd03 81db bce0 0800  ................
 000bdf70: 8600 0000 3911 50c0 60bd 013d f03d f038  ....9.P.`..=.=.8
 000bdf80: 0241 5db6 3223 13a8 04e0 0300 261a 229c  .A].2#......&.".
 000bdf90: f531 2cb7 3803 a613 08a1 e3ff 8193 b9e0  .1,.8...........
 000bdfa0: 0800 2802 a811 2222 1de0 0200 7cd8 8600  ..(...""....|...
 000bdfb0: 0000 0c08 2d08 1df0 3661 0040 d074 0c8c  [email protected]..
 000bdfc0: bd01 0cda 2911 3261 0025 f6ff 2d0a 1df0  ....).2a.%..-...
 000bdfd0: 3641 008c d2a8 128c 9a21 45b6 2802 2222  6A.......!E.(.""
-000bdfe0: 1de0 0200 1df0 0000 2080 fc3f ac80 fc3f  ........ ..?...?
-000bdff0: 2880 fc3f 3641 0081 fcff 0c02 b2a0 ffa1  (..?6A..........
+000bdfe0: 1de0 0200 1df0 0000 409b fc3f cc9b fc3f  ........@..?...?
+000bdff0: 489b fc3f 3641 0081 fcff 0c02 b2a0 ffa1  H..?6A..........
 000be000: fbff c140 c029 1822 4808 a908 81c8 bbe0  ...@.)."H.......
 000be010: 0800 bd02 819f b688 08a1 f5ff 8228 17e0  .............(..
 000be020: 0800 1df0 3641 0081 f0ff 3c4a 9808 c020  ....6A....<J... 
 000be030: 00a2 4900 c020 001c 2a3d f03d f03d f098  ..I.. ..*=.=.=..
 000be040: 08c0 2000 a249 01c0 2000 7cf9 3df0 3df0  .. ..I.. .|.=.=.
 000be050: 3df0 a808 c020 0092 4a02 c020 003d f03d  =.... ..J.. .=.=
 000be060: f03d f03d f0a8 08c0 2000 924a 03c0 2000  .=.=.... ..J.. .
@@ -48651,15 +48651,15 @@
 000be0a0: 93a8 18a7 b90e b2a0 ff0c 02a8 08aa a381  ................
 000be0b0: 9fbb e008 001d f000 3641 0081 cbff 2090  ........6A.... .
 000be0c0: 74cd 04bd 051c 22a2 0808 979a 124a 93a8  t....."......J..
 000be0d0: 18a7 b90b 0c02 a808 aaa3 817f bce0 0800  ................
 000be0e0: 1df0 0000 3641 0081 c0ff 2090 74cd 04ad  ....6A.... .t...
 000be0f0: 051c 22b2 0808 979b 124a 93b8 18b7 b90b  .."......J......
 000be100: 0c02 b808 bab3 8174 bce0 0800 1df0 0000  .......t........
-000be110: 2c80 fc3f 3641 0091 feff 2d09 8809 a208  ,..?6A....-.....
+000be110: 4c9b fc3f 3641 0091 feff 2d09 8809 a208  L..?6A....-.....
 000be120: 21ac fa92 0822 aca9 0c09 9248 22c0 2000  !....".....H". .
 000be130: 82d8 043d f03d f03d f082 2839 8c58 8808  ...=.=.=..(9.X..
 000be140: 8c18 e008 0081 eab5 9808 8802 28c9 a228  ............(..(
 000be150: 09e0 0200 1df0 0000 1713 423f 1e13 423f  ..........B?..B?
 000be160: d8c4 0840 3641 00ad 0256 b201 31b6 b632  [email protected]
 000be170: 2300 a613 0ec2 a08d b1f8 ffa1 f8ff 811a  #...............
 000be180: b9e0 0800 06ff ff00 dc83 31ae b638 03a6  ..........1..8..
@@ -48704,15 +48704,15 @@
 000be3f0: 0081 5bff e008 008d 0406 1200 7ce8 c610  ..[.........|...
 000be400: 0071 3bb5 8807 8228 39e0 0800 9805 8209  .q;....(9.......
 000be410: 231b 8882 4923 c020 003d f03d f03d f03d  #...I#. .=.=.=.=
 000be420: f088 0782 283a e008 007c fb98 0588 07a8  ....(:...|......
 000be430: 9988 b8e0 0800 8805 9208 2156 99f3 7cc8  ..........!V..|.
 000be440: 4600 007c d82d 081d f000 0000 3641 0081  F..|.-......6A..
 000be450: 30ff 7cf9 8808 8c68 82d8 040c 0922 6839  0.|....h....."h9
-000be460: 2d09 1df0 ac88 fc3f 3641 0016 9207 6167  -......?6A....ag
+000be460: 2d09 1df0 cca3 fc3f 3641 0016 9207 6167  -......?6A....ag
 000be470: cf32 0208 3a36 4203 0031 f8b5 8c14 0611  .2..:6B..1......
 000be480: 0051 f8ff 4825 b644 53a5 32f5 72a0 ff4d  .Q..H%.DS.2.r..M
 000be490: 0a77 1a48 aa66 0c17 7246 00c0 2000 3df0  .w.H.f..rF.. .=.
 000be4a0: 3df0 3df0 3df0 71ec b568 0762 d605 6226  =.=.=.q..h.b..b&
 000be4b0: 11e0 0600 ad04 6807 62d6 0568 b6e0 0600  ......h.b..h....
 000be4c0: 6202 0847 9616 4803 a812 4224 2ce0 0400  b..G..H...B$,...
 000be4d0: ad02 3803 3223 2ce0 0300 1df0 0038 03bd  ..8.2#,......8..
@@ -75319,36 +75319,36 @@
 00126360: 0029 0381 f8ff e008 0081 f3ff 808a 1021  .).............!
 00126370: f3ff ad02 c020 0089 0381 f2ff e008 007c  ..... .........|
 00126380: e330 3a10 41ef ffad 04c0 2000 3902 81ed  .0:.A..... .9...
 00126390: ffe0 0800 32a0 8030 3a20 ad02 c020 0039  ....2..0: ... .9
 001263a0: 0481 e8ff e008 0032 a0c0 30aa 20c0 2000  .......2..0. . .
 001263b0: a902 a5ea ff1d f000 a85b 0840 a05f 0100  .........[.@._..
 001263c0: 9420 c020 0099 081d f000 0000 3641 00e5  . . ........6A..
-001263d0: 8c06 2d0a 1df0 0000 1080 fc3f 3681 007d  ..-........?6..}
+001263d0: 8c06 2d0a 1df0 0000 309b fc3f 3681 007d  ..-.....0..?6..}
 001263e0: 020c 0229 51a5 8806 620a 1e27 9622 21d0  ...)Q...b..'."!.
 001263f0: fe28 02cc e7cd 05bd 04ad 0322 222b e002  .(.........""+..
 00126400: 002d 071d f022 222c ad03 e002 002d 061d  .-..."",.....-..
 00126410: f079 01dc 173d f03d f03d f03d f021 c4fe  .y...=.=.=.=.!..
 00126420: 2802 2222 2b06 0300 7cf2 6617 4721 c0fe  (.""+...|.f.G!..
 00126430: 2802 2222 2cc2 c114 bd01 3921 3df0 3df0  (."",.....9!=.=.
 00126440: 3df0 3df0 31bb fe29 1149 313d f03d f03d  =.=.1..).I1=.=.=
 00126450: f03d f028 0341 e0ff 2222 14a8 0459 41e0  .=.(.A..""...YA.
 00126460: 0200 0c12 279a 0d0c 0248 5127 1406 3803  ....'....HQ'..8.
-00126470: 3863 e003 001d f000 447e fc3f 3641 008d  8c......D~.?6A..
+00126470: 3863 e003 001d f000 6499 fc3f 3641 008d  8c......d..?6A..
 00126480: 020c 02f6 7807 21fc ff8a 8222 0800 1df0  ....x.!...."....
 00126490: 3641 0081 f9ff 2838 1df0 0000 ffff ff07  6A....(8........
 001264a0: 3641 0020 90f4 21f4 ff88 3230 38c0 81fb  6A. ..!...208...
 001264b0: ff80 3310 9023 c290 33e2 2020 748c 331b  ..3..#..3.  t.3.
 001264c0: 2220 2074 1df0 0000 f871 f93f 3641 000c  "  t.....q.?6A..
 001264d0: 99c1 fdff ed02 dd09 0c02 b2a0 0a76 8b26  .............v.&
 001264e0: 9a8e 8208 00d0 f9c0 80a0 64f0 8a83 80a0  ..........d.....
 001264f0: 3480 8441 aaac 8a8c f20a 000b 99a2 0800  4..A............
-00126500: aaaf aa82 8020 741d f000 0000 307f fc3f  ..... t.....0..?
-00126510: 287f fc3f ec80 fb3f 0000 0004 0030 0000  (..?...?.....0..
-00126520: feff ff07 5917 b7d1 2c7f fc3f 0481 fb3f  ....Y...,..?...?
+00126500: aaaf aa82 8020 741d f000 0000 509a fc3f  ..... t.....P..?
+00126510: 489a fc3f ec80 fb3f 0000 0004 0030 0000  H..?...?.....0..
+00126520: feff ff07 5917 b7d1 4c9a fc3f 0481 fb3f  ....Y...L..?...?
 00126530: 9c4e 0140 884f 0140 3661 0061 f4ff 3806  [email protected][email protected].
 00126540: a823 e00a 0071 f2ff 3807 a901 3df0 3df0  .#...q..8...=.=.
 00126550: 3df0 3df0 a223 38e0 0a00 cd0a 3202 191b  =.=..#8.....2...
 00126560: 33aa 3381 ecff 7d08 a1cd ffa0 3310 4858  3.3...}.....3.HX
 00126570: ac44 5204 1716 f501 c093 c0a0 9910 b1e6  .DR.............
 00126580: ff97 bb08 309c c0a0 9910 9090 6057 a907  ....0.......`W..
 00126590: 31c3 ffca 5530 3510 a212 08a0 9e41 9cb9  1...U05......A..
@@ -75393,15 +75393,15 @@
 00126800: dcc0 80dd 10d7 bb05 c0aa c087 8a45 9d03  .............E..
 00126810: 3803 5673 fe46 0d00 0031 43ff bd02 3803  8.Vs.F...1C...8.
 00126820: a1e7 ff38 33e0 0300 8143 ffe0 0800 4605  ...83....C....F.
 00126830: 0081 3dff bd02 8808 a1e1 ff88 28e0 0800  ..=.........(...
 00126840: 8605 0029 0939 020c 0346 0300 0000 1679  ...).9...F.....y
 00126850: fc06 f7ff 56b9 fe86 efff 2805 ad04 2222  ....V.....(...""
 00126860: 03e0 0200 2d03 1df0 0008 0000 feff ff03  ....-...........
-00126870: 547e fc3f 0010 f73f 0000 0010 9001 423f  T~.?...?......B?
+00126870: 7499 fc3f 0010 f73f 0000 0010 9001 423f  t..?...?......B?
 00126880: 0521 403f 3641 0051 22ff 5805 2122 ffa2  .!@?6A.Q".X.!"..
 00126890: 2538 4852 3802 e00a 005d 0a16 e404 16b3  %8HR8....]......
 001268a0: 0482 0416 6203 1667 b80d 8213 0861 eeff  ....b..g.....a..
 001268b0: 8086 1080 8b21 cc68 6204 1706 0100 0000  .....!.hb.......
 001268c0: 6204 18a8 2350 8ac0 91f5 fe90 8810 b112  b...#P..........
 001268d0: ff87 bb08 a085 c090 8810 8080 6087 260c  ............`.&.
 001268e0: 6884 8c36 ad04 e006 000c 0669 523d f03d  h..6.......iR=.=
@@ -75423,15 +75423,15 @@
 001269e0: 0605 0000 0021 c9fe c2a2 7728 02b1 a3ff  .....!....w(....
 001269f0: 2852 a1a3 ffe0 0200 2d06 5682 fb81 cdfe  (R......-.V.....
 00126a00: e008 001d f037 9502 06ca ff0c 0406 d9ff  .....7..........
 00126a10: 3641 0081 c0fe 2858 1df0 0000 3641 0025  6A....(X....6A.%
 00126a20: 2406 176a 06e5 0700 1df0 0000 a547 061d  $..j.........G..
 00126a30: f000 0000 5481 fb3f 3641 0091 feff 8209  ....T..?6A......
 00126a40: 4d00 a823 e65a 0882 c801 8249 4dc0 2000  M..#.Z.....IM. .
-00126a50: 1df0 0000 5c7e fc3f 2502 423f 0521 403f  ....\~.?%.B?.!@?
+00126a50: 1df0 0000 7c99 fc3f 2502 423f 0521 403f  ....|..?%.B?.!@?
 00126a60: 3641 0081 fcff 8808 9858 8cf9 0c0b a868  6A.......X.....h
 00126a70: b958 b268 06e0 0900 1df0 0000 0081 a3fe  .X.h............
 00126a80: c2a1 9f88 08b1 f4ff 8858 a1f4 ffe0 0800  .........X......
 00126a90: 1df0 0000 00e0 0000 f43f 0000 ffff 00ff  .........?......
 00126aa0: 0000 f800 3641 00a5 1c06 320a 0321 faff  ....6A....2..!..
 00126ab0: e51b 0620 3380 0033 1192 0a03 81f6 fff6  ... 3..3........
 00126ac0: 2902 82a0 0080 3380 651a 0682 0a03 2028  ).....3.e..... (
@@ -75491,25 +75491,25 @@
 00126e20: c020 0058 7629 863d f03d f03d f03d f021  . .Xv).=.=.=.=.!
 00126e30: e3ff 2025 1030 3220 a118 e9a0 a410 2134  .. %.02 ......!4
 00126e40: ffc0 2000 3976 c020 00a9 023d f03d f03d  .. .9v. ...=.=.=
 00126e50: f03d f0c0 2000 4802 312b ff30 3420 c020  .=.. .H.1+.04 . 
 00126e60: 0039 021d f000 0000 3641 0021 fafe 8802  .9......6A.!....
 00126e70: 9c08 8208 2a8c b8a5 beff 0c08 2802 8242  ....*.......(..B
 00126e80: 2ac0 2000 1df0 0000 0840 f53f 1040 f53f  *. ......@.?.@.?
-00126e90: a880 fc3f 3010 f73f 3641 0031 fbff c020  ...?0..?6A.1... 
+00126e90: c89b fc3f 3010 f73f 3641 0031 fbff c020  ...?0..?6A.1... 
 00126ea0: 0028 0316 5208 31f9 ffc0 2000 2903 3df0  .(..R.1... .).=.
 00126eb0: 3df0 3df0 3df0 31e7 fe88 0316 d806 8762  =.=.=.1........b
 00126ec0: 2698 08a8 188c c90c 0bb9 08b9 18e0 0900  &...............
 00126ed0: 0605 0000 0081 8dfd c2a1 d688 08b1 defe  ................
 00126ee0: 8858 a1de fee0 0800 1c08 8702 ad21 e8ff  .X...........!..
 00126ef0: 2802 92c2 fef6 292c 0c19 3803 9243 2ac0  (.....),..8..C*.
 00126f00: 2000 6622 956c f23d f03d f03d f091 e1ff   .f".l.=.=.=....
 00126f10: c020 0038 0920 2310 8082 20c0 2000 8909  . .8. #... . ...
 00126f20: c6dd ff00 00a5 b3ff c6db ff00 1df0 0000  ................
-00126f30: 607e fc3f 687e fc3f 3641 0032 1203 3038  `~.?h~.?6A.2..08
+00126f30: 8099 fc3f 8899 fc3f 3641 0032 1203 3038  ...?...?6A.2..08
 00126f40: 4151 fbff 3a55 6205 00fc f671 70fd 4807  AQ..:Ub....qp.H.
 00126f50: a824 e00a 0041 f7ff 4043 a088 041b 8878  [email protected]
 00126f60: 0778 3789 04e0 0700 4804 a644 1e0c 1480  .x7.....H..D....
 00126f70: 3311 4245 0042 a534 4252 020c 1440 3320  3.BE.B.4BR...@3 
 00126f80: 3252 0332 a0ff 3252 04c0 2000 2d06 1df0  2R.2..2R.. .-...
 00126f90: cc93 fb3f 3641 0022 c2f4 5212 0242 a524  ...?6A."..R..B.$
 00126fa0: 3162 fd47 9515 20a2 20e5 f8ff 8cca 3803  1b.G.. . .....8.
@@ -75672,15 +75672,15 @@
 00127970: 4712 72d0 5211 22a0 6032 0344 b033 1120  G.r.R.".`2.D.3. 
 00127980: 3310 0015 4000 33a1 81c2 fd00 1540 0022  [email protected]......@."
 00127990: a17c f520 2530 c020 0048 0840 2210 2033  .|. %0. .H.@". 3
 001279a0: 20c0 2000 3908 c604 0021 d8fa bd03 ad04   . .9....!......
 001279b0: 2802 d170 ff28 62c1 74fe e002 0022 a0ff  (..p.(b.t...."..
 001279c0: 3206 0e27 131f d023 110c 8351 b1fd 0012  2..'...#...Q....
 001279d0: 4000 33a1 7cf2 3022 30c0 2000 4805 4022  @.3.|.0"0. .H.@"
-001279e0: 10c0 2000 2905 1df0 847e fc3f 3641 0020  .. .)....~.?6A. 
+001279e0: 10c0 2000 2905 1df0 a499 fc3f 3641 0020  .. .)......?6A. 
 001279f0: 4074 40a4 20e5 3901 22a0 0027 1a5d 8160  @t@. .9."..'.].`
 00127a00: fe80 84a0 a228 0082 0ab3 f628 4ed0 4411  .....(.....(N.D.
 00127a10: 822a 228a 3381 a1fa 8033 1081 f3ff 4a98  .*".3....3....J.
 00127a20: dd08 b209 0427 9b0b 0c18 8249 04c0 2000  .....'.....I.. .
 00127a30: 0609 0000 9809 9093 30b1 b7fa b709 18c2  ........0.......
 00127a40: 1a6e c0bb f292 1a6d b089 c046 0000 ca88  .n.....m...F....
 00127a50: 96a8 ff82 5a6d 0c12 4a8d 3908 1df0 0000  ....Zm..J.9.....
@@ -75989,15 +75989,15 @@
 00128d40: 01c0 2000 3df0 3df0 3df0 3df0 81f1 f588  .. .=.=.=.=.....
 00128d50: 0882 d807 8848 e008 001d f000 81ec f5d2  .....H..........
 00128d60: a09d 8808 c1f0 ff88 78e0 0800 1df0 0000  ........x.......
 00128d70: c4f9 0340 3641 0020 2074 20a2 2040 c074  ...@6A.  t . @.t
 00128d80: 30b0 7481 fbff e008 0020 a220 25cd fe90  0.t...... . %...
 00128d90: 0000 0000 3641 0081 e2ff 2020 7420 2290  ....6A....  t ".
 00128da0: 2a28 0c19 2202 0182 c2fe 0c02 8029 831d  *(.."........)..
-00128db0: f000 0000 748d fb3f 888d fb3f bc7e fc3f  ....t..?...?.~.?
+00128db0: f000 0000 748d fb3f 888d fb3f dc99 fc3f  ....t..?...?...?
 00128dc0: d096 fb3f cc4d 1140 3641 0021 d7f5 40a0  ...?.M.@6A.!..@.
 00128dd0: f458 0252 2543 e005 004d 0a0c 1ba2 1300  .X.R%C...M......
 00128de0: 0cf5 81f8 ffe0 0800 4080 344d 0221 c8f5  [email protected].!..
 00128df0: 5718 0552 1302 56b5 0651 c4f5 6225 00a8  W..R..V..Q..b%..
 00128e00: 26e0 0a00 6d0a 8823 b218 0282 a0ae 8abb  &...m..#........
 00128e10: 4804 81e8 ff80 bbb0 4bbb 4824 a1e7 ffe0  H.......K.H$....
 00128e20: 0400 ad06 4225 0048 34e0 0400 4213 02a2  ....B%.H4...B...
@@ -76029,18 +76029,18 @@
 00128fc0: 5504 c020 003d f03d f03d f03d f092 1d02  U.. .=.=.=.=....
 00128fd0: 97b8 0582 5d02 c020 0081 f2ff e008 002d  ....].. .......-
 00128fe0: 0a1d f000 a83b 0440 3641 0081 4ff5 3030  .....;[email protected]
 00128ff0: f4ad 0320 20f4 4040 7488 0882 2843 e008  ...  .@@t...(C..
 00129000: 0007 6a1b 816f ff80 82a0 8808 8208 a366  ..j..o.........f
 00129010: 780d 0cf8 9205 0187 9905 20a0 74a5 0100  x......... .t...
 00129020: dd05 cd04 bd03 ad02 81ef ffe0 0800 2d0a  ..............-.
-00129030: 1df0 0000 c07e fc3f 3641 0020 2074 0ca8  .....~.?6A.  t..
+00129030: 1df0 0000 e099 fc3f 3641 0020 2074 0ca8  .......?6A.  t..
 00129040: 2738 1e91 fcff 2083 418a 8920 2024 0c19  '8.... .A..  $..
 00129050: 0012 4000 29a1 9208 0090 2220 2248 00c0  ..@.)....." "H..
-00129060: 2000 1df0 0c7f fc3f 3641 0031 28f5 8803   ......?6A.1(...
+00129060: 2000 1df0 2c9a fc3f 3641 0031 28f5 8803   ...,..?6A.1(...
 00129070: a828 e00a 0038 0381 fbff 3833 2908 e003  .(...8....83)...
 00129080: 001d f000 0080 ffff ca00 fb3f 3641 00a2  ...........?6A..
 00129090: 2213 f0aa 1192 2212 9a8a f769 1090 90d4  "....."....i....
 001290a0: b089 1190 88c0 9088 a080 88a0 aa88 0cd9  ................
 001290b0: 8739 010c e8a2 1236 b2af 6ab0 9a11 a099  .9.....6..j.....
 001290c0: c0a0 99a0 a212 2990 99a0 1baa 90aa 82ba  ......).........
 001290d0: aaa7 3804 ba99 3089 8331 3edf 8090 f487  ..8...0..1>.....
@@ -76106,15 +76106,15 @@
 00129490: 0272 0c9a 0c18 978a 6592 122a b679 5fb2  .r......e..*.y_.
 001294a0: 1234 d18d ffdc 438b abd0 aa90 c21a 06b6  .4....C.........
 001294b0: 2c0a 0bcc c25a 06c0 2000 4610 0082 1236  ,....Z.. .F....6
 001294c0: 1c42 0c3a 87b2 2022 c8eb 2020 f41c 3c0c  .B.:.. "..  ..<.
 001294d0: 2a27 bc13 82c8 d780 80f4 2c72 a2a0 0187  *'........,r....
 001294e0: b202 a2a0 00a0 a074 d0bb 9022 1b04 0c18  .......t..."....
 001294f0: 2099 c090 90f4 973a 0282 a000 8080 742d   ......:......t-
-00129500: 081d f000 6c97 fb3f fa03 fb3f ec7e fc3f  ....l..?...?.~.?
+00129500: 081d f000 6c97 fb3f fa03 fb3f 0c9a fc3f  ....l..?...?...?
 00129510: 5404 fb3f 4e04 fb3f 0f00 0080 00c0 0000  T..?N..?........
 00129520: 860b 423f 900b 423f 5204 fb3f 0001 fb3f  ..B?..B?R..?...?
 00129530: ca0b 423f d000 fb3f dc0b 423f e468 0440  ..B?...?..B?.h.@
 00129540: 3681 0031 d2f6 4203 0632 a0ff 3794 0286  6..1..B..2..7...
 00129550: 2601 d034 110c 1461 cef6 0013 4000 34a1  &[email protected].
 00129560: 7cf4 3044 30c0 2000 5226 0050 4410 3034  |.0D0. .R&.PD.04
 00129570: 20c0 2000 3266 0016 6241 ad02 72c2 283d   . .2f..bA..r.(=
@@ -76185,21 +76185,21 @@
 00129980: 3df0 3df0 e8a2 d822 a1ec fe81 f0dd e008  =.=...."........
 00129990: 0031 bef5 2203 0632 a0ff 3712 52d0 2211  .1.."..2..7.R.".
 001299a0: 7ce4 51bb f500 1240 4024 81c0 2000 3805  |.Q....@@$.. .8.
 001299b0: 3022 10c0 2000 2905 1df0 4822 3222 1e40  0".. .)...H"2".@
 001299c0: 33c0 3030 f40c 1430 3483 41cf fec0 2000  3.00...04.A... .
 001299d0: 3254 00c0 2000 86f8 fe0c 0bad 07c9 51e5  2T.. .........Q.
 001299e0: aaff c851 168a f586 cdff 0000 0056 92b8  ...Q.........V..
-001299f0: 1df0 0000 ce7e fc3f 3641 0081 feff 2020  .....~.?6A....  
+001299f0: 1df0 0000 ee99 fc3f 3641 0081 feff 2020  .......?6A....  
 00129a00: f420 2290 2a28 0c08 8242 0082 4201 8242  . ".*(...B..B..B
 00129a10: 02c0 2000 1df0 0000 0a01 fb3f 0c01 fb3f  .. ........?...?
-00129a20: f07e fc3f 1c12 f73f 0801 fb3f c005 fb3f  .~.?...?...?...?
-00129a30: c800 fb3f 007f fc3f 0e01 fb3f 00a0 ffff  ...?...?...?....
+00129a20: 109a fc3f 1c12 f73f 0801 fb3f c005 fb3f  ...?...?...?...?
+00129a30: c800 fb3f 209a fc3f 0e01 fb3f 00a0 ffff  ...? ..?...?....
 00129a40: 3108 0000 0e0c 423f 1897 fb3f fd08 0000  1.....B?...?....
-00129a50: 0700 0080 4c09 fb3f 3880 fc3f 2c69 0440  ....L..?8..?,i.@
+00129a50: 0700 0080 4c09 fb3f 589b fc3f 2c69 0440  ....L..?X..?,i.@
 00129a60: 3641 0042 1248 0c95 4084 90c0 3811 8083  [email protected]...
 00129a70: c031 e9ff f088 113a 3892 1300 31e8 ff3a  .1.....:8...1..:
 00129a80: 8832 1800 3088 7490 3874 3a38 3030 7457  .2..0.t.8t:800tW
 00129a90: 9413 4202 9a67 e40d 41e2 ff52 0400 8c45  ..B..g..A..R...E
 00129aa0: 8834 1b88 8934 3df0 3df0 3df0 3df0 4202  .4...4=.=.=.=.B.
 00129ab0: 9726 1402 0628 000c 7b2c fa41 abfd 5804  .&...(..{,.A..X.
 00129ac0: 419a f248 0442 244a e004 0065 f4fc 4102  A..H.B$J...e..A.
@@ -76460,15 +76460,15 @@
 0012aab0: 4805 4022 10c0 2000 2905 0c02 271a 690c  H.@".. .)...'.i.
 0012aac0: 133d f03d f022 079a 2024 0430 2230 1df0  .=.=.".. $.0"0..
 0012aad0: 0000 81e2 fbe0 0800 3227 1e30 4ac0 216f  ........2'.0J.!o
 0012aae0: ee20 4410 618d eea9 2739 3747 b602 864b  . D.a...'97G...K
 0012aaf0: fdc6 e5ff 212b fd22 0200 b042 1120 44c0  ....!+."...B. D.
 0012ab00: 2044 a031 28fd d044 1130 24b2 2038 2140   D.1(..D.0$. 8!@
 0012ab10: 2f31 2023 c020 2074 8c12 8644 fd86 4afd  /1 #.  t...D..J.
-0012ab20: 2714 02c6 4cfe c648 fe1d f000 8c80 fc3f  '...L..H.......?
+0012ab20: 2714 02c6 4cfe c648 fe1d f000 ac9b fc3f  '...L..H.......?
 0012ab30: 3641 0020 20f4 6692 0721 fcff 8812 0607  6A.  .f..!......
 0012ab40: 000c 9887 9209 21f9 ff88 02c6 0300 0000  ......!.........
 0012ab50: 819c f880 22a0 8802 0c52 8c78 8848 0c52  ...."....R.x.H.R
 0012ab60: 8c18 2208 971d f000 3641 0081 7ff9 8604  ..".....6A......
 0012ab70: 0092 1848 2799 0c92 0896 1b99 9248 96c0  ...H'........H..
 0012ab80: 2000 1df0 8808 5678 fe1d f000 3641 004d   .....Vx....6A.M
 0012ab90: 0238 020c 0251 5dee 060e 0000 0068 05a8  .8...Q]......h..
@@ -76482,17 +76482,17 @@
 0012ac10: 0800 aaa3 a030 743a 4440 4074 16a4 0582  .....0t:D@@t....
 0012ac20: 0264 8a33 3030 74a2 1234 81ef ffe0 0800  .d.300t..4......
 0012ac30: a713 2041 d9ec 4804 a624 18a2 1234 81ea  .. A..H..$...4..
 0012ac40: ffe0 0800 cd0a dd03 b1e5 ffa1 e5ff 813f  ...............?
 0012ac50: d9e0 0800 312f ee38 0332 d308 4223 1132  ....1/.8.2..B#.2
 0012ac60: 1234 ad03 81e1 ffe0 0800 bd0a 30a3 200c  .4..........0. .
 0012ac70: 03e0 0400 3242 64c0 2000 ad02 81dc ffe0  ....2Bd. .......
-0012ac80: 0800 1df0 117f fc3f 3641 0081 feff 2208  .......?6A....".
+0012ac80: 0800 1df0 319a fc3f 3641 0081 feff 2208  ....1..?6A....".
 0012ac90: 001d f000 3641 0081 fbff 2248 00c0 2000  ....6A...."H.. .
-0012aca0: 1df0 0000 107f fc3f 3641 0081 feff 2208  .......?6A....".
+0012aca0: 1df0 0000 309a fc3f 3641 0081 feff 2208  ....0..?6A....".
 0012acb0: 001d f000 3641 0081 fbff 2248 00c0 2000  ....6A...."H.. .
 0012acc0: 1df0 0000 3661 0052 1234 0c63 8045 1130  ....6a.R.4.c.E.0
 0012acd0: 4420 4040 f471 14ee ad04 3807 3223 43e0  D @@.q....8.2#C.
 0012ace0: 0300 3d0a 17ea 0286 3300 6135 f8e0 5511  ..=.....3.a5..U.
 0012acf0: 5a86 5901 3df0 3df0 3df0 3df0 5808 8205  Z.Y.=.=.=.=.X...
 0012ad00: a482 c8f4 8080 74b6 2802 c62a 0088 c2c6  ......t.(..*....
 0012ad10: 2800 0000 a218 0291 45fb 902a b022 1200  (.......E..*."..
@@ -76685,15 +76685,15 @@
 0012b8c0: 82d8 0582 08c8 8088 9091 e4ff 9088 a091  ................
 0012b8d0: e4ff c020 0082 6900 9000 0000 3641 0081  ... ..i.....6A..
 0012b8e0: 2ed5 92a0 08c0 2000 a228 0090 9a20 c020  ...... ..(... . 
 0012b8f0: 0092 6800 7c79 3df0 3df0 3df0 c020 00a8  ..h.|y=.=.=.. ..
 0012b900: 0890 9a10 c020 0099 08e5 4b0f a1c3 ffc0  ..... ....K.....
 0012b910: 2000 880a 8090 e481 d5f3 8089 20c0 2000   ........... . .
 0012b920: 890a 1df0 1012 f73f 6012 f73f 0080 0000  .......?`..?....
-0012b930: 347f fc3f ee42 fc3f 0000 0100 e442 fc3f  4..?.B.?.....B.?
+0012b930: 549a fc3f ee42 fc3f 0000 0100 e442 fc3f  T..?.B.?.....B.?
 0012b940: 0080 0100 da42 fc3f 0020 0000 d142 fc3f  .....B.?. ...B.?
 0012b950: 0000 0200 c742 fc3f c042 fc3f b842 fc3f  .....B.?.B.?.B.?
 0012b960: b042 fc3f aa42 fc3f a342 fc3f 9c42 fc3f  .B.?.B.?.B.?.B.?
 0012b970: a812 423f 3641 0041 0ff5 32a0 8042 d405  ..B?6A.A..2..B..
 0012b980: 51e9 ffc0 2000 2805 cc12 060d 0237 0277  Q... .(......7.w
 0012b990: 62a0 ff51 beed 8205 0367 1820 d088 1100  b..Q.....g. ....
 0012b9a0: 1840 0083 a191 baed 7cf6 8066 30c0 2000  .@......|..f0. .
@@ -76851,15 +76851,15 @@
 0012c320: d3c0 2000 a808 90aa 1091 5aef 909a 20c0  .. .......Z... .
 0012c330: 2000 9908 3df0 3df0 3df0 3df0 c020 0028   ...=.=.=.=.. .(
 0012c340: 0896 f2fe 2173 e806 0300 8802 0c1a 82d8  ....!s..........
 0012c350: 0682 2812 e008 00a5 02fc 16ca fea1 caec  ..(.............
 0012c360: a2da 0182 0aaa 8088 f0b1 0df0 910e f090  ................
 0012c370: 8890 8080 f4c0 2000 c80b 9142 f390 9c10  ...... ....B....
 0012c380: 9088 20c0 2000 890b 1df0 0000 1010 f73f  .. . ..........?
-0012c390: 6010 f73f 847f fc3f 1a43 fc3f 1343 fc3f  `..?...?.C.?.C.?
+0012c390: 6010 f73f a49a fc3f 1a43 fc3f 1343 fc3f  `..?...?.C.?.C.?
 0012c3a0: 0d43 fc3f 0843 fc3f 0043 fc3f 0000 0800  .C.?.C.?.C.?....
 0012c3b0: f742 fc3f 3641 0021 35eb 32a0 ff42 0202  .B.?6A.!5.2..B..
 0012c3c0: 3714 25d0 3411 0c24 6132 eb00 1340 0034  7.%[email protected]
 0012c3d0: a142 afff 3044 30c0 2000 5226 0050 4410  .B..0D0. .R&.PD.
 0012c3e0: 3034 20c0 2000 3266 0042 a200 3df0 3df0  04 . .2f.B..=.=.
 0012c3f0: 3df0 5170 f252 d505 61e5 ffc0 2000 3806  =.Qp.R..a... .8.
 0012c400: 1603 7547 0377 62a0 ff82 0200 6718 22d0  ..uG.wb.....g.".
@@ -76978,39 +76978,39 @@
 0012cb10: 6798 2361 20fe 3226 131b 3332 6613 3df0  g.#a .2&..32f.=.
 0012cb20: 3df0 3df0 3df0 311c e538 03a1 21fe a623  =.=.=.1..8..!..#
 0012cb30: 02c6 b1ff 86b2 ffc0 2000 a803 d2a1 7d0c  ........ .....}.
 0012cb40: 0b31 72e6 3223 00c1 a1fd 3223 06e0 0300  .1r.2#....2#....
 0012cb50: 0629 fe00 3202 0222 a0ff 2713 1fd0 2311  .)..2.."..'...#.
 0012cb60: 0c23 514b e900 1240 0033 a17c f230 2230  .#[email protected].|.0"0
 0012cb70: c020 0048 0540 2210 c020 0029 051d f000  . .H.@".. .)....
-0012cb80: 387e fc3f 3641 0021 c2e8 8222 0026 2814  8~.?6A.!...".&(.
+0012cb80: 5899 fc3f 3641 0021 c2e8 8222 0026 2814  X..?6A.!...".&(.
 0012cb90: 92a0 0181 fbff 9248 00c0 2000 e50d 0007  .......H.. .....
 0012cba0: 6a02 25cc fe92 a0ff 8139 e982 0801 9718  j.%......9......
 0012cbb0: 1ad0 8811 7cea b136 e900 1840 a08a 81c0  ....|..6...@....
 0012cbc0: 2000 980b 9088 10c0 2000 890b 0c38 0c1a   ....... ....8..
 0012cbd0: 8902 3df0 3df0 3df0 3df0 2153 e628 0222  ..=.=.=.=.!S.(."
 0012cbe0: 225d e002 0021 4ae6 2222 0022 d20b 2222  "]...!J.""."..""
 0012cbf0: 21e0 0200 1df0 0000 cc8b fb3f 3641 0021  !..........?6A.!
 0012cc00: feff 2212 0007 6244 2142 e622 2200 22d2  .."...bD!B."".".
 0012cc10: 0b22 2222 e002 00a2 a004 2143 e682 2200  ."""......!C..".
 0012cc20: 8228 22e0 0800 0c1a 8802 8228 5fe0 0800  .("........(_...
 0012cc30: 0c49 2802 8197 e822 221e 9908 e002 0025  .I(....""......%
 0012cc40: 0200 176a 0225 22fa 0c3a 2506 001d f000  ...j.%"..:%.....
-0012cc50: 3641 0081 8fe8 2208 001d f000 e47f fc3f  6A...."........?
-0012cc60: 3641 0081 feff 2808 1df0 0000 e87f fc3f  6A....(........?
-0012cc70: 3641 0021 feff 1df0 e27f fc3f 3641 0081  6A.!.......?6A..
-0012cc80: feff 2208 001d f000 e17f fc3f 3641 0081  .."........?6A..
-0012cc90: feff 2208 001d f000 e07f fc3f 3641 0081  .."........?6A..
-0012cca0: feff 2208 001d f000 1880 fc3f 3661 000c  .."........?6a..
+0012cc50: 3641 0081 8fe8 2208 001d f000 049b fc3f  6A...."........?
+0012cc60: 3641 0081 feff 2808 1df0 0000 089b fc3f  6A....(........?
+0012cc70: 3641 0021 feff 1df0 029b fc3f 3641 0081  6A.!.......?6A..
+0012cc80: feff 2208 001d f000 019b fc3f 3641 0081  .."........?6A..
+0012cc90: feff 2208 001d f000 009b fc3f 3641 0081  .."........?6A..
+0012cca0: feff 2208 001d f000 389b fc3f 3661 000c  ..".....8..?6a..
 0012ccb0: 034d 0239 210c d87c f247 3830 8bc1 4901  .M.9!..|.G80..I.
 0012ccc0: bd01 3df0 3df0 3df0 419a e481 f7ff 2804  ..=.=.=.A.....(.
 0012ccd0: a808 2222 1439 11e0 0200 0c12 279a 0d2d  .."".9......'..-
 0012cce0: 0338 2127 1306 3804 3863 e003 001d f000  .8!'..8.8c......
 0012ccf0: 3641 00e5 f6ff 818e e4b2 a007 a0a2 0482  6A..............
-0012cd00: 2800 8228 1ae0 0800 9000 0000 2c80 fc3f  (..(........,..?
+0012cd00: 2800 8228 1ae0 0800 9000 0000 4c9b fc3f  (..(........L..?
 0012cd10: 1713 423f 1e13 423f 3641 0021 fcff 2802  ..B?..B?6A.!..(.
 0012cd20: a862 16aa 05c8 7216 5c05 32d2 0482 2336  .b....r.\.2...#6
 0012cd30: c738 30b2 2337 bab2 b2cb 2848 4258 5281  .80.#7....(HBXR.
 0012cd40: e4cf e008 0098 7282 2337 9a88 2223 3690  ......r.#7.."#6.
 0012cd50: 22c0 8263 3722 6336 ac44 0c0b ad05 e004  "..c7"c6.D......
 0012cd60: 001d f000 9c88 218c e428 02a6 120e c2a0  ......!..(......
 0012cd70: 86b1 e7ff a1e8 ff81 f5d0 e008 0006 ffff  ................
@@ -81911,92 +81911,92 @@
 0013ff60: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0013ff70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0013ff80: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0013ff90: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0013ffa0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0013ffb0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 0013ffc0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
-0013ffd0: 0000 0000 0000 0000 0000 0000 0000 0026  ...............&
-0013ffe0: 8b62 1e63 0cd7 a006 ae70 8e84 cee0 7ca7  .b.c.....p....|.
-0013fff0: 7eb2 a3e4 a8e8 deaa 934e 83af e811 45c5  ~........N....E.
-00140000: e702 0000 c0ea cf72 54a5 4ce5 006b 1c17  .......rT.L..k..
-00140010: 5ef8 5365 60ac f195 75fa 92c0 13e5 2202  ^.Se`...u.....".
-00140020: 89a0 e1ae 4fe0 c1fc f6b3 5755 1848 ba39  ....O.....WU.H.9
-00140030: 5a4a dd66 5657 9401 97d7 74a6 b293 1776  ZJ.fVW....t....v
-00140040: d8b3 ae10 2722 94fb 2f3d 6975 bc1c ce35  ....'"../=iu...5
-00140050: 7be3 2ddc b54c 213a b80e 9664 48cd c978  {.-..L!:...dH..x
-00140060: 632c 5dcf 0d59 3f26 ec41 65d5 8dbf d986  c,]..Y?&.Ae.....
-00140070: 0b9b 2441 8f6c 0f34 8d05 9ac4 a885 99d1  ..$A.l.4........
-00140080: ad4f f758 858f 0909 459a 2a0c b22e 275f  .O.X....E.*...'_
-00140090: 84de 69e3 ad53 2f7d ad05 db07 f834 ffa5  ..i..S/}.....4..
-001400a0: 4de7 c8d0 29c4 cccf 9005 0ca1 6862 5989  M...).......hbY.
-001400b0: 3e2a 938b a0c5 1bcd 8812 490d 4a67 1a17  >*........I.Jg..
-001400c0: 8759 7cec 0f46 bbe9 8d0f 1939 5547 6f7a  .Y|..F.....9UGoz
-001400d0: 6e5c a581 17f2 beb7 ee7b 1715 1277 b9d7  n\.......{...w..
-001400e0: 9913 322b c7ba 8312 65e4 42d2 aea7 b82c  ..2+....e.B....,
-001400f0: 17d8 c23d 3a38 ea8f 66cc 8873 2831 7b47  ...=:8..f..s(1{G
-00140100: d0f7 09d2 5407 02f8 639a 4d9a 69b6 f886  ....T...c.M.i...
-00140110: 6ac0 71a0 2296 ceb3 6d6f 135e 92f7 46c8  j.q."...mo.^..F.
-00140120: 44c3 b4c4 6d4d ef4f 2eeb 0c37 0fd7 64cc  D...mM.O...7..d.
-00140130: 3120 cdf7 b6cd 1499 561e 11fc 7be5 c686  1 ......V...{...
-00140140: 2fc9 1bb1 3971 a1ac e698 78ce 957a 9b5e  /...9q....x..z.^
-00140150: 6acc eb52 f647 b3fc d0f0 630c 6dba 5096  j..R.G....c.m.P.
-00140160: 5fa9 6d38 76f2 3e47 5d69 e600 3c07 fc40  _.m8v.>G]i..<..@
-00140170: 74cc 0905 e5ec dc05 12b2 4def 1560 562b  t.........M..`V+
-00140180: 77a8 7705 b0da 5b88 5f65 398f a8c3 a66c  w.w...[._e9....l
-00140190: 073c 4e37 c68d ccb5 ed12 13c1 d482 5331  .<N7..........S1
-001401a0: 600c 0bd7 0100 0100 1538 3ccd f9d1 742d  `........8<...t-
-001401b0: dab7 6317 6fdb 4b47 f83d 7676 8d23 353b  ..c.o.KG.=vv.#5;
-001401c0: 97cf 8aba 5b73 26c7 15f7 7390 197a 10e4  ....[s&...s..z..
-001401d0: 0b1b 8f94 4154 bc70 7588 d988 1754 a38a  ....AT.pu....T..
-001401e0: 3347 a8e5 7202 67ec 805a cd4f ee74 e20e  3G..r.g..Z.O.t..
-001401f0: 3e1d e47d ba13 40f5 8ed9 4e4e 934b 963b  >..}[email protected].;
-00140200: 31c4 e861 23f4 fb5a f708 66c7 6b1e 20c1  1..a#..Z..f.k. .
-00140210: 69b6 ad49 293f 83fd ab28 370c ff02 d37e  i..I)?...(7....~
-00140220: 15ab 8a1e 06f9 b606 0892 3ef2 2715 9c83  ..........>.'...
-00140230: 5ca4 5fb9 8f7d 5751 618e 1a0a 5e7b ed3c  \._..}WQa...^{.<
-00140240: df5a c96c 94c0 2787 0704 c2a1 b857 b569  .Z.l..'......W.i
-00140250: 34ea 6b71 010e 11aa 89ad 3804 679e b5ac  4.kq......8.g...
-00140260: e027 ea9d 9d5c f33c 652b db1a 7cc4 bd73  .'...\.<e+..|..s
-00140270: 5ed1 ea10 7355 d69d b361 bec3 0c9e 4266  ^...sU...a....Bf
-00140280: 78e6 f39c 5365 09eb 0790 30c1 2082 1ff0  x...Se....0. ...
-00140290: f338 966f ad21 c273 3c5a 79df 8d3d b06f  .8.o.!.s<Zy..=.o
-001402a0: b5ed 809d 76d7 2ed4 0260 1fe3 657e 0c81  ....v....`..e~..
-001402b0: 642e 74ec da14 0b2b 38f6 443d 90e2 5c22  d.t....+8.D=..\"
-001402c0: be2e e249 f75d 76ef 9f14 20ca 1f8c ccc2  ...I.]v... .....
-001402d0: d09c 4120 0101 5a63 e12f c07b 7954 edb3  ..A ..Zc./.{yT..
-001402e0: 95d6 a541 822c 4630 c0b7 7f20 d649 fca0  ...A.,F0... .I..
-001402f0: 4304 f91a a7e7 6b55 5e78 f182 a637 1f7a  C.....kU^x...7.z
-00140300: 4eb7 2bac 3d18 f812 62c3 109f 7b38 e6ff  N.+.=...b...{8..
-00140310: 452f 7079 dfae 5ea9 e329 72f9 9f69 c4d4  E/py..^..)r..i..
-00140320: 4e42 bb08 5511 f816 51c9 569d 7612 7836  NB..U...Q.V.v.x6
-00140330: 86df 7b42 b8d5 5bc1 aec4 0bf9 3512 19a6  ..{B..[.....5...
-00140340: 4fbc 3609 af52 07fa 8d0b d4d4 61c7 6d53  O.6..R......a.mS
-00140350: 7389 772f 42cc 3a43 1dbd d3d3 d1b8 0ec0  s.w/B.:C........
-00140360: b1d5 206b 9cf8 6cd3 6888 cd99 2ab9 9f1e  .. k..l.h...*...
-00140370: 3c27 e0e4 07b1 d852 c139 5763 dbbb 5117  <'.....R.9Wc..Q.
-00140380: 81bc 169a c559 b215 1ec8 effc 36d9 3cb0  .....Y......6.<.
-00140390: 0055 5e49 792c 9d08 eec7 eddd a270 8ebc  .U^Iy,.......p..
-001403a0: 9d85 956c 8969 8354 955c b04d 78fd 8c4f  ...l.i.T.\.Mx..O
-001403b0: 2d90 44c6 9ba7 fc1e 5fa8 6cd2 4395 cce0  -.D....._.l.C...
-001403c0: 8522 6d23 92ea fa12 1cad 7820 9431 6f6e  ."m#......x .1on
-001403d0: 419f 437f 4d29 e5e7 3d6b ce6c f159 20c0  A.C.M)..=k.l.Y .
-001403e0: 0387 b26d c587 daf3 2f55 8a8e 5df3 8990  ...m..../U..]...
-001403f0: 6b3d 5826 b769 9e2a b964 8214 820c 7a4c  k=X&.i.*.d....zL
-00140400: ca7d 554a 5a7d c64d 8d34 32b3 532a 1961  .}UJZ}.M.42.S*.a
-00140410: e200 cd3a 24ae 908f 2f46 0ac0 c8f9 6109  ...:$.../F....a.
-00140420: 08eb 88f2 df18 1f00 66aa e72b ca5a 6d3a  ........f..+.Zm:
-00140430: 55b1 6bd5 c8b4 2491 51fe e4d1 061b 4ccc  U.k...$.Q.....L.
-00140440: d7cc aed2 39b5 fb5a a292 d301 bd48 1e59  ....9..Z.....H.Y
-00140450: f89e 5aa6 0d01 d7a5 680a ffb7 7bf5 f782  ..Z.....h...{...
-00140460: 793a 107f 2082 3ef3 d29e 5d25 2656 9619  y:.. .>...]%&V..
-00140470: 6a77 fde0 ca74 8fc0 6e83 9df2 a08b c8a2  jw...t..n.......
-00140480: c9e5 cecf 6dce 4935 f9a9 6a0a b619 aba4  ....m.I5..j.....
-00140490: d724 3d99 8b3c e7d5 0006 1fee 0521 459d  .$=..<.......!E.
-001404a0: bb75 8e52 81aa 4464 1d7a 6ec1 bcda 90bc  .u.R..Dd.zn.....
+0013ffd0: 0000 0000 0000 0000 0000 0000 0000 00a3  ................
+0013ffe0: 96f6 4a52 25e0 53a1 09e3 72e3 3c80 a164  ..JR%.S...r.<..d
+0013fff0: e26e d5a8 5083 e820 ccc3 72fb 27a5 fa60  .n..P.. ..r.'..`
+00140000: e702 0000 288a 1918 43b9 e8e0 93aa e6cc  ....(...C.......
+00140010: 3769 4bba a1c5 dbfa d644 033d 60b6 0fbd  7iK......D.=`...
+00140020: fa2a a416 2f1d 5fa4 a018 a49a d321 d9cd  .*../._......!..
+00140030: b0f8 b4d0 e123 a8ef 9a5e 14be 9b65 8fc6  .....#...^...e..
+00140040: dbc9 8d91 0b30 7452 11b9 7351 40ca 003c  .....0tR..sQ@..<
+00140050: fac1 f5d3 8a67 2397 5e2d 2025 89ec 1ff1  .....g#.^- %....
+00140060: 72a8 347f b0f1 26e7 ed72 9030 765c 7cc1  r.4...&..r.0v\|.
+00140070: db95 85f9 4126 62b8 bcbf d0c4 6b5a 9296  ....A&b.....kZ..
+00140080: bab2 c072 be52 af50 51b4 833c 46c9 517f  ...r.R.PQ..<F.Q.
+00140090: 9bd5 9ac3 7ec6 e894 bde3 fc1e 0915 233f  ....~.........#?
+001400a0: 2fa4 1a92 4e26 b16a 8528 ff4e 6f6c 9675  /...N&.j.(.Nol.u
+001400b0: a132 dbdd b464 dfd7 59d7 81b5 5827 a1e2  .2...d..Y...X'..
+001400c0: b2fb 2e78 0c6c 45e9 2b67 b2ed 4ab9 0e02  ...x.lE.+g..J...
+001400d0: 9acd 3a08 d0f2 625b 8082 d46b a272 a97d  ..:...b[...k.r.}
+001400e0: 12aa 54a0 764b a36d d71b fdf8 def7 1de3  ..T.vK.m........
+001400f0: 53c8 cf70 621a 4d83 97ce c126 105c 2ede  S..pb.M....&.\..
+00140100: 8753 d5ae 1760 43bc 1cc5 24c2 ecbe abc1  .S...`C...$.....
+00140110: 844e d3f6 1d2c 41b1 548e d9c1 8250 cbc6  .N...,A.T....P..
+00140120: 6f48 d8d5 217d ad18 c408 d04b f06f 5199  oH..!}.....K.oQ.
+00140130: 7912 71ea cc63 125a c19d d68b a799 069e  y.q..c.Z........
+00140140: 562d f756 9d2e 53f1 82d6 73e0 5456 e5dc  V-.V..S...s.TV..
+00140150: 1591 ef2e e87e 995b 9b9b e28f ed31 a9cb  .....~.[.....1..
+00140160: d031 fef5 30e6 e642 1f9e 67ac 7ed6 5962  .1..0..B..g.~.Yb
+00140170: 12cb 3cf7 cbcb 1bc3 6e6d 4977 cce7 b43a  ..<.....nmIw...:
+00140180: 1926 ad9a 0e53 8b12 aba8 1952 79a8 c65e  .&...S.....Ry..^
+00140190: 350e c438 e430 6f49 9273 dcb9 e74a 05df  5..8.0oI.s...J..
+001401a0: 3c5f eea3 0100 0100 457f eea2 34ee 9530  <_......E...4..0
+001401b0: 9b03 c83f caac 8cd3 e428 83f8 c93b 0698  ...?.....(...;..
+001401c0: 38a8 2a1c e3f7 aa58 4e46 4ea4 7aac 0c76  8.*....XNFN.z..v
+001401d0: 5b62 4ed0 0253 9502 5fc1 93a8 4029 39c9  [bN..S.._...@)9.
+001401e0: c284 2481 5ab1 ae0a 09c0 d802 9898 12f6  ..$.Z...........
+001401f0: 14dc c4c3 791f aa9d cc1a 2f44 3147 a617  ....y...../D1G..
+00140200: 0f52 816b be21 a4df dfe4 201a d800 4a87  .R.k.!.... ...J.
+00140210: 7e52 2566 26b3 08b4 b23a e262 8324 7f80  ~R%f&....:.b.$..
+00140220: 2111 3cc3 5f88 e1df 1484 09de 9e5a bb35  !.<._........Z.5
+00140230: 5338 c37a 43f8 4793 b86e c443 e9cf dddc  S8.zC.G..n.C....
+00140240: 1e8a a5bd 30b7 2d16 3601 a6e1 d233 b46e  ....0.-.6....3.n
+00140250: c1c2 f928 9bc7 3099 9665 833b eeda 18c3  ...(..0..e.;....
+00140260: 7852 d7c0 ed0a e3c3 f4b4 b180 43e1 15e5  xR..........C...
+00140270: b437 96e0 871a 646d b798 7126 9e81 d63a  .7....dm..q&...:
+00140280: 97f4 9e44 1769 f435 9eb9 1f71 680b 7058  ...D.i.5...qh.pX
+00140290: 9a1f ed01 3236 d4f1 673b dd44 cf97 edc0  ....26..g;.D....
+001402a0: 49ce d04e 2f27 e9d5 6cb6 b3a1 4247 2200  I..N/'..l...BG".
+001402b0: dcb0 024c 52c7 c4f0 1a92 14b7 f191 0494  ...LR...........
+001402c0: 8e20 41df cd2f 7d56 fa3f 7222 624a da3f  . A../}V.?r"bJ.?
+001402d0: 79b0 8521 6a9e a8ee caff 65b4 e8d3 8c8b  y..!j.....e.....
+001402e0: 18fe 618e 4510 a101 9708 2601 1513 ccfb  ..a.E.....&.....
+001402f0: cce6 49cf 5c0f 41e3 9417 43d0 eb82 7847  ..I.\.A...C...xG
+00140300: 69c6 5414 9d06 311c 4ab9 0e9e a757 0ad9  i.T...1.J....W..
+00140310: b45d f785 ad6e d44d 69a3 976a 3a92 afda  .]...n.Mi..j:...
+00140320: 4fac 422c 40cc b05b 31b6 b47a 90da e9b5  O.B,@..[1..z....
+00140330: f33e 9583 f0a1 fbef a6b7 ec0e 15aa 2326  .>............#&
+00140340: 17aa caa2 5166 ee61 d6c5 c267 4ef4 a1aa  ....Qf.a...gN...
+00140350: 6327 e70a 0c05 5c5e 90d3 1fb2 e4e7 e809  c'....\^........
+00140360: 736e 7ce5 df56 3a56 d406 dfd1 0b8c eda1  sn|..V:V........
+00140370: acd9 8da8 d92b f915 b41a 424f 471e ef13  .....+....BOG...
+00140380: dc3e 1a6a 274c b464 2791 2399 8406 dc82  .>.j'L.d'.#.....
+00140390: 427c d2be 339a 79a6 24ab 55cd 68cb 1d2b  B|..3.y.$.U.h..+
+001403a0: 3a97 a2d5 c164 9338 2113 1915 339c 8f90  :....d.8!...3...
+001403b0: 0815 2249 c59d 7e54 563c 827f 7e8e 1f02  .."I..~TV<..~...
+001403c0: 9c71 8659 6edf 2206 55a1 bd66 11a9 3555  .q.Yn.".U..f..5U
+001403d0: 38b1 b2d9 f29f 99a2 a287 6902 587d bc93  8.........i.X}..
+001403e0: 8f12 5419 1131 a463 ea99 74f4 bd81 fb38  ..T..1.c..t....8
+001403f0: 0839 286c fe3c 7754 83af dcae 488e c02b  .9(l.<wT....H..+
+00140400: 4e9e 815b 0c9a 5b43 b51a f6c0 d9af 3874  N..[..[C......8t
+00140410: c912 f5be 352b c7ed 2bad d9fe 27ea 0c82  ....5+..+...'...
+00140420: 08d5 b0b2 4486 b637 90c5 d91d 2698 b646  ....D..7....&..F
+00140430: 0c55 2b98 05c2 8ba5 5060 8fa5 5c4a 0e11  .U+.....P`..\J..
+00140440: 614a 530b ee59 abd7 4198 db17 b65e be91  aJS..Y..A....^..
+00140450: 92f1 663d 53f0 fe8d 984c 0717 de9e 262b  ..f=S....L....&+
+00140460: 8a5f f9a1 a7ed 6252 59ff 91b3 dfd1 b592  ._....bRY.......
+00140470: 284b 2075 0b00 d595 d4ac b8e8 3806 43d8  (K u........8.C.
+00140480: 8025 a176 48d9 cb77 daa9 0d55 cacd cd96  .%.vH..w...U....
+00140490: 136c 242d f451 f6b3 7f64 b88a fe91 f295  .l$-.Q...d......
+001404a0: 6b35 1347 9e3f 276f 556c c098 7d06 fe17  k5.G.?'oUl..}...
 001404b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
 001404c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
 001404d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
 001404e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
 001404f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
 00140500: ffff ffff ffff ffff ffff ffff ffff ffff  ................
 00140510: ffff ffff ffff ffff ffff ffff ffff ffff  ................

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

Jade fw 0.1.32 is now available. This supports passing/verifying the sha256 hash of the compressed fw file. (Atm this hash is optional (so as not to break existing clients), but if passed must be correct or the OTA will fail. The blockstream apps will be updated to pass this hash. In a future fw release it will be made a mandatory parameter.)

I am wondering where you are in this process and if the companion app will indefinitely tell the jade the expected hash or if that could be removed. My gut tells me there must be an extended threat level if the companion app tells the Jade which hash is expected as this would allow a compromised Jade to show the correct hash while updating to an again compromised binary.

In how far this is worse than a compromised Jade patching any legitimate update into being compromised, too, I'm not sure but I suspect telling the HWW this hash not being necessary can in doubt only be bad for security.

That said, I know how this was probably a convenient shortcut and I'm not convinced it would improve the security if it was fixed.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

atm:

a) a hash is now a mandatory parameter to the ota call - the hash btw is now the hash of the final fw image and not the hash of the file - so even if uploading a 'delta' to get you from fw x to fw y, the hash is always the hash of complete fw y.

b) Jade shows the hash to the user to confirm

c) Jade applies the ota data and ensures the final hash matches that shown to the user - if not the ota is aborted before being finalised

Yes - I see your point.
If we did not pass the hash to the Jade up front, we can't show it to user before the fw update begins - we'd have to show just the version numbers ... assuming they agree then they'd do the ota, and at the very end we could show them the hash to confirm. The onus would then be on the user to check that hash against some published list of known hashes [which we need to make available ...]. Althogh ofc even now there is still that onus on the user ... and we still ought to publish a list ...

from jade.

Giszmo avatar Giszmo commented on August 15, 2024

So temporarily copying the firmware file, applying the patch and calculating the hash is not an option? Too slow?

I consider the unconditional display of the hash before the update very important so the provider can't be evil. Most people will just click "next" on this but they would have to assume that more worried users would investigate what that was about or at least take a foto for later inspection. A rogue version - signed by the provider would inevitably be discovered while in a situation where the companion app both controls what binary gets sent to the device and whether a hash gets displayed could evade detection much longer.

Is the patch signed or does the patch produce a signed firmware? Is a downgrade to a potentially vulnerable version possible?

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

So temporarily copying the firmware file, applying the patch and calculating the hash is not an option? Too slow?

So the host app would download the 'current' fw from somewhere (blockstream?), download the patch from somewhere (blockstream?), apply the patch (ie. with a copy of the code as used in jade), then calculate the final fw hash ? As opposed to using the final fw hash it downloaded with the patch (from blockstream) ?

I'm not sure what this is protecting against ?

If we want the display of the hash before the upload, then the only way Jade can get that hash is if the host app tells it.
If Jade calculates and displays the hash, it's got to be after the data has been uploaded to Jade (so Jade can hash it!).

Yes, as of now a hash display is mandatory. See point (a) above.

The patch itself isn't signed, but running-fw(signed) + hash -> new-fw (signed).
ie. the patch would contain diffs to the signature block in the same way it contains diffs to the rest of the binary.

Upgrade and downgrade are the same - signatures must be present and correct - so 'downgrade' to a compromised version is no different to 'upgrade' to a compromised version. upgrade/downgrade are the same - they are just 'change the fw'. Whether the version number goes up or down is not considered important atm.

We do have the ability to prevent downgrades should we ever If we ever discover a particularly serious security issue.

I do see what you mean about the host providing the hash essentially giving a 'good' hash to a potentially compromised fw to display, even if that compromised fw then uploads more compromised fw and ignoring the hash mismatch. But I kinda think once the running fw is compromised, all bets are off. It's all over.

from jade.

Lagrang3 avatar Lagrang3 commented on August 15, 2024

Wouldn't it be just easier to let the user flash the software directly to Jade, similarly to the DIY Jade, for anyone who wishes to verify the integrity of the software; while leaving the option of updates through the companion app (Greenwallet?) for non-tech users.

from jade.

Lagrang3 avatar Lagrang3 commented on August 15, 2024

b) the fw has to be signed by Blockstream (ie. has to be an official fw) for it to boot - again to stop a malicious fw being loaded onto the device

I know that's your security model. But it puts too much trust into Blockstream. We can't verify that the software it's running is the same on the repo, and we cannot check whatever internal ROM fw is doing the signature verification (it could also be doing other things as well).

a) the ability to 'flash' is disabled (otherwise an attacker could sneakily grab your unit, flash on some malicious fw, and put it back in your bag ...)

That kind of attack is adverted if your HW has an internal state. For example: password encrypted seed. If you replace my HW with a malicious one, of course I would notice.

This is all my opinion. I would feel safer using a Seedsigner.

from jade.

JamieDriver avatar JamieDriver commented on August 15, 2024

@Lagrang3

We can't verify that the software it's running is the same on the repo,

We are working on making the build reproducible from github source (minus the sig block). It should/usually works, but is not 100% reliable - I think there are packages in the docker image not strictly pinned to versions so what works one day can sometimes then not work on a later date. It is something we want to address.

we cannot check whatever internal ROM fw is doing the signature verification

The signature verification is carried out by the bootloader - this is all open source code - espressif esp-idf. But point taken, I concur that you cannot verify the bootloader (or the roms) match whatever source is provided as they are not built/uploaded as part of an OTA update.

If you replace my HW with a malicious one, of course I would notice.

Of course, this is not what I was suggesting - I was suggesting that if flashing unsigned fw was allowed, EvilActor could take you hw from your bag, flash it with their malicious firmware (that looks just like the real fw) and then put your hw unit back in your bag. Your internal state would be untouched, and there would be no obvious way to tell the unit had been tampered with.

We offer the 'diy' option precisely for people of your technical ability, who would rather build and flash the unit themselves, having reviewed, perhaps altered, and built the firmware from source - and maybe even signed it with your own key so your diy jade will only run fw signed by you.
We also supply enough technical info in the repo that you should be able to build a unit from components, and 3d-print a case yourself, if you don't want to trust a consumer esp32 unit.

As you suggest, the standard OTA model above is about making the upgrade process smooth and secure for the more typical user.

from jade.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.