Skip to content

Instantly share code, notes, and snippets.

@mavidser
Last active January 30, 2024 12:13
Show Gist options
  • Save mavidser/33ac2492c6efcf0dac4e217f3c9cb812 to your computer and use it in GitHub Desktop.
Save mavidser/33ac2492c6efcf0dac4e217f3c9cb812 to your computer and use it in GitHub Desktop.
git diff tags/v0.11.0 flash-forge/main --ignore-space-at-eol
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index 996dfcaa..00000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-ko_fi: koconnor
-custom: https://www.klipper3d.org/Sponsors.html#klipper-developers
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 73378790..00000000
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-blank_issues_enabled: false
-contact_links:
- - name: Contact Directions
- url: https://www.klipper3d.org/Contact.html
- about: Have a question? Need help? Start here.
- - name: Klipper Forum
- url: https://community.klipper3d.org/
- about: Klipper community Discourse server.
- - name: Klipper Chat
- url: https://discord.klipper3d.org/
- about: Klipper community Discord chat server.
diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml
deleted file mode 100644
index 4a3e0ced..00000000
--- a/.github/workflows/build-test.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-# Perform continuous integration tests on updates and pull requests
-name: Build test
-on: [push, pull_request]
-
-jobs:
- build:
- runs-on: ubuntu-18.04
- steps:
- - uses: actions/checkout@v2
-
- - name: Setup cache
- uses: actions/cache@v2
- with:
- path: ci_cache
- key: ${{ runner.os }}-build-${{ hashFiles('scripts/ci-install.sh') }}
-
- - name: Prepare tests
- run: ./scripts/ci-install.sh
-
- - name: Test
- run: ./scripts/ci-build.sh 2>&1
-
- - name: Upload micro-controller data dictionaries
- uses: actions/upload-artifact@v2
- with:
- name: data-dict
- path: ci_build/dict
diff --git a/.github/workflows/invalid-label-bot.yaml b/.github/workflows/invalid-label-bot.yaml
deleted file mode 100644
index 30a9e3bf..00000000
--- a/.github/workflows/invalid-label-bot.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-# Add a comment to github issues marked with the "not on github" label
-name: "Add comment to issues marked 'not on github'"
-on:
- issues:
- types: [labeled]
-jobs:
- comment:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- if (context.payload.label.name != "not on github")
- return;
- msg = "It looks like this ticket is a request for help"
- + " (or similar)."
- + " Many helpful people will not see your message here and you"
- + " are unlikely to get a useful response."
- + " Instead, see the contact directions at:"
- + " https://www.klipper3d.org/Contact.html"
- + "\n\n"
- + "We use github to share the results of work done to"
- + " improve Klipper. We don't use github for requests."
- + " (In particular, we don't use github for feature"
- + " requests, to answer questions, nor to help diagnose"
- + " problems with a printer.)"
- + "\n\n"
- + "Please follow the directions at:"
- + " https://www.klipper3d.org/Contact.html"
- + "\n\n"
- + "This ticket will be automatically closed."
- + "\n\n"
- + "Best regards,\n"
- + "~ Your friendly GitIssueBot"
- + "\n\n"
- + "PS: I'm just an automated script, not a human being.";
- github.rest.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: msg
- })
diff --git a/.github/workflows/klipper3d-deploy.yaml b/.github/workflows/klipper3d-deploy.yaml
deleted file mode 100644
index 2e6e2c9d..00000000
--- a/.github/workflows/klipper3d-deploy.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-name: klipper3d deploy
-on:
- schedule:
- - cron: "0 0 * * *"
- push:
- branches:
- - master
- paths:
- - docs/**
- - .github/workflows/klipper3d-deploy.yaml
-jobs:
- deploy:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Setup python
- uses: actions/setup-python@v2
- with:
- python-version: '3.8'
- - uses: actions/cache@v2
- with:
- path: ~/.cache/pip
- key: ${{ runner.os }}-pip-${{ hashFiles('docs/_klipper3d/mkdocs-requirements.txt') }}
- restore-keys: |
- ${{ runner.os }}-pip-
- - name: Install dependencies
- run: pip install -r docs/_klipper3d/mkdocs-requirements.txt
- - name: Build MkDocs Pages
- run: docs/_klipper3d/build-translations.sh
- - name: Deploy
- uses: JamesIves/github-pages-deploy-action@v4.2.5
- with:
- branch: gh-pages # The branch the action should deploy to.
- folder: site # The folder the action should deploy.
diff --git a/.github/workflows/reviewer-needed-label.yaml b/.github/workflows/reviewer-needed-label.yaml
deleted file mode 100644
index c4603b30..00000000
--- a/.github/workflows/reviewer-needed-label.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-# Add a comment to github PRs marked with the "reviewer needed" label
-name: "Add comment to PRs marked 'reviewer needed'"
-on:
- pull_request_target:
- types: [labeled]
-jobs:
- add_comment:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- if (context.payload.label.name != "reviewer needed")
- return;
- if (context.payload.pull_request.assignees.length > 0)
- return;
- msg = "Thank you for your contribution to Klipper."
- + " Unfortunately, a reviewer has not assigned themselves to"
- + " this GitHub Pull Request. All Pull Requests are reviewed"
- + " before merging, and a reviewer will need to volunteer."
- + " Further information is available at:"
- + " https://www.klipper3d.org/CONTRIBUTING.html"
- + "\n\n"
- + "There are some steps that you can take now:"
- + "\n"
- + "1. Perform a self-review of your Pull Request by following"
- + " the steps at:"
- + " https://www.klipper3d.org/CONTRIBUTING.html#what-to-expect-in-a-review"
- + "\n"
- + " If you have completed a self-review, be sure to state the"
- + " results of that self-review explicitly in the Pull Request"
- + " comments. A reviewer is more likely to participate if the"
- + " bulk of a review has already been completed."
- + "\n"
- + "2. Consider opening a topic on the [Klipper Discourse]"
- + "(https://www.klipper3d.org/Contact.html#community-forum)"
- + " server to discuss this work. The Discourse server is a good"
- + " place to discuss development ideas and to engage users"
- + " interested in testing. Reviewers are more likely to"
- + " prioritize Pull Requests with an active community of users."
- + "\n"
- + "3. Consider helping out reviewers by reviewing other Klipper"
- + " Pull Requests. Taking the time to perform a careful and"
- + " detailed review of others work is appreciated. Regular"
- + " contributors are more likely to prioritize the"
- + " contributions of other regular contributors."
- + "\n\n"
- + "Unfortunately, if a reviewer does not assign themselves to"
- + " this GitHub Pull Request then it will be automatically"
- + " closed. If this happens, then it is a good idea to move"
- + " further discussion to the [Klipper Discourse]"
- + "(https://www.klipper3d.org/Contact.html#community-forum)"
- + " server. Reviewers can reach out on that forum to let you"
- + " know if they are interested and when they are available."
- + "\n\n"
- + "Best regards,\n"
- + "~ Your friendly GitIssueBot"
- + "\n\n"
- + "PS: I'm just an automated script, not a human being.";
- github.rest.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: msg
- })
diff --git a/.github/workflows/stale-issue-bot.yaml b/.github/workflows/stale-issue-bot.yaml
deleted file mode 100644
index 3720e72c..00000000
--- a/.github/workflows/stale-issue-bot.yaml
+++ /dev/null
@@ -1,340 +0,0 @@
-# Close and warn on tickets that have become stale
-name: "Close stale tickets"
-on:
- schedule:
- - cron: '0 */12 * * *'
-jobs:
- # Check for stale issues (no updates in 5 weeks)
- stale:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/stale@v3
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- stale-issue-message: |
- Hello,
-
- It looks like there hasn't been any recent updates on this
- Klipper github issue. If you created this issue and no
- longer consider it open, then please login to github and
- close the issue. Otherwise, if there is no further activity
- on this thread then it will be automatically closed in a few
- days.
-
- Best regards,
-
- ~ Your friendly GitIssueBot
-
- PS: I'm just an automated script, not a human being.
-
- exempt-issue-labels: 'enhancement,bug'
- days-before-stale: 35
- days-before-close: 7
- # Close tickets marked with "not on github" label
- close_not_on_github:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- const expireMillis = 1000 * 60 * 60 * 36;
- const curtime = new Date().getTime();
- const issues = await github.rest.issues.listForRepo({
- owner: context.repo.owner,
- repo: context.repo.repo,
- state: 'open',
- labels: 'not on github',
- per_page: 100,
- page: 1
- });
- for (const issue of issues.data.values()) {
- const updatetime = new Date(issue.updated_at).getTime();
- if (curtime < updatetime + expireMillis)
- continue;
- await github.rest.issues.update({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- state: 'closed'
- });
- }
- # Close tickets marked with "reviewer needed" label for 2+ weeks
- close_reviewer_needed:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- const issues = await github.rest.issues.listForRepo({
- owner: context.repo.owner,
- repo: context.repo.repo,
- state: 'open',
- labels: 'reviewer needed',
- assignee: 'none',
- per_page: 100,
- page: 1
- });
- msg = "Unfortunately a reviewer has not assigned themselves to"
- + " this GitHub Pull Request and it is therefore being"
- + " closed. It is a good idea to move"
- + " further discussion to the [Klipper Discourse]"
- + "(https://www.klipper3d.org/Contact.html#community-forum)"
- + " server. Reviewers can reach out on that forum to let you"
- + " know if they are interested and when they are available."
- + "\n\n"
- + "Best regards,\n"
- + "~ Your friendly GitIssueBot"
- + "\n\n"
- + "PS: I'm just an automated script, not a human being.";
- const expireMillis = 1000 * 60 * 60 * 24 * 14;
- const curtime = new Date().getTime();
- for (const issue of issues.data.values()) {
- const updatetime = new Date(issue.updated_at).getTime();
- if (curtime < updatetime + expireMillis)
- continue;
- await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- body: msg
- });
- await github.rest.issues.update({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- state: 'closed'
- });
- }
- # Mark unassigned PRs that are idle for 2 weeks
- mark_reviewer_needed:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- msg = "Thank you for your contribution to Klipper."
- + " Unfortunately, a reviewer has not assigned themselves to"
- + " this GitHub Pull Request. All Pull Requests are reviewed"
- + " before merging, and a reviewer will need to volunteer."
- + " Further information is available at:"
- + " https://www.klipper3d.org/CONTRIBUTING.html"
- + "\n\n"
- + "There are some steps that you can take now:"
- + "\n"
- + "1. Perform a self-review of your Pull Request by following"
- + " the steps at:"
- + " https://www.klipper3d.org/CONTRIBUTING.html#what-to-expect-in-a-review"
- + "\n"
- + " If you have completed a self-review, be sure to state the"
- + " results of that self-review explicitly in the Pull Request"
- + " comments. A reviewer is more likely to participate if the"
- + " bulk of a review has already been completed."
- + "\n"
- + "2. Consider opening a topic on the [Klipper Discourse]"
- + "(https://www.klipper3d.org/Contact.html#community-forum)"
- + " server to discuss this work. The Discourse server is a good"
- + " place to discuss development ideas and to engage users"
- + " interested in testing. Reviewers are more likely to"
- + " prioritize Pull Requests with an active community of users."
- + "\n"
- + "3. Consider helping out reviewers by reviewing other Klipper"
- + " Pull Requests. Taking the time to perform a careful and"
- + " detailed review of others work is appreciated. Regular"
- + " contributors are more likely to prioritize the"
- + " contributions of other regular contributors."
- + "\n\n"
- + "Unfortunately, if a reviewer does not assign themselves to"
- + " this GitHub Pull Request then it will be automatically"
- + " closed. If this happens, then it is a good idea to move"
- + " further discussion to the [Klipper Discourse]"
- + "(https://www.klipper3d.org/Contact.html#community-forum)"
- + " server. Reviewers can reach out on that forum to let you"
- + " know if they are interested and when they are available."
- + "\n\n"
- + "Best regards,\n"
- + "~ Your friendly GitIssueBot"
- + "\n\n"
- + "PS: I'm just an automated script, not a human being.";
- const create_check = new Date("2022-03-01T00:00:00Z").getTime();
- const expireMillis = 1000 * 60 * 60 * 24 * 14;
- const curtime = new Date().getTime();
- const pulls_req = await github.rest.pulls.list({
- owner: context.repo.owner,
- repo: context.repo.repo,
- per_page: 100,
- page: 1
- });
- for (const pr of pulls_req.data.values()) {
- const createtime = new Date(pr.created_at).getTime();
- if (createtime < create_check)
- continue;
- const updatetime = new Date(pr.updated_at).getTime();
- if (curtime < updatetime + expireMillis)
- continue;
- if (pr.labels.length > 0)
- continue;
- if (pr.assignees.length > 0)
- continue;
- await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: pr.number,
- body: msg
- });
- await github.rest.issues.addLabels({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: pr.number,
- labels: ['reviewer needed']
- });
- }
- # Close tickets marked with "resolved" label
- close_resolved:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- msg = "This ticket is being closed because the underlying issue"
- + " is now thought to be resolved."
- + "\n\n"
- + "Best regards,\n"
- + "~ Your friendly GitIssueBot"
- + "\n\n"
- + "PS: I'm just an automated script, not a human being.";
- const expireMillis = 1000 * 60 * 60 * 24 * 7;
- const curtime = new Date().getTime();
- const issues = await github.rest.issues.listForRepo({
- owner: context.repo.owner,
- repo: context.repo.repo,
- state: 'open',
- labels: 'resolved',
- per_page: 100,
- page: 1
- });
- for (const issue of issues.data.values()) {
- const updatetime = new Date(issue.updated_at).getTime();
- if (curtime < updatetime + expireMillis)
- continue;
- await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- body: msg
- });
- await github.rest.issues.update({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- state: 'closed'
- });
- }
- # Close PRs marked with "not mainline" label
- close_not_mainline:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- msg = "This PR is being closed because it is currently not"
- + " considered a good match for the master Klipper"
- + " repository."
- + "\n\n"
- + "Best regards,\n"
- + "~ Your friendly GitIssueBot"
- + "\n\n"
- + "PS: I'm just an automated script, not a human being.";
- const expireMillis = 1000 * 60 * 60 * 24 * 7;
- const curtime = new Date().getTime();
- const issues = await github.rest.issues.listForRepo({
- owner: context.repo.owner,
- repo: context.repo.repo,
- state: 'open',
- labels: 'not mainline',
- per_page: 100,
- page: 1
- });
- for (const issue of issues.data.values()) {
- const updatetime = new Date(issue.updated_at).getTime();
- if (curtime < updatetime + expireMillis)
- continue;
- await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- body: msg
- });
- await github.rest.issues.update({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- state: 'closed'
- });
- }
- # Mark (and close) PRs with "pending feedback" for 3+ weeks
- mark_inactive:
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/github-script@v6
- with:
- script: |
- msg = "It looks like this GitHub Pull Request has become"
- + " inactive. If there are any further updates, you can"
- + " add a comment here or open a new ticket."
- + "\n\n"
- + "Best regards,\n"
- + "~ Your friendly GitIssueBot"
- + "\n\n"
- + "PS: I'm just an automated script, not a human being.";
- const expireMillis = 1000 * 60 * 60 * 24 * 21;
- const curtime = new Date().getTime();
- const issues = await github.rest.issues.listForRepo({
- owner: context.repo.owner,
- repo: context.repo.repo,
- state: 'open',
- labels: 'pending feedback',
- per_page: 100,
- page: 1
- });
- for (const issue of issues.data.values()) {
- const updatetime = new Date(issue.updated_at).getTime();
- if (curtime < updatetime + expireMillis)
- continue;
- await github.rest.issues.addLabels({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- labels: ['inactive']
- });
- await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- body: msg
- });
- await github.rest.issues.update({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: issue.number,
- state: 'closed'
- });
- }
- # Lock closed issues after 6 months of inactivity and PRs after 1 year.
- lock:
- name: Lock Closed Issues
- if: github.repository == 'Klipper3d/klipper'
- runs-on: ubuntu-latest
- steps:
- - uses: dessant/lock-threads@v3
- with:
- issue-inactive-days: '180'
- issue-lock-reason: ''
- pr-inactive-days: '365'
- pr-lock-reason: ''
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index f9521672..00000000
--- a/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-out
-*.so
-*.pyc
-.config
-.config.old
-klippy/.version
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 10615726..00000000
--- a/Makefile
+++ /dev/null
@@ -1,132 +0,0 @@
-# Klipper build system
-#
-# Copyright (C) 2016-2020 Kevin O'Connor <kevin@koconnor.net>
-#
-# This file may be distributed under the terms of the GNU GPLv3 license.
-
-# Output directory
-OUT=out/
-
-# Kconfig includes
-export KCONFIG_CONFIG := $(CURDIR)/.config
--include $(KCONFIG_CONFIG)
-
-# Common command definitions
-CC=$(CROSS_PREFIX)gcc
-AS=$(CROSS_PREFIX)as
-LD=$(CROSS_PREFIX)ld
-OBJCOPY=$(CROSS_PREFIX)objcopy
-OBJDUMP=$(CROSS_PREFIX)objdump
-STRIP=$(CROSS_PREFIX)strip
-CPP=cpp
-PYTHON=python3
-
-# Source files
-src-y =
-dirs-y = src
-
-# Default compiler flags
-cc-option=$(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`" \
- ; then echo "$(2)"; else echo "$(3)"; fi ;)
-
-CFLAGS := -I$(OUT) -Isrc -I$(OUT)board-generic/ -std=gnu11 -O2 -MD \
- -Wall -Wold-style-definition $(call cc-option,$(CC),-Wtype-limits,) \
- -ffunction-sections -fdata-sections -fno-delete-null-pointer-checks
-CFLAGS += -flto -fwhole-program -fno-use-linker-plugin -ggdb3
-
-OBJS_klipper.elf = $(patsubst %.c, $(OUT)src/%.o,$(src-y))
-OBJS_klipper.elf += $(OUT)compile_time_request.o
-CFLAGS_klipper.elf = $(CFLAGS) -Wl,--gc-sections
-
-CPPFLAGS = -I$(OUT) -P -MD -MT $@
-
-# Default targets
-target-y := $(OUT)klipper.elf
-
-all:
-
-# Run with "make V=1" to see the actual compile commands
-ifdef V
-Q=
-else
-Q=@
-MAKEFLAGS += --no-print-directory
-endif
-
-# Include board specific makefile
-include src/Makefile
--include src/$(patsubst "%",%,$(CONFIG_BOARD_DIRECTORY))/Makefile
-
-################ Main build rules
-
-$(OUT)%.o: %.c $(OUT)autoconf.h
- @echo " Compiling $@"
- $(Q)$(CC) $(CFLAGS) -c $< -o $@
-
-$(OUT)%.ld: %.lds.S $(OUT)autoconf.h
- @echo " Preprocessing $@"
- $(Q)$(CPP) -I$(OUT) -P -MD -MT $@ $< -o $@
-
-$(OUT)klipper.elf: $(OBJS_klipper.elf)
- @echo " Linking $@"
- $(Q)$(CC) $(OBJS_klipper.elf) $(CFLAGS_klipper.elf) -o $@
- $(Q)scripts/check-gcc.sh $@ $(OUT)compile_time_request.o
-
-################ Compile time requests
-
-$(OUT)%.o.ctr: $(OUT)%.o
- $(Q)$(OBJCOPY) -j '.compile_time_request' -O binary $^ $@
-
-$(OUT)compile_time_request.o: $(patsubst %.c, $(OUT)src/%.o.ctr,$(src-y)) ./scripts/buildcommands.py
- @echo " Building $@"
- $(Q)cat $(patsubst %.c, $(OUT)src/%.o.ctr,$(src-y)) | tr -s '\0' '\n' > $(OUT)compile_time_request.txt
- $(Q)$(PYTHON) ./scripts/buildcommands.py -d $(OUT)klipper.dict -t "$(CC);$(AS);$(LD);$(OBJCOPY);$(OBJDUMP);$(STRIP)" $(OUT)compile_time_request.txt $(OUT)compile_time_request.c
- $(Q)$(CC) $(CFLAGS) -c $(OUT)compile_time_request.c -o $@
-
-################ Auto generation of "board/" include file link
-
-create-board-link:
- @echo " Creating symbolic link $(OUT)board"
- $(Q)mkdir -p $(addprefix $(OUT), $(dirs-y))
- $(Q)rm -f $(OUT)*.d $(patsubst %,$(OUT)%/*.d,$(dirs-y))
- $(Q)rm -f $(OUT)board
- $(Q)ln -sf $(CURDIR)/src/$(CONFIG_BOARD_DIRECTORY) $(OUT)board
- $(Q)mkdir -p $(OUT)board-generic
- $(Q)rm -f $(OUT)board-generic/board
- $(Q)ln -sf $(CURDIR)/src/generic $(OUT)board-generic/board
-
-# Hack to rebuild OUT directory and reload make dependencies on Kconfig change
-$(OUT)board-link: $(KCONFIG_CONFIG)
- $(Q)mkdir -p $(OUT)
- $(Q)echo "# Makefile board-link rule" > $@
- $(Q)$(MAKE) create-board-link
-include $(OUT)board-link
-
-################ Kconfig rules
-
-$(OUT)autoconf.h: $(KCONFIG_CONFIG)
- @echo " Building $@"
- $(Q)mkdir -p $(OUT)
- $(Q) KCONFIG_AUTOHEADER=$@ $(PYTHON) lib/kconfiglib/genconfig.py src/Kconfig
-
-$(KCONFIG_CONFIG) olddefconfig: src/Kconfig
- $(Q)$(PYTHON) lib/kconfiglib/olddefconfig.py src/Kconfig
-
-menuconfig:
- $(Q)$(PYTHON) lib/kconfiglib/menuconfig.py src/Kconfig
-
-################ Generic rules
-
-# Make definitions
-.PHONY : all clean distclean olddefconfig menuconfig create-board-link FORCE
-.DELETE_ON_ERROR:
-
-all: $(target-y)
-
-clean:
- $(Q)rm -rf $(OUT)
-
-distclean: clean
- $(Q)rm -f .config .config.old
-
--include $(OUT)*.d $(patsubst %,$(OUT)%/*.d,$(dirs-y))
diff --git a/README.md b/README.md
index 32fe7331..0bb8770f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Welcome to the Klipper project!
+Welcome to the Adventurer5M Adventurer5MPro Klipper project!
[![Klipper](docs/img/klipper-logo-small.png)](https://www.klipper3d.org/)
@@ -12,6 +12,8 @@ information on why you should use Klipper.
To begin using Klipper start by
[installing](https://www.klipper3d.org/Installation.html) it.
+Used on Adventurer5M series devices
+
Klipper is Free Software. See the [license](COPYING) or read the
[documentation](https://www.klipper3d.org/Overview.html). We depend on
the generous support from our
diff --git a/docs/_klipper3d/build-translations.sh b/docs/_klipper3d/build-translations.sh
old mode 100755
new mode 100644
diff --git a/fw-Ad5m/Eboard-20231012.hex b/fw-Ad5m/Eboard-20231012.hex
new file mode 100644
index 00000000..8738c0c9
--- /dev/null
+++ b/fw-Ad5m/Eboard-20231012.hex
@@ -0,0 +1,2106 @@
+:020000040801F1
+:10000000000002207D5E0108994B01089D4B01080C
+:10001000A14B0108A54B0108A94B010800000000F5
+:10002000000000000000000000000000AD4B0108CF
+:10003000B14B010800000000C55E0108615D0108C8
+:10004000C55E0108C55E0108C55E0108C55E010800
+:10005000C55E0108C55E0108C55E0108C55E0108F0
+:10006000C55E0108C55E0108C55E0108C55E0108E0
+:10007000C55E0108C55E0108C55E0108C55E0108D0
+:10008000C55E0108C55E0108C55E0108C55E0108C0
+:10009000C55E0108C55E0108C55E0108C55E0108B0
+:1000A000C55E0108C55E0108C55E0108C55E0108A0
+:1000B000C55E0108C55E01083D4B0108C55E01082B
+:1000C000C55E0108C55E0108C55E0108C55E010880
+:1000D000C55E0108E5590108C55E0108C55E010855
+:1000E0006D4A0108C55E0108C55E0108C55E0108CC
+:1000F000C55E0108C55E0108C55E0108C55E010850
+:10010000C55E0108C55E0108C55E0108C55E01083F
+:10011000C55E0108C55E0108C55E0108C55E01082F
+:10012000C55E0108C55E0108C55E0108C55E01081F
+:10013000C55E0108C55E0108C55E0108C55E01080F
+:10014000C55E0108C55E0108C55E0108C55E0108FF
+:10015000C55E0108C55E0108C55E0108C55E0108EF
+:10016000C55E0108C55E0108C55E0108C55E0108DF
+:10017000C55E0108C55E0108C55E0108C55E0108CF
+:08018000C55E0108C55E01081F
+:1001900010B5054C237833B9044B13B10448AFF3C1
+:1001A00000800123237010BD3800002000000000F3
+:1001B0000067010808B5034B1BB103490348AFF3BF
+:1001C000008008BD000000003C000020006701081E
+:1001D00001F0FF01102A2BDB10F0070F08D010F8F8
+:1001E000013B013A8B422DD010F0070F42B3F6D1FC
+:1001F000F0B441EA012141EA014122F007047FF015
+:1002000000070023F0E80256083C85EA010586EA6B
+:10021000010685FA47F5A3FA87F586FA47F6A5FAA7
+:1002200087F68EB9EED1F0BC01F0FF0102F00702B3
+:1002300032B110F8013B013A83EA010313B1F8D15E
+:100240000020704701387047002D06BF354603383F
+:10025000073815F0010F07D1013015F4807F02BF78
+:10026000013015F4C03F0130F0BC0138704700BFC9
+:10027000EC46A0E8F05F4FF000007047B0E8F05F98
+:10028000E546080008BF0120704700BF10F8012BA9
+:1002900011F8013B012A28BF9A42F7D0D01A7047C3
+:1002A00030B583B004466D464168284604F0D8FC5A
+:1002B00009492078094C2C2200F008FA034695E8F9
+:1002C000030003F120025C6082E80300012283F84E
+:1002D0002A2003B030BD00BFA1020108E1020108DD
+:1002E00038B500F12005044695E8030004F012FD3E
+:1002F00020B1A3681844A060012038BD95E8030030
+:1003000004F034FD94F82A3094F82B20934226D23E
+:10031000218B0133DBB2084480B29A42208384F8F7
+:100320002A3022D8A0F54C739BB247F6C8429342BC
+:1003300031D8224B00221A80638B83421BD8A38BB7
+:10034000834218D3002384F828301D4802F004F9B2
+:100350006369E26813446361A360012038BD01232F
+:100360009A42208384F82A30DCD9A3682269134496
+:10037000A360012038BD94F8283094F82920013377
+:10038000DBB29A4284F82830DFD80E4803F03CFFF5
+:1003900002F034F9D6E7094D2B8801339BB2042BC8
+:1003A0002B80C9D9074803F02FFF02F027F9064A2E
+:1003B000208B0121002311702B80BDE75A00002003
+:1003C00058000020246701085C00002038B514495B
+:1003D0000546007800F05AF9044602F031F804F1BD
+:1003E000200393E8030004F0CDFC6B686361A36015
+:1003F000AB6823612B7B84F82B305A1C84F82A20AD
+:100400002A69E260D5E90501EA6984F82920608358
+:10041000A18303B938BD2046BDE8384002F0F8B8E2
+:10042000A10201082DE9F041214884B002F09CF8B6
+:1004300030B3FF231F4D204F204E8DF80F3029463B
+:100440000DF10F0000F06EF90446C8B194F82A20AF
+:1004500094F82B309A42F2D105F0FAFB94F82B3045
+:1004600094F82A20934203F101010CD005F0F2FB2D
+:1004700029460DF10F0000F055F904460028E5D19A
+:1004800004B0BDE8F0816269B4F8188084F82A10DD
+:10049000019205F0DFFB3046A7F8008004F0D6F8A3
+:1004A000019A9DF80F10434600F0D8FCC7E700BF43
+:1004B00058000020A10201085400002038670108FC
+:1004C00030B583B0FF23114D8DF8073006E093E877
+:1004D000030004F057FC94F82B305BB929460DF16A
+:1004E000070000F01FF9044600F120030028EED1B8
+:1004F00003B030BD6269E16801330A4484F82A30F0
+:100500006261A260204602F083F8E7E7A1020108D9
+:1005100008B5044B04482B221A6003F075FE02F064
+:1005200041F800BF100100206867010808B505F018
+:1005300087FB034B033020F00300186008BD00BFA9
+:100540006000002070B50E4E336804461D1805F09B
+:100550007BFB85420CD83568E31C23F003032B4456
+:10056000224600212846336006F0C2F8284670BDB6
+:10057000044B054828221A6003F046FE02F012F8E8
+:10058000600000201001002084670108024B1A68F7
+:1005900002601860704700BF7000002010B505F0C1
+:1005A0005BFB084B1C682CB122681A6005F058FBF5
+:1005B000204610BD044B05482A221A6003F024FE91
+:1005C00001F0F0FF70000020100100209867010882
+:1005D0000068B0FA80F04009704700BF00687047BB
+:1005E00003460A68002018601AB14A6813604B601D
+:1005F0007047C1E900330120704700BF03681A68E3
+:1006000002601846704700BF00230360704700BFB8
+:1006100008B5FF294FF00003C0E9003308DC054BA3
+:100620001B882BB9044B1A788A42B8BF197008BDD1
+:10063000FFF76EFF6C000020740000200F4B18883D
+:1006400010B4A0B1013815D00D4A0E4B146893F8C0
+:1006500000C00022234619460132634482420B60E7
+:10066000F9D102FB0C42084B002111601C605DF8BF
+:10067000044B7047024B1C682246F4E76C000020D4
+:1006800078000020740000207000002008B50B4B9B
+:100690001B78834209D90A4B1B6853F830208A42E1
+:1006A00003EBC00001D1406808BD064B06482D226F
+:1006B0001A6003F0A9FD01F075FF00BF7C00002067
+:1006C0008000002010010020AC67010870B5104BBD
+:1006D0001C7803469C42104611D90E4D1AB2DC001C
+:1006E0002B6853F8326056B90B4E36883EB943F842
+:1006F0003210FFF727FF2B682344586070BD074B6B
+:1007000007482E221A6003F07FFD01F04BFF00BF67
+:100710007C000020800000206C00002010010020E0
+:10072000C067010830B50E4A03780E4C126894F881
+:1007300000E003F1010C5FFA8CF302EBC30205E069
+:1007400052F8084B8C4203F1010C06D05FFA8CF38F
+:100750009E451546F4D8002030BD0370686830BD52
+:10076000800000207C00002038B50A4C236843B983
+:100770000568E8B2C000FFF7E5FE074B20601D707A
+:1007800038BD064B06482F221A6003F03DFD01F0EC
+:1007900009FF00BF800000207C0000201001002025
+:1007A000D467010830B50D4D0D4885B003F04EFFFC
+:1007B00029880C4B003918BF01211A68039204469E
+:1007C000029101F0D9FE034628880090DDE902126B
+:1007D000204600F043FB05B030BD00BF6C00002098
+:1007E000EC670108640000202DE9F0411E4F3B88B2
+:1007F000064683BB1D4BDFF88C801D78D8F800407F
+:10080000032D9CBF04251D7005F01EFA002322460F
+:100810002C44A04213D30133B3F5006FF7D11D462A
+:10082000D8F80000201AFFF78DFE114B3D801860AC
+:10083000FFF704FF0F4B32681A60BDE8F08113B177
+:100840009DB21446ECE70C4B0C4829221A6003F0C9
+:10085000DBFC01F0A7FE084B09482C221A6003F0CC
+:10086000D3FC01F09FFE00BF6C000020740000204C
+:100870007800002064000020100100203C6801087E
+:10088000286801086000002010B5064803F0DEFE6D
+:10089000044605F027FA01462046BDE8104000F066
+:1008A000DDBA00BF5068010810B582B005F01AFA31
+:1008B000094A0A4B11681B680446A34288BF0131EC
+:1008C0000748019103F0C2FE0199224602B0BDE83B
+:1008D000104000F0C3BA00BF880000208400002050
+:1008E000606801082DE9F041264D274E2B68274FFF
+:1008F00001332B603368081A0344B0F5803F0C467F
+:10090000336019D23B6800FB00F0FF3003EB10208E
+:10091000984238BF4FF0FF3038601D48DFF87C80C8
+:1009200005F0D8F9D8F8003001461944204605F002
+:10093000D5F970B1BDE8F081B0F5801F06D200F1A5
+:10094000FF023B68120A00FB0230E1E74FF0FF3084
+:10095000E2E7104803F07AFE3B683268296800F04D
+:100960007DFAD8F80030A34203D90B4A136801334B
+:1009700013600023C8F800403B6033602B60BDE883
+:10098000F08100BF680000208C0000209000002053
+:10099000404B4C007868010888000020840000204B
+:1009A00008B5044B044831221A6003F02DFC01F015
+:1009B000F9FD00BF100100209868010801F006BE93
+:1009C00010B50E4B04681B6842689C4282B012D27C
+:1009D000D2B21119994201D91A1BD2B20848019218
+:1009E00003F034FE074B019A2344214602B0BDE8D0
+:1009F000104000F033BA0022F0E700BF387D010854
+:100A0000A8680108807201082DE9F041827F06463E
+:100A1000174682B10025DFF8A0802F4601242B461F
+:100A200033BB98F8003003B927430135EBB26400BB
+:100A30009A42E4B2F4D8327CBA4207D0737C7B404D
+:100A4000DB4382EA0701DBB20B421CD196F91C3072
+:100A5000347F7774002B04DB013CE4B2FF2C25D0FB
+:100A60003477D6E9023213440120B360BDE8F08147
+:100A7000043306EBC30393E8030004F009FBB27FE1
+:100A80000028D1D1D1E722EA03023B401343B27CD4
+:100A90003374072ADAD8511C3244B1740548D37430
+:100AA00001F05AFDFF2333777774DAE7014801F04C
+:100AB00053FDD5E7940000201501002010B50479FE
+:100AC000082C09D8221D08490078D200FFF7FEFD46
+:100AD000064B8477436010BD054B064825221A60FB
+:100AE00003F092FB01F05EFDBD0A0108090A01084E
+:100AF00010010020D068010870B51149054682B088
+:100B00000078FFF7C3FD2B79827F9A4204460ED905
+:100B10006E46D5E9021230461D1D04F091FA96E8A2
+:100B2000030004EBC50484E8030002B070BD054B6C
+:100B3000054826221A6003F067FB01F033FD00BF71
+:100B4000BD0A010810010020E468010838B5134906
+:100B500005460078FFF79AFD044601F071FC6B68CA
+:100B6000A360A968E16000232A7CA374E376FE23D6
+:100B7000627422742377EB6863771B0606D401B98D
+:100B800038BD2046BDE8384001F042BD044B054861
+:100B900027221A6003F038FB01F004FDBD0A0108AA
+:100BA000100100200C69010838B515490446007889
+:100BB000FFF76CFD2479C37E05462344C37605F018
+:100BC00047F8AB7CA34207D8FE230022AA742B77F8
+:100BD000BDE8384005F03EB81B1BD8B205F1130242
+:100BE00004F112032B44141813F8011F02F8011B1F
+:100BF000A242F9D1A874BDE8384005F02BB800BF77
+:100C0000BD0A0108F0B51A4885B001F0ADFC48B343
+:100C1000FF23184D184F8DF80F3029460DF10F00A6
+:100C2000FFF780FD0446E8B1237FFF2BF5D105F0E7
+:100C30000FF8A67CC6B1637F237705F00BF8384622
+:100C400003F004FD1334227A9DF80F10009433460C
+:100C500000F004F929460DF10F00FFF763FD04468B
+:100C60000028E1D105B0F0BD04F0F4FFD5E700BFE6
+:100C700094000020BD0A010830690108704700BFD8
+:100C800070B5D4785668651EA4B3814233D316F884
+:100C9000012B042A20D810F8012B02F0600CBCF1C3
+:100CA000600F03F1040E02F07F0408D164F01F040A
+:100CB00005E010F8012B02F07F0C4CEAC414120678
+:100CC000F7D41C60B5B1814215D316F8012B042A64
+:100CD00005F1FF357346DED9072A0CD1024612F81A
+:100CE000014B1019884206D89E464EF8084B5A60B0
+:100CF000002DEAD170BD044B044822221A6003F093
+:100D000083FA01F04FFC00BF100100205C6901086C
+:100D10002DE9F8434B78052B064694461C465FD9CF
+:100D20008F784D68033BC4180B788370C11C002F6B
+:100D300053D08C42C0F084802F4430E05CF8043BF8
+:100D400003F120027F2A22D903F58052B2F5804FA9
+:100D500018D303F50022B2F5001F0ED303F1806211
+:100D6000B2F1805F04D31A0F62F07F0201F8012B09
+:100D70005A0D62F07F0201F8012B9A0B62F07F029C
+:100D800001F8012BDA0962F07F0201F8012B03F070
+:100D90007F0301F8013BBD421FD08C4250D315F8B0
+:100DA000013B052B30D0C9D9063B012B48D8E04682
+:100DB0000B4658F8082B611A914228BF114603F8D8
+:100DC000011B89460A461846DCF8041005F068FC49
+:100DD000BD4200EB0901C446DFD1891BCC1CE3B244
+:100DE0001B4A337012787270E51E2946304605F0B2
+:100DF00027F8030A735526447E2306F8020C06F8EA
+:100E0000013C2046BDE8F8835CF8040B03784A1CDB
+:100E10006BB1944202D811E094420BD002F8013B2E
+:100E200010F8013F002BF7D1531A013BDBB20B70D6
+:100E30001146B0E7631A013BDBB2F8E70023F6E79F
+:100E4000044B054823221A6003F0DEF901F0AAFBE7
+:100E50000000002010010020746901080FB430B5B3
+:100E6000084D2C7883B0E4B23CB9012307A9069859
+:100E70002B70019104F098FE2C7003B0BDE8304057
+:100E800004B0704795000020014B00221A70704793
+:100E9000950000202DE9F04B804615460C4619B907
+:100EA00000202860BDE8F08B2F4E3778FA0711D468
+:100EB0000429F5D907787B1F3B2B05D890F80190C2
+:100EC00029F00F03102B1ED07E2F36D0337843F03D
+:100ED0000107377022467E214046FFF779F950B36B
+:100EE000A0EB080007F0FE07013037702860BB0751
+:100EF0001DD447F0020333701C48FFF7AFFF4FF0DB
+:100F0000FF30BDE8F08BB942CAD3C31913F8012CE6
+:100F10007E2AD9D1F91E13F802BC435C4BEA032B9D
+:100F200004F08EFF83450DD098F80070CCE74FF0A9
+:100F3000FF30BDE8F08B2C60D9E701232B604FF028
+:100F4000FF30AFE70A4932780B782F6022F00202B7
+:100F50004B453270D0D1013303F00F0343F010033F
+:100F60000B7001209EE700BF960000209C690108DD
+:100F7000000000202DE9F04B0339841C00EB01092F
+:100F800082B04C4500AF3AD2DFF898800EE0C7E956
+:100F9000002304F06DFE3A687B682A4408EB820265
+:100FA000184693689847A145DD4628D92046EB4668
+:100FB00010F8015B3DB3184B1B789D4223D205EB23
+:100FC000450608EB8606324673789B00073303F428
+:100FD000FF63ADEB030D6B4649467B60FFF750FEA8
+:100FE000044601F0C9FA7B686A000028CFD0B178C6
+:100FF000C907CCD401F0C8FAA145DD46D6D80837D8
+:10100000BD46BDE8F08B054B054824221A6003F06D
+:10101000FBF801F0C7FA00BFCC80010810010020E6
+:101020008C6901083C7D01080148FFF717BF00BF2C
+:101030009C69010830B5D0E9004083B0FFF71EFE7F
+:10104000054604F009FEE3B2012B0FD0022B10D0AD
+:101050002978C9B2019104F003FE074803F0F6FABB
+:10106000019903B0BDE83040FFF7F8BE298889B286
+:10107000F0E72968EEE700BFA469010870B50446EF
+:10108000D0E90050FFF7FAFDA668044604F0E4FD3D
+:10109000EBB2012B07D0022B0BD0F6B22670BDE8C5
+:1010A000704004F0DDBDB6B22680BDE8704004F0AB
+:1010B000D7BD2660BDE8704004F0D2BD10B5D0E9C0
+:1010C000004082B0FFF7DAFD0190054803F0BEFA58
+:1010D000019AE1B202B0BDE81040FFF7BFBE00BF09
+:1010E000B8690108704700BF30B50B4983B00446AA
+:1010F00028220078FFF7EAFA6D4603466168A26885
+:1011000028461C4603F09CFF95E8030004F10C03FD
+:1011100083E8030003B030BDE910010838B500F1E1
+:101120000C03044693E8030003F0B2FF94F8245044
+:1011300088B1ED4305F001058DB994F82630013BE7
+:1011400013F0FF0315D0A268A16984F826300A4481
+:10115000A260012038BD05F00105002DEDD0084941
+:10116000E26994F8253084F82630C4E901120120A0
+:1011700038BD206A94F8271002F0A0FE284638BD3A
+:101180008511010800F10C0310B5044693E8030033
+:1011900003F07EFFA36862691A4494F8243030B1EA
+:1011A000DB4303F0010333B1A260012010BD03F063
+:1011B0000103002BF8D1044BE26163602046BDE8D7
+:1011C0001040FFF7ABBF00BF1D11010838B516492D
+:1011D00005460078FFF75AFA044601F031F96B68CA
+:1011E000A360AB68A3612B7B84F82530C3B12A6967
+:1011F000626184F826306A690C4B002A14BF03220E
+:10120000022284F82420287E636002F083FEEB69CA
+:1012100084F8273020622046BDE8384001F0F8B954
+:1012200084F82430236238BDE910010885110108D3
+:10123000F0B50678104985B03046FFF727FA044626
+:1012400004F006FDE36994F82470039304F002FDB2
+:101250000A4803F0FBF90C34054694E8030003F058
+:1012600017FF039B0090C7F3400231462846FFF763
+:10127000F5FD05B0F0BD00BFE9100108C86901081F
+:1012800030B5D0E9011283B0003A04466D4618BF6C
+:101290000122284603F0F2FD0F4920783422FFF79F
+:1012A00015FA034695E8030003F1180282E80300EB
+:1012B000D4E90221003A18BF012209B142F010021C
+:1012C00083F8302022691A620C2103F1280003B050
+:1012D000BDE83040FFF79CB9811201082DE9F843C1
+:1012E00000F1280804464046FFF772F9002840F054
+:1012F000A0804046FFF782F985682E1E18BF0126A0
+:1013000004F118030746324693E8030003F016FE83
+:101310003846FFF73BF9C5B1636AAB4215D9276A76
+:10132000002F68D1404646F00206FFF751F9002829
+:1013300000F0878094F83030676103F01003334386
+:10134000A66884F830302E4426E094F83030B5FAA0
+:1013500085F283F01003C3F3001352099A4225D09B
+:10136000276A1FB3A168404646F004060F44FFF702
+:101370002FF9002848D094F83030676103F010034B
+:10138000334384F83030B30726D5A6682E44394657
+:10139000304604F0A3FCF8B1636A2B4A5B1BC4E936
+:1013A0000126C4E903530120BDE8F8834046FFF756
+:1013B0000FF9A8B981464046FFF710F9476894F83D
+:1013C0003020676146F0040602F01002164384F8EC
+:1013D0003060B9F1000FD8D1A7600120BDE8F883D3
+:1013E00094F8303003F010033343002084F8303099
+:1013F0006061BDE8F883A168404646F006060F44E8
+:10140000FFF7E6F80028B6D14046FFF7E7F80346B5
+:1014100038465F68394604F061FC06F0020900288E
+:10142000CDD00A4B0A481E221A6002F0EDFE01F0F0
+:10143000B9F8064B07481D221A6002F0E5FE01F0DC
+:10144000B1F84FF00209B6E7591401081001002065
+:10145000306A0108046A010838B5044600F118032F
+:1014600093E8030003F03AFD94F83030A56883F068
+:101470000103DA074CBFE268226984F830305B0769
+:10148000154402D4A560012038BD6169284604F0E6
+:1014900025FC0028F6D1034B65696360A560012037
+:1014A00038BD00BFDD12010838B50D49054600788A
+:1014B000FFF7ECF8044604F0CBFB04F12800FFF73B
+:1014C00087F828B16B686362BDE8384004F0C2BB9E
+:1014D000044B05481F221A6002F096FE01F062F8E4
+:1014E0008112010810010020686A0108F8B522493C
+:1014F00006460078FFF7CAF80446FFF74FF877680A
+:101500004760B3688360054604F0A2FB04F128013C
+:101510002846FFF765F898B194F830506A071DD453
+:1015200045F0040384F83030AB0767610CD42046E3
+:1015300000F086FF114B2046C4E9013701F068F83E
+:10154000BDE8F84004F086BBA068394604F0C6FB4D
+:101550000028ECD0BDE8F84004F07CBB6069394657
+:1015600004F0BCFB0028DBD0054B064820221A60A3
+:1015700002F04AFE01F016F881120108DD1201089E
+:1015800010010020306A0108F8B5234905460078AB
+:10159000FFF77CF8044600F053FF04F12800FFF742
+:1015A00017F888B32E7994F83050371E18BF0127EA
+:1015B00004F1180393E803003A4603F0BFFC85F0FA
+:1015C0001001B6FA86F35B09C1F300118B4201D01A
+:1015D000236A2BB905F010053D4384F83050F8BD5F
+:1015E00004F080FB05F01005236A3D43184445F0E4
+:1015F00004050A4B84F83050C4E90130606120468C
+:10160000BDE8F84001F004B8054B064821221A60F5
+:1016100002F0FAFD00F0C6FF81120108DD12010898
+:1016200010010020A06A010830B583B0FF23124DDD
+:101630008DF8073013E094F8302093E8030002F0AF
+:10164000100203F07BFC94F8303013F0100318BF45
+:10165000112304F1280084F83030FEF7D5FF294625
+:101660000DF10700FFF75EF8044600F118030028AB
+:10167000E1D103B030BD00BF8112010800B50346BF
+:1016800083B0D3E90012684603F0F8FB03B05DF8BD
+:1016900004FB00BF30B5C3680B4985B0044603F0B6
+:1016A0007F03082200780193FFF710F802ADD4E918
+:1016B0000112019B0446284603F040FE95E8030012
+:1016C00084E8030005B030BD951601080149FEF716
+:1016D000DDBF00BF9516010830B50A4983B0044646
+:1016E0000078FEF7D3FF227901920546A068FFF744
+:1016F000C5FA034695E80300019A03B0BDE83040FF
+:1017000003F09CBE951601082DE9F04184B00678DF
+:10171000134902AF04463046FEF7B8FF22797A60DB
+:101720000546A068FFF7AAFA247B7A68E11D01F458
+:10173000FC71ADEB010D0DF10808CDE90048034641
+:1017400095E8030003F0AAFE064802F07FFF434637
+:1017500022463146FFF782FB0837BD46BDE8F081DF
+:1017600095160108D06A01082DE9F04B84B00546B2
+:101770002C49007802AFFEF789FF0446A86895F867
+:101780000490FFF77BFAE968CB07804641D4C1F3A8
+:10179000470B286909EB0B06FFF770FAF31D23F0DE
+:1017A0000703ADEB030D02AD414678604A4628467B
+:1017B00004F076FF434605EB0908CDF800B0CDF8FC
+:1017C000048094E803004A4603F068FEBBF1000F72
+:1017D00015D07B680BF1FF31194408F1FF32581E18
+:1017E0008E4610F801CF12F8013F23EA0C03137064
+:1017F00011F801CF704543EA0C031370F1D194E85E
+:1018000003002B46F2B203F019FE0837BD46BDE8CF
+:10181000F08B054B05481C221A6002F0F5FC00F025
+:10182000C1FE00BF9516010810010020F86A0108EA
+:1018300070B50A4B1E68002E82B00CDD084D0024E6
+:101840002A7955F8081B684602F00102013403F0BA
+:1018500015FBB442F4D102B070BD00BFB4810108E1
+:10186000B481010882B070B582B06E4686E8060089
+:10187000044696E80300079303F03AFBE00622D4FF
+:10188000A10627D462062CD4230631D404F02AFA08
+:1018900005461A481A4C04F01DFAA4FB003405EB67
+:1018A000944401E004F0E4F904F01CFA214604F049
+:1018B00015FA0028F6D196E8030002B0BDE87040A2
+:1018C00002B003F015BB07AB93E8030003F010FB75
+:1018D000A106D7D509AB93E8030003F009FB620624
+:1018E000D2D50BAB93E8030003F002FB2306CDD562
+:1018F0000DAB93E8030003F0FBFAC7E77082030027
+:1019000083DE1B432DE9F04B00F1140305468B46A3
+:1019100093E8030096B00CAE05F11C0386E80300C3
+:1019200093E803000EAB83E8030005F1240393E87A
+:10193000030010AF05F12C0387E8030093E80300D0
+:101940000DF1480805F1340388E8030093E803002B
+:101950000DF1500989E8030001A9099199E80300F4
+:1019600005AA03AC2B7A0B920A9482E8030098E84C
+:10197000030084E8030097E80300099A82E8030063
+:101980008BEA03000F9B009396E806000E9BFFF77F
+:1019900069FF4FEA0B132B7204F0A4F904461748B1
+:1019A00004F098F903461648A0FB032304EB934484
+:1019B00001E004F05DF904F095F9214604F08EF998
+:1019C0000028F6D199E803000B9B2D7A83E80300E9
+:1019D00098E803000A9B83E8030097E80300099B4B
+:1019E00083E803000F9C0E9B96E806008BEA050037
+:1019F0000094FFF737FF16B0BDE8F08BB01E04006F
+:101A000083DE1B43F0B5314983B005463C220078A4
+:101A1000FEF75CFE6C46064669682046002203F02D
+:101A20002DFA94E8030006F10C0383E8030000227A
+:101A30002046A96803F022FA94E8030006F1140393
+:101A400083E8030000222046E96803F017FA94E8CF
+:101A5000030006F11C0383E80300002220462969E5
+:101A600003F00CFA94E8030006F1240383E8030072
+:101A700000222046696903F001FA94E8030006F1A8
+:101A80002C0383E8030000222046A96903F0F6F93D
+:101A900094E8030006F1340383E8030004F0D8F867
+:101AA00004F020F9002104463046FFF72BFF04F034
+:101AB00019F9074604F0CEF8EB693A1B9A4202D2B4
+:101AC0002344DB1B736003B0F0BD00BF051A01089F
+:101AD0002DE9F843174904460078FEF7D7FD00F1D9
+:101AE0000C038046002293E8030003F027FAD4E9B0
+:101AF0000170FFF7C3F817F0FF07D8E90045064665
+:101B000014D000EB070916F8017B01E004F0B0F8EF
+:101B100004F0E8F8001B8542F8D839464046FFF744
+:101B2000F1FE04F0DFF84E450446ECD1C8F8004061
+:101B3000BDE8F883051A01082DE9F8431749044662
+:101B40000078FEF7A3FD00F10C038046012293E824
+:101B5000030003F0F3F9D4E90170FFF78FF817F0F1
+:101B6000FF07D8E90045064614D000EB070916F830
+:101B7000017B01E004F07CF804F0B4F8001B85421E
+:101B8000F8D839464046FFF7BDFE04F0ABF84E45A5
+:101B90000446ECD1C8F80040BDE8F883051A0108F6
+:101BA00070B582B0FF231D4D8DF80730002627E069
+:101BB00093E8030003F0C2F904F1140393E803006F
+:101BC000002203F0BBF904F11C0393E80300002298
+:101BD00003F0B4F904F1240393E80300002203F0B6
+:101BE000ADF904F12C0393E80300002203F0A6F9F9
+:101BF00004F1340393E80300002203F09FF92672F6
+:101C000029460DF10700FEF78DFD0022044600F184
+:101C10000C030028CCD102B070BD00BF051A01082A
+:101C20002DE9F04B00F10C0203460D4692E803004B
+:101C300084B06F46143387E8030093E803000DF186
+:101C4000080B8BE80300DFF88C90DFF88C80082607
+:101C50002B0638D404F046F80446484604F03AF817
+:101C6000A8FB002304EB934401E004F001F804F026
+:101C700039F8214604F032F80028F6D197E803003D
+:101C800003F036F904F02EF80446484604F022F832
+:101C9000A8FB002304EB934401E003F0E9FF04F008
+:101CA00021F8214604F01AF80028F6D197E803003D
+:101CB000013E03F01DF96D0016F0FF06EDB2C7D12D
+:101CC00004B0BDE8F08B9BE80300ED4303F010F98E
+:101CD000EDB2BFE7400D030083DE1B43F0B525499D
+:101CE00083B005461C220078FEF7F0FC6E460446E1
+:101CF000A9683046002203F0C1F896E8030004F119
+:101D00000C0383E8030000223046E96803F0B6F8CC
+:101D100096E8030004F1140383E80300012230462F
+:101D2000696803F0ABF8F8212046FFF779FF20211E
+:101D30002046FFF775FF03F08BFF03F0D3FF002170
+:101D400006462046FFF76CFF03F0CCFF074603F082
+:101D500081FF27602B69BA1B9A4202D23344DB1BF6
+:101D600063606869824202D20644F71BA76003B031
+:101D7000F0BD00BFDD1C01082DE9F04B17460E46F3
+:101D800017F801BB056844680BF0F00191468046E6
+:101D9000FFF746FF01E003F06BFF03F0A3FF401BDA
+:101DA0008442F8D84FEA0B1101F0F0014046FFF7EA
+:101DB00037FF03F097FF012ED8F8085004461DD0D6
+:101DC000B31EDBB20233994417F8016B404606F0AC
+:101DD000F001FFF725FF01E003F04AFF03F082FF67
+:101DE000001B8542F8D8310101F0F0014046FFF7B1
+:101DF00017FF03F077FF4F450446E5D1C8F80040D0
+:101E0000BDE8F08B70B50B4904460078FEF73EFC48
+:101E1000F8210546FFF704FF2679A068FEF72EFF9C
+:101E200006B970BD024631462846BDE87040FFF74E
+:101E3000A3BF00BFDD1C010870B50B490446007844
+:101E4000FEF724FCFA210546FFF7EAFE2679A06892
+:101E5000FEF714FF06B970BD024631462846BDE8BC
+:101E60007040FFF789BF00BFDD1C010830B583B0AB
+:101E7000FF230D4D8DF8073009E093E8030014347B
+:101E800003F05CF894E80300002203F057F82946B9
+:101E90000DF10700FEF746FC0022044600F10C039A
+:101EA0000028EAD103B030BDDD1C010870B582B056
+:101EB00004466D4641680022284602F0DFFFA36811
+:101EC0009EB21B0412D406F118020C49207892B27B
+:101ED000FEF7FCFB034695E8030083E80300D4E922
+:101EE00003129E8299601A6102B070BD044B0548CE
+:101EF0001A221A6002F088F900F054FBAD1E0108A6
+:101F000010010020206B010870B5114904460078CB
+:101F1000FEF7BCFB0346D4E9026065681C46FEF789
+:101F2000ADFE2B0401460AD4A28AAB19934206D80F
+:101F3000163532466019BDE8704004F0B1BB054B60
+:101F400005481B221A6002F05FF900F02BFB00BF6E
+:101F5000AD1E0108100100203C6B01082DE9F04B7B
+:101F60002DED028B0378624988B0184608EE103ACE
+:101F7000FEF78CFBD0E90354059003F0B3FE401B41
+:101F8000844206D903F074FE03F0ACFE401B844289
+:101F9000F8D8059D95E8030005F11602AF8A03976E
+:101FA00006AE86E803000492029203F09BFEAB6843
+:101FB00001930446002F50D0DFF84891029B13F89C
+:101FC000017B02934FF008083B064A484BD503F0CB
+:101FD00081FEA9FB0035AD0C03F084FE001B854299
+:101FE000FAD803F035FE03F07DFE054696E80300BF
+:101FF00002F074FF03F02EFE019B2C1BA3425FD95D
+:102000003D4803F067FEA9FB00347F00A40C03F0F9
+:1020100069FE401B8442FAD803F01AFE96E80300DA
+:1020200002F05CFF03F016FE03F05CFE83463348CB
+:1020300003F050FEA9FB0034A40C03F053FEA0EB08
+:102040000B008442F9D82C46B8F10108BCD1DDE977
+:1020500003231344029A9A42B0D103F043FE059B36
+:102060000122D86036E003F035FEA9FB0035AD0C47
+:1020700003F038FE001B8542FAD803F0E9FD03F0B7
+:1020800031FE834696E8030002F028FF1B4803F068
+:1020900021FEA9FB0035AD0C03F024FEA0EB0B00E4
+:1020A0008542F9D896E8030002F018FF03F0D2FD4C
+:1020B000019BABEB0404A34202D97F005C46C3E75B
+:1020C000002296E8030002F039FF03F00BFE059BA7
+:1020D0000022D8600A48019202F0B8FA019A18EE7C
+:1020E000101A08B0BDEC028BBDE8F04BFEF7B6BE8F
+:1020F000AD1E0108D012130010EB0900400D0300C3
+:102100005C6B010883DE1B4330B50C4983B0044689
+:102110002C220078FEF7DAFA6D4603466168A26861
+:1021200028461C4602F08CFF95E80300044A04F19F
+:10213000240383E80300626003B030BD0921010875
+:102140004521010870B58369044600F1240292E834
+:10215000030003F00105A66802F09AFF854203D050
+:10216000A369E6610133A3616069314603F0B6FDFE
+:1021700028B9D4E9023213440120A36070BD94F859
+:10218000202023690748334442F0010284F82020CC
+:10219000636100F0E1F9D4E9023213440120A36045
+:1021A00070BD00BF9800002038B50A490546007888
+:1021B000FEF76CFA044600F043F96B68A360AA6866
+:1021C000E260EA682046C4E90423BDE8384000F034
+:1021D0001FBA00BF0921010870B51C4886B000F085
+:1021E000C3F980B3FF231A4D1A4E8DF817302946D4
+:1021F0000DF11700FEF796FA044620B394F820304C
+:10220000DB07F4D503F024FD94F82010A268A3693D
+:10221000039221F0010184F820100293E46903F095
+:1022200019FD304602F012FADDE902329DF817106E
+:102230000094FEF713FE29460DF11700FEF772FA1F
+:1022400004460028DAD106B070BD00BF9800002017
+:1022500009210108806B010838B5027B81680446BA
+:10226000007902F021FF0949054620222078FEF777
+:102270002DFAD4E90412064BC560818243600261E5
+:10228000BDE838400C211830FEF7C2B959220108C8
+:1022900095220108F8B500F1180604463046FEF70D
+:1022A000ADF9078905463946E06802F0DFFF2846A8
+:1022B000FEF76CF93046FEF78BF960B1A38ABB429A
+:1022C00024D0206900B9F8BDA368114A1844C4E9B4
+:1022D00001200120F8BD3046FEF780F9A38A456849
+:1022E000BB4201D0236913B9A5600120F8BDA068E5
+:1022F0002946184403F0F2FC0028F5D0054B0648A7
+:1023000018221A6001F080FF00F04CF90020F8BD9F
+:102310001D23010810010020BC6B010808B5044B07
+:10232000044817221A6001F06FFF00F03BF900BF6C
+:1023300010010020EC6B010870B51B4905460078C0
+:10234000FEF7A4F90646FEF729F96B684360AB680F
+:102350000381044603F07CFC06F118012046FEF7D9
+:102360003FF9054603F076FC05B970BD304600F034
+:1023700067F80E4B72689A4208D063680C4A304680
+:10238000C6E90123BDE8704000F042B96168B06859
+:1023900003F0A4FC0028F0D0064B074819221A606D
+:1023A00001F032FF00F0FEF8592201081D23010858
+:1023B0009522010810010020BC6B010870B582B0A5
+:1023C000FF230C4D0C4E8DF8073008E0E068A18A21
+:1023D00002F04CFF666004F11800FEF715F929467B
+:1023E0000DF10700FEF79EF904460028EED102B079
+:1023F00070BD00BF5922010895220108027A416888
+:10240000007802F051BE00BF00207047084B094819
+:1024100010B500221A7203F05DFC074A0749946860
+:102420000346234403F10044012093608C6010BDF7
+:1024300004000020A08601001C00002028000020CD
+:1024400010B5044603F008FC0E490B68A34202D104
+:1024500011E0A3420CD01A461B68002BF9D14B683F
+:10246000A34204BF084B4B60BDE8104003F0F8BB2B
+:1024700023681360F3E7054BA2689A6022681A602C
+:102480000B60ECE7040000201C000020100000207E
+:102490002DE9F8431C4F3E68736830463BBB01F0A2
+:1024A000D7F8B568336838B39968284603F016FC46
+:1024B00010B12846BDE8F8837C683368A168D3F87A
+:1024C00008903B60284603F009FC00B13C68A04638
+:1024D00024682846A16803F001FC0028F7D04D4687
+:1024E00034607E60C8F800602846BDE8F8839847ED
+:1024F000B56833680028D7D17A689D683B60B242DE
+:10250000D7D17B60D5E700BF04000020074B084A05
+:102510000849094810B49C6894605DF8044B0A604F
+:102520004B601360186003F0E3BB00BF1C00002089
+:10253000100000200400002028000020014B002291
+:102540001A72704704000020024B187AC043C0F38F
+:10255000C010704704000020024B00221A720123B1
+:10256000037070470400002003780246D8B210B10F
+:102570000023137001207047024B587A003818BFAF
+:10258000012070470400002008B5044802F05EF8FE
+:10259000034B997ABDE80840FEF760BC186C01084F
+:1025A0000400002000B583B0019003F051FB0199B5
+:1025B0000148FDF763FE00BF9C00002008B50248FB
+:1025C00001F022FEFFF7EEFF3C6C010808B5084A57
+:1025D000537A23B1022B1CBF0023537208BD054B55
+:1025E000054816221A6001F00FFEFFF7DBFF00BF5F
+:1025F0000400002010010020546C010808B5034BB2
+:102600005B7A03B108BDFFF7CDFF00BF04000020D7
+:102610002DE9F0411A4E8568074603F01DFB34682A
+:102620008046A168284603F059FB70B92646246805
+:102630002846A16803F052FB0028F7D03C603760C1
+:102640004046BDE8F04103F00BBB03F04BFB0146F5
+:10265000284603F043FB50B90A4B33609C4208BF45
+:1026600024683C609D601F6003F042FBE8E7064879
+:1026700001F0CAFD737A002BEED1FFF793FF00BF84
+:102680000400002010000020786C010870B582B0B2
+:1026900001F060FD02F038F902F0B2FA02F0F8F948
+:1026A000304801F0D3FFFEF7D9FB03F0D1FA2E48F2
+:1026B000FDF7DEFD0446002836D103F0CBFA03F027
+:1026C00011FB2A4D2A4E28601CE0FF23337203F0D1
+:1026D000CBFA96F90830002BF9D103F0BBFA03F0DE
+:1026E00001FB2B68184428600123337201F05EFD62
+:1026F00003F0F8FA044621462868FEF7F3F82C6048
+:1027000002F08AFA03F0B4FA96F90830002BEBD005
+:1027100003F0E8FA2B68181A286003F099FA96F982
+:102720000830002BD9D0D0E703F092FA03F0DAFAA0
+:102730000F4B5A7A014602B99C720D4C019102234B
+:102740006372FFF7E3FE01F013FD0123637203F0F0
+:1027500081FA084801F07AFFA27A0199FEF77EFB20
+:10276000ABE700BF886C01089C000020F800002047
+:1027700004000020946C010838B5074905464C2236
+:102780000078FDF7A3FF0446044B2879636000F04E
+:102790000BFD206138BD00BF79270108A127010882
+:1027A00008B5034604481A7E42F004021A76FFF781
+:1027B000D3FE002008BD00BFFC00002070B54A4BCE
+:1027C00004460D4693E8070086B00DF10C0CACE80A
+:1027D000030003AB20698CF800200121092200F0DE
+:1027E00039FD627E9DF80E1002F11A0311F0F0001F
+:1027F000234419D0F02817D0A118FF221A71DA70DB
+:102800009A705A7000268A76637E0533DBB22D2BD0
+:10281000637658D81E2E37D9E38A0133E3823348D2
+:10282000FFF79AFE06B070BD9DF8100010F0F0069C
+:1028300046D19DF812C01CF0F00601D0F02EDBD17D
+:102840009DF81360902ED7D19DF8146026F0800675
+:10285000202ED1D801F01F0141EA4C114FEA8C0C17
+:1028600022440CF0600C00F01F004CEA00009DF8C0
+:102870000DC082F81AC09DF80F205A709DF81120E3
+:10288000D97018719A70BFE7023E1E2EC7D9237EF9
+:102890009B07C7D52046FFF7D3FD237E23F0040313
+:1028A000237603F0D5F903F01DFAE36802461344DA
+:1028B0002046A360FFF7ACFE03F0CCF906B070BD74
+:1028C000F02E99D1B5E70A4801F0C0FE04F11A03D1
+:1028D0000093637EA28A2946FEF7C0FAA38A0022EB
+:1028E00001336276A38295E718670108FC00002097
+:1028F000BC6C01082DE9F04B3849054686B00078DC
+:10290000FDF7C4FEAE6804467EB1FFF799FD6B6823
+:10291000A360A968E160002201232046626123834D
+:1029200006B0BDE8F04BFFF773BE95F80080FFF7E7
+:1029300087FD2D232676ADF8143003F0D3F905ABCF
+:10294000022231468146206900F084FC03F0CAF976
+:1029500021258346B92701E0013D16D005AB20694A
+:102960008DF81470022201218DF8156000F072FCC0
+:102970009DF8153033F0800307D0202BECD841466A
+:102980002046FFF71BFF013DE8D1637EA3B9144841
+:102990009DF8155001F05AFEE68ACDE90256657E93
+:1029A0000195A48A0094ABEB09034A464146FEF721
+:1029B00055FA06B0BDE8F08B0A4801F047FE04F175
+:1029C0001A01637EA28A00914146FEF747FA00236E
+:1029D0006376A38A0133A382D9E700BF7927010870
+:1029E000E86C0108BC6C0108F0B5154989B00646D1
+:1029F0000078FDF74BFEB9230446ADF81C3003F018
+:102A000071F907AB022205460121206900F022FC82
+:102A100003F068F931689DF81D7005910646094874
+:102A200001F014FE731B2A46E58A0599CDE902756B
+:102A3000657E0195A48A0094FEF710FA09B0F0BDF6
+:102A400079270108E86C010870B51F4882B0FFF7CC
+:102A50008BFD90B3FF231D4D8DF8033002262946D0
+:102A60000DF10300FDF75EFE044630B3237E5A07E6
+:102A7000F5D5DB0723D5FFF7E3FC40F62D0C00214D
+:102A80002069267601AB0222ADF804C000F0E2FB1B
+:102A900003F0DEF803F026F9E3680246134420460B
+:102AA000A360FFF7B5FD03F0D5F829460DF103004B
+:102AB000FDF738FE04460028D8D102B070BD9DF85D
+:102AC0000310FFF77BFECAE7FC000020792701080E
+:102AD00070B5067A032E044610D8104900784C22AF
+:102AE000FDF7F4FD05460E4B20796B6000F05CFBB2
+:102AF000286100F0A3FB48B1EE7570BD094B0A4890
+:102B000014221A6001F080FBFFF74CFD054B0748CB
+:102B100015221A6001F078FBFFF744FDD12A010865
+:102B2000312B0108100100204C6D0108686D01086F
+:102B300010B5837D5A0704460BD5837E0133837617
+:102B40000648FFF709FDD4E9023213440120A360CF
+:102B500010BD43F004038375F2E700BF00010020BD
+:102B6000F0B506781B4983B005463046FDF78EFD6B
+:102B70000446FFF765FC0023A375AF685FB9237EA9
+:102B8000BBB9154801F062FDA28A314603B0BDE829
+:102B9000F040FEF763B96A68A260AA68E260237633
+:102BA000EA6862762046A38203B0BDE8F040FFF7F2
+:102BB0002FBD0A4801F04AFD04F11B01237EA28AC1
+:102BC00000913146FEF74AF9A38A27760133A382A2
+:102BD000D7E700BFD12A0108B46D0108886D01084C
+:102BE0002DE9F04390F800803249054685B0404613
+:102BF000FDF74CFD0446A8682F79FEF73FF894F8DE
+:102C00001790B9F1020F054623D003F06BF8034685
+:102C10003A46206901211C462B4600F01BFB03F0BD
+:102C200061F80646322003F055F8331B834288BF13
+:102C30000027B9F1010F18BF26461F4801F006FD15
+:102C400000953B4632464146FEF708F905B0BDE81F
+:102C5000F0830DF108092169484600F0F3FA99E87C
+:102C60000300002202F06AF903F03CF80646012056
+:102C700003F030F8064401E002F0FAFF03F032F806
+:102C80000146304603F02AF80028F5D002F0E0FFB4
+:102C900099E80300012202F051F903F023F80646F7
+:102CA00002F0D8FF20692B463A46012100F0D2FA03
+:102CB000C3E700BFD12A0108D86D010838B507491C
+:102CC00005464C220078FDF701FD0446044B2879A7
+:102CD0006360FEF7FBFC206138BD00BFBD2C01081E
+:102CE000E52C010808B5034604481A7E42F00402A8
+:102CF0001A76FFF731FC002008BD00BF0401002058
+:102D00002DE9F04184B0722302698DF8083003AFD9
+:102D100002230093019702AB04460E4692E803009B
+:102D2000012202F0BBFB9DF80C309DF80D5003F022
+:102D30001F0345EA0325B5F5FD7F02DBE38A013376
+:102D4000E382627E304974238DF80C30C2F1300387
+:102D50009D4234BFEBB2DBB2A1FB03139B0803EB34
+:102D600043035B0013F0FF0805D1237E9B0722D4A9
+:102D700004B0BDE8F0811A322244CDE90082216915
+:102D80003B4603C9012202F089FB637E4344DBB268
+:102D90002A2B637626D81C4BADB2A3FB0525AD08C4
+:102DA000A3FB0823B5EB930FDFD91848FFF7D4FB3B
+:102DB00004B0BDE8F0812046FFF742FB237E23F0FC
+:102DC0000403237602F044FF02F08CFFE36802461E
+:102DD00013442046A360FFF71BFC02F03BFF04B046
+:102DE000BDE8F0810A4801F031FC04F11A030093B8
+:102DF000637EA28A3146FEF731F8A38A00220133AE
+:102E00006276A382C7E700BFABAAAAAA040100208A
+:102E1000146E01082DE9F04B4249054688B0007850
+:102E2000FDF734FCAE6804467EB1FFF709FB6B6822
+:102E3000A360A968E1600022012320466261238328
+:102E400008B0BDE8F04BFFF7E3BB2D78FFF7F8FAC9
+:102E500023232676ADF8183002F044FF226906AB32
+:102E600081464FF0720892E80300022202F0E6FA6F
+:102E700002F038FF8DF81480236907AF022601970E
+:102E800000960122834693E8030005AB02F006FB9F
+:102E90009DF81C3003F01F029DF81D3043EA022309
+:102EA000052B18DD29462046FFF72AFF8DF81480F0
+:102EB0002269CDE9006705AB92E80300012202F028
+:102EC000EDFA9DF81C209DF81D3002F01F0243EA28
+:102ED0000223052BE6DC637E9BB9134801F0B6FBA9
+:102EE0002946E58A039500250295657E0195A48A09
+:102EF0000094ABEB09034A46FDF7B0FF08B0BDE80C
+:102F0000F08B0A4801F0A2FB04F11A01637EA28A49
+:102F100000912946FDF7A2FF00236376A38A0133BF
+:102F2000A382DAE7BD2C0108406E0108146E010887
+:102F3000F0B51E4989B007460078FDF7A7FB0546A6
+:102F400002F0D0FE72238DF8183007AB2A69019386
+:102F500002230093064606AB92E80300012202F02A
+:102F60009DFA02F0BFFE9DF81C40114B3968059197
+:102F700004F01F029DF81D408DF81C20074644EA0E
+:102F800002240C48A3FB043401F060FBBB1B324657
+:102F9000EE8A0599A408CDE902466C7E0194AC8ABC
+:102FA0000094FDF75BFF09B0F0BD00BFBD2C010828
+:102FB000ABAAAAAA406E01082DE9F04190F8108052
+:102FC000B8F1030F84B0054631D8007800F0ECF872
+:102FD00007461C20FDF7B6FA02AE04466968304683
+:102FE000012202F02DF896E8030084E803006E4603
+:102FF000A9683046002201F041FF96E8030004F181
+:10300000080383E803000022E968304601F036FF38
+:1030100096E8030004F1100383E8030021463846D4
+:1030200084F8188004B0BDE8F04100F0F1B8044B1A
+:10303000044813221A6001F0E7F8FFF7B3FA00BF63
+:1030400010010020A46E0108027E00F1100393E835
+:10305000030002F0020201F071BF00BF2DE9F04B46
+:1030600082B0541E07460091E4B2002A4DD003F10D
+:10307000FF392344019300F1100600F1080819F804
+:10308000015F4FF0080B00241AE096E8030001F0FE
+:103090002FFF05F0800298E8030001F04FFF96E84B
+:1030A000030001F025FF97E8030001F0F1FF640041
+:1030B000E4B26D000443BBF1010BEDB2E4B21DD0EC
+:1030C0003B7EDB0705F08002DFD498E8030001F0C7
+:1030D00035FF96E8030001F00BFF97E8030001F0CD
+:1030E000D7FF6400E4B2044396E8030001F000FF58
+:1030F0006D00BBF1010BEDB2E4B2E1D1009B0BB16D
+:1031000089F80040019B4B45B9D102B0BDE8F08B76
+:1031100070B5044682B00F4900781422FDF7D6FA44
+:10312000A66861686D46B6FA86F2520904462846DA
+:1031300001F0A4FE95E8030004F1080383E803000E
+:10314000002E94F9103014BF092201221343237476
+:1031500002B070BD11310108F8B50D49044600797F
+:10316000FDF794FA267A0B4906F108020746207803
+:10317000FDF7ACFA05460671E0682F60FDF77EFDAD
+:1031800032460146681DBDE8F84003F089BA00BF29
+:103190001131010859310108024900781422FDF764
+:1031A00095BA00BF113101080149FDF76FBA00BFA0
+:1031B0001131010870B505461249007882B0FDF75B
+:1031C00065FA2A7A032A044613D8037C13F0060F03
+:1031D0000FD16E46EB686968304602F0C1F996E897
+:1031E0000300237C43F0040384E80300237402B04B
+:1031F00070BD054B054811221A6001F005F8FFF774
+:10320000D1F900BF1131010810010020A46E01089E
+:1032100008B5037C13F0060F04D143F002030374D6
+:10322000016008BD034B044812221A6000F0ECFF55
+:10323000FFF7B8F910010020A46E0108007C00F02F
+:10324000010070470831034603C983E803001846AC
+:10325000704700BF2DE9F043057C15F0060F83B0E1
+:1032600004460E46174699461DD0A9070DD500689D
+:10327000FFF7EAFEEA0735D420684B463A46314666
+:1032800003B0BDE8F043FFF7E9BED0E9000102F06A
+:10329000B9F9EB070AD494E803003B46CDF8009057
+:1032A000324602F0C1F903B0BDE8F08304F108082A
+:1032B000C5F3C00298E8030001F040FECDF800908D
+:1032C00094E803003B463246ED0802F0ADF998E879
+:1032D000030085F0010202F0010203B0BDE8F043F3
+:1032E00001F02CBE04F1080898E80300C5F3C00201
+:1032F00001F024FE20684B463A463146ED08FFF7C0
+:10330000ADFEE4E770B506780F4982B0044630465A
+:10331000FDF7BCF90346D4E901501C46FDF7AEFCAD
+:10332000EAB2034601212046CDE90023FFF792FFD0
+:10333000064801F08BF9DDE90023314602B0BDE813
+:103340007040FDF78BBD00BF11310108B86E010858
+:1033500030B50A4983B004460078FDF797F9227921
+:1033600001920546A068FDF789FC019A03460021F9
+:10337000284603B0BDE83040FFF76CBF11310108AB
+:1033800010B582B0FF23154C8DF8073002E0027CA7
+:10339000D3071AD421460DF10700FDF7C3F9002821
+:1033A000F5D1FF230E4C8DF8073003E00279006859
+:1033B000FFF750FF21460DF10700FDF7B3F900219B
+:1033C000431D0028F2D102B010BD82F0080208307F
+:1033D00003C8C2F3C00201F0B1FDDBE711310108FF
+:1033E0005931010838B500F1340504462846FDF787
+:1033F000EFF810B10020606138BD2846FDF7FEF8F7
+:10340000B0F90830426823821344E36094F84430F2
+:10341000D90605460FD5A168438963610A44A260B5
+:103420002A7BD20711D4226B134423632846FDF76D
+:10343000ADF8012038BDA16943890A44A261A260A8
+:103440005A0062612A7BD207EDD5216B04F1280274
+:103450005B1A236392E8030001F040FDE6E700BF3A
+:1034600070B500F12003044693E8030001F036FD37
+:1034700002F038FC6369E169013BDA07636100EB44
+:10348000010503D5A5600126304670BD83B1E26811
+:10349000A069B4F9103010441344A061E3602946D8
+:1034A00002F01CFC0028EDD1A369A3600126EBE724
+:1034B0002046FFF797FF06460028E5D0A06829467A
+:1034C00002F00CFC0028DFD0A3684FF47A705E1B7A
+:1034D00002F000FC4042B042D4DD044B04480E220E
+:1034E0001A6000F091FEFFF75DF800BF10010020A8
+:1034F000E46E01082DE9F04105463249007882B0BA
+:103500004822FDF7E3F8EF68002F044627DD042288
+:103510006E4680F844206968304601F0AFFC96E8BA
+:10352000030004F1200383E803000022A968304669
+:1035300001F0A4FC96E8030004F1280383E80300EB
+:103540004FF0404323632B69E361102104F1340001
+:10355000FDF75EF81C4B636002B0BDE8F0814FF0F0
+:1035600000086E4680F8448069684246304601F0A3
+:1035700085FC96E8030004F1200383E8030042463B
+:10358000A968304601F07AFC96E8030004F12803AC
+:1035900083E803004FF0404323632B69E36110216C
+:1035A00004F13400FDF734F8E369002BD2D1002F89
+:1035B000D0D094F8443043F0100384F8443002B083
+:1035C000BDE8F081F53401086134010838B50446DE
+:1035D000A0F13C052846FEF733FF237A54F80C1C73
+:1035E000002244F8342C44F8242C54F8282CD80613
+:1035F0004CBF891AA1EB520103F01403002943F0D8
+:103600000803C8BF49420022237205F1280344F889
+:103610000C1C44F8282C93E8030001F08FFC227A5C
+:10362000D3060DD5083C03E0FCF7E8FFFCF7AEFF3E
+:103630002046FCF7CDFF03462046002BF4D038BDD2
+:10364000203595E8030002F0040201F077FCE9E779
+:1036500000F1200310B5044693E8030001F03EFC9E
+:103660006369013B0AD0D4E90210B4F91020636108
+:1036700001440244C4E90212012010BD2046BDE805
+:103680001040FFF7AFBE00BF70B52849054600786F
+:10369000FCF7FCFF0646FCF781FF6B6843602B8953
+:1036A00043810446D3B3EA6802810023037302F026
+:1036B000CFFA96F8443003F00101C3F3400291427F
+:1036C00005D0227B42F0010283F00103227372696C
+:1036D000CAB91A0710D406F1340186F844302046DE
+:1036E000FCF77EFF3046FFF77DFE3046FEF790FF89
+:1036F000BDE8704002F0AEBA2046FCF747FFBDE8D7
+:10370000704002F0A7BA86F8443006F13401204632
+:10371000FCF766FFBDE8704002F09CBA044B054818
+:103720000F221A6000F070FDFEF73CFFF53401082F
+:1037300010010020FC6E010838B50C4904460078E1
+:10374000FCF7A4FF63680446002B14BF0225002584
+:1037500002F07EFA94F8443023F002031D4384F80B
+:103760004450BDE8384002F075BA00BFF534010896
+:1037700038B50F4905460078FCF788FF04466D68A8
+:1037800002F066FA63695BB994F84430A56023F0EF
+:103790000803A56184F84430BDE8384002F05ABA05
+:1037A000044B054810221A6000F02EFDFEF7FAFEC9
+:1037B000F534010810010020146F010870B5067877
+:1037C0000F493046FCF762FF054602F041FA95F8D2
+:1037D00044302C6B6A69DB064CBFA41AA4EB52047C
+:1037E00002F038FA002CB8BF6442064800F02EFF01
+:1037F00004F140423146BDE87040FDF72FBB00BFE9
+:10380000F53401083C6F010838B5084904460078D2
+:10381000FCF73CFF0546207900F07CFB05F13C01FC
+:10382000034ABDE8384000F07BBB00BFF534010817
+:10383000CD35010830B583B0FF230B4D8DF807302F
+:1038400006E0FCF7E1FE002104F13C00FFF7BEFEBC
+:1038500029460DF10700FCF765FF04463430002CC3
+:10386000EFD103B030BD00BFF534010810B50446F8
+:103870000648FEF771FED4E90231627F42F0010290
+:103880000B446277A360012010BD00BF0801002037
+:1038900010B5047A032C08D8084900782022FCF7D8
+:1038A00015FF074B0477436010BD064B0648032203
+:1038B0001A6000F0A9FCFEF775FE00BF9138010800
+:1038C0006D380108100100205C6F010838B50D4902
+:1038D00004460078FCF7DAFE0B4B054600221A700E
+:1038E000FEF7AEFD6368AB60A368EB6003B938BD5B
+:1038F000E3682B6123696B612846BDE83840FEF719
+:1039000087BE00BF91380108050100202DE9F04B6A
+:103910003D4886B0FEF728FE002849D0FF233B4DE6
+:103920003B4FDFF8F0808DF81330002629460DF16B
+:103930001300FCF7F7FE0446002839D0637FDA074E
+:10394000F4D502F085F9637FD4F8089023F00103E1
+:10395000637702F07FF9237F032BE7D8DFE803F0DA
+:1039600046392B02A0699DF813B0ADF8146005AB81
+:1039700002220121FFF76EFCBDF8144064BAA4B224
+:10398000384600F063FE23464A4659460096FDF746
+:1039900065FA6307CAD5404600F036FCFEF72EFEF6
+:1039A00029460DF11300FCF7BDFE04460028C5D1E1
+:1039B00006B0BDE8F08B9DF813100391384600F077
+:1039C00045FE039900964A4644F22C03FDF746FA59
+:1039D000ACE79DF813100391384600F037FE0399C9
+:1039E00000964A460023FDF739FA9FE79DF8131029
+:1039F0000391384600F02AFE039900964A464FF09C
+:103A0000A073FDF72BFA91E7080100209138010817
+:103A10007C6F0108B86F01082DE9F043044685B0BA
+:103A20001A4900783422FCF751FE94F80890D4F833
+:103A30000480E768B9F1000202AE054618BF012212
+:103A40004146304601F0FCFA96E8030005F1140304
+:103A50006E4683E8030001223946304601F00EFA33
+:103A600096E8030005F10C0383E80300B9F1000FA9
+:103A700008BF012322692A6218BF1123B84508BF75
+:103A800043F020032B7705B0BDE8F083193A010815
+:103A900038B5044600F10C0393E8030001F01EFA68
+:103AA000637F94F81CC094F81FE0656A0133DBB2B1
+:103AB0008CF0010C734584F81CC00CF0010C29D269
+:103AC00004EBD30203F0070192F828200A4102F028
+:103AD00001029445294607D016E092F828200241B9
+:103AE00002F0010294450FD10133DBB2734504EBC0
+:103AF000D30203F007002944EFD3A368064A0B441E
+:103B0000C4E90123012038BDA26863770A44A2609A
+:103B1000012038BD2946F0E7853B010800F10C0380
+:103B200010B5044693E8030001F0D8F902F0DAF882
+:103B3000637F227F0133DBB282F00102012B227707
+:103B4000637719D0042B05D8A268236A1344A360B5
+:103B5000012010BDA368626A1A44801A811C226A7F
+:103B600048BF411D02EBA1011844054A61620844A7
+:103B7000C4E90120012010BDA268801A6062E4E758
+:103B8000913A010810B5837F0446B3B1027F9306D2
+:103B90000AD4A368606A164A002103EB80036177A8
+:103BA000C4E90123012010BD00F1140393E80300D0
+:103BB00002F0100201F010FAEBE7037F13F0200F80
+:103BC00000F10C0393E803004FF001020CD101F067
+:103BD000B5F9237F074803F0300343F00903237747
+:103BE000FEF7BAFC002010BD01F010F9F1E700BFAC
+:103BF0007D3C01080C01002000F1140310B50446BF
+:103C000093E8030001F044FA637F04EBD30C012234
+:103C100003F0070102FA01F19CF8282078B10A4369
+:103C2000D2B28CF82820A27F0133DBB29A4209D9A4
+:103C3000A268616A63770A44A260012010BD22EA8B
+:103C40000102EEE7237F13F0200F04F10C0393E849
+:103C500003004FF001020CD101F070F9237F0648F8
+:103C600003F0300343F009032377FEF775FC0020CF
+:103C700010BD01F0CBF8F1E70C01002000F11403B6
+:103C800010B5044693E8030001F002FA237F68B1FF
+:103C900043F004032377637F5A1C3F2B62770FD8CE
+:103CA000A368626A13440120A36010BD5B07F2D5CC
+:103CB0006077114B63602046BDE81040FFF79CBF62
+:103CC000237F0022A27713F0200F04F10C0393E866
+:103CD00003004FF001020CD001F098F8237F074851
+:103CE00003F0300343F009032377FEF735FC00208F
+:103CF00010BD01F023F9F1E7F93B01080C010020A8
+:103D0000F8B5264905460078FCF7C0FC037F13F0A0
+:103D10000206044600D0F8BDA8682F79FCF7AEFF74
+:103D20000A2F2D7B014630D80A2D2ED83A4604F1B1
+:103D3000280002F0B5FC237F667703F0310343F0DF
+:103D40000203ED002377FB00E377A5772FB194F80A
+:103D5000283003F03F032A2B14D0226A104B6262F2
+:103D6000636001F075FF01F0BDFF0546C82001F05A
+:103D7000B1FF2844A0602046FEF74AFCBDE8F840A9
+:103D800001F068BF074B6360EBE7074B074802226F
+:103D90001A6000F039FAFEF705FC00BF193A010875
+:103DA000913A01081D3B010810010020D46F010861
+:103DB00070B5184882B0FEF7D7FB48B3FF23164D05
+:103DC000164E8DF8073029460DF10700FCF7AAFCC6
+:103DD0000446E8B1237F1B07F5D501F039FF237FA7
+:103DE00023F00803237701F035FF304600F02EFC66
+:103DF000A27F9DF8071004F12803D208FDF72EF8E2
+:103E000029460DF10700FCF78DFC04460028E1D19E
+:103E100002B070BD0C010020193A0108EC6F0108D6
+:103E200030B583B0FF23114D8DF8073008E003C98A
+:103E300000F0ECFF237F03F0300343F0010323770E
+:103E400029460DF10700FCF76DFC00F10C01012281
+:103E500004460B4640B1207F8006E8D493E8030077
+:103E6000012201F06BF8E5E703B030BD193A010813
+:103E700010B50446074894F8203043F0040384F852
+:103E80002030FEF769FBA368A26913440120A360F8
+:103E900010BD00BF1401002008B524220449007899
+:103EA000FCF714FC034A044B4260036108BD00BFE9
+:103EB000993E0108713E0108053F010870B590F870
+:103EC0002030DA0704460E4619D5C06984F821105F
+:103ED00023F0050343F0040384F8203050B100259B
+:103EE000D0E900233146E261C0E900559847E06916
+:103EF0000028F5D1BDE870400148FEF72DBB70BD2C
+:103F00001401002008B503460C38997DFFF7D6FF51
+:103F1000002008BD0149FCF7B9BB00BF993E01086C
+:103F200070B50C460546164601F096FE636843B927
+:103F30003EB1EB69C4E90036EC61BDE8704001F0C8
+:103F40008FBE044B044801221A6000F05DF9FEF7B1
+:103F500029FB00BF100100201070010838B51A4974
+:103F600005460078FCF792FB044601F071FE2046FE
+:103F7000FEF766FA04F10C00FEF762FAE36933B16A
+:103F800000211A461B68C2E90011002BF9D100225A
+:103F90000123238484F822206B68A360AB68C4E902
+:103FA000063233B9EB6884F82230BDE8384001F0BE
+:103FB00051BE2046FEF72CFBEB6884F82230BDE8AA
+:103FC000384001F047BE00BF993E010830B51049A6
+:103FD00083B005460078FCF759FB044601F038FE33
+:103FE00094F82030DB0704D403B0BDE8304001F082
+:103FF00031BE04F10C000190FEF722FA6B680198C3
+:104000006361FEF705FB03B0BDE8304001F022BE5E
+:10401000993E010870B50678134984B005463046CC
+:10402000FCF734FB044601F013FE29792046FFF724
+:1040300045FF2046FEF704FA002504F10C00FEF7C8
+:10404000FFF994F8213084F82050039301F002FE28
+:10405000064800F0FBFA039B00952A463146FCF720
+:10406000FDFE04B070BD00BF993E01083870010824
+:104070002DE9F0411E4886B0FEF776FAA0B3FF2383
+:104080001C4E1D4F8DF8173031460DF11700FCF70F
+:1040900049FB044640B394F820305B07F4D501F0A7
+:1040A00021FE054601F0D4FD94F8208094F82130DB
+:1040B000039328F0040284F8202001F0CBFD9DF842
+:1040C00017100291384600F0C1FA039B029900953F
+:1040D00008F00102FCF7C2FE31460DF11700FCF7B3
+:1040E00021FB04460028D6D106B0BDE8F08100BF10
+:1040F00014010020993E01083870010870B5144E73
+:1041000082B0FF2331460DF107008DF80730FCF730
+:1041100009FB00240546C8B1FEF792F905F10C0031
+:10412000FEF78EF9EB692BB11A461B68C2E9004411
+:10413000002BF9D1EC612C8485F8224031460DF139
+:104140000700FCF7EFFA05460028E5D102B070BD84
+:10415000993E010808B5FCF7E9F9FDF769FB01F0A4
+:104160008DFA01F0D3FDBDE8084001F067BC00BF47
+:1041700008B5FCF789FEFCF761FAFDF755FAFFF781
+:1041800059FBFFF7BBFFFCF79BF9FFF7F9F8FEF7C8
+:1041900015F9FDF76BFEFDF703FDFFF741FE01F09A
+:1041A00069FDBDE8084001F0AFBD00BF08B501F0F2
+:1041B0005FFDFFF75DFF01F05BFDFCF733F901F0F8
+:1041C00057FDFFF7A3FB01F053FDFEF73DFC01F0A7
+:1041D0004FFDFCF717FD01F04BFDFFF7E9FD01F086
+:1041E00047FDFDF7F9FF01F043FD01F03FFA01F053
+:1041F0003FFD01F011FE01F03BFD01F079FCBDE84F
+:10420000084001F035BD00BF10B5C8490446FCF7B1
+:104210003DF8002800F05581C5492046FCF736F8E6
+:10422000002800F04C81C3492046FCF72FF80028F5
+:1042300000F04B81C0492046FCF728F8002800F028
+:104240004281BE492046FCF721F8002800F03F815A
+:10425000BB492046FCF71AF8002800F03C81B94918
+:104260002046FCF713F8002800F03781B6492046B5
+:10427000FCF70CF8002800F02C81B4492046FCF72C
+:1042800005F8002800F02B81B1492046FBF7FEFF1E
+:10429000002800F02681AF492046FBF7F7FF0028F1
+:1042A00000F02181AC492046FBF7F0FF002800F028
+:1042B0001C81AA492046FBF7E9FF002800F017817E
+:1042C000A7492046FBF7E2FF002800F01281A5492C
+:1042D0002046FBF7DBFF002800F00D81A2492046B5
+:1042E000FBF7D4FF002800F00881A0492046FBF727
+:1042F000CDFF002800F003819D492046FBF7C6FF53
+:10430000002800F0FE809B492046FBF7BFFF0028F5
+:1043100000F0F98098492046FBF7B8FF002800F02C
+:10432000F48096492046FBF7B1FF002800F0F180A9
+:1043300093492046FBF7AAFF002800F0E880914946
+:104340002046FBF7A3FF002800F07E818E4920461F
+:10435000FBF79CFF002800F075818C492046FBF795
+:1043600095FF002800F06C8189492046FBF78EFFFD
+:10437000002800F0638187492046FBF787FF00286B
+:1043800000F05A8184492046FBF780FF002800F0A6
+:10439000518182492046FBF779FF002800F04881CF
+:1043A0007F492046FBF772FF002800F03F817D49DE
+:1043B0002046FBF76BFF002800F036817A49204643
+:1043C000FBF764FF002800F02D8178492046FBF7B9
+:1043D0005DFF002800F0248175492046FBF756FF59
+:1043E000002800F01B8173492046FBF74FFF00288F
+:1043F00000F0128170492046FBF748FF002800F0CA
+:1044000009816E492046FBF741FF002800F000813A
+:104410006B492046FBF73AFF002800F0F780694916
+:104420002046FBF733FF002800F0EE806649204667
+:10443000FBF72CFF002800F0E58064492046FBF7DD
+:1044400025FF002800F0DC8061492046FBF71EFFB5
+:10445000002800F0D3805F492046FBF717FF0028B3
+:1044600000F0CA805C492046FBF710FF002800F0EE
+:10447000C1805A492046FBF709FF002853D058490C
+:104480002046FBF703FF00284BD056492046FBF798
+:10449000FDFE002843D054492046FBF7F7FE0028D4
+:1044A0003BD052492046FBF7F1FEA0B350492046CD
+:1044B000FBF7ECFE002814BFFF20332010BD0320C3
+:1044C00010BD022010BD052010BD042010BD062027
+:1044D00010BD092010BD072010BD082010BD0A2006
+:1044E00010BD0B2010BD0C2010BD0D2010BD0E20E6
+:1044F00010BD0F2010BD102010BD112010BD1220C6
+:1045000010BD132010BD142010BD152010BD1720A4
+:1045100010BD162010BD322010BD312010BD30203E
+:1045200010BD2F2010BD2E2010BD00BF546C0108FF
+:10453000786C01083C6C01088C69010874690108F9
+:104540005C6901089868010878700108D46701085F
+:10455000C0670108AC67010828680108686701089E
+:10456000986701083C68010884670108A06A01088F
+:10457000306A0108686A0108046A0108146F0108BA
+:10458000FC6E0108E46E0108107001082467010840
+:10459000A46E0108B86F01085C6F0108F86A010891
+:1045A000BC6B0108EC6B0108686D01084C6D0108DB
+:1045B0000C690108E4680108D0680108D46F01089B
+:1045C0003C6B0108206B0108A4700108BC70010855
+:1045D000D0700108F0700108047101081C71010815
+:1045E000287101083C7101084C71010860710108D3
+:1045F0008C7101082D2010BD2C2010BD2B2010BD6A
+:104600002A2010BD292010BD282010BD272010BD54
+:10461000262010BD252010BD242010BD232010BD54
+:10462000222010BD212010BD202010BD1F2010BD54
+:104630001E2010BD1D2010BD1C2010BD1B2010BD54
+:104640001A2010BD192010BD182010BD10B57649D4
+:104650000446FBF71BFE002800F0B180734920469A
+:10466000FBF714FE002800F0A88071492046FBF7F4
+:104670000DFE002800F0A7806E492046FBF706FEDD
+:10468000002800F09E806C492046FBF7FFFD0028C3
+:1046900000F09B8069492046FBF7F8FD002800F0F8
+:1046A000988067492046FBF7F1FD002800F09380D1
+:1046B00064492046FBF7EAFD002800F08880624943
+:1046C0002046FBF7E3FD002800F087805F49204685
+:1046D000FBF7DCFD002800F082805D492046FBF7F7
+:1046E000D5FD00287DD05B492046FBF7CFFD002893
+:1046F00079D059492046FBF7C9FD002875D05749A4
+:104700002046FBF7C3FD002871D055492046FBF732
+:10471000BDFD00286DD053492046FBF7B7FD0028AA
+:1047200069D051492046FBF7B1FD002865D04F49BB
+:104730002046FBF7ABFD002861D04D492046FBF732
+:10474000A5FD00285DD04B492046FBF79FFD0028C2
+:1047500059D049492046FBF799FD002857D04749D1
+:104760002046FBF793FD00284FD045492046FBF734
+:104770008DFD002855D043492046FBF787FD0028D2
+:104780004DD041492046FBF781FD002845D03F49E7
+:104790002046FBF77BFD00283DD03D492046FBF736
+:1047A00075FD002835D03B492046FBF76FFD3A4B9D
+:1047B00000280CBF1846002010BD384810BD3848EE
+:1047C00010BD384810BD384810BD384810BD3848B5
+:1047D00010BD384810BD384810BD384810BD3848A5
+:1047E00010BD384810BD384810BD384810BD384895
+:1047F00010BD384810BD384810BD384810BD384885
+:1048000010BD384810BD384810BD384810BD384874
+:1048100010BD384810BD384810BD384810BD384864
+:1048200010BD384810BD00BF886C0108186C010825
+:10483000946C0108A868010878680108606801089C
+:1048400050680108EC670108B8690108A46901080B
+:104850003C6F0108C8690108387001083867010811
+:10486000B86E01087C6F0108D06A0108E86C010885
+:10487000BC6C0108D86D0108B46D0108886D010891
+:10488000406E0108146E010830690108EC6F0108E0
+:104890005C6B0108806B0108B8710108C8710108E0
+:1048A000C0710108A0710108D0710108D871010818
+:1048B000F0710108E0710108E8710108F871010860
+:1048C00000720108087201081072010818720108CC
+:1048D000207201082872010830720108387201083C
+:1048E00040720108487201085072010860720108A4
+:1048F00058720108B0710108A871010878720108A6
+:10490000707201086872010830B50B4C83B0012148
+:10491000082001F061FB802541F2030301A9204634
+:10492000ADF80630ADF8045001F0CEFA2946204625
+:1049300001F02AFB03B030BD000C01404348444A5B
+:10494000D0F88810434B41F4700110B4C0F88810BF
+:10495000116841F0010111605468234053601368ED
+:1049600023F0847323F480331360136823F48023CB
+:104970001360536823F00F6300204FF41F0123F4EA
+:1049800070235360D06210639160D3693249334819
+:1049900043F08053D361CB6843F00103CB60D3690C
+:1049A00023F08053D361016841F0900101601168E8
+:1049B00041F480314FF6FF73116001E0013B02D0FA
+:1049C00011688803FAD5224B1A68910339D5234A16
+:1049D000116821F003011160116841F004011160B8
+:1049E0005A685A605A6842F400525A605A6842F44F
+:1049F000A0625A605A6822F0036222F470225A6060
+:104A00005A6842F0016242F470225A601A6842F019
+:104A100080721A601A689201FCD559680C4A21F01C
+:104A200003015960596841F002015960536803F06D
+:104A30000C03082BFAD1054B094A5DF8044B9A6028
+:104A40007047084B084A1A60F5E700BF00ED00E028
+:104A50000010024000C0FFF800700040002002403B
+:104A6000000001083400002000127A0008B54FF45D
+:104A7000006001F09FFB00B908BD4FF4006001F039
+:104A8000A7FB024B01221A7008BD00BF15010020D0
+:104A900030B585B0012502231E226846154C8DF8DD
+:104AA00000208DF801308DF802308DF8035001F0B0
+:104AB000ABFA2946042001F09BFA0922002369463B
+:104AC000ADF8042020464722ADF80630ADF802309C
+:104AD000ADF8002001F082FB2A462946204601F06D
+:104AE00061FC2946204601F053FC23682B432360D8
+:104AF00005B030BD000800400A4B1B783BB10A4AA4
+:104B00000A49136801338B4288BF094B1360094B74
+:104B100009491A6801321A601A688A4284BF002261
+:104B20001A60704728010020240100207F8D5B005F
+:104B3000808D5B00180100203F420F0008B512482D
+:104B4000012101F039FC00B908BD01210E4801F036
+:104B50003FFC0E4A0E49136801338B4204D81360A0
+:104B6000BDE80840FFF7C8BF0A490B780133DBB244
+:104B70003B2B4FF0000094BF0B700870BDE808405D
+:104B80001060FFF7B9BF00BF0008004020010020FF
+:104B90009F8601001C010020704700BFFEE700BF98
+:104BA000FEE700BFFEE700BFFEE700BF704700BFA3
+:104BB000704700BF054A00234FF0010CA0F800C069
+:104BC0008370C0E90213436013607047180100202E
+:104BD0000278437810B46AB163B9817851B9074952
+:104BE00044680968091B84688C4203D84FF48073B9
+:104BF0000380134618465DF8044B704718010020E7
+:104C0000034B0448002242F210711A70FFF7D2BF22
+:104C1000050100202C01002008B50E48FFF7D8FF41
+:104C200048B10D4B1A783AB9BDE80840094842F23C
+:104C30001071FFF7BFBF08BD0848002280211A701D
+:104C400001F0A4F9BDE80840024842F21071FFF7F4
+:104C5000B1BF00BF2C0100205C000020000C01400F
+:104C600070B5274A82B005460423002401E012F8FB
+:104C7000013F8B420AD001340F2CF8D1214B22483E
+:104C80000D221A60FFF7C0FAFDF78CFC1F4800F0F8
+:104C9000AFF8064698B10121042001F09DF90322E6
+:104CA00000231B488DF8073001A9ADF8042001F05E
+:104CB0000BF9164B2846C5E9003402B070BD01213E
+:104CC0004FF4805001F07CF93046072101F05CFA86
+:104CD0000E48012101F0DAF906F1804606F50236A8
+:104CE0002021304601F04AFA0028F9D00748074E43
+:104CF00001F0D6F9304601F0D9F90028FAD1CAE717
+:104D0000B881010810010020F0700108000802407D
+:104D10000008014030B583B002AB03E90300012273
+:104D2000052304460D46C9B201F0CEF90121204603
+:104D300001F0C0F92368DA060AD59B0702D5636B38
+:104D4000AB420ED0142003B0BDE8304000F0C2BF2B
+:104D5000054B65631420A36003B0BDE8304000F04C
+:104D6000B9BF002003B030BD0100DE0082B06FF09B
+:104D7000100202AB026003E90300C06C80B202B013
+:104D8000704700BF30B5044683B002AB03E90300AF
+:104D90000D4600F061FF2368DB0602D5636BAB4272
+:104DA00004D003B0BDE8304000F05ABF6FF01003EC
+:104DB0002360E36C03B0BDE8304000F051BF00BF9A
+:104DC00070B584B0014601AC01A800F069FC70CC5C
+:104DD00000F042FF236833432360236815B10023AA
+:104DE0002E602B6004B0BDE8704000F039BF00BFFA
+:104DF00000B585B0014601A800F052FC019A039B62
+:104E00001068184005B05DF804FB00BF2DE9F041C3
+:104E100082B002AB03E9030005461649019E164B1A
+:104E20001746002001E051F8043B9D4214D00130A8
+:104E30000728F8D1002400F00FFF804607B9360498
+:104E400020462E610022012100F082FC404602B083
+:104E5000BDE8F04100F004BF04010023012202E09C
+:104E60000133102BE7D002FA03F13142F8D01C4491
+:104E7000E1E700BFCC81010800080140F0B56F29CF
+:104E800083B00C460546164619D8114B0A0953F84B
+:104E90002270A7B1384600F04BFC04F00F0401214A
+:104EA00001FA04F4CDE9007402AB13E903003246C1
+:104EB000FFF7ACFF2846C5E9007403B0F0BD054B11
+:104EC00005480B221A60FFF79FF9FDF76BFB00BF47
+:104ED000C881010810010020BC70010882B002AB3B
+:104EE00003E90300C3684B40C36002B0704700BFD2
+:104EF00000B583B002AB03E9030000F0ADFEDDE9CD
+:104F00000021D3684B40D36003B05DF804EB00F0A0
+:104F1000A7BE00BF10B5084C82B0019001F064FA42
+:104F2000204601F093FA0199204601F0FFFA02B001
+:104F3000BDE8104001F064BA00F8070800B583B07E
+:104F400002AB03E903000846009B82B11B4A93426F
+:104F50001BD01B4A93421CD01A4A93420BD1012901
+:104F60001BD0022908D1184B00221A7004E0134903
+:104F70008B4204D00004186103B05DF804FBB0F567
+:104F8000804FF7D1114B1A70F6E7B1F5804FF2D18F
+:104F9000F2E7B1F5806FEED1EEE772B6FFF7BAFF38
+:104FA000BFF34F8F0A490B4BCA6802F4E062134308
+:104FB000CB60BFF34F8F00BFFDE700BF001401407F
+:104FC000000C0140002001401501002016010020C6
+:104FD00000ED00E00400FA0530B585B004AB03E94C
+:104FE000030004461449039D144B002001E051F8CE
+:104FF000043B9C4212D001300728F8D100240192D2
+:1050000000F02AFE019A05460021204600F0A0FB90
+:10501000284605B0BDE8304000F022BE0401002360
+:10502000012002E00133102BE9D000FA03F12942FC
+:10503000F8D01C44E3E700BFCC8101080008014020
+:1050400070B56F2982B0044614D80E4B080953F886
+:1050500020607EB101F00F0101258D40CDE9006592
+:1050600002AB13E90300FFF7B7FF2046C4E9006570
+:1050700002B070BD044B05480C221A60FFF7C4F85B
+:10508000FDF790FAC881010810010020A470010802
+:10509000826882B00A4202AB03E9030014BF012018
+:1050A000002002B0704700BF70B56A4C0E4615462E
+:1050B000002304F1C00C03E00834644537D02379A1
+:1050C0009842F9D1206800F02FFB634BB3FBF0F05E
+:1050D000012888BF4008C0EBC0104000B042B6FBBA
+:1050E000F0F322D94FF6FF769E4228BF1E46207964
+:1050F000A179002200F02CFB2068FFF779FE002840
+:1051000000F0938023681A68D20718D51A8DB6B2BA
+:1051100092B2B24240F08D806279013A032A00F2E5
+:105120009080DFE802F0674C31165E1EDFE74B4BE4
+:105130004B4808221A60FFF767F8FDF733FAFE22A2
+:10514000B6B21E859A859A8A92B242F001029A827C
+:10515000E2E71A6A22F480521A629A8B22F4E6423B
+:105160001204120C9A839A8B92B242F4D8429A8318
+:105170001D641A6A42F480521A621A6842F00102EF
+:1051800003F140001A6070BD1A6A22F480721A623C
+:105190009A8B22F073021204120C9A839A8B92B2A9
+:1051A00042F06C029A83DD631A6A42F480721A62DA
+:1051B0001A6842F0010203F13C001A6070BD1A6ADD
+:1051C00022F010021A621A8B22F4E6421204120C28
+:1051D0001A831A8B92B242F4D8421A839D631A6AD8
+:1051E00042F010021A621A6842F0010203F138001C
+:1051F0001A6070BD1A6A22F001021A621A8B22F03C
+:1052000073021204120C1A831A8B92B242F06C02CF
+:105210001A835D631A6A42F001021A621A6842F048
+:10522000010203F134001A6070BD2068FFF7C8FD69
+:1052300068E70A4B0B4809221A60FEF7E5FFFDF705
+:10524000B1F9064B08480A221A60FEF7DDFFFDF7A8
+:10525000A9F900BFE481010800449508100100206D
+:105260008C710108607101084C7101080160704780
+:10527000F8B505460C4617461E4605E000F032FD1F
+:10528000314600F02BFD50B1B5F814C01FFA8CFC6C
+:1052900034EA0C03F2D11CEA070FEFD1F8BD044B3E
+:1052A000044806221A60FEF7AFFFFDF77BF900BF46
+:1052B000100100201C710108F8B5164640F20112D9
+:1052C0000D4604460280012100221F46FFF7D0FF51
+:1052D000ABB215F00102238219D0218889B241F4C2
+:1052E00080613B460022218020460221FFF7C0FF5B
+:1052F00000F0B2FC258B012E08BF40F20123ADB2B5
+:1053000008BF238000F0ACFCEB070AD5F8BD3B4694
+:1053100002212046FFF7ACFF00F09EFC258BADB2CA
+:10532000F0E7044B044807221A60FEF76DFFFDF713
+:1053300039F900BF100100200471010802292DE98C
+:10534000F8430F4604461D4665D8DFF8EC9059F83F
+:1053500031603046FFF74CFD804628B16D00257165
+:1053600026602046BDE8F88309EBC7073046FFF703
+:1053700027FD97F804907F794846012240F20111F9
+:1053800000F0E6F93846012240F2011100F0E0F9A0
+:1053900038464FF0FF3240F2011100F0D9F948468B
+:1053A0004FF0FF3240F2011100F0D2F948460122DD
+:1053B00040F2011100F0CCF93846012240F201110F
+:1053C00000F0C6F9484601224FF4A17100F0C0F97F
+:1053D000012238464FF4A17100F0BAF94FF40043AE
+:1053E00033803046A6F8008000F09EF90E4B266010
+:1053F000A3FB00230D4A80099B0CA2FB00206D003B
+:10540000B3808009013301222571B08333842046A3
+:105410003280BDE8F883064B064805221A60FEF785
+:10542000F3FEFDF7BFF800BF83DE1B43632D3E058F
+:105430001001002028710108A4820108F0B583B092
+:1054400002AC04E9030017461C46054600F04AFC7E
+:10545000064641F2883000F03DFC06449DF80410F9
+:1054600033463A462846FFF727FF5FB1274414F832
+:10547000011B29823346002280212846FFF7F8FECF
+:10548000BC42F4D140F201232B808022334600211C
+:10549000284603B0BDE8F040FFF7EABE2DE9F04B27
+:1054A00084B004AC04E903000D999DF80C900191BF
+:1054B00015461C469DF83070064600F013FC8046E9
+:1054C00041F2883000F006FC49F0010B8044A5BB96
+:1054D000594643463A4630467D1EFFF7EDFEEDB293
+:1054E00017B3019B03F1010909E000F0B9FB6A1E43
+:1054F00009F8014CD2B2BDB109F1010915460022EB
+:10550000434640213046FFF7B3FE00F0A5FB328A48
+:10551000012DD4B2E9D140F20123338000F0A0FB89
+:1055200009F8014C0022E7E74346402200213046BB
+:1055300004B0BDE8F04BFFF79BBE2A464946434600
+:1055400030466519FFF7B8FE14F8013B338200229C
+:10555000434680213046FFF78BFEAC42F4D1B7E7DB
+:105560002DE9F04B042982B08846064615461C46B4
+:105570003AD8DFF88CB05BF831703846FFF738FC6A
+:105580008146A8B1384600F0CFF800210B46013122
+:1055900020FA01FCA44525D90829F7D138232B434B
+:1055A00043F451733046C6E9007302B0BDE8F08B96
+:1055B0000BEBC8083846FFF703FC98F8071098F87B
+:1055C00004000191012200F0C3F8019998F8050048
+:1055D0004A4600F0BDF8019998F806004A4600F0E6
+:1055E000B7F8CFE7DB00DAE7034B044804221A6080
+:1055F000FEF70AFEFCF7D6FF100100203C710108FF
+:10560000BC82010882B002AB03E9030003889BB2AD
+:10561000994206D023F040039BB2038089B20388ED
+:10562000018002B0704700BF10B483B002AC04E93F
+:105630000300581E049C00995FFA80FC6BB1601E49
+:10564000A44410F8013F0B730B89DB07FCD50B7BDF
+:10565000DBB202B103706045F3D10B8903F0820322
+:10566000022BFAD103B05DF8044B7047024B4AF6A7
+:10567000AA221A60704700BF00300040074B10B4E8
+:10568000002045F2555440F6FF714CF6CC421C60A8
+:1056900058605DF8044B99601A6070470030004014
+:1056A0001A4B994210B420D2194B99420DD801F1EE
+:1056B0004041184C184A890A012303FA01F1C0E954
+:1056C000004281605DF8044B704701F13F4101F5F4
+:1056D0007F01124C124A890A012303FA01F1C0E941
+:1056E000004281605DF8044B704701F14041A1F533
+:1056F000C0310C4A890A0123002403FA01F1C0E9F0
+:10570000002481605DF8044B704700BF00800140B9
+:10571000FFFF00401C100240101002401810024011
+:105720000C100240141002400048704700A24A04C6
+:10573000064A00F13F4000F57F0091690123800A8D
+:1057400003FA00F00843906193697047001002402B
+:1057500070B58E4B8E4D0409AE6953F8244004F1A8
+:105760003F4303F57F034FEA932C012303FA0CF325
+:105770003343AB61AB6900F007039B000F2500F0DA
+:105780000F0C05FA03FE002959D12AB3082505FAA2
+:1057900003F3050725D5656825EA0E052B43002A86
+:1057A000636025DD012303FA0CF32361A0F10D03EF
+:1057B000012B29D9C1F3031101294ED0022900F090
+:1057C0008280042974D0052953D0072900F0A080D5
+:1057D000092900F0B18070BD042505FA03F305071F
+:1057E000D9D4256825EA0E052B43002A2360D9DC8D
+:1057F000DCD00CF110034FF0010C0CFA03F3236121
+:10580000A0F10D03012BD5D8624A634C1368C1F394
+:10581000031123F0E06343F08063012913606360A8
+:10582000D9D00229CDD1A0F12603032B64D8594A3F
+:105830005949136843F4406313604B6070BD0129FC
+:1058400033D040F20115A9424BD003292BD0CE050D
+:105850004BD50D2505FA03F39BE70F2814D14D4ACC
+:105860004D49136823F4407343F4807313604B6015
+:1058700070BD13380228AED8464A4749136843F032
+:10588000010313604B6070BD1328E8D01A3801285B
+:10589000A1D8404A4049136823F4407343F400738D
+:1058A00013604B6070BD002373E701FA03F370E7E8
+:1058B000183801288FD8374A3749136843F0020354
+:1058C00013604B6070BDA0F11403012BABD8314ABB
+:1058D0003149136823F4406343F4006313604B6061
+:1058E00070BD052505FA03F353E7002A3FF74EAFD5
+:1058F000092505FA03F34CE73C3803283FF66BAF64
+:10590000244A2549136843F4805313604B6070BDEB
+:10591000A0F11603012B1FD9A0F13503012B2DD9BE
+:10592000383801283FF657AF1A4A1B49136843F02D
+:10593000300313604B6070BDA0F11803012B13D925
+:10594000303801283FF647AF124A1349136843F431
+:10595000C04313604B6070BD0E4A0F49136843F09B
+:10596000040313604B6070BD0A4A0B49136823F4AB
+:10597000C04343F4804313604B6070BD054A064941
+:10598000136843F0080313604B6070BDC8810108C1
+:10599000001002403C01002000000140704700BFA1
+:1059A00010B5FEF7CBFF002383F3108862B6094CD5
+:1059B000094B0A4A9A602046FFF702FA084A136820
+:1059C00023F0E06343F0007313606360BDE81040B0
+:1059D000FCF75CBE0000014000ED00E000000108A3
+:1059E0003C01002010B5104A138803F0280182B052
+:1059F0009CB239B9220603D50B4CA3891B0606D4E9
+:105A000002B010BD908880B200F042F8F2E70DF1CC
+:105A1000070000F051F818B142F22C03A381EFE720
+:105A20009DF80730A380EBE700380140024B42F2BB
+:105A3000AC029A81704700BF0038014038B5114C64
+:105A40002046FFF7BDF92046FFF76EFE0E4A0F4BCA
+:105A500000F5E130A2FB0020400C42F22C02208134
+:105A60000025A281202283F8255372215A600A2042
+:105A70000122FFF76DFE2A467221BDE83840092059
+:105A8000FFF766BE00380140C5B3A29100E100E017
+:105A90007E2838B5054608D0054A1378BF2B03D8B1
+:105AA000044C591CE554117038BDFCF747FDF3E771
+:105AB000000200204001002010B40A4B0A4993F86C
+:105AC00000C00A789445034608D9084C501CA25CD3
+:105AD000087000201A705DF8044B70474FF0FF30DB
+:105AE000F9E700BF640200206502002004020020E4
+:105AF0002DE9F04B294E317882B0C9B2284F01AA66
+:105B00003846FBF7C7F9051E03DC35D102B0BDE806
+:105B1000F08B01993846FBF72DFADDF804804FF041
+:105B2000000B3478E4B2B4EB080910D100F094F81B
+:105B30003378DBB29C421CD186F8009000F090F8DC
+:105B4000002DE3DDFBF770FA02B0BDE8F08B08EB47
+:105B50000B01A9EB0B02394407EB0B0000F0AEFD83
+:105B6000FCF7ECFC00F078F83378CB46DBB29C42D3
+:105B7000E2D000F075F8D4E7DDF80480B8F1200F2A
+:105B8000CDD108494246384600F07AFD0028C6D1FA
+:105B9000FFF704FFDDF80480C1E700BF000200202A
+:105BA00040010020E48201082DE9F04B214F3B78B1
+:105BB00005460E46DBB2DFF8808098F80040E4B27C
+:105BC000A34204D3002488F800403C70234695F893
+:105BD00001C0A444BCF1600F28D9ACEB0303602BD7
+:105BE00001D9BDE8F08B4FF0000B88F800B0397890
+:105BF000C9B2DFF84890641A22464944484600F08A
+:105C00005DFD87F800B0E7B288F80070FFF70EFF7F
+:105C100009EB040032462946FBF77AF83844C0B253
+:105C200088F80000BDE8F04BFFF700BFDFF80C90EC
+:105C3000E7B2EDE7650200206402002004020020C4
+:105C4000004870476C0200200048704700F80120AF
+:105C500072B6704762B67047EFF3108072B6704745
+:105C600080F31088704700BF62B600BF72B67047FD
+:105C7000704700BFEFF30383C3F3080343B14FF052
+:105C800080736FF0060208B401A102B41FB510477B
+:105C9000704700BF08B501214FF0C05000F0A8F9CF
+:105CA000012000F09BFB41F23421042000F0B6FCFF
+:105CB000BFF34F8F0549064BCA6802F4E0621343F5
+:105CC000CB60BFF34F8F00BFFDE700BF00ED00E0EA
+:105CD0000400FA0500EBC00000017047401AC00F35
+:105CE000704700BF014B5868704700BF001000E0CC
+:105CF0004FF0E023034900224FF080605A619A611F
+:105D00004860704700ED00E0704700BF70B5124C6E
+:105D1000124BD4F8FC2042F08072C4F8FC201A68C0
+:105D2000002542F001021A605D60FFF795FF202315
+:105D3000064684F82330042000F09EF94FF0E0235B
+:105D400007221A614FF080625D6130469D6162609A
+:105D5000BDE87040FFF784BF00ED00E0001000E0F8
+:105D60002DE9F04BDFF8A480274FDFF8A490DFF88F
+:105D7000A4B082B0FFF76CFFD8F8006005E0FFF731
+:105D800069FF002D1EDCFFF763FFFCF781FB7B68DA
+:105D9000C51AB5F5907F04462A4622DCF21A002A7D
+:105DA000EDDA4D4528DB0193FCF7CEFB019B90B962
+:105DB00003F58C3606F5A076C8F80060FFF74AFFB9
+:105DC000002DE0DD7B68E31A002BDCDD7B68E31A45
+:105DD000002BD8DDF6E703F56153C8F800304FF427
+:105DE00034724FF0E02300215A619961596102B089
+:105DF000BDE8F04BFFF72EBF58460193FEF704FABB
+:105E0000FCF7FCFB019BCEE7001000E068020020DD
+:105E100080CDFDFFD0700108074B10B55C68FFF71F
+:105E200017FF064A13681B1B002BB8BF1460BDE8A0
+:105E30001040FFF70FBF00BF001000E06802002015
+:105E400000B58446A9B100EB010E4FF6FF701CF8B7
+:105E5000013B434083EA0313DBB2010ADA0041EA63
+:105E60000321F44582EA131381EA0300EFD15DF8C0
+:105E700004FB4FF6FF705DF804FB00BF002103E058
+:105E80000B4B5B58435004310A480B4B42189A4263
+:105E9000F6D30A4A02E0002342F8043B084B9A4238
+:105EA000F9D3FEF74BFD00F0C7FBFFF779FD704714
+:105EB0001083010800000020380000203800002076
+:105EC0006C020020FEE700002DE9F04191F803C0CC
+:105ED0001CF0100F18BF8B7809880CF00F0418BF46
+:105EE0001C43CBB21BB30568002301264FF00F08FB
+:105EF00002E00133082B19D006FA03F232EA010757
+:105F0000F7D14FEA830E08FA0EF725EA070504FADF
+:105F10000EFEBCF1280F4EEA050531D0BCF1480F4A
+:105F200003F1010308BF0261082BE5D10560FF29D9
+:105F300024D94568002301260F2702E00133082BEE
+:105F40001BD003F1080206FA02F232EA010EF5D183
+:105F50004FEA830E07FA0EF825EA080504FA0EFE4A
+:105F6000BCF1280F4EEA05050CD0BCF1480F03F137
+:105F7000010308BF0261082BE3D14560BDE8F08151
+:105F80004261B6E74261D9E70161704741617047FC
+:105F9000054BDB6A23F4F873034309B923F48073D8
+:105FA000014AD362704700BF00100240034AD36A1F
+:105FB00023F00F031843D062704700BF0010024067
+:105FC000044A536911B118435061704723EA000035
+:105FD0005061704700100240044A936911B11843A0
+:105FE0009061704723EA0000906170470010024002
+:105FF000044AD36911B11843D061704723EA000005
+:10600000D06170470010024000B5C37813B3184B3D
+:106010008278D96890F801C00078C943C1F30221A1
+:106020000F23C1F1040ECB400CFA0EFC1340114AB1
+:1060300043EA0C031B0102EB000CDBB241098CF8B4
+:10604000003300F01F00012303FA00F042F82100A2
+:106050005DF804FB037807485A09012103F01F0388
+:10606000203201FA03F340F822305DF804FB00BF50
+:1060700000ED00E000E100E0042805D14FF0E0224F
+:10608000136943F004031361704700BF836819B1BB
+:1060900043F001038360704723F00103836070477E
+:1060A000836843F004038360704700BF8068C0F3D7
+:1060B00080007047836819B143F4A0038360704780
+:1060C00023F4A00383607047122910B541D0092939
+:1060D0001ED8046901EB410E4FF0070C0CFA0EFCC0
+:1060E00003FA0EF324EA0C0423430361062A21D8A1
+:1060F000013A436B02EB82024FF01F0C0CFA02FCD8
+:1061000023EA0C0C01FA02F343EA0C03436310BDCB
+:10611000A1F10A0CC4680CEB4C0C4FF0070E03FA0B
+:106120000CF30EFA0CFC24EA0C0C43EA0C03062ACE
+:10613000C360DDD90C2A13D8073A036B02EB820245
+:106140001F24944023EA040401FA02F32343036367
+:1061500010BDC46D24F0070C43EA0C03C365C5E70A
+:106160000D3AC36A02EB82021F24944023EA04041E
+:1061700001FA02F32343C36210BD00BF836D1942CD
+:1061800014BF01200020704710B50C4648B90146E5
+:106190004FF48070FFF7FCFE2046BDE81040FFF78B
+:1061A00005BF08460121FFF7F3FEBDE810400020BF
+:1061B000FFF7FCBE054B1A685B69034004D002423E
+:1061C00014BF0120002070471846704700040140AA
+:1061D000014B5861704700BF00040140674A0368E3
+:1061E000904210B412D002F5006290420ED0B0F18D
+:1061F000804F0BD0A2F59832904207D002F5806212
+:10620000904203D002F58062904203D14A8823F085
+:10621000700313435A4A904200F09B8002F580625B
+:1062200090423ED0CA88554CB1F804C023F4407364
+:1062300013430360A0420B88A0F82CC0038540F0F4
+:1062400097800A7A02860123838203684A7A002AA9
+:1062500070D043F40063B0F1804F39D0494A904286
+:1062600036D002F58062904232D002F580629042D0
+:106270002ED0424A904245D002F50062904241D071
+:10628000B0F1804F3ED0A2F5983290423AD002F55C
+:106290008062904236D0036043685DF8044B4360EF
+:1062A00070478A88036082850B8803850123838277
+:1062B000B0F1804F0368C9D0324A9042C6D002F58F
+:1062C00080629042C2D002F580629042BED0D0E798
+:1062D0008A7A002A37D043F48053CA7A82B343F4CF
+:1062E0000053B0F1804F06D0264A904203D002F509
+:1062F00080629042BDD10A7B42B3204A904243F46F
+:106300008043B9D14A7BC2B143F400430360B0F18A
+:10631000804F436806D01C4A904203D05DF8044B7E
+:10632000436070478A7BEAB143F480735DF8044BA5
+:106330004360704723F400638DE723F40043E5E7EF
+:1063400023F40053CDE723F48053C6E723F48043BE
+:106350008FE78A88036082850A8802850123838209
+:10636000036886E723F480735DF8044B436070474D
+:10637000064B98423FF465AF98E700BF002C014000
+:1063800000100040000400400008004000340140BC
+:10639000036819B143F001030360704723F0010360
+:1063A0000360704783899BB212B1194381817047A2
+:1063B00023EA0101818170470369828913EA0100A0
+:1063C00092B203D00A4214BF01200020704700BFE0
+:1063D000036923EA01010161704700BF014B1862A4
+:1063E000704700BF00000E42024B0349034A596048
+:1063F0005A6070470020024023016745AB89EFCD0A
+:10640000024A136943F08003136170470020024081
+:106410000D4BDA68D1070FD4DA6852070ED4DA6868
+:1064200011070FD4DA68D2060AD4DB6813F0400FE4
+:1064300014BF0720062070470120704703207047D3
+:1064400005207047042070470020024038B5364CC4
+:10645000E36843F07C03E3600546FFF7D9FF0128BA
+:1064600059D14FF43023E268D00711D4E2685107C4
+:1064700012D4E268120712D4E268D00612D4E2689D
+:10648000510612D5013B0720002B08BF0A2038BD5A
+:10649000013BE8D10A2038BD013B0320F4E7013B72
+:1064A0000420F1E7013B0520EEE7012BF2D01E4C62
+:1064B000236943F0020323616561236943F04003CC
+:1064C0002361FFF7A5FF012817D14FF43023E268BD
+:1064D000D20719D4E26855071AD4E26810071DD410
+:1064E000E268D1061DD4E268520603F1FF334CBFC7
+:1064F00007200620002B08BF0A200B4A136943F629
+:10650000FD710B40136138BD013BE0D10A20F4E777
+:10651000013B0320EEE70628C9D038BD013B04202B
+:10652000E8E7013B0520E5E70020024070B506469C
+:1065300082B00023B00701930D465AD1364CE36870
+:1065400043F07C03E360FFF763FF01285BD14FF466
+:106550000053E268D10737D4E268520739D4E268C1
+:1065600010073DD4E268D10640D4E26852063AD41E
+:10657000012B2BD0284C236943F0010323613560A4
+:10658000FFF746FF012817D14FF40053E268D60702
+:1065900032D4E268550733D4E268100736D4E26893
+:1065A000D10636D4E268520603F1FF334CBF072010
+:1065B0000620002B08BF0A20174A136943F6FE7114
+:1065C0000B40136102B070BD013BC2D10A2002B082
+:1065D00070BD013B0320002B08BF0A2002B070BD34
+:1065E000013B0420F7E7013B0720F4E7013B0520CE
+:1065F000F1E7092002B070BD013BC7D10A20DBE7FB
+:10660000013B0320D5E70628B4D0DBE7013B04209B
+:10661000CFE7013B0520CCE70020024082B0054BCC
+:10662000002201920193019B18440190019B196083
+:1066300002B07047006C004070B50D4D0D4C641BEE
+:10664000A4100026A64209D10B4D0C4C00F058F8BE
+:10665000641BA4100026A64205D170BD55F8043B6A
+:1066600098470136EEE755F8043B98470136F2E7C4
+:106670000883010808830108088301080C830108C6
+:1066800010B501390244904201D1002005E00378A1
+:1066900011F8014FA34201D0181B10BD0130F2E7E1
+:1066A0000A44914200F1FF3300D1704710B511F850
+:1066B000014B03F8014F9142F9D110BD884210B54A
+:1066C00001EB020402D98442234607D8431EA142AB
+:1066D00008D011F8012B03F8012FF8E70244014616
+:1066E0008A4200D110BD13F8014D02F8014DF7E7C1
+:1066F00002440346934200D1704703F8011BF9E7B7
+:10670000F8B500BFF8BC08BC9E467047F8B500BF9E
+:08671000F8BC08BC9E4670476E
+:10671800F200000000000000000000004144432097
+:106728006F7574206F662072616E676500000000E7
+:10673800616E616C6F675F696E5F73746174652009
+:106748006F69643D2563206E6578745F636C6F6361
+:106758006B3D25752076616C75653D256875000073
+:10676800496E76616C6964206D6F7665207265711B
+:10677800756573742073697A65000000616C6C6FCD
+:10678800635F6368756E6B206661696C65640000A1
+:106798004D6F7665207175657565206F76657266D3
+:1067A8006C6F7700496E76616C6964206F6964204C
+:1067B800747970650000000043616E27742061736E
+:1067C8007369676E206F6964000000006F69647305
+:1067D80020616C726561647920616C6C6F636174AF
+:1067E80065640000636F6E6669672069735F636F35
+:1067F8006E6669673D2563206372633D2575206970
+:10680800735F73687574646F776E3D2563206D6F71
+:1068180076655F636F756E743D25687500000000CE
+:10682800416C72656164792066696E616C697A652C
+:1068380064000000616C6C6F635F6368756E6B73F6
+:10684800206661696C656400636C6F636B20636CC0
+:106858006F636B3D25750000757074696D65206800
+:106868006967683D257520636C6F636B3D2575000E
+:10687800737461747320636F756E743D257520732E
+:10688800756D3D25752073756D73713D2575000017
+:10689800436F6D6D616E6420726571756573740008
+:1068A8006964656E746966795F726573706F6E731B
+:1068B80065206F66667365743D2575206461746133
+:1068C8003D252E2A730000004D6178206F66203820
+:1068D80020627574746F6E73000000005365742035
+:1068E800627574746F6E2070617374206D6178695D
+:1068F8006D756D20627574746F6E20636F756E743C
+:1069080000000000496E76616C69642062757474D9
+:106918006F6E732072657472616E736D6974206333
+:106928006F756E7400000000627574746F6E735F2B
+:106938007374617465206F69643D25632061636BBE
+:106948005F636F756E743D25632073746174653D74
+:10695800252A7300436F6D6D616E642070617273D8
+:106968006572206572726F72000000004D65737366
+:1069780061676520656E636F6465206572726F720A
+:1069880000000000496E76616C696420636F6D6D6C
+:10699800616E640000050000000000006465627517
+:1069A800675F726573756C742076616C3D25750040
+:1069B800706F6E6720646174613D252A7300000062
+:1069C800656E6473746F705F7374617465206F694A
+:1069D800643D256320686F6D696E673D2563206E91
+:1069E8006578745F636C6F636B3D25752070696EA5
+:1069F8005F76616C75653D25630000004D697373B2
+:106A08006564207363686564756C696E67206F667A
+:106A1800206E657874206469676974616C206F758D
+:106A280074206576656E74005363686564756C657B
+:106A380064206469676974616C206F757420657679
+:106A4800656E742077696C6C206578636565642071
+:106A58006D61785F6475726174696F6E0000000023
+:106A680043616E206E6F742073657420736F667453
+:106A78002070776D206379636C65207469636B732C
+:106A8800207768696C65207570646174657320701F
+:106A9800656E64696E6700007570646174655F6433
+:106AA80069676974616C5F6F7574206E6F742076A6
+:106AB800616C6964207769746820616374697665BC
+:106AC80020717565756500006932635F7265616480
+:106AD8005F726573706F6E7365206F69643D2563BF
+:106AE80020726573706F6E73653D252A7300000010
+:106AF8006932635F6D6F646966795F626974733A5E
+:106B0800204F6464206E756D626572206F66206226
+:106B18006974732100000000496E76616C69642015
+:106B28006E656F706978656C20646174615F736904
+:106B38007A650000496E76616C6964206E656F70D5
+:106B48006978656C2075706461746520636F6D6D1C
+:106B5800616E64006E656F706978656C5F726573ED
+:106B6800756C74206F69643D256320737563636574
+:106B780073733D2563000000636F756E7465725F03
+:106B88007374617465206F69643D2563206E657850
+:106B9800745F636C6F636B3D257520636F756E74EE
+:106BA8003D257520636F756E745F636C6F636B3D15
+:106BB800257500005363686564756C65642070779B
+:106BC8006D206576656E742077696C6C20657863D6
+:106BD800656564206D61785F6475726174696F6E54
+:106BE800000000004D697373656420736368656411
+:106BF800756C696E67206F66206E657874206861B1
+:106C080072642070776D206576656E7400000000F0
+:106C180069735F73687574646F776E2073746174D9
+:106C280069635F737472696E675F69643D2568752F
+:106C38000000000073656E74696E656C2074696D80
+:106C480065722063616C6C6564000000536875743C
+:106C5800646F776E20636C65617265642077686520
+:106C68006E206E6F742073687574646F776E0000A1
+:106C780054696D657220746F6F20636C6F73650063
+:106C88007374617274696E670000000073687574CC
+:106C9800646F776E20636C6F636B3D25752073742A
+:106CA800617469635F737472696E675F69643D25B7
+:106CB800687500006164786C3334355F64617461B1
+:106CC800206F69643D25632073657175656E636522
+:106CD8003D25687520646174613D252A73000000B4
+:106CE8006164786C3334355F737461747573206FC5
+:106CF80069643D256320636C6F636B3D2575207166
+:106D0800756572795F7469636B733D2575206E656F
+:106D180078745F73657175656E63653D2568752068
+:106D280062756666657265643D2563206669666F8F
+:106D38003D2563206C696D69745F636F756E743D82
+:106D480025687500496E76616C6964207370695FA7
+:106D5800616E676C6520636869702074797065007E
+:106D6800616E676C652073656E736F7220726571F2
+:106D780075697265732063732070696E0000000086
+:106D88007370695F616E676C655F64617461206FC1
+:106D980069643D25632073657175656E63653D257E
+:106DA800687520646174613D252A73007370695F9A
+:106DB800616E676C655F656E64206F69643D25630D
+:106DC8002073657175656E63653D25687500000003
+:106DD8007370695F616E676C655F7472616E73660C
+:106DE80065725F726573706F6E7365206F69643D5D
+:106DF800256320636C6F636B3D2575207265737026
+:106E08006F6E73653D252A73000000006D7075393B
+:106E18003235305F64617461206F69643D25632099
+:106E280073657175656E63653D2568752064617469
+:106E3800613D252A730000006D7075393235305F69
+:106E4800737461747573206F69643D256320636C86
+:106E58006F636B3D25752071756572795F74696321
+:106E68006B733D2575206E6578745F736571756504
+:106E78006E63653D25687520627566666572656432
+:106E88003D2563206669666F3D2575206C696D69CF
+:106E9800745F636F756E743D25687500496E766121
+:106EA8006C69642073706920636F6E66696700009F
+:106EB8007370695F7472616E736665725F72657311
+:106EC800706F6E7365206F69643D2563207265730A
+:106ED800706F6E73653D252A7300000053746570EA
+:106EE80070657220746F6F2066617220696E207001
+:106EF80061737400496E76616C696420636F756EA6
+:106F08007420706172616D657465720043616E27EB
+:106F1800742072657365742074696D65207768657F
+:106F28006E2073746570706572206163746976652C
+:106F380000000000737465707065725F706F73692C
+:106F480074696F6E206F69643D256320706F733DAF
+:106F580025690000496E76616C6964207468657201
+:106F68006D6F636F75706C652063686970207479E4
+:106F780070650000746865726D6F636F75706C651D
+:106F88005F726573756C74206F69643D2563206E4C
+:106F98006578745F636C6F636B3D25752076616CF3
+:106FA80075653D2575206661756C743D2563000027
+:106FB800546865726D6F636F75706C65207265617A
+:106FC800646572206661756C74000000746D637589
+:106FD800617274206461746120746F6F206C6172D7
+:106FE80067650000746D63756172745F72657370B4
+:106FF8006F6E7365206F69643D25632072656164F7
+:107008003D252A730000000043616E2774206164E7
+:1070180064207369676E616C207468617420697399
+:1070280020616C72656164792061637469766500BA
+:10703800747273796E635F7374617465206F6964C9
+:107048003D25632063616E5F747269676765723D91
+:10705800256320747269676765725F726561736F13
+:107068006E3D256320636C6F636B3D2575000000E2
+:10707800636F6E6669675F7265736574206F6E6CA7
+:107088007920617661696C61626C65207768656EEC
+:107098002073687574646F776E0000004E6F7420FB
+:1070A800612076616C696420696E707574207069FE
+:1070B8006E0000004E6F7420616E206F75747075DD
+:1070C800742070696E0000005265736368656475AA
+:1070D8006C65642074696D657220696E20746865DA
+:1070E80020706173740000004E6F74206120766117
+:1070F8006C6964204144432070696E004661696C84
+:10710800656420746F2073656E6420693263206142
+:10711800646472006932632074696D656F75740008
+:10712800556E737570706F72746564206932632070
+:1071380062757300496E76616C69642073706920AA
+:1071480062757300496E76616C69642050574D20F2
+:107158006368616E6E656C0050574D20616C726596
+:107168006164792070726F6772616D6D656420610A
+:107178007420646966666572656E742073706565EF
+:10718800640000004E6F7420612076616C69642091
+:1071980050574D2070696E000040020008810108B8
+:1071A80064400200E0800108650A02000C810108C1
+:1071B80066170400108101084C060000000000005A
+:1071C8004D090100D08001084E0E0200D48001084C
+:1071D8004F1503004081010850100200808101080A
+:1071E800510B0100A081010852120400A48101087A
+:1071F80053400100A8810108540B0100A081010837
+:10720800550D0200AC81010856110400B081010837
+:1072180057110400D880010858100300DC800108C9
+:1072280059400200E08001085A140400E480010873
+:107238005B400200E08001085C1C0700E880010850
+:107248005D400300F08001085E400300F4800108FF
+:107258005F0B0200F880010860400300F08001081D
+:10726800611F0700FC80010862400300F0800108EC
+:10727800634003000481010878DAA5590B6FE4B66E
+:1072880011FE2BEA024193D67B5DBDF66120286C86
+:10729800C79706AD13C7F6B50582409025EE2E7147
+:1072A8007A9D1E7E34F07FEF371C92E26AF792A037
+:1072B8003DC067919C190EE73DE35F668F832CF212
+:1072C800E449B49DACAB6E763EDB65D9B9F7A51F32
+:1072D8009F6FE6C1C2DFCC3F45F3C5F03854FDE0EF
+:1072E8007FE56DDE05EF7C8FF6FD45107B5FB6A26E
+:1072F800106927BEF27EBAB8BBF94BDA96F3CDFC1B
+:10730800B14DAB6CEFB5E249124D2F58ADE2CDE669
+:1073180067EF5156432F8B0ED4837761348F34D562
+:107328003FFBA1A54F07B3B3595697655AE560E7E8
+:1073380097595A147596F622A965DE79590DC8AF82
+:10734800BFC866E7EB33F0DEF7603A49B38F1E4EED
+:10735800B1ED9C2F230720CF0D405377EA97ACBEA1
+:10736800FE62F09AA12892A16184E588F06910ED87
+:10737800ABA509063E12742BBA3EE965F6B1E35592
+:107388008F9776A5EC1373AB272B4852DF1FE31DAD
+:10739800904E9B74FBA1CFEBE76A761ED0D3AAADC3
+:1073A800DC81A397228C627345D7C8843F67E7B115
+:1073B8003F42556951EF125959EE15DBB3F370A4EA
+:1073C800A4593610BC4C1C39AC2CA8DA14ED21B1E8
+:1073D8000319AC220B9CCB9DECD322A9877E82F0AB
+:1073E800941683A0752EB6E950F489DD28D3972426
+:1073F8001FDAB487DE159FFE78B9803EFBBA39A044
+:10740800951D5C1E2C2DF03E8FA2D57A6180DB2E57
+:10741800D1770BF39147F62BB65F4BFBB5B25FA262
+:10742800485FADD2208ED05E2283CC5C804F08921C
+:10743800D50A5BA3DFB019E89B91A2512C65336C88
+:107448008278E1225AC58D8FAD44DDC817514C248E
+:1074580097A77D9A74F23FB8603FC021FA8424E66A
+:10746800585427B0252B87DFD5A8E9E6B93CA18D6C
+:10747800EC155636D2D0BAD80F53ED60E7483DD157
+:10748800C8312C704A981CAB974F22D9CBDD5EBD12
+:10749800305CBBF030CF5D218E4DD8B36749FFDA41
+:1074A80008964D7480695CE214B23E4ACA6EF7F5DC
+:1074B800177F420C08C303DC67D9EF2186243336D3
+:1074C8000F08E71DFD6A1358F564D670BAACF86862
+:1074D800BF656E3F5FAB2C39B4112F2BF3E4C86C3A
+:1074E80016CE0DA269462FA265A2AD3997ADF9E473
+:1074F80048A08047A8A1E8844334181FD6EF455B0D
+:10750800D670D0E6A444DDE351A8D1C8545F6643E1
+:10751800DA5ADB685F9223EFF67ABB4996D7CB52EB
+:10752800F0D336239596E4318A15F473F138C09E6A
+:10753800EB6676BE312B50D9295B66FDF816AC1583
+:1075480029026D9B8B96EE230FE228101880E756D0
+:10755800F6E208828C960111FA4429DA9DA8B2D77E
+:1075680084C20598C016878E645F97E228287769D9
+:10757800D9B80EA0D736241F066DB03E862B7EAE36
+:1075880095712B773BD1D2233AF20F8A48F178B91B
+:107598004A09E029ED85155000ABDE4A0469B87444
+:1075A800C232F4B23663B19ECD76F066C527EC5F81
+:1075B800AF140CBC9A9743435A8022CF663AE2250F
+:1075C8001DEE4B608136A0D337CB79194CC04805E6
+:1075D800066C54C71242A4B054D6B9DCBE26D0B546
+:1075E800A5D50AE5529ECE4BE0804E192DD268AC47
+:1075F800C34378DA4B0AA18346C0805A97D3EB235A
+:10760800284CE6A2EA71B9576FB7B84539954D4885
+:10761800B8C78447F50C2BCDD5C239199A7C943458
+:1076280067EDFDE05CB3021956C924959ECED6D00D
+:10763800C06282A074398C4124DA588069DAFD1F4F
+:107648008DAD1C8D4D47DF7185D26107C4BDC83E25
+:107658003AC93AB4AF9AE46ACB4153C39FA7F73B00
+:10766800E92234042689EAB362594E10A662896376
+:10767800037014F23F5318914D23C2CB2DBF29B686
+:107688002C9D0A729FA1E188EE4072BC407085CFA4
+:10769800E5AEE05879833855B7D83B6A37B3FAB1C5
+:1076A800419924560B6EB505E3581A608AE436FBF7
+:1076B800938A38781903DFABCA01BF25C2033C455A
+:1076C800E574E825D69F0A9FA3C2F43E20C0460968
+:1076D800C67DC3A4E802DFE111907A812A042CCD8B
+:1076E80083AA00484B46AAC48B6601B9CA3AAF6C54
+:1076F800399CF90C64E4F11B1506A4825739C99E1C
+:10770800CAE1ED68B3A3B3C601C339EEEE9C869116
+:1077180039EDA90873D39FAEC910CA84539B01657C
+:1077280039A274F5B67F4E5BE1E296B2AB4DB22B4F
+:10773800EB4E9EAA028E88466B26FAF97784F45E91
+:107748005560FC5A9C8E378750A7C3744CB7712973
+:1077580091502E408893549859C7F3372380CA40D4
+:1077680064BD9CA33C9BB29C04060C90D485C0814C
+:10777800A855A4B6819CBB0202656C9221B9EC099C
+:107788000F80493870BD5B6088A66E757663EF55CB
+:107798006B6B24E2A59150899B4B3796D2E4152E4A
+:1077A80010122347FE537EECF840F4668A16EA115D
+:1077B8002FBEB94A6E2EFE4D15D1062ABAFC709F0F
+:1077C800DC7EF7FD3D55F83E5ADADBCBE5D9EDE531
+:1077D8006A363949D5D11A479BC951A04E50D7E0CE
+:1077E8003FDF3D83792882172078B1C24F3C3D6541
+:1077F800A2113063FC8493634D988E7D3AF7A700FD
+:10780800E111FAD53F7EB8FA7BF2FEEEFA477A76B6
+:10781800B450FFCE6637571F00DAF565186CFD4582
+:10782800F822007AFBAF1B16434041FBEEFAFEFA42
+:10783800EE9FD74CFAC3FDA5E21B1516FE0B007C84
+:10784800FF70F1709FDC7FB8B9FF31B9BCB8BF26B3
+:10785800AC256D5FDFDE5EDF25973F3CFC2DB9FE72
+:10786800E65BECFB6F54050DA8CB54E7A0BA72DDBC
+:1078780030E94FC864A18A027A3ED7117869003C82
+:10788800F89A51D0C3F50D085F3C7CB85377C1E92D
+:107898006F2F16B3F39F1667FEF2672C2E69813897
+:1078A800C5AB2B5AA1CDE5D537B4827FF2EA9A56FB
+:1078B800E8EF79F59E566B43E55B5A6D1495B783EF
+:1078C800E084A2598D13FC300C15BB69172FA25503
+:1078D800AE18EE0B112FFCE09199D69187C059E1B3
+:1078E800BEDAA3C771200B140156175922A54C49BB
+:1078F8001ED2A2324E64AE9FEC29DBDD72AEE7FEEB
+:10790800F6A220177CF54CD598733CBF4A2BAFAA3A
+:107918007B0FBEE8513CF3108239EE7ACAA5BCE76A
+:10792800BDC437BB46E735706EDCC40903B87FECCD
+:1079380029E9A0AFD9812A9A85B4F764E7A5FA2E78
+:10794800EEE2B89AD5C01D81925B71CDCDBB2A3FBE
+:10795800A9EC8DEB44E59946C7E2E3F1573C99F170
+:107968009AB4ED7024DAB66E55396B0E5A8134D953
+:10797800F56A3EF33E05D3B9D7D79E8A46D46F53EE
+:10798800C5CF79E33BCEE11E8CD6CBF6695589820B
+:107998006B307360061BE39C85732C876103A547D6
+:1079A80045AAC21EF700462CA6A54082E646CB1C77
+:1079B80096F593305C7AD48B935B8DC7B673B7BD5D
+:1079C8003AF75947E7BA40B5F7870EEB10ACC70648
+:1079D80047AD8FD9A5165B9915251A77D304328A36
+:1079E8007ECEBE2EB6B2BD6C34B5D061F4A098720E
+:1079F8006028CEDEA42F64776B2343EE906F44D7C4
+:107A0800A53BE1A1B942EA33BA8351DEC8AE839EF1
+:107A18003A54A3F95050730764AA143C1D84952165
+:107A28008B2741C2A722E1F308FBB4CD95F16A6820
+:107A38001A54DD90C455F1E4E1ABDD16F533575F18
+:107A4800DFC3E2538F9F43EEA28205CD5ADC03B217
+:107A58000F75407331F740560DD728DCBBA8A38AB1
+:107A6800381DB7031513AD23346DBD834D94603DA8
+:107A7800A5B76D91E4C125642DC811A943B813FABF
+:107A88005164B7F08416D790A8614D64D4D4DCDC77
+:107A98005B8023E978CFB22890FB32D03B98B67050
+:107AA800361F31AD847E05837A817B3824EB5031D3
+:107AB8004010B21C4AB367FC81E2B699A8A8DE0E52
+:107AC800C4940BAB98E28E1FEFB54FF775ED6D536D
+:107AD800F53A7E19B5B20FAE4991C800A866485C60
+:107AE800073C28791026D27E27546BFEA1EA8686A9
+:107AF80052BF60FF66FB86B1A9B12DFA9BA1FA08B7
+:107B08001A1407781AE8EC77E3011EC0C68E40D134
+:107B1800D5ADF24FD40FE8543B56A53303E23055A8
+:107B2800570522DB1308A48F850958F6A51B9583F2
+:107B38003C5DD670F93EE989CFBD1F103291D61E43
+:107B4800A912D9D24CA4FB03CF3CD4A4D9464F3DAB
+:107B58007FCE79D0D151678B58A5AD23C3311D4550
+:107B6800B6F252814349A9485B0AFB34343B51D3EE
+:107B7800906AD89069A0A5832CBB095572C82A477A
+:107B8800431F4A2BC8EFA1BF8E639581F462A932C7
+:107B9800142F96B1D23316CBE50ADFE1DB9BEA3C22
+:107BA8001A8401C10375DDFEBA656947F1B0CAC41C
+:107BB800A4C9DE40EA27BBE5B147D29D9DA9FBB821
+:107BC800BF70A93D0ECACD14D6566E6BFA5D4867D4
+:107BD8006A4E8DC4262003D05DF7C19085299E6A20
+:107BE800C9D6CE5F000E3052A7A5F6D409BF664E9F
+:107BF800A1913BAFB1C05DDB693B52A69ECFA80700
+:107C0800AA310EED19AB527D050298CBF75A4D6794
+:107C180055A7FE6B5C6B0CFD918CB7CFA92630B3D2
+:107C2800B30E9E664761EB681C3D1D50DED7E88D9C
+:107C380077C777B8932DA02FC7694E62D43F16DC5B
+:107C4800BCD64AF6C7818D036A27376C0EEF0894B5
+:107C58008ABC5120DEB4EC6199ACE0E56696F03B55
+:107C68006C6C4E1E7772F6F07F19D9706C64F3D085
+:107C78001D3D69791BE6862C53D3FE8C94821740F0
+:107C88000AEE8C734D4DF71862CD38E8B400D66E05
+:107C9800E1F9BB4410B8184EE7E622405327DBED64
+:107CA80023F5BA231557CFD1617BFB1B66B156ED7F
+:107CB80027029A2A34574BAE72BBD196BBA1D4BFC8
+:107CC800BA4F3C7B721AD64937CB033C09AAF12438
+:107CD800AE1DAAE1A4B30F9C84946E368BB1C53D4A
+:107CE800E69F9A5BF6F483B675749E2CB53DF4C98D
+:107CF80091AF1B18542BAAAA61FEFBC7E01E2E10D9
+:107D080055F51F4DD157FD751E2C827011FAABC465
+:107D18005F0761B099F35F3483C5FC49B6FD9016DF
+:107D2800F332458D5689D9DB7F01C020CFC40000CE
+:107D3800B60A00000000000000000000000000007B
+:107D48000102010214810108C109010802000100B1
+:107D580000000000BD090108030001000000000048
+:107D6800A10901080400010000000000A908010899
+:107D78000500010000000000890801080601000153
+:107D8800A0810108E90701080700010000000000C0
+:107D9800A507010808010001188101086907010801
+:107DA8000900010000000000E51001080A020101B5
+:107DB800A8810108BD1001080B0301031C810108FB
+:107DC8007D1001080C02010220810108351001080C
+:107DD8000D020002148101087D1601080E0200023E
+:107DE8000C810108891501080F0300031C81010893
+:107DF800ED1401081002000220810108A9140108ED
+:107E080011050005248101088112010812020002EF
+:107E18000C810108093801081301000118810108C3
+:107E2800BD370108140200022081010871370108DA
+:107E3800150200020C8101083937010816040004F4
+:107E48002C810108893601081705000530810108D1
+:107E5800F5340108180100011881010831120108E0
+:107E68001908000838810108CD1101081A03000318
+:107E780044810108E91001081B0200020C81010875
+:107E8800154001081C02000220810108CD3F0108AD
+:107E98001D040004E48001085D3F01081E01000183
+:107EA80018810108993E01081F0800084881010847
+:107EB800CD0301082002000220810108A102010867
+:107EC800210400030481010859310108220300023A
+:107ED800E08001085133010823030002E080010813
+:107EE800053301082404000410810108B531010894
+:107EF80025010001188101089931010826030003B2
+:107F08005081010811310108270600065481010833
+:107F1800CD3801082803000344810108913801087D
+:107F2800290500035C810108691701082A04000378
+:107F380060810108091701082B030002E08001088D
+:107F4800D91601082C0400041081010895160108AF
+:107F58002D03000364810108FD2301082E0300039B
+:107F6800DC800108392301082F0600066881010812
+:107F7800592201083006000670810108B92F01084E
+:107F88003101000118810108E929010832030003C1
+:107F98001C810108F5280108330200020C81010840
+:107FA8007927010834030002E0800108E12B010869
+:107FB80035040004E4800108612B0108360300033E
+:107FC80044810108D12A01083701000118810108FC
+:107FD800312F0108380300031C810108152E010800
+:107FE800390200020C810108BD2C01083A03000285
+:107FF800E0800108391E01083B030002E080010807
+:10800800051E01083C06000670810108DD1C0108F8
+:108018003D030002E0800108391B01083E0300020D
+:10802800E0800108D11A01083F080008788101089A
+:10803800051A0108400200020C810108A90B010879
+:1080480041050005848101084D0B01084204000424
+:10805800B0810108F90A0108430200020C810108F5
+:10806800BD0A0108440400038C810108013D010890
+:108078004505000590810108193A010846010001EB
+:10808800188101085D1F010847040003F0800108FA
+:10809800091F01084805000598810108AD1E01085F
+:1080A8004904000410810108A92101084A030003BA
+:1080B80050810108092101084B000100000000005F
+:1080C800955C01084C00000002000000000200005E
+:1080D8000404040004000200040700000400000473
+:1080E8000400000204040200040207000400070060
+:1080F8000402000004000002040002000404070057
+:108108000006000004040000040000000004000051
+:10811800040000000400000004000000040004043F
+:10812800000000000400020304040404000000002E
+:108138000400000400040404000000000404040017
+:10814800040000040002020404000400040000000B
+:1081580000040000040707000407000000000200F4
+:1081680004000002020000000400000000000000FB
+:1081780004000000000000000000000004000004EB
+:1081880004000000040704000400040000000000CC
+:1081980004000200000000000000000004000402C7
+:1081A80007000000040100000404000400000000AF
+:1081B8000400010603542021222352022512FE0046
+:1081C80000080140000C014000100140001401406B
+:1081D80000180140001C0140002001400000004040
+:1081E80000012200000000400102220000000040BF
+:1081F80002032200000000400304220000000040A7
+:108208000F0112000000004013021200000000409D
+:108218001A031200000000401B0412000004004072
+:10822800060112000004004007021200000400408A
+:108238001003120000040040110412000004004062
+:10824800260122000004004027022200000400400A
+:1082580028032200000400402904220000080040EE
+:108268003C012200000800403D02220000080040B6
+:108278003E032200000800403F042200000800409E
+:1082880016012200000800401702220000080040E2
+:10829800180322000008004019042200005400407E
+:1082A800161700000054004018190000005800403C
+:1082B8001A1B0000003800401E1F1D5200300140EC
+:1082C80006070552003001401415135200380040CB
+:1082D80022231A52003C004014151362201C20521D
+:1082E8006571756573742053657269616C20426F9E
+:1082F8006F746C6F616465722121207E000000003C
+:04830800B5010108B2
+:04830C0091010108D2
+:10831000100000001C0000201C00002000000000D5
+:1083200000000000092401080000000028000020CF
+:108330000D2401080000000000000000BD25010818
+:088340000000008000449508D4
+:0400000508015E7D13
+:00000001FF
diff --git a/fw-Ad5m/Mainboard-20230831.bin b/fw-Ad5m/Mainboard-20230831.bin
new file mode 100644
index 00000000..0c3e072d
Binary files /dev/null and b/fw-Ad5m/Mainboard-20230831.bin differ
diff --git a/klippy/chelper/__init__.py b/klippy/chelper/__init__.py
index 04119614..c73e4a99 100644
--- a/klippy/chelper/__init__.py
+++ b/klippy/chelper/__init__.py
@@ -266,13 +266,13 @@ def get_ffi():
srcfiles = get_abs_files(srcdir, SOURCE_FILES)
ofiles = get_abs_files(srcdir, OTHER_FILES)
destlib = get_abs_files(srcdir, [DEST_LIB])[0]
- if check_build_code(srcfiles+ofiles+[__file__], destlib):
- if check_gcc_option(SSE_FLAGS):
- cmd = "%s %s %s" % (GCC_CMD, SSE_FLAGS, COMPILE_ARGS)
- else:
- cmd = "%s %s" % (GCC_CMD, COMPILE_ARGS)
- logging.info("Building C code module %s", DEST_LIB)
- do_build_code(cmd % (destlib, ' '.join(srcfiles)))
+ # if check_build_code(srcfiles+ofiles+[__file__], destlib):
+ # if check_gcc_option(SSE_FLAGS):
+ # cmd = "%s %s %s" % (GCC_CMD, SSE_FLAGS, COMPILE_ARGS)
+ # else:
+ # cmd = "%s %s" % (GCC_CMD, COMPILE_ARGS)
+ # logging.info("Building C code module %s", DEST_LIB)
+ # do_build_code(cmd % (destlib, ' '.join(srcfiles)))
FFI_main = cffi.FFI()
for d in defs_all:
FFI_main.cdef(d)
diff --git a/klippy/chelper/__pycache__/__init__.cpython-36.pyc b/klippy/chelper/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 00000000..12915282
Binary files /dev/null and b/klippy/chelper/__pycache__/__init__.cpython-36.pyc differ
diff --git a/klippy/chelper/__pycache__/__init__.cpython-37.pyc b/klippy/chelper/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 00000000..f3cfe783
Binary files /dev/null and b/klippy/chelper/__pycache__/__init__.cpython-37.pyc differ
diff --git a/klippy/chelper/c_helper.so b/klippy/chelper/c_helper.so
new file mode 100644
index 00000000..cbb2ea3d
Binary files /dev/null and b/klippy/chelper/c_helper.so differ
diff --git a/klippy/chelper/stepcompress.c b/klippy/chelper/stepcompress.c
index e261f1d3..36611817 100644
--- a/klippy/chelper/stepcompress.c
+++ b/klippy/chelper/stepcompress.c
@@ -26,7 +26,7 @@
#include "stepcompress.h" // stepcompress_alloc
#define CHECK_LINES 1
-#define QUEUE_START_SIZE 1024
+#define QUEUE_START_SIZE 2048
struct stepcompress {
// Buffer management
diff --git a/klippy/console.py b/klippy/console.py
old mode 100755
new mode 100644
diff --git a/klippy/extras/__pycache__/__init__.cpython-36.pyc b/klippy/extras/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 00000000..cba9ced2
Binary files /dev/null and b/klippy/extras/__pycache__/__init__.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/__init__.cpython-37.pyc b/klippy/extras/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 00000000..b151176d
Binary files /dev/null and b/klippy/extras/__pycache__/__init__.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/adc_temperature.cpython-36.pyc b/klippy/extras/__pycache__/adc_temperature.cpython-36.pyc
new file mode 100644
index 00000000..09ceb969
Binary files /dev/null and b/klippy/extras/__pycache__/adc_temperature.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/adc_temperature.cpython-37.pyc b/klippy/extras/__pycache__/adc_temperature.cpython-37.pyc
new file mode 100644
index 00000000..5db7f091
Binary files /dev/null and b/klippy/extras/__pycache__/adc_temperature.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/adxl345.cpython-37.pyc b/klippy/extras/__pycache__/adxl345.cpython-37.pyc
new file mode 100644
index 00000000..2829f795
Binary files /dev/null and b/klippy/extras/__pycache__/adxl345.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/bed_mesh.cpython-36.pyc b/klippy/extras/__pycache__/bed_mesh.cpython-36.pyc
new file mode 100644
index 00000000..9fac70ce
Binary files /dev/null and b/klippy/extras/__pycache__/bed_mesh.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/bed_mesh.cpython-37.pyc b/klippy/extras/__pycache__/bed_mesh.cpython-37.pyc
new file mode 100644
index 00000000..938d9c19
Binary files /dev/null and b/klippy/extras/__pycache__/bed_mesh.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/bme280.cpython-36.pyc b/klippy/extras/__pycache__/bme280.cpython-36.pyc
new file mode 100644
index 00000000..d4cab79f
Binary files /dev/null and b/klippy/extras/__pycache__/bme280.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/bme280.cpython-37.pyc b/klippy/extras/__pycache__/bme280.cpython-37.pyc
new file mode 100644
index 00000000..8d0611fd
Binary files /dev/null and b/klippy/extras/__pycache__/bme280.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/bus.cpython-36.pyc b/klippy/extras/__pycache__/bus.cpython-36.pyc
new file mode 100644
index 00000000..b33976c1
Binary files /dev/null and b/klippy/extras/__pycache__/bus.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/bus.cpython-37.pyc b/klippy/extras/__pycache__/bus.cpython-37.pyc
new file mode 100644
index 00000000..1d98556e
Binary files /dev/null and b/klippy/extras/__pycache__/bus.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/buttons.cpython-36.pyc b/klippy/extras/__pycache__/buttons.cpython-36.pyc
new file mode 100644
index 00000000..13d4daed
Binary files /dev/null and b/klippy/extras/__pycache__/buttons.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/buttons.cpython-37.pyc b/klippy/extras/__pycache__/buttons.cpython-37.pyc
new file mode 100644
index 00000000..d2f9a385
Binary files /dev/null and b/klippy/extras/__pycache__/buttons.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/display_status.cpython-37.pyc b/klippy/extras/__pycache__/display_status.cpython-37.pyc
new file mode 100644
index 00000000..1d48f3e6
Binary files /dev/null and b/klippy/extras/__pycache__/display_status.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/ds18b20.cpython-36.pyc b/klippy/extras/__pycache__/ds18b20.cpython-36.pyc
new file mode 100644
index 00000000..b1a7a346
Binary files /dev/null and b/klippy/extras/__pycache__/ds18b20.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/ds18b20.cpython-37.pyc b/klippy/extras/__pycache__/ds18b20.cpython-37.pyc
new file mode 100644
index 00000000..ad64e239
Binary files /dev/null and b/klippy/extras/__pycache__/ds18b20.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/exclude_object.cpython-37.pyc b/klippy/extras/__pycache__/exclude_object.cpython-37.pyc
new file mode 100644
index 00000000..d5582e8f
Binary files /dev/null and b/klippy/extras/__pycache__/exclude_object.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/fan.cpython-36.pyc b/klippy/extras/__pycache__/fan.cpython-36.pyc
new file mode 100644
index 00000000..426c9ca5
Binary files /dev/null and b/klippy/extras/__pycache__/fan.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/fan.cpython-37.pyc b/klippy/extras/__pycache__/fan.cpython-37.pyc
new file mode 100644
index 00000000..5bc14118
Binary files /dev/null and b/klippy/extras/__pycache__/fan.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/fan_generic.cpython-36.pyc b/klippy/extras/__pycache__/fan_generic.cpython-36.pyc
new file mode 100644
index 00000000..0a288a88
Binary files /dev/null and b/klippy/extras/__pycache__/fan_generic.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/fan_generic.cpython-37.pyc b/klippy/extras/__pycache__/fan_generic.cpython-37.pyc
new file mode 100644
index 00000000..d84a52f1
Binary files /dev/null and b/klippy/extras/__pycache__/fan_generic.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/filament_switch_sensor.cpython-36.pyc b/klippy/extras/__pycache__/filament_switch_sensor.cpython-36.pyc
new file mode 100644
index 00000000..1b5d1877
Binary files /dev/null and b/klippy/extras/__pycache__/filament_switch_sensor.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/filament_switch_sensor.cpython-37.pyc b/klippy/extras/__pycache__/filament_switch_sensor.cpython-37.pyc
new file mode 100644
index 00000000..0f0e6e6e
Binary files /dev/null and b/klippy/extras/__pycache__/filament_switch_sensor.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/force_move.cpython-36.pyc b/klippy/extras/__pycache__/force_move.cpython-36.pyc
new file mode 100644
index 00000000..36fc37a1
Binary files /dev/null and b/klippy/extras/__pycache__/force_move.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/force_move.cpython-37.pyc b/klippy/extras/__pycache__/force_move.cpython-37.pyc
new file mode 100644
index 00000000..7f8c962b
Binary files /dev/null and b/klippy/extras/__pycache__/force_move.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/gcode_arcs.cpython-37.pyc b/klippy/extras/__pycache__/gcode_arcs.cpython-37.pyc
new file mode 100644
index 00000000..2ccb6c4d
Binary files /dev/null and b/klippy/extras/__pycache__/gcode_arcs.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/gcode_button.cpython-37.pyc b/klippy/extras/__pycache__/gcode_button.cpython-37.pyc
new file mode 100644
index 00000000..3150b074
Binary files /dev/null and b/klippy/extras/__pycache__/gcode_button.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/gcode_macro.cpython-36.pyc b/klippy/extras/__pycache__/gcode_macro.cpython-36.pyc
new file mode 100644
index 00000000..97171e0b
Binary files /dev/null and b/klippy/extras/__pycache__/gcode_macro.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/gcode_macro.cpython-37.pyc b/klippy/extras/__pycache__/gcode_macro.cpython-37.pyc
new file mode 100644
index 00000000..5530aad2
Binary files /dev/null and b/klippy/extras/__pycache__/gcode_macro.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/gcode_move.cpython-36.pyc b/klippy/extras/__pycache__/gcode_move.cpython-36.pyc
new file mode 100644
index 00000000..ba51b9a9
Binary files /dev/null and b/klippy/extras/__pycache__/gcode_move.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/gcode_move.cpython-37.pyc b/klippy/extras/__pycache__/gcode_move.cpython-37.pyc
new file mode 100644
index 00000000..25908b3c
Binary files /dev/null and b/klippy/extras/__pycache__/gcode_move.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/heater_bed.cpython-36.pyc b/klippy/extras/__pycache__/heater_bed.cpython-36.pyc
new file mode 100644
index 00000000..2c057cf6
Binary files /dev/null and b/klippy/extras/__pycache__/heater_bed.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/heater_bed.cpython-37.pyc b/klippy/extras/__pycache__/heater_bed.cpython-37.pyc
new file mode 100644
index 00000000..194b5f92
Binary files /dev/null and b/klippy/extras/__pycache__/heater_bed.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/heater_fan.cpython-36.pyc b/klippy/extras/__pycache__/heater_fan.cpython-36.pyc
new file mode 100644
index 00000000..c1a302a0
Binary files /dev/null and b/klippy/extras/__pycache__/heater_fan.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/heater_fan.cpython-37.pyc b/klippy/extras/__pycache__/heater_fan.cpython-37.pyc
new file mode 100644
index 00000000..fbd97d5c
Binary files /dev/null and b/klippy/extras/__pycache__/heater_fan.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/heater_generic.cpython-37.pyc b/klippy/extras/__pycache__/heater_generic.cpython-37.pyc
new file mode 100644
index 00000000..2f76770c
Binary files /dev/null and b/klippy/extras/__pycache__/heater_generic.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/heaters.cpython-36.pyc b/klippy/extras/__pycache__/heaters.cpython-36.pyc
new file mode 100644
index 00000000..91b4f81e
Binary files /dev/null and b/klippy/extras/__pycache__/heaters.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/heaters.cpython-37.pyc b/klippy/extras/__pycache__/heaters.cpython-37.pyc
new file mode 100644
index 00000000..7d5e0759
Binary files /dev/null and b/klippy/extras/__pycache__/heaters.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/homing.cpython-36.pyc b/klippy/extras/__pycache__/homing.cpython-36.pyc
new file mode 100644
index 00000000..90ca81d7
Binary files /dev/null and b/klippy/extras/__pycache__/homing.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/homing.cpython-37.pyc b/klippy/extras/__pycache__/homing.cpython-37.pyc
new file mode 100644
index 00000000..a704a2d2
Binary files /dev/null and b/klippy/extras/__pycache__/homing.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/htu21d.cpython-36.pyc b/klippy/extras/__pycache__/htu21d.cpython-36.pyc
new file mode 100644
index 00000000..03e93fb9
Binary files /dev/null and b/klippy/extras/__pycache__/htu21d.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/htu21d.cpython-37.pyc b/klippy/extras/__pycache__/htu21d.cpython-37.pyc
new file mode 100644
index 00000000..254e9505
Binary files /dev/null and b/klippy/extras/__pycache__/htu21d.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/idle_timeout.cpython-36.pyc b/klippy/extras/__pycache__/idle_timeout.cpython-36.pyc
new file mode 100644
index 00000000..b77f26cb
Binary files /dev/null and b/klippy/extras/__pycache__/idle_timeout.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/idle_timeout.cpython-37.pyc b/klippy/extras/__pycache__/idle_timeout.cpython-37.pyc
new file mode 100644
index 00000000..8733bb86
Binary files /dev/null and b/klippy/extras/__pycache__/idle_timeout.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/input_shaper.cpython-36.pyc b/klippy/extras/__pycache__/input_shaper.cpython-36.pyc
new file mode 100644
index 00000000..39cd6fb3
Binary files /dev/null and b/klippy/extras/__pycache__/input_shaper.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/input_shaper.cpython-37.pyc b/klippy/extras/__pycache__/input_shaper.cpython-37.pyc
new file mode 100644
index 00000000..5505ac1f
Binary files /dev/null and b/klippy/extras/__pycache__/input_shaper.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/led.cpython-36.pyc b/klippy/extras/__pycache__/led.cpython-36.pyc
new file mode 100644
index 00000000..5b9a53e0
Binary files /dev/null and b/klippy/extras/__pycache__/led.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/led.cpython-37.pyc b/klippy/extras/__pycache__/led.cpython-37.pyc
new file mode 100644
index 00000000..802ff83d
Binary files /dev/null and b/klippy/extras/__pycache__/led.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/lm75.cpython-36.pyc b/klippy/extras/__pycache__/lm75.cpython-36.pyc
new file mode 100644
index 00000000..943b5a27
Binary files /dev/null and b/klippy/extras/__pycache__/lm75.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/lm75.cpython-37.pyc b/klippy/extras/__pycache__/lm75.cpython-37.pyc
new file mode 100644
index 00000000..d3ea28ea
Binary files /dev/null and b/klippy/extras/__pycache__/lm75.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/manual_probe.cpython-36.pyc b/klippy/extras/__pycache__/manual_probe.cpython-36.pyc
new file mode 100644
index 00000000..08fb8b88
Binary files /dev/null and b/klippy/extras/__pycache__/manual_probe.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/manual_probe.cpython-37.pyc b/klippy/extras/__pycache__/manual_probe.cpython-37.pyc
new file mode 100644
index 00000000..28a09a74
Binary files /dev/null and b/klippy/extras/__pycache__/manual_probe.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/motion_report.cpython-36.pyc b/klippy/extras/__pycache__/motion_report.cpython-36.pyc
new file mode 100644
index 00000000..d68a77f9
Binary files /dev/null and b/klippy/extras/__pycache__/motion_report.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/motion_report.cpython-37.pyc b/klippy/extras/__pycache__/motion_report.cpython-37.pyc
new file mode 100644
index 00000000..f178fdde
Binary files /dev/null and b/klippy/extras/__pycache__/motion_report.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/output_pin.cpython-36.pyc b/klippy/extras/__pycache__/output_pin.cpython-36.pyc
new file mode 100644
index 00000000..4ffee9c8
Binary files /dev/null and b/klippy/extras/__pycache__/output_pin.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/output_pin.cpython-37.pyc b/klippy/extras/__pycache__/output_pin.cpython-37.pyc
new file mode 100644
index 00000000..7cba796a
Binary files /dev/null and b/klippy/extras/__pycache__/output_pin.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/pause_resume.cpython-36.pyc b/klippy/extras/__pycache__/pause_resume.cpython-36.pyc
new file mode 100644
index 00000000..c7689f74
Binary files /dev/null and b/klippy/extras/__pycache__/pause_resume.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/pause_resume.cpython-37.pyc b/klippy/extras/__pycache__/pause_resume.cpython-37.pyc
new file mode 100644
index 00000000..5ae4551b
Binary files /dev/null and b/klippy/extras/__pycache__/pause_resume.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/pid_calibrate.cpython-36.pyc b/klippy/extras/__pycache__/pid_calibrate.cpython-36.pyc
new file mode 100644
index 00000000..727351e7
Binary files /dev/null and b/klippy/extras/__pycache__/pid_calibrate.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/pid_calibrate.cpython-37.pyc b/klippy/extras/__pycache__/pid_calibrate.cpython-37.pyc
new file mode 100644
index 00000000..68405215
Binary files /dev/null and b/klippy/extras/__pycache__/pid_calibrate.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/print_stats.cpython-37.pyc b/klippy/extras/__pycache__/print_stats.cpython-37.pyc
new file mode 100644
index 00000000..63bbf3f3
Binary files /dev/null and b/klippy/extras/__pycache__/print_stats.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/probe.cpython-36.pyc b/klippy/extras/__pycache__/probe.cpython-36.pyc
new file mode 100644
index 00000000..1df56fc3
Binary files /dev/null and b/klippy/extras/__pycache__/probe.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/probe.cpython-37.pyc b/klippy/extras/__pycache__/probe.cpython-37.pyc
new file mode 100644
index 00000000..2b1c906d
Binary files /dev/null and b/klippy/extras/__pycache__/probe.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/pulse_counter.cpython-36.pyc b/klippy/extras/__pycache__/pulse_counter.cpython-36.pyc
new file mode 100644
index 00000000..1e5ac30e
Binary files /dev/null and b/klippy/extras/__pycache__/pulse_counter.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/pulse_counter.cpython-37.pyc b/klippy/extras/__pycache__/pulse_counter.cpython-37.pyc
new file mode 100644
index 00000000..2dce3633
Binary files /dev/null and b/klippy/extras/__pycache__/pulse_counter.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/query_adc.cpython-36.pyc b/klippy/extras/__pycache__/query_adc.cpython-36.pyc
new file mode 100644
index 00000000..f9783abe
Binary files /dev/null and b/klippy/extras/__pycache__/query_adc.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/query_adc.cpython-37.pyc b/klippy/extras/__pycache__/query_adc.cpython-37.pyc
new file mode 100644
index 00000000..da6a0f3e
Binary files /dev/null and b/klippy/extras/__pycache__/query_adc.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/query_endstops.cpython-36.pyc b/klippy/extras/__pycache__/query_endstops.cpython-36.pyc
new file mode 100644
index 00000000..8c844b6c
Binary files /dev/null and b/klippy/extras/__pycache__/query_endstops.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/query_endstops.cpython-37.pyc b/klippy/extras/__pycache__/query_endstops.cpython-37.pyc
new file mode 100644
index 00000000..aca54985
Binary files /dev/null and b/klippy/extras/__pycache__/query_endstops.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/resonance_tester.cpython-37.pyc b/klippy/extras/__pycache__/resonance_tester.cpython-37.pyc
new file mode 100644
index 00000000..ea2dc146
Binary files /dev/null and b/klippy/extras/__pycache__/resonance_tester.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/servo.cpython-37.pyc b/klippy/extras/__pycache__/servo.cpython-37.pyc
new file mode 100644
index 00000000..c012f4da
Binary files /dev/null and b/klippy/extras/__pycache__/servo.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/shaper_calibrate.cpython-37.pyc b/klippy/extras/__pycache__/shaper_calibrate.cpython-37.pyc
new file mode 100644
index 00000000..ace596ae
Binary files /dev/null and b/klippy/extras/__pycache__/shaper_calibrate.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/shaper_defs.cpython-36.pyc b/klippy/extras/__pycache__/shaper_defs.cpython-36.pyc
new file mode 100644
index 00000000..dd16a112
Binary files /dev/null and b/klippy/extras/__pycache__/shaper_defs.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/shaper_defs.cpython-37.pyc b/klippy/extras/__pycache__/shaper_defs.cpython-37.pyc
new file mode 100644
index 00000000..5a6e3ee3
Binary files /dev/null and b/klippy/extras/__pycache__/shaper_defs.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/spi_temperature.cpython-36.pyc b/klippy/extras/__pycache__/spi_temperature.cpython-36.pyc
new file mode 100644
index 00000000..a413da6f
Binary files /dev/null and b/klippy/extras/__pycache__/spi_temperature.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/spi_temperature.cpython-37.pyc b/klippy/extras/__pycache__/spi_temperature.cpython-37.pyc
new file mode 100644
index 00000000..ec8ab2f2
Binary files /dev/null and b/klippy/extras/__pycache__/spi_temperature.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/statistics.cpython-36.pyc b/klippy/extras/__pycache__/statistics.cpython-36.pyc
new file mode 100644
index 00000000..6e5af758
Binary files /dev/null and b/klippy/extras/__pycache__/statistics.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/statistics.cpython-37.pyc b/klippy/extras/__pycache__/statistics.cpython-37.pyc
new file mode 100644
index 00000000..73b03510
Binary files /dev/null and b/klippy/extras/__pycache__/statistics.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/stepper_enable.cpython-36.pyc b/klippy/extras/__pycache__/stepper_enable.cpython-36.pyc
new file mode 100644
index 00000000..9b1c6058
Binary files /dev/null and b/klippy/extras/__pycache__/stepper_enable.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/stepper_enable.cpython-37.pyc b/klippy/extras/__pycache__/stepper_enable.cpython-37.pyc
new file mode 100644
index 00000000..b290a9b6
Binary files /dev/null and b/klippy/extras/__pycache__/stepper_enable.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/temperature_host.cpython-36.pyc b/klippy/extras/__pycache__/temperature_host.cpython-36.pyc
new file mode 100644
index 00000000..c622f79a
Binary files /dev/null and b/klippy/extras/__pycache__/temperature_host.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/temperature_host.cpython-37.pyc b/klippy/extras/__pycache__/temperature_host.cpython-37.pyc
new file mode 100644
index 00000000..776c37be
Binary files /dev/null and b/klippy/extras/__pycache__/temperature_host.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/temperature_mcu.cpython-36.pyc b/klippy/extras/__pycache__/temperature_mcu.cpython-36.pyc
new file mode 100644
index 00000000..75394191
Binary files /dev/null and b/klippy/extras/__pycache__/temperature_mcu.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/temperature_mcu.cpython-37.pyc b/klippy/extras/__pycache__/temperature_mcu.cpython-37.pyc
new file mode 100644
index 00000000..c6689d3c
Binary files /dev/null and b/klippy/extras/__pycache__/temperature_mcu.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/temperature_sensor.cpython-37.pyc b/klippy/extras/__pycache__/temperature_sensor.cpython-37.pyc
new file mode 100644
index 00000000..880471b9
Binary files /dev/null and b/klippy/extras/__pycache__/temperature_sensor.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/thermistor.cpython-36.pyc b/klippy/extras/__pycache__/thermistor.cpython-36.pyc
new file mode 100644
index 00000000..6c9b2ae3
Binary files /dev/null and b/klippy/extras/__pycache__/thermistor.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/thermistor.cpython-37.pyc b/klippy/extras/__pycache__/thermistor.cpython-37.pyc
new file mode 100644
index 00000000..442f6b4d
Binary files /dev/null and b/klippy/extras/__pycache__/thermistor.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/tmc.cpython-36.pyc b/klippy/extras/__pycache__/tmc.cpython-36.pyc
new file mode 100644
index 00000000..8c1c073b
Binary files /dev/null and b/klippy/extras/__pycache__/tmc.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/tmc.cpython-37.pyc b/klippy/extras/__pycache__/tmc.cpython-37.pyc
new file mode 100644
index 00000000..f85257ba
Binary files /dev/null and b/klippy/extras/__pycache__/tmc.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/tmc2130.cpython-36.pyc b/klippy/extras/__pycache__/tmc2130.cpython-36.pyc
new file mode 100644
index 00000000..a4a9656b
Binary files /dev/null and b/klippy/extras/__pycache__/tmc2130.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/tmc2130.cpython-37.pyc b/klippy/extras/__pycache__/tmc2130.cpython-37.pyc
new file mode 100644
index 00000000..dce4341f
Binary files /dev/null and b/klippy/extras/__pycache__/tmc2130.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/tmc2208.cpython-36.pyc b/klippy/extras/__pycache__/tmc2208.cpython-36.pyc
new file mode 100644
index 00000000..132b834c
Binary files /dev/null and b/klippy/extras/__pycache__/tmc2208.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/tmc2208.cpython-37.pyc b/klippy/extras/__pycache__/tmc2208.cpython-37.pyc
new file mode 100644
index 00000000..d4af549b
Binary files /dev/null and b/klippy/extras/__pycache__/tmc2208.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/tmc2209.cpython-36.pyc b/klippy/extras/__pycache__/tmc2209.cpython-36.pyc
new file mode 100644
index 00000000..e8f050de
Binary files /dev/null and b/klippy/extras/__pycache__/tmc2209.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/tmc2209.cpython-37.pyc b/klippy/extras/__pycache__/tmc2209.cpython-37.pyc
new file mode 100644
index 00000000..8c742df4
Binary files /dev/null and b/klippy/extras/__pycache__/tmc2209.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/tmc_uart.cpython-36.pyc b/klippy/extras/__pycache__/tmc_uart.cpython-36.pyc
new file mode 100644
index 00000000..9094b6ce
Binary files /dev/null and b/klippy/extras/__pycache__/tmc_uart.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/tmc_uart.cpython-37.pyc b/klippy/extras/__pycache__/tmc_uart.cpython-37.pyc
new file mode 100644
index 00000000..6a0b495e
Binary files /dev/null and b/klippy/extras/__pycache__/tmc_uart.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/tuning_tower.cpython-36.pyc b/klippy/extras/__pycache__/tuning_tower.cpython-36.pyc
new file mode 100644
index 00000000..83ab22ab
Binary files /dev/null and b/klippy/extras/__pycache__/tuning_tower.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/tuning_tower.cpython-37.pyc b/klippy/extras/__pycache__/tuning_tower.cpython-37.pyc
new file mode 100644
index 00000000..b782ca9f
Binary files /dev/null and b/klippy/extras/__pycache__/tuning_tower.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/verify_heater.cpython-36.pyc b/klippy/extras/__pycache__/verify_heater.cpython-36.pyc
new file mode 100644
index 00000000..c2708f0c
Binary files /dev/null and b/klippy/extras/__pycache__/verify_heater.cpython-36.pyc differ
diff --git a/klippy/extras/__pycache__/verify_heater.cpython-37.pyc b/klippy/extras/__pycache__/verify_heater.cpython-37.pyc
new file mode 100644
index 00000000..5e2bfb1b
Binary files /dev/null and b/klippy/extras/__pycache__/verify_heater.cpython-37.pyc differ
diff --git a/klippy/extras/__pycache__/virtual_sdcard.cpython-37.pyc b/klippy/extras/__pycache__/virtual_sdcard.cpython-37.pyc
new file mode 100644
index 00000000..bc301243
Binary files /dev/null and b/klippy/extras/__pycache__/virtual_sdcard.cpython-37.pyc differ
diff --git a/klippy/extras/bus.pyc b/klippy/extras/bus.pyc
new file mode 100644
index 00000000..b63bcf61
Binary files /dev/null and b/klippy/extras/bus.pyc differ
diff --git a/klippy/extras/display/__pycache__/__init__.cpython-36.pyc b/klippy/extras/display/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 00000000..ffafbe09
Binary files /dev/null and b/klippy/extras/display/__pycache__/__init__.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/__init__.cpython-37.pyc b/klippy/extras/display/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 00000000..55301183
Binary files /dev/null and b/klippy/extras/display/__pycache__/__init__.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/display.cpython-36.pyc b/klippy/extras/display/__pycache__/display.cpython-36.pyc
new file mode 100644
index 00000000..f0fc992f
Binary files /dev/null and b/klippy/extras/display/__pycache__/display.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/display.cpython-37.pyc b/klippy/extras/display/__pycache__/display.cpython-37.pyc
new file mode 100644
index 00000000..e70636f0
Binary files /dev/null and b/klippy/extras/display/__pycache__/display.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/font8x14.cpython-36.pyc b/klippy/extras/display/__pycache__/font8x14.cpython-36.pyc
new file mode 100644
index 00000000..a175fe49
Binary files /dev/null and b/klippy/extras/display/__pycache__/font8x14.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/font8x14.cpython-37.pyc b/klippy/extras/display/__pycache__/font8x14.cpython-37.pyc
new file mode 100644
index 00000000..ab8c69c4
Binary files /dev/null and b/klippy/extras/display/__pycache__/font8x14.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/hd44780.cpython-36.pyc b/klippy/extras/display/__pycache__/hd44780.cpython-36.pyc
new file mode 100644
index 00000000..0bd73303
Binary files /dev/null and b/klippy/extras/display/__pycache__/hd44780.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/hd44780.cpython-37.pyc b/klippy/extras/display/__pycache__/hd44780.cpython-37.pyc
new file mode 100644
index 00000000..7cad973b
Binary files /dev/null and b/klippy/extras/display/__pycache__/hd44780.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/hd44780_spi.cpython-36.pyc b/klippy/extras/display/__pycache__/hd44780_spi.cpython-36.pyc
new file mode 100644
index 00000000..f870f573
Binary files /dev/null and b/klippy/extras/display/__pycache__/hd44780_spi.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/hd44780_spi.cpython-37.pyc b/klippy/extras/display/__pycache__/hd44780_spi.cpython-37.pyc
new file mode 100644
index 00000000..f9834e3f
Binary files /dev/null and b/klippy/extras/display/__pycache__/hd44780_spi.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/menu.cpython-36.pyc b/klippy/extras/display/__pycache__/menu.cpython-36.pyc
new file mode 100644
index 00000000..845f7291
Binary files /dev/null and b/klippy/extras/display/__pycache__/menu.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/menu.cpython-37.pyc b/klippy/extras/display/__pycache__/menu.cpython-37.pyc
new file mode 100644
index 00000000..acbccf30
Binary files /dev/null and b/klippy/extras/display/__pycache__/menu.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/menu_keys.cpython-36.pyc b/klippy/extras/display/__pycache__/menu_keys.cpython-36.pyc
new file mode 100644
index 00000000..6fb8725a
Binary files /dev/null and b/klippy/extras/display/__pycache__/menu_keys.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/menu_keys.cpython-37.pyc b/klippy/extras/display/__pycache__/menu_keys.cpython-37.pyc
new file mode 100644
index 00000000..b2feaee5
Binary files /dev/null and b/klippy/extras/display/__pycache__/menu_keys.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/st7920.cpython-36.pyc b/klippy/extras/display/__pycache__/st7920.cpython-36.pyc
new file mode 100644
index 00000000..9d2b7087
Binary files /dev/null and b/klippy/extras/display/__pycache__/st7920.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/st7920.cpython-37.pyc b/klippy/extras/display/__pycache__/st7920.cpython-37.pyc
new file mode 100644
index 00000000..730cb451
Binary files /dev/null and b/klippy/extras/display/__pycache__/st7920.cpython-37.pyc differ
diff --git a/klippy/extras/display/__pycache__/uc1701.cpython-36.pyc b/klippy/extras/display/__pycache__/uc1701.cpython-36.pyc
new file mode 100644
index 00000000..476a242d
Binary files /dev/null and b/klippy/extras/display/__pycache__/uc1701.cpython-36.pyc differ
diff --git a/klippy/extras/display/__pycache__/uc1701.cpython-37.pyc b/klippy/extras/display/__pycache__/uc1701.cpython-37.pyc
new file mode 100644
index 00000000..4b2794c8
Binary files /dev/null and b/klippy/extras/display/__pycache__/uc1701.cpython-37.pyc differ
diff --git a/klippy/extras/ds18b20.pyc b/klippy/extras/ds18b20.pyc
new file mode 100644
index 00000000..2e4c6bb9
Binary files /dev/null and b/klippy/extras/ds18b20.pyc differ
diff --git a/klippy/extras/fan.pyc b/klippy/extras/fan.pyc
new file mode 100644
index 00000000..5b5d96c6
Binary files /dev/null and b/klippy/extras/fan.pyc differ
diff --git a/klippy/extras/tmc.py b/klippy/extras/tmc.py
index df3c705b..06bc2569 100644
--- a/klippy/extras/tmc.py
+++ b/klippy/extras/tmc.py
@@ -324,9 +324,9 @@ class TMCCommandHelper:
# Shared enable via comms handling
self.fields.set_field("toff", self.toff)
self._init_registers()
- did_reset = self.echeck_helper.start_checks()
- if did_reset:
- self.mcu_phase_offset = None
+ #did_reset = self.echeck_helper.start_checks()
+ #if did_reset:
+ # self.mcu_phase_offset = None
# Calculate phase offset
if self.mcu_phase_offset is not None:
return
diff --git a/klippy/extras/virtual_sdcard.py b/klippy/extras/virtual_sdcard.py
index 5c5a956f..21d877a4 100644
--- a/klippy/extras/virtual_sdcard.py
+++ b/klippy/extras/virtual_sdcard.py
@@ -5,7 +5,7 @@
# This file may be distributed under the terms of the GNU GPLv3 license.
import os, logging, io
-VALID_GCODE_EXTS = ['gcode', 'g', 'gco']
+VALID_GCODE_EXTS = ['gcode', 'g', 'gco','gx']
class VirtualSD:
def __init__(self, config):
@@ -174,10 +174,10 @@ class VirtualSD:
files_by_lower = { fname.lower(): fname for fname, fsize in files }
fname = filename
try:
- if fname not in flist:
- fname = files_by_lower[fname.lower()]
+ #if fname not in flist:
+ #fname = files_by_lower[fname.lower()]
fname = os.path.join(self.sdcard_dirname, fname)
- f = io.open(fname, 'r', newline='')
+ f = io.open(fname, 'r', errors='ignore', newline='')
f.seek(0, os.SEEK_END)
fsize = f.tell()
f.seek(0)
diff --git a/klippy/kinematics/__pycache__/__init__.cpython-36.pyc b/klippy/kinematics/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 00000000..707bde5b
Binary files /dev/null and b/klippy/kinematics/__pycache__/__init__.cpython-36.pyc differ
diff --git a/klippy/kinematics/__pycache__/__init__.cpython-37.pyc b/klippy/kinematics/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 00000000..af745a93
Binary files /dev/null and b/klippy/kinematics/__pycache__/__init__.cpython-37.pyc differ
diff --git a/klippy/kinematics/__pycache__/corexy.cpython-36.pyc b/klippy/kinematics/__pycache__/corexy.cpython-36.pyc
new file mode 100644
index 00000000..0dcd567c
Binary files /dev/null and b/klippy/kinematics/__pycache__/corexy.cpython-36.pyc differ
diff --git a/klippy/kinematics/__pycache__/corexy.cpython-37.pyc b/klippy/kinematics/__pycache__/corexy.cpython-37.pyc
new file mode 100644
index 00000000..288d43c2
Binary files /dev/null and b/klippy/kinematics/__pycache__/corexy.cpython-37.pyc differ
diff --git a/klippy/kinematics/__pycache__/extruder.cpython-36.pyc b/klippy/kinematics/__pycache__/extruder.cpython-36.pyc
new file mode 100644
index 00000000..085bb715
Binary files /dev/null and b/klippy/kinematics/__pycache__/extruder.cpython-36.pyc differ
diff --git a/klippy/kinematics/__pycache__/extruder.cpython-37.pyc b/klippy/kinematics/__pycache__/extruder.cpython-37.pyc
new file mode 100644
index 00000000..a40369f4
Binary files /dev/null and b/klippy/kinematics/__pycache__/extruder.cpython-37.pyc differ
diff --git a/klippy/mcu.py b/klippy/mcu.py
index 4aaf6269..6f77f99c 100644
--- a/klippy/mcu.py
+++ b/klippy/mcu.py
@@ -742,6 +742,11 @@ class MCU:
self._send_config(config_params['crc'])
# Setup steppersync with the move_count returned by get_config
move_count = config_params['move_count']
+ move_msg = "My Configured MCU '%s' (%d moves)" % (self._name, move_count)
+ logging.info(move_msg)
+ log_info = self._log_info() + "\n" + move_msg
+ self._printer.set_rollover_info(self._name, log_info, log=False)
+
if move_count < self._reserved_move_slots:
raise error("Too few moves available on MCU '%s'" % (self._name,))
ffi_main, ffi_lib = chelper.get_ffi()
diff --git a/klippy/mcu.pyc b/klippy/mcu.pyc
new file mode 100644
index 00000000..bf87262d
Binary files /dev/null and b/klippy/mcu.pyc differ
diff --git a/klippy/parsedump.py b/klippy/parsedump.py
old mode 100755
new mode 100644
diff --git a/klippy/pins.pyc b/klippy/pins.pyc
new file mode 100644
index 00000000..ae5f2ea8
Binary files /dev/null and b/klippy/pins.pyc differ
diff --git a/klippy/queuelogger.py b/klippy/queuelogger.py
index c6447f8e..692c6fff 100644
--- a/klippy/queuelogger.py
+++ b/klippy/queuelogger.py
@@ -24,7 +24,7 @@ class QueueHandler(logging.Handler):
class QueueListener(logging.handlers.TimedRotatingFileHandler):
def __init__(self, filename):
logging.handlers.TimedRotatingFileHandler.__init__(
- self, filename, when='midnight', backupCount=5)
+ self, filename, when='h', interval=4, backupCount=6)
self.bg_queue = queue.Queue()
self.bg_thread = threading.Thread(target=self._bg_thread)
self.bg_thread.start()
diff --git a/lib/canboot/flash_can.py b/lib/canboot/flash_can.py
old mode 100755
new mode 100644
diff --git a/lib/kconfiglib/genconfig.py b/lib/kconfiglib/genconfig.py
old mode 100755
new mode 100644
diff --git a/lib/kconfiglib/menuconfig.py b/lib/kconfiglib/menuconfig.py
old mode 100755
new mode 100644
diff --git a/lib/kconfiglib/olddefconfig.py b/lib/kconfiglib/olddefconfig.py
old mode 100755
new mode 100644
diff --git a/lib/rp2040/boot_stage2/pad_checksum b/lib/rp2040/boot_stage2/pad_checksum
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l412xx.h b/lib/stm32l4/include/stm32l412xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l422xx.h b/lib/stm32l4/include/stm32l422xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l431xx.h b/lib/stm32l4/include/stm32l431xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l432xx.h b/lib/stm32l4/include/stm32l432xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l433xx.h b/lib/stm32l4/include/stm32l433xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l442xx.h b/lib/stm32l4/include/stm32l442xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l443xx.h b/lib/stm32l4/include/stm32l443xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l451xx.h b/lib/stm32l4/include/stm32l451xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l452xx.h b/lib/stm32l4/include/stm32l452xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l462xx.h b/lib/stm32l4/include/stm32l462xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l471xx.h b/lib/stm32l4/include/stm32l471xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l475xx.h b/lib/stm32l4/include/stm32l475xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l476xx.h b/lib/stm32l4/include/stm32l476xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l485xx.h b/lib/stm32l4/include/stm32l485xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l486xx.h b/lib/stm32l4/include/stm32l486xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l496xx.h b/lib/stm32l4/include/stm32l496xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4a6xx.h b/lib/stm32l4/include/stm32l4a6xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4p5xx.h b/lib/stm32l4/include/stm32l4p5xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4q5xx.h b/lib/stm32l4/include/stm32l4q5xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4r5xx.h b/lib/stm32l4/include/stm32l4r5xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4r7xx.h b/lib/stm32l4/include/stm32l4r7xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4r9xx.h b/lib/stm32l4/include/stm32l4r9xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4s5xx.h b/lib/stm32l4/include/stm32l4s5xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4s7xx.h b/lib/stm32l4/include/stm32l4s7xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4s9xx.h b/lib/stm32l4/include/stm32l4s9xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/stm32l4xx.h b/lib/stm32l4/include/stm32l4xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/include/system_stm32l4xx.h b/lib/stm32l4/include/system_stm32l4xx.h
old mode 100755
new mode 100644
diff --git a/lib/stm32l4/system_stm32l4xx.c b/lib/stm32l4/system_stm32l4xx.c
old mode 100755
new mode 100644
diff --git a/scripts/avrsim.py b/scripts/avrsim.py
old mode 100755
new mode 100644
diff --git a/scripts/calibrate_shaper.py b/scripts/calibrate_shaper.py
old mode 100755
new mode 100644
diff --git a/scripts/check-gcc.sh b/scripts/check-gcc.sh
old mode 100755
new mode 100644
diff --git a/scripts/check_whitespace.py b/scripts/check_whitespace.py
old mode 100755
new mode 100644
diff --git a/scripts/check_whitespace.sh b/scripts/check_whitespace.sh
old mode 100755
new mode 100644
diff --git a/scripts/checkstack.py b/scripts/checkstack.py
old mode 100755
new mode 100644
diff --git a/scripts/ci-build.sh b/scripts/ci-build.sh
old mode 100755
new mode 100644
diff --git a/scripts/ci-install.sh b/scripts/ci-install.sh
old mode 100755
new mode 100644
diff --git a/scripts/dump_mcu.py b/scripts/dump_mcu.py
old mode 100755
new mode 100644
diff --git a/scripts/flash-linux.sh b/scripts/flash-linux.sh
old mode 100755
new mode 100644
diff --git a/scripts/flash-pru.sh b/scripts/flash-pru.sh
old mode 100755
new mode 100644
diff --git a/scripts/flash-sdcard.sh b/scripts/flash-sdcard.sh
old mode 100755
new mode 100644
diff --git a/scripts/flash_usb.py b/scripts/flash_usb.py
old mode 100755
new mode 100644
diff --git a/scripts/graph_accelerometer.py b/scripts/graph_accelerometer.py
old mode 100755
new mode 100644
diff --git a/scripts/graph_extruder.py b/scripts/graph_extruder.py
old mode 100755
new mode 100644
diff --git a/scripts/graph_motion.py b/scripts/graph_motion.py
old mode 100755
new mode 100644
diff --git a/scripts/graph_shaper.py b/scripts/graph_shaper.py
old mode 100755
new mode 100644
diff --git a/scripts/graph_temp_sensor.py b/scripts/graph_temp_sensor.py
old mode 100755
new mode 100644
diff --git a/scripts/graphstats.py b/scripts/graphstats.py
old mode 100755
new mode 100644
diff --git a/scripts/install-arch.sh b/scripts/install-arch.sh
old mode 100755
new mode 100644
diff --git a/scripts/install-beaglebone.sh b/scripts/install-beaglebone.sh
old mode 100755
new mode 100644
diff --git a/scripts/install-centos.sh b/scripts/install-centos.sh
old mode 100755
new mode 100644
diff --git a/scripts/install-debian.sh b/scripts/install-debian.sh
old mode 100755
new mode 100644
diff --git a/scripts/install-octopi.sh b/scripts/install-octopi.sh
old mode 100755
new mode 100644
diff --git a/scripts/install-ubuntu-18.04.sh b/scripts/install-ubuntu-18.04.sh
old mode 100755
new mode 100644
diff --git a/scripts/klipper-mcu-start.sh b/scripts/klipper-mcu-start.sh
old mode 100755
new mode 100644
diff --git a/scripts/klipper-pru-start.sh b/scripts/klipper-pru-start.sh
old mode 100755
new mode 100644
diff --git a/scripts/klipper-start.sh b/scripts/klipper-start.sh
old mode 100755
new mode 100644
diff --git a/scripts/klipper-uninstall.sh b/scripts/klipper-uninstall.sh
old mode 100755
new mode 100644
diff --git a/scripts/logextract.py b/scripts/logextract.py
old mode 100755
new mode 100644
diff --git a/scripts/motan/data_logger.py b/scripts/motan/data_logger.py
old mode 100755
new mode 100644
diff --git a/scripts/motan/motan_graph.py b/scripts/motan/motan_graph.py
old mode 100755
new mode 100644
diff --git a/scripts/stepstats.py b/scripts/stepstats.py
old mode 100755
new mode 100644
diff --git a/scripts/update_chitu.py b/scripts/update_chitu.py
old mode 100755
new mode 100644
diff --git a/scripts/update_mks_robin.py b/scripts/update_mks_robin.py
old mode 100755
new mode 100644
diff --git a/scripts/whconsole.py b/scripts/whconsole.py
old mode 100755
new mode 100644
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment